Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

SLAM Map Builder

Erstellen Sie 2D-Rasterkarten mit SLAM auf Lidar-Basis

Beschreibung

Die SLAM Map Builder-App lädt aufgezeichnete Lidar-Scans und Odometrie-Sensordaten, um mithilfe von SLAM-Algorithmen (Simultaneous Localization and Mapping) ein zweidimensionales Belegungsraster zu erstellen. Durch inkrementelles Scan-Matching werden Scans ausgerichtet und überlagert, um die Karte zu erstellen. Die Loop Closure-Erkennung gleicht Abweichungen der Fahrzeug-Odometrie aus, indem sie zuvor besuchte Orte erkennt und die Gesamtkarte anpasst. Manchmal erfordern der Scan-Matching-Algorithmus und die Loop-Closure-Erkennung eine manuelle Anpassung. Verwenden Sie die App, um Scans manuell auszurichten und Loop Closure zu ändern, um die Gesamtgenauigkeit der Karte zu verbessern. Sie können auch die SLAM-Algorithmuseinstellungen anpassen, um den automatischen Kartenerstellung zu verbessern.

So verwenden Sie die App:

Um Rosbag-Protokolldateien zu laden, wählen Sie Import > Import from rosbag. Wählen Sie die Rosbag-Datei aus und klicken Sie auf Open. Dadurch wird die Registerkarte Import geöffnet. Weitere Informationen finden Sie unter Importieren und Filtern eines Rosbags.

Um Daten aus dem Workspace zu laden, Import > Import from workspace. Wählen Sie Ihre Scans- und Poses-Variablen mithilfe der bereitgestellten Dropdown-Menüs aus. Sie können die Variablen auch in der Funktion slamMapBuilder angeben. Siehe Programmatische Verwendung.

Verwenden Sie SLAM Settings, um die SLAM-Algorithmuseinstellungen anzupassen. Es werden Standardwerte bereitgestellt, für Ihre spezifischen Sensoren und Daten ist jedoch möglicherweise eine Anpassung dieser Einstellungen erforderlich. Der wichtigste zu optimierende Wert ist Loop Closure Threshold. Weitere Informationen finden Sie unter SLAM-Einstellungen optimieren.

Klicken Sie auf Build (Erstellen), um mit dem Erstellen der SLAM-Karte zu beginnen. Der Erstellungsprozess richtet Scans in der Karte mithilfe von inkrementellem Scan-Matching aus, identifiziert Loop-Schließungen beim Besuch vorheriger Standorte und passt Posen an. Klicken Sie während des Kartenerstellungsprozesses jederzeit auf Pause, um inkrementelle Scans manuell auszurichten oder Loop-Schließungen zu ändern.

Klicken Sie auf Incremental Match, um die relative Pose des aktuell ausgewählten Frames zu ändern und den Scan mit dem vorherigen Scan auszurichten. Klicken Sie auf Loop Closure, um die erkannte Loop-Schließung für den aktuellen Frame zu ändern oder zu ignorieren. Verwenden Sie den Schieberegler unten, um zu Bereichen zurückzublättern, in denen Scan-Matching oder Loop-Closures nicht genau sind. Sie können beliebig viele Scans oder Loop-Closures ändern. Weitere Informationen finden Sie unter Inkrementelle Scans und Loop-Closures ändern.

Klicken Sie nach dem Ändern Ihrer Karte auf Sync, um alle Posen in der Scan-Karte zu aktualisieren. Die beiden Optionen unter Sync sind Sync, das nach neuen Loop-Schließungen sucht, oder Sync Fast, das die Suche nach Loop-Schließungen überspringt und nur die Scan-Karte aktualisiert. Weitere Informationen finden Sie unter Karte synchronisieren.

Wenn Sie mit dem Aussehen der Karte zufrieden sind, klicken Sie auf Export to OccupancyGrid, um die Karte entweder in eine M-Datei zu exportieren oder im Workspace zu speichern. Die Karte wird als zweidimensionales probabilistisches Belegungsraster in einem occupancyMap-Objekt ausgegeben.

Sie können vorhandene App-Sitzungen öffnen, die Sie mit Open Session gespeichert haben. Wenn Sie sich auf der Registerkarte Map Builder befinden, können Sie Ihren Fortschritt mit Save Session in einer M-Datei speichern.

SLAM Map Builder app

Öffnen Sie die SLAM Map Builder-App

  • MATLAB® Werkzeugleiste: Klicken Sie auf der Registerkarte Apps unter ROBOTICS AND AUTONOMOUS SYSTEMS auf SLAM Map Builder.

  • MATLAB-Befehlsfenster: Geben Sie slamMapBuilder ein

Beispiele

alle erweitern

Mit der App SLAM Map Builder können Sie mithilfe von SLAM-Algorithmen (Simultaneous Localization and Mapping) ein Belegungsraster aus Lidar-Scans erstellen. Die Karte wird durch die Schätzung der Posen mittels Scan-Matching und die Verwendung von Loop-Closures zur Optimierung des Pose-Graphen erstellt. Dieses Beispiel zeigt Ihnen den Arbeitsablauf zum Laden eines Rosbags mit Lidar-Scandaten, zum Filtern der Daten und zum Erstellen der Karte. Optimieren Sie die Scan-Karte, indem Sie inkrementelle Scan-Übereinstimmungen anpassen und Loop-Closures ändern.

Lidar-Scandaten laden

Laden Sie die Beispieldatei .mat in den Workspace, der eine Variable, scans, als Zellenarray von lidarScan-Objekten enthält.

load slamLidarScans.mat

Öffnen Sie die App

Klicken Sie auf der Registerkarte Apps unter Robotik und autonome Systeme auf SLAM Map Builder.

Sie können auch die Funktion slamMapBuilder aufrufen:

slamMapBuilder

Lidar-Scans importieren

Klicken Sie auf Import > Import from workspace, um die Scans zu laden. Als Rosbag gespeicherte Daten können mit einer ROS Toolbox-Lizenz geladen werden.

Wählen Sie die Variable scans im Dropdown-Menü Scans aus.

Setzen Sie in der Symbolleiste Downsample to (%) auf 10. Durch Downsampling werden die Daten gleichmäßig abgetastet, um die Rechenzeit für den SLAM-Algorithmus zu reduzieren. In diesem Beispiel entspricht 10 % jedem fünften Scan. Klicken Sie auf Übernehmen.

Verwenden Sie den Schieberegler oder die Pfeiltasten unten, um eine Vorschau der Scans anzuzeigen.

Wenn Sie mit dem Importieren fertig sind, klicken Sie auf Close.

SLAM-Einstellungen optimieren

Der SLAM-Algorithmus kann mithilfe des Dialogfelds SLAM Settings optimiert werden. Die Parameter sollten basierend auf Ihren Sensorspezifikationen, der Umgebung und Ihrer Anwendung angepasst werden. Erhöhen Sie für dieses Beispiel den Loop Closure Threshold von 200 auf 300. Dieser erhöhte Schwellenwert verringert die Wahrscheinlichkeit, dass ein erkannter Loop Closure akzeptiert und verwendet wird. Stellen Sie das Optimierungsintervall auf 10 ein. Bei jedem zehnten akzeptierten Loop Closure wird der Pose-Graph optimiert, um die Drift zu berücksichtigen.

Erstellen Sie die Karte

Nachdem Sie Ihre Daten gefiltert und die SLAM-Algorithmuseinstellungen festgelegt haben, klicken Sie auf Build. Die App beginnt mit der Verarbeitung von Scans, um die Karte zu erstellen. Sie sollten sehen, wie sich der Schieberegler bewegt und die Scans in der Karte überlagert werden. Die geschätzte Roboterbahn wird auf derselben Scankarte aufgezeichnet. Übereinstimmungen beim inkrementellen Scan werden im Bereich Incremental Match angezeigt. Immer wenn eine Loop-Schließung erkannt wird, werden im Bereich Loop Closure die beiden Scans übereinander gelegt angezeigt.

Anpassen von Scan-Matches oder Loop-Closures

Wenn Sie zu irgendeinem Zeitpunkt während des Erstellungsprozesses feststellen, dass die Karte verzerrt ist oder eine inkrementelle Übereinstimmung oder eine Loop-Schließung nicht richtig aussieht, klicken Sie auf Pause, um Scans zur Anpassung auszuwählen. Sie können Scans auch am Ende des Build-Prozesses ändern. Navigieren Sie mit den Pfeiltasten oder dem Schieberegler zu der Stelle in der Datei, an der die Verzerrung erstmals auftritt. Klicken Sie auf die Schaltflächen Incremental Match oder Loop Closure, um die aktuell angezeigten Scan-Posen anzupassen. In diesem Abschnitt ist der fehlerhafte Loop Closures künstlich und dient nur zur Veranschaulichung.

Klicken Sie auf die Schaltfläche Loop Closure. Dadurch wird eine Registerkarte zum Ändern der relativen Loop-Closure-Pose geöffnet.

Um die Loop-Schließung vollständig zu ignorieren, klicken Sie auf Ignore. Andernfalls ändern Sie die relative Scan-Pose manuell, bis die Scans ausgerichtet sind.

Klicken Sie auf Scan schwenken oder Scan drehen und klicken und ziehen Sie dann in der Abbildung, um die beiden Scans auszurichten. Klicken Sie auf Akzeptieren, wenn Sie fertig sind. Sie können dies für mehrere Scans tun.

Nachdem Sie Ihre Scan-Posen für inkrementelle Übereinstimmungen und Loop Closure geändert haben, klicken Sie auf Sync, um die Änderungen anzuwenden. SyncFast aktualisiert die Karte ohne nach neuen Loop-Schließungen zu suchen und reduziert die Rechenzeit, wenn Sie bereits alle Scans verarbeitet haben.

Belegungsraster exportieren

Nachdem Sie Ihre Änderungen synchronisiert und die Karte fertig erstellt haben, sollte eine vollständig überlagerte Scan-Karte mit einer Roboterbahn angezeigt werden.

Klicken Sie auf Export Occupancy Grid (Belegungsraster), um eine endgültige Belegungskarte Ihrer Umgebung als occupancyMap-Objekt zu erhalten. Geben Sie den Variablennamen an, um die Karte in den Workspace zu exportieren. Sie können eine Karte aus einer Teilmenge von Scans erstellen, indem Sie vor dem Exportieren zum gewünschten Frame zurückblättern und Up to currently selected scan (Bis zum aktuell ausgewählten Scan) auswählen.

Rufen Sie show auf der gespeicherten Karte auf, um die Belegungskarte zu visualisieren.

show(myOccMap)

Sie können eine Sitzung der SLAM Map Builder-App auch mit der Schaltfläche Save Session speichern. Den aktuellen Stand der App schreibt die App in eine .mat-Datei, die später mittels Open Session geladen werden kann.

Verwandte Beispiele

Parameter

alle erweitern

Aus dem Workspace zu importierende Lidar-Scans, angegeben als N-Element-Zellenarray von lidarScan-Objekten.

Aus dem Workspace zu importierende Posen, angegeben entweder als N-mal-3-Matrix oder als N-Element-Zellenarray aus dreielementigen Zeilenvektoren. Jede Zeile der N-mal-3-Matrix und jeder dreielementige Zeilenvektor des Zellenarrays stellen eine Pose der Form [x y theta] dar. x und y bilden die Position in Metern und theta ist die Ausrichtung im Bogenmaß.

Beispiel: [0 0 0; 1 1 pi/4; 2 2 pi/2]

Beispiel: {[0 0 0],[1 1 pi/4],[2 2 pi/2]}

Programmatische Nutzung

alle erweitern

slamMapBuilder(bag) öffnet die SLAM Map Builder-App und importiert die in bag angegebene Rosbag-Protokolldatei, ein BagSelection-Objekt, das mit der Funktion rosbag (ROS Toolbox) erstellt wurde. Die App öffnet die Registerkarte Import, um die Sensordaten in Ihrem Rosbag zu filtern.

slamMapBuilder(sessionFile) öffnet die SLAM Map Builder-App aus einer gespeicherten Sitzungsdatei mit dem Namen sessionFile. Eine App-Sitzungsdatei wird über die Schaltfläche Save Session in der App-Symbolleiste erstellt.

slamMapBuilder(scans) öffnet die SLAM Map Builder-App und importiert die in scans, einem Zellenarray von lidarScan-Objekten, angegebenen Scans. Die App geht davon aus, dass Sie Ihre Scans vorgefiltert haben, und überspringt den Importvorgang. Klicken Sie auf Build, um mit dem Erstellen der Karte zu beginnen.

slamMapBuilder(scans,poses) öffnet die SLAM Map Builder-App und importiert die Scans und Posen. scans wird als Zellenarray von lidarScan-Objekten angegeben. poses ist eine Matrix von [x y theta]-Vektoren, die den Posen von scans entsprechen. Die App geht davon aus, dass Sie Ihre Scans vorgefiltert haben, und überspringt den Importvorgang. Klicken Sie auf Build, um mit dem Erstellen der Karte zu beginnen.

Mehr über

alle erweitern

Versionsverlauf

Eingeführt in R2019b