在Windows10系统上编译ORB_SLAM3的过程以及遇到的坑的总结


本人保研到华中科技大学计算机学院媒体所的管涛教授手下,管涛老师主攻方向为视觉方向,最近罗列一下如何编译ORB_SLAM3以及编译过程中踩到的坑,供自己以后借鉴以及后人学习。

1 git下载源码

ORB_SLAM3的github仓库地址为:https://github.com/UZ-SLAMLab/ORB_SLAM3.
但是程序原本是在Linux操作系统下进行编写的,辜希武老师讲过一句非常经典的话:C++的可移植性问题一直是一个大问题。在github上也有许多对源程序进行改动后方便在windows10系统下进行编译:
例如该仓库:https://github.com/melhashash/orbslam3-windows.

git clone https://github.com/melhashash/orbslam3-windows

1.1 git clone可能出现的问题

1、fatal: unable to access ‘https://github.com/…’
解决方案按照博客https://blog.csdn.net/qq_33349365/article/details/101514412进行,顺利通过
2、RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errfno 10054
解决方案按照博客https://www.cnblogs.com/qianshouxiuluo/p/11662616.html进行,顺利通过

2 编译第三方库

ORB_SLAM3论文地址:https://arxiv.org/pdf/2007.11898.pdf

2.1 所依赖的第三方库

boost库,如何编译Boost库不是该文章要讨论的重点,可以直接使用vcpkg install boost或者直接安装预编译的版本。或者下载然后编译,过程也比较简单,在本任务中使用的boost版本为1.66。
eigen库,同理,直接vcpkg install eigen3
opencv库,本人使用的opencv版本为4.5.2,官网直接下载便可安装。此处不再赘述。

2.2 DBow2编译

用于SLAM回环检测,具体流程如下:
打开CMake GUI界面,在/Thirdparty/DBow2目录下新建一个文件夹build。
然后找到source code即/Thirdparty/DBow2,以及build,即DBow2目录下的build文件夹。
点击configure,需要输入opencv的目录,为E:/3DAbout/opencv/build
再点击configure,出现Configurating done的提示。
然后点击generate,出现Generating done的提示。
用VS2019打开DBow2.sln,然后进行如下操作:将配置改成release,同时右键项目==> 属性 ==> 常规 ==> 配置类型 ==> 静态库(.lib);属性 ==> 高级 ==> 目标文件扩展名 ==> .lib;C/C++ ==> 代码生成 ==> 运行库 ==> 多线程 (/MT)
右键项目 ==> 生成,即可看到生成好的lib文件Thirdparty/DBoW2/lib/Release/DBoW2.lib

2.3 g2o编译

用于图优化的框架,具体流程如下:
打开CMake GUI界面,在Thirdparty/g2o目录下新建一个文件夹build。
与DBow2的编译同理,选定source code和build,然后进行相应的配置,此处需要选定Boost的目录。
再点击configure,出现Configurating done的提示。
然后点击generate,出现Generating done的提示。
用VS2019打开g2o.sln,然后进行如下操作:将配置改成release,同时右键项目==> 属性 ==> 常规 ==> 配置类型 ==> 静态库(.lib);属性 ==> 高级 ==> 目标文件扩展名 ==> .lib;C/C++ ==> 代码生成 ==> 运行库 ==> 多线程 (/MT)
右键项目 ==> 生成,即可看到生成好的lib文件Thirdparty/g2o/lib/Release/g2o.lib

2.4 Pangolin编译

用于3D视觉和3D导航的视觉图和用户之间的交互。这里其实和编译ORB_SLAM3没有关系,但是我们使用ORB_SLAM3库的时候应用的例子上是需要这个库的。具体过程如下:
于Thirdparty目录下(其他目录也行),下载Pangolin的源码

git clone https://github.com/stevenlovegrove/Pangolin/

进入Pangolin的目录下,新建一个build文件夹,与上面同理进行CMake的操作,不再赘述。
然后用VS2019打开Pangolin.sln,将配置改成release,同时右键项目==> 属性 ==> 常规 ==> 配置类型 ==> 静态库(.lib);属性 ==> 高级 ==> 目标文件扩展名 ==> .lib;C/C++ ==> 代码生成 ==> 运行库 ==> 多线程 (/MT)。
然后右键pangolin进行生成,发现出现了很多bug。打开variant.hpp,将

#define MPARK_CPP14_CONSTEXPR

这行代码注释掉,即可通过编译。然后得到生成的.lib文件,于目录Thirdparty/Pangolin/build/src/Release目录下。

3 编译ORB_SLAM3

orb_slam3的编译也与上述的流程相差无几。
打开CMake GUI,选择源码和安装的文件夹(源码下的build文件夹),然后点击configure和generate,如果此处出现问题自行google解决。
然后用VS2019打开项目,将配置改成release,同时右键项目==> 属性 ==> 常规 ==> 配置类型 ==> 静态库(.lib);属性 ==> 高级 ==> 目标文件扩展名 ==> .lib;C/C++ ==> 代码生成 ==> 运行库 ==> 多线程 (/MT);C/C++ ==> 预处理器 ,添加以下预编译器定义
WINDOWS
COMPILEDWITHC11
右键项目 ==> 生成,即可看到生成好的lib文件ORB_SLAM3/build/Release/ORB-SLAM3.lib

4 编译测试样例stereo_inertial_euroc

用VS2019打开ORB_SLAM3.sln然后右键项目stereo_inertial_tum_vi ==> 属性 ==> C/C++ ==> 代码生成 ==> 运行库 ==> 多线程 (/MT);C/C++ ==> 预处理器 ,添加以下预编译器定义COMPILEDWITHC11;链接器 ==> 高级 ==> 导入库,改为空;链接器 ==> 输入 ==> 去掉…\Thirdparty\boost_1_67_0\lib64-msvc-14.1\libboost_serialization-vc141-mt-s-x64-1_67.lib并且加入自己安装的boost的libboost_serialization-vc141-mt-s-x64-1_66.lib(由于此处的boost是自己安装的,所以应该将该部分改掉)。右键项目 ==> 生成,即可看到生成好的exe文件ORB_SLAM3/Examples/Stereo-Inertial/Release/stereo_inertial_tum_vi.exe

4.2 下载测试数据集

测试数据集的下载地址如下:
https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
下载ROS bag的第一个数据集,下载完之后解压并把数据放置于\Examples\Stereo-Inertial路径下,并重命名为MH01
开启程序:.\stereo_inertial_euroc.exe …\Vocabulary\ORBvoc.txt …\EuRoC.yaml …\MH01\ …\EuRoC_TimeStamps\MH01.txt dataset-MH01_stereoi
然后即可看到运行结果

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值