Changelog¶
The changelog of the library code is presented below. Breaking changes were marked with italics.
1.4¶
Rewritten computation of hydrodynamic drag
Fixed loading SRGB and linear textures (fixes normal map issues)
Simple thruster is now a new actuator class and displays a rotating propeller
Fixed buoyancy force calculation for flat ocean (floating bodies are not rotating or moving anymore!)
Implemented new trajectory generator for animated bodies utilising B-splines (now default)
Fixed IMU readings, adding the missing gravitational and centrifugal accelerations
Extended glue to support joining links of two robots together
Added a watchdog timer to the actuators, including parser support
Added access to the viscous and quadratic hydrodynamic drag coefficients, including parser support
Added an option to set internal parts of a compound body as always visible
Added access to the computed wetted surface area and submerged volume
Added maximum angular rate of change of the rudder actuator angle, to represent the actuator’s dynamics
Fixed getting robot transform
Fixed acoustic modem implementation eliminating problem with modems not seeing each other
Fixed Stonefish logo and icon
1.3¶
Restructured the SimulationApp class and its children to support the new ROS2 interface
Reimplemented Robot definition to allow for two different algorithms: the Featherstone’s algorithm and a general constraint solving algorithm; the general algorithm allows for kinematic loops in the robot structure
Added origin definition to standard obstacle solids to enable local transformations
Updated definition of accelerometer, gyroscope and IMU sensors, including parser support
Extended DVL model, with water layer velocity measurement and new noise models, including parser support
Added easy access to the parameters of the constraint solver, including parser support
Implemented an INS combining internal gyroscopes and accelerometers with external sensors like DVL and GPS, including parser support
Implemented methods which enable live updates of sensor and actuator frames
Implemented magnetic interaction between materials to enable simulation of permanent magnets
Implemented parsing of mathematical expressions in scenario files
Improved support for console simulations
Improved support for non-realitime simulations
Separated underwater and above water rendering paths
Eliminated precomputation of atmospheric scattering (loaded from resources)
Improved ocean reflections
Reimplemented XML parser logging mechanism
Significantly improved XML parser error and warning messages (easier location of errors)
Extended implementation of velocity fields to facilitate online updates
Added optional functionality to embed internal resources in the library binary
Fixed spline interpolation of trajectories with subsequent overlapping points
Fixed measurement of accelerations
Fixed unstable multibody joint position control
Fixed computation of moments of inertia
Fixed trackball implementation - better zoom and translation of the main 3D view
Fixed mouse issues in the main 3D view
1.2¶
Animated bodies - bodies moving according to a predefined trajectory
Trajectory generators for animated bodies (piece-wise linear and spline interpolation)
Sensors can now be attached to all kinds of bodies, as well as the world frame
New implementation of the 3-axis gyroscope, with a measurement bias
IMU implementation extended with yaw angle drift and per channel characteristics
Noise definition for sonars and the depth camera
Sonar output reduced to 8 bit, to better reflect real sensors
Lights can now be easily attached to any kind of body, as well as the world frame
New XML syntax for defining lights
Communication devices can now be attached to all kinds of bodies, as well as the world frame
Fixed beam occlusion testing for acoustic comms and introduced option to disable it
New implementation of the USBL, including measurement resolution
Looks are now parsed from the included files
“Shift” key can be used to move the main window camera faster
Display of keymap in the GUI (press ‘K’)
Sun light shadows on ocean surface
Screen-space reflections quality settings
Fixed reflections on ocean surface
Fixed horizon rendering problems
Fixed particle motion
Fixed cascaded shadow mapping
Fixed depth camera minimum range
1.1¶
Removed external dependence on the Bullet Physics Library and included necessary parts in the source tree
Updated the mathematical models of the thruster and the propeller actuators
Optimised computation of the geometry-based hydrodynamics/aerodynamics
Implemented new visualisation of underwater currents (water velocity field)
Fixed crashes when trying to create marine actuators in a simulation without ocean
1.0¶
Fully GPU-based simulation of mechanical scanning imaging sonar (MSIS)
Improvements in all sonar simulations
Significant improvement to DVL performance when heightfield terrain is used
Heightfield terrain now supports 16 bit heightmaps
New syntax for loading ocean and atmosphere definitons using the XML parser
Support for arguments passed to the included files
New, complete, beautiful documentation generated with Sphinx
0.9¶
Moved to the OpenGL 4.3 functionality (compute shaders)
Complete rewrite of the ocean/underwater rendering pipeline
Light absorption and scattering in water based on Jerlov measurements
Full support of photo-reallistic sky and sunlight as well as point and spot lights
New, linear tree based, automatic LOD algorithm
New automatic exposure (histogram based) and anti-aliasing (FXAA) algorithms
Logarythmic depth buffer for planet scale rendering without precision issues
Fully GPU-based simulation of forward-looking sonar (FLS)
Fully GPU-based simulation of side-scan sonnar (SSS)
Normal mapping to enable high resolution surface details
Faster download of data from the GPU memory
Scheduling of the rendering of multiple views
Reallistic measurement of the drawing time
Interactive selection outline in 3D view
OpenGL function handlers provided through GLAD (dropped outdated GLEW)
General cleaning of code and refactoring
Dozens of bug fixes
Origins¶
This project started when I was writing my PhD thesis and needed a realtime simulator for a balancing mono-wheel robot. The simulator not only had to be fast but also deliver high fidelity results. After investigating commercial solutions I have reached the conculsion that I need to implement my own tool becasue simulation times were prohibitively long and no direct interaction with the robot was possible. I decided to use Bullet Physics library and build a simulator capable of computing multi-body dynamics with an analytic tyre-ground collision model, in realitime. Thanks to this simulator I was able to implement my whole control system in a virtual environment and simulate the robot in an interactive way, which allowed me to finish my PhD thesis.
During my PhD studies I had a brief adventure with underwater robotics and after I finished my PhD I started working in this field. Being mostly interested in control design, I have realised that a modern simulator for underwater robots is missing. That is how I started exteding Stonefish with marine robotics features and regularily using it in my research. I saw that this work can be of benefit for the whole marine robotics community and decided to release it as open-source software.