The goal of this project is to create a kalman filter to estimate the state of a moving object of interest with noisy lidar and radar measurements.
The project includes following steps:
- Completion of the project template C++ sorce code in order to build an Extended Kalman Filter (EKF) by applying the general processing flow as described in the class lessons
- Testing of the EKF code with input data generated by the Term 2 Simulator
- Visualizion of the EKF output in a Jupyter notebook adopted from the provided in the Sensor Fusion utility repo
- README.md - This file.
- src/ folder:
- project C++ souce code files
- CMakeLists.txt -
cmake
input file to generate the projectMakefile
. It was moved to thesrc
folder and adopted to generate anEclipse
project - thanks to Eclipse IDE profile repo for provided instructions.
- data/ folder:
- ekf-visualization.ipynb - an IPython notebook for the output data visualization and analysis.
- ekf_pos_output.txt - output data file generated by the project code
- ekf_position.png - the output image generated by the notebook
The project code was built and executed on a Linux VMware guest. The simulator was running on a Windows host with a port forwarding setup as instructed here
- Make a build directory:
mkdir build && cd build
- Compile the code:
cmake ../src/ && make
(Please note thatCMakeList.txt
file is located in foldersrc/
) - Run the code:
./ExtendedKF
The source file main.cpp was modified to store the output data records in a text file ekf_pos_output.txt in the following format:
est_px est_py est_vx est_vy meas_px meas_py gt_px gt_py gt_vx gt_vy RMSE(0) RMSE(1) RMSE(2) RMSE(3)
After processing the output file in the ekf-visualization.ipynb notebook the object position estimates look as following:
The below table shows the position and velocity acccuracy of the last 10 estimates:
When executed on Linux VM, an error "Segmentation fault (core dumped)"
is reported after h.onDisconnection()
call. The issue is still unsolved. I blame it on the environment and appreciate any inputs/hints that might help to resolve it.