Sensor-Fusion - Teil 2

Autoren: Harsh Vardhan Singh, Akash Parikh | Datum: 21. März 2023 | Kategorie: Automobilindustrie

Einführung

Dieser Blog ist der zweite Teil einer zweiteiligen Serie, in der wir die Verwendung von Sensorfusion in autonomen mobilen Robotern (AMRs) vorstellen, die mit ROS (Robot Operating System) 2 arbeiten können. Im ersten Teil haben wir die Sensorfusion vorgestellt, kurz einen Sensorfusionsalgorithmus namens EKF (Extended Kalman Filters) behandelt und dann einige der Experimente durchgespielt, die wir in der Simulation und an unserem AMR durchgeführt haben. Den ersten Teil finden Sie unter Sensorfusion - Teil 1. In diesem Teil werden wir einige der Auswirkungen der Sensorfusion erörtern und zeigen, dass die genaue Kenntnis des Zustands unseres AMR ein grundlegender Schritt ist, der es dem AMR ermöglicht, andere Funktionen wie Navigation, Umgehung von Hindernissen, Kartierung usw. robust auszuführen. Wir werden dies tun, indem wir die Auswirkungen der Sensorfusion auf zwei verschiedene VSLAM-Algorithmen, nämlich RTAB-Map und Isaac ROS VSLAM (und Nvblox) beobachten.

Bevor wir fortfahren, wollen wir kurz erklären, was VSLAM ist. VSLAM steht für Visual Simultaneous Localization and Mapping (Visuelle gleichzeitige Lokalisierung und Kartierung). Es handelt sich dabei um eine Art simultane Lokalisierungs- und Kartierungstechnik (SLAM), die in der Robotik und der Computer Vision eingesetzt wird. VSLAM verwendet visuelle Informationen von Kameras, wie z. B. RGB- (Rot-Grün-Blau) und Tiefensensoren, um eine Karte der Umgebung zu erstellen und gleichzeitig die Position des Roboters innerhalb dieser Karte zu lokalisieren. Die visuellen Daten können verwendet werden, um Orientierungspunkte in der Umgebung zu identifizieren, die Bewegung des Roboters zu verfolgen und seine Position und Ausrichtung zu schätzen.

RTAB-MAP

RTAB-Map ist ein Open-Source-Framework, das die gleichzeitige Lokalisierung und Kartierung (SLAM) in verschiedenen Arten von Robotern, einschließlich Drohnen, mobilen Robotern und humanoiden Robotern, ermöglicht. Dieser visuell basierte Ansatz verwendet Sensoren wie Kameras, um eine Karte der Umgebung zu erstellen und gleichzeitig den Roboter innerhalb dieser Karte zu lokalisieren. Das Framework integriert auch Odometrie und die Erkennung von Schleifenschlüssen, was zu einer sehr genauen Lokalisierung und Kartierung in schwierigen Umgebungen führt. Zu den Funktionen von RTAB-Map gehören die Kartierung von Punktwolken, graphbasierte Optimierung, Erkennung von Schleifenschlüssen und 3D-Visualisierung. Für Details zur Verwendung von RTAB-Map empfehlen wir unseren Lesern, unseren Blog Autonome Navigation von AMR mit RTAB-Map und ToF-Kamera durchzulesen.

Bei der Kartierung unserer Büroräume haben wir mit zwei verschiedenen Sensoren experimentiert: einmal mit den Realsense-RGBD-Daten des AMR und dann mit seinem Time-of-Flight-Sensor. Durch die Verwendung von RTAB-Map werden wir zeigen, wie die Kartierung durch eine schlechte Odometriequelle beeinträchtigt wird, und dies dann durch die Bereitstellung von Odometrie über Sensorfusion verbessern.

RTAB-MAP-Beobachtungen mit Realsense RGBD

In unseren Experimenten zur Verwendung von RTAB-Map mit Realsense-RGBD-Daten erzielten wir in Umgebungen mit vielen Merkmalen sehr robuste Ergebnisse, und die visuelle Odometrie funktionierte gut. Wenn wir jedoch in Regionen mit wenigen Merkmalen arbeiteten, ging die visuelle Odometrie bis zu einem Punkt verloren, an dem sie nicht mehr wiederhergestellt werden konnte, und der Kartenerstellungsprozess musste neu gestartet werden. Wir haben auch beobachtet, dass die Qualität der Karte selbst dann, wenn die Odometrie nicht verloren geht, ein wenig beeinträchtigt ist und die Karte insgesamt nicht sauber genug ist, um eine ordnungsgemäße Navigation zu ermöglichen. Dies könnte auf große Odometriedriften oder viele ähnliche Merkmale in der Umgebung zurückzuführen sein. In Abbildung 1 sehen Sie, wie eine solche Karte aussehen würde.

Nach dem Einsatz der Sensorfusion konnten wir eine gute Karte unserer Umgebung mit wenigen Merkmalen erstellen, indem wir RTAB-Map eine robustere Odometriequelle zur Verfügung stellten. Dies geschah durch die Fusion von IMU- und Rad-Odometrie. Abbildung 2 zeigt das Ergebnis. Wie man sehen kann, haben wir eine saubere Karte mit gut definierten, nicht überlappenden Grenzen erhalten. Eine solche Karte kann gespeichert und für die Innenraumnavigation verwendet werden.

RTAB-Map-Beobachtungen mit Time-of-Flight-Sensor

Bei der Ausführung von RTAB-Map mit Punktwolkendaten, die von unserem Time-of-Flight-Sensor stammen, haben wir die Rad-Odometrie als Odometriequelle verwendet. Die Rad-Odometrie driftet, insbesondere beim Drehen, und beeinträchtigt die Qualität der erzeugten Karte. In Abbildung 3 ist zu erkennen, dass die Schleife nicht richtig geschlossen ist, was zu einer falschen Ausrichtung der Wände führt.

Nach der Fusion von IMU-Daten mit Rad-Odometrie konnten wir eine stabilere Odometriequelle bereitstellen, was zu einer besseren Gesamtkartierung und einem korrekten Schleifenschluss führte. Wie in Abbildung 4 zu sehen ist, enthält die endgültige Karte keine unbekannten Hindernisse, was sie für die Navigation besser geeignet macht.

Abbildung 1: Beeinträchtigtes Mapping in einer Umgebung mit wenigen Merkmalen

Abbildung 1: Beeinträchtigtes Mapping in einer Umgebung mit wenigen Merkmalen

Abbildung 2: Saubere Karte in einer Umgebung mit wenigen Merkmalen nach der Verwendung der Sensorfusion.

Abbildung 2: Saubere Karte in einer Umgebung mit wenigen Merkmalen nach der Verwendung der Sensorfusion.

Abbildung 3: Unsachgemäßer Schleifenschluss

Abbildung 3: Unsachgemäßer Schleifenschluss

Abbildung 4: Korrekte Wandausrichtung nach der Sensorfusion.

Abbildung 4: Korrekte Wandausrichtung nach der Sensorfusion.

Architektur

Abbildung 5 zeigt die Architektur auf breiter Ebene, wie die Sensorfusion mit RTAB-Map verwendet wird. Der Knoten ekf_localization_node ist die ROS-2-Implementierung des EKF-Algorithmus. Er verwendet Orientierungsdaten, die aus der linearen Beschleunigung und der Winkelgeschwindigkeit unserer IMU unter Verwendung des imu_filter_madgwick-Pakets berechnet werden (siehe Abbildung 6). Der EKF-Knoten nimmt auch die Odometrie auf, die aus den Daten des AMR-Rad-Encoders generiert wird. Der EKF-Knoten gibt eine Transformation zwischen dem /odom- und dem /base_link-Frame aus und veröffentlicht gleichzeitig die berechnete Odometrie in einem separaten Thema. Der RTAB-Map-Knoten nimmt Daten von RGB-D- oder Time-of-Flight-Sensoren zusammen mit den vom EKF-Knoten gelieferten Odometriedaten auf. Der RTAB-Map-Knoten erstellt dann eine Belegungsraster-Karte und sendet die Transformation zwischen den Frames /map und /odom. Diese werden anschließend vom Nav-2-Navigations-Stack zur Durchführung von Navigationsaufgaben verwendet.
Abbildung 5: Übergabe der Odometrie an RTAB-Map durch Sensorfusion  
Abbildung 5: Übergabe der Odometrie an RTAB-Map durch Sensorfusion
 
Abbildung 6: Berechnung der IMU-Orientierung mit dem Paket imu_filter_madgwick.  

Abbildung 6: Berechnung der IMU-Orientierung mit dem Paket imu_filter_madgwick.

Isaac ROS VSLAM + Nvblox

In diesem Abschnitt werden wir einen anderen Ansatz zur Sensorfusion verwenden. Anstatt EKF einfach als Odometriequelle zu verwenden (lokale Pose-Schätzung), werden wir es verwenden, um sowohl eine lokale als auch eine globale Pose-Schätzung durchzuführen. Bitte beachten Sie, dass die Odometriequelle als lokaler Posenschätzer betrachtet werden kann, der die Zustandsschätzung unseres AMR in Bezug auf seine Ausgangsposition liefert, während die globale Posenschätzung die Schätzung der Position des Roboters in Bezug auf eine gegebene globale Karte der Umgebung bedeuten würde. Wir werden die Isaac ROS VSLAM und Nvblox Algorithmen verwenden, um dies zu demonstrieren.

Isaac ROS Visuelles SLAM

Isaac_ros_visual_slam ist ein ROS2-Paket, das eine leistungsstarke VSLAM-Lösung bietet. Das Paket verwendet Stereo-VSLAM und nutzt die Isaac Elbrus GPU-beschleunigte Bibliothek zur Schätzung der visuellen Stereo-Inertial-Odometrie. Durch die Aufnahme eines zeitsynchronisierten Paares von Stereobildern im Graustufenformat, zusammen mit den jeweiligen intrinsischen Kameraparametern, veröffentlicht das Paket die aktuelle Position der Kamera relativ zu ihrer Ausgangsposition.

Isaac_ros_nvblox

Nvblox ist ein leistungsfähiges Werkzeug für die Erstellung genauer 3D-Modelle der Umgebung eines Roboters. Dieser Prozess wird durch den Einsatz von NVIDIA CUDA beschleunigt, wodurch Echtzeit-Betriebsraten möglich werden. Es bietet einen erheblichen Vorteil für die Pfadplanung und Navigation in dynamischen Umgebungen und ermöglicht es Robotern, sicher und effizient zu arbeiten. Das Paket ist in ROS 2 integriert, so dass es leicht mit ROS 2 - basierten Robotern verwendet werden kann.

Weitere Details zum Einsatz von Isaac ROS VSLAM und Nvblox finden Sie in unserem Blog AMR-Navigation mit Isaac ROS VSLAM und Nvblox mit Intel Realsense Kamera

Isaac ROS: VSLAM+Nvblox Beobachtungen

Bei unseren Experimenten mit VSLAM stellten wir fest, dass die globale Zustandsschätzungsgenauigkeit von VSLAM zwar zufriedenstellend war, die von VSLAM erzeugte Odometrie jedoch ein Problem darstellte. In Abbildung 7 zeigen wir die Odometrie-Posen unseres AMR, wenn es in einer geschlossenen Trajektorie betrieben wurde. Die von VSLAM erzeugten Posen, wenn sich der AMR dreht, sind kinematisch nicht machbar, da unser AMR nur zwei Steuerparameter hat, nämlich die x-Geschwindigkeit und die Winkelgeschwindigkeit in z-Richtung. Der AMR ist zu einer solchen seitlichen Bewegung nicht fähig. Diese Art von Verhalten könnte auf das Fehlen eines Bewegungsmodells im Algorithmus zurückzuführen sein.

Bei der Ausführung von VSLAM mit NVBLOX konnten wir eine allmählich zunehmende Diskrepanz zwischen den vom NVBLOX-Kostenkarten-Plugin erzeugten lokalen und globalen Kostenkarten feststellen. Ein Schnappschuss davon ist in Abbildung 8 zu sehen. Dies begann sich negativ auf den Navigationsstapel auszuwirken, da der AMR anfing, Hindernisse in der lokalen Kostenkarte zu erkennen, wo es keine gab. Außerdem war der AMR bei der Ausrichtung auf eine bestimmte Zielposition etwas instabil, und unter bestimmten Umständen wurde die gesamte NVBLOX-Kostenkarte so verschmiert, dass sie nicht mehr zu retten war.

Genau wie bei RTAB-Map sinkt die Leistung in Umgebungen mit geringer Ausstattung, und die oben genannten Beobachtungen werden noch deutlicher.

Abbildung 7: Die visuelle Odometrie von Isaac ROS VSLAM ergibt kinematisch nicht realisierbare Posen.

Abbildung 7: Die visuelle Odometrie von Isaac ROS VSLAM ergibt kinematisch nicht realisierbare Posen.

Abbildung 8: Globale und lokale Kostenkarten sind falsch ausgerichtet

Abbildung 8: Globale und lokale Kostenkarten sind falsch ausgerichtet

Lösung und Architektur

Ein Architekturdiagramm unserer Lösung ist in Abbildung 9 dargestellt. Wir haben zwei verschiedene Instanzen von EKF verwendet, eine für die globale und eine für die lokale Pose-Schätzung. Der lokale Posenschätzer ist dafür verantwortlich, eine Transformation zwischen einem festen Odom-Frame und dem AMR base_link durchzuführen. Er fungiert als Ersatz für die VSLAM-Odometrie. Er verwendet Sensordaten von der eingebauten IMU, den Raddrehgebern und der von VSLAM generierten visuellen Odometrie. Der Global Pose Estimator ist für die Transformation zwischen einem festen Kartenbild und dem festen Odometerbild verantwortlich. Dies ist ein Ersatz für die von VSLAM erzeugte globale Pose. Er verbraucht dieselben Daten wie der lokale Posenschätzer und die von VSLAM berechnete globale Pose.
 
Abbildung 9: Architekturdiagramm für die Verwendung von Sensoren zur lokalen und globalen Zustandsschätzung mit Isaac ROS VSLAM und Nvblox.
Wir haben einige der wichtigsten Konfigurationen aufgelistet, die für die Architektur in Abbildung 10. Wir führen sowohl den lokalen als auch den globalen EKF-Knoten aus, wobei der two_d_mode auf True gesetzt ist, da wir mit einer AMR arbeiten. Für den Knoten zur lokalen Pose-Schätzung werden die IMU-Orientierung aus dem imu_filter-Knoten, die Geschwindigkeit aus der visuellen Odometrie von VSLAM und die Geschwindigkeit aus der Odometrie des Rad-Encoders fusioniert. Für den Knoten zur globalen Pose-Schätzung wird die von VSLAM gemeldete globale Position mit den Daten des Knotens zur lokalen Pose-Schätzung fusioniert. Der Knoten robot_localization ermöglicht es uns, diese mit dem Parameter sensorN_config zu spezifizieren. Die IMU wird mit dem Parameter sensorN_relative auf einen Gierwert von Null eingestellt. Für die lokale Pose-Schätzung wurde der world_frame auf odom_frame und für die globale Pose-Schätzung auf map_frame gesetzt. Wir haben die Frequenz des EKF-Vorhersagezyklus auf 10 Hz eingestellt, was auch der Frequenz unserer Datenquellen entspricht. Die EKF ist in der Lage, Geschwindigkeitsbefehle anzunehmen, indem der Parameter use_control auf True gesetzt wird. Außerdem legen wir eine Wartezeit von 0,1 und 0,2 Sekunden für das Eintreffen von Eingangs- und Sensordaten fest, bevor eine Vorhersage durchgeführt wird. Dies geschieht mit den Parametern control_timeout und sensor_timeout. Das Prozessrauschen ist hoch genug eingestellt, damit EKF den eingehenden Messungen etwas mehr Glauben schenkt als dem omnidirektionalen Bewegungsmodell. Bitte beachten Sie, dass die Kovarianz des Sensorrauschens technisch gesehen kein Parameter des robot_localization-Pakets ist. Wir erwähnen sie hier, da sie ein wichtiger Aspekt war, der zur Stabilisierung der EKF-Schätzung, insbesondere in Bezug auf die VSLAM-Odometrie, eingestellt werden musste.

               

Abbildung 10: Wichtige Konfigurationen, die für EKF verwendet werden.

Mit der oben beschriebenen Architektur und Konfiguration konnten wir die Gesamtabbildung und Navigation unserer AMR verbessern. Dies funktionierte auch in Umgebungen mit geringer Ausstattung gut. Die von Nvblox erstellten lokalen und globalen Kostenkarten wurden genau aufeinander abgestimmt. Die Navigation begann reibungsloser zu laufen, und das Vorhandensein dynamischer Hindernisse in der AMR-Ansicht zerstörte die von Nvblox erstellte Gesamtkarte nicht.

Schlussfolgerung

In diesem Blog haben wir zwei Anwendungsfälle vorgestellt, bei denen die Sensorfusion zur Verbesserung der Kartierungs- und Navigationsfähigkeiten eines AMR eingesetzt werden kann. Der erste Fall war die Bereitstellung einer stabilen Odometriequelle für RTAB-Map und im zweiten Fall die Bereitstellung globaler und lokaler Posenschätzungen unseres AMR für Nvblox zur Verbesserung der Kartierungsergebnisse. Diese Experimente halfen auch bei den Navigationsfähigkeiten unseres AMR.

Autoren

Harsh Vardhan Singh
Lösungsingenieur, eInfochips (Ein Arrow-Unternehmen)
Akash Parikh
Ingenieur für eingebettete Systeme, einfochips (Ein Arrow-Unternehmen)

Beginnen Sie noch heute ein Gespräch

Vereinbaren Sie einen 30-minütigen Beratungstermin mit unserem Experten für Batteriemanagementlösungen

Beginnen Sie noch heute ein Gespräch

Vereinbaren Sie einen 30-minütigen Beratungstermin mit unseren Experten für Industrie- und Energielösungen

Beginnen Sie noch heute ein Gespräch

Vereinbaren Sie einen 30-minütigen Beratungstermin mit unseren Experten für die Automobilbranche

Beginnen Sie noch heute ein Gespräch

Vereinbaren Sie einen 30-minütigen Beratungstermin mit unseren Experten

Bitte füllen Sie die nachstehenden Angaben aus und erhalten Sie einen Musterbericht

Referenz-Designs

Unser Werk

Erneuern Sie

Verwandeln.

Skala

Partnerschaften

Unternehmen

Produkte & IPs