<aside> ๐
POSIM โ Platform for Ocean Simulation ยท documentation checked 2026-10-01
Target: ROS 2 Lyrical / Gazebo Jetty. Current source. Compatibility names such as dave_* are intentional. Start with POSIM Installation and POSIM Quickstart & Backend Support.
Source documentation and inherited illustrations do not certify every runtime configuration. Published Docker candidates, development main, and experimental WGPU are distinct states.
</aside>
Before the examples, source ROS and the matching workspace using POSIM Native Installation or POSIM Docker Guide. Commands containing ~/posim_ws below refer to a native source workspace; in a prebuilt container use its documented $POSIM_WS/install/setup.bash instead. Existing illustrations are retained from the DAVE documentation and are not new POSIM runtime captures.
USBLis used to assist underwater navigation and positioning. It consists of one transceiver and one or multiple transponders (or beacons). Usually, the transceiver will be attached to either a stationary object or mobile central node, whereas the transponder(s) is attached to objects that are being tracked.
The tutorial below describes how to generate this demo, but for convenience the world and launch files for the demo are included for demonstration and testing purposes.
POSIM supports deterministic zero-sigma operation and callback processing while simulation is paused. The USBL systems are embedded in usbl_tutorial.world, so launch the world directly:
ros2 launch dave_demos dave_world.launch.py world_name:=usbl_tutorial headless:=true
dave_world.launch.py includes Gazebo's -r flag. Do not use dave_sensor.launch.py namespace:=usbl here: there is no dave_sensor_models/description/usbl/model.sdf, and that command logs a missing-model spawn error even though the world-embedded plugins may still publish.

In this tutorial, the box acts as transceiver, whereas the spheres act as transponders. The green sphere is the first transponder and the blue sphere is the second transponder.
To check the gazebo topics:
gz topic -l
It should return among other topics, the following:
/USBL/transceiver_manufacturer_1/global_position
/USBL/transceiver_manufacturer_2/global_position