PL-SLAM是Ruben Gomez-Ojeda大神融合点和线特征SLAM的最新成果,并开放了源代码,本博文记录安装运行PL-SLAM遇到的一些问题。

1源代码地址

https://github.com/rubengooj/pl-slam

2编译配置PL-SLAM

安装依赖

OpenCV 3.x.x

It can be easily found at http://opencv.org.
建议安装OpenCV 3.1.0,否则编译过程中会出现一些.so文件的错误,推测作者可能用的这个版本。

参考教程

https://www.cnblogs.com/feifanrensheng/p/9042813.html

Eigen3 (tested with 3.2.92)

sudo apt-get install libeigen3-dev

Boost

sudo apt-get install libboost-dev

g2o - General Graph Optimization

It can be found at:
https://github.com/RainerKuemmerle/g2o.git
这里在编译时可能会出现错误,将安装好的g2o文件夹中的cmake_modules文件夹复制到~/pl-slam文件夹中即可。

YAML (tested with 0.5.2)

Installation on Ubuntu:

sudo apt-get install libyaml-cpp-dev

stvo-pl

It can be found at:

https://github.com/rubengooj/stvo-pl
这个项目同样是作者的工作,必须安装这个项目,因为会用到这个项目的东西。

MRPT

https://github.com/MRPT/mrpt/tree/0c3d605c3cbf5f2ffb8137089e43ebdae5a55de3

必须使用这个指定版本的MRPT,否则会编译报错

Line Descriptor

We have modified the line_descriptor module from the OpenCV/contrib library (both BSD) which is included in the 3rdparty folder.
这里不用操作,后面的脚本build.sh会一并安装。
但是这里值得特别注意,一般情况下我们安装OpenCV就够用了,但是为了使用line_descriptor,必须安装opencv_contrib,而且最好同时安装,否则会可能出现一些错误。

Configuration and generation

cd ~/pl-slam
sh build.sh

编译过程会出现找不到g2o库文件的错误,通过以下方式解决

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

Usage
Datasets configuration

We employ an environment variable, ${DATASETS_DIR}, pointing the directory that contains our datasets. Each sequence from each dataset must contain in its root folder a file named dataset_params.yaml, that indicates at least the camera model and the subfolders with the left and right images. We provide dataset parameters files for several datasets and cameras with the format xxxx_params.yaml.
关键是设置数据集路径的环境变量,阅读~/pl-slam/app/plslam-dataset.cpp可以加深理解。

gedit ~/.bashrc
export DATASETS_DIR=/home/zn(改为你的工作目录)
source ~/.bashrc

在KITTI下载kitti/00数据,并将其放到~/KITTI目录下。
将~/pl-slam/config/dataset_params/kitti00-02.yaml复制到~/KITTI/kitti/00,然后将kitti00-02.yaml改为dataset_params.yaml.
将~/pl-slam/config/config/config_kitti.yaml中vocabulary_p和vocabulary_l的路径改为自己的。

SLAM Application

./build/plslam_dataset kitti/ -c config/config/config_kitti.yaml -o  -s  -n 

至此,整个编译测试过程完成。

ubuntu16.04下安装运行PL-SLAM的更多相关文章

  1. ubuntu16.04下安装运行DSO

    1.下载源码 git clone https://github.com/JakobEngel/dso.git 2.安装依赖项 suitesparse and eigen3 (required). su ...

  2. ubuntu16.04下安装artoolkit5

    目前对AR技术的常见理解就是CV(Computer Vision)+CG(Computer Graphic).CV的方法很多,简单些比如FREAK+ICP(ARToolKit中的NFT),复杂些就是S ...

  3. Ubuntu16.04下安装数据库oracle客户端

    在Ubuntu16.04下安装oracle数据库客户端,使Django项目连接到远程Oracle数据库. 1.下载oracle客户端安装包: 进入官网http://www.oracle.com/tec ...

  4. Ubuntu16.04下安装redis

    Ubuntu16.04下安装redis 保证网络畅通,选定好下载工作路径,执行以下命令下载redis-3.2.6: sudo wget http://download.redis.io/release ...

  5. docker学习笔记(一)—— ubuntu16.04下安装docker

    docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...

  6. Ubuntu16.04下安装多版本cuda和cudnn

    Ubuntu16.04下安装多版本cuda和cudnn 原文 https://blog.csdn.net/tunhuzhuang1836/article/details/79545625 前言 因为之 ...

  7. Ubuntu16.04下安装Hadoop

    一.记录理由 刚开始只是想要学习怎么使用Hive的.想着安装应该很简单,没想到花了整整一天的时间来安装,为了避免下次犯同样的错误,特此记录. 二.安装Hadoop 网上教你怎么安装Hadoop的文章有 ...

  8. Ubuntu16.04下安装texlive

    Ubuntu 16.04下安装texlive的步骤如下: 1.下载texlive 打开终端输入:sudo apt-get install texlive-full  #下载这一过程会持续10-20分钟 ...

  9. Ubuntu16.04下安装googlechrome flash 插件和安装网易云音乐

    一.ubuntu 16.04 下安装完后发现 flash无法播放没有安装flash插件因为 Adobe Flash 不再支持 linux Google 便开发了PepperFlashPlayer来替代 ...

随机推荐

  1. kubelet 预留system、kube资源

    kubelet 预留system.kube资源 Kubernetes 的节点可以按照 Capacity 调度.默认情况下 pod 能够使用节点全部可用容量.这是个问题,因为节点自己通常运行了不少驱动 ...

  2. CodeForces - 1159B

    题目链接:https://vjudge.net/problem/CodeForces-1159B 题目意思:任选选两个元素,分别为a[i],a[j]. 问 都满足K*| i -  j | <= ...

  3. TensorFlow之estimator详解

    Estimator初识 框架结构 在介绍Estimator之前需要对它在TensorFlow这个大框架的定位有个大致的认识,如下图示: 可以看到Estimator是属于High level的API,而 ...

  4. 图论 - PAT甲级 1003 Emergency C++

    PAT甲级 1003 Emergency C++ As an emergency rescue team leader of a city, you are given a special map o ...

  5. javascript学习4、Function函数、伪数组arguments

    一.Function函数基础 函数:就是将一些语句进行封装,然后通过调用的形式,执行这些语句. 1.函数的作用: 将大量重复的语句写在函数里,以后需要这些语句的时候,可以直接调用函数,避免重复劳动. ...

  6. oracle彻底删除干净

    Oracle数据库的安装这里就不说了,网上应该有很多,但是oracle数据库的卸载却找不到一个比较详细的完整卸载的说明.很多卸载不完全,会有遗留数据,影响后续的安装.所以自己整理一份以前上学的时候学习 ...

  7. <?php return array(

    <?php //test.php return array( 'name' => 'andy', 'sex' => 'male' ); ?> <?php $set = r ...

  8. pandas IO

    pd.read_csv("../data/user_info.csv", index_col="name") #假设csv里包含这几列: name, age, ...

  9. C++将模板的声明和定义放置在同一个头文件里

    1. 一个类: 头文件用于保存类的声明:定义文件保存类的实现.   2. 分离编译模式: 允许在一个编译单元(.cpp文件)中定义函数.类型.类对象等,然后在另一个编译单元中引用它们.编译器处理完所有 ...

  10. matlab基础向7-8:画图

    1.画直角坐标系的二维图 画直线: x1=[1 2 3]; y1=[4 5 6]; plot(x1,y1);%斜率为1的直线,穿过(1,4)(2,5)(3,6) 画抛物线y=x*x(-3<=x& ...