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:
Build and source the workspace:
cd ~/dave_ws
colcon build && source install/setup.bash
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>
Open another terminal and check for available gazebo topics:
gz topic -l
It should produce an output similar to:
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:
To echo the dvl topic:
ros2 topic echo /dvl/velocity
The output of the above command should look like:
You can also visualize the acoustic beams of the DVL in the simulator as shown in the following picture: