PL-SLAM的配置、安装及运行
作者开源的代码地址: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的配置、安装及运行相关推荐
- 在Ubuntu 12.04 64bit上配置,安装和运行go程序
注意: 下面的安装配置均遵从官网或是教材<Go语言程序设计>中的部分内容. 顺便说下,这是一本很难得的Go语言的入门教程,非常基础和全面.起初我因为这本书的封面比较讨厌它,闲置几年之后,一 ...
- 一起玩Docker之1——Ubuntu配置安装Docker运行环境并安装(Ubuntu、Centos)镜像
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...
- Sublime Text 3(中文)在Windows下的配置、安装、运行
Sublime Text 3(中文)下载.安装.运行! 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) ...
- php7.0安装windows_Windows 7 下如何配置PHP网站运行环境
Win7之家( www.win7china.com):Windows 7 下如何配置PHP网站运行环境 本文出处不详,有知者请通过文章下方的评论告知Win7之家,软媒会立即修改出处.本文适合PHP网站 ...
- 【视觉SLAM】从安装Ubuntu18.04开始
[视觉SLAM]从安装Ubuntu18.04开始 前言 说明 工作环境 需要准备的东西 安装Ubuntu 18.04 安装ORB-SLAM3 安装Pangolin 安装OpenCV 3.2.0 安装R ...
- dso与Android,DSO 安装及运行 —— dso_ros + Android 手机摄像头
转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12425855.html 本文要点: dso 配置安装 dso 离线 ...
- PL/SQL Developer12配置使用方法
下载 PL/SQL Developer 地址:https://www.allroundautomations.com/bodyplsqldevreg.html 选择下载适合自己的版本.安装过程一路默认 ...
- 【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. ...
- LOAM学习-安装与运行
LOAM-安装与运行 引言 LOAM安装 LOAM运行 结语 引言 由于最近想学习SLAM,发现LOAM是较为经典的入门算法. 于是就开始了LOAM的学习. LOAM安装 LOAM的安装真的是一言难尽 ...
- CentOS 6.9下配置安装KVM
注意:KVM一切安装和运行都是在root用户下完成的,并且只有root才能支持某些软件. 一.准备工作: 1.查看系统版本.内核版本 ##查看系统版本 # cat /etc/redhat-releas ...
最新文章
- Linux系统的CPU使用率和Load
- 071_设置日期方法
- eclipse创建android工程,在eclipse创建android 工程
- python 如何查看列表(List)的维度? (需要将List转换成numpy数组)
- 【转】unity3d优化总结篇
- 12-赵志勇机器学习-Label_Propagation
- Django:ORM关系字段
- IDEA Junit测试
- K3CLOUD表关联
- 一种自适应模拟退火粒子群优化算法-附代码
- android qq音乐 本地歌曲,如何将手机qq音乐本地歌曲导入到电脑
- 弹窗php整人_PHP控制前台弹出对话框的实现方法
- 浏览器密码查看工具-WebBrowserPassView使用实验 ——合天网安实验室学习笔记
- 伟创ac80b变频器故障代码_安川变频器故障代码和安川变频器报警详解
- android studio umake,Android Studio中NDK开发傻瓜教程(CMake)
- OpenCascade学习笔记-创建一个简单的OpenCascade单文档
- 机房一体化监测解决方案
- Python小游戏-石头剪刀布(和电脑斗智斗勇)
- system generator结合高版本matlab的使用
- 从下载到区块链,迅雷分布式技术解读
热门文章
- 带你一起手把手用Java实现的在线点餐、基于SSM(springBoot)+mysql的哦
- 人脸识别 “抓” 错了人,他在监狱呆了 10 天
- iPhone为盲人自动识别并标记按钮和UI功能
- App工厂为个人及中小企业提供快捷的App解决方案
- 软件测试--通用测试用例写作【转载】
- 服务器商店无限量指令,我的世界服务器商店指令怎么用 我的世界商店指令代码介绍...
- HAL库配置GPIO
- pb中自定义纸张打印
- 干海参的价格是多少谁有海参价格表啊
- 计算机所选区域单元格数值,计算机习题110、 在Excel工作表的单元格区域A1:A8各单元格中均存放数值1,单元格A9为空,单元格A10为一字符...