VS2015 + Opencv2.4.13.6-vc14 + cmake 3.8.0+logi HD720P+ Intel Core i7-8700@3.2GHz 3.19GHz RAM 8G 64Bit
1.有现成依赖库的,打开翻墙软件下载快.
a. opencv:下载OpenCV库,直接解压安装在D:\ORB-SLAM2\Thirdparty目录下。
b.eigen库: 下载地址,同样解压在D:\ORB-SLAM2\Thirdparty下。
2.需编译依赖库的.
a.DBoW2库(用于重定位与回环检测,通俗讲法:重定位就是指在Camera所拍摄图像变化太快时,在特征点跟丢后,可利用词袋模型去匹配场景中的物体,匹配时若发现相似度接近某一个阈值,就认为找到之前的一个相似场景,则系统就可重新追踪到特征点再次运行。回环检测就是由于Camera在运行的过程中会有累计误差,这个误差会越来越大,因此,当Camera回到原来经过的位置时,可再次利用词袋模型匹配场景的方法(如上面重定位),来识别出此刻Camera的位置坐标,同时用这个坐标值来优化之前的轨迹估计值,使得运动轨迹更加精确。),与ORB_SLAM2库打包在一起了,但还是在D:\ORB-SLAM2\Thirdparty下,Cmake,先在该目录下创建一个目录D:\ORB-SLAM2\Thirdparty\build:
填上OpenCV_DIR:D:\ORB-SLAM2\Thirdparty\OpenCV\build\x64\vc14\lib 再Configure -> Generate -> Open Project 跑一遍。
选择Release|x64 , 编译报错:
2>d:\orb-slam2\thirdparty\dbow2\dbow2\TemplatedVocabulary.h(27): fatal error C1083: 无法打开包括文件: “opencv2/core/core.hpp”: No such file or directory
选中DBoW2 属性 添加包含:
编译成功:
最后得DBoW2.lib
b.g2o库:也是与ORB_SLAM2一起的。用于做图优化,即优化精确计算结果。
与DBoW2一样,在目录下创建一个build目录,CMake跑一遍。
出现CMake Warning,不用理会,继续Generate -> Open Project
同样选择Release|x64, ALL_BUILD 生成,报错 找不到标识符 vasprintf:
此时,添加预处理宏定义:
编译成功 生成g2o.lib:
c.Pangolin: 是一款开源的OpenGL显示库,作用是做系统交互和视频显示
用cmake如上g2o一样,跑一遍。
没有warning也没有报错。直接生成,此处需要注意的是在编译Pagolin的过程中,会在线从服务器上下载一些依赖库,整个编译耗时大概18分钟。(这些依赖库的下载需要打开翻墙软件,编译过程中会出现一些错误,比如缓存空间不够,通过gitbash扩大即可,都可在Google或必应找到方法解决。)
有一个生成失败,报错如下,该错不用理会:
可看到lib下生成pangolin.lib:
到此,编译orb_slam2的所有依赖库均已得到。
同理,CMake跑一遍。报错:
填写OpenCV_DIR:D:\ORB-SLAM2\Thirdparty\OpenCV\build\x64\vc14\lib
同样,选择Release|x64 ALL_BUILD,建一个单目测试工程My_Monocular,编译时报错:
编译过程中报错好几处,大概都是缺少包含,包含进去即可。最终编译成功如下:
将其设为启动项:
在周围空间移动了一下Camera后,建图效果如下,输出准确的三维空间坐标: