C++ implementation of an Extended Kalman Filter, fusing LIDAR and Radar sensors together to estimate a moving object's state.
This filter is designed to work with Udacity's CarND Term 2 Simulator which can be downloaded here.
This EKF implementation uses a 4-dimensional state vector composed of 2D position and 2D velocity.
To communicate with the simulator we're using uWebSocketIO
.
["sensor_measurement"] => the measurement that the simulator observed (either lidar or radar) as well as the ground truth
["estimate_x"] <= kalman filter estimated position x
["estimate_y"] <= kalman filter estimated position y
["rmse_x"] <= x position root mean squared error with respect to ground truth
["rmse_y"] <= y position root mean squared error with respect to ground truth
["rmse_vx"] <= x velocity root mean squared error with respect to ground truth
["rmse_vy"] <= y velocity root mean squared error with respect to ground truth
This has been tested on Linux, but should be able to run on OS X and Windows as well.
- First run
install-linux.sh
orinstall-mac.sh
to install uWebSocketIO and its dependencies. mkdir build
cd build
cmake ..
make
./ExtendedKF
At this point, you can start the simulator.
- cmake >= 3.5
- All OSes: click here for installation instructions
- make >= 4.1 (Linux, Mac), 3.81 (Windows)
- 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