CarND-Unscented-Kalman-Filter

Self-Driving Car Engineer Nanodegree Program

The goal of this project is to build an Unscented Kalman Filter using C++ and use it to estimate the state of a moving object of interest with noisy LIDAR and RADAR measurements.

The measurements data is provided in the form of a simulator.

The key metrics are RMSE values for both position and velocity of the tracked object.

Installation

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.

Results

The success metrics for this project are the RMSE values for 2 datasets.

The values shoule be below:

  • 0.09 for P x,
  • 0.10 for P y,
  • 0.40 for V x,
  • 0.30 for V y.

RMSE values

The folowing table lists the results of both datasets:

RMSE Dataset 1 Dataset 2
P x 0.0979 0.1008
P y 0.1208 0.1146
V x 0.8136 0.9325
V y 0.9955 1.0208

Simulator Results

Dataset 1

alt text

Dataset 2

alt text

Implementation

The code skeleton for this project was provided by udacity on this repo.

The main program in under the src directory.

.
├── json.hpp
├── main.cpp
├── measurement_package.h
├── tools.cpp
├── tools.h
├── ukf.cpp
└── ukf.h

The main changes were to the folowing files:

  • ukf.cpp - initializes the Unscented Kalman filter, calls the predict and update function, defines the predict and update functions
  • tools.cpp - function to calculate RMSE

Dependencies

Build

  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