Implementierung von FastSLAM 2.0 und Tests in Outdoor-Simulationsumgebungen: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(52 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 73: Zeile 73:
*[[Software_Versionsverwaltung_mit_SVN| Einführung in SVN]]
*[[Software_Versionsverwaltung_mit_SVN| Einführung in SVN]]


== Quellen ==
== Erweiterungsdokument ==
# [http://robots.stanford.edu/papers/Montemerlo03a.pdf Montemerlo, M.; Thrun, S., u.a.: ''FastSLAM 2.0: An Improved Particle Filtering Algorithm for Simultaneous Localization and Mapping that Provably Converges''. In: Proceedings of IJCAI, 2003, S. 1151-1156]
In dem [https://wiki.hshl.de/wiki/index.php/Datei:Systemeinrichtung_zum_Arbeiten_mit_ROS2_Humble.pdf Erweiterungsdokument] zur Bachelorarbeit, können die Informationen:
*zur Einrichtung eines Dual-Boot-Systems,
*eine grundlegende Einführung in die Funktionsweise von ROS,
*eine Einführung in die Programmierung mit [https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html ROS2 Humble], C++ und [https://code.visualstudio.com/ Visual Studio Code],
*als auch eine Einführung in die Programmierung mit Visual Studio Code, C++ und [https://cmake.org/ CMake] gefunden werden.
 
== Tools ==
Die während der Arbeit verwendeten Tools, werden im folgenden aufgelistet:
*[https://www.yworks.com/yed-live/ yEd live zum Erstellen von Graphen wie PAP]
*[https://matlab.mathworks.com/ Matlab]
*Excel (Visualisierung der CSV-Exportierten Projektauswertungen)
*Visual Studio Code
*Colcon (Zum Bauen von ROS-Paketen)
*ROS2 Humble
*RViz (Zur Visualisierung der Simulation)
*Webots (Simulationsumgebung)
*[https://eigen.tuxfamily.org/index.php?title=Main_Page Eigen (Matrix-Bibliothek C++)]
*Teleop-Twist-Keyboard (Steuerung des Roboters über Konsole)
*CMake zur Programmierung mit C++ und Visual Studio Code
*Ubuntu 22.04.3 als sekundäres Betriebssystem ([https://cdimage.ubuntu.com/releases/jammy/release/source/ubuntu-22.04.3-src-1.iso ISO-Image Download])
*Windows 10 Home als primäres Betriebssystem
*Rufus zur Erstellung eines Boot-Fähigen USB-Stick (32 GB)
*[https://github.com/jbeder/yaml-cpp Yaml-cpp] zum Erstellen von YAML-Files mittels C++
*OpenMP zur parallelen Programmierung und Nutzung von Eigen


== Nützliche Artikel ==
== Nützliche Artikel ==
*[[Navigation_eines_FTF_mit_ROS2| Y. Schmidt: Navigation eines FTF mit ROS2]]
*[[Navigation_eines_FTF_mit_ROS2| Y. Schmidt: Navigation eines FTF mit ROS2]]
*[[ROS2 Tutorial| P. Ajay: ROS2 Tutorial]]
*[[Webots|A. Talovic: Webots]]
== Nützliche Links ==
*[https://cmake.org/ CMake]
<br>
*[https://www.openmp.org/ OpenMP (Paralleles Programmieren)]
*[https://www.openmp.org/resources/tutorials-articles/ OpenMP Tutorials und Paper]
<br>
*[https://wiki.ros.org/rqt_graph Rqt Graph]
*[https://github.com/ros-teleop/teleop_twist_keyboard teleop_twist_keyboard]
*[https://colcon.readthedocs.io/en/released/user/quick-start.html Colcon]
*[https://www.ros.org/reps/rep-0105.html ROS-Koordinatensysteme]
*[https://docs.nav2.org/ ROS2 Navigation Stack (NAV2)]
*[https://docs.ros.org/en/humble/Tutorials.html ROS2 Humble Tutorials]
*[https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html Installation der Desktop-Version von ROS2 Humble]
*[https://docs.ros.org/en/foxy/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Static-Broadcaster-Cpp.html ROS2 Tf2-Tutorials (Koordinatentransformationen)]
*[https://wiki.ros.org/tf2_ros Tf2_ros Tutorials (Koordinatentransformation)]
<br>
*[https://cyberbotics.com/doc/reference/index Webots Documentation]
*[https://cyberbotics.com/doc/guide/foreword Webots User Guide]
*[https://www.youtube.com/watch?v=2CWHfbuEbAY&list=PLt69C9MnPchlWEV5AEhfT2HajlE2SJ55V Webots Tutorials (Videos)]
*[https://ubuntu.com/tutorials/install-ubuntu-desktop#13-additional-installing-ubuntu-alongside-windows-with-bitlocker Additional installing Ubuntu alongside windows with Bitlocker activated]
<br>
*[https://docs.ros.org/en/rolling/Tutorials/Intermediate/RViz/RViz-User-Guide/RViz-User-Guide.html RViz ROS2 Dokumentation]
<br>
*[https://openslam-org.github.io/bailey-slam.html SLAM-Package von Bailey Tim]
*[https://www.youtube.com/playlist?list=PLgnQpQtFTOGQrZ4O5QzbIHgl3b1JHimN_ SLAM-Kurs von Cyrill Stachniss (Videos)]
*[https://www.youtube.com/playlist?list=PLn8PRpmsu08rLRGrnF-S6TyGrmcA2X7kg SLAM-Themeneinführung-Einführung Matlab (Videos)]
== Wichtige ROS-Topics ==
*[https://index.ros.org/p/nav_msgs/ nav_msgs]
*[https://docs.ros.org/en/ros2_packages/rolling/api/geometry_msgs/index.html geometry_msgs]
*[https://index.ros.org/p/sensor_msgs/ sensor_msgs]
*[https://docs.ros.org/en/jade/api/tf2_msgs/html/msg/TFMessage.html tf2_msgs]


== Extras ==
== Literatur ==
In dem [[Datei:Systemeinrichtung zum Arbeiten mit ROS2 Humble.pdf|Erweiterungsdokument]]  zur Bachelorarbeit, können die Informationen zur Einrichtung eines Dual-Boot-Systems, eine grundlegende Einführung in die Funktionsweise von ROS, eine Einführung in die Programmierung mit [https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html ROS2 Humble], C++ und [https://code.visualstudio.com/ Visual Studio Code], als auch eine Einführung in die Programmierung mit Visual Studio Code, C++ und [https://cmake.org/ CMake] gefunden werden.
# THRUN, S. und OTHERS. ''Probabilistic Robotics''. Massachusetts: The MIT Press, 2006. ISBN 978-0-262-20162-9.
# TU-DRESDEN. ''RoboLab Documentation v2024.5.1. Odometrie'' [online], 2024 [Zugriff am: 22. Mai 2024].
# MONTEMERLO, M. und OTHERS. ''FastSLAM 2.0: An Improved Particle Filtering Algorithm for Simultaneous Localization and Mapping that Provably Converges'', 2003.
# FRESE, U., R. WAGNER und T. RÖFER. ''A SLAM Overview from a User’s Perspective''. In: Springer-Verlag, 2010, S. 191-198.
# ALSADIK, B. und S. KARAM. ''The Simultaneous Localization and Mapping (SLAM)-An Overview''. SURVEYING AND GEOSPATIAL ENGINEERING JOURNAL, 2021, 2(1), 1-12.
# LV, T.-Z., C.-X. ZHAO und H.-F. ZHANG. ''An Improved FastSLAM Algorithm Based on Revised Genetic Resampling and SR-UPF''. International journal of automation and computing, 2018, 325-334. doi: 10.1109/TIE.2018.2854557.
# ABOUZAHIR, M. und OTHERS. ''FastSLAM 2.0 Running On a Low-Cost Embedded Architecture''. In: 13th International Conference on Control, Automation, Robotics & Vision, 2014, S. 1421-1426.
# BEUTELSPACHER, A. ''Lineare Algebra. Eine Einführung in die Wissenschaft der Vektoren, Abbildungen und Matrizen''. Springer Spektrum, 2014. ISBN 978-3-658-02413-0.
# IOANNIDOU, S. und G. PANTAZIS. ''Helmert Transformation Problem. From Euler Angles Method to Quaternion Algebra'' [online]. ISPRS Int. J. Geo-Inf., 2020, 9. Verfügbar unter: doi:10.3390/ijgi9090494
# GRISETTI, G., C. STACHNISS und W. BURGARD. ''Improved Techniques for Grid Mapping with Rao-Blackwellized Particle Filters'', 2007.
# GRISETTI, G., C. STACHNISS und W. BURGARD. ''Improving Grid-based SLAM with Rao-Blackwellized Particle Filters by Adaptive Proposals and Selective Resampling'', 2005.
# THRUN, S. und OTHERS. ''FastSLAM: An Efficient Solution to the Simultanious Localization And Mapping with Unkown Data Association'' [online], 2004 [Zugriff am: 22. Mai 2024].
# ALI, S.S., A. HAMMAD und A.S. TAG ELDIEN. ''A Novel Implementation for FastSLAM 2.0 Algorithm Based on Cloud Robotics''. In: 13th International Computer Engineering Conference (ICENCO), 2017.
# SCHÄFER, T. ''Methodenlehre und Statistik''. Wiesbaden: Springer Fachmedien, 2016. ISBN 978-3-658-11936-2.
# KLANCAR, G., A. ZDESAR, S. BLAZIC und I. SKRJANC. ''Wheeled Mobile Robotics: From Fundamentals Towards Autonomous Systems''. Elsevier Inc, 2017. ISBN 978-0-12-804204-5.
# ABBEL, P. und OTHERS. ''Discriminative Training of Kalman Filters''.
# STACHNISS, C., D. HÄHNEL und W. BURGARD. ''Exploration with Active Loop-Closing for FastSLAM'', 2004.
# ALI, S.S., A. HAMMAD und A. S. TAG ELDIEN. ''Cloud-based map alignment strategies for multi-robot FastSLAM 2.0''. International Journal of Distributed, 2019, 15(3), 1-7.
# KIM, P. ''Kalman-Filter für Einsteiger mit MATLAB Beispielen''. CreateSpace Independent Publishing, 2016. ISBN 978-1502723789.




----
----
→ zurück zum Hauptartikel: [[Studentische_Arbeiten|Studentische Arbeiten]]
→ zurück zum Hauptartikel: [[Studentische_Arbeiten|Studentische Arbeiten]]

Aktuelle Version vom 1. Juli 2024, 18:46 Uhr

Abb. 1: FastSLAM 2.0
Autor: Benjamin Dilly
Modul: Bachelorarbeit, MTR-B-2-7.01
Starttermin: TBD
Abgabetermin: TBD
Prüfungsform: Modulabschlussprüfung als schriftliche Dokumentation (Bachelorarbeit) im Umfang von 30 bis 60 Seiten Textteil und Präsentation (15 Minuten) zzgl. Kolloquiumsdiskussion (15-30 Minuten).
Betreuer: Prof. Dr.-Ing. Schneider, Tel. 806; Stefan Arndt, HANNING ELEKTRO-WERKE GmbH & Co. KG
Mitarbeiter: Marc Ebmeyer, Tel. 847

Einleitung

Algorithmen zur Simultanen Positionsbestimmung und Kartierung (Engl.: Simultaneous Localization and Mapping, SLAM) sind ein wichtiger Bestandteil in der Mobilen Robotik. Da heutzutage meist hochauflösende Laserscanner eingesetzt werden, haben sich Scan-Matching basierende SLAM-Algorithmen für die Indoor-Anwendung durchgesetzt. Jedoch scheitern diese Algorithmen in unstrukturierten und spärlich belegten Umgebungen (kaum bis keine Wände, geringe Anzahl an Messpunkte durch den Laserscanner), wie es im Outdoor-Bereich der Fall ist. Eine Möglichkeit, um in dieser Umgebung zu navigieren, ist die Verwendung eines Landmarken-basierenden SLAM-Verfahrens. Eines dieser Verfahren ist FastSLAM 2.0, das markante Umgebungsmerkmale (Features) mithilfe einer Gaußverteilung modelliert. Die verschiedenen Möglichkeiten der Trajektorie als auch der gesamten Karte werden durch Partikel abgebildet (siehe [1]) Da in einem industriellen Umfeld sowohl Indoor als auch Outdoor-Navigation verlangt wird, sollen beide SLAM-Algorithmen bei Hanning zum Einsatz kommen.


Zielsetzung

Ziel der Arbeit ist die Implementierung von FastSLAM 2.0 in modernem C++ (>= 17) unter Verwendung des Robot Operating System 2 (ROS2) Humble und das Testen in verschiedenen Outdoor-Simulationsumgebungen.

Eigenschaften der Umgebung können hierbei folgende sein:

  • Bodenbeschaffenheit (flach oder uneben)
  • Wenige bis viele Features
  • Langer oder kurzer Weg bis zum nächsten Indoor-Bereich
  • Features verschwinden oder tauchen auf

Von dem Softwaremodul FastSLAM 2.0 werden besondere Anforderungen verlangt:

Feature-Management

Features sind häufig nicht statisch, d.h. sie können über die Zeit aus der Umgebung verschwinden, werden versetzt oder neue kommen dazu. Das Softwaremodul soll damit automatisiert umgehen können.

Konfidenzwert der Lokalisierung

Die Lokalisierung mittels FastSLAM 2.0 soll probabilistisch bewertet werden. Hierbei können verschiedene Kriterien zum Einsatz kommen, wie z. B.: Anzahl der erkannten Features, Abweichung der Messung zu den Features, Kovarianz der Features, Verteilung der Partikel etc. Die Motivation hierbei ist es, mithilfe des Confidence-Werts eine automatische Umstellung von Indoor- und Outdoor-SLAM durchführen zu können.

Parametrierung

Anzahl der Partikel, Ungenauigkeit des Antriebsstrang (Odometrie), verwendete Reichweite des Laserscanners (usable Range), Rastergröße der Karte

Schnittstelle (ROS2)

  • Input: Odometrie, Laserscanner
  • Output: Occupancy Grid Map (Rasterkarte), globale Position bzw. Transformation, Confidence-Wert

Aufgabenstellung

  • Einarbeitung in ROS2
  • Implementierung des Softwaremoduls FastSLAM 2.0
  • Testen in geeigneter Simulationsumgebungen (z. B. WeBots)
  • Testen in geeigneten Umgebungen
  • Auswertung der Ergebnisse unter Berücksichtung der Outdoor-Navigation
  • Dokumentation im HSHL-Wiki


Anforderungen an die wissenschaftliche Arbeit

SVN-Repositorium

Getting started

Lesen Sie zum Einstieg diese Artikel

Erweiterungsdokument

In dem Erweiterungsdokument zur Bachelorarbeit, können die Informationen:

  • zur Einrichtung eines Dual-Boot-Systems,
  • eine grundlegende Einführung in die Funktionsweise von ROS,
  • eine Einführung in die Programmierung mit ROS2 Humble, C++ und Visual Studio Code,
  • als auch eine Einführung in die Programmierung mit Visual Studio Code, C++ und CMake gefunden werden.

Tools

Die während der Arbeit verwendeten Tools, werden im folgenden aufgelistet:

  • yEd live zum Erstellen von Graphen wie PAP
  • Matlab
  • Excel (Visualisierung der CSV-Exportierten Projektauswertungen)
  • Visual Studio Code
  • Colcon (Zum Bauen von ROS-Paketen)
  • ROS2 Humble
  • RViz (Zur Visualisierung der Simulation)
  • Webots (Simulationsumgebung)
  • Eigen (Matrix-Bibliothek C++)
  • Teleop-Twist-Keyboard (Steuerung des Roboters über Konsole)
  • CMake zur Programmierung mit C++ und Visual Studio Code
  • Ubuntu 22.04.3 als sekundäres Betriebssystem (ISO-Image Download)
  • Windows 10 Home als primäres Betriebssystem
  • Rufus zur Erstellung eines Boot-Fähigen USB-Stick (32 GB)
  • Yaml-cpp zum Erstellen von YAML-Files mittels C++
  • OpenMP zur parallelen Programmierung und Nutzung von Eigen

Nützliche Artikel

Nützliche Links






Wichtige ROS-Topics

Literatur

  1. THRUN, S. und OTHERS. Probabilistic Robotics. Massachusetts: The MIT Press, 2006. ISBN 978-0-262-20162-9.
  2. TU-DRESDEN. RoboLab Documentation v2024.5.1. Odometrie [online], 2024 [Zugriff am: 22. Mai 2024].
  3. MONTEMERLO, M. und OTHERS. FastSLAM 2.0: An Improved Particle Filtering Algorithm for Simultaneous Localization and Mapping that Provably Converges, 2003.
  4. FRESE, U., R. WAGNER und T. RÖFER. A SLAM Overview from a User’s Perspective. In: Springer-Verlag, 2010, S. 191-198.
  5. ALSADIK, B. und S. KARAM. The Simultaneous Localization and Mapping (SLAM)-An Overview. SURVEYING AND GEOSPATIAL ENGINEERING JOURNAL, 2021, 2(1), 1-12.
  6. LV, T.-Z., C.-X. ZHAO und H.-F. ZHANG. An Improved FastSLAM Algorithm Based on Revised Genetic Resampling and SR-UPF. International journal of automation and computing, 2018, 325-334. doi: 10.1109/TIE.2018.2854557.
  7. ABOUZAHIR, M. und OTHERS. FastSLAM 2.0 Running On a Low-Cost Embedded Architecture. In: 13th International Conference on Control, Automation, Robotics & Vision, 2014, S. 1421-1426.
  8. BEUTELSPACHER, A. Lineare Algebra. Eine Einführung in die Wissenschaft der Vektoren, Abbildungen und Matrizen. Springer Spektrum, 2014. ISBN 978-3-658-02413-0.
  9. IOANNIDOU, S. und G. PANTAZIS. Helmert Transformation Problem. From Euler Angles Method to Quaternion Algebra [online]. ISPRS Int. J. Geo-Inf., 2020, 9. Verfügbar unter: doi:10.3390/ijgi9090494
  10. GRISETTI, G., C. STACHNISS und W. BURGARD. Improved Techniques for Grid Mapping with Rao-Blackwellized Particle Filters, 2007.
  11. GRISETTI, G., C. STACHNISS und W. BURGARD. Improving Grid-based SLAM with Rao-Blackwellized Particle Filters by Adaptive Proposals and Selective Resampling, 2005.
  12. THRUN, S. und OTHERS. FastSLAM: An Efficient Solution to the Simultanious Localization And Mapping with Unkown Data Association [online], 2004 [Zugriff am: 22. Mai 2024].
  13. ALI, S.S., A. HAMMAD und A.S. TAG ELDIEN. A Novel Implementation for FastSLAM 2.0 Algorithm Based on Cloud Robotics. In: 13th International Computer Engineering Conference (ICENCO), 2017.
  14. SCHÄFER, T. Methodenlehre und Statistik. Wiesbaden: Springer Fachmedien, 2016. ISBN 978-3-658-11936-2.
  15. KLANCAR, G., A. ZDESAR, S. BLAZIC und I. SKRJANC. Wheeled Mobile Robotics: From Fundamentals Towards Autonomous Systems. Elsevier Inc, 2017. ISBN 978-0-12-804204-5.
  16. ABBEL, P. und OTHERS. Discriminative Training of Kalman Filters.
  17. STACHNISS, C., D. HÄHNEL und W. BURGARD. Exploration with Active Loop-Closing for FastSLAM, 2004.
  18. ALI, S.S., A. HAMMAD und A. S. TAG ELDIEN. Cloud-based map alignment strategies for multi-robot FastSLAM 2.0. International Journal of Distributed, 2019, 15(3), 1-7.
  19. KIM, P. Kalman-Filter für Einsteiger mit MATLAB Beispielen. CreateSpace Independent Publishing, 2016. ISBN 978-1502723789.



→ zurück zum Hauptartikel: Studentische Arbeiten