【视觉SLAM】Win10+VS2017配置ORB |
您所在的位置:网站首页 › 在win10下搭建speedtest › 【视觉SLAM】Win10+VS2017配置ORB |
【视觉SLAM】Win10+VS2017配置ORB_SLAM2
前言说明工作环境需要准备的东西
安装CUDA查看CUDA版本下载安装CUDA下载安装CuDNN检测CUDA是否安装成功
安装CMake 3.20.6安装Eigen 3.3.4下载源代码使用CMake生成VS工程编译并安装Eigen测试Eigen
安装OpenCV 3.4.2使用CMake生成VS工程编译并安装OpenCV3.4.2
安装Glew 2.1.0和freeglut 3.2.1下载源代码编译Glew 2.1.0编译freeglut 3.2.1安装
安装Pangolin安装ORB_SLAM2下载源代码编译DBoW2编译g2o编译ORB_SLAM2
前言
说明
本文将在Windows 10和Visual Studio 2017的基础上,记录ORB_SLAM2的配置过程。 【注意】:本文把源代码、编译源代码的VS工程文件夹都放在D盘根目录下,把最后安装位置、编译后的库(包括include目录、lib目录、bin目录等)都放在F盘根目录下! 工作环境 硬件 CPU:Intel® Core™ i5-7200U GPU:NVIDIA GeForce 940MX 内存大小:12GB软件 操作系统:Windows 10 专业版 20H2 IDE:Microsoft Visual Studio Community 2017:版本15.9.24 需要准备的东西 【某工具】懂的都懂,求审核通过。。。。参考我之前写的一篇博客:【某工具】电脑必须带NVIDIA显卡且已装好显卡驱动,内存至少8GB。 安装CUDA安装CUDA是为了与之后的OpenCV进行联合编译。 查看CUDA版本打开NVIDIA控制面板,点击“系统信息”,切换到“组件”,看NVCUDA64.DLL的产品名称。比如我这里是CUDA11.0.208,那么就准备安装CUDA11.0版本。 点击进入官网下载地址:CUDA官网下载 根据自己的CUDA版本选择。比如我这里下载CUDA Toolkit 11.0,根据实际情况,选择本地安装包(安装包很大,但是安装过程不需要网络)还是网络安装包(安装包很小,但是安装过程需要网络)。比如这里选择了本地安装包。
从官网下载CuDNN:CuDNN下载,需要先申请一个NVIDIA账号。 ![]() ![]() CMake用来给之后要下载的源代码创建Visual Studio工程! 在官网给的github网址上找到CMake 3.20.6的压缩包:CMake 3.20.6-Github,下载.zip格式的压缩包。 如果网站进不去,请用【某工具】! 首先从官网下载源代码。解压后放在D盘根目录下。 再在D盘根目录下新建文件夹“Eigen-Build”作为编译Eigen的VS工程文件夹。 在F盘下新建文件夹“Eigen3.3.4”作为编译完成后的安装文件夹。 管理员方式打开CMake3.20.6, 设置好Eigen源代码目录(D:/eigen-3.3.4)和工程目录(D:/Eigen-Build)。 点击“Configure”,设置环境。 点击“Geenerate”生成VS工程,输出“Generating done”! 等待VS分析工程和文件完毕后,确保VS当前是“Release”和“×64”模式,在“解决方案资源管理器”中,右键“ALL_BUILD”,点击“生成”。 可以看到全部输出成功,再右键“INSTALL”,点击“生成”。这时VS会把Eigen安装到之前设置的CMAKE_INSTALL_PREFIX变量的值的位置处(比如我这里是F:/Eigen3.3.4) 接下来测试Eigen是否编译安装成功。 测试代码出自:https://blog.csdn.net/hijack00/article/details/52229076。 在任意位置新创建一个VS空项目,命名为TestEigen,再添加源文件,命名为main.cpp。 复制以上链接中提供的测试代码。 将环境设置为“Debug”和“×64”,然后在VS中打开属性管理器界面,右键“Debug|×64”,选择“添加新项目属性表”。这是为了避免之后每次使用到Eigen都要重新设置目录,因此直接把Eigen的目录存放在属性表中,需要用的时候直接调用就可。 属性表的名称就设置为“Eigen64.props”,点击添加。然后双击刚新建的属性表,将“VC++目录”中的“包含目录”添加一项:F:\Eigen3.3.4\include\eigen3。 如果直接使用OpenCV官网下载下来的源代码的话,会产生比较多的繁琐问题。 因此,我已经将源代码修改好,可以从这里下载: 链接:https://p【防封】an.ba【防封】idu.com/s/1DeCH1【防封】Fm2J5vW【防封】RJ3_yVTcKA 提取码:6666 opencv-3.4.2.rar和opencv_contrib-3.4.rar都要下载,且都解压到D盘根目录下(我这里都是放在D盘根目录下)。 管理员方式打开CMake3.20.6 设置好OpenCV源代码目录(D:/opencv-3.4.2)和工程目录(D:/OpenCV-Build)。注意是OpenCV的源代码目录而不是opencv_contrib的源代码目录! 点击“Configure”,选择Visual Studio版本和处理器架构。 链接:https://pan.baidu.com/s/1pfwyof3oJA2PxS4OlrkX6A 提取码:6666 【重要】从https://pa【防封】n.ba【防封】idu.co【防封】m/s/1pfwy【防封】of3oJA2PxS4Olr【防封】kX6A(提取码:6666)下载nppicom.lib和nppim.lib库文件,放在CUDA安装目录下的lib\x64目录下(如F:\CUDA11.0\lib\x64)! 找到OPENCV_EXTRA_MODULES_PATH参数,将其设置为opencv_contrib中的modules目录,注意:目录中应该使用/而不是\!! 另外,找到“EIGEN_INCLUDE_PATH”参数,将其值设置为Eigen3.3.4的路径(F:/Eigen3.3.4/include/eigen3) “Configuring done”之后,给CUDA_ARCH_BIN参数设置为之前要记住的“CUDA Capability Major/Minor version number”的值(这里为5.0),勾选“CUDA_FAST_MATH”选项。 再次点击“Configure”! 没出问题的话,再点击“Generate”! 看到“Generating done”的话,再点击“Open Project”打开VS工程! 编译并安装OpenCV3.4.2等待VS分析解决方案完毕后,确保VS当前是“Debug”和“×64”模式, 在“解决方案资源管理器”中,右键“opencv_world”,点击“生成”。 再来安装OpenCV3.4.2的Release库! 切换到“Release”和“×64”模式,同样地,右键“opencv_world”项目,点击“生成”! 从官网给的链接下载Glew源代码。需要【某工具】!!!将解压后得到的glew-2.1.0文件夹移动到D盘。 从官网给的链接下载freeglut源代码。需要【某工具】!!! 【注意】这个解压缩过程可能需要管理员权限! 将解压后得到的freeglut-3.2.0文件夹移动到D盘。 编译Glew 2.1.0双击打开D:\glew-2.1.0\build\vc12下的glew.sln解决方案。 VS弹出“重定向项目”对话框,点击“确定”。 右键选择“glew_static”项目,打开属性,确保属性表当前也是“Debug”和“×64”模式。 将C/C++→代码生成→运行库,设置为“多线程调试MTd”! 再来编译Glew 2.1.0的Release库! 确保VS是“Release”和“×64”模式,右键选择“glew_shared”项目,打开属性,确保属性表当前也是“Release”和“×64”模式。 将C/C++→代码生成→运行库,设置为“多线程DLL(MD)”! 再右键选择“glew_static”项目,点击“生成”! 至此,Glew 2.1.0编译完成! 编译freeglut 3.2.1在D盘下新建glut-Build文件夹。 以管理员方式权限打开CMake,设置好源代码目录和工程目录,点击“Configure”。 配置完成后点击“Generate”生成VS工程。 最后点击“Open Project”打开工程。 在F盘下新建OpenGL文件夹,再在其中创建bin、include、lib文件夹。 D:\glut-Build\bin\Debug D:\glut-Build\bin\Release D:\glew-2.1.0\bin\Debug\x64 D:\glew-2.1.0\bin\Release\x64 把以下目录的所有内容复制到include目录下(把整个GL文件夹复制过去): D:\freeglut-3.2.0\include D:\glew-2.1.0\include 把以下目录的所有文件复制到lib目录下 D:\glew-2.1.0\lib\Debug\x64 D:\glew-2.1.0\lib\Release\x64 D:\glut-Build\lib\Debug D:\glut-Build\lib\Release 至此,Glew 2.1.0和freeglut 3.2.1安装完成! 安装Pangolin从Pangolin-Github网址中下载源代码(需要【某工具】),解压得到的Pangolin-master文件夹移动到D盘,在D盘新建Pangolin-Build文件夹用作工程文件夹。 在F盘新建pangolin文件夹,再在pangolin中新建bin、include、lib三个文件夹,再在bin和lib中新建Debug和Release文件夹。 以管理员权限运行CMake,设置好源代码目录和工程目录。 CMake Error at components/pango_geometry/CMakeLists.txt:3 (find_package): Could not find a package configuration file provided by “Eigen3” with any of the following names: Eigen3Config.cmake eigen3-config.cmake Add the installation prefix of “Eigen3” to CMAKE_PREFIX_PATH or set “Eigen3_DIR” to a directory containing one of the above files. If “Eigen3” provides a separate development package or SDK, be sure it has been installed. Call Stack (most recent call first): CMakeLists.txt:93 (include)
CMake Error at cmake/FindGLEW.cmake:51 (MESSAGE): Could not find GLEW Call Stack (most recent call first): components/pango_opengl/CMakeLists.txt:41 (find_package) CMakeLists.txt:93 (include)
CMake Error in CMakeLists.txt: Imported target “Eigen3::Eigen” includes non-existent path “F://include/eigen3” in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include: * The path was deleted, renamed, or moved to another location. * An install or uninstall procedure did not complete successfully. * The installation package was faulty and references files it does not provide. 首先,确保VS当前是“Debug”和“×64”模式!在属性管理器中一次性选中除了ALL_BUILD、INSTALL、uninstall、ZERO_CHECK之外的所有工程,右键属性,确保当前属性表也是“Debug”和“×64”模式,在VC++目录→包含目录中添加以下两条: F:\Eigen3.3.4\include\eigen3 F:\OpenGL\include
点击确认,关闭属性后,在解决方案资源管理器窗口右键选择pango_python项目,点击“生成”! error C2039: “min”: 不是“std”的成员 则双击错误列表中的这一项,会跳转到image_io_packed12bit.cpp文件,在文件开头加上#include 。 把以下文件夹的内容复制到F:\Pangolin\bin\Debug中: C:\Program Files\Pangolin\bin 把以下文件夹的内容复制到F:\Pangolin\include中: C:\Program Files\Pangolin\include 把以下文件夹的内容复制到F:\Pangolin\lib\Debug中: C:\Program Files\Pangolin\lib 然后删除"C:\Program Files\Pangolin"文件夹! 再把VS切换成“Release”和“×64”模式,类似前面的操作,先生成pango_python项目,再生成ALL_BUILD项目,最后就生成INSTALL项目! 全部完成后,把以下文件夹的内容复制到F:\Pangolin\bin\Release中: C:\Program Files\Pangolin\bin 把以下文件夹的内容复制到F:\Pangolin\lib\Release中: C:\Program Files\Pangolin\lib 然后删除"C:\Program Files\Pangolin"文件夹! 至此,Pangolin安装完成! 安装ORB_SLAM2 下载源代码从ORB_SLAM2-Github中下载源代码(需要【某工具】)! 把解压得到的ORB_SLAM2-master文件夹移动到D盘! 在安装ORB_SLAM2之前,还需要编译DBoW2和g2o这两个依赖库! 编译DBoW2把"D:\ORB_SLAM2-master\Thirdparty\DBoW2"文件夹复制到D盘,再在D盘下新建DBoW2-Build文件夹用于工程文件夹! 以管理员权限打开CMake,设置源代码目录和工程文件夹目录 CMake Error at CMakeLists.txt:31 (message): OpenCV > 2.4.3 not found.
fatal error C1083: 无法打开包括文件: “stdint-gcc.h”: No such file or directory 则双击错误列表中的这一项,会跳转到FORB.cpp文件,将该文件的#include 这一行注释掉! 再把VS切换成“Release”和“×64”模式,直接生成“ALL_BUILD”项目! 类似于前面的操作,再把DBoW2项目的“Release”和“×64属性做如下设置: 把"D:\ORB_SLAM2-master\Thirdparty\g2o"文件夹复制到D盘,再在D盘下新建g2o-Build文件夹用于工程文件夹! 以管理员权限打开CMake,设置源代码目录和工程文件夹目录 CMake Error at F:/cmake-3.20.6/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find Eigen3 (missing: EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK) (Required is at least version “3.1.0”) Call Stack (most recent call first): F:/cmake-3.20.6/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) cmake_modules/FindEigen3.cmake:82 (find_package_handle_standard_args) CMakeLists.txt:70 (FIND_PACKAGE)
首先,确保VS当前是“Debug”和“×64”模式!打开g2o项目的属性页,确保属性页也是“Debug”和“×64”模式!在C/C++→命令行的其他选项中删掉-W,在C/C++→预处理器的预处理器定义中添加WINDOWS! 打开"D:\g2o\g2o\core\sparse_block_matrix.hpp"文件,将第277行代码的axpy后加上,将第279行代码的atxpy后也加上。 再把VS切换成“Release”和“×64”模式,直接生成“ALL_BUILD”项目! 生成成功后,类似于前面的操作,再把g2o项目的“Release”和“×64属性做如下设置: 点击确定后,再生成一次“ALL_BUILD”项目! 生成完毕后,g2o就编译完成! 编译ORB_SLAM2首先,在F盘下新建ORB_SLAM2文件夹,再在ORB_SLAM2文件夹中新建bin、include、lib三个文件夹,再在include中新建Thirdparty文件夹,再在Thirdparty中新建g2o和DBoW2两个文件夹。在bin和lib文件夹下都新建Debug和Release两个文件夹。 把以下文件夹复制到F:\ORB_SLAM2\include\Thirdparty\DBoW2目录中: D:\DBoW2下的DBoW2文件夹 D:\DBoW2下的DUtils文件夹 把以下文件夹复制到F:\ORB_SLAM2\include\Thirdparty\g2o目录中: D:\g2o下的g2o文件夹 再把D:\ORB_SLAM2-master\include下的所有文件复制到F:\ORB_SLAM2\include目录下 把"D:\g2o\config.h.in"文件复制到F:\ORB_SLAM2\include\Thirdparty\g2o目录下,并重命名为config.h,把其中第4、5行注释掉。 把以下文件复制到F:\ORB_SLAM2\bin\Debug目录下: “D:\g2o-Build\Debug\g2o.dll” “D:\g2o-Build\Debug\g2o.ilk” “D:\g2o-Build\Debug\g2o.pdb” “D:\DBoW2\lib\Debug\DBoW2.dll” “D:\DBoW2\lib\Debug\DBoW2.ilk” “D:\DBoW2\lib\Debug\DBoW2.pdb” 把以下文件复制到F:\ORB_SLAM2\bin\Release目录下: “D:\g2o-Build\Release\g2o.dll” “D:\DBoW2\lib\Release\DBoW2.dll” 把以下文件复制到F:\ORB_SLAM2\lib\Debug目录下: “D:\g2o-Build\Debug\g2o.lib” “D:\g2o-Build\Debug\g2o.ilk” “D:\g2o-Build\Debug\g2o.pdb” “D:\DBoW2\lib\Debug\DBoW2.lib” “D:\DBoW2\lib\Debug\DBoW2.ilk” “D:\DBoW2\lib\Debug\DBoW2.pdb” 把以下文件复制到F:\ORB_SLAM2\lib\Release目录下: “D:\g2o-Build\Release\g2o.lib” “D:\DBoW2\lib\Release\DBoW2.lib” 以管理员权限打开Visual Studio,新建→项目→空项目,名称定为“ORB_SLAM2”,放在D盘下。 F:\Eigen3.3.4\include\eigen3 F:\OpenCV3.4.2\include F:\ORB_SLAM2\include F:\Pangolin\include F:\OpenGL\include
F:\OpenCV3.4.2\x64\vc15\lib F:\OpenGL\lib F:\ORB_SLAM2\lib\Debug F:\Pangolin\lib\Debug
_WIN_ WIN32 WINDOWS _WINDOWS HAVE_EIGEN HAVE_GLEW PANGO_DEFAULT_WIN_URI=“winapi” _ENFORCE_MATCHING_ALLOCATORS=0 _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS CMAKE_INTDIR=“Debug” g2o_EXPORTS
freeglutd.lib glew32d.lib opencv_world342d.lib opencv_img_hash342d.lib DBoW2.lib g2o.lib pango_core.lib pango_display.lib pango_geometry.lib pango_image.lib pango_glgeometry.lib pango_packetstream.lib pango_opengl.lib pango_plot.lib pango_python.lib pango_scene.lib pango_tools.lib pango_vars.lib pango_video.lib pango_windowing.lib tinyobj.lib opengl32.lib
确认无误后,右键选择ORB_SLAM2项目,点击“生成”! 至此,完成了ORB_SLAM2的Debug库编译! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |