Simulation¶
Sea time is expensive and slow, so most marine robotics software is developed and tested in simulation first. This page groups simulators by the engine they use, and helps you choose one.
Choose a simulator¶
flowchart TD
START{"What do you need most?"}
START -->|"ROS 2 integration,<br/>control and autonomy"| GZ{"Vehicle?"}
GZ -->|"Surface vehicle"| VRX["VRX<br/>(Gazebo Harmonic)"]
GZ -->|"BlueROV2 / ArduSub"| BR["bluerov2_ignition +<br/>ardupilot_gazebo"]
GZ -->|"Generic UUV with<br/>sonar and DVL"| POSIM["POSIM<br/>(DAVE on Gazebo Jetty)"]
START -->|"Hydrodynamics from geometry,<br/>manipulators, sonar"| SF["Stonefish +<br/>stonefish_ros2"]
START -->|"Photo-realistic images<br/>for perception or ML"| ENG{"Engine preference?"}
ENG -->|"Unreal Engine"| HO["HoloOcean · UNav-Sim"]
ENG -->|"NVIDIA Isaac Sim"| OS["OceanSim"]
ENG -->|"Unity"| UN["MARUS 2 · SMARCUnity"]
START -->|"Learning, quick tests,<br/>low compute"| TB["TurtleBoat"]
| Need | Good options | Why |
|---|---|---|
| Surface vehicle autonomy, competitions | VRX | Waves, wind, WAM-V model, RobotX tasks, ROS 2 Jazzy |
| ArduSub software-in-the-loop | bluerov2_ignition, ardupilot_gazebo, Orca5 | Runs the real ArduSub firmware against Gazebo |
| Underwater sonar and DVL in Gazebo | POSIM (DAVE), gz-sim DVL system | Maintained sensor plugins on current Gazebo |
| Accurate hydrodynamics and manipulation | Stonefish | Computes added mass and drag from geometry; models manipulators |
| Camera and sonar images for learning | HoloOcean, OceanSim, UNav-Sim | Game-engine or RTX rendering; Python and ROS 2 bridges |
| Large multi-vehicle scenes | MARUS 2, SMaRC Unity | Unity scenes with ROS 2 adapters |
End-of-life platforms
Gazebo Classic (Gazebo 11) reached end of life in January 2025, and ROS 1 Noetic in May 2025. Simulators that need them (UUV Simulator, the original DAVE, Plankton, ds_sim) still work for study, but expect no security fixes or new binaries. Use them only to reproduce earlier work.
Gazebo-based¶
Gazebo (formerly Ignition) is the default ROS simulator. Current marine work uses the systems that ship with gz-sim: Buoyancy, Hydrodynamics (Fossen-style added mass and damping), Thruster, LiftDrag, BuoyancyEngine, and the DopplerVelocityLog sensor. Gazebo has no built-in wave system; VRX and asv_wave_sim add waves.
| Project | What it does | ROS | Vehicles | Activity |
|---|---|---|---|---|
| VRX Open Robotics / RoboNation |
Virtual RobotX surface vehicle simulation (WAM-V, waves, wind, competition tasks). The default branch runs Gazebo Harmonic with ROS 2 Jazzy; the humble branch keeps Gazebo Garden with ROS 2 Humble. | ROS 2 | USV | Active Jan 2026 |
| POSIM (DAVE for ROS 2) IOES Lab and DAVE contributors |
The ROS 2 and Gazebo Sim migration of the DAVE underwater simulator, now named POSIM. Targets ROS 2 Lyrical on Ubuntu 26.04 and Gazebo Jetty, with Docker images. The earlier port is on the ros2 branch of IOES-Lab/dave. | ROS 2 | AUV ROV | Active Oct 2026 |
| gz-sim maritime systems Open Robotics |
Gazebo Sim ships the Buoyancy, Hydrodynamics, Thruster, LiftDrag, BuoyancyEngine, and DopplerVelocityLog systems that most current marine Gazebo projects use. There is no built-in wave system. Connect to ROS 2 through ros_gz. | ROS 2 Non-ROS | Any | Active Oct 2026 |
| ros_gz Open Robotics |
Bridge and launch integration between ROS 2 and Gazebo Sim. | ROS 2 | Any | Active Oct 2026 |
| ardupilot_gazebo ArduPilot project |
Gazebo plugin that connects ArduPilot software-in-the-loop (for example ArduSub) to Gazebo Sim. Used by Orca4, Orca5, bluerov2_ignition, and SUAVE. | ROS 2 Non-ROS | ROV USV | Active Apr 2026 |
| bluerov2_ignition Clyde McQueen |
BlueROV2 base and heavy models for Gazebo Harmonic that use the standard buoyancy, hydrodynamics, and thruster systems. Proof-of-concept status per the README. | Non-ROS | ROV | Active Oct 2026 |
| asv_wave_sim Rhys Mainwaring |
Gazebo plugins for ocean wave fields and wave forces on surface vessels. | Non-ROS | USV | Low activity Jan 2025 |
| rs750 Rhys Mainwaring |
Racing Sparrow 750 sailboat model and wind simulation for Gazebo, with ArduPilot integration. | Non-ROS | USV | Dormant Mar 2023 |
| MBARI WEC Open Robotics / MBARI |
Gazebo simulation and ROS 2 interfaces for MBARI's wave energy converter buoy, with the same API for the physical and simulated buoy. | ROS 2 | Any | Low activity Sep 2025 |
| LRAUV simulation Open Robotics / MBARI |
Gazebo simulation of MBARI's Tethys-class Long-Range AUV that can run the real LRAUV controller binaries. Archived in 2025; its general-purpose plugins are upstreamed to gz-sim. | Non-ROS | AUV | Archived Mar 2025 |
| MBZIRC simulator Open Robotics |
Simulation environment for the MBZIRC Maritime Grand Challenge (USV with UAVs) on Ignition Fortress and ROS 2 Galactic, both end of life. The challenge ended in 2024; use it for reference only. | ROS 2 | USV | Dormant Aug 2022 |
Stonefish¶
Stonefish is a C++ simulation library with its own physics (Bullet) and OpenGL renderer. It computes hydrodynamic forces from the vehicle geometry instead of hand-tuned coefficients, and models sonars, DVLs, cameras, and manipulators. The MVP framework and the Girona vehicles use it.
| Project | What it does | ROS | Vehicles | Activity |
|---|---|---|---|---|
| Stonefish Patryk Cieślak (Universitat de Girona) |
C++ library for marine robot simulation with hydrodynamics computed from geometry, plus sonar, DVL, camera, and manipulator models. Use it from ROS through stonefish_ros2. | Non-ROS | AUV ROV USV | Active Jul 2026 |
| stonefish_ros2 Patryk Cieślak (Universitat de Girona) |
ROS 2 interface and standard simulator node for Stonefish. Loads scenarios from XML files; the package version must match the Stonefish library version. | ROS 2 | AUV ROV USV | Active Dec 2025 |
Game-engine and GPU renderers¶
These simulators focus on realistic images and sonar returns for perception and machine learning. Their hydrodynamics are usually simpler than Stonefish or Gazebo.
| Project | What it does | ROS | Vehicles | Activity |
|---|---|---|---|---|
| HoloOcean BYU FRoSt Lab |
Underwater simulator on Unreal Engine 5.3 (since version 2.0) with a Python API and imaging sonar, DVL, and camera models. The engine source repository needs a GitHub account linked to Epic Games; the ROS 2 bridge is public. | ROS 2 Non-ROS | AUV ROV USV | Active Oct 2026 |
| holoocean-ros BYU FRoSt Lab |
Official ROS 2 bridge for HoloOcean, tested on Humble and Jazzy. | ROS 2 | AUV ROV USV | Active Oct 2026 |
| OceanSim University of Michigan Field Robotics Group |
GPU-accelerated underwater perception simulation (camera, sonar, and DVL models) as an NVIDIA Isaac Sim 5.0 extension. ROS 2 support is on the ROS2 branch through the Isaac Sim ROS 2 bridge. | ROS 2 | ROV AUV | Active Oct 2026 |
| UNav-Sim Aarhus University (AiR Lab) |
Underwater simulator built on Unreal Engine 5 and AirSim with ROS 1 and ROS 2 interfaces, aimed at visual navigation. | ROS 2 ROS 1 | ROV AUV | Low activity May 2025 |
| MARUS 2 University of Zagreb (LABUST) |
Marine robotics simulator in Unity 6 with a gRPC adapter to ROS 2 (marus2_ros_adapter). The original MARUS (Unity 2021.3, ROS 1 adapter) is in marus-core. | ROS 2 | USV AUV | Active Oct 2026 |
| unity-arduboat-sim Chris Dalke |
Unity simulation of an ArduRover boat for software-in-the-loop testing. | Non-ROS | USV | Dormant Oct 2023 |
Lightweight and educational¶
| Project | What it does | ROS | Vehicles | Activity |
|---|---|---|---|---|
| TurtleBoat Bart Boogmans (TU Delft) |
Lightweight vessel dynamics simulator for learning ship control. Default branch is ros2. | ROS 2 ROS 1 | USV | Low activity Jun 2024 |
Legacy¶
Keep these for reference and for reproducing published results.
| Project | What it does | ROS | Vehicles | Activity |
|---|---|---|---|---|
| DAVE (ROS 1, legacy) Field Robotics Lab (NPS) |
Original DAVE underwater simulator on ROS 1 and Gazebo Classic, both now end of life. No commits since 2023; use POSIM for new work. | ROS 1 | AUV ROV | Low activity Dec 2023 |
| UUV Simulator uuvsimulator |
Historic Gazebo Classic underwater simulator, archived in 2023. Many current tools derive from its plugins. | ROS 1 | AUV ROV | Archived Jun 2020 |
| Plankton Liquid AI |
ROS 2 Foxy port of UUV Simulator for Gazebo Classic. Both are end of life, and there are no commits since 2021. | ROS 2 | AUV ROV | Dormant Nov 2021 |
| ds_sim WHOI Deep Submergence Lab |
Gazebo plugins and utilities (DVL, sensors, environment) from the WHOI Deep Submergence Lab. A GitHub mirror is at Field-Robotics-Lab/ds_sim. | ROS 1 | AUV ROV | Active Sep 2026 |
Simulation practice¶
- Match the simulator to the question. Use a fast, simple simulator for mission logic and a high-fidelity one for perception. One simulator rarely does both well.
- Use the same interfaces as the vehicle. Publish the same topics, frames, and message types in simulation and on hardware, so that only the launch file changes.
- Calibrate against real data. Fit added mass, damping, and thruster curves from tank or field tests. Defaults from another vehicle can be wrong by a large factor.
- Add realistic sensor errors. DVL dropouts, acoustic outliers, GNSS loss at the surface, and camera turbidity cause most field failures. Clean simulated sensors hide them.
- Run simulation in CI. Headless Gazebo or Stonefish runs catch regressions before sea trials. SUAVE and POSIM publish Docker images you can reuse.
- Record your configuration. Keep world files, model parameters, and random seeds under version control.
Expect a sim-to-real gap
Controllers tuned in simulation almost always need retuning on hardware. Simulated sonar seldom models multipath and reverberation well, and wave models are simplified. Use simulation to remove software defects, not to prove field performance.
More lists¶
- best-of-robot-simulators ranks robot simulators of all kinds, including marine ones.