This repository contains the robot description and necessary launch files to describe and simulate the BlueROV2 (unmanned underwater vehicle) with Gazebo and its hydrodynamics plugins under ROS 2.
- Xacro , installable through
apt install ros-${ROS_DISTRO}-xacro
- simple_launch, installable through
apt install ros-${ROS_DISTRO}-simple-launch
- ROS 2 with Gazebo Fortress or newer with
ros_gz_bridge
- Look out for your ROS 2 / Gazebo versions combination
- pose_to_tf, to get the ground truth from Gazebo if needed.
- slider_publisher, installable through
apt install ros-${ROS_DISTRO}-slider-publisher
- auv_control for basic control laws, from source
Clone the package and its dependencies (if from source) in your ROS 2 workspace src
and compile with colcon
To run a demonstration with the vehicle, you can run a Gazebo scenario, such as an empty world with buoyancy and sensors setup:
ros2 launch bluerov2_description world_launch.py
and then spawn the robot with a GUI to control the thrusters:
ros2 launch bluerov2_description upload_bluerov2_launch.py sliders:=true
Gazebo will:
- Subscribe to
/bluerov2/cmd_thruster[1..6]
and expectstd_msgs/Float64
messages, being the thrust in Newton - Publish sensor data to various topics (image, mpu+lsm for IMU, cloud for the sonar, odom)
- Publish the ground truth on
/bluerov2/pose_gt
. This pose is forwarded to/tf
ifpose_to_tf
is used.
Basic control is available in the auv_control package
In this case spawn the robot without manual sliders and run e.g. a cascaded PID controller:
ros2 launch bluerov2_description upload_bluerov2_launch.py
ros2 launch bluerov2_control cascaded_pids_launch.py sliders:=true
BlueROV2 package is open-sourced under the Apache-2.0 license. See the LICENSE file for details.