How mbodjimassar03/ros2-adaptive-cruise-control works
This ROS 2 Raspberry Pi project implements an adaptive-cruise-control loop: it measures obstacle distance and motor RPM, computes a safe speed setpoint, and uses a PI controller to drive motor PWM. Separate nodes provide a manual setpoint and record telemetry. The README documents the topic-level workflow; the sampled node sources confirm the sensor, controller, and logging behaviors. The launch file starts the main runtime nodes. Relationships for unsampled node implementations are shown only where documented; the standalone motor node is not shown as part of the launched loop.
Main entry points: moteur.launch.py Runtime launcher · capteur_node.py Speed node · acc_node.py ACC node · controle_node.py PI controller
Components 13
Sensing
- Ultrasonic sensor
- Distance node
moteur_ros/distance_node.py - Rotation sensor
- Speed node
moteur_ros/capteur_node.py
ACC control
- ACC node
moteur_ros/acc_node.py - Setpoint node
moteur_ros/consigne_node.py - PI controller
moteur_ros/controle_node.py
Motor actuation
- Motor
- Standalone motor node
moteur_ros/moteur_node.py
Telemetry
- Logger node
moteur_ros/logger_node.py - ACC data file
donnees_acc.csv
Other components
- Obstacle
- Runtime launcher
launch/moteur.launch.py
Connections 19
- Obstacle → Ultrasonic sensor: reflects sound
README.md - Ultrasonic sensor → Distance node: provides echoes
moteur_ros/distance_node.py - Distance node → ACC node: publishes distance
README.md - Rotation sensor → Speed node: signals pulses
moteur_ros/capteur_node.py - Speed node → ACC node: publishes RPM
README.md - Speed node → PI controller: publishes RPM
README.md - ACC node → PI controller: publishes setpoint
README.md - Setpoint node → PI controller: publishes setpoint
moteur_ros/consigne_node.py - PI controller → Motor: applies PWM
moteur_ros/controle_node.py - Standalone motor node → Motor: applies PWM
moteur_ros/moteur_node.py - Distance node → Logger node: publishes distance
moteur_ros/logger_node.py - Speed node → Logger node: publishes RPM
moteur_ros/logger_node.py - ACC node → Logger node: publishes setpoint
moteur_ros/logger_node.py - Logger node → ACC data file: writes records
moteur_ros/logger_node.py - Runtime launcher → Speed node: starts node
launch/moteur.launch.py - Runtime launcher → PI controller: starts node
launch/moteur.launch.py - Runtime launcher → Distance node: starts node
launch/moteur.launch.py - Runtime launcher → ACC node: starts node
launch/moteur.launch.py - Runtime launcher → Logger node: starts node
launch/moteur.launch.py