Kidnapped Vehicle Localization with a Particle Filter
Objective
The Vehicle has been “kidnapped” and transported to a new location! Luckily it has a map of this location and
a (noisy) GPS estimate of its initial location. Then the vehicle starts to move, in the meanwhile, it records
the noisy sensor and control data. A real-time particle filter is implemented to localize the vehicle with
the sensor data.
In this project, particle filter will be given a map and some initial localization information (analogous to
what a GPS would provide). At each time step my filter
will also get observation and control data.
Demo: Vehicle Localization (click to see the full video)
Demo Explanation:
- Inputs:
- one map contains landmarks
- one initial location (e.g GPS) in the very beginning with big uncertainty.
- noisy landmark observations in each timestamp while vehicle is moving.
- Outputs:
- The blue circle (with an black arrow inside) is the real-time estimation of the vehicle’s location
and heading orientation from the particle filter.
- Ground truth:
- The blue car is the ground truth of the vehicle, including position and heading orientation.
It is only visualized for comparison purpose.
Code & Files
1. Dependencies & environment
- cmake >= 3.5
- make >= 4.1
- gcc/g++ >= 5.4
- uWebSockets: used for communication between the main code and the simulator.
2. How to run the code
- Clone this repo.
- Clean the project:
$./clean.sh
- Build the project:
$./build.sh
- Run the project:
$./run.sh
- Start the simulator v1.45,
select the Kidnaped Vehicle, and click start.
3. My project files
(Note: the hyperlinks only works if you are on the homepage of this GitHub reop,
and if you are viewing it in “github.io” you can be redirected by clicking the View the Project on GitHub on the top)
4. Code Style
5. Release History
- 0.2.1
- Docs: Improve the README.md with demo and example images.
- Date 22 June 2017
- 0.2.0
- Fix: Clear the weights vector after the resampling stage.
- Fix: Fix the landmark index problem, which is starting at index 1 instead of 0.
- Date 21 June 2017
- 0.1.1
- First proper release
- Date 20 June 2017
- 0.1.0
- Create the repo
- Date 15 June 2017
System overview