欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SLAM

程序员文章站 2022-03-16 17:44:05
...

最近想要进行基于图像序列的三维重建研究,首先的想法就是采用SLAM方法进行地图重建。在网上很容易找到了大神"半闲居士"的博客《一起做RGB-D SLAM》系列,大神的博客循序渐进,最终完成一个简单、完整的SLAM程序。虽然其中有些部分还没有搞的太明白,但较之前的小白有了质的提升。

接下来将要写下进行SLAM程序编写中的环境配置心得(大神"半闲居士"是在Linux下进行的,而我将要在windows下进行,其中大部分过程相同,有极小部分不同,推荐大家先看完大神的《一起做RGB-D SLAM》系列)

首先,我们都需要什么:

  1. OpenCV 图像处理库 (毕竟我们是基于图像的)

  2. 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等库所以我们就不用操心太多了,否则将会是一个浩大的工程)

  1. g2o 通用图优化(这个配起来是真的烦)

3.1 cmake 对源码进行编译生成基于我们系统和编译器的工程,对形成的工程进行编译获得最终我们使用的库

                            (include、lib、dll)

3.2. suitesparse

3.3. Qt

3.4. libQGLViewer

接下来我们开始一个库一个库的进行生成(其中版本是我所用的版本),我们最终在程序中使用的是库的include、lib和dll文件(配置过程请关闭你的360等安全软件)

  1. 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

  1. 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库。

  1. 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