sbg_driver package from sbg_driver repo

sbg_driver

Package Summary

Tags No category tags.
Version 2.0.3
License MIT
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/SBG-Systems/sbg_ros_driver.git
VCS Type git
VCS Version master
Last Updated 2020-04-01
Dev Status DEVELOPED
CI status Continuous Integration : 0 / 0
Released RELEASED
Package Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

ROS driver package for communication with the SBG navigation systems.

Additional Links

Maintainers

  • Hadrien Pomès

Authors

  • SBG Systems

sbg_driver

Build Status Build Status

Overview

ROS package for SBG Systems IMU.
The driver allows the user to configure the IMU (if possible, according to the device), to receive messages from the Sbg message protocol, publish ROS standard messages , and to calibrate the magnetometers.

Initial work has been done by ENSTA Bretagne.

Author : SBG Systems
Maintainer : Hadrien Pomès, hadrien.pomes@sbg-systems.com

Installation

Installation from Packages

User can install the sbg_ros_driver through the standard ROS installation system. * Melodic sudo apt-get install ros-melodic-sbg-driver * Kinectic sudo apt-get install ros-kinetic-sbg-driver * Lunar sudo apt-get install ros-lunar-sbg-driver

Building from sources

Dependencies

Building

  1. Clone the repository (use a Release version)
  2. Build using the normal ROS catkin build system
cd catkin_ws/src
git clone https://github.com/SBG-Systems/sbg_ros_driver.git
cd ../
catkin_make

Usage

To run the default Ros node with the default configuration

roslaunch sbg_driver sbg_device.launch

To run the magnetic calibration node

roslaunch sbg_driver sbg_device_mag_calibration.launch

Config files

Default config files

Every configuration file is defined according to the same structure.

  • sbg_device_uart_default.yaml
    This config file is the default one for Uart connection with the device.
    It does not configure the device through the ROS node, so it has to be previously configured (manually or with the ROS node).
    It defines a few outputs for the device :

    • /sbg/imu_data, /sbg/ekf_quat at 25Hz
    • ROS standard outputs /imu/data, /imu/velocity, /imu/temp at 25Hz
    • /sbg/status, /sbg/utc_time and /imu/utc_ref at 1Hz.
  • sbg_device_udp_default.yaml
    This config file is the default one for an Udp connection with the device.
    It does not configure the device through the ROS node, so it has to be previously configured (manually or with the ROS node).
    It defines a few outputs for the device :

    • /sbg/imu_data, /sbg/ekf_quat at 25Hz
    • ROS standard outputs /imu/data, /imu/velocity, /imu/temp at 25Hz
    • /sbg/status, /sbg/utc_time and /imu/utc_ref at 1Hz.

Example config files

  • ellipse_A_default.yaml
    Default config file for an Ellipse-A.

  • ellipse_E_default.yaml
    Default config file for an Ellipse-E with an external antenna and external Gnss.

  • ellipse_N_default.yaml
    Default config file for an Ellipse-N with an external antenna and internal Gnss.

Launch files

Default launch files

  • sbg_device.launch
    Launch the sbg_device node to handle the receivde data, and load the sbg_device_uart_default.yaml configuration.

  • sbg_device_mag_calibration.launch
    Launch the sbg_device_mag node to calibrate the magnetometers, and load the ellipse_E_default.yaml configuration.

Nodes

sbg_device

The sbg_device node handles the communication with the connected device, and publishes the SBG output to the Ros environment.

Published Topics

SBG specific topics

Provides informations about the general status (Communication, Aiding, etc..).

Provides UTC time reference.

IMU status, and sensors values.

Computed orientation using Euler angles.

Computed orientation using Quaternion.

Computed navigation data.

Magnetic data.

Magnetometer calibration data.

Heave, surge and sway data.

GPS velocities from GPS receiver.

GPS positions from GPS receiver.

GPS true heading from dual antenna system.

GPS raw data for post processing.

Odometer velocity.

Event on sync in the corresponding pin.

Pressure data.

ROS standard topics

In order to define ROS standard topics, it requires sometimes several SBG messages, to be merged. For each ROS standard, you have to activate the needed SBG outputs.

IMU data. Requires /sbg/imu_data and /sbg/ekf_quat.

IMU temperature data. Requires /sbg/imu_data.

IMU velocity data. Requires /sbg/imu_data and /sbg/ekf_nav and either /sbg/ekf_euler or /sbg/ekf_quat.

IMU magnetic field. Requires /sbg/mag.

IMU pressure data. Requires /sbg/pressure.

Earth-Centered Earth-Fixed position. Requires /sbg/ekf_nav.

UTC time reference. Requires /sbg/utc_time.

Navigation satellite fix for any Global Navigation Satellite System. Requires /sbg/gps_pos.

sbg_device_mag

The sbg_device_mag node handles the magnetic calibration for suitable devices.

Services

Service to start/stop the magnetic calibration.

Service to save the magnetic calibration to the connected device.

HowTo

Configure the SBG device

The SBG Ros driver allows the user to configure the device before starting the data handling.
To do so, set the corresponding parameter in the used config file.

# Configuration of the device with ROS.
confWithRos: true

Then, modify the desired parameters in the config file, using the SBG Firmware Manual, to see which features are configurable, and which parameter values are available.

Calibrate the magnetometers

Ellipse-A/E/N use magnemoter to provide heading. A calibration is then required to compensate soft and hard iron distortions due to the environmenent (motors, batteries, ...). The magnetic calibration procedure should be held in a non magnetic area (outside of buildings).

roslaunch sbg_driver sbg_device_mag_calibration.launch
rosservice call /sbg/mag_calibration

success: True
message: "Magnetometer calibration process started."

Proceed rotations of the IMU (every orientation if possible).

rosservice call /sbg/mag_calibration

success: True
message: "Magnetometer calibration is finished. See the output console to get calibration informations."

If the magnetic calibration is satisfaying (Quality, Confidence), it could be uploaded/saved to the device.

rosservice call /sbg/mag_calibration_save

success: True
message: "Magnetometer calibration has been uploaded to the device."

Enable communication with the SBG device

To be able to communicate with the device, be sure that your user is part of the dialout group.
Once added, restart your machine to save and apply the changes.

sudo adduser $USER dialout

Create udev rules

Udev rules can be defined for communication port, in order to avoid modifying the port in configuration if it has changed. Udev documentation

A symlink can be configured and defined to uniquely identify the connected device.
Once it is done, configuration file could be updated portName: "/dev/sbg".

See the docs folder, to see an example of rules with the corresponding screenshot using the udev functions.

Synchronize the ROS messages from an external time source

No external source

When no external time source is available, the header time of messages is the system Epoch (Unix) processing time of the SBG callback, given by the ros::Time::now() .

External Gnss receiver and/or External antenna

When the SBG device is connected with an external Gnss receiver, if the device receives a full valid SBG Utc log, i.e : * A stable input clock to be synchronized with the internal clock * A valid Utc time data (with or without the leap second) * The clock has converged to the PPS

then, the time header will be computed from the last received Utc log and the device timestamp given by the internal clock.

Contributing

Bugs and issues

Please report bugs and/or issues using the Issue Tracker

Features requests or additions

In order to contribute to the code, please use Pull requests to the devel branch.
If you have some feature requests, use the Issue Tracker as well.

CHANGELOG

Changelog for package sbg_driver

2.0.3 (2020-04-01)

  • Improve matrix handling
  • Fix body velocity computation (Issue #31)

2.0.1 (2020-01-24)

  • Improve vector handling
  • Fix include file (Issue #26)

2.0.0 (2020-01-06)

  • Fix integer type
  • Update sbgECom messages (AirData, ImuShort)
  • Update sbgECom library to 1.11.920-stable
  • Improve numeric type
  • Improve configuration applier
  • Improve error handling
  • Code improvement
  • Improve device configuration
  • Update changelog
  • Update and improve README.md
  • Update magnetic services
  • Improve message timestamping
  • Add some ROS standard sensor messages (Issue #17)
  • Comply file structure to ROS best pratices
  • Add a processing time to improve message handling
  • Add udev rules to documentation (Issue #21)
  • Improve magnetometers calibration
  • Update maintainer of the package (Issue #20)
  • Enable/Disable the configuration of the device (Issue #19)
  • Define unified class and launch files for all SBG devices
  • Define classes for device configuration
  • Merge pull request #18 from SBG-Systems/messagePublisherRework
  • Integrate new message publisher to the Ellipse class (Issue #15)
  • Define a class to publish messages
  • Define class to wrap SBG logs to Ros messages
  • Merge pull request #16 from SBG-Systems/v4.3
  • [src] Update SDK version + add LogE support
  • Merge pull request #13 from nicolaje/remove-non-ascii-char
  • [conf] Removed non-ASCII characters, (Issue #8)
  • [msg] Remove non ascii characters

1.1.7 (2018-07-19)

  • [src] Change SbgEkfEuler comments
  • [src] Move .h to include folder + test new method for time saving in calib

1.1.6 (2018-03-18)

  • [config, src] Update default port for gps aiding (Ellipse-E) + add save & reboot for mag calibration
  • [build] Add include for debian jessie arm64 build issue

1.1.5 (2018-03-12 23:49)

  • [src] Update mag calibration

1.1.4 (2018-03-12 23:10)

  • [catkin] Update install launch & config
  • [src] Update library + Correction bugs

1.1.3 (2018-03-12 11:46)

  • Update dependencies to std_srvs

1.1.2 (2018-03-12 09:54)

  • [ChangeLog] Remove
  • [ChangeLog] Update
  • [Changelog] Test
  • [test] Changelog
  • [Changelog] Update
  • [CMake] Correction of message dependency

1.1.1 (2018-03-11)

  • [xml] Update version number
  • [src] Correction of small bugs + add publisher only on activated log
  • [merge] Finalize merge from devel branch (master divergence issue)
  • [lib] Update the library sbgECom version after merging from devel
  • [Merge]
  • Merge branch \'master\' of https://github.com/ENSTABretagneRobotics/sbg_ros_driver
  • [src] Update doc
  • [src] Update magnetic calibration node
  • Revert \"1.0.7\" This reverts commit 8f57f9e578937ac23383e39ebf616d1039384b09.
  • Update README
  • Merge pull request #2 from rpng/master Upgrade sbg_ros_driver
  • Moved the logging function into the class
  • Added - Start of heading code
  • Refactor and added new publishers
  • Increased rates
  • refactoring use a class for callbacks changed callbacks around a bit, now shows raw data rather than ekf logs
  • use gps log message for NavSatFix message
  • add extra debug messages
  • use private namespace
  • modified launch file moved to launch folder and added optional arguments
  • updated sbgECom library

1.1.0 (2018-03-10)

  • [src] Update Events
  • [src] Add params
  • [src] Update (add configuration of the ellipse)
  • [src] Update messages
  • [src] Start creating sbg messages

1.0.7 (2017-04-01)

  • [src][minor] Correct launch file

1.0.6 (2017-03-31)

  • CHANGELOG
  • [src] Add launch example
  • [src] Change imu data & add gyroscopes

1.0.5 (2016-11-17 00:04)

1.0.4 (2016-11-17 00:02)

1.0.3 (2016-11-16 23:59)

  • [src][minor] Correction of Project name in CmakeList

1.0.2 (2016-11-16 22:58)

  • [doc] minor
  • [doc] Update Package

1.0.1 (2016-11-16 22:30)

  • [doc] Update package version to 1.0.0
  • [doc] Add Changelog
  • [src] Update of deprecated function
  • [src] Update (correcting cmake sub project)
  • [src] Correct cmake subdirectory issue
  • Initial commit

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Dependant Packages

No known dependants.

Recent questions tagged sbg_driver at answers.ros.org

sbg_driver package from sbg_driver repo

sbg_driver

Package Summary

Tags No category tags.
Version 2.0.3
License MIT
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/SBG-Systems/sbg_ros_driver.git
VCS Type git
VCS Version master
Last Updated 2020-04-01
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Package Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

ROS driver package for communication with the SBG navigation systems.

Additional Links

Maintainers

  • Hadrien Pomès

Authors

  • SBG Systems

sbg_driver

Build Status Build Status

Overview

ROS package for SBG Systems IMU.
The driver allows the user to configure the IMU (if possible, according to the device), to receive messages from the Sbg message protocol, publish ROS standard messages , and to calibrate the magnetometers.

Initial work has been done by ENSTA Bretagne.

Author : SBG Systems
Maintainer : Hadrien Pomès, hadrien.pomes@sbg-systems.com

Installation

Installation from Packages

User can install the sbg_ros_driver through the standard ROS installation system. * Melodic sudo apt-get install ros-melodic-sbg-driver * Kinectic sudo apt-get install ros-kinetic-sbg-driver * Lunar sudo apt-get install ros-lunar-sbg-driver

Building from sources

Dependencies

Building

  1. Clone the repository (use a Release version)
  2. Build using the normal ROS catkin build system
cd catkin_ws/src
git clone https://github.com/SBG-Systems/sbg_ros_driver.git
cd ../
catkin_make

Usage

To run the default Ros node with the default configuration

roslaunch sbg_driver sbg_device.launch

To run the magnetic calibration node

roslaunch sbg_driver sbg_device_mag_calibration.launch

Config files

Default config files

Every configuration file is defined according to the same structure.

  • sbg_device_uart_default.yaml
    This config file is the default one for Uart connection with the device.
    It does not configure the device through the ROS node, so it has to be previously configured (manually or with the ROS node).
    It defines a few outputs for the device :

    • /sbg/imu_data, /sbg/ekf_quat at 25Hz
    • ROS standard outputs /imu/data, /imu/velocity, /imu/temp at 25Hz
    • /sbg/status, /sbg/utc_time and /imu/utc_ref at 1Hz.
  • sbg_device_udp_default.yaml
    This config file is the default one for an Udp connection with the device.
    It does not configure the device through the ROS node, so it has to be previously configured (manually or with the ROS node).
    It defines a few outputs for the device :

    • /sbg/imu_data, /sbg/ekf_quat at 25Hz
    • ROS standard outputs /imu/data, /imu/velocity, /imu/temp at 25Hz
    • /sbg/status, /sbg/utc_time and /imu/utc_ref at 1Hz.

Example config files

  • ellipse_A_default.yaml
    Default config file for an Ellipse-A.

  • ellipse_E_default.yaml
    Default config file for an Ellipse-E with an external antenna and external Gnss.

  • ellipse_N_default.yaml
    Default config file for an Ellipse-N with an external antenna and internal Gnss.

Launch files

Default launch files

  • sbg_device.launch
    Launch the sbg_device node to handle the receivde data, and load the sbg_device_uart_default.yaml configuration.

  • sbg_device_mag_calibration.launch
    Launch the sbg_device_mag node to calibrate the magnetometers, and load the ellipse_E_default.yaml configuration.

Nodes

sbg_device

The sbg_device node handles the communication with the connected device, and publishes the SBG output to the Ros environment.

Published Topics

SBG specific topics

Provides informations about the general status (Communication, Aiding, etc..).

Provides UTC time reference.

IMU status, and sensors values.

Computed orientation using Euler angles.

Computed orientation using Quaternion.

Computed navigation data.

Magnetic data.

Magnetometer calibration data.

Heave, surge and sway data.

GPS velocities from GPS receiver.

GPS positions from GPS receiver.

GPS true heading from dual antenna system.

GPS raw data for post processing.

Odometer velocity.

Event on sync in the corresponding pin.

Pressure data.

ROS standard topics

In order to define ROS standard topics, it requires sometimes several SBG messages, to be merged. For each ROS standard, you have to activate the needed SBG outputs.

IMU data. Requires /sbg/imu_data and /sbg/ekf_quat.

IMU temperature data. Requires /sbg/imu_data.

IMU velocity data. Requires /sbg/imu_data and /sbg/ekf_nav and either /sbg/ekf_euler or /sbg/ekf_quat.

IMU magnetic field. Requires /sbg/mag.

IMU pressure data. Requires /sbg/pressure.

Earth-Centered Earth-Fixed position. Requires /sbg/ekf_nav.

UTC time reference. Requires /sbg/utc_time.

Navigation satellite fix for any Global Navigation Satellite System. Requires /sbg/gps_pos.

sbg_device_mag

The sbg_device_mag node handles the magnetic calibration for suitable devices.

Services

Service to start/stop the magnetic calibration.

Service to save the magnetic calibration to the connected device.

HowTo

Configure the SBG device

The SBG Ros driver allows the user to configure the device before starting the data handling.
To do so, set the corresponding parameter in the used config file.

# Configuration of the device with ROS.
confWithRos: true

Then, modify the desired parameters in the config file, using the SBG Firmware Manual, to see which features are configurable, and which parameter values are available.

Calibrate the magnetometers

Ellipse-A/E/N use magnemoter to provide heading. A calibration is then required to compensate soft and hard iron distortions due to the environmenent (motors, batteries, ...). The magnetic calibration procedure should be held in a non magnetic area (outside of buildings).

roslaunch sbg_driver sbg_device_mag_calibration.launch
rosservice call /sbg/mag_calibration

success: True
message: "Magnetometer calibration process started."

Proceed rotations of the IMU (every orientation if possible).

rosservice call /sbg/mag_calibration

success: True
message: "Magnetometer calibration is finished. See the output console to get calibration informations."

If the magnetic calibration is satisfaying (Quality, Confidence), it could be uploaded/saved to the device.

rosservice call /sbg/mag_calibration_save

success: True
message: "Magnetometer calibration has been uploaded to the device."

Enable communication with the SBG device

To be able to communicate with the device, be sure that your user is part of the dialout group.
Once added, restart your machine to save and apply the changes.

sudo adduser $USER dialout

Create udev rules

Udev rules can be defined for communication port, in order to avoid modifying the port in configuration if it has changed. Udev documentation

A symlink can be configured and defined to uniquely identify the connected device.
Once it is done, configuration file could be updated portName: "/dev/sbg".

See the docs folder, to see an example of rules with the corresponding screenshot using the udev functions.

Synchronize the ROS messages from an external time source

No external source

When no external time source is available, the header time of messages is the system Epoch (Unix) processing time of the SBG callback, given by the ros::Time::now() .

External Gnss receiver and/or External antenna

When the SBG device is connected with an external Gnss receiver, if the device receives a full valid SBG Utc log, i.e : * A stable input clock to be synchronized with the internal clock * A valid Utc time data (with or without the leap second) * The clock has converged to the PPS

then, the time header will be computed from the last received Utc log and the device timestamp given by the internal clock.

Contributing

Bugs and issues

Please report bugs and/or issues using the Issue Tracker

Features requests or additions

In order to contribute to the code, please use Pull requests to the devel branch.
If you have some feature requests, use the Issue Tracker as well.

CHANGELOG

Changelog for package sbg_driver

2.0.3 (2020-04-01)

  • Improve matrix handling
  • Fix body velocity computation (Issue #31)

2.0.1 (2020-01-24)

  • Improve vector handling
  • Fix include file (Issue #26)

2.0.0 (2020-01-06)

  • Fix integer type
  • Update sbgECom messages (AirData, ImuShort)
  • Update sbgECom library to 1.11.920-stable
  • Improve numeric type
  • Improve configuration applier
  • Improve error handling
  • Code improvement
  • Improve device configuration
  • Update changelog
  • Update and improve README.md
  • Update magnetic services
  • Improve message timestamping
  • Add some ROS standard sensor messages (Issue #17)
  • Comply file structure to ROS best pratices
  • Add a processing time to improve message handling
  • Add udev rules to documentation (Issue #21)
  • Improve magnetometers calibration
  • Update maintainer of the package (Issue #20)
  • Enable/Disable the configuration of the device (Issue #19)
  • Define unified class and launch files for all SBG devices
  • Define classes for device configuration
  • Merge pull request #18 from SBG-Systems/messagePublisherRework
  • Integrate new message publisher to the Ellipse class (Issue #15)
  • Define a class to publish messages
  • Define class to wrap SBG logs to Ros messages
  • Merge pull request #16 from SBG-Systems/v4.3
  • [src] Update SDK version + add LogE support
  • Merge pull request #13 from nicolaje/remove-non-ascii-char
  • [conf] Removed non-ASCII characters, (Issue #8)
  • [msg] Remove non ascii characters

1.1.7 (2018-07-19)

  • [src] Change SbgEkfEuler comments
  • [src] Move .h to include folder + test new method for time saving in calib

1.1.6 (2018-03-18)

  • [config, src] Update default port for gps aiding (Ellipse-E) + add save & reboot for mag calibration
  • [build] Add include for debian jessie arm64 build issue

1.1.5 (2018-03-12 23:49)

  • [src] Update mag calibration

1.1.4 (2018-03-12 23:10)

  • [catkin] Update install launch & config
  • [src] Update library + Correction bugs

1.1.3 (2018-03-12 11:46)

  • Update dependencies to std_srvs

1.1.2 (2018-03-12 09:54)

  • [ChangeLog] Remove
  • [ChangeLog] Update
  • [Changelog] Test
  • [test] Changelog
  • [Changelog] Update
  • [CMake] Correction of message dependency

1.1.1 (2018-03-11)

  • [xml] Update version number
  • [src] Correction of small bugs + add publisher only on activated log
  • [merge] Finalize merge from devel branch (master divergence issue)
  • [lib] Update the library sbgECom version after merging from devel
  • [Merge]
  • Merge branch \'master\' of https://github.com/ENSTABretagneRobotics/sbg_ros_driver
  • [src] Update doc
  • [src] Update magnetic calibration node
  • Revert \"1.0.7\" This reverts commit 8f57f9e578937ac23383e39ebf616d1039384b09.
  • Update README
  • Merge pull request #2 from rpng/master Upgrade sbg_ros_driver
  • Moved the logging function into the class
  • Added - Start of heading code
  • Refactor and added new publishers
  • Increased rates
  • refactoring use a class for callbacks changed callbacks around a bit, now shows raw data rather than ekf logs
  • use gps log message for NavSatFix message
  • add extra debug messages
  • use private namespace
  • modified launch file moved to launch folder and added optional arguments
  • updated sbgECom library

1.1.0 (2018-03-10)

  • [src] Update Events
  • [src] Add params
  • [src] Update (add configuration of the ellipse)
  • [src] Update messages
  • [src] Start creating sbg messages

1.0.7 (2017-04-01)

  • [src][minor] Correct launch file

1.0.6 (2017-03-31)

  • CHANGELOG
  • [src] Add launch example
  • [src] Change imu data & add gyroscopes

1.0.5 (2016-11-17 00:04)

1.0.4 (2016-11-17 00:02)

1.0.3 (2016-11-16 23:59)

  • [src][minor] Correction of Project name in CmakeList

1.0.2 (2016-11-16 22:58)

  • [doc] minor
  • [doc] Update Package

1.0.1 (2016-11-16 22:30)

  • [doc] Update package version to 1.0.0
  • [doc] Add Changelog
  • [src] Update of deprecated function
  • [src] Update (correcting cmake sub project)
  • [src] Correct cmake subdirectory issue
  • Initial commit

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Dependant Packages

No known dependants.

Recent questions tagged sbg_driver at answers.ros.org

sbg_driver package from sbg_driver repo

sbg_driver

Package Summary

Tags No category tags.
Version 2.0.3
License MIT
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/SBG-Systems/sbg_ros_driver.git
VCS Type git
VCS Version master
Last Updated 2020-04-01
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Package Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

ROS driver package for communication with the SBG navigation systems.

Additional Links

Maintainers

  • Hadrien Pomès

Authors

  • SBG Systems

sbg_driver

Build Status Build Status

Overview

ROS package for SBG Systems IMU.
The driver allows the user to configure the IMU (if possible, according to the device), to receive messages from the Sbg message protocol, publish ROS standard messages , and to calibrate the magnetometers.

Initial work has been done by ENSTA Bretagne.

Author : SBG Systems
Maintainer : Hadrien Pomès, hadrien.pomes@sbg-systems.com

Installation

Installation from Packages

User can install the sbg_ros_driver through the standard ROS installation system. * Melodic sudo apt-get install ros-melodic-sbg-driver * Kinectic sudo apt-get install ros-kinetic-sbg-driver * Lunar sudo apt-get install ros-lunar-sbg-driver

Building from sources

Dependencies

Building

  1. Clone the repository (use a Release version)
  2. Build using the normal ROS catkin build system
cd catkin_ws/src
git clone https://github.com/SBG-Systems/sbg_ros_driver.git
cd ../
catkin_make

Usage

To run the default Ros node with the default configuration

roslaunch sbg_driver sbg_device.launch

To run the magnetic calibration node

roslaunch sbg_driver sbg_device_mag_calibration.launch

Config files

Default config files

Every configuration file is defined according to the same structure.

  • sbg_device_uart_default.yaml
    This config file is the default one for Uart connection with the device.
    It does not configure the device through the ROS node, so it has to be previously configured (manually or with the ROS node).
    It defines a few outputs for the device :

    • /sbg/imu_data, /sbg/ekf_quat at 25Hz
    • ROS standard outputs /imu/data, /imu/velocity, /imu/temp at 25Hz
    • /sbg/status, /sbg/utc_time and /imu/utc_ref at 1Hz.
  • sbg_device_udp_default.yaml
    This config file is the default one for an Udp connection with the device.
    It does not configure the device through the ROS node, so it has to be previously configured (manually or with the ROS node).
    It defines a few outputs for the device :

    • /sbg/imu_data, /sbg/ekf_quat at 25Hz
    • ROS standard outputs /imu/data, /imu/velocity, /imu/temp at 25Hz
    • /sbg/status, /sbg/utc_time and /imu/utc_ref at 1Hz.

Example config files

  • ellipse_A_default.yaml
    Default config file for an Ellipse-A.

  • ellipse_E_default.yaml
    Default config file for an Ellipse-E with an external antenna and external Gnss.

  • ellipse_N_default.yaml
    Default config file for an Ellipse-N with an external antenna and internal Gnss.

Launch files

Default launch files

  • sbg_device.launch
    Launch the sbg_device node to handle the receivde data, and load the sbg_device_uart_default.yaml configuration.

  • sbg_device_mag_calibration.launch
    Launch the sbg_device_mag node to calibrate the magnetometers, and load the ellipse_E_default.yaml configuration.

Nodes

sbg_device

The sbg_device node handles the communication with the connected device, and publishes the SBG output to the Ros environment.

Published Topics

SBG specific topics

Provides informations about the general status (Communication, Aiding, etc..).

Provides UTC time reference.

IMU status, and sensors values.

Computed orientation using Euler angles.

Computed orientation using Quaternion.

Computed navigation data.

Magnetic data.

Magnetometer calibration data.

Heave, surge and sway data.

GPS velocities from GPS receiver.

GPS positions from GPS receiver.

GPS true heading from dual antenna system.

GPS raw data for post processing.

Odometer velocity.

Event on sync in the corresponding pin.

Pressure data.

ROS standard topics

In order to define ROS standard topics, it requires sometimes several SBG messages, to be merged. For each ROS standard, you have to activate the needed SBG outputs.

IMU data. Requires /sbg/imu_data and /sbg/ekf_quat.

IMU temperature data. Requires /sbg/imu_data.

IMU velocity data. Requires /sbg/imu_data and /sbg/ekf_nav and either /sbg/ekf_euler or /sbg/ekf_quat.

IMU magnetic field. Requires /sbg/mag.

IMU pressure data. Requires /sbg/pressure.

Earth-Centered Earth-Fixed position. Requires /sbg/ekf_nav.

UTC time reference. Requires /sbg/utc_time.

Navigation satellite fix for any Global Navigation Satellite System. Requires /sbg/gps_pos.

sbg_device_mag

The sbg_device_mag node handles the magnetic calibration for suitable devices.

Services

Service to start/stop the magnetic calibration.

Service to save the magnetic calibration to the connected device.

HowTo

Configure the SBG device

The SBG Ros driver allows the user to configure the device before starting the data handling.
To do so, set the corresponding parameter in the used config file.

# Configuration of the device with ROS.
confWithRos: true

Then, modify the desired parameters in the config file, using the SBG Firmware Manual, to see which features are configurable, and which parameter values are available.

Calibrate the magnetometers

Ellipse-A/E/N use magnemoter to provide heading. A calibration is then required to compensate soft and hard iron distortions due to the environmenent (motors, batteries, ...). The magnetic calibration procedure should be held in a non magnetic area (outside of buildings).

roslaunch sbg_driver sbg_device_mag_calibration.launch
rosservice call /sbg/mag_calibration

success: True
message: "Magnetometer calibration process started."

Proceed rotations of the IMU (every orientation if possible).

rosservice call /sbg/mag_calibration

success: True
message: "Magnetometer calibration is finished. See the output console to get calibration informations."

If the magnetic calibration is satisfaying (Quality, Confidence), it could be uploaded/saved to the device.

rosservice call /sbg/mag_calibration_save

success: True
message: "Magnetometer calibration has been uploaded to the device."

Enable communication with the SBG device

To be able to communicate with the device, be sure that your user is part of the dialout group.
Once added, restart your machine to save and apply the changes.

sudo adduser $USER dialout

Create udev rules

Udev rules can be defined for communication port, in order to avoid modifying the port in configuration if it has changed. Udev documentation

A symlink can be configured and defined to uniquely identify the connected device.
Once it is done, configuration file could be updated portName: "/dev/sbg".

See the docs folder, to see an example of rules with the corresponding screenshot using the udev functions.

Synchronize the ROS messages from an external time source

No external source

When no external time source is available, the header time of messages is the system Epoch (Unix) processing time of the SBG callback, given by the ros::Time::now() .

External Gnss receiver and/or External antenna

When the SBG device is connected with an external Gnss receiver, if the device receives a full valid SBG Utc log, i.e : * A stable input clock to be synchronized with the internal clock * A valid Utc time data (with or without the leap second) * The clock has converged to the PPS

then, the time header will be computed from the last received Utc log and the device timestamp given by the internal clock.

Contributing

Bugs and issues

Please report bugs and/or issues using the Issue Tracker

Features requests or additions

In order to contribute to the code, please use Pull requests to the devel branch.
If you have some feature requests, use the Issue Tracker as well.

CHANGELOG

Changelog for package sbg_driver

2.0.3 (2020-04-01)

  • Improve matrix handling
  • Fix body velocity computation (Issue #31)

2.0.1 (2020-01-24)

  • Improve vector handling
  • Fix include file (Issue #26)

2.0.0 (2020-01-06)

  • Fix integer type
  • Update sbgECom messages (AirData, ImuShort)
  • Update sbgECom library to 1.11.920-stable
  • Improve numeric type
  • Improve configuration applier
  • Improve error handling
  • Code improvement
  • Improve device configuration
  • Update changelog
  • Update and improve README.md
  • Update magnetic services
  • Improve message timestamping
  • Add some ROS standard sensor messages (Issue #17)
  • Comply file structure to ROS best pratices
  • Add a processing time to improve message handling
  • Add udev rules to documentation (Issue #21)
  • Improve magnetometers calibration
  • Update maintainer of the package (Issue #20)
  • Enable/Disable the configuration of the device (Issue #19)
  • Define unified class and launch files for all SBG devices
  • Define classes for device configuration
  • Merge pull request #18 from SBG-Systems/messagePublisherRework
  • Integrate new message publisher to the Ellipse class (Issue #15)
  • Define a class to publish messages
  • Define class to wrap SBG logs to Ros messages
  • Merge pull request #16 from SBG-Systems/v4.3
  • [src] Update SDK version + add LogE support
  • Merge pull request #13 from nicolaje/remove-non-ascii-char
  • [conf] Removed non-ASCII characters, (Issue #8)
  • [msg] Remove non ascii characters

1.1.7 (2018-07-19)

  • [src] Change SbgEkfEuler comments
  • [src] Move .h to include folder + test new method for time saving in calib

1.1.6 (2018-03-18)

  • [config, src] Update default port for gps aiding (Ellipse-E) + add save & reboot for mag calibration
  • [build] Add include for debian jessie arm64 build issue

1.1.5 (2018-03-12 23:49)

  • [src] Update mag calibration

1.1.4 (2018-03-12 23:10)

  • [catkin] Update install launch & config
  • [src] Update library + Correction bugs

1.1.3 (2018-03-12 11:46)

  • Update dependencies to std_srvs

1.1.2 (2018-03-12 09:54)

  • [ChangeLog] Remove
  • [ChangeLog] Update
  • [Changelog] Test
  • [test] Changelog
  • [Changelog] Update
  • [CMake] Correction of message dependency

1.1.1 (2018-03-11)

  • [xml] Update version number
  • [src] Correction of small bugs + add publisher only on activated log
  • [merge] Finalize merge from devel branch (master divergence issue)
  • [lib] Update the library sbgECom version after merging from devel
  • [Merge]
  • Merge branch \'master\' of https://github.com/ENSTABretagneRobotics/sbg_ros_driver
  • [src] Update doc
  • [src] Update magnetic calibration node
  • Revert \"1.0.7\" This reverts commit 8f57f9e578937ac23383e39ebf616d1039384b09.
  • Update README
  • Merge pull request #2 from rpng/master Upgrade sbg_ros_driver
  • Moved the logging function into the class
  • Added - Start of heading code
  • Refactor and added new publishers
  • Increased rates
  • refactoring use a class for callbacks changed callbacks around a bit, now shows raw data rather than ekf logs
  • use gps log message for NavSatFix message
  • add extra debug messages
  • use private namespace
  • modified launch file moved to launch folder and added optional arguments
  • updated sbgECom library

1.1.0 (2018-03-10)

  • [src] Update Events
  • [src] Add params
  • [src] Update (add configuration of the ellipse)
  • [src] Update messages
  • [src] Start creating sbg messages

1.0.7 (2017-04-01)

  • [src][minor] Correct launch file

1.0.6 (2017-03-31)

  • CHANGELOG
  • [src] Add launch example
  • [src] Change imu data & add gyroscopes

1.0.5 (2016-11-17 00:04)

1.0.4 (2016-11-17 00:02)

1.0.3 (2016-11-16 23:59)

  • [src][minor] Correction of Project name in CmakeList

1.0.2 (2016-11-16 22:58)

  • [doc] minor
  • [doc] Update Package

1.0.1 (2016-11-16 22:30)

  • [doc] Update package version to 1.0.0
  • [doc] Add Changelog
  • [src] Update of deprecated function
  • [src] Update (correcting cmake sub project)
  • [src] Correct cmake subdirectory issue
  • Initial commit

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Dependant Packages

No known dependants.

Recent questions tagged sbg_driver at answers.ros.org