ubuntu16.04安装运行PL-SLAM
开始之前将 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相关推荐
- Ubuntu16.04系统运行VINS-Mono(安装、环境配置)
Ubuntu16.04系统运行VINS-Mono 目录 一.Ubuntu16.04系统安装(基于VMware) 二.ROS Kinetic的安装 三.opencv3.3.1的安装 四.eigen3.3 ...
- Ubuntu16.04 安装 OpenMPI4.0.0
Ubuntu16.04 安装 OpenMPI4.0.0 文章目录 OpenMPI 简介 一.OpenMPI 1.0.0版本下载 二.OpenMPI 安装步骤 1.解压并进行配置 2.Build 并安装 ...
- Linux ubuntu16.04 安装opencv4教程(源码编译)
参考文章1:Ubuntu 安装 OpenCV(亲测有效) 参考文章2:OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib 参考文章3:ubun ...
- Ubuntu16.04安装NVIDIA显卡(RTX20系列)驱动+CUDA10.0+cudnn+Pytorch1.1.0
Ubuntu16.04,GPU: Geforce RTX 2070-Super(本博客是显卡驱动和cuda分开安装的教程). 1. Ubuntu16.04安装NVIDIA显卡驱动 1. 下载显卡驱动. ...
- Ubuntu16.04安装MySQL5.7
转载:https://blog.csdn.net/qq_42881421/article/details/91981918 环境: 虚拟机的Ubuntu16.04 Windows系统下Navicat ...
- ubuntu16.04 安装cuda9.0+cudnn7.0.5+tensorflow+nvidia-docker配置GPU服务
[摘要] docker很好用,但是在GPU服务器上使用docker却比较复杂,需要一些技巧,下面将介绍一下在ubuntu16.04环境下的GPU-docker环境搭建过程. 第一步: 删除之前的nvi ...
- ubuntu16.04安装百度网盘(使用deepin-wine)2019年3月亲测可用以及安装MATLAB的技巧
ubuntu16.04安装百度网盘(使用deepin-wine) 按照下面链接进行安装,但是对于小白来说,描述还是过于精简,对于一些白痴问题没有详细说明,我碰到的问题汇总一下. https://git ...
- Ubuntu16.04安装Mono4.2.1 C#开发环境
前言:这篇转载的文章是我很久以前写的,但是后来手机换号了,又注册新号开始继续写blog.旧文章不能合并到新账号,就以转载的形式纪念下过去 操作系统环境:ubuntu16.04 安装Mono4.2.1 ...
- Ubuntu16.04安装文本标注工具brat
brat 的下载地址http://brat.nlplab.org/ Ubuntu16.04安装CGI环境 安装Apache2 sudo apt install apache2 配置CGI 1)打开文件 ...
最新文章
- 自动化系导航与控制研究所
- 全球及中国婴儿痤疮药行业消费需求调研与竞争策略展望报告2022版
- c语言不同类型指针间的强转,C语言中不同的结构体类型的指针间的强制转换详解...
- 【洛谷P5114】八月脸【边分治】【闵可夫斯基和】
- python知识点1
- 信息学奥赛一本通 1132:石头剪子布 | OpenJudge NOI 1.7 04
- redux 思考以及源码解析
- html5翻卡片游戏,用 JavaScript 写一个卡片小游戏
- Java集合类之Collection接口学习
- 基于tuns的DNS隧道研究
- Linux操作系统分区格式Ext2,Ext3,Ext4的区别
- 数字电视加密技术工作原理(EMM ECM)
- plsql developer连接数据库超时,Ping 服务器ip提示“TTL传输中过期”
- Android字体加粗
- elasti 时间范围查询
- 7-114 用if-else语句编程百分制成绩转换为五分制成绩
- Android ExpandableListView 使用实例
- 不要提前交卷!!!曾有人在最后35秒,拿到了13分!!!(祝所有考生顺利)...
- TCP/IP,HTTP,RPC、SOA、长连接短连接等的区别
- 桌面快捷方式左下角有小黑块怎么解决?两秒搞定!