How agirsailing/sailing_ros works
Agir’s ROS 2 workspace acquires sailboat sensor data, processes it into higher-level measurements, and exposes telemetry and rosbag recording control. The principal flow is hardware acquisition → ROS sensor topics → processing nodes → telemetry/MQTT; operators can also request recording through MQTT, which the command gateway forwards to the rosbag manager. Live and replay launch modes compose the runtime. The README documents the broader capabilities, but several node implementations and topic configurations were not sampled, so uncertain per-topic wiring is left abstract.
Main entry points: rosbag_manager_node.py Rosbag manager · mqtt_client.py MQTT transport · live_system.launch.py Live / replay launcher · command_gateway_node.py Recording command gateway
Components 22
Runtime orchestration
- Live / replay launcher
ros2_ws/src/orchestrator/launch/live_system.launch.py - Sensor launch
ros2_ws/src/sensors/launch/sensors_launch.py - Processing launch
ros2_ws/src/data_elaboration/launch/data_elaboration_launch.py - Messages and services
ros2_ws/src/sail_msgs/CMakeLists.txt
Sensor acquisition
- GPS acquisition
ros2_ws/src/sensors/sensors/gps_node.py - Ultrasonic acquisition
ros2_ws/src/sensors/sensors/ultrasonic_node.py - I2C sensors
ros2_ws/src/sensors/sensors/i2c_sensors_node.py - Battery sensing
ros2_ws/src/sensors/sensors/battery_node.py
Data processing
- IMU attitude
ros2_ws/src/data_elaboration/data_elaboration/imu_node.py - Heading processing
ros2_ws/src/data_elaboration/data_elaboration/heading_node.py - Height / ultrasonic
ros2_ws/src/data_elaboration/data_elaboration/ultrasonic_filter_node.py - Battery monitoring
ros2_ws/src/data_elaboration/data_elaboration/battery_monitor_node.py
Web communication
- Telemetry gateway
ros2_ws/src/communication_web/communication_web/telemetry_gateway_node.py - MQTT transport
ros2_ws/src/communication_web/communication_web/gateway/mqtt_client.py - Recording command gateway
ros2_ws/src/communication_web/communication_web/command_gateway_node.py - Recording RPC
ros2_ws/src/communication_web/communication_web/gateway/recording_rpc.py
Rosbag recording
- Rosbag manager
ros2_ws/src/rosbag_manager/rosbag_manager/rosbag_manager_node.py - MCAP recordings
Other components
- Operator / GUI
- Boat hardware
- ROS 2 topics
- MQTT broker
Connections 30
- Operator / GUI → Live / replay launcher: selects mode
- Live / replay launcher → Sensor launch: starts acquisition
- Live / replay launcher → Processing launch: starts processing
- Boat hardware → GPS acquisition: position signals
- Boat hardware → Ultrasonic acquisition: range signals
- Boat hardware → I2C sensors: IMU / compass
- Boat hardware → Battery sensing: battery readings
- GPS acquisition → ROS 2 topics: publishes
- Ultrasonic acquisition → ROS 2 topics: publishes
- I2C sensors → ROS 2 topics: publishes
- Battery sensing → ROS 2 topics: publishes
- ROS 2 topics → IMU attitude: sensor input
- ROS 2 topics → Heading processing: sensor input
- ROS 2 topics → Height / ultrasonic: sensor input
- ROS 2 topics → Battery monitoring: sensor input
- IMU attitude → ROS 2 topics: publishes processed data
- Heading processing → ROS 2 topics: publishes processed data
- Height / ultrasonic → ROS 2 topics: publishes processed data
- Battery monitoring → ROS 2 topics: publishes processed data
- ROS 2 topics → Telemetry gateway: telemetry input
- Telemetry gateway → MQTT transport: publishes telemetry
- MQTT transport → MQTT broker: sends MQTT
- MQTT broker → Operator / GUI: delivers telemetry
- MQTT broker → MQTT transport: record commands
- MQTT transport → Recording command gateway: dispatches messages
- Recording command gateway → Recording RPC: handles requests
- Recording RPC → Rosbag manager: calls recording services
- Rosbag manager → ROS 2 topics: records all topics
- Rosbag manager → MCAP recordings: writes MCAP
- Rosbag manager → Recording command gateway: publishes recording state