SLAM
最近想要进行基于图像序列的三维重建研究,首先的想法就是采用SLAM方法进行地图重建。在网上很容易找到了大神"半闲居士"的博客《一起做RGB-D SLAM》系列,大神的博客循序渐进,最终完成一个简单、完整的SLAM程序。虽然其中有些部分还没有搞的太明白,但较之前的小白有了质的提升。
接下来将要写下进行SLAM程序编写中的环境配置心得(大神"半闲居士"是在Linux下进行的,而我将要在windows下进行,其中大部分过程相同,有极小部分不同,推荐大家先看完大神的《一起做RGB-D SLAM》系列)
首先,我们都需要什么:
-
OpenCV 图像处理库 (毕竟我们是基于图像的)
-
PCL 点云库
2.1. Boost
2.2. Eigen
2.3. FLANN
2.4. OpenNI2
2.5. Qhull
2.6. VTK
(在这篇博客撰写之时 PCL库下载后就包括了 Boost、Eigen、FLANN、OpenNI2、Qhull、VTK等库所以我们就不用操心太多了,否则将会是一个浩大的工程)
- g2o 通用图优化(这个配起来是真的烦)
3.1 cmake 对源码进行编译生成基于我们系统和编译器的工程,对形成的工程进行编译获得最终我们使用的库
(include、lib、dll)
3.2. suitesparse
3.3. Qt
3.4. libQGLViewer
接下来我们开始一个库一个库的进行生成(其中版本是我所用的版本),我们最终在程序中使用的是库的include、lib和dll文件(配置过程请关闭你的360等安全软件)
- OpenCV 版本 2.4.13.5
(虽然opencv已经有OpenCV 3.x.x 版本,但其函数接口对于 2.4.x版本有较大改动,容易与其他 库不匹配)
首先,去OpenCV官网下载
https://opencv.org/releases.html
下载 2.4.13.5 的Win pack , 将会得到一个 opencv-2.4.13.5-vc14.exe ,运行它相当于一个解压的过程,安装在你想要安装的地方,例如 D:\Lib\,(建议在磁盘根目录下新建文件夹 Lib,将你所能用到的库都放在该目录下)。 安装完成后,你会得到一个opencv文件夹,文件夹下包含一个build文件夹和一个source文件夹(建议将opencv文件夹改名为opencv24135,因为有可能你今后会下载多个版本的库,做一个区分),其中我们所要用到的东西在build文件夹下。这样OpenCV就安装好了,使用OpenCV库就在D:\Lib\opencv24135
然后我们进行下配置
(1)添加环境变量(关掉vs),在 此电脑–>属性–>高级系统设置–>环境变量 对话框的下面 “系统变量(S)”里找到 Path 双击 在弹出的“编辑环境变量”中单击 新建 将你所用到的opencv库的dll文件夹地址添加到新的环境变量中
如:D:\Lib\opencv24135\build\x64\vc14\bin
( 一般的库会包括 x86、x64、debug、release的选择 我们所配置的是x64的debug版本,之后提到的安装均如此 如果想使用x86 或release 就将相应的文件夹添加到环境变量,如:D:\Lib\opencv24135\build\x86\vc14\bin )
(2)到此opencv库配置已经完成,如果想在工程中使用该库 就在你工程的属性中 的 VC++路径 选项内的 include路径 和lib路径 添加你的opencv库路径 ,并将你所用到的lib名称添加到 Linker 的Input 中的addition dependencies(附加依赖项)中。这时你就可以尽情使用opencv了。详细图文方法可在网上搜opencv环境配置。(注意 他的版本与我的不同 .lib用自己的版本,而且 她采用的是配置属性表 我是在工程的属性中修改,我采用的方法在每新建一次工程都需要从新配置)
如 Include Directories: D:\Lib\opencv24135\build\include
Library Directories: D:\Lib\opencv24135\build\x64\vc14\lib
Addition dependencies
opencv_calib3d2413d.lib
opencv_contrib2413d.lib
opencv_core2413d.lib
opencv_features2d2413d.lib
opencv_flann2413d.lib
opencv_gpu2413d.lib
opencv_highgui2413d.lib
opencv_imgproc2413d.lib
opencv_legacy2413d.lib
opencv_ml2413d.lib
opencv_nonfree2413d.lib
opencv_objdetect2413d.lib
opencv_ocl2413d.lib
opencv_photo2413d.lib
opencv_stitching2413d.lib
opencv_superres2413d.lib
opencv_ts2413d.lib
opencv_video2413d.lib
opencv_videostab2413d.lib
- PCL 版本PCL1.8.0
下载 PCL 1.8.0 All-in-one Installer MSVC2015 x64
地址:http://unanancyowen.com/en/pcl18/
具体配置请看 gakki_Yuibo 的 《VS2015配置PCL1.8.0详细教程》+bohaijun_123的 《win7下的PCL1.8-X64-VS2015配置(内含下载链接)》 (20181130后记 已经出了PCL181 使用PCL181进行配置没有问题出现 推荐采用PCL181)
(我是真的懒,看看有空的时候做一遍补上)
当然,以我的性格 我将PCL安装到了 D:\Lib\PCL180 下,文件夹下包括了 3rdParty 这下面包含了 上面提到的Boost、Eigen、FLANN、OpenNI2、Qhull、VTK库。
- G2O (复杂的地方来了)版本 master
下载 g2o-master.zip (Clone or download -->Download ZIP)
地址:https://github.com/RainerKuemmerle/g2o
具体配置请看
shadingwalker 《Windows+Visual Studio下生成g2o库教程(结合Cholmod库)》和
cc_sunny 的《关于SLAM的那些事——通用图优化(G2O)环境搭配(windows8.1 vs2013)》
这里做下说明 基本上可以按照cc_sunny的博文进行,但是shadingwalker添加了Cholmod库,有很大几率在以后会用到 所以建议加入Cholmod库。所以,我们先看shadingwalker的文章添加 suitesparse库。
3.1 Cmake 版本 3.6.0(这个下载安装最新版即可)
下载 cmake-3.6.0-rc4-win64-x64.msi (下载二进制包 不要下载源码 , .msi文件 目前已经到3.10.2)
地址:https://cmake.org/download/
cmake下载后安装即可(最好是以管理员身份运行.msi文件进行安装,打开软件也最好以管理员身份运行,Win10对C盘的保护 很强,如果你在配置过程中需要往C盘写入文件,当你不是管理员身份运行时有可能会出现意外的错误)
3.2 suitesparse
版本 1.3.0
地址:https://github.com/jlblancoc/suitesparse-metis-for-windows/tree/v1.3.0
这里由于我们已经配好了PCL库 其中就已经有了Eigen库 就不用另行下载了 在D:\Lib\PCL\3rdParty\Eigen (我试过采用自己下载的最新版本Eigen库,Cmake g2o 的工程编译会出错)
3.3 Qt 版本 5.10 (不是Qt语音软件,这是一个跨平台编译器)
下载并安装: qt-opensource-windows-x86-5.10.0.exe (不知道为啥没有64位的 网上查貌似 x86都可以用)
地址:http://download.qt.io/archive/qt/5.10/5.10.0/
下载并安装:qt-creator-win-opensource-2.5.2.exe
地址:http://download.qt.io/archive/qtcreator/2.5/
下载:qt-vs-tools-msvc2015-2.1.1.vsix
地址:http://download.qt.io/archive/vsaddin/
新版本qt-vs-tools在vs2015下的名字是 Qt VS Tool
3.4 libQGLViewer 版本 2.7.1
下载:libQGLViewer-2.7.1.zip
地址:http://libqglviewer.com/installWindows.html
解压后我们用vs2015打开(左上角Qt VS Tool -> 打开工程) .pro文件 然后进行生成
以上3.1、3.2、3.3、3.4完成后开始进行g2o的编译生成
这里我说下Cmake 以我理解的来说 他是通过一些源文件及配置参数 来生成不同编译平台的 工程文件 如VS中生成.sln
其中 where is the source code: 是你下载的文件 文件夹下你能看到 CMakeList.txt文件
其中where to build the binaries: 是你即将生成的工程的文件夹 (最后生成的库不在这里,最后我们想要的lib及dll将在你生成 工程后出现,出现的位置如果没有生成INSTALL则在你工程的debug或release下,如果进行生成了INSTALL,则在你进行Cmake时 CMAKE_INSTALL_PREFIX 所给的路径 )
当配置好 where is the source code: where to build the binaries: 单击 configure 会读入并配置你Cmakelist中的参数 你需要配置cmake没有自动获得的参数路径 (通常为红色),下方的输出提示会提示你缺少哪些路径,配置好后再次点击configure如果成功会是白色,下方也没有红色的提示输出,当存在空路径时 参数项会是红色,需要继续进行配置,知道没有红色出现时,单击Generate进行生成
当g2o cmake成功后, 在输出的项目文件下下 单击 .sln 后进行生成
注意:我编译时 会出现 Matrix 没有定义的情况,这需要你进入错误的cpp中 将 Matrix前 加上 Eigen:: 为 Eigen::Matrix
推荐阅读
-
视觉SLAM笔记(53) g2o 操作后端优化
-
视觉slam笔记
-
视觉SLAM笔记(54) Ceres 操作后端优化
-
SLAM+语音机器人DIY系列:(八)高阶拓展——2.centos7下部署Django(nginx+uwsgi+django+python3)
-
SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作
-
ros机器人学习 --- ORB_SLAM的安装与使用
-
【SLAM】VINS-MONO解析——vins_estimator流程
-
Ubuntu14.04下配置ORB-SLAM
-
SLAM 基础 ROS 软件包源码安装
-
【SLAM】VINS-MONO解析——基于vins-mono的双目slam系统开发