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.
System 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.
- cmake >= 3.5
- make >= 4.1
- gcc/g++ >= 5.4
- uWebSockets: used for communication between the main code and the simulator.
- 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.
- CMakeLists.txt is the cmake file.
- data folder contains sensor measurements, example images, GIF.
- src folder contains the source code.
- clean.sh cleans the project.
- build.sh builds the project.
- run.sh runs the project.
- install-mac install uWebSockets in Mac.
- install-ubuntu install uWebSockets in Ubuntu.