Objektspeicher
Eine Datei pro Objekt
Ein Objekt ist sein Bild: eine .png-Datei auf der obersten Ebene des Objektverzeichnisses, benannt nach
dem Objekt.
<configuration directory>/objects/ ├── screw-m6.png └── bracket.png
was die Anwendung veröffentlicht als
system/objects = ["bracket", "screw-m6"]
Es gibt keine zweite Liste, weil es nichts anderes aufzulisten gibt - die Objekt-ID und das Bild sind dasselbe.
Ein Detektor wird um genau ein Bild herum aufgebaut, sodass eine zweite Ansicht eines Objekts nirgends
hingehört: Ein Objekt, das in zwei Orientierungen erkannt werden muss, ist zwei Objekte, screw-m6-front und
screw-m6-tilted, nach denen nacheinander gesucht wird.
Alles, was keine .png-Datei auf der obersten Ebene des Verzeichnisses ist, wird übersprungen,
Unterverzeichnisse eingeschlossen.
Nur kleingeschriebenes .png wird aufgelistet. .PNG wird bewusst ignoriert: Ein Abgleich ohne
Berücksichtigung der Groß-/Kleinschreibung ließe screw.png und screw.PNG zu einem Eintrag zusammenfallen,
und die Liste würde nicht mehr sagen, auf welche Datei ein Name verweist.
Objekte auf das Gerät bringen
Entweder lernen Sie sie mit create-object von der Kamera
ein, oder Sie legen .png-Dateien in der obigen Struktur in das Konfigurationsverzeichnis der Anwendung: auf
ctrlX OS hochladen, auf einem PC hineinkopieren. Das Konfigurationsverzeichnis und sein Standardordner
objects werden beim Start angelegt, sodass es direkt nach der Installation einen Ort dafür gibt.
| Plattform | Konfigurationsverzeichnis |
|---|---|
ctrlX OS |
|
PC (Windows) |
|
Das Verzeichnis wechseln
system/object-dir nennt das verwendete Verzeichnis. Es ist schreibgeschützt, und system/set-object-dir
ist das Einzige, was es ändert:
system/set-object-dir/input/object-dir = production-parts write system/set-object-dir/execute
Die Methode prüft zuerst und veröffentlicht object-dir und objects gemeinsam, sodass ein abgelehnter Aufruf
beide genau so lässt, wie sie waren, und die Listen immer das tatsächlich verwendete Verzeichnis beschreiben.
Die Wahl wird gespeichert und übersteht einen Neustart.
Das Verzeichnis muss im Konfigurationsverzeichnis bereits existieren. Es wird bewusst nicht für Sie angelegt: Das Standardverzeichnis wird beim Start erzeugt, ein fehlendes bedeutet also einen Tippfehler, und das stille Anlegen eines leeren Ordners würde ihn verbergen.
|
Der Data Layer erzwingt den Schreibschutz der eigenen Knoten einer Anwendung nicht. Ein Client, der direkt auf
|
Pfadregeln
object-dir und object-id werden beide relativ zum Konfigurationsverzeichnis interpretiert. Absolute Pfade
und jeder Pfad, der mit .. hinausführt, werden mit Status -2 abgelehnt. Die Anwendung kann Vorlagen daher
nur innerhalb ihres eigenen Konfigurationsbereichs lesen und schreiben, was auch immer ein Client verlangt.
Wann Änderungen bemerkt werden
system/objects wird beim Start aktualisiert, wenn set-object-dir das Verzeichnis wechselt und wenn
create-object eine Vorlage speichert.
Dateien, die auf anderem Weg hinzugefügt oder entfernt werden - ein Upload oder eine SSH-Sitzung auf ctrlX OS, auf einem PC von Hand hineinkopierte oder gelöschte Dateien -, werden beim nächsten dieser Ereignisse oder beim nächsten Neustart übernommen. Jede Aktualisierung lässt außerdem jedes Modul seinen Detektor neu aufbauen, sodass eine vom Datenträger entfernte Vorlage nicht mehr gefunden werden kann.