The sbg_ros2_driver is the official ROS 2 driver for integrating SBG Systems inertial sensors (IMU, AHRS, INS/GNSS) into the ROS ecosystem.
It provides a complete interface between SBG devices and ROS nodes, publishing all navigation data in real time: IMU measurements, attitude, velocity, GNSS position, filter status, and more. Along with access to advanced features such as magnetic calibration and device configuration directly from ROS.

This documentation aims to guide users step-by-step, from installing the driver to reading your first ROS topics, configuring via YAML files, or our easy to use API interface,  launching calibration routines, and integrating SBG data into a broader robotic architecture.

Installation

Standard ROS2 installation

  • Humble

sudo apt-get install ros-humble-sbg-driver 


  • Galactic

 sudo apt-get install ros-galactic-sbg-driver


  • Foxy
sudo apt-get install ros-foxy-sbg-driver

Building from source

Dependencies

Building

  1. Clone the repository (use a Release version)
  2. Build using the ROS2 colcon build system
cd colcon_ws/src
git clone https://github.com/SBG-Systems/sbg_ros2_driver.git
cd sbg_ros2_driver
rosdep update
rosdep install --from-path .
cd ../..
colcon build
source install/setup.bash

INS configuration

The configuration of SBG INS units can be done through a YAML file. There is a file specific for UART connection devices sbg_device_uart_default.yaml and another one for udp communication sbg_device_udp_default.yaml, that will concern High Perfomance INS. Config file examples are also available in the driver, to simplify the configuration of Ellipse units.

Another way of configuring the unit would be by using the API command-line interface, by simply providing a JSON file:

sbgEComApi -s /dev/ttyUSB0 -r 921600 /api/v1/settings -p -B config.json 

Enable Ros standard messages

To enable ROS standard topics, it is necessary to use the YAML file, to configure the elements ci-dessous:

  • Enable the configuration with ROS. 
  • Enable ROS odometry messages.
  • Select the the right odometry fram ID for : the message itself, the base one and the initial frame. 
  • Enable use_enu. 

Send RTCM corrections 

To send RTCM corrections to SBG units, please refer the Lord MicroStrain driver, that provides an ntrip server to send RTK corrections. 

It is necessary to subscribe to the topic, using the configuration file of the INS and provide a name space. 

And from ntrip_client driver, it is also necessary to provide the same name space when launching the driver

ros2 launch ntrip_clien ntrip_client_launch.py namespace:= ntrip_client mountpoint:= OUIL

Launch the driver

  • sbg_device_launch.py file, launches the sbg_device node to handle the received data, and load the sbg_device_uart_default.yaml for configuration.

  • sbg_device_mag_calibration_launch.py file, launches the sbg_device_mag node to calibrate the magnetometers, and load the ellipse_E_default.yaml configuration.

ros2 launch sbg_driver sbg_device_launch.py

Health monitoring

To check that everything works well, the easiest way would be to follow the next steps:

  • Open a new shell and source
  • Check whether the list of topics is consistent with the nodes that have been launched. 
ros2 topic list


  • Display few messages to check that the unit is well initialised and there is no inconsistent values. 
ros2 topic echo /sbg/ekf_nav
ros2 topic echo /sbg/ekf_euler
ros2 topic echo /sbg/gps_pos

SBG units, offer many status that gives good indications about the state of the unit, each one of them is described in our firmware documentation and on our GitHub page. 

Health monitoring

Once all the required drivers were launched, it's always a good habit to check the health of the unit, to confirm that that the installation, devices and GNSS reception are all good. The best way to see that, would be by displaying sbg topics, such as /sbg/ekf_nav, /sbg/ekf_euler or /sbg/gps_pos. Each navigation message, provides additionally important status to monitor during an acquisition;