fusion-ukf  by mithi

C++ implementation for sensor fusion

created 8 years ago
294 stars

Top 91.1% on SourcePulse

GitHubView on GitHub
Project Summary

This C++ implementation provides an Unscented Kalman Filter (UKF) for fusing lidar and radar sensor measurements to track an object's state. It targets engineers and researchers working with sensor fusion in dynamic systems, offering improved accuracy over Extended Kalman Filters (EKF) for non-linear models like Constant Turn Rate and Velocity (CTRV).

How It Works

The UKF employs the CTRV model to predict an object's state, including Cartesian position (x, y), velocity magnitude, yaw angle, and yaw rate. It fuses lidar (Cartesian position) and radar (polar position and velocity) measurements, which are inherently noisy. The UKF's sigma point sampling approach handles non-linear transformations more effectively than EKF's linearization, leading to potentially lower Root Mean Square Error (RMSE), especially for velocity estimation.

Quick Start & Requirements

  • Install/Run: Clone the repository, navigate to the build folder, and compile using CC=gcc-6 cmake .. && make. Execute with ./unscentedKF /PATH/TO/INPUT/FILE /PATH/TO/OUTPUT/FILE.
  • Prerequisites: GCC 6 or compatible C++ compiler.
  • Setup: Compilation time is typical for C++ projects. Input data format is specified in the README.

Highlighted Details

  • Implements the Constant Turn Rate and Velocity (CTRV) model.
  • Fuses lidar (x, y) and radar (rho, phi, drho) measurements.
  • Outputs predicted state (x, y, v, yaw, yawrate) and sensor type, NIS, and ground truth.
  • Includes visualizations for performance and Normalized Innovation Squared (NIS) for lidar and radar.

Maintenance & Community

The repository is maintained by mithi. No specific community channels or roadmap are detailed in the README.

Licensing & Compatibility

The repository does not explicitly state a license. Compatibility for commercial use or closed-source linking is not specified.

Limitations & Caveats

The project requires a specific GCC version (6) for compilation. The license is not specified, which may impact commercial adoption.

Health Check
Last commit

5 years ago

Responsiveness

1 day

Pull Requests (30d)
0
Issues (30d)
0
Star History
2 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.