We assume the ROS workspace is ~/workspaces/bluerov_ws. Change the paths accordingly if needed.
Clone the repositories:
cd ~/workspaces/bluerov_ws/src vcs import --recursive < examples/bluerov_ws.repos
Note:
ml_modelsis hosted on Hugging Face. Install Git LFS before importing.
Build the minimal sim image first:
cd ~/workspaces/bluerov_ws/src/ardusub_sim ./build.bash
Build the examples image with perception and mission-tree dependencies:
cd ~/workspaces/bluerov_ws/src/examples ./build.bash
Install Rocker, then run:
cd ~/workspaces/bluerov_ws/src/examples ./run.bash bluerov_ws:humble
docker run --rm -it \ --gpus all \ --device=/dev/dxg \ --network=host \ --ipc=host \ -e DISPLAY="$DISPLAY" \ -e WAYLAND_DISPLAY="$WAYLAND_DISPLAY" \ -e XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" \ -e PULSE_SERVER="$PULSE_SERVER" \ -e NVIDIA_DRIVER_CAPABILITIES=all \ -e MESA_D3D12_DEFAULT_ADAPTER_NAME=NVIDIA \ -e LD_LIBRARY_PATH=/usr/lib/wsl/lib \ -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ -v /mnt/wslg:/mnt/wslg \ -v /usr/lib/wsl:/usr/lib/wsl:ro \ -v ~/workspaces/bluerov_ws:/root/HOST/bluerov_ws \ bluerov_ws:humble
The WSL command exposes WSLg's X11/Wayland sockets and the /dev/dxg virtual
GPU device, allowing Gazebo to use hardware-accelerated rendering.
Inside the container, before launching Gazebo:
glxinfo -B | grep -E "OpenGL vendor|OpenGL renderer"
On native Linux, the renderer should identify the NVIDIA GPU. Under WSLg, it
should mention D3D12 and the GPU. It should not report llvmpipe, which is
software rendering.
Inside the container:
cd /root/HOST/bluerov_ws source /opt/ros/humble/setup.bash colcon build --symlink-install \ --packages-up-to bluerov_tasks bluerov_sim bb_worlds source install/setup.bash
The square mission is a control smoke test:
- Arm and enter
GUIDED. - Move 2 m forward.
- Move 2 m left.
- Move 2 m backward.
- Move 2 m right.
Inside the container:
cd /root/HOST/bluerov_ws
tmuxp load src/examples/bluerov_mission.yamlbin_demo.mp4
tmuxp load src/examples/bluerov_bin_mission.yaml
torpedo_demo.mp4
tmuxp load src/examples/bluerov_torpedo_mission.yaml
Prebuilt Foxglove layouts for the Bin and Torpedo missions are available at BumblebeeAS/controlkitv3. Import them into Foxglove Studio for a ready-made view of the relevant topics, making it easier to visualize and debug each mission.
ros2 topic echo /bluerov/odom --once ros2 topic echo /mavros/state --once ros2 topic echo /mavros/local_position/pose --once ros2 topic echo /bluerov/controls/_action/feedback --once ros2 service call /mavros/cmd/arming mavros_msgs/srv/CommandBool "{value: true}" ros2 service call /mavros/set_mode mavros_msgs/srv/SetMode "{custom_mode: 'GUIDED'}"