ORB-SLAM2-DualCam
ORB-SLAM2-DualCam copied to clipboard
🎓 SJTU M.S. Dissertation. 基于多相机的同步定位与建图方法研究
ORB-SLAM2-DualCam
change log:
-
2020.05.17
Tested on Ubuntu 18.04 with OpenCV 3.4.0. Fixed bugs mentiond in issue #2. Resolved several warnings.
1. Introduction
Backup of my Master Dissertation(知网) at Shanghai Jiao Tong University .
Demo on [YouTube] and [bilibili].
ORB-SLAM2-DualCam is a real-time SLAM library implemented for the Dual Camera Model (2 cameras without common-view). The system modifies the state-of-the-art ORB-SLAM2 to run on dual pinhole camera model. Our Dual Camera SLAM (DCS) is able to compute the camera metric trajectory (Pose) and recover a sparse metric structure (Map) of the environmen in real-time. Owing to the lack of common-view, dual camera SLAM cannot use the classical stereo initialization to link 2 cameras in map and to retrive metric scale. The initialization procedures are thus divided in to four sequential parts: 1) monocular initialization, 2) mono SLAM while searching for cross-camera relocalization in the mean time, 3) dual initialiazation and scaling map, 4) gloabal BA. In conclusion, DCS merges the observations from the array of cameras, uses sparse visual features to generate 3D map points, retrieves metric scale in virtue of the camera extrinsic calibrations, optimizes local map in a graph structure and estimates system status inside the local map. Besides, the relocalizaton and loop closure are also implemented in DCS to make it as a complete SLAM system. Our DCS can also be extend to multiple camera system, in which the common-view between each camera is not complustory thus the field of view is more widened.
![](https://github.com/lixiny/ORB-SLAM2-DualCam/raw/master/doc/dual_camera_model.jpg)
We provide an example of our self-collected video sequence at [Google Drive] or [百度云](i871
).
2. Prerequisites
We have tested the library in Ubuntu 16.04, 18.04. A powerful computer (e.g. i7) will ensure real-time performance and provide more stable and accurate results.
C++11 or C++0x Compiler
We use the new thread and chrono functionalities of C++11.
Pangolin
We use Pangolin for visualization and user interface. Dowload and install instructions can be found at: https://github.com/stevenlovegrove/Pangolin.
OpenCV
We use OpenCV to manipulate images and features. Dowload and install instructions can be found at: http://opencv.org.
Tested on OpenCV 3.3.1 (installed along with ros-kinetic-full), 3.4.0 (build from source)
Eigen3
Required by g2o (see below). Download and install instructions can be found at: http://eigen.tuxfamily.org. Required at least 3.1.0.
DBoW2 and g2o (Included in Thirdparty folder)
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.
NOTICE : The g2o library is different from the one in ORB-SLAM2 due to we add edges that support dual camera pose.
3. Building ORB-SLAM2-DualCam library and examples
Clone the repository:
git clone https://github.com/lixiny/ORB-SLAM2-DualCam.git
We provide a script build_project.sh
to build the Thirdparty libraries and ORB-SLAM2-DualCam. Please make sure you have installed all required dependencies (see section 2). Execute:
cd ORB_SLAM2-DualCam
chmod +x build_project.sh
./build_project.sh
This will create libORB_SLAM2_DualCam.so at lib
folder and the executables at ./build/Dual
folder
4. Test on examples
- download our examples video:
indoor_lab_loop.avi
at [Google Drive] or [百度云](i871
), and put it in this directory. - download Vocabulary File
ORBvoc
fromVocabulary/download_link.txt
- and execute the followling command
./build/Dual/dual_slam_video Vocabulary/ORBvoc.bin Dual-LenaCV.yaml indoor_lab_loop.avi