/extended-kalman-filter-cpp

Extended Kalman Filter for Tracking Obstacle Position from Radar and Laser Measurements

Primary LanguageC++

Extended Kalman Filter


This project fuses the position and velocity measurements of obstacles from rader and lasar measurements to track the obstacles through time. It manages both cartesian and polor coordinates.

Dependencies

Basic Build Instructions

  1. Clone this repo.
  2. Make a build directory: mkdir build && cd build
  3. Compile: cmake .. && make
  4. Run it: ./ExtendedKF path/to/input.txt path/to/output.txt. You can find some sample inputs in 'data/'.
    • eg. ./ExtendedKF ../data/sample-laser-radar-measurement-data-1.txt output.txt
  5. In order to graph your results, enter this directory and run jupyter notebook. Then execute each cell in succession by pressing shift + enter. You can also run the whole notebook in a single step by clicking on the menu Cell -> Run All.

Results

The Kalman Filter was able to track obstacles fairly accuractely with the sample measurements/ground truth that I used.

The position predictions were most accurate across different datasets. Tracking of Position Over Time (A)

Tracking of Position Over Time (B)

There was some noise in the velocity predictions, mostly caused by the radar measurements. Tracking of Velocity Over Time (A)

Tracking of Velocity Over Time (B)