The goals / steps of this project are the following:
- Implement Extended Kalman Filter prediction and measurement update equations in C++
- Use Sensor Fusion to combine data from LIDAR and RADAR to track a bicycle traveling around a vehicle
- Minimize Root Mean Squared Error of the filter's predictions
In this project I utilized a kalman filter to estimate the state of a moving object of interest with noisy lidar and radar measurements. Passing this project requires obtaining RMSE values that are less than or equal to the values [.11, .11, 0.52, 0.52].
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.
The main files of this program (located in the src
directory) are:
FusionEKF.cpp
- initializes the filter, calls the predict function, calls the update functionkalman_filter.cpp
- defines the predict function, the update function for lidar, and the update function for radartools.cpp
- function to calculate RMSE and the Jacobian matrixmain.cpp
- communicates with the Term 2 Simulator receiving data measurements, calls a function to run the Kalman filter, calls a function to calculate RMSE
Lidar measurements are red circles, radar measurements are blue circles with an arrow pointing in the direction of the observed angle, and estimation markers are green triangles. The videos below shows what the simulator looks like when a c++ script is using its Kalman filter to track the object. The simulator provides the script the measured data (either lidar or radar), and the script feeds back the measured estimation marker, and RMSE values from its Kalman filter.
- 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
- Clone this repo.
- Make a build directory:
mkdir build && cd build
- Compile:
cmake .. && make
- On windows, you may need to run:
cmake .. -G "Unix Makefiles" && make
- On windows, you may need to run:
- Run it:
./ExtendedKF