作者开源的代码地址:https://github.com/rubengooj/pl-slam
我的环境:Ubuntu14.04,cmake3.12
在安装相关库和项目的过程中出现了不少问题,记录在此. 以下整体上按照代码内README.md的安装流程进行,其中由于stvo-pl的编译安装依赖于MRPT,故调整顺序. 且程序运行需要wxWidgets,在MRPT前安装.

注意:
MRPT和stvo-pl解压至pl-slam同级文件夹下,否则需设置一些环境变量来引用两个项目文件的头文件等.

  • OpenCV 3.x.x
  • Eigen3
  • Boost
  • YAML (tested with 0.5.2)
  • wxWidgets
  • MRPT
  • stvo-pl
  • Line Descriptor
  • PL-SLAM

Step 1

OpenCV 3.x.x

详见:https://blog.csdn.net/Wenyue_Wang/article/details/82223808
库地址:http://opencv.org.
注意PL-SLAM依赖扩展库opencv_contrib,如果只安装了opencv库,需要下载对应版本的扩展库.
方法为:将扩展库解压缩至opencv源码文件夹下,进入编译opencv时建立的build文件夹,打开终端,输入命令

$ cmake -DOPENCV_EXTRA_MODULES_PATH=/home/xxx/opencv/opencv_contrib-3.3.1/modules -DBUILD_opencv_legacy=OFF /home/xxx/opencv
$ make
$ sudo make install

contrib·库的README.md也作出了相应说明:

$ cd <opencv_build_directory>
$ cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory>
$ make -j5

由此可见看说明文档README.md的重要性.

注意:
cmake完之后查看终端输出内容,检查是否有问题. 如遇到网络问题导致ippicv和xfeatured模块下载失败(会有提示),请看这篇帖子. 如果跳过这一步会导致必要的模块无法编译安装.

Eigen3

http://eigen.tuxfamily.org
或者上篇帖子.

Boost

sudo apt-get install libboost-dev

后边编译某些库或工程时如果遇到如下错误提示:

cmake无法链接boost以下内容:
- boost_regex
- boost_thread
- boost_system
- boost_filesystem

解决方式为:
首先判断文件是否存在:

$ locate boost_system

1) 看到类似于:/usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0
说明文件存在,而编译时未找到,故需要链接库:

$ /usr/lib/x86_64-linux-gnu/
$ ls libboost* //列出含libboost的文件
$ sudo ln -s libboost_system.so.1.54.0 libboost_system.so

2) 没有的需要下载安装

$ sudo apt-get install libboost-filesystem
提示:E: 未发现软件包 libboost-filesystem
$ apt-file search libboost-filesystem //搜索,会出现很多,选择libboost-filesystem-dev即可。
$ sudo apt-get install libboost-filesystem-dev//安装

其他两个依赖项:
apt-file search libboost-regex(sudo apt-get install libboost-regex-dev)
apt-file search libboost-thread(sudo apt-get install libboost-thread-dev)
参考:https://blog.csdn.net/kingmicrosoft/article/details/39377715

G2O

参考:帖子.

YAML (tested with 0.5.2)

1)sudo apt-get install libyaml-cpp-dev //一个命令即可
或者
2)下载码包,并安装. 下载地址:https://github.com/jbeder/yaml-cpp

$ cmake -DBUILD_SHARED_LIBS=ON ..
$ make -j12

cmake安装动态库,否则出错. 文件夹下util的CMakeLists.txt要求最小版本3.5,改成了2.8,编译通过. 但建议安装高版本cmake,以防有其它问题. 我最终运行PL-SLAM通过选用的cmake 3.12.

wxWidgets

通过以下命令获取:

$ sudo apt-get install libwxgtk2.8-dev

我曾安装GitHub上的3.1.x版,make MRPT的过程中出错:

‘wxFont::wxFont(int, int, int, int, bool, const wxString&, wxFontEncoding)’ is deprecated (declared at /usr/local/include/wx/gtk/font.h:89): use wxFONT{FAMILY,STYLE,WEIGHT}_XXX constants [-Wdeprecated-declarations]
wxFont 11lbXYZsFont(7,wxTELETYPE,wxFONTSTYLE_NORMAL,wxNORMAL,false,wxEmptyString,wxFONTENCODING_DEFAULT);
make[1]: * [apps/ReactiveNavigationDemo/CMakeFiles/ReactiveNavigationDemo.dir/all] Error 2

没找到解决办法,故而卸载重装2.8.

注意1:
如需卸载,在安装目录下执行make uninstall后,要把安装在/usr内的相关文件夹及文件包括链接库删除(sudo rm -rf packagename; or sudo rm -rf packagename.前者为删除文件夹,后者为文件.) 一般在/usr/local或/usr/lib或/usr/share/. 注意文件所处位置,考虑能否删除,切记不要删除x86内的相关文件.
至于为什么……有效果不出错!对于系统操作,还是新手,不太了解.

注意2:
如果安装有提示 ldconfig,输入此命令即可.(具体安装哪个部分有这个提示忘记了,所以如果安装时cmake命令系列需要看下运行结果,了解是否缺少什么、需要做什么.)

MRPT

选用作者建议的版本,不要用最新版:
https://github.com/MRPT/mrpt/tree/0c3d605c3cbf5f2ffb8137089e43ebdae5a55de3
安装过程参考(标准):
https://www.mrpt.org/Building_and_Installing_Instructions#13_Ubuntu_Debian(感谢博主W_Tortoise提供!)
我的过程:

//安装依赖库,其中有些库如果已经安装,不必重复安装. 如果按照我上篇帖子的OpenCV安装方法,可以发现前几个都安装过了.而且有些库是可选择性安装的,详见上述标准安装过程网址.
$ sudo apt-get install build-essential pkg-config libdc1394-22-dev libjpeg-dev libsuitesparse-dev libftdi-dev freeglut3-dev zlib1g-dev libusb-1.0-0-dev libudev-dev libfreenect-dev  libavformat-dev libswscale-dev libassimp-dev libgtest-dev libpcap-dev
//进入MRPT码包
$ mkdir build
$ cd build
$ cmake ..
$ make -j12
$ sudo make install

stvo-pl

地址:https://github.com/rubengooj/stvo-pl
解压完后可以发现文件夹内有build.sh文件:

$ ./build.sh

如果无操作权限,修改即可sudo chmod 777 build.sh.

PS:build.sh内对3rdparty内相关内容进行了操作,生成了相应库文件,如果采用别的方式编译,出现如下错误:

make[2]: * No rule to make target `../3rdparty/line_descriptor/lib/liblinedesc.so’, needed by ../lib/libstvo.so. Stop.
make[2]: * Waiting for unfinished jobs….

即是未进行3rdparty内的操作,没有生成相应库.

Line Descriptor
不用操作.
(更改过 line_descriptor module from the OpenCV/contrib library (both BSD) which is included in the 3rdparty folder.)

PS:
1)下载依赖库出现:

Unable to locate package .

在执行sudo apt-get install之前更换了软件源,但是却忘了update下:

$ sudo apt-get update

2)出错: /usr/bin/ld: cannot find -lxxxx
缺少xxxx动态库,找到该动态库文件拷贝到usr/local/lib
(因为动态库文件xxxx没在默认路径下(如/usr/lib /lib /usr/local/lib).

Step 2

PL-SLAM

  • 修改
  • 运行

修改

1)增加了cmake_modules文件夹,内含FindG2O.CMake
2)CMakList.txt:54、67行地址注意是否需要修改(提示缺少.h文件).
3)~/src/slamConfig.cpp内vocabulary_p和vocabulary_l 地址修改.
4)~/config/config/config_kitti.yamlvocabulary_p和vocabulary_l 地址修改.

运行

1) 准备数据集,假设地址为/home/xxx/Desktop/data/kitti/00. 设置环境变量,将数据集地址写入:

$ sudo gedit ~/.bashrc //会打开一个文档,输入完之后保存关闭
$ export DATASETS_DIR=/home/xxx/Desktop/data
$ source ~/.bashrc //必须有这句

同时需要将~/config文件夹内的kitti00-02.yaml复制到/home/xxx/Desktop/data/kitti/00,并修改其名为dataset_params.yaml(读程序plslam_dataset.cpp可知原因.)
如果你的数据集图片文件夹名字有区别,请做相应修改.(灰度图片为image_0和image_1,去kitti00-02.yaml内修改.)
2) 在build文件夹进入终端,编译后,运行程序:

$ ./plslam_dataset kitti/00

PS:
1)如果出现“CMake Error at CMakeLists.txt:10 (find_package):
By not providing “FindEigen3.cmake” in CMAKE_MODULE_PATH”相关错误,可知是找不到Eigen3库.
我的解决方式:注释掉第10行,在48行include_directories部分,添加/usr/include/eigen3,指向eigen3库文件地址.
2)Find G2O出错,找不到库,可以选择手动在mrpt文件夹下增加cmake_modules文件夹,内含FindG2O.CMake.
3)出错:

Linking CXX shared library ../lib/libplslam.so /usr/bin/ld: can not
find -lg2o_ext_csparse

解决:

$ cd /usr/local/lib
$ sudo ln -sv libg2o_csparse_extension.so libg2o_ext_csparse.so

4)运行出错,看错误提示. plslam_dataset.cpp会首先检查数据集地址是否有问题. 地址没问题会读取文件(包括.yaml文件和图片),分别通过PinholeStereoCamera类和Dataset类实现,如果出错,进入stvo-pl内调取相应.cpp文件查看,根据错误提示修改.
数据集地址错误:
- “Invalid vocabulary for points”
- “Invalid vocabulary for lines”
- “Check your DATASETS_DIR environment variable”
- “Invalid dataset path”
读取文件错误:
- “[PinholeSteroCamera] Invalid parameters file”
- “[Dataset] Invalid images subfolder”
- “[Dataset] Invalid image names?”
- ……
- “[Dataset] Left and right images”

内容部分引用相关博文:

[1] https://github.com/rubengooj/pl-slam (作者分享代码地址,可查看issue部分,有作者答疑.)
[2] https://blog.csdn.net/learning_tortosie/article/details/80444190#commentsedit(安装.)
[3] https://blog.csdn.net/xs1102/article/details/80757404 (wxWidgets部分为3.1.x版,我未运行成功.)
[4] https://blog.csdn.net/yanni0616/article/details/81017120 (动静态库.)
[5] https://blog.csdn.net/tust123qht/article/details/79631977 (MRPT依赖项.)
[6] https://stackoverflow.com/questions/42582712/relocation-r-x86-64-32s-against-py-notimplementedstruct-can-not-be-used-when(–enable shared=ON)
[7] https://blog.csdn.net/xiaogugood/article/details/18400669 (unable to locate package.)
[8] https://blog.csdn.net/kingmicrosoft/article/details/39377715 (boost相关文件未下载或未链接.)

再次对分享问题与解决方式的大家表示感谢!

PL-SLAM的配置、安装及运行相关推荐

  1. 在Ubuntu 12.04 64bit上配置,安装和运行go程序

    注意: 下面的安装配置均遵从官网或是教材<Go语言程序设计>中的部分内容. 顺便说下,这是一本很难得的Go语言的入门教程,非常基础和全面.起初我因为这本书的封面比较讨厌它,闲置几年之后,一 ...

  2. 一起玩Docker之1——Ubuntu配置安装Docker运行环境并安装(Ubuntu、Centos)镜像

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...

  3. Sublime Text 3(中文)在Windows下的配置、安装、运行

    Sublime Text 3(中文)下载.安装.运行! 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) ...

  4. php7.0安装windows_Windows 7 下如何配置PHP网站运行环境

    Win7之家( www.win7china.com):Windows 7 下如何配置PHP网站运行环境 本文出处不详,有知者请通过文章下方的评论告知Win7之家,软媒会立即修改出处.本文适合PHP网站 ...

  5. 【视觉SLAM】从安装Ubuntu18.04开始

    [视觉SLAM]从安装Ubuntu18.04开始 前言 说明 工作环境 需要准备的东西 安装Ubuntu 18.04 安装ORB-SLAM3 安装Pangolin 安装OpenCV 3.2.0 安装R ...

  6. dso与Android,DSO 安装及运行 —— dso_ros + Android 手机摄像头

    转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12425855.html 本文要点: dso 配置安装 dso 离线 ...

  7. PL/SQL Developer12配置使用方法

    下载 PL/SQL Developer 地址:https://www.allroundautomations.com/bodyplsqldevreg.html 选择下载适合自己的版本.安装过程一路默认 ...

  8. 【SLAM】SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+Vcpkg

    目录 SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+vcpkg 软件及版本 1. Windows 10 2. Visual Studio 2019 3. OpenCV 4. ...

  9. LOAM学习-安装与运行

    LOAM-安装与运行 引言 LOAM安装 LOAM运行 结语 引言 由于最近想学习SLAM,发现LOAM是较为经典的入门算法. 于是就开始了LOAM的学习. LOAM安装 LOAM的安装真的是一言难尽 ...

  10. CentOS 6.9下配置安装KVM

    注意:KVM一切安装和运行都是在root用户下完成的,并且只有root才能支持某些软件. 一.准备工作: 1.查看系统版本.内核版本 ##查看系统版本 # cat /etc/redhat-releas ...

最新文章

  1. Linux系统的CPU使用率和Load
  2. 071_设置日期方法
  3. eclipse创建android工程,在eclipse创建android 工程
  4. python 如何查看列表(List)的维度? (需要将List转换成numpy数组)
  5. 【转】unity3d优化总结篇
  6. 12-赵志勇机器学习-Label_Propagation
  7. Django:ORM关系字段
  8. IDEA Junit测试
  9. K3CLOUD表关联
  10. 一种自适应模拟退火粒子群优化算法-附代码
  11. android qq音乐 本地歌曲,如何将手机qq音乐本地歌曲导入到电脑
  12. 弹窗php整人_PHP控制前台弹出对话框的实现方法
  13. 浏览器密码查看工具-WebBrowserPassView使用实验 ——合天网安实验室学习笔记
  14. 伟创ac80b变频器故障代码_安川变频器故障代码和安川变频器报警详解
  15. android studio umake,Android Studio中NDK开发傻瓜教程(CMake)
  16. OpenCascade学习笔记-创建一个简单的OpenCascade单文档
  17. 机房一体化监测解决方案
  18. Python小游戏-石头剪刀布(和电脑斗智斗勇)
  19. system generator结合高版本matlab的使用
  20. 从下载到区块链,迅雷分布式技术解读

热门文章

  1. 带你一起手把手用Java实现的在线点餐、基于SSM(springBoot)+mysql的哦
  2. 人脸识别 “抓” 错了人,他在监狱呆了 10 天
  3. iPhone为盲人自动识别并标记按钮和UI功能
  4. App工厂为个人及中小企业提供快捷的App解决方案
  5. 软件测试--通用测试用例写作【转载】
  6. 服务器商店无限量指令,我的世界服务器商店指令怎么用 我的世界商店指令代码介绍...
  7. HAL库配置GPIO
  8. pb中自定义纸张打印
  9. 干海参的价格是多少谁有海参价格表啊
  10. 计算机所选区域单元格数值,计算机习题110、 在Excel工作表的单元格区域A1:A8各单元格中均存放数值1,单元格A9为空,单元格A10为一字符...