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

Although a Gazebo systems plugin for DVL is available, there was a need for a custom ros_gz bridge to facilitate communication between ROS and Gazebo, as no existing bridges supported the DVL message type. Therefore, we developed a custom bridge to fulfill this requirement.

<aside> ℹ️ List of available DVL sensors:

  1. nortek_dvl500_300
  2. nortek_dvl500_600
  3. nortek_dvl1000_300
  4. nortek_dvl1000_4000
  5. sonardyne_syrinx600
  6. teledyne_explorer1000
  7. teledyne_explorer4000
  8. teledyne_whn </aside>

Example Usage

  1. Build and source the workspace:

    cd ~/dave_ws
    colcon build && source 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
    

    <aside> ⚠️ Important launch arguments:

    Argument Name Description Default Value
    namespace Name of the sensor (select from the available sensors) “”
    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
    verbose Adjust level of console verbosity 0
    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>

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

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

    cd ~/dave_ws && source install/setup.bash
    ros2 topic list
    

    It should produce an output similar to:

    Screenshot 2024-08-18 at 3.27.28 PM.png

  5. To echo the dvl topic:

    ros2 topic echo /dvl/velocity
    

    The output of the above command should look like:

    dvl_output.gif

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