FusionCore: ROS 2 sensor fusion (IMU and GPS and encoders)
FusionCore is a ROS 2-compatible sensor fusion package that combines IMU, wheel encoders, and GPS data using a 22-state Unscented Kalman Filter running at 100 Hz. It features continuous estimation of IMU bias, adaptive noise covariance, and chi-squared outlier rejection for all sensor inputs. Benchmarks show improved accuracy and stability compared to robot_localization on the NCLT dataset without manual tuning.
- ▪FusionCore uses a 22-state UKF to fuse IMU, wheel encoders, and GPS data with IMU bias estimation.
- ▪The filter adapts noise covariance automatically and applies chi-squared outlier rejection to every sensor update.
- ▪On the NCLT dataset, FusionCore achieved lower ATE RMSE than robot_localization, which diverged in multiple sequences.
- ▪FusionCore supports ROS 2 Jazzy and Humble and can be integrated with Nav2 for robotics applications.
- ▪GPS data is processed directly in ECEF coordinates, avoiding the need for coordinate projections.
Opening excerpt (first ~120 words) tap to expand
FusionCore ROS 2 sensor fusion: IMU + wheel encoders + GPS fused via UKF at 100 Hz. 22-state filter with IMU bias estimation, adaptive noise covariance, and chi-squared outlier rejection on every sensor. Why I built this I needed sensor fusion for a mobile robot project and reached for robot_localization like everyone does. It works well. But I wanted a filter that estimated IMU gyro and accelerometer bias as part of the state vector, adapted its noise covariance from real sensor behavior rather than config values, and rejected outliers on every sensor update: not just GPS. So I built FusionCore. It's a 22-state UKF that fuses IMU, wheel encoders, and GPS natively. Gyro and accelerometer bias are estimated continuously as filter states.
…
Excerpt limited to ~120 words for fair-use compliance. The full article is at GitHub.