Authors: Jianhao Zheng, Yujie He
Mini project for Vision Algorithms for Mobile Robots given by Prof. Davide Scaramuzza, 2021
Implementation of a working, simple, monocular visual odometry (VO) pipeline with the following implementation details:
- KLT-based or descriptor matching for bootstrapping initialization
- KLT Tracking of feature points across frames following by RANSAC
- Triangulation of new landmarks
- Local pose refinement through optimization
- Bundle adjustment for better pose estimation
- Release two custom sequences
- CPU: AMD Ryzen 7 5800H, 3.2 GHz, 16 logical process
- RAM: 16GB
Test passed |
---|
- Toolbox used
- Computer Vision Toolbox
- Image Processing Toolbox
- Optimization Toolbox
Download dataset and copy them to the right folder. For details on setting data, please refer to Data. To test the VO pipeline without bundle adjustment, run main_demo.m
. Change variable ds
to switch the testing dataset.
For VO with bundle adjustment, plese run main_BA.m
and make sure hyper_paras.is_BA
is true
. (For now, only tested in parking dataset, ds = 2)
Visual-Odometry-Pipeline/
├── Continuous_operation # (matlab) implemented algorithms about continuous operation
├── Initialization # (matlab) implemented algorithms about initialization
├── utils # (matlab) utility function for data processing and visualization in the pipeline
├── eval_notebook # (python) scripts to evaluate performance between different methods
├── main_BA.m # (matlab) script to demonstrate implemented method with bundle adjustment on `parking` data
├── main_demo.m # (matlab) script to demonstrate implemented method without bundle adjustment for every dataset
├── main_eval.m # (matlab) script to batch evaluate the implemented method with different features on `KITTI seq05` data
├── data # 3 data sequences provided by VAME team and 2 customized sequences
├── gifs # demonstration gifs
├── README.md
├── ...
Test sequences | Demo | Video |
---|---|---|
KITTI seq05 | [link] | |
malaga | [link] | |
parking | [link] | |
epfl_parking | [link] | |
lausanne_center_nav | [link] |
Download data from RPG VAME course website and place them in the following structure
├── data
│ ├── kitti
│ └── malaga
│ └── parking
For more details, you could refer to readme in following subfolder
- hibetterheyj/VideoIMUCapture-Android for camera calibration and image preprocessing (undistortion & resize)