Open-source robot simulator for modeling, programming and simulating robots, vehicles and mechanical systems.
patrykcieslak/stonefish
A C++ simulation library combining a physics engine and rendering pipeline, built for marine robotics and underwater environments.
- Stars
- 332
- Forks
- 79
- Open issues
- 21
- Last commit
- 2 days ago
What is it?
Stonefish is a C++ simulation library that pairs a physics engine, derived from the core of Bullet Physics and extended for marine robots, with a lightweight rendering pipeline. It targets researchers in marine robotics and can also serve as a general-purpose robot simulator.
Hydrodynamic forces are computed from the actual geometry of bodies rather than from symbolic approximations. The renderer covers atmosphere, ocean and underwater scenes, with wavelength-dependent light absorption and scattering underwater instead of a simple blue fog.
Stonefish can be used to build standalone applications or combined with the stonefish_ros package to integrate with ROS. It runs on Linux and needs OpenGL 4.3 support; Windows and macOS are not supported.
Key features
- 01Physics engine extended from Bullet Physics for marine robot dynamics.
- 02Hydrodynamic forces computed from the actual geometry of bodies.
- 03Rendering of atmosphere, ocean surface and underwater scenes.
- 04Wavelength-dependent light absorption and scattering underwater.
- 05Optional ROS integration through a separate stonefish_ros package.
Use cases
- Testing control and navigation algorithms for AUVs and ROVs before field trials.
- Simulating sonar and underwater sensors for perception research.
- Generating synthetic underwater scenes for machine learning experiments.
- Running general robot simulations with a ROS-based workflow.
Quick start
- 1
Install dependencies: GLM, SDL2 and FreeType
- 2
Clone the repository
- 3
Configure and build with CMake
cmake .. && make -jX - 4
Install the library system-wide
sudo make install
Things to know
- Developed and tested on Linux Ubuntu; no Windows version is available.
- macOS is not supported because it lacks OpenGL 4.3.
- Requires a recent GPU supporting OpenGL 4.3 and is CPU heavy.
- Licensed under GPL-3.0, a copyleft license.
In collections
Topics
FAQ
- What is stonefish?
- A C++ simulation library combining a physics engine and rendering pipeline, built for marine robotics and underwater environments. Stonefish is a C++ simulation library that pairs a physics engine, derived from the core of Bullet Physics and extended for marine robots, with a lightweight rendering pipeline. It targets researchers in marine robotics and can also serve as a general-purpose robot simulator.
- Is stonefish free to use? What license does it have?
- stonefish is open source under the GPL-3.0 license. Check the license terms before using it in commercial products.
- Is stonefish still maintained?
- Actively maintained. The last commit to stonefish was on Nov 5, 2026.
- What can I use stonefish for?
- Testing control and navigation algorithms for AUVs and ROVs before field trials. Simulating sonar and underwater sensors for perception research. Generating synthetic underwater scenes for machine learning experiments. Running general robot simulations with a ROS-based workflow.
- How do I install stonefish?
- Install dependencies: GLM, SDL2 and FreeType Clone the repository Configure and build with CMake: cmake .. && make -jX Install the library system-wide: sudo make install
- Where can I get stonefish?
- The source code and installation instructions are on GitHub: https://github.com/patrykcieslak/stonefish
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A simulation platform for robotics and embodied AI combining a multi-physics engine, a photo-realistic renderer, and a cross-platform compiler behind a Python interface.
A simulation environment built on Gazebo and ROS 2 for testing unmanned surface vehicles in marine scenarios, based on RobotX competition tasks.
A curated awesome-list of robotics books, courses, simulators, software libraries, conferences, journals and competitions.
A performance-focused 2D robot simulator for ROS that runs robot models in lightweight flat-world environments.
A physics-based, multi-threaded simulator for large-scale robot swarms that can run several physics engines at once.