FusionCore: ROS 2 Sensor Fusion SDK Delivers Superior Positioning Without Manual Tuning
#Robotics

FusionCore: ROS 2 Sensor Fusion SDK Delivers Superior Positioning Without Manual Tuning

Startups Reporter
5 min read

A new open-source sensor fusion library for ROS 2 combines IMU, wheel encoders, and GPS with superior accuracy compared to existing solutions, requiring zero manual tuning.

Mobile robots need precise positioning to navigate effectively, but combining data from imperfect sensors—IMUs that drift, wheel encoders that slip, and GPS that jumps—has long been a challenge. A new open-source project called FusionCore aims to solve this problem with a ROS 2 sensor fusion SDK that delivers more reliable positioning than existing alternatives while requiring no manual tuning.

The Problem with Current Sensor Fusion Solutions

Every mobile robot requires accurate position estimation, typically derived from multiple sensors. The standard approach in ROS has been robot_localization, but it has significant limitations:

  • No native ECEF GPS fusion
  • Lacks IMU bias estimation
  • Doesn't support adaptive noise covariance
  • Its designated replacement (fuse) has incomplete GPS support without ECEF handling or RTK quality gating

These limitations leave robotics developers with inadequate tools for robust positioning, especially in challenging environments where sensor data quality varies.

Introducing FusionCore

FusionCore, available on GitHub, addresses these gaps with a comprehensive sensor fusion solution built specifically for ROS 2 Jazzy. The library combines IMU, wheel encoder, and GPS data into a single, reliable position estimate using an Unscented Kalman Filter with a 22-dimensional state vector that includes quaternion orientation.

The project benchmarks against robot_localization using the NCLT dataset from the University of Michigan, with results showing FusionCore outperforming the standard solution in 5 of 6 test sequences:

Sequence FC ATE RMSE RL-EKF ATE RMSE RL-UKF ATE RMSE
2012-01-08 5.6 m 23.4 m NaN divergence at t=31 s
2012-02-04 9.7 m 20.6 m NaN divergence at t=22 s
2012-03-31 4.2 m 10.8 m NaN divergence at t=18 s
2012-08-20 7.5 m 9.4 m NaN divergence
2012-11-04 28.7 m 10.9 m NaN divergence
2013-02-23 4.1 m 5.8 m NaN divergence

ATE RMSE across 6 NCLT sequences

Notably, the robot_localization UKF implementation diverged completely in all test sequences, while FusionCore maintained stable performance throughout.

Key Technical Differentiators

FusionCore's superior performance stems from several technical innovations:

1. Native ECEF GPS Fusion

Unlike robot_localization which requires a separate navsat_transform node, FusionCore handles ECEF (Earth-Centered, Earth-Fixed) GPS coordinates natively in a single node. This eliminates coordinate system conversion errors and simplifies the configuration pipeline.

2. Automatic IMU Bias Estimation

The library continuously estimates and compensates for IMU sensor biases without requiring manual calibration. This is particularly valuable for low-cost MEMS sensors that typically have significant bias variations.

3. Adaptive Noise Covariance

FusionCore automatically estimates sensor noise characteristics from incoming data using a sliding window approach with exponential moving average. This eliminates the tedious and often inaccurate process of manually tuning noise parameters in YAML configuration files.

4. Robust Outlier Rejection

The library implements Mahalanobis distance-based outlier rejection using chi-squared thresholds at the 99.9th percentile. This prevents GPS jumps, multipath errors, and encoder slip spikes from corrupting the state estimate. Testing showed that even when injecting a 500m GPS jump, the filter position remained completely stable.

5. Zero Velocity Updates (ZUPT)

When the robot is stationary (encoder speed below 0.05 m/s and angular rate below 0.05 rad/s), FusionCore automatically applies zero velocity updates. This prevents IMU drift from accumulating into false velocity estimates when the robot isn't moving—a critical feature for accurate stationary positioning.

6. GPS Antenna Offset Correction

For robots where the GPS antenna isn't mounted at the base_link, FusionCore corrects for the lever arm offset using the current robot orientation. This correction only activates when heading has been independently validated, preventing errors when heading uncertainty is high.

Practical Implementation Details

FusionCore is implemented as a ROS 2 lifecycle node that publishes odometry data at 100Hz. The library subscribes to standard ROS message types for IMU data, wheel odometry, and GPS fixes, making it straightforward to integrate with existing robot architectures.

The project includes extensive documentation and example configurations for common platforms like the Clearpath Husky and provides simulation environments through Gazebo for testing without physical hardware.

Trajectory overlay: all 6 sequences, SE3-aligned to RTK GPS ground truth

Integration with Nav2

One of FusionCore's strengths is its seamless integration with Nav2. The library publishes all necessary outputs in formats that Nav2 expects:

  • /fusion/odom as the primary odometry topic
  • /fusion/pose for pose initialization
  • /diagnostics in Nav2-compatible format
  • The odom→base_link TF transformation

This allows developers to use FusionCore as a drop-in replacement for other odometry sources in Nav2 without additional configuration or coordinate transforms.

Licensing and Support

FusionCore is released under Apache 2.0 license, which provides explicit patent licensing that BSD-3 doesn't offer, making it suitable for commercial applications. The project maintainer commits to responding to issues within 24 hours, indicating strong ongoing support for the robotics community.

Who Should Use FusionCore?

FusionCore is particularly valuable for:

  • Developers working with ROS 2 Jazzy (the current ROS 2 LTS release)
  • Mobile robots operating in GPS-denied or GPS-challenged environments
  • Agricultural and industrial robots requiring RTK-level positioning
  • Research projects needing high-accuracy ground truth
  • Commercial products requiring robust positioning without extensive manual tuning

As robotics increasingly relies on accurate positioning for autonomy, solutions like FusionCore that provide reliable sensor fusion with minimal configuration overhead will become increasingly valuable. The project's benchmark results and comprehensive feature set suggest it could become the new standard for ROS 2-based positioning systems.

Comments

Loading comments...