<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.

Overview

A Doppler Velocity Log (DVL) sensor measures the velocity of an object relative to the seabed or other surface using the Doppler effect. It emits acoustic waves and analyzes the frequency shift of the echoes returned from the surface to calculate the object's speed and direction. Commonly used in underwater navigation, DVL sensors are crucial for determining the motion of submarines, remotely operated vehicles (ROVs), and autonomous underwater vehicles (AUVs).

Gazebo supplies the DVL system. POSIM DVLBridge converts its payload to dave_interfaces/msg/DVL, preserves the Gazebo frame ID, and guards shutdown after ROS context invalidation.

<aside> ℹ️

List of available DVL sensors:

  1. nortek_dvl500_300
  2. nortek_dvl500_6000
  3. nortek_dvl1000_300
  4. nortek_dvl1000_4000
  5. sonardyne_syrinx600
  6. teledyne_explorer1000
  7. teledyne_explorer4000
  8. teledyne_whn
  9. nortek_dvl500_300_with_multibeam_sonar — also requires the CUDA sonar backend; not part of the CPU-only headless acceptance set. </aside>

Example Usage

  1. Build and source the workspace:

    source /opt/ros/lyrical/setup.bash
    source ~/posim_ws/install/setup.bash
    
  2. Launching the DVL sensor:

    ros2 launch dave_demos dave_sensor.launch.py namespace:=nortek_dvl500_300 world_name:=dvl_world paused:=false z:=-30 gui:=false headless:=true
    

<aside> ⚠️

Important launch arguments:

Argument Name Description Default Value
namespace Name of the sensor (select from the available-sensor list above) “”
world_name Gazebo world file to launch (use dvl_world to test the DVL functionality) empty.sdf
paused Start the simulation paused true
debug Enables verbose mode for Gazebo simulation false
verbosity_level Gazebo verbosity level used when debug:=true 1
x Initial x position [m] 0.0
y Initial y position [m] 0.0
z Initial z position [m] 0.0
roll Initial roll angle [rad] 0.0
pitch Initial pitch angle [rad] 0.0
yaw Initial yaw angle [rad] 0.0
</aside>
  1. Open another terminal and check for available gazebo topics:

    gz topic -l
    

    It should produce an output similar to:

    Screenshot 2024-08-18 at 3.33.19 PM.png

  2. Open another terminal, source the workspace and check for available ROS 2 topics:

    source /opt/ros/lyrical/setup.bash
    source ~/posim_ws/install/setup.bash
    ros2 topic list
    

    It should produce an output similar to:

    Screenshot 2024-08-18 at 3.27.28 PM.png

  3. To echo the dvl topic:

    ros2 topic echo /dvl/velocity
    

    The output of the above command should look like:

    dvl_output.gif

  4. You can also visualize the acoustic beams of the DVL in the simulator as shown in the following picture:

    Screenshot 2024-08-18 at 3.31.42 PM.png