Skip to content

Latest commit

 

History

History
110 lines (75 loc) · 4.87 KB

README.md

File metadata and controls

110 lines (75 loc) · 4.87 KB

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 process
  • 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

Test sequences Demo Video
KITTI seq05 epfl_parking [link]
malaga epfl_parking [link]
parking epfl_parking [link]
epfl_parking epfl_parking [link]
lausanne_center_nav epfl_parking [link]

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