pl_slam配置、运行过程
pl_slam配置、运行过程
- 源码下载链接
- 各种库的安装以及常见问题解决
- 各种库的安装
- g2o库安装配置
- 编译运行
- 结果
- 问题解决方案
源码下载链接
pl_slam源码下载链接
各种库的安装以及常见问题解决
根据github中的要求依次安装系统在运行过程中哦所用的一系列库(尽可能保持介绍的库安装顺序进行安装,因为很多库之间会有依赖关系。)
各种库的安装
- OpenCV 3.x.x
- Eigen3(3.2.92或者3.2.10)
- Boost
- YAML
- stvo-pl
- MRPT
以上所有的库可以直接参考stvo_pl配置、运行过程进行配置
如果stvo-pl运行正常,说明相关库已经安装成功。(保证stvo-pl和pl-slam在同一目录下)
g2o库安装配置
g2o库在安装之前一定保证eigen3(版本一定要对)匹配的库安装成功。
安装依赖
sudo apt-get install libeigen3-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev
安装g2o
cd g2o
mkdir build
cd build
cmake …/
make
sudo make install
编译运行
./plslam_dataset kitti/00
- 在pl-slam文件夹下创建kitti文件夹,将kitti 数据集中的00数据集复制到该文件夹中;
- 将pl-slam/config/dataset_params/kitti00-02.yaml复制到/00文件中并将文件名称改为dataset_params.yaml并将其中的image2/_image3/改为image0/_image1/;
- 在.bashrc文件最后添加(如果之前的stvo-pl正常运行了就不用再改了)
gedit ~/.bashrc
export DATASETS_DIR=/××××/pl-slam
source ~/.bashrc
- 在执行命令中注意…/config/config/config_kitti.yaml,文件的具体位置。
结果
问题解决方案
- 在执行
./build.sh
时会出现各种和eigen/g2o相关的报错,大概率是库版本匹配的问题,试试重新安装eigen/g2o库; - 报错
/usr/bin/ld: can not find -lg2o_ext_csparse
解决办法
cd /usr/local/lib
sudo ln -sv libg2o_csparse_extension.so libg2o_ext_csparse.so
- 找不到字典
Invalid vocabulary for points
修改/config/config/config_kitti.yaml和src/slamConfig.cpp文件中的 vocabulary_p 和vocabulary_l为自己电脑下的绝对地址; - 当运行时发生内存溢出;重启电脑。
- 在执行系统的时候一直提示找不到g2o库,在确定已经安装g2o的情况下在CmakeList.txt文件中
find_package(G2O REQUIRED)
之前添加以下俩条语句
list(APPEND CMAKE_MODULE_PATH /home/zhang/AllLib/g2o/g2o/cmake_modules)
set(G2O_ROOT /home/zhang/AllLib/g2o/g2o)
或者在CMakeLists.txt文件目录下创建一个cmake_modules文件夹,在将十四讲中ch6中的FindG2O.cmake文件复制进来进行编译。
- 在执行./build.sh时出现g2o函数问题,类似如下
/home/zbs/SLAM/PL_SLAM/PL-SLAM-STEREO/src/mapHandler.cpp:3967:77: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::BlockSolver(g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::LinearSolverType*&)’ g2o::BlockSolver_6_3* solver_ptr = new g2o::BlockSolver_6_3(linearSolver);
解决办法是将出错的这俩个位置
pl-slam/src/mapHandler.cpp:3968:101:
pl-slam/src/mapHandler.cpp:4193:77:
源码换成一下的代码
//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));
再次执行./build.sh
- 运行程序时候MRPT开启之后一段时间发生段错误退出界面,需要修改CmakeList.txt中
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -mtune=native -march=native")
修改为
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -mtune=native")
- 已经设置了 D A T A S E T _ D I R DATASET\_DIR DATASET_DIR环境变量,但是在执行时依旧无法定位路径,需要打开一下该路径即可解决该问题。
pl_slam配置、运行过程相关推荐
- Maven - 2、安装、配置、mvn运行过程详解
1.本篇环境 jdk1.8 maven3.6.2 我们要写java代码,需要安装jdk,那我们要使用maven,也类似,需要在我们的机器中安装maven. 2.linux中安装安装maven mave ...
- 学习Java第一天:1、Java是什么?2、面向对象的编程思想的特点 3、Java的开发工具 4、安装JDK和配置环境变量 5、Java程序的运行过程 6、Java语言的特点
目录 1.Java是什么? 2.面向对象的编程思想的特点 3.Java的开发工具 4.安装JDK和配置环境变量 5.Java程序的运行过程 6.Java语言的特点 1.Java是什么? java是一门 ...
- 深入浅出Spring Security(三):FilterChainProxy的运行过程
上篇回顾 我们已经知道了Spring Security的核心过滤器的创建和原理,本文主要介绍核心过滤器FilterChainProxy是如何在tomcat的ServletContext中生效的. Se ...
- java 程序运行过程 简介
这里的Java程序运行过程,是指我们编译好代码之后,在命令行开始执行java xxx命令,到java程序开始执行起来的这一过程,我们称其为运行时. 第一步,操作系统解析我们输入的java xxx命令, ...
- STM32F0xx_EXIT中断配置详细过程
Ⅰ.概述 EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种.因此,EXIT在实际项目开发中也是比较常见的一种. STM32F0中外部中断EXIT属于中断和事件的 ...
- DispatcherServlet代码分析及运行过程
DispatcherServlet代码分析及运行过程 1 首先该类有一静态语块,用以加载缺省策略. static { ClassPathResource resource =new ClassP ...
- 深度学习框架caffe及py-faster-rcnn详细配置安装过程
深度学习框架caffe及py-faster-rcnn详细配置安装过程 配置环境: ubuntu14.04 CUDA7.5 1.准备工作 安装vim.python-pip.git sudo apt-ge ...
- STM32F0xx_SPI读写(Flash)配置详细过程
Ⅰ.概述 关于SPI(Serial Peripheral Interface)串行外设接口可以说是单片机或者嵌入式软件开发人员必须掌握的一项通信方式,就是你在面试相关工作的时候都可能会问及这个问题.在 ...
- Hibernate的几个关键类的详解及Hibernate的运行过程
Configuration 类 Configuration 类负责管理 Hibernate 的配置信息.包括如下内容: Hibernate运行的底层信息:数据库的URL.用户名.密码.JDBC驱动类, ...
最新文章
- java里面怎么添加表约束_mysql给表增加约束条件
- WP8.1 Study4:WP8.1中控件集合应用
- yum 安装redis默认目录_Centos7 安装redis 详细步骤
- 【GIF动画+完整可运行源代码】C++实现 冒泡排序——十大经典排序算法之一
- [js] 解释下深度优先遍历和广度优先遍历的区别及如何实现
- (map)出现最多的数
- 小汤学编程之JavaEE学习day03——JSP组成结构、JSP原理、JSP生命周期、JSP九大内置对象、四大作用域、JSP的MVC模式
- 统计带头结点的单向链表的个数并存放在形参n所指的单元中。 欢迎评论 指点。
- Collection(单列集合)
- x86汇编语言(2) 认识8086处理器
- EJB3.0 Timer
- 【ABAP系列】SAP ABAP 从FTP服务器读取文件到本地
- mysql 使用存储过程批量插数据
- Git(2):如何更改GitHub仓库中项目的语言属性
- cisco思科模拟器交换机和路由器基础命令
- python2.7+pyqt4安装
- 和导师闹僵跑来实习?拼了命也要拿到大厂实习offer
- 【论文笔记】Details or Artifacts: A Locally Discriminative Learning Approach toRealistic Image Super-Reso
- macOS SwiftUI 指示器组件规范之 01 液位指示器Level Indicators
- 前端学习之路(1)———表格的增行和减行
热门文章
- FreeSWITCH 对接阿里SDM(MRCP-SERVER)
- 【项目自动发布】基于Docker/单节点Rancher/GitLab搭建简易的CI/CD流水线(备忘+补充完善)
- 在桌面创建【网络连接】和【设备管理器】的快捷方式
- oracle表空间文件离线,oracle 表空间 数据文件 笔记
- CSS 基础教程:CSS 语法
- 博弈论学习笔记(七)纳什均衡伯川德模型与选民投票
- 神犇营-49-人口增长问题
- 郑清 - 日常作息表 - September - 2019
- 手机关机收不到微信消息_为什么手机休眠的时候收不到微信 解决方法
- 2062门课程名称翻译大全