首页 文章详情

ORB-SLAM3在windows下的编译使用

3D视觉工坊 | 1074 2021-05-29 23:15 0 0 0
UniSMS (合一短信)
作者丨李小肥的YY@知乎
来源丨https://zhuanlan.zhihu.com/p/372299812
编辑丨3D视觉工坊

一. 数据集

1.1 数据集介绍

Euroc:基于室内的MAV(Micro Aerial Vehicle,微型飞行器,https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets),一共两个场景(Machine Hall + Vicon Room),其中每个数据集包含2个下载连接:
1)ROS(Robot Operating System) bag:机器人操作库,适用于嵌入式,这里推荐一个很好的双目+IMU应用在jetson nano上的git
2)ASL Dataset Format:数据集结构,包含传感器文件和双目相机的图片。

1.2 数据使用介绍

可用的数据包含:
1.2.1Visual-Inertial Sensor Unit(视觉惯性传感器单元)
·Stereo Images(双目图片)
·IMU(惯导数据)
1.2.2Ground-Truth位姿轨迹
·Vicon 6轴运动姿态捕捉系统
·Leica MS50 3维姿态镭射追踪
·Leica MS50 3维重构

1.3 IMU数据介绍

·w_RS_S_x [rad s^-1] :MAV在R坐标系下的x轴角速度信息,单位rad/s
·w_RS_S_y [rad s^-1] :MAV在R坐标系下的y轴角速度信息,单位rad/s
·w_RS_S_z [rad s^-1] :MAV在R坐标系下的z轴角速度信息,单位rad/s
·a_RS_S_x [m s^-2]:MAV在R坐标系下x轴的线加速度信息,单位m/s^2
·a_RS_S_y [m s^-2]:MAV在R坐标系下y轴的线加速度信息,单位m/s^2
·a_RS_S_z [m s^-2]:MAV在R坐标系下z轴的线加速度信息,单位m/s^2

二. 第三方包编译

ORB_SLAM3论文地址:https://arxiv.org/pdf/2007.11898.pdf
使用ORB_SLAM3官方git,推荐使用的系统为ubuntu 18.04,本人用win 10下进行测试的,这里推荐一个在win 10下编译ORB_SLAM3的git,目前在该仓库下编译运行没毛病!

2.1 前期依赖的第三方包

·eigen:线性算术的C++模板库(属于g2o的依赖),这里直接用vcpkg安装vcpkg install eigen
·boost:后面编译ORB_SLAM3库需要,这里也是直接用vcpkg安装vcpkg install boost
·opencv3.4.11:编译DBoW2和ORB_SLAM3需要。直接上官网下载exe即可,当然也可以利用vcpkg进行安装。

2.2 DBoW2

用于SLAM回环检测,这里需要配置opencv环境。具体过程如下:
·Thirdparty/DBoW2/CMakeLists.txt配置opencv3.4.11的路径
set(OpenCV_DIR "D:/software/opencv/opencv/build")
·Thirdparty/DBoW2路径下新建一个build文件夹,cmake生成cmake ..
·看到configuration done的时候,用vs2019打开build/DBoW2.sln
·将配置改成release,同时右键项目==> 属性 ==> 常规 ==> 配置类型 ==> 静态库(.lib);属性 ==> 高级 ==> 目标文件扩展名 ==> .lib;C/C++ ==> 代码生成 ==> 运行库 ==> 多线程 (/MT)
·右键项目 ==> 生成,即可看到生成好的lib文件Thirdparty/DBoW2/lib/Release/DBoW2.lib

2.3 g2o

用于图优化的框架。具体过程如下:
·Thirdparty/g2o路径下新建一个build文件夹,cmake生成cmake ..
·看到configuration done的时候,用vs2019打开build/g2o.sln
·将配置改成release,同时右键项目==> 属性 ==> 常规 ==> 配置类型 ==> 静态库(.lib);属性 ==> 高级 ==> 目标文件扩展名 ==> .lib;C/C++ ==> 代码生成 ==> 运行库 ==> 多线程 (/MT);C/C++ ==> 预处理器 ==>最上面加入WINDOWS
·右键项目 ==> 生成,即可看到生成好的lib文件Thirdparty/g2o/build/Release/g2o.lib

2.4 Pangolin

用于3D视觉和3D导航的视觉图和用户之间的交互。这里其实和编译ORB_SLAM3没有关系,但是我们使用ORB_SLAM3库的时候应用的例子上是需要这个库的。具体过程如下:
·Thirdparty/g2o路径下新建一个build文件夹,cmake生成cmake ..
·看到configuration done的时候,用vs2019打开build/Pangolin.sln
·将配置改成release,同时右键项目==> 属性 ==> 常规 ==> 配置类型 ==> 静态库(.lib);属性 ==> 高级 ==> 目标文件扩展名 ==> .lib;C/C++ ==> 代码生成 ==> 运行库 ==> 多线程 (/MT)
·这里是需要下载它依赖的其他库的,最好对git设置代理
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080
·右键ALL_BUILD ==> 生成,即可看到生成好的lib文件ThirdParty/Pangolin/lib/Release/pangolin.lib

三.编译ORB_SLAM3

·orbslam3-windows/CMakeLists.txt配置opencv3.4.11的路径
set(OpenCV_DIR "D:/software/opencv/opencv/build")
·orbslam3-windows的路径下新建一个build文件夹,cmake生成cmake ..
·看到configuration done的时候,用vs2019打开build/ORB_SLAM3.sln
·将配置改成release,同时右键项目==> 属性 ==> 常规 ==> 配置类型 ==> 静态库(.lib);属性 ==> 高级 ==> 目标文件扩展名 ==> .lib;C/C++ ==> 代码生成 ==> 运行库 ==> 多线程 (/MT);C/C++ ==> 预处理器 ,添加以下预编译器定义
WINDOWS
COMPILEDWITHC11
·右键项目 ==> 生成,即可看到生成好的lib文件ORB_SLAM3/build/Release/ORB-SLAM3.lib

四. 编译测试案例及展示

4.1 编译stereo_inertial_euroc

·用vs2019打开build/ORB_SLAM3.sln
·将配置改成release,同时右键项目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(由于这里是vcpkg安装的boost,因此该路径下根本没有这个lib)。
·右键项目 ==> 生成,即可看到生成好的exe文件ORB_SLAM3/Examples/Stereo-Inertial/Release/stereo_inertial_tum_vi.exe

4.2 使用展示案例stereo_inertial_euroc

这个案例是双目 + 惯导的Euroc数据集的应用。
·将下载好的数据集文件夹名字改成MH01(这里是由于本人下载是MH_01_easy.zip)
·进入到生成好的exe文件夹下cd orbslam3-windows\Examples\Stereo-Inertial\Release,可以看到生成好的stereo_inertial_euroc.exe
·开启程序:.\stereo_inertial_euroc.exe ..\..\..\Vocabulary\ORBvoc.txt ..\EuRoC.yaml ..\MH01\ ..\EuRoC_TimeStamps\MH01.txt dataset-MH01_stereoi
结果展示如下图所示:
本文仅做学术分享,如有侵权,请联系删文。
下载1
在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2
「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3
「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。


一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
 圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~  

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter