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:6777
Reads 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:6777
Full-featured bridge between ROS2 topics and MAVLink telemetry. It sends:
VISION_POSITION_DELTA
DISTANCE_SENSOR
VFR_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_mavlink
fromaaronmavlink
to monitor raw MAVLink traffic. - Run one of the other scripts to generate and verify MAVLink messages.
- Use
ros2 topic echo
to 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.bash
To 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.