Git Product home page Git Product logo

carnd-term2-p2-unscented-kalman-filter-project's Introduction

CarND-Term2-P2-Unscented-Kalman-Filter

Overview

In this project, you are going to implement the unscented Kalman filter in C++. You will be tracking the bicycle's position and velocity and predicting the positon of the object.
This project is based on the same structure as the extended Kalman filter. It uses a main file that calls a function called ProcessMeasurement. Anything important happens in this function. The function is part of the class ukf.
There is a simulator provided by Udacity (Term 2 Simulator Release) which can generate noisy LIDAR and RADAR measurements. And you will be using those measurements to predict your object position.
Here is the link to the orginal repository provided by Udaciy.

Prerequisites/Dependencies

Setup Instructions (abbreviated)

  1. Meet the Prerequisites/Dependencies
  2. Intall uWebSocketIO on your system
    2.1 Windows Installation
    2.1.1 Use latest version of Ubuntu Bash 16.04 on Windows 10, here is the step-by-step guide for setting up the utility.
    2.1.2 (Optional) Check your version of Ubuntu Bash here.
  3. Open Ubuntu Bash and clone the project repository
  4. On the command line execute ./install-ubuntu.sh
  5. Build and run your code.

Project Description

  • main.cpp:Reads in data, calls a function to run the Unscented Kalman filter, calls a function to calculate RMSE
  • 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
  • README.md: Writeup for this project, including setup, running instructions and project rubric addressing.
  • CMakeLists.txt: CMakeLists.txt file that will be used when compiling your code (you do not need to change this file)

Run the project

  • Clone this respository
  • At the top level of the project repository, create a build directory: mkdir build && cd build
  • In /build directory, compile yoru code with cmake .. && make
  • Launch the simulator from Windows
  • Execute the run command for the project ./UnscentedKF (Make sure you also run the simulator on the Windows host machine) If you see * * this message, it is working Listening to port 4567 Connected!!!

PROJECT PASSING CRITERIA

There are several criteria that must be fulfilled to pass the project.

  • The overall processing chain (prediction, laser update or radar update depending on measurement type) must be correct.
  • The student is not allowed to use values from the future to reason about the current state.
  • It must be possible to run the project in three different modes: considering laser only, with considering radar only, or with using both sensors.
  • For every mode, the overall RMSE (2d position only) may not be more than 10% increased to what the original solution is able to reach (this number depends on the individual measurement sequence)
  • The RMSE of laser AND radar must be lower than radar only or laser only
  • The NIS of radar measurements must be between 0.35 and 7.81 in at least 80% of all radar update steps.

PROJECT GRADING

  • I recommend a hall of fame for the lowest overall RMSE using laser AND radar.
  • I recommend to ask students to improve the initialization procedure and evaluate the RMSE during the first 20 steps.

Project Rubric

1. Compiling

1.1 Your code should compile.

Compiled successfully.

2. Accuracy

2.2 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", which is the same data file the simulator uses for Dataset 1.

Meet.

3. Follows the Correct Algorithm

3.1 Your Sensor Fusion algorithm follows the general processing flow as taught in the preceding lessons.

My Kalman Filter implementation is completed at ukf.cpp

3.2 Your Kalman Filter algorithm handles the first measurements appropriately.

The first measurement is handled at ukf.cpp Line128-194.

3.3 Your Kalman Filter algorithm first predicts then updates.

My Kalman Filter predict function will be called at ukf.cpp Line195-207
My Kalman Filter update functions will be called based on different measurements after calling prediction function at ukf.cpp Line209-223.

3.4 Your Kalman Filter can handle radar and lidar measurements.

My Kalman Filter update functions will be called based on different measurements after calling prediction function. For laser measurement, the update function implementation can be found at ukf.cpp Line401-555. For radar measurement, the update function implementation can be found at ukf.cpp Line557-710.

4. Code Efficiency

4.1 Your algorithm should avoid unnecessary calculations.

Yes.

Code Style

Please (do your best to) stick to Google's C++ style guide.

Videos

Video recordings for success case.
Success case for running on Dataset 1.
Successful running on dataset 1
Success case for running on Dataset 2.
Successful running on dataset 2

carnd-term2-p2-unscented-kalman-filter-project's People

Contributors

andrewpaster avatar awbrown90 avatar baumanab avatar cameronwp avatar danziger avatar domluna avatar jinchaolu avatar mvirgo avatar swwelch avatar

Watchers

 avatar

Forkers

guoquheweilai

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.