Skip to content

jiawei-mo/scale_optimization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Extending Monocular Visual Odometry to Stereo Camera Systems by Scale Optimization

Copyright (c) <2019> <Jiawei Mo, Junaed Sattar>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Introduction

This is the implementation of Extending Monocular Visual Odometry to Stereo Camera Systems by Scale Optimization. Here, we adapted DSO as our underlying monocular visual odometry.

VirtualBox Trial

Here is a VirtualBox with the project installed for the readers who would like to try the project without installation. The password is 123.

Dependencies

DSO

ROS

Installation

install [DSO](https://github.com/JakobEngel/dso)
change DSO_PATH in CMakeLists.txt: set(DSO_PATH PATH_TO_DSO)

cd ~/catkin_ws/src
git clone https://github.com/jiawei-mo/scale_optimization.git
cd ~/catkin_ws
catkin_make

Usage

  • Calibrate stereo cameras, using the format of examples in cams. Refer to DSO for more details of intrinsic parameters.

  • Create a launch file by the format of launch/sample.launch.

roslaunch so_dso [YOUR_LAUNCH_FILE]
  • Ctrl-C to terminate and the output files will be written to .ros folder.

Output files

  • poses.txt: poses of all frame, using the TUM RGB-D / TUM monoVO format ([timestamp x y z qx qy qz qw] of the cameraToWorld transformation).
  • fps_time.txt: runtime of each frame.
  • scale_time.txt: runtime of scale optimization.
  • ba_time.txt: runtime of bundle adjustment.

Parameters

The only extra parameter of this work over DSO is the scale_accept_th, which is the threshold to accept a result from scaler optimizer. Usually, it is around 10-15.

Code Explaination

  • The core of scale optimization is implemented in src/ScaleOptimizer; src/ScaleAccumulator handles SSE operations in scale optimization.
  • We augmented FullSystem of DSO to src/SODSOSystem with scale optimization.
  • The files in src/dso_helpers are helpers for DSO which are directly copied from DSO.
  • The main() locates in src/so_dso_node.cpp.

Tests on EuRoC dataset

In the start of EuRoC dataset,the drone is flying up down and looking at very close objects (e.g. the wood platform). These cases are too challenging for the initialization of scale optimization (i.e. find an initial scale in a brute-force way). The system achieves better performance if the start part is skipped.

About

Extend DSO to a stereo system by scale optimization

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published