juanlvo / CarND-Unscented-Kalman-Filter-Project

Self-Driving Car Nanodegree Program Starter Code for the Unscented Kalman Filter Project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unscented Kalman Filter Project Starter Code

Self-Driving Car Engineer Nanodegree Program solution from Juan Luis Vivas Occhipinti

In this project utilize an Unscented Kalman Filter to estimate the state of a moving object of interest with noisy lidar and radar measurements. Passing the project requires obtaining RMSE values that are lower that the tolerance outlined in the project reburic.

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 intall 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 ran by doing the following from the project top directory.

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

Note that the programs that need to be written to accomplish the project are src/ukf.cpp, src/ukf.h, tools.cpp, and tools.h

The program main.cpp has already been filled out, but feel free to modify it.

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

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

["sensor_measurement"] => the measurment 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"]


Other Important Dependencies

  • cmake >= v3.5
  • make >= v4.1
  • gcc/g++ >= v5.4

Basic Build Instructions

  1. Clone this repo.
  2. Make a build directory: mkdir build && cd build
  3. Compile: cmake .. && make
  4. Run it: ./UnscentedKF path/to/input.txt path/to/output.txt. You can find some sample inputs in 'data/'.
    • eg. ./UnscentedKF ../data/obj_pose-laser-radar-synthetic-input.txt

Editor Settings

We've purposefully kept editor configuration files out of this repo in order to keep it as simple and environment agnostic as possible. However, we recommend using the following settings:

  • indent using spaces
  • set tab width to 2 spaces (keeps the matrices in source code aligned)

Code Style

Please stick to Google's C++ style guide as much as possible.

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

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

Compiling

Criteria Meets Specifications
Your code should compile The code compile without errors with cmake and make.

Accuracy

Criteria Meets Specifications
The project recently changed. If you developed your project with the old version, you can still turn turn in the project with the old data sets, and your review will be based on the old criteria.

For the new version of the project, there is now only one data set "obj_pose-laser-radar-synthetic-input.txt". px, py, vx, vy output coordinates must have an RMSE <= [.09, .10, .40, .30] when using the file: "obj_pose-laser-radar-synthetic-input.txt"

If you are using the older version of the project with two data sets, criteria for passing are:

that the px, py, vx, vy output coordinates have an RMSE <=[0.09, 0.09, 0.65, 0.65] when using the file: "sample-laser-radar-measurement-data-1.txt"

that the px, py, vx, vy output coordinates have an RMSE <=[0.20, 0.20, 0.55, 0.55] when using the file: "sample-laser-radar-measurement-data-2.txt"

For the new data set, your algorithm will be run against "obj_pose-laser-radar-synthetic-input.txt". We'll collect the positions that your algorithm outputs and compare them to ground truth data. Your px, py, vx, and vy RMSE should be less than or equal to the values [.09, .10, .40, .30].

For the older version of the project, your algorithm will be run against "sample-laser-radar-measurement-data-1.txt". We'll collect the positions that your algorithm outputs and compare them to ground truth data. Your px, py, vx, and vy RMSE should be less than or equal to the values [0.09, 0.09, 0.65, 0.65].

For the older version, your algorithm will also be run against "sample-laser-radar-measurement-data-2.txt". The RMSE for the second data set should be <=[0.20, 0.20, 0.55, 0.55].

Follows the Correct Algorithm

Criteria Meets Specifications
Your Sensor Fusion algorithm follows the general processing flow as taught in the preceding lessons. Yes the algorith fllow the steps described in the
Your Kalman Filter algorithm handles the first measurements appropriately. Yes, can be found it the inititalization of the variables
Your Kalman Filter algorithm first predicts then updates. Yes, like it is described in the lessons
Your Kalman Filter can handle radar and lidar measurements. Yes, can handle both.

Code Efficiency

Criteria Meets Specifications
Your algorithm should avoid unnecessary calculations. Yes, is avoiding many loops, avoiding unnecessarily complex data structures and avoiding Unnecessary control flow checks

About

Self-Driving Car Nanodegree Program Starter Code for the Unscented Kalman Filter Project


Languages

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