开始之前将 pl-slam, stvo-pl, MRPT三个库的源码放在同一级目录下,不然需要添加环境变量

1. 运行pl-slam文件下的 build.sh 文件,出现 找不到 libstvo.so

1.1需要先编译安装stvo-pl (stvo-pl地址)

1.1.1按照上面的提示依次安装eigen3, boost, MRPT等库

a. eigen3 之前安装了,没什么错误

b. boost 我按照命令行安装的,但是后面会出现问题,比如我 的出现

 error: ‘next’ is not a member of ‘boost’

经排查是它默认搜索的是ros目录下安装的boost, 所以将ros下的boost库卸载后重新用命令行安装,

关于boost库如何卸载的可以参考: 如何安装和卸载boost库

方法如下

# 查看已安装的boost库的版本
$ dpkg -S /usr/include/boost/version.hpp#比如我的返回 libboost1.58-dev:amd64: /usr/include/boost/version.hpp#然后卸载
$ sudo apt-get autoremove libboost1.58-dev#卸载之后重新命令行安装
$ sudo apt-get install libboost-dev

c. 下面安装YAML, 按照提示安装:

$ sudo apt install libyaml-cpp-dev

安装时没问题,编译 stvo-pl时提示,

yaml-cpp/build/libyaml-cpp.a: error adding symbols: Bad value

          这是因为 stvo-pl 调用了yaml-cpp的共享库(也有叫动态库的,即libyaml-cpp.so这个文件,一般安装

在/usr/local/lib/下),而我只有yaml-cpp的静态库(即libyaml-cpp.a这个文件)。

原因在于我在编译yaml-cpp时没有选择编译共享库,其默认编译是生成静态库。参考其README文件,使用-

DBUILD_SHARED_LIBS=ON 参数来编译。

所以修改编译方式后重新编译:

$ cd [build path of yaml-cpp]
$ cmake -DBUILD_SHARED_LIBS=ON ..
$ make
$ sudo make install

参考:【ros_problems】编译velodyne_poiontcloud提示yaml-cpp出错解决办法

这个yaml就安装好了

d. 然后安装MRPT,  源码主页上提示说最好安装制定版本,就下载指定版本然后安装,下载地址: MRPT
                  安装方法可以参考MRPT主页

               e. 安装line_descriptor, 这个不用单独安装,执行 build.sh脚本时就会自己安装了。

f. 然后进入stvo-pl 源码目录 执行 build.sh  还是报错,提示 ximage_proc.so 找不到。

经检查,发现是stvo-pl 依赖的是 opencv3 和 opencv_contrib. 因此需要重新下载opencv_contrib模块,和opencv3

重新联合编译。

参考: Ubuntu16.04 安装Opencv3.4.0 + Opencv_contrib3.4.0

源码编译opencv时可能出现 ippicv 和 face_landmark_model.dat 下载不下来的问题,可以参考:

ubuntu16.04 安装opencv IPPICV 和 face_landmark_model.dat下载不下来的问题解决

g. 安装好opencv 和 opencv_contrib模块后就可以编译了。

再次在stvo-pl源码目录下执行build.sh 就可以编译成功了。

2.  现在再回到pl-slam源码目录下, 执行 build.sh

a. 提示cmake 找不到g2o.cmake

Could not find a package configuration file provided by "G2O" with any of th

因此需要再pl-slam源码目录下的 CMakeLists.txt 中修改一下配置,在第七行添加如下内容。

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/3rdparty/g2o/cmake_modules")

b. 重新编译,g2o能找到了,又提示,找不到CHOLMOD,在usr/local/inlcude  确实没有,错误提示如下:

/pl-slam/include/mapHandler.h:40:55: fatal error:
g2o/solvers/cholmod/linear_solver_cholmod.h: No such file or directory

其实cholmod本来在安装g2o时应该被装到/usr/local/include/g2o/solvers/cholmod里面的,但是点进去发现缺少这个玩

意,发现自己只是想当然直接再g2o包里cmake+make+make install 就可以了,也怪安装的时候它不报错,原因就是没

有老老实实安装g2o github官网里给明的依赖项,G2O-github

$ sudo apt-get install cmake libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake libqglviewer-dev

先安装如上依赖,再重新编译安装g2o,安装完后 这个目录下 /usr/local/include/g2o/solvers/cholmod 就有

linear_solver_cholmod.h这个文件了,就可以了。

参考: 安装g2o注意的问题 找不到CHOLMOD

c. 重新编译提示,找不到slamConfig.h ,需要修改如下目录下对应配置文件的目录

~/src/slamConfig.cpp内vocabulary_p和vocabulary_l 地址修改. 
                 ~/config/config/config_kitti.yamlvocabulary_p和vocabulary_l 地址修改.

d. 提示如下错误:

mapHandler.cpp:3968:101: error: no matching function for call to‘g2o::OptimizationAlgorithmLevenberg::OptimizationAlgorithmLevenberg(
g2o::BlockSolver_6_3*&)’

打开对应的文件,修改

    //g2o::BlockSolver_6_3::LinearSolverType* linearSolver;//linearSolver = new g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType>();//g2o::BlockSolver_6_3* solver_ptr = new g2o::BlockSolver_6_3(linearSolver);//g2o::OptimizationAlgorithmLevenberg* solver = g2o::OptimizationAlgorithmLevenberg(solver_ptr);std::unique_ptr<g2o::BlockSolver_6_3::LinearSolverType> linearSolver(new g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType>());std::unique_ptr<g2o::BlockSolver_6_3> solver_ptr(new g2o::BlockSolver_6_3(std::move(linearSolver)));g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(std::move(solver_ptr));

将上面四行注释,修改为下面的,此处为了方便看,中间添加了回车,复制粘贴的时候需要注意。,此错误需要修改两处,分别为:

pl-slam/src/mapHandler.cpp:3968:101:
pl-slam/src/mapHandler.cpp:4193:77:

修改完后就可以编译成功了。

3. 下载数据集测试

下载的数据集较大,可以到网盘下载:链接: https://pan.baidu.com/s/1eEct4XnnoNJfJzHQhp5REA 提取码: 35mw

下载其中的 data_odometry_gray/sequence/00 的数据集

将数据集的保存路径添加到环境变量

如保存的路径为: home/KITTI

gedit ~/.bashrc
export DATASETS_DIR=~/KITTI
source ~/.bashrc

然后转到pl-slam的可执行文件目录下 ,执行

./plslam_dataset KITTI/00

如果编译MRPT时没有安装wxWidgets的话会出现:

Initializing PL-SLAM....terminate called after throwing an instance of 'std::logic_error'what():  =============== MRPT EXCEPTION =============
void mrpt::gui::CBaseGUIWindow::createWxWindow(unsigned int, unsigned int), line 95:
MRPT compiled without wxWidgets!
void mrpt::gui::CBaseGUIWindow::createWxWindow(unsigned int, unsigned int), line 97:Aborted

需要下载安装wxWidgets, 然后重新编译安装MRPT

下载 wxWidgets https://github.com/wxWidgets/wxWidgets    (3.1也没问题,需要再后面修改一下)

下载后,进入源代码目录下

./configure --with-opengl --enable-debug --enable-unicode && make && make install

另: 在安装完wxWidgets 时 提示 需要运行 ldconfig

这时候需要运行一下ldconfig

sudo ldconfig

参考:    Ubuntu 16.04.4 编译PL-SLAM (stereo)

安装完成后修改MRPT源文件中 的 头文件,添加一个定义: (不添加会出现如下错误)

/home/usrname/mrpt/apps/ReactiveNavigationDemo/reactive_navigator_demoMain.cpp:
1042:102: error: ‘wxTE_AUTO_SCROLL’ was not declared in this scope
//在reactive_navigator_demoMain.h文件中加入
#ifndef wxTE_AUTO_SCROLL
#define wxTE_AUTO_SCROLL 0
#endif

参考: ubuntu16.04 下配置運行 PL-SLAM

添加后重新编译 MRPT,编译成功后,再次运行

./plslam_dataset KITTI/00

就可以开始测试了。

注: 如果是在clion下运行的话,需要在run 选项里配置一下输入参数和环境变量, 如下图所示,就可以直接在clion下运行了。

run->Edit configrations

测试的效果如下图所示:

注: 我在CmakeList.txt 做了如下修改

SET(BUILD_SHARED_LIBS ON)
SET(CMAKE_MODULE_PATH $ENV{CMAKE_MODULE_PATH})
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -mtune=native -march=native")

修改了编译选项,将第四行修改为第三行。具体编译选项的含义参考如下链接:

http://blog.sina.com.cn/s/blog_b4ef897e0102vdqa.html

if(HAS_MRPT)
set(MRPT_DONT_USE_DBG_LIBS 1) #use release libraries for linking even if "Debug" CMake build
FIND_PACKAGE(MRPT REQUIRED base opengl gui hwdrivers)
add_definitions(-DHAS_MRPT)
endif(HAS_MRPT)

把set 那一行换到了FIND_PACKAGE上面一行

至此,环境就配置好了,并且测试结果也有了。

参考: PL-SLAM的配置、安装及运行

ubuntu16.04安装运行PL-SLAM相关推荐

  1. Ubuntu16.04系统运行VINS-Mono(安装、环境配置)

    Ubuntu16.04系统运行VINS-Mono 目录 一.Ubuntu16.04系统安装(基于VMware) 二.ROS Kinetic的安装 三.opencv3.3.1的安装 四.eigen3.3 ...

  2. Ubuntu16.04 安装 OpenMPI4.0.0

    Ubuntu16.04 安装 OpenMPI4.0.0 文章目录 OpenMPI 简介 一.OpenMPI 1.0.0版本下载 二.OpenMPI 安装步骤 1.解压并进行配置 2.Build 并安装 ...

  3. Linux ubuntu16.04 安装opencv4教程(源码编译)

    参考文章1:Ubuntu 安装 OpenCV(亲测有效) 参考文章2:OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib 参考文章3:ubun ...

  4. Ubuntu16.04安装NVIDIA显卡(RTX20系列)驱动+CUDA10.0+cudnn+Pytorch1.1.0

    Ubuntu16.04,GPU: Geforce RTX 2070-Super(本博客是显卡驱动和cuda分开安装的教程). 1. Ubuntu16.04安装NVIDIA显卡驱动 1. 下载显卡驱动. ...

  5. Ubuntu16.04安装MySQL5.7

    转载:https://blog.csdn.net/qq_42881421/article/details/91981918 环境: 虚拟机的Ubuntu16.04 Windows系统下Navicat ...

  6. ubuntu16.04 安装cuda9.0+cudnn7.0.5+tensorflow+nvidia-docker配置GPU服务

    [摘要] docker很好用,但是在GPU服务器上使用docker却比较复杂,需要一些技巧,下面将介绍一下在ubuntu16.04环境下的GPU-docker环境搭建过程. 第一步: 删除之前的nvi ...

  7. ubuntu16.04安装百度网盘(使用deepin-wine)2019年3月亲测可用以及安装MATLAB的技巧

    ubuntu16.04安装百度网盘(使用deepin-wine) 按照下面链接进行安装,但是对于小白来说,描述还是过于精简,对于一些白痴问题没有详细说明,我碰到的问题汇总一下. https://git ...

  8. Ubuntu16.04安装Mono4.2.1 C#开发环境

    前言:这篇转载的文章是我很久以前写的,但是后来手机换号了,又注册新号开始继续写blog.旧文章不能合并到新账号,就以转载的形式纪念下过去 操作系统环境:ubuntu16.04 安装Mono4.2.1 ...

  9. Ubuntu16.04安装文本标注工具brat

    brat 的下载地址http://brat.nlplab.org/ Ubuntu16.04安装CGI环境 安装Apache2 sudo apt install apache2 配置CGI 1)打开文件 ...

最新文章

  1. 自动化系导航与控制研究所
  2. 全球及中国婴儿痤疮药行业消费需求调研与竞争策略展望报告2022版
  3. c语言不同类型指针间的强转,C语言中不同的结构体类型的指针间的强制转换详解...
  4. 【洛谷P5114】八月脸【边分治】【闵可夫斯基和】
  5. python知识点1
  6. 信息学奥赛一本通 1132:石头剪子布 | OpenJudge NOI 1.7 04
  7. redux 思考以及源码解析
  8. html5翻卡片游戏,用 JavaScript 写一个卡片小游戏
  9. Java集合类之Collection接口学习
  10. 基于tuns的DNS隧道研究
  11. Linux操作系统分区格式Ext2,Ext3,Ext4的区别
  12. 数字电视加密技术工作原理(EMM ECM)
  13. plsql developer连接数据库超时,Ping 服务器ip提示“TTL传输中过期”
  14. Android字体加粗
  15. elasti 时间范围查询
  16. 7-114 用if-else语句编程百分制成绩转换为五分制成绩
  17. Android ExpandableListView 使用实例
  18. 不要提前交卷!!!曾有人在最后35秒,拿到了13分!!!(祝所有考生顺利)...
  19. TCP/IP,HTTP,RPC、SOA、长连接短连接等的区别
  20. 桌面快捷方式左下角有小黑块怎么解决?两秒搞定!

热门文章

  1. Python爬虫-爬取17K小说
  2. Python25行代码爬取豆瓣排行榜数据
  3. Kaggle 新手入门必看,手把手教学
  4. flutter坑奇遇记
  5. 医学四大经典著作之一《黄帝内经》
  6. 工程伦理--13.1 什么是“邻避效应”?
  7. php Carbon 中文文档
  8. 华软2016校内选拔赛
  9. java图形化五子棋总结,Java从此丰富多彩-五子棋项目总结
  10. Oracle fan ons 12c,Oracle WebLogic Server 与 Oracle Database 12c 的集成 (2)