FAQ

Kurze Antworten auf häufige Fragen zu LumiScan Object Finder. Jeder Eintrag verweist auf die Seite mit den Details.

Jeder Eintrag hat einen festen Anker (zum Beispiel #faq-pixel-formats). Probleme, Fehlermeldungen und Statuscodes sind Schritt für Schritt unter Fehlerbehebung beschrieben.

Voraussetzungen und Einrichtung

Auf welchen Plattformen läuft der Object Finder, und welchen Data Layer verwendet er?

Antwort

Auf ctrlX OS (ctrlX CORE oder ctrlX IPC) verwendet er den ctrlX Data Layer; auf einem PC mit Windows 11 oder Ubuntu 24.04 verwendet er LumiScan Keryx, den Data Layer von HD Vision Systems für PCs. Die Knotenadressen, Typen und die Art, wie die Methoden aufgerufen werden, sind auf beiden gleich, sodass ein für den einen geschriebenes Programm auch mit dem anderen funktioniert. Nur die Namen der Ergebnisse eines Methodenaufrufs unterscheiden sich, zum Beispiel DL_TOO_MANY_OPERATIONS auf dem ctrlX Data Layer und TooManyOperations bei LumiScan Keryx.

Mehr

Data-Layer-Referenz, ctrlX Data Layer und LumiScan Keryx

Welche Bildquelle braucht der Object Finder?

Antwort

Die Anwendung kommuniziert nicht selbst mit einer Kamera. Sie liest den Bildknoten einer anderen Anwendung, die auf demselben Gerät läuft - demselben ctrlX CORE oder ctrlX IPC oder demselben PC (ein Zugriff auf einen entfernten Data Layer wird nicht unterstützt), normalerweise LumiScan Cam Driver, zum Beispiel hdvisionsystems/lumiscan-cam-driver/camera1/output/image. Jede Anwendung funktioniert, wenn ihr Bildknoten data (rohe, unkomprimierte uint8-Pixeldaten), width, height und pixel-type (Name des GenICam-Pixelformats) bereitstellt.

Mehr

Voraussetzungen

Welche Pixelformate werden unterstützt?

Antwort

Mono8, Mono12, RGB8, RGB12, BGR8, BGR12, BayerGR8, BayerGR12, BayerRG8 und BayerRG12. Bayer-Bilder werden vor dem Matching in Farbe umgewandelt und 12-Bit-Bilder auf 8 Bit herunterskaliert. Jedes andere Pixelformat wird mit Statuscode -3 abgelehnt.

Mehr

Voraussetzungen

Objekte einlernen

Wie lerne ich ein Objekt von der Live-Kamera ein?

Antwort

Verwenden Sie system/create-object; es ist anwendungsweit, sodass ein einmal eingelerntes Objekt von jedem Modul gefunden werden kann:

  • Legen Sie das Teil vor die Kamera, in der Beleuchtung, die die Installation verwenden wird.

  • Setzen Sie system/create-object/input/input-image-address, input/object-id (zum Beispiel screw-m6) und input/crop/startX, startY, width, height (Breite und Höhe größer als 0).

  • Schreiben Sie auf system/create-object/execute und prüfen Sie, ob output/status-code 1 ist.

  • Das Bild wird als <object-id>.png gespeichert, output/object-path nennt die Datei, und system/objects listet das neue Objekt. Ein bestehendes Objekt mit derselben ID wird überschrieben.

Mehr

Ein Objekt anlegen, Anleitung: Ein Teil in einem Kamerabild finden

Wie eng soll ich beim Einlernen eines Objekts ausschneiden?

Antwort

Lassen Sie etwa 5 Pixel Hintergrund um das Teil; mehr bringt nichts. Ein Ausschnitt, der an der Silhouette endet, verbirgt die Kontur vor dem Detektor: Das Objekt wird entweder als fehlgeschlagener Durchlauf abgelehnt, der es benennt, oder angenommen, aber nur auf die inneren Details des Teils gestützt. Ein zu weiter Ausschnitt, der eine Werkbankkante oder ein benachbartes Teil einschließt, macht das Matching weniger zuverlässig, denn Hintergrund im Bild ist Hintergrund, den der Detektor dann zu sehen erwartet.

Mehr

Ein Objekt anlegen

Wie wechsle ich zu einem anderen Objektverzeichnis?

Antwort

Schreiben Sie system/set-object-dir/input/object-dir und schreiben Sie auf system/set-object-dir/execute. Schreiben Sie nicht direkt auf system/object-dir: Das ändert den angezeigten Wert, aber nicht das Verzeichnis, das die Anwendung liest. Das Verzeichnis muss im Konfigurationsverzeichnis bereits existieren; absolute Pfade und Pfade, die mit .. hinausführen, werden mit Status -2 abgelehnt. Ein abgelehnter Aufruf ändert nichts, und die Wahl wird gespeichert.

Mehr

Objektspeicher

Finden und Abstimmen

Wie führe ich eine Suche aus und lese das Ergebnis?

Antwort

Setzen Sie <module>/find-object/input/input-image-address und input/object-id, schreiben Sie auf <module>/find-object/execute (ein blockierender Aufruf) und lesen Sie output/status-code. input/object-id ist erforderlich: Ein leerer Wert wird mit -2 abgelehnt. Jeder Durchlauf sucht nach einem Objekt; um gemischte Teile zu sortieren, führen Sie ihn einmal pro Objekt aus und vergleichen die Scores. Bei 1 lesen Sie output/result: matches ist nach Score sortiert, sodass matches[0] der beste ist. Jeder Treffer liefert die linke obere Ecke x, y, width und height der Vorlage, die übereingestimmt hat, den score (0 bis 1) und die object_id. Das Rechteck ist achsenparallel; das Ergebnis enthält keine Rotation.

Mehr

Ein Objekt finden

Wie wähle ich den Konfidenz-Schwellwert?

Antwort

Messen statt raten. Setzen Sie input/confidence-threshold niedrig (0.4), führen Sie die Suche mit echten Teilen aus, notieren Sie die Scores in output/result und setzen Sie den Schwellwert etwas unter den schlechtesten Score, den ein echtes Teil erzeugt. Der Standardwert ist 0.6; ein Schwellwert ab 0.9 lehnt in der Regel alles ab. Liegen die echten Scores nahe am Schwellwert oder sind die Bilder verrauscht, setzen Sie input/preprocess/blur-sigma-x auf 1.0 (die Glättung ist standardmäßig aus) und messen Sie erneut.

Mehr

Die Suche abstimmen

Wie kann ich die Suche beschleunigen?

Antwort
  • Schränken Sie den Bereich mit input/crop ein; das kostet keine Präzision.

  • Erhöhen Sie input/preprocess/bin-size. Auf einem 1920x1080-Bild mit einem 128x128-Objekt war 2 gemessen etwa 6x und 4 etwa 14x schneller. Positionen werden auf bin-size Pixel quantisiert, und ein zu weit gebinntes Objekt wird abgelehnt.

  • Suchen Sie nach weniger Objekten; jedes execute verarbeitet das ganze Bild erneut.

  • Halten Sie die Einstellungen zwischen Durchläufen stabil: Der Detektor wird beim ersten Durchlauf kompiliert und bei jeder Änderung einer Eingabe neu aufgebaut, was weit mehr kostet als eine Erkennung.

  • input/pyramid zu erhöhen macht die Suche nicht schneller; gemessen ist sie etwas langsamer.

Mehr

Die Suche abstimmen: Geschwindigkeit

Kann der Object Finder jedes Bild durchsuchen, das eine Kamera streamt?

Antwort

Ja, als experimentelle Funktion. Ein Modul abonniert den Stream einer Kamera und durchsucht jedes Bild mit den Eingaben von find-object (alle außer input/input-image-address); es veröffentlicht ein Ergebnis pro Bild auf <module-id>/control/subscribe/output/stream/result:

  • Stellen Sie sicher, dass der Stream des Cam Driver läuft.

  • Schreiben Sie den Stream-Ordner der Kamera, zum Beispiel hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream, auf <module-id>/control/subscribe/input/address.

  • Setzen Sie control/subscribe/input/enable auf true und schreiben Sie auf control/subscribe/execute. enable allein zu schreiben startet nichts.

  • Warten Sie, bis control/subscribe/output/stream/active true ist.

  • Was control/subscribe/execute anwendet, wird in <module-id>.json gespeichert, sodass ein Modul, das gestreamt hat, nach einem Neustart wieder streamt. Für eine SPS schalten Sie control/subscribe/input/keep-latest-output ein und lesen find-object/output/result.

Mehr

Objekte auf einem Bild-Stream finden (experimentell), Streams (experimentell)

Statuscodes und Fehler

Woher weiß ich, ob eine Operation funktioniert hat, und wo steht der Grund für einen Fehler?

Antwort

Prüfen Sie das Vorzeichen von output/status-code: größer als 0 ist Erfolg, 0 bedeutet, dass die Operation seit dem Start der Anwendung nicht gelaufen ist, kleiner als 0 bedeutet, dass sie fehlgeschlagen ist und nichts erzeugt hat. Der Grund steht auf output/status-text, der mit ok: oder error: beginnt; ungültige Eingaben werden gemeinsam gemeldet, jede mit Nennung der Eingabe und ihres Werts. Ein fehlgeschlagener Schreibvorgang auf execute antwortet nur mit einem Statuscode (über REST ein bloßes 400), lesen Sie also anschließend output/status-text; der Text steht auch im Anwendungsprotokoll: auf ctrlX OS im ctrlX Logbook oder mit journalctl, auf einem PC in der Konsolenausgabe der Anwendung. -1 (busy) bedeutet, dass eine andere Operation desselben Moduls noch lief; es wurde nichts getan.

Mehr

Eine Methode ausführen, Ausführungsstatus

Module, Lizenzierung und Support

Welche Lizenz brauche ich, und wie viele Module deckt sie ab?

Antwort

Eine Lizenz deckt zehn Module ab; das elfte Modul belegt eine zweite Lizenz desselben Schlüssels, und ein Modul wird mit Status -11 abgelehnt, wenn keine Lizenz auf dem Gerät es abdeckt. Bezugswege:

  • Bei HD Vision Systems gekauft: Die Lizenz ist auf einem LumiScan Key (Windows 11 oder Ubuntu 24.04). Pro Gerät, auf dem die Software gleichzeitig läuft, ist ein LumiScan Key nötig; Keys können zwischen Geräten getauscht werden.

  • Im ctrlX Store für Windows 11 gekauft: ctrlX WORKS plus ein LumiScan Key.

  • Im ctrlX Store für ctrlX OS (ctrlX CORE oder IPC) gekauft: eine ctrlX-Lizenz, kein Key.

Mehr

Voraussetzungen, Modulverwaltung, FAQ zur Lizenzierung

Wo finde ich weitere Antworten oder bekomme Support?

Antwort

Siehe die übergreifende LumiScan-FAQ. Wenden Sie sich an den Customer Success von HD Vision Systems unter customer.success@hdvisionsystems.com oder +49 6221 6721905; für Lizenzen an licenses@hdvisionsystems.com.

Mehr

FAQ zur Lizenzierung