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

/var/snap/rexroth-solutions/common/solutions/activeConfiguration/lumiscan-object-finder, Teil der aktiven Solution

PC (Windows)

%APP_RESOURCE_DIR%\etc\lumiscan-object-finder; ohne APP_RESOURCE_DIR C:\ProgramData\HD Vision Systems GmbH\LumiScan Vision Suite\lumiscan-obj-find\etc\lumiscan-object-finder

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 system/object-dir schreibt, ändert also den angezeigten Wert. Er ändert nicht, welches Verzeichnis die Anwendung liest, und die Listen beschreiben dann einen anderen Ordner, als der Knoten behauptet. Verwenden Sie set-object-dir.

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.