你好! 笔者刚刚接触vslam,目前正在学习orbslam2开源项目,博客只是作为一种记录学习的工具,归纳和整理总结自己的学习过程,同时希望也可以帮助到大家.文中有不当之处欢迎指正.
下载ORB-SLAM2
从github上下载源码:https://github.com/raulmur/ORB_SLAM2,也可以直接取github官网直接搜索你要下载的源码,比如搜索"ORB-SLAM2"这个好处就是万一github主删除了开源代码,你也通过搜索去寻找其他人的.
编译ORB-SLAM2
ORB_SLAM2是一个相对较大的工程,所以要编译的源文件有很多,我们要是跟往常一样逐个编译,是很低效的,所以他们就写了一个.build.sh的文件,这个文件内部主要就是告诉系统要编译哪些文件,而我们只要运行.build.sh就可以把
rgbd_tum.cc编译成rgbd_tum可执行文件;
把stereo_kitti.cc编译成stereo_kitti可执行文件
把stereo_euroc.cc编译成stereo_euroc可执行文件;
把mono_tum.cc编译成mono_tum可执行文件;
把mono_kitti.cc编译成mono_kitti可执行文件;
把mono_euroc.cc编译成mono_euroc可执行文件;
cd ORB_SALM2
chmod +x build.sh
./build.sh
笔者在编译过程出现的错误
最开心的是能从网上找到开源程序,崩溃的就是编译各种报错的令人想放弃,从网上Download的程序很少有直接编译没有一点错误的,这主要都是根据不同的电脑环境造成的,所以根据我自己的经验一般问题处理的着手点有CMakeLists.txt , 调用库是否正常安装 , 头文件名 , 代码里面的文件路径问题
笔者编译过程仅出现如下错误:
error: ‘usleep’ was not declared in this scope
解决方式:在报错提示相应的.cc文件中添加#include<unistd.h> 即可.
如果遇到相关库的问题,可以直接安装高博十四讲中提供的非模板类库(第一版),可以直接拷贝过来,然后编译安装
下载数据集
我们发现编译好的ORB_SLAM2只有对应的三个数据集的可执行文件,没有对应的运行数据集.
以Monocular运行tum数据集为例
比如运行Monolcuar中的TUM数据集,首先下载fr1_xyz数据集,该数据集比较常用,文件大小也只0.47GB.
TUM数据集下载链接:https://vision.in.tum.de/data/datasets/rgbd-dataset/download
运行ORB_SLAM2
编译好之后,直接进入到/Examle下,分别有四个文件:单目,双目,深度,ROS
cd ORB_SLAM/Examples/Monocular
#具体的文件路径需根据自己电脑文件位置稍作修改
./mono_tum ../../Vocabulary/ORBvoc.txt ./TUM1.yaml ./rgbd_dataset_freiburg1_xyz
运行结果
图片:
笔者的机器配置是笔记本corei7 7700HQ NVIDIA 1050 8GB,初始化的时间有六七秒,时间比较长,应该是和配置有关,对此我也不是特别清楚.