In this project I am utilizing a unscented kalman filter to estimate the state of a moving object of interest with noisy lidar and radar measurements. Passing the project requires obtaining RMSE values lower than the threshold and Normalized-Innovation-Squared (NIS) values within the tolerances outlined by the project rubric.
This project involves the Term 2 Simulator which can be downloaded here.
The process model which describes the motion was tweaked to be comparable to the movement of cyclists (using approx. 0.8m/s² = 2.88km/h per second acceleration change and 22.5 degree/second² angular acceleration).
// Process noise standard deviation longitudinal acceleration in m/s^2
std_a_ = 0.8;
// Process noise standard deviation yaw acceleration in rad/s^2
std_yawdd_ = M_PI / 8.0;
As you can see in the charts below, >80% of the NIS values fall always nicely into the specified range between 0.35 and 7.81:
When using both lidar & radar data, 206 out of 249 measurements for lidar (83%) and 226 of 249 measurements for radar (91%) fall within the specified range.
When using only lidar data, 209 out of 249 measurements (84%) fall within the specified range.
When using only radar data, 225 out of 249 measurements (90%) fall within the specified range.
- uWebSocketIO for either Linux or Mac systems.
- cmake >= 3.5
- All OSes: click here for installation instructions
- make >= 4.1
- Linux: make is installed by default on most Linux distros
- Mac: install Xcode command line tools to get make
- Windows: Click here for installation instructions
- gcc/g++ >= 5.4
- Linux: gcc / g++ is installed by default on most Linux distros
- Mac: same deal as make - install Xcode command line tools
- Windows: recommend using MinGW
Once the install for uWebSocketIO is complete, the main program can be built and run by doing the following from the project top directory.
- mkdir build
- cd build
- cmake ..
- make
- ./UnscentedKF
The project can also be built with Microsoft Visual Studio according to a useful article from Fahid Zubair.
README.md
,readme.html
: you are reading it! :)src/ukf.cpp
: Unscented Kalman filter usage for lidar and radarsrc/tools.cpp
,src/tools.h
: tools to compute RMSE values