Ubuntu16.04安装LSD-SLAM
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相关推荐
- Ubuntu16.04安装视觉SLAM环境(OpenCV)
一.安装依赖库 1 sudo apt-get install build-essential 2 sudo apt-get install cmake git libgtk2.0-dev pkg-co ...
- ubuntu16.04安装opencv3.4.1教程
最近opencv3.4.1发布了,想换个新的试试鲜,于是把配置的过程通过博文的方式记录下来,方便查阅. 本教程原为3.3.0,但经过博主亲测,3.4.0.3.4.1皆适用 1.去官网下载opencv ...
- Ubuntu16.04 安装ftp
2019独角兽企业重金招聘Python工程师标准>>> Ubuntu16.04 安装ftp,根据依赖安装. 安装vsftpd. sudo apt-get install vsftpd ...
- ubuntu16.04 安装CAJViewer 以及 安装wine /deepin-wine 图标异常的解决
ubuntu16.04 安装CAJViewer 以及 安装wine /deepin-wine 图标异常的解决 通过deepin-wine 安装 cajviewer 之前装过deepin-wine 所以 ...
- ubuntu16.04 安装微信和qq
ubuntu16.04 安装微信和qq Ubuntu系统没有qq和微信很难受,所以前几天装了一下qq和微信,在此记录下来,以防忘记. 通过 https://github.com/wszqkzqk/de ...
- Ubuntu16.04安装Chrome浏览器及解决root不能打开的问题
Ubuntu16.04安装Chrome浏览器及解决root不能打开的问题 参考文章: (1)Ubuntu16.04安装Chrome浏览器及解决root不能打开的问题 (2)https://www.cn ...
- Linux入门(7)——Ubuntu16.04安装wps并解决系统缺失字体问题
Linux入门(7)--Ubuntu16.04安装wps并解决系统缺失字体问题 参考文章: (1)Linux入门(7)--Ubuntu16.04安装wps并解决系统缺失字体问题 (2)https:// ...
- ubuntu16.04安装CUDA 8.0(很详尽,包括一些坑的解决方法)
ubuntu16.04安装CUDA 8.0(很详尽,包括一些坑的解决方法) 参考文章: (1)ubuntu16.04安装CUDA 8.0(很详尽,包括一些坑的解决方法) (2)https://www. ...
- ubuntu16.04安装英伟达(NVIDIA)驱动——run文件安装
ubuntu16.04安装英伟达(NVIDIA)驱动--run文件安装 去官网http://www.nvidia.com/Download/index.aspx?lang=en-us选择显卡驱动 中文 ...
- ubuntu16.04安装torch
ubuntu16.04安装torch 第一步:从git上获取安装LuaJIT(C语言编写的Lua的解释器)和Torch所必需的依赖包: 在终端执行:git clone https://github.c ...
最新文章
- android控件ems,Android登录等待效果
- 系统上线后关键用户的工作建议
- Service Team在索引表CRMD_ORDER_INDEX中的存储设计
- Linux编程练习 --进程间通信1--无名管道
- 数据库的关系运算和完整性约束
- python-json模块
- flex4自定义皮肤
- 【Scala】Scala练习题(一)
- 微生物组-扩增子16S分析和可视化(2022.10)
- hive 神盾特工局_详解漫威电影宇宙历史(一)宇宙初创到泰坦星的陨落
- [转载]“澜爵酒堡”杯常青藤公开赛参赛名单--公开组C
- 如何编辑制作并发送手机报?
- Centos7.6下Ceph搭建
- STC89C52RC特点及引脚介绍
- svn外网打不开url地址怎么解决
- 干货 :集成学习入门介绍
- 嵌入式linux中断驱动,嵌入式Linux下硬件中断驱动程序的开发.pdf
- Java8语法最佳实践-什么是对象
- 软考项目管理师-论文范例之-论信息系统项目的质量管理
- 回溯法解决哈密顿回路问题