tsbertalan / extendedKalmanFilterDemo

Udacity CarND Term 2, Project 1

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Extended Kalman Filter Project Starter Code

Self-Driving Car Engineer Nanodegree Program

In this project I utilize a kalman filter to estimate the state of a moving object of interest with noisy lidar and radar measurements.

Much of the code here is very similar to that developed over the course of the first few lessons in Term 2 on the EKF and sensor fusion for lidar and radar sensors. However, as a result, the FusionEKF and KalmanFilter objects are tightly coupled. A better approach would be use Sensor and MotionModel base classes providing an interface with appropriate methods for calculating the measurment update and motion prediction operators given a state vector. This would enable easy generalization to more than two sensors. As it stands, there are separate KalmanFilter::Update and KalmanFilter::UpdateEKF methods for the laser and radar sensors respectively.

Results are shown below. Points in blue and red are sensor data, while points in green are the smoothed trajectory (position portion only).

sample results

While the achived RMSE on the figure-8 dataset is below the required threshold, I think there might be some turning overshoot. This should be rectified with the use of a more realistic (nonlinear) motion model.

This project uses 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 this concept in the classroom for the required version and installation scripts.

Once the install for uWebSocketIO is complete, the main program can be built and run by doing the following from the project top directory.

  1. mkdir build
  2. cd build
  3. cmake ..
  4. make
  5. ./ExtendedKF

Tips for setting up your environment can be found here

Note that the primary files that were modified to accomplish the project are src/FusionEKF.cpp, src/FusionEKF.h, kalman_filter.cpp, kalman_filter.h, tools.cpp, and tools.h


Other Important Dependencies

Basic Build Instructions

  1. Clone this repo.
  2. Make a build directory: mkdir build && cd build
  3. Compile: cmake .. && make
    • On windows, you may need to run: cmake .. -G "Unix Makefiles" && make
  4. Run it: ./ExtendedKF

Generating Additional Data

This is optional!

If you'd like to generate your own radar and lidar data, see the utilities repo for Matlab scripts that can generate additional data.

Project Instructions and Rubric

More information is only accessible by people who are already enrolled in Term 2 of CarND. If you are enrolled, see the project resources page for instructions and the project rubric.

Hints and Tips!

  • Students have reported rapid expansion of log files when using the term 2 simulator. This appears to be associated with not being connected to uWebSockets. If this does occur, please make sure you are conneted to uWebSockets. The following workaround may also be effective at preventing large log files.

    • create an empty log file
    • remove write permissions so that the simulator can't write to log

About

Udacity CarND Term 2, Project 1

License:MIT License


Languages

Language:C++ 98.5%Language:C 1.2%Language:CMake 0.2%Language:Shell 0.0%