SLAM Mapping
Slam Karten Knoten aktivieren
- Schalten Sie zunächst das Radar ein, sodass es sich normal dreht. Danch führen Sie den folgenden Befehl aus, um den Lidar-Knoten auf dem Roboter zu starten.
- Der Karosserieknoten und der Radarknoten werden beim Starten des Slam-Mapping-Knotens standardmäßig aktiviert. Schließen Sie daher bitte zuerst den Karosserieknoten und den Radarknoten des Roboters, um Konflikte und Fehler beim Starten des Slam-Mapping-Knotens zu vermeiden.
roslaunch jetracer_ros slam.launch #Der Kartierungsalgorithmus gmapping wird als Standard genutzt.
- Führen Sie den folgenden Befehl in der virtuellen Maschine aus, um das Bildtool rviz zu starten und die Daten betrachten. Diese Startdatei startet auch den Gamepad-Fernsteuerungsknoten, das heißt das Sie den Kontroller mit der virtuellen Maschine verbinden müssen, bevor Sie den Befehl ausführen.
- Nach dem Start von rviz werden Radarinformationen, Kamerabilder, Kartendaten, TF-Koordinaten und andere Informationen angezeigt. Verwenden Sie einen Kontroller zur Steuerung der mechanischen Bewegung, um die Karte zu scannen.
roslaunch jetracer_ros view_slam.launch #Karte anzeigen
- Wenn bei der Anzeige der Karte der folgende Fehler auftritt, überprüfen Sie bitte, ob der Kontroller angeschlossen ist, wobei /dev/input/js0 der Input des Kontrollers ist.
Karte abspeichern
- Nachdem Sie die Karte gescannt haben, öffnen Sie ein neues Terminal im Roboter und führen Sie den folgenden Befehl aus, um die erstellte Kartendatei zu speichern.
cd ~/catkin_ws/src/jetracer_ros/maps rosrun map_server map_saver -f mymap
- Führen Sie den ls Befehl aus, um die gespeicherten Kartendatei anzuzeigen.
ls
- Dazu gehören: mymap.pgm sind die Kartendaten, mymap.yaml sind die Karteninformationen und savemap.sh ist das Skript zum Speichern der Karte. Sie können also auch dieses Skript ausführen, um die Karte zu speichern.
cd ~/catkin_ws/src/jetracer_ros/maps && ./savemap.sh
Verschiedene Algorithmen
- Das Programm unterstützt vier Kartierungsalgorithmen: gmapping, hector, karto und cartographer. Standardmäßig wird der gmapping-Algorithmus verwendet, und der entsprechende Mapping-Algorithmus kann auch über den Parameter map_type ausgewählt werden.
- Die folgenden Befehle könne zur Auswahl des jeweiligen map_type-Parameters genutzt werden.
roslaunch jetracer_ros slam.launch map_type:=gmapping #gmapping Algorithmus (Standard) roslaunch jetracer_ros slam.launch map_type:=hector #hector Algorithmus roslaunch jetracer_ros slam.launch map_type:=karto #karto Algorithmus roslaunch jetracer_ros slam.launch map_type:=cartographer #cartographer Algorithmus
- Auf der Seite der virtuellen Maschine können Sie, wenn sie die Algorithmen gmapping, hector oder karto benutzt haben, den folgenden Befehl ausführen, um die Karte anzuzeigen
roslaunch jetracer_ros view_slam.launch #Karte anzeigen
- Wenn Sie den Algorithmus cartographer verwenden, ist die Konfiguration von rviz anders, Sie müssen den folgenden Befehl verwenden, um die Karte anzuzeigen.
roslaunch jetracer_ros view_slam.launch map_type:=cartographer #Display map
- Mapping-Effekt des Hector-Algorithmus.
- Mapping-Effekt des Karto-Algorithmus
- Mapping-Effekt des Cartographer-Algorithmus. Die grünen Punkte in der Abbildung sind Punktwolkendaten anstelle von Radardaten, und die blauen Punkte sind die Bewegungspfade des Fahrzeugs.
- Wenn Sie die Algorithmen gmapping, hector oder karto verwenden, um eine Karte zu erstellen, können Sie die Karte direkt über den Befehl map_server speichern; nachdem der Kartograph-Algorithmus eine Karte erstellt hat, müssen Sie den pbstream vor dem Speichern in eine Karte umwandeln, d. h. wir können das folgende Skript zum Speichern der Karte verwenden.
cd ~/catkin_ws/src/jetracer_ros/maps && ./carto_savemap.sh
→ zurück zum Hauptartikel: