patrykcieslak/stonefish

Stonefish - an advanced C++ simulation library designed for (but not limited to) marine robotics.

Stonefish – Marine‑Robotics Simulation Library

What it is – Stonefish is an open‑source C++ library that couples a physics engine (built on Bullet) with a custom rendering pipeline to simulate marine robots. It focuses on realistic hydrodynamics (using the actual geometry of bodies) and visually accurate underwater scenes (wavelength‑dependent light absorption and scattering).

Key capabilities

  • Physics: Bullet‑based dynamics extended for water‑borne vehicles, with advanced hydrodynamic force calculations.
  • Graphics: Real‑time OpenGL 4.3 rendering of atmosphere, ocean surface and underwater environments.
  • ROS integration: A companion ROS package (stonefish_ros) provides a simulator node so the library can be used inside the ROS ecosystem.
  • Documentation: API reference via Doxygen and user guides generated with Sphinx (online at readthedocs.io).

Typical users – Researchers and developers working on autonomous underwater vehicles (AUVs), remotely operated vehicles (ROVs), or any robot that operates in marine environments and needs high‑fidelity simulation for control, planning, or machine‑learning experiments.

How to get started

  1. Install the required system libraries: OpenGL Mathematics (GLM), SDL2, and FreeType.
  2. Clone the repo, create a build directory, run cmake .. and make.
  3. Install with sudo make install.
  4. Build documentation with Doxygen if you need the code‑level API.
  5. For ROS‑based projects, pull the separate stonefish_ros repository and follow its integration steps.

Platform notes – Developed on Ubuntu Linux; requires a GPU that supports OpenGL 4.3. No Windows or macOS builds are provided.

License – GPL‑3.0, so you can use, modify, and redistribute the code under the same license.

Why it matters – Simulating underwater physics accurately is notoriously hard. Stonefish’s geometry‑based hydrodynamics and realistic visual rendering give researchers a more faithful test‑bed than generic robot simulators, which helps accelerate development of control algorithms and machine‑learning models for marine robotics.

Related

  • Project
  • Project
  • Project
  • Project