tracking-with-Unscented-Kalman-Filter

Object (e.g Pedestrian, biker, vehicles) tracking by Unscented Kalman Filter (UKF), with fused data from both lidar and radar sensors.

View the Project on GitHub

Object Tracking with Sensor Fusion-based Unscented Kalman Filter

Objective

Utilize sensor data from both LIDAR and RADAR measurements for object (e.g. pedestrian, vehicles, or other moving objects) tracking with the Unscented Kalman Filter.

Unscented Kalman Filter example

Kalman Filters variances

All Kalman filters have the same mains steps: 1. Initialization, 2. Prediction, 3. Update. A Standard Kalman Filter (KF) can only handle linear equations. Both the Extended Kalman Filter (EKF) and the Unscented Kalman Filter allow you to use non-linear equations; the difference between EKF and UKF is how they handle non-linear equations: Extended Kalman Filter uses the Jacobian matrix to linearize non-linear functions; Unscented Kalman Filter, on the other hand, does not need to linearize non-linear functions, insteadly, the unscented Kalman filter takes representative points from a Gaussian distribution.

Unscented Kalman Filter VS Extended Kalman Filter

Table 1: Accuracy comparison in RMSE by using EKF and UKF with both lidar and radar measurements. The lidar and radar measurements are included in the txt file under the data folder.

state UKF EKF
px 0.0640299 0.0972256
py 0.0832734 0.0853761
vx 0.330315 0.450855
vy 0.212456 0.450855

Table 2: Accuracy comparison in RMSE by UKF with different sensor measurements.

state lidar and radar only lidar only radar
px 0.0640299 0.168267 0.203744
py 0.0832734 0.146901 0.250427
vx 0.330315 0.613026 0.450143
vy 0.212456 0.252216 0.249284

Conclusions from aboves:

Motion Model: CTRV model

Unscented Kalman Filter roadmap


Code & Files

1. Dependencies & environment

2. My project files

(Note: the hyperlinks only works if you are on the homepage of this GitHub reop, and if you are viewing it in “github.io” you can be redirected by clicking the View the Project on GitHub on the top)

3. Code Style

4. How to run the code

  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 by the following commands:
    • ./ExtendedKF ../data/obj_pose-laser-radar-synthetic-input.txt ./output.txt

5. Release History