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.
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.
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.
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.
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 vSLAM
Stereo vSLAM
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.
SLAM mit 2D LiDAR
SLAM mit 3D LiDAR
Dieses Thema vertiefen
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.
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
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.
Dieses Thema vertiefen
Sensorsignal- und Bildverarbeitung für SLAM-Frontend:
- 2D- und 3D-LiDAR-Verarbeitung und Scan-Abgleich mit der Lidar Toolbox™ und der Navigation Toolbox™
- 3D-Punktwolkenverarbeitung und Punktwolkenregistrierung
- Erkennung von Schleifenschlüssen mithilfe von Bag of Features und Bag of Visuals Words
- Objekterfassung und semantische Segmentierung mithilfe von Deep Learning
- Kartenerstellung mit 3D-LiDAR-Punktwolke mithilfe der Automated Driving Toolbox™
- Sensordatenfusion zur Lokalisierung und dem Tracking mehrerer Objekte mit der Sensor Fusion and Tracking Toolbox™
2D/3D-Pose-Graphen für SLAM-Backend:
- Generieren von 2D/3D-Pose-Graphen mithilfe der Navigation Toolbox
- Optimierung eines Pose-Graphen auf der Grundlage von Knoten und Kantenrandbedingungen
- Bündelausgleichung mithilfe der Computer Vision Toolbox
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.
Ressourcen
Erweitern Sie Ihre Kenntnisse durch Dokumentation, Beispiele, Videos und vieles mehr.
Ähnliche Themen
Sehen Sie sich weitere Themengebiete an, für die MATLAB- und Simulink-Produkte häufig zum Einsatz kommen.
Verwenden Sie die Ausgabekarte von SLAM-Algorithmen für die Pfadplanung und -steuerung.
- Implementieren Sie Pfadplanungsalgorithmen wie RRT oder Hybrid A* mithilfe der Navigation Toolbox.
- Senden Sie Steuerbefehle, um dem geplanten Pfad mit Hindernisvermeidung zu folgen.
Beschleunigen Sie rechenintensive Prozesse, z. B. in der Bildverarbeitung, indem Sie diese mithilfe der Parallel Computing Toolbox™ parallel ausführen.
Lesen Sie unser E-Book über die Entwicklung autonomer mobiler Roboter mit MATLAB und Simulink
30-tägige kostenlose Testversion
Jetzt loslegenWebsite auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)