学习slam就不得不提经典框架orbslam2,了解其运行是我们的第一步。
本教程为orbslam2的下载安装过程中操作集合。
目录
error: ‘usleep‘ was not declared in this scope
一、orbslam2下载
有一个别人写的简介:EuRoC数据集介绍_可即的博客-CSDN博客_euroc数据集
我们利用命令行,进入预先准备好的文件夹,我将其放在了 /home/用户名/slam/ 文件夹内:
cd /home/用户名/slam
下载源码:
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
如果文件夹名字不对可以改成ORB_SLAM2。这样源码就下载在 /home/用户名/slam/ORB_SLAM2 文件夹内。
之后,按照官网例程。编译:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
中间我遇到的问题是:
error: ‘usleep‘ was not declared in this scope
解决办法为:对应.cc文件中添加一行引用
#include <unistd.h>
这个很多文件都报错,基本src文件夹内的还有Examples文件夹内的.cc文件大部分都要加上这个库函数引用。引用完基本就不报错了。运行结果为:
至此,安装编译完成。后面我们需要下载数据集验证。
二、EuRoC数据集下载和使用
这里主要参考了ORB-SLAM、ORB-SLAM2跑通,运行EuRoC数据集,用EVO评估_叫我环少的博客-CSDN博客和
和orb-slam2跑通EuRoC数据集,并用evo对其进行评估(详细)_渣渣的小王的博客-CSDN博客_orbslam2数据集
两篇文章。主要思路就是下载数据集、运行,运行的代码需要稍微改下地址,其他基本安装orbslam2官网一样。官网上的命令是:
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH_TO_SEQUENCE_FOLDER/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/SEQUENCE.txt
核心点就是倒数第二项的数据所在路径需要我们更改为自己的。
1.下载数据集
数据集官网地址为:
kmavvisualinertialdatasets – ASL Datasets
其下载界面为:
选一个下载就行,我下载了Machine Hall 05和04,这些下载后解压文件都是一个mav0的文件夹。为了好辨认,可以创建一个EuRoC文件夹放进去。这样数据路径为:/home/用户名/slam/EuRoC
注意:下载的是ASL Dataset Format形式的(后面用ros可能需要ros bag形式)
对应的,我的路径为:
/home/qianmengyu11/slam/EuRoC/mav0
2.运行数据集
前面说过,官网命令为:
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml PATH_TO_SEQUENCE_FOLDER/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/SEQUENCE.txt
需要更改的是后面两项,倒数第二项需要填入我们的数据地址,即为:
/home/qianmengyu11/slam/EuRoC/mav0/cam0/data
倒数第一项我们根据下载的是哪个数据包,改为:
Examples/Monocular/EuRoC_TimeStamps/MH05.txt
如果是Machine Hall 05就写MH05.txt,如果是Machine Hall 04就写MH04.txt。
综合,在终端运行的命令为(仍位于 /home/用户名/slam):
./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml /home/qianmengyu11/slam/EuRoC/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/MH05.txt
3.运行结果
运行结果为: