Skip to content

sgalkin/CarND-T2P3

 
 

Repository files navigation

Kidnapped Vehicle Project

Udacity - Self-Driving Car NanoDegree CircleCI

Overview

This project implements 2 dimensional particle filter in C++ to estimate the position of a moving object of interest using map of the location, noisy GPS estimate of its initial location, and noisy sensor and control data.

This is the final project for the Localization course in Udacity's Self-Driving Car Nanodegree.

Implementation requires to match accuracy and performance values outlined in the specification.


Usage

Usage:
  particle_filter [options]
Available options:
  -m, --map   map file
  -?, --help  print this help screen

In order to use provided map, one may use the following commands

cd build
./particle_filter -m ../data/map_data.txt

or

./run.sh

Dependencies

Runtime

Tools

Libraries not included into the project

  • uWebSocketIO == v0.13.0
    • Ubuntu/Debian: the repository includes install-ubuntu.sh that can be used to set up and install uWebSocketIO
    • Mac: the repository includes install-mac.sh that can be used to set up and install uWebSocketIO
    • Windows: use either Docker, VMware, or even Windows 10 Bash on Ubuntu

Libraries included into the project

Build

  1. Clone this repo.
  2. mkdir build
  3. cd build
  4. cmake .. -G "Unix Makefiles"
  5. make
  6. make test # -- optional

or use provided build script

  1. Clone this repo.
  2. ./build.sh

Protocol

The project uses uWebSocketIO request-response protocol in communicating with the simulator.

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

// sense noisy position data from the simulator
["sense_x"]
["sense_y"]
["sense_theta"]

// get the previous velocity and yaw rate to predict the particle's transitioned state
["previous_velocity"]
["previous_yawrate"]

// receive noisy observation data from the simulator, in a respective list of x/y values
["sense_observations_x"]
["sense_observations_y"]

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

// best particle values used for calculating the error evaluation
["best_particle_x"]
["best_particle_y"]
["best_particle_theta"]

//Optional message data used for debugging particle's sensing and associations
["best_particle_associations"] <= list of associated ID labels
["best_particle_sense_x"] <= list of sensed x positions
["best_particle_sense_y"] <= list of sensed y positions

The Map

data/map_data.txt includes the position of landmarks (in meters) on an arbitrary Cartesian coordinate system. Each row has three columns

  1. x position
  2. y position
  3. landmark id

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.6%
  • Other 0.4%