FusionCore is an advanced sensor fusion SDK designed for ROS 2, combining IMU, wheel encoders, and GPS to deliver accurate position estimates. By addressing the limitations of existing solutions, FusionCore offers full 3D support, automatic IMU bias estimation, and proper GPS integration, ensuring mobile robots navigate precisely and reliably.
FusionCore is an advanced ROS 2 sensor fusion SDK designed for mobile robotics, effectively integrating data from IMU, wheel encoders, and GPS to provide accurate and dependable position estimates without the need for manual tuning.
Installation
sudo apt install ros-jazzy-fusioncore-ros
Available in the official ROS 2 Jazzy apt repository. Also listed on the official ROS 2 adopters page.
Overview
FusionCore addresses the critical problem in mobile robotics of knowing the accurate position by intelligently combining various sensors that have their limitations. Unlike traditional sensor fusion packages, such as robot_localization, which has been deprecated, FusionCore offers a comprehensive solution with improved functionality and user experience.
Key Features
- Unified Kalman Filter (UKF): Employs a state-of-the-art Unscented Kalman Filter for efficient state estimation with 43 sigma points, ensuring high fidelity in dynamic environments.
- 3D Native Support: Full support for three-dimensional position estimation, which is essential for navigating complex environments.
- Automatic IMU Bias Estimation: Continuously estimates and corrects biases in IMU readings without user intervention, enhancing the reliability of sensor measurements.
- Proper GPS Fusion: Uses Earth-Centered Earth-Fixed (ECEF) coordinates for accurate GPS integration and handles GPS position changes seamlessly without workarounds.
- Robust Outlier Rejection: Implements Mahalanobis chi-squared gating for rejecting implausible sensor readings, allowing for consistent and reliable filtering performance.
- Adaptive Noise Covariance: Automatically tracks and adjusts the noise covariance of sensor inputs based on real-time performance, thus maintaining the accuracy of the position estimates.
- Sensor Dropout Detection: Monitors each sensor's activity independently to ensure the system remains operational if one sensor fails, improving overall resilience.
- Zero Velocity Updates (ZUPT): Automatically locks position when robot is stationary
- GPS Fix Quality Gating: Configurable minimum fix type: GPS, DGPS, or RTK
- Per-sensor Diagnostics: /diagnostics at 1Hz compatible with Nav2 and rqt_robot_monitor
- Filter Reset Service: Reinitialize filter mid-run without restarting the node
System Architecture
FusionCore consists of three main components:
- fusioncore_core: A pure C++17 library that runs without ROS dependencies, dedicated to the mathematical computations of sensor fusion.
- fusioncore_ros: A ROS 2 wrapper that integrates the core functionality with ROS 2, facilitating seamless communication with other ROS components.
- fusioncore_gazebo: A Gazebo simulation environment to test the implementation without needing physical hardware, featuring a differential drive robot.
Practical Use Cases
FusionCore is tailored for diverse mobile robotics applications, making it suitable for:
- Agriculture robots requiring precise positioning for navigation in open fields.
- Industrial robotic systems needing reliable orientation and movement in complex environments.
- Autonomous vehicles leveraging sensor fusion for reliable spatial awareness.
Enhancements Over Previous Solutions
- Enhanced IMU Frame Transformation: Automatically adjusts for sensor mounts not aligned with the base link, improving accuracy during motion.
- Improved TF Validation: Guarantees that TF transforms are validated before filtering starts, eliminating silent failures.
- Delay Compensation: Addresses delays in GPS signal processing to maintain accuracy in real-time applications.
FusionCore is an Apache 2.0 licensed project, actively maintained and supported by a dedicated community. It stands out as the go-to solution for ROS 2 users seeking a reliable sensor fusion framework that is both powerful and easy to integrate into existing systems.
No comments yet.
Sign in to be the first to comment.