v2.1.0 - noch nicht veröffentlicht
Hinzugefügt:
-
Execute-Methoden.
control/transform/executeundcontrol/reset/executeführen einen Transform oder einen Reset mit einem einzigen Schreibzugriff aus und kehren zurück, wenn er abgeschlossen ist. Sie antworten mitDL_TOO_MANY_OPERATIONS, solange ein anderer Transform oder Reset des Moduls läuft, und mitDL_INVALID_OPERATION_MODEohne Lookup-Tabelle oder Lizenz. Siehe Execute-Methoden. -
Einen Stream transformieren (experimentell). Ein Modul abonniert einen Data-Layer-Knoten, seine Quelle, und transformiert jedes Update davon, sobald es eintrifft:
addressim Abschnittstreamseiner Konfigurationsdatei benennt den Ordner, und der Schritt in der ListeonEntrydes Abschnitts den Knoten darin. Der Knoten enthält entweder die Punkte selbst (ein Float-Array, zum Beispiel aus einer SPS) oder das Ergebnis einer anderen Anwendung, etwa die Objekte, die AI Object Matching in einem Bild-Stream findet. Der Schritt gibt an, welches: keiner oderplainfür ein Array;remapfür ein Ergebnis, mit der Liste darin (array) und demxundyjedes Elements - oder ohne Liste, für einen Punkt pro Update. Ein Stream-Ergebnis wird innerhalb seines Ergebnisses gelesen, wie in der normalen Ausgabe der Anwendung. Die übrigen Schlüssel des Abschnitts sind die des Streams jeder LumiScan-Anwendung. Die Punkte werden aufcontrol/subscribe/output/stream/pointsmit ihrer Lineage veröffentlicht - dem Kamerabild, auf dem ein AI-Ergebnis inferiert wurde, oder dem SPS-Knoten, aus dem sie stammen - und als einfachesx0,y0,z0,x1,y1,z1,…-Array aufcontrol/subscribe/output/stream/plain-points, mitNaNfür einen Punkt außerhalb der Lookup-Tabelle.setting/settings-hashidentifiziert die Lookup-Tabelle und die Einstellungen, mit denen sie transformiert werden, und dastagdes Moduls - sein Name, sofernstream.tagkein anderes angibt - kennzeichnet sie als seine eigenen. Mitkeep-latest-outputwerden die Punkte jedes Updates zusätzlich in die normalen Ausgaben geschrieben. Das Transformieren auf Anfrage funktioniert weiter, während der Stream läuft. Siehe Einen Stream transformieren (experimentell). -
Was eine Quelle enthalten darf.
hdvisionsystems/lumiscan-calibration/system/meta/subscription-schemabeschreibt es als JSON Schema: ein einfaches Array von Zahlen, einstream_pointsoder einstream_detections. Siehe Was eine Quelle enthalten darf. -
Zur Laufzeit abonnieren.
control/subscribe/executewendet die Eingaben untercontrol/subscribe/input/…an - Stream-Modus, Quelle, Warteschlangengröße,keep-latest-output-, während die Anwendung läuft, ohne Neustart;control/unsubscribe/executeentfernt die Quelle. Jedes Modul hat die Stream-Knoten, sodass das Hinzufügen eines Abschnittsstreamnur einen Reset erfordert, und ein Modul ohne einen erhält einen, wenn es abonniert. Siehe Zur Laufzeit abonnieren. -
Stream-Modus und Quelle in der Modul-Konfigurationsdatei gespeichert. Die Methoden speichern sie im Abschnitt
stream, bevor sie sie anwenden: Das Modul startet nach einem Neustart wieder mit beiden. Siehe In der Modul-Konfigurationsdatei gespeichert. -
Mehrere Module gleichzeitig. Jedes in den Anwendungseinstellungen aufgeführte Modul wird für sich bedient, sodass ein Modul, das auf seinen Client wartet, nie ein anderes aufhält.
-
Einstellungen auf dem Data Layer.
hdvisionsystems/lumiscan-calibration/system/settingszeigt die Einstellungen, mit denen die Anwendung gestartet wurde: die Einstellungsdatei der Anwendung, jede Moduldatei eingebettet in ihre Listemodules, Passwörter als***. Das Schreiben darauf ändert die Dateien. Die Anwendung prüft die Änderung wie beim Start, speichert sie (die vorherige Datei als.bak) und verweigert dann jede Arbeit, bis sie neu gestartet wird:restart-required, Status-5.hdvisionsystems/lumiscan-calibration/system/control/restart/executestartet sie neu. Siehe Einstellungen auf dem Data Layer.
Geändert:
-
Das Beispielmodul ist
example, und es liest AI Object Matching. Die Beispiel-Moduldatei ist jetztexample.json, das Modul ist alsohdvisionsystems/lumiscan-calibration/example, nicht mehr.../lumiscan-calibration-example-module. Sein Abschnittstreammit einemremap-Schritt liest von Anfang an die Ergebnisse des Beispielmoduls von AI Object Matching, ebenfallsexample, und schreibt die Punkte zusätzlich in die normale Ausgabe. Ein Einstellungsordner, der seine Dateien bereits hat, behält sie. Siehe Modul-Konfigurationsdatei. -
resetlädt das Modul neu. Ein Reset liest die Modul-Konfigurationsdatei und ihre TIFF-Datei erneut ein, sodass eine korrigierte Datei ohne Neustart wirksam wird. Kann sie nicht geladen werden, meldet das Modul-2und hat keine Lookup-Tabelle, bis ein Reset gelingt, statt mit der alten zu transformieren. -
Ein Fehlerstatus bleibt bis zum nächsten Request stehen. Bisher wurde er innerhalb von etwa 100 ms durch
0ersetzt, bevor ein Client ihn lesen konnte. -
Das Interpolationsverfahren
bilateralInterpolationwird jetzt vom Einstellungsschema akzeptiert. -
Modul-Konfigurationsdateien dürfen Kommentare enthalten, wie die Anwendungs-Einstellungsdatei.
Fehlerbehebung:
-
Eine fehlende TIFF-Datei bringt die Anwendung beim Start nicht mehr zum Absturz. Das Modul wird bedient und meldet Status
-2(invalidSetting), undcontrol/transform/readybleibtfalse, bis seine Dateien korrigiert sind und es zurückgesetzt wird. -
Die Anwendung wartet nicht mehr endlos auf einen Client, der
requestnicht zurücksetzt, wenn sie beendet werden soll, und ein in der Zwischenzeit angeforderter Reset wird ausgeführt. -
control/reset/requestwurde nie quittiert. Ein Reset folgt jetzt dem Handshake. -
Eine ungültige Anwendungs-Einstellungsdatei wird in das Protokoll geschrieben, und die Anwendung beendet sich, statt abzustürzen.