Skip to content
/ MRO Public

Monocular Rotational Odometry with Incremental Rotation Averaging and Loop Closure

License

Notifications You must be signed in to change notification settings

ckchng/MRO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MRO

Author: Chee-Kheng Chng

Given monocular images, MRO estimates their absolute orientations. It is

  1. robust against pure rotation motion (equipped with the relative rotation estimator from openGV (https://laurentkneip.github.io/opengv/))
  2. capable of loop closing
  3. a constant time rotation avergaing solver (due to its incremental nature).

It is an extension to IRotAvg from https://github.com/ajparra/iRotAvg.

License

MRO is released under a GPLv3 license.

For a closed-source version of MRO (e.g., for commercial purposes), please contact the author.

For an academic use of MRO, please cite C.-K. Chng, Á. Parra, T.-J. Chin, Y. Latif: Monocular Rotational Odometry with Incremental Rotation Averaging and Loop Closure, DICTA 2020

Dependencies

Tested on:

  • Eigen 3.3.4 sudo apt install libeigen3-dev

  • SuiteSparse sudo apt-get install libsuitesparse-dev

  • opencv 4.0.0 https://www.pyimagesearch.com/2018/05/28/ubuntu-18-04-how-to-install-opencv/ provides a good guide.

  • Boost (Filesystem) 1.6.5 sudo apt-get install libboost-all-dev

  • opengv 1.0.0 (refer to the official site for potential installation FAQs)

    • cd third_party/opengv
    • mkdir build
    • cd build
    • cmake ..
    • make
    • cmake -DCMAKE_INSTALL_PREFIX=/path/to/local_install -P cmake_install.cmake

Compilation

Finally, to install MRO

first edit line 8 and 10 in /src/CMakelist.txt to appropriate directories

Then,

  • cd /dir/to/MRO
  • mkdir build
  • cd build
  • cmake ..
  • make

(binary is compiled inside src)

Demo

The demo.sh bash file in written to run KITTI seq00. The sequence (and the entire dataset) can be downloaded here.

Edit the I/O paths appropriately.

ORB feature extractor used in MRO takes config.yaml and ORBvoc.txt as inputs, both are provided in /data. The current config is tuned according to the camera parameters of KITTI sequence00. It needs to be adjusted accordingly when running on other datasets.

Run ./demo.sh

Hyperparameters

As seen in demo.sh

  • MIN_SET : minimal set to run ransac for opengv's relative rotation estimator, original paper proposes 10.

  • winsize : the number of neighbouring window of frames that MRO performs feature matching on.

  • img_width: image width

  • img_height: image height

In /src/IRotAvg.cpp

  • rotavg_win_size : number of nodes that the underlying incremental rotation averaging solver takes in during optimisation

  • vg_min_matches : minimum number of feature matches to be considered a pair of frames that are viewing the same scene.

About

Monocular Rotational Odometry with Incremental Rotation Averaging and Loop Closure

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages