ORBSLAM3编译
1.前置环境配置
因为我之前安装过C++,Pangolin,eigen,DBoW2,g2o,boost的依赖,所以不需要再次安装,没有安装过的同学可以查看这篇博文。
注意:一定要查看自己的OPENCV版本,确保其高于3.4.0。我因为OPENCV版本低于3.4.0,所以导致编译一直报错,弄了好久才发现是因为OPENCV版本过低,故而源码使用的FileNode类中real()方法不存在,导致一直编译不过。
2.源码下载
- 环境配置完成之后,下载ORBSLAM3的源码:下载地址
- 解压到桌面
- 使用终端打开该文件夹
- 调整内存值
mkdir swap
cd swap
sudo dd if=/dev/zero of=sfile bs=1024 count=2000000
sudo mkswap sfile
sudo swapon sfile
- 修改源码
// 修改1:CMakeLists.txt文件
findpackage(OPENCV 4)
// 修改为:
findpackage(OPENCV 3 REQUIRED)
// 修改2:KannalaBrandt8.cpp,LocalMapping.cc
// 在include之后添加如下代码
namespace cv
{
template<typename _Tp, int m, int n> static inline
Matx<_Tp, m, n> operator / (const Matx<_Tp, m, n> &a, float alpha)
{
return Matx<_Tp, m, n>(a, 1.f / alpha, Matx_ScaleOp());
}
}
- 进行编译
mkdir build
cd build
cmake ..
make -j4
- 测试数据集
注意:要将数据集解压后放入对应名称的文件夹中才可以
例如: 下载了MH_O1_EASY数据集
你需要将解压得到的MH_01_EASY文件夹 名称修改为 MHO1
确保你的文件路径为:/###/###/MH##
然后执行如下代码:
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml "$pathDatasetEuroc"/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
其中"$pathDatasetEuroc"/MH01 替换为你数据集的地址即可
3.结果展示
我Ubuntu关机了,所以就展示一下别人的结果吧,意思是一致的。