Skip to content

Shivam-Bhardwaj/Extended_Kalman_Filter

Repository files navigation

Extended Kalman Filter Project

Udacity - Self-Driving Car NanoDegree NYU Logo

The following project is a part of Udacity’s Self Driving car engineering NanoDegree program. The aim of project is to successfully implement Kalman filter in C++ on LIDAR and RADAR data to obtain a smooth curvature of the car in the simulator.

Passing the project requires obtaining Root Mean Square Error values that are lower than the tolerance outlined in the project rubric.

1558277568331

The repository structure

Name of Folder Contains
/assets Resources for README
/cmake-build-release Build files of the project
/data LIDAR and RADAR data
/src source file for the project in c++
CMakeList.text Cmake list to build the project
install-linux.sh setting up web sockets on Linux systems

This project involves the Term 2 Simulator which can be downloaded here. Which is also included in the repository for Linux.

Other Important Dependencies

Basic Build Instructions

  1. Clone this repo.
  2. Use the install.sh scripts for installing uWebSocketIO
  3. Make a build directory: mkdir build && cd build
  4. Compile: cmake .. && make
    • On windows, you may need to run: cmake .. -G "Unix Makefiles" && make
  5. Run it: ./ExtendedKF
  6. Run the simulator.
  7. Select a low resolution.
  8. Press start.

Here is the main protocol that main.cpp uses for uWebSocketIO in communicating with the simulator.

INPUT: values provided by the simulator to the c++ program

["sensor_measurement"] => the measurement that the simulator observed (either lidar or radar)

OUTPUT: values provided by the c++ program to the simulator

["estimate_x"] <= kalman filter estimated position x

["estimate_y"] <= kalman filter estimated position y

["rmse_x"]

["rmse_y"]

["rmse_vx"]

["rmse_vy"]


Rubric Points

Here I will consider the rubric points individually and describe how I addressed each point in my implementation.


Writeup / README

1. Provide a Writeup / README that includes all the rubric points and how you addressed each one.

The given README.md file is an extensive writeup of the project. It includes the code folder architecture, resources, test output, Jupyter Notebook etc. For any questions, please contact

Shivam Bhardwaj

LinkedIn Instagram Facebook Github

Mail to [email protected]

Accuracy

As you can see in the image above my RMSE is well below <= [.11, .11, 0.52, 0.52] for X, Y, VX and VY respectively.

Discussion

To begin with I would like to thank Udacity team for compiling everything in such an amazing tutorial. Following are my take on the overall project.

  • On my laptop, the RMSE values in the simulator are not displayed when I run the simulator in high resolution. As you can see below, the area under RMSE is blank 1558278040840

  • I tested my code on Jetbrains' Clion, and it worked flawlessly.

  • Steps were taken to avoid repeated calculations for example as shown below (tools.cpp)1558278416508

  • Instead of initializing EKF vales to 0, by changing them performance is improved as explained in the lectures.1558278701984

Testing specs

The code was tested on the following specifications

  • CPU: Intel(R) Core(TM) i9-8950HK CPU @ 4.8 Ghz
  • GPU: Nvidia GeForce GTX 1050 Ti Mobile
  • OS: Ubuntu 16.04.6 LTS (Xenial Xerus)
  • Kernal: 4.15.0-48-generic

About

Extened Kalman Filters in c++ on LIDAR and RADAR data.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages