This repository provides a ROS 2 driver for the Norbit WBMS multibeam sonar, which communicates with the driver via TCP connections. It allows for real-time configuration, control, data acquisition and visualization from the sonar, and includes supports for bathymetry, water column and snippet data. The repository contains two ROS 2 packages:
norbit_wbms_driver
: A Python package that implements the sonar drivers, data parsers and visualizers.sonar_interfaces
: A C++ package containing custom ROS 2 message definitions used across the sonar system.
Contains the main ROS 2 nodes for interfacing with the sonar over TCP. Each node is responsible for one type of communication or processing task. The settings driver and parsers each connect to the sonar using a different TCP port.
Node | Role | Port | Status |
---|---|---|---|
wbms_driver |
Sonar configuration | 2209 | ✅ Implemented |
bathymetry_parser |
Bathymetric data stream | 2210 | ✅ Implemented |
watercolumn_parser |
Water column data stream | 2211 | ✅ Implemented |
snippet_parser |
Snippet data stream | 2212 | ⏳ Planned |
bathymetry_visualizer |
Bathymetry visualization | — | 🛠 In Progress |
watercolumn_visualizer |
Water column data visualization | — | 🛠 In Progress |
snippet_visualizer |
Snippet data visualization | — | ⏳ Planned |
Contains custom ROS2 messages definitions for the different sonar data streams.
Message | Status | Comments |
---|---|---|
BathymetryBeam | ✅ Implemented | One single beam of a Bathymetry message |
Bathymetry | ✅ Implemented | |
WaterColumn | ✅ Implemented | |
Snippet | ⏳ Planned | |
Topics | ⏳ Planned | Topic names (constants) for the driver |
This driver has been tested with the following environment:
- ROS 2 Humble
- Ubuntu 22.04 LTS
- Python 3.10.12
Clone the repository into your ROS 2 workspace and build:
cd ~/ros2_ws/src
git clone https://github.com/smarc-project/norbit_wbms_driver.git
colcon build && source install/setup.bash
The available parameters, meanings and default settings can be found at driver_node/config/wbms_default.yaml
.
- Start the sonar configuration node with default parameters:
ros2 run norbit_wbms_driver wbms_driver --ros-args \
--params-file ros2_ws/src/norbit_wbms_driver/driver_node/config/wbms_default.yaml
- Change individual parameters via command line:
# ros2 param set wbms_driver [param-name] [param-value]
# e.g. use set_mode parameter to change the sonar mode to 0 (forward)
ros2 param set wbms_driver set_mode 0
- Load a new parameter file via command line:
ros2 param load wbms_driver config/wbms_default.yaml
There are three possible data streams from the Norbit WBMS sonar: bathymetry, water column and snippet.
- Parse data stream:
# ros2 run norbit_wbms_driver [stream]_parser
# e.g. run bathymetry parser
ros2 run norbit_wbms_driver bathymetry_parser
- Real-time visualization:
ros2 run norbit_wbms_driver [stream]_visualizer
# e.g. run bathymetry visualizer
ros2 run norbit_wbms_driver bathymetry_visualizer