Your robot has been kidnapped and transported to a new location! Luckily it has a map of this location, a (noisy) GPS estimate of its initial location, and lots of (noisy) sensor and control data.
In this project you will implement a 2 dimensional particle filter in C++. Your particle filter will be given a map and some initial localization information (analogous to what a GPS would provide). At each time step your filter will also get observation and control data.
There is a simulator provided by Udacity (Term 2 Simulator Release) which can generate noisy landmark measurements. And you will be using those measurements to predict and match them to the given landmark location. In that way, you can tell where is your car and where it is heading to. This implementation is known as localization.
Here is the link to the orginal repository provided by Udaciy. This repository contains all the code needed to complete the final project for the Localization course in Udacity's Self-Driving Car Nanodegree.
- cmake: 3.5
- All OSes: click here for installation instructions
- make: 4.1 (Linux and Mac), 3.81 (Windows)
- Linux: make is installed by default on most Linux distros
- Mac: install Xcode command line tools to get make
- Windows: Click here for installation instructions
- gcc/g++: 5.4
- Linux: gcc / g++ is installed by default on most Linux distros
- Mac: same deal as make - install Xcode command line tools
- Windows: recommend using MinGW
- Meet the
Prerequisites/Dependencies
- 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. - Open Ubuntu Bash and clone the project repository
- On the command line execute
./install-ubuntu.sh
- Build and run your code.
- main.cpp:Reads in data, calls a function to run the particle filter
- particle_filter.cpp: Initializes the particle filter, calls the predict, data association and resample functions, defines the predict, data prediction and resample functions
- 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)
- 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 withcmake .. && make
- Launch the simulator from Windows
- Execute the run command for the project
./particle_filter
(Make sure you also run the simulator on the Windows host machine) If you see * * this message, it is workingListening to port 4567 Connected!!!
If your particle filter passes the current grading code in the simulator (you can make sure you have the current version at any time by doing a git pull
), then you should pass!
The things the grading code is looking for are:
-
Accuracy: your particle filter should localize vehicle position and yaw to within the values specified in the parameters
max_translation_error
andmax_yaw_error
insrc/main.cpp
. -
Performance: your particle filter should complete execution within the time of 100 seconds.
Yes, it does.
Yes, it does.
Yes, it does.
Please (do your best to) stick to Google's C++ style guide.
Video recordings for success cases.
Success case for running my particle filter code.