ROS 2 lifecycle driver for the Water Linked Sonar 3D-15, built on waterlinkedsonar. Supports ROS 2 Humble and Jazzy.
From the root of a colcon workspace:
git clone https://github.com/BumblebeeAS/waterlinked_sonar_driver.git src/waterlinked_sonar_driver
vcs import src < src/waterlinked_sonar_driver/dependencies.repos
rosdep install --from-paths src --ignore-src -y
colcon build --packages-up-to waterlinked_sonar_driverros2 launch waterlinked_sonar_driver sonar.launch.pyThe launch file configures and activates the lifecycle node. It accepts namespace and params_file arguments; the default parameter file is config/sonar.yaml.
On activation the node enables the sonar's acoustics (when acoustics_enabled is set) and starts receiving. Deactivation stops the receiver and disables the acoustics.
The node is also available as a component, waterlinked::sonar::ros::WaterlinkedSonarDriver.
| Topic | Type | Content |
|---|---|---|
~/point_cloud |
sensor_msgs/PointCloud2 |
XYZ float32; valid points only, or full height x width with NaN when organized_cloud is set |
~/range_image |
sensor_msgs/Image (32FC1) |
distance in meters per pixel; 0.0 = no data |
~/intensity_image |
sensor_msgs/Image (8UC1) |
logarithmic signal strength |
~/camera_info |
sensor_msgs/CameraInfo |
pinhole-equivalent intrinsics derived from the FOV; published when publish_camera_info is set |
~/imu |
sensor_msgs/Imu |
~100 Hz raw samples; published when imu_enabled is set |
/diagnostics |
diagnostic_msgs/DiagnosticArray |
receiver counters and sonar temperature/status |
Point clouds and images are published only while they have subscribers.
| Service | Type | Action |
|---|---|---|
~/enable_acoustics |
std_srvs/SetBool |
turn acoustic pinging on or off |
~/enable_high_frequency |
std_srvs/SetBool |
true = high-frequency, false = low-frequency |
~/set_range |
waterlinked_sonar_driver/SetRange |
set the imaging range, float64 min, max in meters |
Parameters are read-only and applied when the node is configured; change them by restarting the node. The full list, with descriptions and validation, is in src/waterlinked_sonar_driver_parameters.yaml.
colcon test runs the node against a fake sonar (test/fake_sonar.py) and checks the lifecycle transitions and published messages.
The test recording (test/data/ship_short.sonar) is taken from Water Linked's wlsonar Python client (MIT, Copyright Water Linked).
MIT. See LICENSE.