Ubuntu 16.04 下 PL-SLAM (Stereo) 的安装和使用

2024-05-31 22:32

本文主要是介绍Ubuntu 16.04 下 PL-SLAM (Stereo) 的安装和使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Overview

欢迎访问 https://cgabc.xyz/posts/b4bebaf6/,持续更新

This code rubengooj/pl-slam contains an algorithm to compute stereo visual SLAM by using both point and line segment features.

  • Related Publication

    @article{gomez2017pl,title   = {{PL-SLAM: a Stereo SLAM System through the Combination of Points and Line Segments}},author  = {Gomez-Ojeda, Ruben and Zuñiga-Noël, David and Moreno, Francisco-Angel and Scaramuzza, Davide and Gonzalez-Jimenez, Javier},journal = {arXiv preprint arXiv:1705.09479},year    = {2017}
    

Prerequisites and Dependencies

  • Basics

    sudo apt install build-essential pkg-config libboost-dev \
    libsuitesparse-dev libeigen3-dev libyaml-cpp-dev
    
  • OpenCV 3.x.x

    • I installed OpenCV 3.3.1 along with ros-kinetic
  • G2O

    • recommend version: commit id ff647bd (ff647bd7537860a2b53b3b774ea821a3170feb13)
  • MRPT/mrpt: The Mobile Robot Programming Toolkit

    • recommend version: commit id 0c3d605 (0c3d605c3cbf5f2ffb8137089e43ebdae5a55de3)
    git clone https://github.com/MRPT/mrpt.git
    git branch cg_0c3d605 0c3d605c3cbf5f2ffb8137089e43ebdae5a55de3
    git checkout cg_0c3d605# install dependencies
    sudo apt install libdc1394-22-dev libjpeg-dev libftdi-dev freeglut3-dev \
    libwxgtk3.0-dev zlib1g-dev libusb-1.0-0-dev libudev-dev libfreenect-dev \
    libavformat-dev libswscale-dev libassimp-dev libgtest-dev libpcap-dev# build & install
    mkdir build & cd build
    cmake .. & make -j4
    sudo make install
    
  • rubengooj/stvo-pl: Stereo Visual Odometry by combining point and line segment features

    git clone https://github.com/rubengooj/stvo-pl.git
    cd stvo-pl
    chmod +x build.sh
    ./build.sh
    

Note: it’s better mrpt, stvo-pl and pl-slam are in the same directory

Build

Build pl-slam

git clone https://github.com/rubengooj/pl-slam.git
chmod +x build.sh
./build.sh

Errors

  • Q: /usr/bin/ld: cannot find -lg2o_ext_csparse
    A: sudo ln -sv libg2o_csparse_extension.so libg2o_ext_csparse.so

Run

Dataset

  • Kitti Dataset: data_odometry_gray (~22G)

Kitti data_odometry_gray

  • edit ~/.bashrc, and
    add export DATASETS_DIR=<path-to-data_odometry_gray>/sequences
  • copy pl-slam/config/dataset_params/kitti00-02.yaml
    to <path-to-data_odometry_gray>/sequences/00/,
    rename the yaml file to dataset_params.yaml and change it if necessary
  • source ~/.bashrc
  • edit pl-slam/config/config/config_kitti.yaml, change the value of vocabulary_p and vocabulary_l
  • run
    ./plslam_dataset 00 -c ../config/config/config_kitti.yaml -o 100 -s 1 -n 1000
    or
    ./plslam_dataset 00 -c ../config/config/config_kitti.yaml -o 100 -s 1
Result

EuRoC MH_01_easy

  • edit ~/.bashrc, and add export DATASETS_DIR=<path-to-MH_01_easy>
  • copy pl-slam/config/dataset_params/euroc_params.yaml to <path-to-MH_01_easy>/mav0/,
    rename the yaml file to dataset_params.yaml and change it if necessary
  • source ~/.bashrc
  • edit pl-slam/config/config/config_euroc.yaml, change the value of vocabulary_p and vocabulary_l
  • run ./plslam_dataset mav0 -c ../config/config/config_euroc.yaml -o 100 -s 1

Run Errors

  • the app crashed and get the following error when restart the app after close it with Ctrl+C

    DRM_IOCTL_I915_GEM_APERTURE failed: Invalid argument
    Assuming 131072kB available aperture size.
    May lead to reduced performance or incorrect rendering.
    get chip id failed: -1 [22]
    param: 4, val: 0
    Segmentation fault (core dumped)

    and it fixed after reinstalling Nvidia-driver

  • the app crashed with the error Segmentation fault (core dumped) after run Frame #1600 with the KITTI data_odometry_gray dataset, but have not solved it

这篇关于Ubuntu 16.04 下 PL-SLAM (Stereo) 的安装和使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019218

相关文章

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

C++中std::distance使用方法示例

《C++中std::distance使用方法示例》std::distance是C++标准库中的一个函数,用于计算两个迭代器之间的距离,本文主要介绍了C++中std::distance使用方法示例,具... 目录语法使用方式解释示例输出:其他说明:总结std::distance&n编程bsp;是 C++ 标准