Skip to content

FechL/sauvc26-world

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SAUVC 2026 World Simulation in Gazebo Harmonic

Simulating the Singapore AUV Challenge 2026 competition environment using Gazebo Sim 8 (Harmonic).

Using a model of the BlueROV2, including support for both the base and heavy configurations. It uses the BuoyancyPlugin, HydrodynamicsPlugin and ThrusterPlugin.

bluerov2_gz

Arena Spesfications

  • Pool: 25m × 16m × 1.6m deep
  • Water simulation: Buoyancy, underwater fog effects, and lighting
  • World: Qualification Pool and Final Pool

Models

  • Starting Zone
  • Gates: qualification gate and final gate
  • Drums: blue, red, and pinger (pinger still in development)
  • Flares: orange, yellow, red, blue
  • BlueROV2: bluerov2, bluerov2_heavy, bluerov2_ping (heavy and ping still in development)
  • Ball (still in development)
  • Golf Ball (still in development)

Requirements

Ensure the requirements below are completed before you install the project:

Setup

Install/Clone all these requirements. Ensure ArduSub is already built.

Clone this repository to your colcon workspace.

Add env to .bashrc or .zshrc:

export GZ_SIM_RESOURCE_PATH=~/<your-colcon-workspace>/src/bluerov2_gz/models:~/ros2_ws/src/bluerov2_gz/worlds
export GZ_SIM_SYSTEM_PLUGIN_PATH=~/ardupilot_gazebo/build

Then, source .bashrc or .zshrc.

Running Gazebo

Gazebo can be run with the commands below:

gz sim -v 3 -r <gazebo-world-file>

where <gazebo-world-file> should be replaced with:

  • sauvc_qualification.world for the qualification arena.
  • sauvc_final.world for the final arena.

Now launch ArduSub and ardupilot_gazebo:

cd ~/ardupilot
Tools/autotest/sim_vehicle.py -L RATBeach -v ArduSub -f vectored --model=JSON --out=udp:0.0.0.0:14550 --console

Use MAVProxy to send commands to ArduSub:

arm throttle
mode alt_hold
rc 5 1550
disarm

Camera

For access camera topic:

gz topic -e -t /front_camera

It will echo the camera’s image stream. If you want to view the camera directly in Gazebo, simply search for “Image Display” in the top bar of Gazebo.

For ROS 2 applications, you need to add a bridge between Gazebo and ROS 2.

Nevertheless, for ROS2 Humble, ros_gz_bridge does not function properly in the Harmonic version due to a known issue. Therefore, you should remove the source build of ros_gz and reinstall it using the ros-humble-ros-gzharmonic package.

cd ~/<your-colcon-workspace>
rm -rf src/ros_gz
rm -rf build/ros_gz*
rm -rf install/ros_gz*

sudo apt-get update
sudo apt-get install ros-humble-ros-gzharmonic

source /opt/ros/humble/setup.bash

Run ROS camera bridge:

ros2 run ros_gz_bridge parameter_bridge '/front_camera@sensor_msgs/msg/Image@ignition.msgs.Image'

Now you can view the image topic using rqt or RViz2:

ros2 run rqt_image_view rqt_image_view /front_camera
# or
rviz2

To change camera resolution, edit values at bluerov2/model.sdf in line 455-456.

MAVROS

Launch MAVROS with the ArduSub connection:

ros2 launch mavros apm.launch fcu_url:=udp://:14550@localhost:14555

Throubleshoot

  • If the robot is teleporting, clean the gazebo cache and restart.
    ./scripts/clean_gazebo_cache.sh

Credits

About

Simulating the SAUVC 2026 competition environment using Gazebo.

Topics

Resources

Stars

Watchers

Forks

Contributors