The ROBINS/GNSS INS System ROS2 driver is a software component designed to interface with a Global Navigation Satellite System (GNSS) module combined with an Inertial Navigation System (INS). The driver enables ROS2-based applications to access and utilize the raw GNSS and INS data for localization, navigation, and other related tasks.
Author: Robeff Technology
Maintainer: Robeff Technology
- Features
- Installation
- Configuration File
- Usage
- Customizing Configuration
- Troubleshooting
- Custom Messages
- Standard Messages
- Subscribed Topic
- Contributing
- License
- ROS2 Compatibility: Fully compatible with the ROS2 (Robot Operating System 2) ecosystem.
- GNSS Data: Reads raw data from the GNSS module, including satellite positions, timestamps, position, velocity, and other relevant information.
- INS Data: Retrieves data from the Inertial Navigation System, such as roll, pitch, and yaw angles.
- 6-DOF IMU Data: Provides data from the built-in ADIS16470 6-DOF IMU.
- Fused Output: Fuses GNSS and INS data using sensor fusion techniques (e.g., Extended Kalman Filter) for robust localization estimates.
- Configurable Parameters: Allows customization of various parameters to adapt to different GNSS/INS modules and user requirements.
Before proceeding with the installation, ensure you have the following prerequisites:
- ROS2 Humble: Ensure you have a working ROS2 Humble installation. Follow the official installation instructions if needed.
- Build Tools: Ensure you have the necessary build tools and dependencies installed on your system.
-
Clone the Repository: Clone the repository into your ROS2 workspace's source directory:
cd /path_to_your_ros2_workspace/src git clone https://github.com/Robeff-Technology/rbf_gnss_ins_driver.git
-
Build the Workspace: Navigate to your ROS2 workspace and build the packages:
cd /path_to_your_ros2_ws colcon build --packages-select rbf_gnss_ins_driver
-
Source the Workspace: Source your ROS2 workspace to make the newly built RBF GNSS INS driver node available:
source /path_to_your_ros2_ws/install/setup.bash
The rbf_gnss_ins_driver.param.yaml
configuration file allows customization of the driver's behavior. Below is a table explaining each parameter:
Parameter | Description | Default Value |
---|---|---|
working_frequency | The working frequency of the driver. | 200 |
serial_config | ||
├─ port |
Current port name of the device | /dev/ttyUSB0 |
└─ baudrate |
Current baudrate of the device | 460800 |
topic_config | ||
├─ rtcm_topic |
RTCM topic name | /sensing/gnss/ntrip/rtcm |
├─ imu_topic |
IMU topic name | robins/ros/imu |
├─ nav_sat_fix_topic |
NavSatFix topic name | robins/ros/gps_nav_sat_fix |
├─ twist_topic |
TwistWithCovarianceStamped topic name | robins/ros/twist_with_covariance_stamped |
└─ temperature_topic |
Temperature topic name | robins/ros/temperature |
frame_config | ||
├─ gnss_frame |
GNSS frame name | gnss_ins_link |
└─ imu_frame |
IMU frame name | imu_link |
time_config | ||
└─ use_ros_time |
Use ROS time if true (not recommended) | false |
odometry_config | ||
├─ use_odometry |
Use odometry if true | false |
├─ odometry_topic |
Odometry topic name | robins/ros/odometry |
└─ odometry_frame |
Odometry frame name | odom |
origin_config | ||
├─ latitude |
Latitude of the origin | 0.0 |
├─ longitude |
Longitude of the origin | 0.0 |
└─ altitude |
Altitude of the origin | 0.0 |
altitude_config | ||
└─ altitude_mode |
Altitude mode (0: orthometric, 1: ellipsoid) | 0 |
-
Launch the RBF GNSS INS Driver Node: Start the RBF GNSS INS driver node using the provided launch file. Run the following command:
ros2 launch rbf_gnss_ins_driver rbf_gnss_ins_driver.launch.py
This will start the driver node and configure it based on the default parameters.
-
Verify Data: After launching the driver, verify that the GNSS and INS data are being published to the correct topics using tools like
ros2 topic echo
.
To customize the behavior of the GNSS/INS driver:
- Locate the Configuration File: The
rbf_gnss_ins_driver.param.yaml
configuration file is in the package'sconfig
directory. - Customize Parameters: Edit the configuration file to modify the driver's behavior. Adjust parameters such as communication settings, INS settings, and output topics.
- Launch with Custom Configuration: Launch the driver node with the updated configuration:
ros2 launch rbf_gnss_ins_driver rbf_gnss_ins_driver.launch.py
- Build Errors: Ensure all dependencies are properly installed and sourced.
- Permissions: Ensure the user has the necessary permissions to access the GNSS/INS module (e.g.,
/dev/ttyUSB0
). - Driver-specific Issues: Refer to the documentation or contact the developer for specific issues.
- Position and velocity in ECEF.
- Reports several status indicators, including differential age.
- Best available GNSS velocity without INS, including status indicators.
- Heading information of the receiver in motion.
- IMU status indicator.
- Integrated navigation results and deviations.
- Status of RTCM topic for debugging.
imu/Temp
sensor_msgs/Temperature
- Temperature of the IMU. Requires
RAWIMU
.
TwistWithCovarianceStamped
geometry_msgs/TwistWithCovarianceStamped
- Velocity of the vehicle calculated with EKF. Requires
INSPVAX
. /raw/ecef_twist
: Velocity of the vehicle in ECEF. RequiresECEF
.
NavSatFix
sensor_msgs/NavSatFix
- Position of the vehicle calculated with EKF. Requires
INSPVAX
. /raw/nav_sat_fix
: Position of the vehicle without EKF. RequiresECEF
.
Imu
sensor_msgs/Imu
- IMU data calculated with EKF. Requires
RAWIMU
,INSPVAX
. /raw/imu
: IMU data without EKF. RequiresRAWIMU
.
Odometry
nav_msgs/Odometry
- Odometry data. Requires
INSPVAX
.
- RTCM data for RTK. For more information, see ntrip_client.
If you would like to contribute to this project, please contact Robeff Technology or submit a pull request on the GitHub repository.
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.