ORB-SLAM2源码分析和学习笔记01:ORB-SLAM2下载,编译,运行
ORB-SLAM2 简介
OR-B bags于2015年由Raúl等研究者开发的单目SLAM技术,在单目SLAM领域的应用非常广泛。详情可见论文:[Monocular] Raúl Mur-Artal, J. M. M. Montiel and Juan D. Tardós ORB-SLAM: A Versatile and Accurate Monocular SLAM System 第31卷第5期 第十一百四十七至十一百六十三页 (20十五 IEEETransactions on Robotics最佳论文奖) PDF.
基于单目ORB-SLAM的方法上,在过去一年中由Raul等一众学者开发出了ORB-SLAM2系统,并进一步支持了双目摄像头与RGB摄像头的应用。这一创新成果可在Raúl Mur-Artal与Juan D. Tardós合著的论文《ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras》中找到详细说明(见IEEE Transactions on Robotics期刊第33卷第5期第1255至第1262页)。这篇论文的全文可通过链接Pero PDF获取
在ORB-SLAM2论文中,针对单目视觉部分,作者仅进行了有限程度的优化,并未对单目实现的具体细节进行详细阐述。然而该方法引入了双目相机和支持RGB-D技术,但其实质仍建立在原有的单眼系统基础之上,并未从根本上改变原有的设计理念
下载
官方仓库下载地址:
raulmur/ORB_SLAM2: 具有循环检测与重定位能力的实时SLAM技术在单眼、双目及RGB-D相机上的应用 (github.com)
下载方式:
1.直接在github下载源码
- 克隆代码库:使用
git fetch clone命令克隆GitHub上的https://github.com/raulmur/ORB_SLAM2仓库(在克隆之前,请确保已安装git工具)
安装依赖
根据官方的文件readme.md,编译之前要安装好相关依赖
1.C++11 or C++0x Compiler
编译整个工程要用到c++11以上的编译器,要按照安装cmake,gcc,g++,终端输入:
sudo apt-get install cmake gcc g++
2.Pangolin
Pangolin是一个可视化绘图库,先安装需要的依赖
// 安装Pangolin所需依赖项
sudo apt-get install libglew-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
这里建议安装Pangolin0.6
//下载
git clone https://github.com/stevenlovegrove/Pangolin/releases/tag/v0.6
//编译
cd Pangolin
mkdir build && cd build
cmake ..
make
make install
//测试,若出现一个彩色方块,则安装成功
./HelloPangolin
3.opencv
opencv是一个计算机视觉库,这里建议安装opencv3.4,参考:
在Ubuntu系统中安装OpenCV 3.4.5(采用两种方法及图解说明)
4.Eigen3
Eigen3是一个矩阵库,要求版本至少大于3.1.0,参考:
ubuntu
ubuntu
ubuntu
5. DBoW2 and g2o
已经包括在Thirdparty 文件夹下了,编译的时候会一起编译的
编译
这里不编译build_ros.sh
在orb-slam2文件夹下打开终端
sudo chmod +x build.sh//赋予执行权限
./build.sh//作者写好的编译的脚本
ps.编译会需要几分钟,更改build.sh 文件中make 为make -j12 (使用cup12核编译)
编译可能会遇到一些问题时,可以通过查看错误信息来确定问题所在位置,然后按照以下步骤进行排查:第一步,检查自己的依赖安装状态;第二步,确认软件版本配置是否正确;如果以上方法行不通,则可以通过网络资源查找解决方案.
运行官方demo
以单目kitti数据集为例,运行Demo的命令:
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
其中
./Examples/Monocular/mono_kitti是被编译产生的二进制文件路径,在这里指的是单目-KITTI数据集中运行使用的程序路径
Vocabulary/ORBvoc.txt是视觉词典的路径
Examples/Monocular/KITTIX.yaml 是 kitti 数据集所对应的配置文件,在其中包含了相机内参、校正参数以及特征点提取等可调节的参数。
该路径位于$PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER中,请注意SEQUENCE_NUMBER与配置文件中的序列号一致。
