Windows 下配置lsd_slam环境

时间:2020-12-07 05:06:46

转载请注明出处:http://blog.csdn.net/ouyangying123/article/details/70861654

环境:

   VS2013  +  Windows

 

需要:

   Cmake2.8+、Boost 1.5+、Opencv 2.4+、G2O、Eigen3.2+、Qt5、LibQGLViewer、QtVSAddin(可选)。

关系:

Windows 下配置lsd_slam环境

一、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。

 Windows 下配置lsd_slam环境

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

 Windows 下配置lsd_slam环境

3.编译完成后,输出目录会出现两个文件夹:include  lib。

Windows 下配置lsd_slam环境

四、G2O


1、Eigen

下载解压出eigen库后,使用cmake,目录如下:

Windows 下配置lsd_slam环境

点击Configure会提示新建build文件夹,选择vs12 2013编译器

然后修改CMAKE_INSTALL_PREFIX改为sourse目录的值(如D:\lsd\eigen)。

Windows 下配置lsd_slam环境

修改完成后再次configuregenerate,在eigen\build文件夹中打开eigen.sln工程文件,先生成all_build,完成后再生成install最后可看到eigen文件夹中出现include文件夹。

Windows 下配置lsd_slam环境


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选项:

Windows 下配置lsd_slam环境

点击Qt Options,添加qt的name和path:

Windows 下配置lsd_slam环境

然后在VS中打开LibQGLViewer:

Windows 下配置lsd_slam环境

右键工程QGLViewer,生成,在.\libQGLViewer-2.6.4\QGLViewer文件夹中编译出QGLViewerd2.dll、QGLViewerd2.lib两个文件。

然后再在release模式下编一次生成QGLViewer2.dll、QGLViewer2.lib两个文件。

这是小白编好的库,可直接使用:点这里

Windows 下配置lsd_slam环境


3.G2O

有了eigen和QGLViewer库可以开始编译g2o了,把从github上下载的g2o库解压出来,使用cmake编译,source build目录如下:

Windows 下配置lsd_slam环境

这里需要修改以下几个变量:

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生成:

Windows 下配置lsd_slam环境

Windows 下配置lsd_slam环境

完成后会在.../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解压出来,解压后的目录如下:

Windows 下配置lsd_slam环境

使用cmake进行编译:

Windows 下配置lsd_slam环境

在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

Windows 下配置lsd_slam环境

然后进行以下操作:

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