转载请注明出处:http://blog.csdn.net/ouyangying123/article/details/70861654
环境:
VS2013 + Windows
需要:
Cmake2.8+、Boost 1.5+、Opencv 2.4+、G2O、Eigen3.2+、Qt5、LibQGLViewer、QtVSAddin(可选)。
关系:
一、Opencv
直接运行opencv-2.4.11.exe,按流程完成后在输出目录如(D:\opencv)有两个文件夹build、sources。
二、CMake
直接运行cmake-2.8.12.2-win32-x86.exe,按流程完成后输出目录如下:Bin、doc、man、share、Uninstall.exe。
三、Boost
1.下载解压完成后,使用“VS2013开发人员命令命令提示(VS安装目录\Common7\Tools\Shortcuts\)”进入boost目录,执行bootstrap.bat,生成boost的自用的编译工具bjam.exe。
2.使用命令编译boost:
bjam install --toolset=msvc-12.0 --without-python --prefix="输出目录"--build-type=complete threading=multi debug release
该命令可生成包括debug/release的所有需要的版本,这里只需要改一下输出目录(如D:/boost_1_56_0/vs2013_bin),具体命令参数详解请参考:
http://www.cnblogs.com/zhcncn/p/3950477.html
3.编译完成后,输出目录会出现两个文件夹:include lib。
四、G2O
1、Eigen
下载解压出eigen库后,使用cmake,目录如下:
点击Configure会提示新建build文件夹,选择vs12 2013编译器。
然后修改CMAKE_INSTALL_PREFIX改为sourse目录的值(如D:\lsd\eigen)。
修改完成后再次configure,generate,在eigen\build文件夹中打开eigen.sln工程文件,先生成all_build,完成后再生成install。最后可看到eigen文件夹中出现include文件夹。
2、QGLViewer
这个库是在LibQGLViewer中的一个库,LibQGLViewer是QT的一个工程,下载Qt之后编译即可,这里使用的是下载了一个不带MGW的QT,然后用QtVSAddin插件在VS下编译:
(1)Qt
运行qt-opensource-windows-x86-msvc2013-5.8.0.exe,按步骤进行安装。
(2)qt_vs_addin
运行qt-vs-addin-1.2.5.exe,按步骤进行安装。
(3)LibQGLVIewer
把下载好的libQGLViewer-2.6.4.zip解压出来。
(4)QGLViewer
在qt_vs_addin安装结束后,打开VS2013可在菜单栏看到QT选项:
点击Qt Options,添加qt的name和path:
然后在VS中打开LibQGLViewer:
右键工程QGLViewer,生成,在.\libQGLViewer-2.6.4\QGLViewer文件夹中编译出QGLViewerd2.dll、QGLViewerd2.lib两个文件。
然后再在release模式下编一次生成QGLViewer2.dll、QGLViewer2.lib两个文件。
这是小白编好的库,可直接使用:点这里
3.G2O
有了eigen和QGLViewer库可以开始编译g2o了,把从github上下载的g2o库解压出来,使用cmake编译,source build目录如下:
这里需要修改以下几个变量:
Qt5_DIR: .../Qt5.8.0/5.8/msvc2013/lib/cmake/Qt5
EIGEN3_INCLUDE_DIR: .../eigen/include/eigen3
QGLVIEWER_INLUDE_DIR: .../libQGLViewer-2.6.4/QGLViewer
QGLVIEWER_LIBARARY_DEBUG: .../libQGLViewer-2.6.4/QGLViewer/QGLViewerd2.lib
QGLVIEWER_LIBARARY_RELEASE: .../libQGLViewer-2.6.4/QGLViewer/QGLViewer2.lib
再次点击configure,然后generate。
使用vs打开.../g2o-master/build/g2o.sln,右键ALL_BUILD生成:
完成后会在.../g2o-master目录下生成bin文件夹,bin/Debug下即是将要在lsd中使用的g2o库。
在Release模式下再跑一次,bin/Release下即是将要在lsd中使用的g2o库。以上步骤完成后注意:
1、将../g2o-master/build/g2o下的config.h 拷贝到 ../g2o-master/g2o下。
2、将..../g2o-master/EXTERNAL/csparse下的 cs.h、cs_api.h 拷贝到
../g2o-master/g2o/solvers/csparse下。
3、打开...\g2o-master\g2o\solvers\csparse\csparse_helper.h,把#include <cs.h>改成#include "cs.h"
附上小白编好的g2o库(debug版本),可直接使用:点这里
五、LSD_SLAM
这东西的依赖真多,到此算是可以开始配置lsd了:
把从github下载好的lsd_slam-master.zip解压出来,解压后的目录如下:
使用cmake进行编译:
在build文件夹下会生成一个LsdSlamDependencies_Config.cmake文件,需要修改的地方如下:
option(LsdSlam_USE_MANUAL_CONFIG_FILE TRUE) #BOOST set(BOOST_ROOT D:/boost_1_56_0/bin/include/boost-1_56) set(Boost_INCLUDE_DIR D:/boost_1_56_0/bin/include/boost-1_56) set(BOOST_LIBRARYDIR D:/boost_1_56_0/_bin/lib) set(Boost_NAMESPACE libboost) #OPENCV set(OpenCV_DIR D:/opencv/build) # G2O set(G2O_ROOT D:/lsd/g2o-master) set(G2O_DIR D:/lsd/g2o-master) set(G2O_CORE_LIBRARY D:/lsd/g2o-master) set(G2O_STUFF_LIBRARY D:/lsd/g2o-master) set(G2O_CORE_LIBRARY_DEBUG D:/lsd/g2o-master) set(G2O_STUFF_LIBRARY_DEBUG D:/lsd/g2o-master) set(G2O_SIMULATOR D:/lsd/g2o-master) set(G2O_INCLUDE_DIR D:/lsd/g2o-master) set(G2O_SIMULATOR_DEBUG D:/lsd/g2o-master) set(G2O_SOLVER_DENSE D:/lsd/g2o-master) set(G2O_SOLVER_DENSE_DEBUG D:/lsd/g2o-master) set(G2O_TYPES_SLAM3D D:/lsd/g2o-master) set(G2O_TYPES_SLAM3D_DEBUG D:/lsd/g2o-master) # Freeglut set(GLUT_INCLUDE_DIR D:/lsd/g2o-master/EXTERNAL/freeglut)
再次点击configure,generate生成项目。
使用vs打开...\lsd_slam-master\build下的lsd_slam_and_apps.sln
然后进行以下操作:
1.删除项目sample_app属性->配置属性->链接器->输入->附加依赖项中的g2o-master.lib
2.在项目lsd_slam属性->配置属性->链接器->常规->附加库目录
添加g2o编译出的lib目录:...\g2o-master\bin\Debug
3.在项目lsd_slam属性->配置属性->链接器->输入->附加依赖项 自行选择
release模式:
g2o_solver_csparse.lib g2o_csparse_extension.lib g2o_ext_csparse.lib g2o_solver_eigen.lib
debug模式(默认):
g2o_solver_csparse_d.lib g2o_csparse_extension_d.lib g2o_ext_csparse_d.lib g2o_solver_eigen_d.lib
4.在项目lsd_slam属性->配置属性->库管理器-> (release模式类似)
附加库目录添加上g2o库所在目录:g2o-master/bin/Debug
附加依赖项中添加:
g2o_interface_d.lib g2o_parser_d.lib g2o_simulator_d.lib g2o_types_sim3_d.lib g2o_types_icp_d.lib g2o_types_slam3d_addons_d.lib g2o_types_sba_d.lib g2o_types_slam2d_addons_d.lib g2o_types_slam3d_d.lib g2o_calibration_odom_laser_d.lib g2o_solver_slam2d_linear_d.lib g2o_types_data_d.lib g2o_types_sclam2d_d.lib g2o_solver_structure_only_d.lib g2o_types_slam2d_d.lib g2o_solver_pcg_d.lib g2o_solver_dense_d.lib g2o_solver_eigen_d.lib g2o_tutorial_slam2d_d.lib g2o_viewer_d.lib g2o_hierarchical_d.lib g2o_solver_csparse_d.lib g2o_cli_d.lib g2o_core_d.lib g2o_stuff_d.lib g2o_csparse_extension_d.lib g2o_ext_freeglut_minimal_d.lib g2o_opengl_helper_d.lib g2o_ext_csparse_d.lib
至此就可以直接生成了。
(我的最后运行时会出一个bootxxx.dll缺失的错误,只要去boost_1_56_0\bin\lib 下找到相应的.dll放在system32或sysWOW64里即可)
最后把sample_app设为启动项,添加摄像头便可运行(release模式下可流畅运行)。附上参考下载链接:
Lsd_slam: https://github.com/williammc/lsd_slam
Cmake: https://cmake.org/download/
Boost: http://www.boost.org/users/download/
Opencv: http://opencv.org/opencv-3-2.html
G2O: https://github.com/RainerKuemmerle/g2o
Eigen: http://eigen.tuxfamily.org/index.php?title=Main_Page
Qt: https://www.qt.io/download-open-source/#section-2
LibQGLViewer: http://libqglviewer.com/installWindows.html
LSD_SLAM一些很赞的视频(需*播放):http://vision.in.tum.de/research/vslam/lsdslam