Skip to content
Snippets Groups Projects
Select Git revision
  • 96bdec88cf03479e50d03b9a89b95d659f8cd07d
  • main default protected
2 results

Navigation.md

Blame
  • user avatar
    Sebastian Matz authored
    96bdec88
    History
    1. Einführung & Infos
    2. Inbetriebnahme Turtlebot 4
    3. ROS Basics
    4. Sensoren
    5. Navigation

    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
    1. 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.
    2. 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.
    3. 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:

    1. 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.
    2. 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.
    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
    1. Modularität:
      • Durch die Verwendung von ROS können die Nodes unabhängig voneinander entwickelt, getestet und erweitert werden.
    2. Effiziente Verarbeitung:
      • Die Auslagerung der Sensordatenverarbeitung auf den Raspberry Pi Pico entlastet den Hauptrechner des TurtleBots.
    3. 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 und pico_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

    Einer Linie folgen mit fünf Liniensensoren