Skip to content

J. Zheng & Y. He, Simple VO pipeline for UZH VAMR course, 2021Fall

Notifications You must be signed in to change notification settings

hibetterheyj/Visual-Odometry-Pipeline

 
 

Repository files navigation

Table of Contents

Monocular Visual Odometry Pipeline

Authors: Jianhao Zheng, Yujie He

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

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
├── ...

Demo

YouTube playlist - VAMR 2021Fall Mini Project - VO Demo - J. Zheng & Y. He

Test sequences Demo
KITTI seq05 [video] [data (1.4GB)] epfl_parking
malaga seq07 [video] [data (4.4GB)] epfl_parking
parking [video] [data (208 MB)] epfl_parking
epfl_parking [video] [data (675 MB)] epfl_parking
lausanne_center_nav [video] [data (58.8 MB)] epfl_parking

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

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 70.8%
  • MATLAB 26.7%
  • Python 2.4%
  • Shell 0.1%