Ubuntu16.04安装LSD-SLAM的过程、注意事项以及可能出现的错误:

LSD-SLAM官网:https://vision.in.tum.de/research/vslam/lsdslam

LSD-SLAM Github:https://github.com/tum-vision/lsd_slam

安装LSD-SLAM之前,必须先安装ROS kinetic,可以参考:点击打开链接

1. 安装LSD-SLAM
1.1 创建rosbuild工作空间:

sudo apt-get install python-rosinstall
mkdir ~/rosbuild_ws
cd ~/rosbuild_ws
rosws init . /opt/ros/kinetic
mkdir package_dir
rosws set ~/rosbuild_ws/package_dir -t .
echo "source ~/rosbuild_ws/setup.bash" >> ~/.bashrc
bash
cd package_dir

1.2 安装依赖

sudo apt-get install ros-kinetic-libg2o ros-kinetic-cv-bridge liblapack-dev libblas-dev freeglut3-dev libqglviewer-dev libsuitesparse-dev libx11-dev

注:请不要安装上述依赖中的libqglviewer-dev,否则,在运行LSD-SLAM时会出现realloc(): invalid pointer错误。

请参考下面的问题2.1安装libqglviewer-dev-qt4,并创建相关链接。

1.3 获取LSD-SLAM

git clone https://github.com/tum-vision/lsd_slam.git lsd_slam

1.4 编译

rosmake lsd_slam

注:编译过程中会出现一些错误,请参考下面的问题2.2-2.4对源代码进行修改之后再进行编译;或者再编译过程中出现错误,根据错误提示修改源代码,并重新编译。

2. 问题和解决方法

2.1 运行lsd_slam_viewer出现下面的错误:

分析:在Ubuntu16.04中,安装libqglviewer-dev,默认依赖的是qt5,这是导致上述问题的直接原因,因为LSD-SLAM需要依赖qt4,而不是qt5。

解决方法:

1) 删除libqglviewer-dev

sudo apt remove libqglviewer-dev

2) 安装libqglviewer-dev-qt4,并创建相关链接

sudo apt install libqglviewer-dev-qt4
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libQGLViewer-qt4.so libQGLViewer.so

2.2 编译过程中出现错误:raise Exception(r"""quotes not allowed in description string '%s'""" % description)

分析:顾名思义,不应该在描述中出现引号(单引号或双引号),可以通过查看错误内容得知需要修改的文件的名称。

解决方法:

1) lsd_slam_viewer/cfg/LSDSLAMViewerParams.cfg

第20行scaledDepthVarTH:单词 point's和keyframe's 中出现了单引号,删除单引号

第21行absDepthVarTH:单词 point's

第24行cutFirstNKf:单词 keyframe's

2) lsd_slam_core/cfg/LSDDebugParams.cfg

第11行plotStereoImages:单词 what's

第12行plotTracking:单词 what's

第48行continuousPCOutput:单词 Keyfram's

2.3 编译过程中出现错误:invalid initialization of non-const reference of type 'qreal& {aka double&}' from an rvalue of type 'qreal {aka double}'

分析:qt中的qreal表示小数,在Ubuntu14.04中qreal就是float,但是Ubuntu16.04中qreal变为了double。错误中的变量x, y, z的类型是float,getPosition函数的形参类型是qreal,也就是double,所有x, y, z的值会自动转型为double,并存储在一个临时变量中,这会导致getPosition函数的实参变为了右值,但是右值不能初始化非const的引用。

解决方法:

1) lsd_slam_viewer/src/PointCloudViewer.h

第135行:将float x, y, z修改为qreal x, y, z或者double x, y, z

2) lsd_slam_viewer/src/PointCloudViewer.cpp

第325行:将float x, y, z修改为qreal x, y, z或者double x, y, z

2.4 编译过程中出现错误:warning Detected X11 'Status' macro definition, it can cause build conflicts. Please, include this header before any X11 headers.

分析:这条错误信息可以在文件/opt/ros/kinetic/include/opencv-3.2.0-dev/opencv2/stitching.hpp的58行查看到,信息中已经告诉了如何解决这个问题,即:将这个头文件放到任何X11头文件之前,或者也可以直接将#include "opencv2/opencv.hpp"注释掉

解决方法:

将文件lsd_slam_viewer/src/KeyFrameDisplay.cpp的头文件修改为如下顺序:

#include "opencv2/opencv.hpp"#include <GL/glx.h>
#include <GL/gl.h>
#include <GL/glu.h>

或者

#include <GL/glx.h>
#include <GL/gl.h>
#include <GL/glu.h>// #include "opencv2/opencv.hpp"

3. 运行LSD-SLAM

3.1 下载数据集并解压:Room Example Sequence

3.2 打开Termial,输入以下命令:

roscore

3.3 打开新的Termial,输入以下命令,弹出PointCloud Viewer窗口:

rosrun lsd_slam_viewer viewer

3.4 打开新的Termial,输入以下命令:

rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info

3.5 打开新的Termial,输入以下命令,弹出DebugWindow DEPTH窗口并运行SLAM:

rosbag play ./LSD_room.bag

注:将上述命令中的./LSD_room.bag替换为你之前下载的数据集的所在的路径

注:此时会出现错误,DebugWindow DEPTH窗口会卡死,PointCloud Viewer窗口显示一个红色的相机。在上述步骤3.4的Termial中会显示如下信息:

分析:根据错误的提示,可以猜测这个错误也是Qt版本变化导致的,暂时还不知道如何解决,希望能有高人指教。也许将Ubuntu16.04的qt5卸载了,安装qt4就能解决这个问题。在程序中,这个错误是由于DebugWindow DEPTH窗口的出现导致的。

解决方法:

可以将文件lsd_slam_core/src/util/settings.cpp的第38行的变量displayDepthMap设为false,即不显示DebugWindow DEPTH窗口:

bool displayDepthMap = false;

重新编译,即步骤1.4。再次执行步骤3.2-3.5,此时程序可以正常运行,可以在PointCloud Viewer中查看环境的点云信息,但是不显示DebugWindow DEPTH窗口,如下所示(LSD-SLAM正常运行,可以参考:Ubuntu14.04安装LSD-SLAM):

Ubuntu16.04安装LSD-SLAM相关推荐

  1. Ubuntu16.04安装视觉SLAM环境(OpenCV)

    一.安装依赖库 1 sudo apt-get install build-essential 2 sudo apt-get install cmake git libgtk2.0-dev pkg-co ...

  2. ubuntu16.04安装opencv3.4.1教程

    最近opencv3.4.1发布了,想换个新的试试鲜,于是把配置的过程通过博文的方式记录下来,方便查阅.  本教程原为3.3.0,但经过博主亲测,3.4.0.3.4.1皆适用 1.去官网下载opencv ...

  3. Ubuntu16.04 安装ftp

    2019独角兽企业重金招聘Python工程师标准>>> Ubuntu16.04 安装ftp,根据依赖安装. 安装vsftpd. sudo apt-get install vsftpd ...

  4. ubuntu16.04 安装CAJViewer 以及 安装wine /deepin-wine 图标异常的解决

    ubuntu16.04 安装CAJViewer 以及 安装wine /deepin-wine 图标异常的解决 通过deepin-wine 安装 cajviewer 之前装过deepin-wine 所以 ...

  5. ubuntu16.04 安装微信和qq

    ubuntu16.04 安装微信和qq Ubuntu系统没有qq和微信很难受,所以前几天装了一下qq和微信,在此记录下来,以防忘记. 通过 https://github.com/wszqkzqk/de ...

  6. Ubuntu16.04安装Chrome浏览器及解决root不能打开的问题

    Ubuntu16.04安装Chrome浏览器及解决root不能打开的问题 参考文章: (1)Ubuntu16.04安装Chrome浏览器及解决root不能打开的问题 (2)https://www.cn ...

  7. Linux入门(7)——Ubuntu16.04安装wps并解决系统缺失字体问题

    Linux入门(7)--Ubuntu16.04安装wps并解决系统缺失字体问题 参考文章: (1)Linux入门(7)--Ubuntu16.04安装wps并解决系统缺失字体问题 (2)https:// ...

  8. ubuntu16.04安装CUDA 8.0(很详尽,包括一些坑的解决方法)

    ubuntu16.04安装CUDA 8.0(很详尽,包括一些坑的解决方法) 参考文章: (1)ubuntu16.04安装CUDA 8.0(很详尽,包括一些坑的解决方法) (2)https://www. ...

  9. ubuntu16.04安装英伟达(NVIDIA)驱动——run文件安装

    ubuntu16.04安装英伟达(NVIDIA)驱动--run文件安装 去官网http://www.nvidia.com/Download/index.aspx?lang=en-us选择显卡驱动 中文 ...

  10. ubuntu16.04安装torch

    ubuntu16.04安装torch 第一步:从git上获取安装LuaJIT(C语言编写的Lua的解释器)和Torch所必需的依赖包: 在终端执行:git clone https://github.c ...

最新文章

  1. android控件ems,Android登录等待效果
  2. 系统上线后关键用户的工作建议
  3. Service Team在索引表CRMD_ORDER_INDEX中的存储设计
  4. Linux编程练习 --进程间通信1--无名管道
  5. 数据库的关系运算和完整性约束
  6. python-json模块
  7. flex4自定义皮肤
  8. 【Scala】Scala练习题(一)
  9. 微生物组-扩增子16S分析和可视化(2022.10)
  10. hive 神盾特工局_详解漫威电影宇宙历史(一)宇宙初创到泰坦星的陨落
  11. [转载]“澜爵酒堡”杯常青藤公开赛参赛名单--公开组C
  12. 如何编辑制作并发送手机报?
  13. Centos7.6下Ceph搭建
  14. STC89C52RC特点及引脚介绍
  15. svn外网打不开url地址怎么解决
  16. 干货 :集成学习入门介绍
  17. 嵌入式linux中断驱动,嵌入式Linux下硬件中断驱动程序的开发.pdf
  18. Java8语法最佳实践-什么是对象
  19. 软考项目管理师-论文范例之-论信息系统项目的质量管理
  20. 回溯法解决哈密顿回路问题

热门文章

  1. MATLAB滑动T检验
  2. android虚拟机运行app出现错误Unfortunately
  3. 算法竞赛命题指南(命题流程、Polygon的使用等)
  4. 基于jQuery的图片懒加载插件
  5. RocketMQ-offset管理
  6. 网站广告的盈利模式详解
  7. 计算机磁盘管理看不到盘符,Win10系统本地磁盘盘符不见了的解决方法
  8. 1000. 合并石头的最低成本
  9. 苹果设备如何进入恢复模式
  10. uniapp连接本地服务器请求超时