Windows 下配置lsd_slam环境

2023-10-31 09:30
文章标签 配置 windows 环境 slam lsd

本文主要是介绍Windows 下配置lsd_slam环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载请注明出处: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)。


修改完成后再次configuregenerate,在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)#BOOSTset(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) #OPENCVset(OpenCV_DIR D:/opencv/build)# G2Oset(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)# Freeglutset(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




这篇关于Windows 下配置lsd_slam环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/314393

相关文章

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp