VO evaluated on the customized lausanne_center_nav sequence

Monocular Visual Odometry Pipeline

VO evaluated on the customized lausanne_center_nav sequence

Monocular Visual Odometry Pipeline

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)] 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

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