/unscented_kalman_filter

A 2D Unscented Kalman Filter

Primary LanguageC++

Unscented Kalman Filter

This is a simple 2D Unscented Kalman Filter (UKF) implementation in C++. In addition to the implementation of the UKF itself, which is contained in ukf.cpp and ukf.h, main.cpp contains a small program for a visual demonstration of the filter using a simulator that is linked below.

The UKF is used to estimate the state of a moving object using noisy LIDAR and RADAR measurements. For an introduction to UKFs, please refer to the paper "The Unscented Kalman Filter for Nonlinear Estimation".

The simulator provides the ground truth state of the object to be tracked and displays the root mean squared error (RMSE) between the filter estimation and the ground truth.

Dependencies

  • cmake >= 3.5
  • All OSes: click here for installation instructions
  • make >= 4.1
  • gcc/g++ >= 5.4
  • uWebSockets: Handles the communication between the program and the simulator.
    • Run either ./install-mac.sh or ./install-ubuntu.sh. It is recommended to use one of these scripts to install uWS. Perform a manual installation as explained below only if these scripts don't work for you.
    • If you install from source, checkout to commit e94b6e1, i.e.
      git clone https://github.com/uWebSockets/uWebSockets
      cd uWebSockets
      git checkout e94b6e1
      
      Some function signatures have changed in v0.14.x.
  • The simulator which you can download from here.

Basic Build Instructions

  1. Clone this repo.
  2. Make a build directory: mkdir build && cd build
  3. Compile: cmake .. && make
  4. Run it: ./UnscentedKF

Once you launched the executable, simply run the simulator app and select the UKF simulation.