IOControl und Projektor-Kontrolle

Das IOControl Modul ist ein optionales Modul, welches intern auf dem rc_visard läuft und eine gesonderte IOControl Lizenz benötigt, die erworben werden muss. Diese Lizenz ist auf jedem rc_visard, der nach dem 01.07.2020 gekauft wurde, vorhanden.

Das IOControl-Modul ermöglicht das Lesen der digitalen Eingänge und die Kontrolle der digitalen Ausgänge (GPIOs) des rc_visard. Die Ausgänge können auf aus (LOW) oder an (HIGH) gesetzt werden. Sie können auch so konfiguriert werden, dass sie genau für die Belichtungszeit jedes Bildes, oder auch nur jedes zweiten Bildes, an sind.

Bemerkung

Dieses Softwaremodul ist pipelinespezifisch. Änderungen seiner Einstellungen oder Parameter betreffen nur die zugehörige Kamerapipeline und haben keinen Einfluss auf die anderen Pipelines, die auf dem rc_cube laufen.

Das IOControl-Modul dient der Ansteuerung einer externen Lichtquelle oder eines Projektors, der an einen der GPIO-Ausgänge des rc_visard angeschlossen wird, und der mit der Bildaufnahme synchronisiert ist. Für den Fall, dass ein Musterprojektor für die Verbesserung des Stereo-Matchings verwendet wird, ist das projizierte Muster auch in den Intensitätsbildern sichtbar. Das kann für Bildverarbeitungs-Anwendungen, die auf dem Intensitätsbild basieren (z.B. Kantendetektion), von Nachteil sein. Aus diesem Grund erlaubt das IOControl-Modul auch das Setzen der Ausgänge für nur jedes zweite Kamerabild. Somit sind auch Intensitätsbilder ohne projiziertes Muster verfügbar.

Parameter

Das IOControl-Modul wird in der REST-API als rc_iocontrol bezeichnet und in der Web GUI in der gewünschten Pipeline unter Konfiguration ‣ IOControl dargestellt. Der Benutzer kann die Parameter über die Web GUI, die REST-API (REST-API-Schnittstelle), oder die GenICam-Schnittstelle mit den DigitalIOControl-Parametern LineSelector und LineSource ändern (GigE Vision 2.0/GenICam-Schnittstelle).

Übersicht über die Parameter

Dieses Softwaremodul bietet folgende Laufzeitparameter:

Tab. 48 Laufzeitparameter des rc_iocontrol-Moduls
Name Typ Min. Max. Default Beschreibung
out1_mode string - - Low Out1 mode: [Low, High, ExposureActive, ExposureAlternateActive]
out2_mode string - - Low Out2 mode: [Low, High, ExposureActive, ExposureAlternateActive]

Beschreibung der Laufzeitparameter

out1_mode und out2_mode (Ausgang 1 (Out1) und Ausgang 2 (Out2))

Die Betriebsarten für GPIO-Ausgang 1 und GPIO-Ausgang 2 können individuell gesetzt werden:

Low schaltet den GPIO-Ausgang permanent aus (LOW). Das ist die Standardeinstellung.

High schaltet den GPIO-Ausgang permanent an (HIGH).

ExposureActive schaltet den GPIO-Ausgang für die Belichtungszeit jedes Bildes an (HIGH).

ExposureAlternateActive schaltet den GPIO-Ausgang für die Belichtungszeit jedes zweiten Bildes an (HIGH).

Über die REST-API kann dieser Parameter wie folgt gesetzt werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_iocontrol/parameters?<out1_mode|out2_mode>=<value>
PUT http://<host>/api/v1/nodes/rc_iocontrol/parameters?<out1_mode|out2_mode>=<value>

Bemerkung

Die Parameter können nur verändert werden, wenn eine IOControl-Lizenz auf dem rc_cube verfügbar ist. Sonst gelten die Voreinstellungen für die Parameter, d.h. out1_mode = Low und out2_mode = Low.

Abb. 44 zeigt, welche Bilder für das Stereo-Matching und die GigE Vision-Übertragung in der Betriebsart ExposureActive mit einer benutzerdefinierten Bildwiederholrate von 8 Hz benutzt werden.

_images/fps_exposure_cube_de.png

Abb. 44 Beispiel für die Nutzung der Betriebsart ExposureActive für GPIO-Ausgang 1 mit einer benutzerdefinierten Bildwiederholrate von 8 Hz. Die interne Bildaufnahme geschieht immer mit 25 Hz. GPIO-Ausgang 1 ist für die Dauer der Belichtungszeit jedes Bildes an (HIGH). Disparitätsbilder werden für Kamerabilder berechnet, die auch per GigE Vision in der benutzerdefinierten Bildwiederholrate versendet werden.

Die Betriebsart ExposureAlternateActive ist gedacht, um einen externen Musterprojektor anzusteuern, der am GPIO-Ausgang 1 des rc_visard angeschlossen ist. In diesem Fall nutzt das Stereo-Matching-Modul nur Bilder, bei denen GPIO-Ausgang 1 an (HIGH) ist, d.h. der Projektor ist an. Die maximale Bildwiederholrate, welche für das Stereo-Matching genutzt wird, ist hierbei die halbe vom Benutzer konfigurierte Bildwiederholrate (siehe FPS). Alle Module, die Intensitätsbilder benutzen, wie z.B. TagDetect und ItemPick, benutzen die Intensitätsbilder, bei denen der GPIO-Ausgang 1 aus (LOW) ist, d.h. der Projektor ist aus. Abb. 45 zeigt ein Beispiel.

_images/fps_alternate_cube_de.png

Abb. 45 Beispiel für die Nutzung der Betriebsart ExposureAlternateActive für GPIO-Ausgang 1 mit einer benutzerdefinierten Bildwiederholrate von 8 Hz. Die interne Bildaufnahme geschieht immer mit 25 Hz. GPIO-Ausgang 1 ist für die Dauer der Belichtungszeit jedes zweiten Bildes an (HIGH). Disparitätsbilder werden für Kamerabilder berechnet, bei denen GPIO-Ausgang 1 an (HIGH) ist, und die auch per GigE Vision in der benutzerdefinierten Bildwiederholrate versendet werden. In der Betriebsart ExposureAlternateActive werden Intensitätsbilder immer paarweise versendet: ein Bild mit GPIO-Ausgang 1 an (HIGH), für das ein Disparitätsbild verfügbar sein kann, und ein Bild mit GPIO-Ausgang 1 aus (LOW).

Bemerkung

In der Betriebsart ExposureAlternateActive gibt es zu einem Intensitätsbild mit angeschaltetem GPIO-Ausgang 1 (HIGH), d.h. mit projiziertem Muster, immer in 40 ms Abstand ein Intensitätsbild mit ausgeschaltetem GPIO-Ausgang 1 (LOW), d.h. ohne projiziertes Muster. Dies ist unabhängig von der benutzerdefinierten Bildwiederholrate und sollte in dieser speziellen Betriebsart für die Synchronisierung von Disparitäts- und projektionsfreien Kamerabildern berücksichtigt werden.

Die Funktionalität kann auch über die DigitalIOControl-Parameter der GenICam Schnittstelle kontrolliert werden (GigE Vision 2.0/GenICam-Schnittstelle).

Services

Zusätzlich zur eigentlichen Serviceantwort gibt jeder Service einen sogenannten return_code bestehend aus einem Integer-Wert und einer optionalen Textnachricht zurück. Erfolgreiche Service-Anfragen werden mit einem Wert von 0 quittiert. Positive Werte bedeuten, dass die Service-Anfrage zwar erfolgreich bearbeitet wurde, aber zusätzliche Informationen zur Verfügung stehen. Negative Werte bedeuten, dass Fehler aufgetreten sind.

Dieses Softwaremodul bietet folgende Services.

get_io_values

Mit diesem Aufruf kann der aktuelle Zustand der Ein- und Ausgänge (GPIOs) des rc_visard abgefragt werden.

Details

Dieser Service kann wie folgt aufgerufen werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_iocontrol/services/get_io_values
PUT http://<host>/api/v1/nodes/rc_iocontrol/services/get_io_values
Dieser Service hat keine Argumente.

Das Feld timestamp ist der Zeitpunkt der Messung.

input_mask und output_mask sind Bitmasken, die definieren, welche Bits für die Werte der Eingänge bzw. Ausgänge verwendet werden.

values beinhaltet die Werte der Bits, die zu den in den Bitmasken input_mask` und output_mask definierten Eingängen und Ausgängen gehören.

Das Feld return_code enthält mögliche Warnungen oder Fehlercodes und Nachrichten. Mögliche Werte für return_code sind in der Tabelle unten angegeben.

Code Beschreibung
0 Erfolgreich
-2 Interner Fehler
-9 Lizenz für IOControl ist nicht verfügbar

Die Definition der Response mit jeweiligen Datentypen ist:

{
  "name": "get_io_values",
  "response": {
    "input_mask": "uint32",
    "output_mask": "uint32",
    "return_code": {
      "message": "string",
      "value": "int16"
    },
    "timestamp": {
      "nsec": "int32",
      "sec": "int32"
    },
    "values": "uint32"
  }
}

reset_defaults

stellt die Werkseinstellungen der Parameter dieses Moduls wieder her und wendet sie an („factory reset“).

Details

Dieser Service kann wie folgt aufgerufen werden.

PUT http://<host>/api/v2/pipelines/<0,1,2,3>/nodes/rc_iocontrol/services/reset_defaults
PUT http://<host>/api/v1/nodes/rc_iocontrol/services/reset_defaults
Dieser Service hat keine Argumente.

Die Definition der Response mit jeweiligen Datentypen ist:

{
  "name": "reset_defaults",
  "response": {
    "return_code": {
      "message": "string",
      "value": "int16"
    }
  }
}