Final project in UZH-DINF2039 Vision Algorithms for Mobile Robotics
Members: Yujie He and Jianhao Zheng
Lecturer: Prof. Dr. Davide Scaramuzza
Table of Contents
Overview
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
Demo
YouTube playlist - VAMR 2021Fall Mini Project - VO Demo - J. Zheng & Y. He
Test sequences | Demo |
---|---|
KITTI seq05 [video] [data (1.4GB)] | |
malaga seq07 [video] [data (4.4GB)] | |
parking [video] [data (208 MB)] | |
epfl_parking [video] [data (675 MB)] | |
lausanne_center_nav [video] [data (58.8 MB)] |
Codebase
Machine specifications
- CPU: AMD Ryzen 7 5800H, 3.2 GHz, 16 logical processors
- RAM: 16GB
Dev Environment
- Test passed : matlab-2021b/matlab-2020b
- Toolbox used
- Computer Vision Toolbox
- Image Processing Toolbox
- Optimization Toolbox
How to run
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)
Folder Structure
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
├── ...
Data
Provided datasets
Download data from RPG VAME course website and place them in the following structure
├── data
│ ├── kitti
│ └── malaga
│ └── parking
Customized datasets
For more details, you could refer to readme in following subfolder
Related repos
- hibetterheyj/VideoIMUCapture-Android for camera calibration and image preprocessing (undistortion & resize)