This repository contains four submodules, each contributing to the integration of a BlueROV with a ROS2-based system via MAVLink. Together, they enable bidirectional communication of depth, odometry, and sensor data between the ROV and onboard or topside processing units.
Created by Aaron Marburg.
Provides minimal working examples of establishing a MAVLink connection with the BlueROV using pymavlink.
Features:
- Connects to a non-standard MAVLink endpoint (
tcpin:192.168.2.2:6777) - Includes two sample scripts:
query_mavlink: displays all incoming HEARTBEAT messagessend_mavlink: sends a custom HEARTBEAT withmavlink_version = 99
Setup:
- Log into the BlueROV's web interface.
- Enable Pirate Mode
- Navigate to MAVLink Endpoints and manually add a new endpoint with:
Type: TCP Server IP: 192.168.2.2 Port: 6777
It’s also recommended to switch the "MAVP2P" option on the same page for improved compatibility.
Install:
pip install .Reads depth data from the BlueROV over MAVLink using VFR_HUD.alt and republishes it to a ROS2 topic /alt_from_rov.
Command:
python3 depth_reader.py --mavlink-url tcp:192.168.2.2:6777Reads depth data from a ROS2 topic /depth and sends it to the BlueROV via MAVLink as a DISTANCE_SENSOR message.
Command:
python3 depth_to_mavlink.py --mavlink-url tcp:192.168.2.2:6777Full-featured bridge between ROS2 topics and MAVLink telemetry. It sends:
VISION_POSITION_DELTADISTANCE_SENSORVFR_HUD
It also reads GLOBAL_POSITION_INT from MAVLink and republishes ROV depth to ROS2.
Command:
python3 ros2_mavlink_bridge.py --mavlink-url tcp:192.168.2.2:6777- Start
query_mavlinkfromaaronmavlinkto monitor raw MAVLink traffic. - Run one of the other scripts to generate and verify MAVLink messages.
- Use
ros2 topic echoto monitor ROS2 telemetry output. - Launch QGroundControl and confirm visibility of distance/odometry values.
Make sure all Python modules are installed per submodule. All packages support:
pip install .Also ensure your ROS2 environment is sourced:
source /opt/ros/<distro>/setup.bashTo view DISTANCE_SENSOR messages in QGroundControl, additional setup or tuning may be required on the ArduSub side. See internal project documentation or consult the BlueRobotics forums.