Visuelle Odometrie

Das Visuelle-Odometrie-Modul ist ein Basismodul, welches auf jedem rc_visard verfügbar ist.

Die visuelle Odometrie ist Teil des Sensordynamik-Moduls. Sie dient dazu, die Bewegung der Kamera aus der Bewegung charakteristischer Bildpunkte (sogenannter Bildmerkmale) im linken Kamerabild zu schätzen. Bildmerkmale werden auf Basis von Eckpunkten, Bildbereichen mit hohen Intensitätsgradienten, errechnet. Mithilfe von Bildmerkmalen lassen sich Übereinstimmungen zwischen aufeinanderfolgenden Bildern finden. Deren 3D-Koordinaten werden mithilfe eines Stereo-Matching-Verfahrens (unabhängig vom Disparitätsbild) berechnet. Aus den übereinstimmenden 3D-Punkten zweier Kamerabilder wird die Bewegung der Kamera berechnet. Um die Robustheit der visuellen Odometrie zu erhöhen, werden Übereinstimmungen nicht nur zum letzten Kamerabild, sondern zu mehreren vorherigen Kamerabildern, sogenannten Keyframes, berechnet. Dann wird das beste Resultat ausgewählt.

Die Bildwiederholrate der visuellen Odometrie ist unabhängig von der Benutzereinstellung im Stereokamera-Modul. Sie ist intern auf 12 Hz begrenzt, kann aber je nach Anzahl der Bildmerkmale oder Keyframes auch niedriger sein. Um die Posenschätzung in einer guten Qualität berechnen zu können, sollte die Bildwiederholrate nicht signifikant unter 10 Hz fallen.

Bemerkung

Die gleichzeitige Nutzung von Stereo-Matching mit dem Sensordynamik-Modul kann durch die hohe Prozessorlast zu verringerter Genauigkeit in der Bewegungsschätzung führen. Es wird daher empfohlen, bei gleichzeitigem Betrieb die Bildwiederholrate der Kamera zu reduzieren, um die Rechenlast durch das Stereo-Matching zu senken.

Die Messungen aus der visuellen Odometrie lassen sich nicht direkt vom rc_visard aufrufen. Stattdessen werden sie intern mit den Daten der integrierten inertialen Messeinheit (IMU) kombiniert, um so die Robustheit und Frequenz der Posenschätzungen zu erhöhen und die Latenz zu verringern. Das Ergebnis der Sensordatenfusion wird in Form verschiedener Datenströme bereitgestellt (siehe Stereo-INS).

Parameter

Das Odometrie-Modul heißt rc_stereovisodo und wird in der Web GUI auf der Seite Dynamik dargestellt. Der Benutzer kann die Parameter der visuellen Odometrie entweder dort oder über die REST-API (REST-API-Schnittstelle) ändern.

Übersicht über die Parameter

Dieses Softwaremodul bietet folgende Laufzeitparameter:

Tab. 15 Laufzeitparameter des rc_stereovisodo-Moduls
Name Typ Min. Max. Default Beschreibung
disprange int32 32 512 256 Disparitätsbereich in Pixeln
ncorner int32 50 4000 500 Anzahl der Eckpunkte
nfeature int32 50 4000 300 Anzahl der Bildmerkmale
nkey int32 1 4 4 Anzahl der Keyframes

Beschreibung der Laufzeitparameter

Laufzeitparameter beeinflussen die Anzahl an Bildmerkmalen, auf deren Grundlage die Berechnungen für die visuelle Odometrie vorgenommen werden. Ein Mehr an Bildmerkmalen erhöht die Robustheit der visuellen Odometrie, geht jedoch zu Lasten einer längeren Laufzeit, was wiederum die Frequenz der visuellen Odometrie verringern kann. Doch auch wenn die resultierende Zustandsschätzung aufgrund der Kombination mit den IMU-Messdaten immer mit einer hohen Frequenz bereitgestellt wird, sind hohe Odometrie-Raten dennoch wünschenswert, da diese Messungen viel akkurater sind als IMU-Messungen allein. Daher sollte für die visuelle Odometrie eine Frequenz von 10 Hz angestrebt werden. Die Rate der visuellen Odometrie wird als Statusparameter bereitgestellt und unter der Bildvorschau in der Web GUI auf der Seite Dynamik angegeben.

_images/webgui_dynamics_basler_de.png

Abb. 23 Dynamik-Seite der Web GUI

Auf dem auf dieser Seite gezeigten Kamerabild werden Bildmerkmale als kleine grüne Punkte dargestellt. Die dicken grünen Punkte sind diejenigen Merkmale, für die Übereinstimmungen zu einem vorherigen Keyframe gefunden werden konnten. Grüne Linien stellen dar, wie sich diese Bildmerkmale in Bezug auf den vorherigen Keyframe bewegt haben. Diese Darstellung soll beim Finden eines guten Parametersatzes für die visuelle Odometrie helfen. Die Anzahl an übereinstimmenden Bildmerkmalen (Korrespondenzen) wird als Statusparameter bereitgestellt und unter der Bildvorschau in der Web GUI auf der Seite Dynamik angegeben. Für robuste Odometrie-Messungen sollten die Parameter derart angepasst werden, dass die resultierende Anzahl an Korrespondenzen in der Zielumgebung bei mindestens 50 liegt, wenn sich der Sensor bewegt. Die Anzahl an Korrespondenzen ist höher, wenn der rc_visard in Ruhe ist, und sie wird sich verändern, wenn sich der rc_visard durch die Umgebung bewegt. Aufgrund der Kombination mit den IMU-Messungen kann ein kurzer Ausfall der visuellen Odometrie toleriert werden. Längere Ausfälle sollten vermieden werden, da sie zu größeren Posenunsicherheiten und zu Fehlern in der Zustandsschätzung führen können.

Jeder Laufzeitparameter ist durch eine eigene Zeile auf der Seite Dynamik der Web GUI repräsentiert. Der Name der Zeile ist in Klammern hinter dem Namen des Parameters angegeben und die Parameter werden in der Reihenfolge, in der sie in der Web GUI erscheinen, aufgelistet:

disprange (Disparitätsbereich)

Der Disparitätsbereich gibt den maximalen Disparitätswert an, den jedes Bildmerkmal im Disparitätsbild mit Qualitätsstufe Hoch (High, halbe Auflösung) annehmen kann. Der Disparitätsbereich bestimmt den Mindestabstand für die visuelle Odometrie. Ist der Disparitätsbereich klein, werden nur entferntere Merkmale für die Odometrie-Schätzungen berücksichtigt. Bei einem größeren Disparitätsbereich können auch nahe liegende Merkmale einbezogen werden. Ein größerer Disparitätsbereich erhöht die Rechenzeit, was die Frequenz der visuellen Odometrie verringern kann.

Über die REST-API kann dieser Parameter wie folgt gesetzt werden.
PUT http://<host>/api/v2/pipelines/0/nodes/rc_stereovisodo/parameters?disprange=<value>
PUT http://<host>/api/v1/nodes/rc_stereovisodo/parameters?disprange=<value>

nkey (Anzahl der Keyframes)

Ein Mehr an Keyframes kann die Robustheit und Genauigkeit der visuellen Odometrie erhöhen, was jedoch mit einer längeren Rechenzeit und möglicherweise mit einer geringeren Odometriefrequenz einhergehen kann.

Über die REST-API kann dieser Parameter wie folgt gesetzt werden.
PUT http://<host>/api/v2/pipelines/0/nodes/rc_stereovisodo/parameters?nkey=<value>
PUT http://<host>/api/v1/nodes/rc_stereovisodo/parameters?nkey=<value>

ncorner (Anzahl der Ecken)

Dieser Parameter gibt die ungefähre Anzahl an Eckpunkten an, die im linken Bild detektiert werden. Ein größerer Wert macht die visuelle Odometrie robuster und genauer, kann aber zu einer geringeren Odometriefrequenz führen.

Über die REST-API kann dieser Parameter wie folgt gesetzt werden.
PUT http://<host>/api/v2/pipelines/0/nodes/rc_stereovisodo/parameters?ncorner=<value>
PUT http://<host>/api/v1/nodes/rc_stereovisodo/parameters?ncorner=<value>

nfeature (Anzahl der Merkmale)

Dieser Parameter beschreibt die maximale Anzahl an Bildmerkmalen, die von den Eckpunkten abgeleitet werden. Es ist hilfreich, mehr Eckpunkte zu erkennen, sodass die beste Teilmenge als Merkmale ausgewählt werden kann. Ein größerer Wert macht die visuelle Odometrie robuster und genauer, kann aber zu einer geringeren Odometrierate führen. Je nach Szene und Bewegung werden möglicherweise weniger Merkmale berechnet. Die tatsächliche Anzahl an Merkmalen wird unter der Bildvorschau in der Web GUI auf der Seite Dynamik angegeben.

Über die REST-API kann dieser Parameter wie folgt gesetzt werden.
PUT http://<host>/api/v2/pipelines/0/nodes/rc_stereovisodo/parameters?nfeature=<value>
PUT http://<host>/api/v1/nodes/rc_stereovisodo/parameters?nfeature=<value>

Bemerkung

Die Erhöhung der Anzahl an Keyframes, Ecken oder Merkmalen erhöht zwar die Robustheit, führt aber zu mehr Rechenzeit und kann, je nachdem, welche anderen Module auf dem rc_visard aktiv sind, die Rate der visuellen Odometrie verringern. Die Odometriefrequenz sollte mindestens 10 Hz betragen.

Statuswerte

Dieses Modul meldet folgende Statuswerte:

Tab. 16 Statuswerte des rc_stereovisodo-Moduls
Name Beschreibung
corner Anzahl der erkannten Eckpunkte. Dieser Wert wird unter der Bildvorschau in der Web GUI als Ecken angezeigt.
correspondences Anzahl der Übereinstimmungen. Dieser Wert wird unter der Bildvorschau in der Web GUI als Korrespondenzen angezeigt.
feature Anzahl der Bildmerkmale. Dieser Wert wird unter der Bildvorschau in der Web GUI als Merkmale angezeigt.
fps Frequenz der visuellen Odometrie in Hertz. Dieser Wert wird unter der Bildvorschau in der Web GUI als Rate visuelle Odometrie (Hz) angezeigt.
time_frame Verarbeitungszeit in Sekunden, die zur Berechnung von Eckpunkten und Bildmerkmalen pro Frame benötigt wird
time_vo Verarbeitungszeit in Sekunden, die zur Berechnung der Bewegung benötigt wird

Services

Das Modul bietet keine eigenen Funktionen zum Starten bzw. Stoppen, da es über das Dynamik-Modul gestartet bzw. gestoppt wird.

Das Visuelle-Odometrie-Modul bietet folgende Services, um Parametereinstellungen zu speichern bzw. wiederherzustellen.

reset_defaults

Hiermit werden die Werkseinstellungen der Parameter dieses Moduls wiederhergestellt und angewandt („factory reset“).

Details

Dieser Service kann wie folgt aufgerufen werden.

PUT http://<host>/api/v2/pipelines/0/nodes/rc_stereovisodo/services/reset_defaults
PUT http://<host>/api/v1/nodes/rc_stereovisodo/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"
    }
  }
}