SLAM (Simultane Lokalisierung und Kartierung)

Was ist SLAM?

Funktionsweise, Arten von SLAM-Algorithmen und erste Schritte

SLAM (Simultane Lokalisierung und Kartierung) ist eine Methode für autonome Fahrzeuge, mit der man eine Karte erstellen und gleichzeitig das Fahrzeug auf dieser Karte lokalisieren kann. SLAM-Algorithmen ermöglichen es dem Fahrzeug, unbekannte Umgebungen zu erfassen. Ingenieure nutzen die Karteninformationen, um bestimmte Funktionen wie beispielsweise die Pfadplanung und Hindernisvermeidung durchzuführen.

Die Bedeutung von SLAM

SLAM ist seit vielen Jahren Gegenstand der technischen Forschung. Doch dank der enormen Verbesserungen bei der Verarbeitungsgeschwindigkeit von Computern und der Verfügbarkeit kostengünstiger Sensoren wie Kameras und Laserentfernungsmesser werden SLAM-Algorithmen heute in immer mehr Bereichen für praktische Anwendungen eingesetzt.

Um die Bedeutung von SLAM zu verstehen, sollten wir uns einige seiner Vorteile und Anwendungsbeispiele ansehen.

SLAM-Beispiele

Stellen Sie sich einen Staubsaugerroboter für zu Hause vor. Ohne SLAM wird er sich nur ziellos in einem Raum bewegen und möglicherweise nicht die gesamte Bodenfläche reinigen können. Außerdem verbraucht diese Vorgehensweise zu viel Strom, sodass der Akku schneller entladen wird. Im Gegensatz dazu können Roboter mit einem SLAM-Algorithmus Informationen wie die Anzahl der Radumdrehungen und Daten von Kameras und anderen bildgebenden Sensoren verwenden, um den Umfang der erforderlichen Bewegungen zu bestimmen. Dieser Vorgang wird als Lokalisierung bezeichnet. Zudem kann der Roboter mithilfe der Kamera und anderer Sensoren gleichzeitig eine Karte der Hindernisse in seiner Umgebung erstellen und so vermeiden, denselben Bereich zweimal zu reinigen. Das wird Kartierung genannt.

Vorteile von SLAM für Putzroboter

Vorteile von SLAM für Putzroboter

SLAM-Algorithmen eignen sich auch für zahlreiche andere Anwendungen, z. B. für die Navigation einer Flotte mobiler Roboter zum Einräumen von Regalen in einem Warenlager, das Einparken eines selbstfahrenden Autos auf einem freien Parkplatz oder die Auslieferung eines Pakets durch die Navigation einer Drohne in einer unbekannten Umgebung. MATLAB® und Simulink® bieten verschiedene Algorithmen, Funktionen und Analyse-Tools für SLAM zur Entwicklung zahlreicher Anwendungen. Neben der gleichzeitigen Lokalisierung und Kartierung können Sie auch andere Aufgaben wie die Sensordatenfusion, das Objekt-Tracking, die Pfadplanung und Pfadverfolgung durchführen.

Funktionsweise von SLAM

Allgemein gesagt, gibt es zwei Arten von Technologiekomponenten, die für SLAM verwendet werden. Der erste Typ ist die Sensorsignalverarbeitung, zu der auch die Frontend-Verarbeitung gehört, die weitgehend von den verwendeten Sensoren abhängt. Der zweite Typ ist die Optimierung des Pose-Graphen, einschließlich der Backend-Verarbeitung, die völlig sensorunabhängig erfolgt.

SLAM-Workflow mit den Bausteinen für die Frontend- und Backend-Verarbeitung.

SLAM-Verarbeitungsablauf

Arten von SLAM-Methoden

Um mehr über die Frontend-Verarbeitungskomponente zu erfahren, können Sie verschiedene SLAM-Methoden wie visuelles SLAM, LiDAR-SLAM und Multi-Sensor-SLAM kennenlernen.

Visuelles SLAM

Wie der Name andeutet, verwendet visuelles SLAM (oder vSLAM) Bilder, die von Kameras und anderen Bildsensoren erfasst werden. Das visuelle SLAM kann einfache Kameras (Weitwinkel-, Fischaugen- und sphärische Kameras), Kameras mit verbundenen Linsen (Stereo- und Multikameras) und RGB-D-Kameras (Tiefen- und ToF-Kameras) verwenden.

Ebenso kann das visuelle SLAM mit relativ preiswerten Kameras kostengünstig implementiert werden. Da Kameras eine große Menge an Informationen liefern, können sie außerdem zur Erkennung von Orientierungspunkten (zuvor gemessenen Positionen) verwendet werden. Die Erkennung von Orientierungspunkten kann auch mit einer graphenbasierten Optimierung kombiniert werden, was eine flexible SLAM-Implementierung ermöglicht.

Beim monokularen SLAM handelt es sich um einen SLAM-Algorithmus, bei dem vSLAM eine einzelne Kamera als einzigen Sensor verwendet, was jedoch die Bestimmung der Tiefe erschwert. Dieses Problem kann entweder durch die Erkennung von AR-Markern, Schachbrettern oder anderen bekannten Objekten im Bild zur Lokalisierung gelöst werden oder durch die Zusammenführung der Kamerainformationen mit einem anderen Sensor, z. B. Inertialmesseinheiten (IMUs), um physikalische Größen wie Geschwindigkeit und Orientierung zu messen. Zu den Technologien, die mit vSLAM verwandt sind, gehören Structure from Motion (SfM), die visuelle Odometrie und Bündelausgleichung.

Visuelle SLAM-Algorithmen lassen sich grundsätzlich in zwei Kategorien einteilen. Dünne Methoden erfassen Merkmalspunkte von Bildern und verwenden Algorithmen wie PTAM und ORB-SLAM. Bei dichten Methoden wird die Gesamthelligkeit der Bilder verwendet und Algorithmen wie DTAM, LSD-SLAM, DSO und SVO eingesetzt.

Monokulares visuelles SLAM mithilfe des TUM RGB-D-Datensatzes.

Monokulares vSLAM

Alternativtext: Dichte Rekonstruktion mithilfe von visuellem Stereo-SLAM.

Stereo vSLAM

RGB-D visuelles SLAM mithilfe des TUM RGB-D-Datensatzes.

RGB-D vSLAM

LiDAR-SLAM

Bei der optischen Entfernungs- und Geschwindigkeitsmessung (Light detection and ranging, LiDAR) wird in erster Linie ein Lasersensor (oder Abstandssensor) verwendet.

Im Vergleich zu Kameras, ToF und anderen Sensoren sind Laser wesentlich präziser und werden für Anwendungen mit sich schnell bewegenden Fahrzeugen wie selbstfahrenden Autos und Drohnen eingesetzt. Die Ausgabewerte von Lasersensoren sind im Allgemeinen 2D- (x, y) oder 3D- (x, y, z) Punktwolkendaten. Die Punktwolke des Lasersensors liefert hochpräzise Abstandsmessungen und eignet sich daher besonders gut für die Erstellung von Karten mit SLAM-Algorithmen. Die Bewegung wird sequentiell geschätzt, indem die Punktwolken registriert werden. Die berechnete Bewegung (zurückgelegte Strecke) wird zur Lokalisierung des Fahrzeugs verwendet. Um die relative Transformation zwischen den Punktwolken zu schätzen, können Sie Registrierungsalgorithmen wie Iterative Closest Point (ICP) und Normal Distribution Transform (NDT) verwenden. Alternativ können Sie einen merkmalsbasierten Ansatz wie Lidar Odometry and Mapping (LOAM) oder Fast Global Registration (FGR) verwenden, der auf FPFH-Merkmalen basiert. Die 2D- oder 3D-Punktwolkenkarten können als Gitterkarten oder Voxelkarten dargestellt werden.

Aufgrund dieser Herausforderungen kann die Lokalisierung für autonome Fahrzeuge die Kombination mit anderen Messungen wie der Rad-Odometrie, dem globalen Navigationssatellitensystem (GNSS) und IMU-Daten erfordern. Für Anwendungen wie Lagerroboter wird üblicherweise 2D-LiDAR-SLAM verwendet, während SLAM mit 3D-Punktwolken häufig für UAVs und automatisiertes Fahren eingesetzt wird.

Kartierung von Innenräumen mithilfe von 2D-LiDAR-SLAM und Factor Graph.

SLAM mit 2D LiDAR

Erstellen einer Karte aus 3D-LiDAR-Daten mithilfe von SLAM.

SLAM mit 3D LiDAR

Multi-Sensor-SLAM

Der Multi-Sensor-SLAM ist eine Art von SLAM-Algorithmus, bei dem eine Vielzahl von Sensoren – darunter Kameras, IMUs (Inertial Measurement Units), GPS, LiDAR, Radar und viele weitere – eingesetzt werden, um die Präzision und Robustheit von SLAM-Algorithmen zu verbessern. Durch die Nutzung der sich ergänzenden Vorteile verschiedener Sensoren und das Ausgleichen ihrer individuellen Einschränkungen lassen sich beim Multi-Sensor-SLAM erstklassige Ergebnisse erzielen. So liefern Kameras zwar detaillierte visuelle Daten, können aber bei schlechten Lichtverhältnissen oder hohen Geschwindigkeiten an ihre Grenzen stoßen. LiDAR hingegen liefert bei unterschiedlichen Lichtverhältnissen konsistente Ergebnisse, kann aber bei bestimmten Oberflächenmaterialien Schwierigkeiten haben. Multi-Sensor-SLAM bietet durch die Integration von Daten aus verschiedenen Quellen eine zuverlässigere Lösung als seine Pendants mit nur einem Sensor. Der Factor Graph bietet ein modulares und anpassungsfähiges Framework, das verschiedene Sensortypen wie Kameras, IMUs und GPS integriert. Darüber hinaus berücksichtigt Factor Graph auch benutzerdefinierte Sensoreingaben (wie LiDAR und Odometrie), indem die Daten in Pose-Faktoren umgewandelt werden. Diese Möglichkeit schafft die Voraussetzung für verschiedene Multi-Sensor-SLAM-Konfigurationen, wie z. B. Monokulares visuell-inertiales SLAM und LiDAR-IMU-SLAM.

Häufige Herausforderungen bei SLAM

Obwohl SLAM-Algorithmen für einige praktische Anwendungen eingesetzt werden, stehen mehrere technische Herausforderungen einer allgemeineren Anwendung noch im Wege. Jede hat eine passende Gegenmaßnahme, mit der sich das Problem lösen lässt.

1. Lokalisierungsfehler akkumulieren sich und verursachen erhebliche Abweichungen von den tatsächlichen Werten.

SLAM-Algorithmen schätzen die sequenzielle Bewegung, die eine gewisse Fehlertoleranz beinhaltet. Der Fehler akkumuliert sich mit der Zeit und führt zu einer erheblichen Abweichung von den tatsächlichen Werten. Es kann auch dazu führen, dass die Kartendaten kollabieren oder verzerrt werden, was eine spätere Suche erschwert. Nehmen wir als Beispiel das Umfahren einer quadratischen Passage. Mit zunehmender Fehlerhäufigkeit stimmen Start- und Endpunkt des Roboters nicht mehr überein. Man spricht hier von einem Schleifenschlussproblem. Solche Posenschätzungsfehler sind unvermeidlich. Daher ist es wichtig, Schleifenschlüsse zu erkennen und festzulegen, wie der akkumulierte Fehler korrigiert oder aufgehoben werden kann.

Keine Rückkehr zum Ausgangspunkt möglich (verzerrte Karte)

Beispiel für die Konstruktion eines Pose-Graphen und die Minimierung von Fehlern.

Für Multi-Sensor-SLAM ist eine genaue Kalibrierung der Sensoren unerlässlich. Diskrepanzen oder Kalibrierungsfehler können zu Ungenauigkeiten bei der Sensordatenfusion führen und die Gesamtfunktionalität des Systems beeinträchtigen. Die Optimierung des Faktorgraphen kann den Kalibrierungsprozess weiter vorantreiben, darunter auch die Abstimmung von Kamera- und IMU-Systemen.

Eine Gegenmaßnahme besteht darin, sich einige Merkmale eines zuvor besuchten Ortes als Orientierungspunkte zu merken und den Lokalisierungsfehler zu minimieren. Um die Fehler zu korrigieren, werden Pose-Graphen erstellt. Durch die Lösung der Fehlerminimierung als Optimierungsproblem können genauere Kartendaten erzeugt werden. Diese Art der Optimierung wird im visuellen SLAM als Bündelausgleichung bezeichnet.

Beispiel für die Konstruktion eines Pose-Graphen und die Minimierung von Fehlern.

Beispiel für die Konstruktion eines Pose-Graphen und die Minimierung von Fehlern

2. Die Lokalisierung schlägt fehl und die Position auf der Karte geht verloren.

Die Bild- und Punktwolkenkartierung berücksichtigt nicht die Bewegungsmerkmale eines Roboters. In einigen Fällen kann dieser Ansatz zu diskontinuierlichen Positionsschätzungen führen. Ein Berechnungsergebnis zeigt zum Beispiel, dass ein Roboter, der sich mit 1 m/s bewegt, plötzlich 10 Meter nach vorne springt. Diese Art von Lokalisierungsfehlern kann entweder mithilfe eines Wiederherstellungsalgorithmus oder durch Zusammenführen des Bewegungsmodells mit mehreren Sensoren verhindert werden, um so Berechnungen auf der Grundlage der Sensordaten durchzuführen.

Es gibt mehrere Methoden zur Verwendung eines Bewegungsmodells mit Sensordatenfusion. Eine gängige Methode ist die Kalman-Filterung zur Lokalisierung. Da die meisten Roboter mit Differentialantrieb und vierrädrige Fahrzeuge im Allgemeinen nichtlineare Bewegungsmodelle verwenden, werden häufig erweiterte Kalman-Filter und Partikel-Filter (Monte-Carlo-Lokalisierung) eingesetzt. In einigen Fällen können auch flexiblere Bayes-Filter, wie z. B. Unscented Kalman-Filter, verwendet werden. Einige der am häufigsten verwendeten Sensoren sind Trägheitsmessgeräte wie IMU, Lage- und Kursreferenzsystem (Attitude Heading Reference System, AHRS), Inertial Navigation System (INS), Beschleunigungssensoren, Kreiselsensoren und Magnetsensoren. Für die Odometrie werden häufig am Fahrzeug angebrachte Raddrehgeber verwendet.

Wenn die Lokalisierung fehlschlägt, kann eine Gegenmaßnahme darin bestehen, sich einen Orientierungspunkt als Schlüsselbild von einem zuvor besuchten Ort zu merken. Bei der Suche nach einem Orientierungspunkt wird eine Merkmalsextraktion so angewandt, dass sie mit hoher Geschwindigkeit durchgeführt werden kann. Zu den Methoden, die auf Bildmerkmalen basieren, gehören Bag of Features (BoF) und Bag of Visual Words (BoVW). Seit Kurzem kommt auch das Deep Learning für den Vergleich von Entfernungen von Merkmalen zum Einsatz.

3. Der Rechenaufwand bei der Bildverarbeitung, Punktwolkenverarbeitung und Optimierung ist hoch.

Ein Problem bei der Implementierung von SLAM-Algorithmen auf der Fahrzeughardware ist der Rechenaufwand. Die Berechnungen werden in der Regel auf kompakten und stromsparenden eingebetteten Mikroprozessoren durchgeführt, die nur über eine begrenzte Rechenleistung verfügen. Um eine genaue Lokalisierung zu erreichen, muss nicht nur die Bildverarbeitung, sondern auch der Punktwolkenabgleich mit hoher Frequenz erfolgen. Darüber hinaus sind Optimierungsberechnungen wie das Schließen von Schleifen sehr rechenintensive Prozesse. Die Herausforderung besteht darin, diese rechenintensive Verarbeitung auf eingebetteten Mikrocomputern durchzuführen.

Eine Gegenmaßnahme besteht darin, verschiedene Prozesse parallel laufen zu lassen. Prozesse wie die Merkmalsextraktion, die die Vorverarbeitung des Matching-Prozesses darstellt, eignen sich vergleichsweise gut zur Parallelisierung. Mithilfe von Mehrkernprozessoren für die Verarbeitung, SIMD-Berechnungen (Single Instruction Multiple Data) und eingebetteten Grafikkarten kann die Geschwindigkeit in einigen Fällen noch weiter erhöht werden. Da die Optimierung des Pose-Graphen in einem entsprechend langen Zyklus durchgeführt werden kann, kann eine Senkung der Priorität und die Durchführung dieses Prozesses in regelmäßigen Abständen die Leistung ebenfalls verbessern.

SLAM mit MATLAB

Sensorsignal- und Bildverarbeitung für SLAM-Frontend:

2D/3D-Pose-Graphen für SLAM-Backend:

Belegungsgitter mit der SLAM Map Builder-App:

  • Importieren von 2D-LiDAR-Daten aus MATLAB-Workspace oder Rosbag-Dateien und Erstellen von Belegungsgittern
  • Finden und Modifizieren von Schleifenschlüssen und Exportieren der Karte als Belegungsgitter für die Pfadplanung

Stellen Sie eigenständige ROS-Knoten bereit und kommunizieren Sie mit Ihrem ROS-fähigen Roboter aus MATLAB und Simulink® mithilfe der ROS Toolbox.

Setzen Sie Ihre in MATLAB und Simulink entwickelten Bildverarbeitungs- und Navigationsalgorithmen mithilfe des MATLAB Coder™ und GPU Coder™ auf eingebetteten Mikroprozessoren ein.