ORB-SLAM2_github源码说明(1)

来源:互联网 发布:网络机顶盒链接显示器 编辑:程序博客网 时间:2024/06/03 15:37

From README.md

ORB-SLAM2

作者 Raul Mur-ArtalJuan D. TardosJ. M. M. Montiel and Dorian Galvez-Lopez (DBoW2)

2017/1/13支持OpenCV 3和Engen3.3运行库

2016/22/12添加虚拟现实例程(详见第七部分)

ORB-SLAM2适用于单目、立体、RGB-D照相机,是一种实时的SLAM库,用来计算相机的轨迹和稀疏的三维重建地图(在立体或RGB-D相机中具有真实的尺度)。它可以进行回环检测并实时定位相机。我们基于KITTIdataset提供了单目或立体相机SLAM系统运行案例、基于TUM dataset提供了RGB-D或单目SLAM系统运行案例以及基于EuRoC dataset提供了立体相机或单目SLAM系统运行案例。我们也提供了一个ROS节点来执行单目、立体、RGB-D进程流。该库可在飞ROS环境下编译运行。ORB-SLAM2提供了可视化程序实现在SLAM模式和定位模式的切换,详见本文档的第九部分。

相关发表:

[Monocular] Raúl Mur-Artal, J. M. M.Montiel and Juan D. Tardós.ORB-SLAM: AVersatile and Accurate Monocular SLAM System. IEEE Transactions on Robotics, vol. 31,no. 5, pp. 1147-1163, 2015. (2015 IEEETransactions on Robotics Best Paper Award).PDF.

[Stereo and RGB-D] Raúl Mur-Artal andJuan D. Tardós.ORB-SLAM2: an Open-Source SLAM Systemfor Monocular, Stereo and RGB-D Cameras.IEEE Transactions on Robotics, vol. 33,no. 5, pp. 1255-1262, 2017. PDF.

[DBoW2Place Recognizer] Dorian Gálvez-López and Juan D. Tardós.Bags of Binary Words for Fast Place Recognition inImage Sequences.IEEE Transactionson Robotics, vol. 28, no. 5, pp. 1188-1197, 2012. PDF

1.许可说明

ORB-SLAM2获得GPLv3license许可。所有代码库的依赖(包括相关的许可证)详见Dependencies.md。

For a closed-source version of ORB-SLAM2 for commercialpurposes, please contact the authors: orbslam (at) unizar (dot) es.

If you useORB-SLAM2 (Monocular) in an academic work, please cite:

@article{murTRO2015,

  title={{ORB-SLAM}: a Versatile and AccurateMonocular {SLAM} System},

  author={Mur-Artal, Ra\'ul, Montiel, J. M. M.and Tard\'os, Juan D.},

  journal={IEEE Transactions on Robotics},

  volume={31},

  number={5},

  pages={1147--1163},

  doi = {10.1109/TRO.2015.2463671},

  year={2015}

 }

if you useORB-SLAM2 (Stereo or RGB-D) in an academic work, please cite:

@article{murORB2,

  title={{ORB-SLAM2}: an Open-Source {SLAM}System for Monocular, Stereo and {RGB-D} Cameras},

  author={Mur-Artal, Ra\'ul and Tard\'os, JuanD.},

  journal={IEEE Transactions on Robotics},

  volume={33},

  number={5},

  pages={1255--1262},

  doi = {10.1109/TRO.2017.2705103},

  year={2017}

 }

2.先决条件

我们在Ubuntu12.04,14.04,和16.04中测试过该库,在其他平台中理应也可以编译通过。强劲的计算机(如i7)可以保证实时性能,提供更稳定更精确的结果。

C++11or C++0x编译器

我们使用C++11最新的线程和计时功能。

Pangolin

我们使用Pangolin作为可视化工具和用户接口。下载和安装说明可参考:https://github.com/stevenlovegrove/Pangolin.

OpenCV

我们使用OpenCV处理图像和特征。下载和安装说明可参考:http://opencv.org.至少需要2.4.3.。测试了 OpenCV 2.4.11 和 OpenCV 3.2

Eigen3

由于g2o的需要(见底部),Eigen3下载和安装说明可参考:http://eigen.tuxfamily.org.。至少需要3.1.0

DBoW2and g2o (Included in Thirdparty folder)

我们使用改进的DBoW2库来实现场景识别,使用g2o库来实现非线性优化。这些改进库(BSD许可协议)均包含在Thirdparty folder中。

ROS (optional)

我们在实时的单目、立体或RGB-B相机的输入下提供一些基于ROS平台的范例。运行这些例程是选择性的。若你希望使用ROS,a version Hydro or newer is needed。

3.建立ORB-SLAM2库及其例程

复制项目

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

我们提供脚本build.sh来建立Thirdparty libraries和ORB-SLAM2。请确保你已经安装了所有需要的依赖项(详见第二部分)。执行:

cd ORB_SLAM2
chmod +x build.sh
./build.sh

这会将基于lib folder创建libORB_SLAM2.so,以及Examples folder创建可执行部分mono_tum,mono_kitti,rgbd_tum,stereo_kitti,mono_eurocandstereo_euroc

4.单目例程

TUM数据集

1.从http://vision.in.tum.de/data/datasets/rgbd-dataset/download下载数据目,并将其解压。

2.执行以下命令。Change TUMX.yaml to TUM1.yaml,TUM2.yaml or TUM3.yaml for freiburg1, freiburg2and freiburg3 sequences respectively. ChangePATH_TO_SEQUENCE_FOLDERto the uncompressed sequence folder.

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
 

KITTI数据集

1.从http://www.cvlibs.net/datasets/kitti/eval_odometry.php下载数据集(灰度图)。

2.执行以下命令。Change KITTIX.yamlby KITTI00-02.yaml, KITTI03.yaml or KITTI04-12.yaml for sequence0 to 2, 3, and 4 to 12 respectively. ChangePATH_TO_DATASET_FOLDER to the uncompressed dataset folder. Change SEQUENCE_NUMBER to 00, 01, 02,.., 11.

./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
 

EuRoC数据集

1.从http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets下载数据目(ASL格式)。

2.用V1和V2数据目执行下面的第一条命令,或是用MH数据目执行第二条指令。ChangeTUMX.yaml to TUM1.yaml,TUM2.yaml or TUM3.yaml for freiburg1, freiburg2and freiburg3 sequences respectively. Change PATH_TO_SEQUENCE_FOLDER andSEQUENCE according to the sequence you want to run.

./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH_TO_SEQUENCE_FOLDER/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/SEQUENCE.txt 
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH_TO_SEQUENCE/cam0/data Examples/Monocular/EuRoC_TimeStamps/SEQUENCE.txt