This is project 3 of the course ECE 276A: Sensing & Estimation in Robotics at UCSD, being taught by professor Nikolay Atanisov.
This project is based on SLAM using data provided at this link
IMU data is provided for a car that has camera sensors mounted on it. These include LiDAR and stereo cameras. Features are extractred from the camera and provided in the dataset.
The task is to perform SLAM on the data provided to correct landmark positions and trajectory of the car using Extended Kalman Filter.
-
Place the data in a folder labelled 'data' outside the folder containing the code.
├── data │ ├── 03.npz │ ├── 10.npz ├── code │ ├── landmark_mapping.py │ ├── pr3_utils.py │ ├── utils.py │ ├── visual_inertial_slam.py │ └── main.py
-
Install the required packages:
pip install -r requirements.txt
-
Alternatively you can run this command:
pip install numpy, scipy, matplotlib, tqdm, transforms3d
-
Run the file main.py. The code can be run with or without a specifying the dataset. If it is not specified, the code runs on dataset 10 by default.
python main.py 10
The following results were obtained for dataset 10. The actual visual inertial SLAM results are incorrect, and require tuning in the updation step.
For dead reckoning:
For Landmark Mapping with EKF:
For Visual Inertial SLAM:
- Kalman Filter
- Extended Kalman Filter
- Project Algorithm Breakdown