/Extended-Kalman-Filter

Utilize a kalman filter to estimate the state: position_x, position_y, velocity_x,velocity_y of a moving object of interest with noisy lidar and radar measurements.

Primary LanguageC++MIT LicenseMIT

Extended Kalman Filter Project

Utilize a kalman filter to estimate the state: position_x, position_y, velocity_x,velocity_y of a moving object of interest with noisy lidar and radar measurements.

This project involves the Term 2 Simulator which can be downloaded here.

This repository includes two files that can be used to set up and install uWebSocketIO for either Linux or Mac systems. For windows you can use either Docker, VMware, or even Windows 10 Bash on Ubuntu to install uWebSocketIO. Please see the uWebSocketIO Starter Guide page in the classroom within the EKF Project lesson for the required version and installation scripts.

Once the install for uWebSocketIO is complete, the main program can be built and run by doing the following from the project top directory.

1. mkdir build
2. cd build
3. cmake ..
4. make
5. ./ExtendedKF

INPUT: values provided by the simulator to the c++ program

["sensor_measurement"] => the measurement that the simulator observed (either lidar or radar)

OUTPUT: values provided by the c++ program to the simulator

["estimate_x"] <= kalman filter estimated position x

["estimate_y"] <= kalman filter estimated position y

["rmse_x"]

["rmse_y"]

["rmse_vx"]

["rmse_vy"]


Other Important Dependencies

Basic Build Instructions

  1. Clone this repo.
  2. Make a build directory: mkdir build && cd build
  3. Compile: cmake .. && make
    • On windows, you may need to run: cmake .. -G "Unix Makefiles" && make
  4. Run it: ./ExtendedKF

Simulation

The image below is a screenshot from the simulator using the Unscented Kalman Filter from this project. alt text

Discussion

The Extented Kalman Filter (EKF) is a bayesian filter which estimates the position as well as the velocity of the object which is being tracked. The EKF also is a variant of the standard Kalman filter which only models linear measurement models. The EKF approximates the non-linear model by calculating the jacobian and linearizing the model. The root mean square error values are well within the acceptable range as well.

Sometimes measuremnt and process models cannot be linearised and thats where the Unscented Kalman Filter (UKF) steps in.