Select Git revision
Navigation.md
Navigation.md 3.97 KiB
Navigation
Einer Linie folgen mit zwei Liniensensoren
Dieses Navigationsszenario ermöglicht einem TurtleBot, einer Linie auf dem Boden zu folgen. Die Umsetzung erfolgt durch eine Kombination von Hardware (TurtleBot 4, Raspberry Pi Pico, und TCRT5000-Liniensensoren) und einer Softwareintegration unter Verwendung von ROS 2. Nachfolgend wird der Prozess detailliert beschrieben:
Hardwareaufbau
-
TCRT5000 Liniensensoren:
- Zwei TCRT5000-Sensoren sind für die Erkennung der Linie auf dem Boden zuständig. Sie messen die Helligkeit des Bodens und erkennen den Kontrast zwischen der Linie und der Umgebung.
- Diese Sensoren sind physisch ausgelagert und an einen Raspberry Pi Pico angeschlossen.
-
Raspberry Pi Pico:
- Der Pico fungiert als Mittler, der die Sensordaten von den TCRT5000-Sensoren aufnimmt.
- Die Verarbeitung der Daten erfolgt in Echtzeit, und die relevanten Informationen werden über eine serielle USB-Schnittstelle an den Hauptrechner des TurtleBot weitergeleitet.
-
Raspberry Pi auf dem TurtleBot:
- Der Hauptrechner des TurtleBot empfängt die Sensordaten über die USB-Verbindung und integriert diese in das Robot Operating System (ROS 2).
Software-Integration
Die Software wird durch zwei ROS-Pakete organisiert:
-
pico_reader_node
:- Dieser Node ist für die Kommunikation mit dem Raspberry Pi Pico zuständig.
- Er liest die von den TCRT5000-Sensoren gelieferten Sensordaten über die serielle Schnittstelle und veröffentlicht diese als ROS-Topic, sodass andere ROS-Nodes darauf zugreifen können.
-
line_follower_node
:- Dieser Node empfängt die Sensordaten, die vom
pico_reader_node
bereitgestellt werden. - Basierend auf den Daten entscheidet er, wie der TurtleBot gesteuert werden soll, um der Linie zu folgen.
- Typischerweise werden folgende Bewegungslogiken implementiert:
- Beide Sensoren erkennen die Linie: Der TurtleBot bewegt sich geradeaus.
- Nur der linke Sensor erkennt die Linie: Der TurtleBot dreht nach links.
- Nur der rechte Sensor erkennt die Linie: Der TurtleBot dreht nach rechts.
- Kein Sensor erkennt die Linie: Der TurtleBot stoppt oder sucht nach der Linie.
- Dieser Node empfängt die Sensordaten, die vom
ROS-Integration
- Die Sensordaten werden als ROS-Topics veröffentlicht, was eine modulare und flexible Architektur ermöglicht.
- Der
line_follower_node
nutzt diese Topics, um Echtzeit-Befehle an die Bewegungssteuerung des TurtleBots zu senden.
Vorteile dieses Setups
-
Modularität:
- Durch die Verwendung von ROS können die Nodes unabhängig voneinander entwickelt, getestet und erweitert werden.
-
Effiziente Verarbeitung:
- Die Auslagerung der Sensordatenverarbeitung auf den Raspberry Pi Pico entlastet den Hauptrechner des TurtleBots.
-
Einfache Erweiterbarkeit:
- Zusätzliche Funktionen wie Hinderniserkennung oder erweiterte Navigationslogik können durch weitere Nodes hinzugefügt werden.
Dieses Szenario stellt eine einfache und dennoch robuste Lösung für die Linienverfolgung dar und zeigt, wie eine durchdachte Hardware- und Softwareintegration die Autonomie mobiler Roboter verbessern kann.
Erstellen des Workspaces und Pakets
- Die beiden Pakete
line_follower_pkg
undpico_reader_pkg
finden sich hier. - Diese in den
src
-Ordner des eigenen Workspaces kopieren - Anschließen bauen und sourcen
Ausführen
- In einem Fenster mit
ros2 run pico_reader_pkg pico_reader_node
die Sensoren auslesen - In einem anderen Fenster mit
ros2 run line_follower_pkg line_follower_node
die Navigation starten
Einer Linie folgen mit dem Turtlebot und zwei Liniensensoren