Authors: Joan P. Company-Corcoles, Emilio Garcia-Fidalgo and Alberto Ortiz
Exploiting Manhattan and Structural Constraints for Visual Odometry. [UnderReview]
MSC-VO is a novel RGB-D visual odometer that increases the performance of the traditional point-based methods by combining points and lines as visual features. Furthermore, to increase the performance in low-textured environments, it leverages structural constraints and Manhattan Axes (MA) alignment in the local map optimization stage.
MSC-VO is released under a GPLv3 license. For a list of all code/library dependencies (and associated licenses), please see [Dependencies_MSC-VO.md].
We use Pangolin for visualization and user interface. Download and install instructions can be found at: https://github.com/stevenlovegrove/Pangolin.
We use OpenCV to manipulate images and features. Download and install instructions can be found at: http://opencv.org. Tested with OpenCV 3.2.
Required by g2o (see below). Download and install instructions can be found at: http://eigen.tuxfamily.org. Required at least 3.1.0.
We use modified versions of the DBoW2 library to perform place recognition and g2o library to perform non-linear optimizations. Both modified libraries (which are BSD) are included in the Thirdparty folder.
MSC-VO has been evaluated in the ICL-NUIM and the TUM datasets. Furthermore, it has been executed in custom datasets where images are obtained by a RealSense D435.
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.bin Examples/RGB-D/DATASET_CONFIG.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE BOOL_USE_VIEWER
-
Download a sequence from http://vision.in.tum.de/data/datasets/rgbd-dataset/download and uncompress it.
-
Associate RGB images and depth images using the python script associate.py. We already provide associations for some of the sequences in Examples/RGB-D/associations/. You can generate your own associations file executing:
python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt
- Execute the following command. Change
TUMX.yaml
to TUM1.yaml,TUM2.yaml or TUM3.yaml for freiburg1, freiburg2 and freiburg3 sequences respectively. ChangePATH_TO_SEQUENCE_FOLDER
to the uncompressed sequence folder. ChangeASSOCIATIONS_FILE
to the path to the corresponding associations file.
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.bin Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE BOOL_USE_VIEWER