Dies ist das erste ROS2-Robotik Projekt das wir durchfΓΌhren. Daher sind sicherlich einige Implementierungen die durchgefΓΌhrt werden nicht ROS2 optimiert, stellen aber eine funktionierende Grundlage fΓΌr weitere Arbeiten zur VerfΓΌgung
Robot-Rover Projekt basierend auf ROS2 auf einem Raspberry PI4 oder PI5. Akuell arbeiten wir getrennt mit zwei Rover die beide zwar auf ROS2 basieren aber doch unterschiedlich konfiguriert sind
| Version | Datum | Inhalt |
|---|---|---|
| 0.2 | 2025-07-31 | EinfΓΌhrung LiveCycleNodes, I2C_Node fΓΌr gekapselten I2C-Zugriff, Trennung Config files pro Node |
| 0.1 | 2025-06-22 | initialer upload, Rover fΓ€hrt grundlegene ROS2 Struktur funktioniert, ESP32 FW ok, Gamepad F710 ok, LIDAR ok |
Hardware: Raspberry PI4, 4GB RAM, SD-Card
- OS: Ubuntu 22.04
- ROS2: Humble
- LIDAR: YDLidar TMini Pro
- Antrieb: 8x Dynamixel AX12+ Servos, 4 fΓΌr Antrieb, 4 fΓΌr Lenkung (Allradlenkung) Steuerung:** Gampad Logitech F710
- Autonom: in Arbeit
- Kamera: in Arbeit
- Hardware: Raspberry PI5, 8GB RAM, SSD
- OS: Ubuntu 24.04
- ROS2: Jazzy
- LIDAR: YDLidar TMini Pro
- Antrieb: 8x Dynamixel AX12+ Servos, 4 fΓΌr Antrieb, 4 fΓΌr Lenkung (Allradlenkung)
- Steuerung: Gampad Logitech F710
- Autonom: in Arbeit
- Kamera: in Arbeit
Ziel des Projektes ist ein autonomer Rover Roboter zu bauen, basierend auf ROS2 und diverser Sensoren.
- Komplexere Ansteuerung der Antriebskette durch einen Allradantrieb und Allradlenkung
- ROS2 lernen und verstehen
- Auslagerung von FunktionalitΓ€t auf einen ESP32 inkl. der Erstellung der Firmware und Kommunikation mit dem PI (Host)
- Visualisierung des Rovers ΓΌber RVIZ
- LIDAR-Sensor fΓΌr die Hindernis-Erkennung
- Kamera fΓΌr Objekterkennung, Hindernis-Vermeidung
- Navigation-Planning
- SLAM
- Odometrie
- ...
ROS2 param.yaml File wird nicht richtig an die Nodes ΓΌbergeben und somit kΓΆnnen Parameter von Nodes nicht ausgelesen werden- Bei Erststart, starten direkt die AntriebsrΓ€der :-O. Fehlerursache muss in der Firmware liegen oder im driver_controller_node.py der einen unsinnigen Befehl weiterleitet
- Genereller Umgang mit Fehlern nicht oder nur ungenΓΌgend implementiert. Robustheit gegen Fehler noch nicht verfΓΌgbar
- Konfiguration der Antriebseinheiten aktuell in der ESP32-Firmware fest hinterlegt, das hat den Nachteil, das wir grundsΓ€tzlich zwischen Rover 1 und Rover 2 zwei unterschiedliche FW kompilieren mΓΌssen. Idee: Konfiguration auslagern und die Grundkonfiguration z.B. einem ESP32 SPIFF File ablegen.
Der Rover hat eine Allrad-Lenkung und wird von vier Antriebseinheiten gesteuert. Jede Antriebseinheit besteht aus zwei Dynamixel-AX12+ Servos. Ein Servo fΓΌr den Radantribe (Velocity), ein Servo fΓΌr die Lenkung des Rades (Steering). Angesteuert werden alle Servos ΓΌber ein Dynamixel-BUS-Protokol (1.0 nicht 2.0!). Die dazugehΓΆrige Firmware wurde in einen ESP32 implementiert und bietet eine I2C Schnittstelle fΓΌr die Kommunikation mit des Raspberry PI. Zur Ansteuerung von Dynamixel-Servos bedarf es einer kleinen Elektronik die exaktes Timing und Flanken fΓΌr das BUS-Protokoll bereitstellt und basiert auf eine SN74LS241 und einem LevelShifter von 3.3v auf 5v.Details siehe ESP32-Schaltplan bzw. unter doc/esp32 die dazugehΓΆrigen Dokumentationen
- login per SSH auf den PI des Rovers
- Wechsel in den Folder
ros2_ws - ROS2-Environment aktivieren :
source install/setup.bash - ROVER starten (ohne RVIZ):
ros2 launch rover rover_full.launch.py params-file:=install/rover/share/rover/config/rover.yaml lidar_model:=ydlidar use_rviz:=false - ROVER starten (mit RVIZ):
ros2 launch rover rover_full.launch.py params-file:=install/rover/share/rover/config/rover.yaml lidar_model:=ydlidar use_rviz:=true
.
βββ README.md
βββ config
βΒ Β βββ rover.yaml
βΒ Β βββ rover.yaml.old
βΒ Β βββ rviz
βΒ Β βΒ Β βββ rover.rviz
βΒ Β βββ urdf
βββ doc
βΒ Β βββ class_diagram.md
βΒ Β βββ esp32
βΒ Β βΒ Β βββ firmware_overview.md
βΒ Β βΒ Β βββ i2c_protokoll_v1.md
βΒ Β βΒ Β βββ i2c_protokoll_v2.md
βΒ Β βββ images
βΒ Β βββ komponenten_diagram.md
βΒ Β βββ odometrie_allgemein.md
βΒ Β βββ ros2_docs
βΒ Β βΒ Β βββ ros2_commands.md
βΒ Β βΒ Β βββ ros2_commands.pdf
βΒ Β βΒ Β βββ ros2_launch_example.md
βΒ Β βΒ Β βββ ros2_launch_example.pdf
βΒ Β βΒ Β βββ ros2_micro_ros_details.md
βΒ Β βΒ Β βββ ros2_micro_ros_details.pdf
βΒ Β βΒ Β βββ ros2_micro_ros_esp32.md
βΒ Β βΒ Β βββ ros2_micro_ros_esp32.pdf
βΒ Β βΒ Β βββ ros2_slam_tool.md
βΒ Β βΒ Β βββ ros2_themen_welt.md
βΒ Β βΒ Β βββ ros2_themen_welt.pdf
βΒ Β βββ ros2_launch_nachschlagewerk.md
βΒ Β βββ ros2_launch_styleguide.md
βΒ Β βββ rover_architektur.md
βΒ Β βββ rover_architektur_.md
βΒ Β βββ rover_architektur_tmp.html
βΒ Β βββ rover_full.launch.md
βΒ Β βββ rover_module_doc.md
βββ launch
βΒ Β βββ rover.launch.py
βΒ Β βββ rover_full.launch copy.py
βΒ Β βββ rover_full.launch.py
βΒ Β βββ rover_full.launch_20250501.py
βΒ Β βββ rover_param.launch.py
βΒ Β βββ rover_param2.launch.py
βββ package.xml
βββ resource
βΒ Β βββ rover
βββ scripts
βΒ Β βββ lifecycle_dashboard.py
βΒ Β βββ lifecycle_status_marker.py
βββ setup.cfg
βββ setup.py
βββ src
βΒ Β βββ esp32
βΒ Β βΒ Β βββ esp32_rover
βΒ Β βΒ Β βΒ Β βββ deprecated
βΒ Β βΒ Β βΒ Β βΒ Β βββ __main_jsonData.cpp__20250419
βΒ Β βΒ Β βΒ Β βΒ Β βββ __old_rover.h__
βΒ Β βΒ Β βΒ Β βΒ Β βββ __old_rover_utils.h__
βΒ Β βΒ Β βΒ Β βΒ Β βββ __test__main.cpp__
βΒ Β βΒ Β βΒ Β βΒ Β βββ _main_20250302_wifiversion.cpp_
βΒ Β βΒ Β βΒ Β βββ doc
βΒ Β βΒ Β βΒ Β βΒ Β βββ Document 6.md.md
βΒ Β βΒ Β βΒ Β βΒ Β βββ Rover_ESP32_Firmware_Doku.md
βΒ Β βΒ Β βΒ Β βΒ Β βββ Rover_ESP32_Firmware_rover_utils.md
βΒ Β βΒ Β βΒ Β βΒ Β βββ readme_esp32.md
βΒ Β βΒ Β βΒ Β βΒ Β βββ readme_esp32.md.sb-8cb1a911-kIORDL
βΒ Β βΒ Β βΒ Β βΒ Β βββ readme_ros2_loops.md
βΒ Β βΒ Β βΒ Β βββ esp32_rover.code-workspace
βΒ Β βΒ Β βΒ Β βββ include
βΒ Β βΒ Β βΒ Β βΒ Β βββ DynamicArray.h
βΒ Β βΒ Β βΒ Β βΒ Β βββ README
βΒ Β βΒ Β βΒ Β βΒ Β βββ i2c_helper.h
βΒ Β βΒ Β βΒ Β βΒ Β βββ led_info.h
βΒ Β βΒ Β βΒ Β βΒ Β βββ rover.h
βΒ Β βΒ Β βΒ Β βΒ Β βββ rover_utils.h
βΒ Β βΒ Β βΒ Β βββ lib
βΒ Β βΒ Β βΒ Β βΒ Β βββ README
βΒ Β βΒ Β βΒ Β βββ platformio.ini
βΒ Β βΒ Β βΒ Β βββ src
βΒ Β βΒ Β βΒ Β βΒ Β βββ main.cpp
βΒ Β βΒ Β βΒ Β βββ test
βΒ Β βΒ Β βΒ Β βββ README
βΒ Β βΒ Β βββ esp32_rover.zip
βΒ Β βββ rover
βΒ Β βββ __depr_drive_controller_node.py__
βΒ Β βββ __init__.py
βΒ Β βββ __pycache__
βΒ Β βΒ Β βββ __init__.cpython-312.pyc
βΒ Β βΒ Β βββ drive_controller_node.cpython-312.pyc
βΒ Β βΒ Β βββ driver_controller_node.cpython-312.pyc
βΒ Β βΒ Β βββ led_node.cpython-312.pyc
βΒ Β βΒ Β βββ manual_control_node.cpython-312.pyc
βΒ Β βΒ Β βββ navigation_node.cpython-312.pyc
βΒ Β βΒ Β βββ odom_node.cpython-312.pyc
βΒ Β βΒ Β βββ sensor_node.cpython-312.pyc
βΒ Β βΒ Β βββ vision_node.cpython-312.pyc
βΒ Β βββ control
βΒ Β βΒ Β βββ __init__.py
βΒ Β βΒ Β βββ __pycache__
βΒ Β βΒ Β βΒ Β βββ __init__.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ led_pattern.cpython-312.pyc
βΒ Β βΒ Β βββ kinematics_model.py
βΒ Β βΒ Β βββ led_pattern.py
βΒ Β βΒ Β βββ ws2812.py
βΒ Β βββ driver_controller_node.py
βΒ Β βββ hardware
βΒ Β βΒ Β βββ __init__.py
βΒ Β βΒ Β βββ __pycache__
βΒ Β βΒ Β βΒ Β βββ __init__.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ i2c_driver.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ lidar_driver.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ rover_driver.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ servo_driver.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ steering_driver.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ velocity_driver.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ xv11_neato.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ ydlidar_tminiplus.cpython-312.pyc
βΒ Β βΒ Β βββ i2c_driver.py
βΒ Β βΒ Β βββ lidar_driver.py
βΒ Β βΒ Β βββ rover_driver.py
βΒ Β βΒ Β βββ xv11_neato.py
βΒ Β βΒ Β βββ ydlidar_tminiplus.py
βΒ Β βββ led_node.py
βΒ Β βββ navigation_node.py
βΒ Β βββ odom_node.py
βΒ Β βββ perception
βΒ Β βΒ Β βββ __init__.py
βΒ Β βΒ Β βββ image_processor.py
βΒ Β βΒ Β βββ obstacle_detector.py
βΒ Β βββ rover_config.py
βΒ Β βββ sensor_node.py
βΒ Β βββ sensors
βΒ Β βΒ Β βββ __init__.py
βΒ Β βΒ Β βββ __pycache__
βΒ Β βΒ Β βΒ Β βββ __init__.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ battery_sensor.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ lidar_sensor.cpython-312.pyc
βΒ Β βΒ Β βΒ Β βββ sensor_interface.cpython-312.pyc
βΒ Β βΒ Β βββ battery_sensor.py
βΒ Β βΒ Β βββ camera_sensor.py
βΒ Β βΒ Β βββ lidar_sensor.py
βΒ Β βΒ Β βββ sensor_interface.py
βΒ Β βΒ Β βββ ultrasound_sensor.py
βΒ Β βββ vision_node.py
βββ src_rover.code-workspace
βββ test
βββ i2c_binary_test.py
βββ i2c_check_pi5.py
βββ i2c_json_test.py
βββ i2c_simple_test.py
βββ test_copyright.py
βββ test_flake8.py
βββ test_pep257.py