manankharwar/fusioncore
ROS 2 sensor fusion SDK: UKF, 3D native, proper GNSS, zero manual tuning. Apache 2.0.
What it solves
FusionCore provides robust sensor fusion for real-world robots, addressing common hardware issues like IMU calibration drift, timestamp jitter, delayed GPS signals, and wheel slip. It replaces the need for manual, time-consuming parameter tuning and complex stacks like robot_localization + navsat_transform by offering an adaptive, high-frequency (100 Hz) state estimation system.
How it works
It uses a 23-state Unscented Kalman Filter (UKF) to fuse data from IMUs, wheel encoders, and GPS. Key technical features include:
- Adaptive Noise Estimation: Continuously updates noise covariance based on the innovation sequence to handle varying sensor quality.
- IMU Ring Buffer: Replays buffered updates to accurately reconstruct the filter state when delayed GPS fixes arrive.
- ECEF Fusion: Fuses GPS data directly in Earth-Centered, Earth-Fixed (ECEF) coordinates to avoid UTM zone boundary issues.
- Non-Holonomic Constraints (NHC): Zeros out lateral and vertical velocity to prevent drift in wheeled robots.
- Hardware Optimization: Uses Eigen for auto-detection of ARM (NEON) and x86 (AVX) instructions, ensuring low latency on Raspberry Pi and Jetson devices.
Who it’s for
Robotics engineers and developers building autonomous mobile robots (AMRs) that operate in outdoor or mixed environments and require stable, high-frequency localization without extensive manual tuning.
Highlights
- Zero Manual Tuning: Adapts to sensor noise in real-time using only basic IMU datasheet values.
- Robustness to Real-World Noise: Handles bad calibration, delayed GPS, and wheel slip automatically.
- High Performance: Runs in under 1ms on a Raspberry Pi 4.
- Drop-in Replacement: Designed as a direct alternative to the
robot_localizationstack for ROS 2. - Integrated Support: Compatible with RTK GPS and integrates with tools like Nav2 and rtabmap_ros.
Related
- Project
- Project
- Project
- Project
- Project