ORBSLAM2 安装与运行(Ubuntu 18.04下测试)

依赖项

Pangolin

github地址:https://github.com/stevenlovegrove/Pangolin.git

安装方式

# Required
# OpenGL (Desktop / ES / ES2)
sudo apt install libgl1-mesa-dev
# Glew
sudo apt install libglew-dev
# CMake
sudo apt install cmake# Recommended
# Python2 / Python3, for drop-down interactive console
sudo apt install libpython2.7-dev
# Wayland
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols# Optional
# FFMPEG (For video decoding and image rescaling)
sudo apt install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev
# DC1394 (For firewire input)
sudo apt install libdc1394-22-dev libraw1394-dev
# libuvc (For cross-platform webcam video input via libusb)
git://github.com/ktossell/libuvc.git
# libjpeg, libpng, libtiff, libopenexr (For reading still-image sequences)
sudo apt install libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev# 以上依赖除了Required项,其他的可以自己选装,对ORBSLAM2的编译影响不大# build and install
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make
sudo make install

Opencv

需要Opencv版本>=2.4.11, 安装方式可以参见Opencv安装文档

Eigen3

Eigen3版本需要>=3.1.0,一般来说16.04和18.04使用apt安装的版本就符合这个要求

sudo apt-get install libeigen3-dev

DBoW2 and g2o

已经包含在ORBSLAM2中的第三方库文件夹中,不需要自己编译安装

ROS

ROS的安装方式参见ROS melodic install help。此外,对于目前的SLAM领域来说,不求深刻掌握,但了解ROS的基本使用方式,大致看的懂ROS的代码是非常有必要的。对于学习ROS,最推荐的还是官方的21讲,里面将ROS的基本工作原理和使用方式讲的非常清楚,具体参见ROS Toturials,看Beginner Level就可以了。

ORBSLAM库文件编译(包含基本例程)

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

其中遇到的最主要的问题为

error: ‘usleep’ was not declared in this scope

解决方式为在ORB_SLAM2/include/System.h中添加一句

#include "unistd.h"

运行结束后将会生成libORB_SLAM2.solib文件夹中 以及测试程序 mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_eurocstereo_eurocExample文件夹中。

单目示例

此处以单目模式下的TUM数据集为例,演示以下作者提供的例程如何运行。

首先从 http://vision.in.tum.de/data/datasets/rgbd-dataset/download中下载任意一个数据包并解压,这里以fr1/xyz为例。解压后的路径为/home/teamo/rgbd_dataset_freiburg1_xyz

接下来执行以下命令

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER

注意,此处的TUMX.yaml文件要对应于你下载的数据集类型,PATH_TO_SEQUENCE_FOLDER要对应于你的数据集文件夹路径,在我的电脑上,上述命令应修改如下:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/teamo/rgbd_dataset_freiburg1_xyz/

运行结果如下

|

ROS示例

构建

首先需要将Examples/ROS/ORB_SLAM2路径导入到ROS_PACKAGE_PATH环境变量中,具体做法为打开终端,输入sudo gedit ~./bashrc,并在文件最后一行添加

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

此处的PATH为你的ORBSLAM2文件夹所在的绝对路径,比如在我的电脑上需要添加

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/teamo/ORB_SLAM2/Examples/ROS

之后执行构建脚本

chmod +x build_ros.sh
./build_ros.sh

如果仍然出现以下错误

[rosbuild] rospack found package "ORB_SLAM2" at "", but the currentdirectory is "/home/teamo/ORB_SLAM2/Examples/ROS/ORB_SLAM2".  You shoulddouble-check your ROS_PACKAGE_PATH to ensure that packages are found in thecorrect precedence order.

则需要在/opt/ros/<你的ros版本>/setup.bash文件中最后一行添加

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/teamo/ORB_SLAM2/Examples/ROS

之后重新执行构建脚本即可。

若在编译过程中出现如下错误

/usr/bin/ld: CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'

则需要修改ORB_SLAM2/Examples/ROS/ORB_SLAM2C中的CMakeLists.txt文件,将第51行的代码修改如下

set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
-lboost_system)

之后重新构建即可。

例程

以双目模式为例,演示ROS下的ORBSLAM2运行结果。

首先,从数据集下载地址上下载一个rosbag文件,我这里选择的是Machine Hall 01,解压之后的放置路径为/home/teamo/ORBSLAM2/MH_01_easy.bag

之后打开三个不同的终端,运行以下三句代码

roscore
rosrun ORB_SLAM2 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml true
rosbag play --pause /home/teamo/ORB_SLAM2/MH_01_easy.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw

这里的后两句为ROS的消息映射,因为bag包中的消息与作者程序中接收的消息名称并不一致。

需要注意的是,我们需要等待ORB词典读取完成后,再切换到播放bag的shell并按下空格开始播放,若提前播放,会丢失部分数据。

其实,仔细分析ros代码后可以发现,与非ros的例程并没有本质区别,只是将按文件名逐帧读取图片更改为了按照固定频率接受ros消息后读取图片,其他调用方式与非ros基本一样。

结果如下


ORBSLAM2 安装与运行(Ubuntu 18.04下测试)相关推荐

  1. Ubuntu 18.04 下wine的安装以及wine-mono, wine-gecko 的安装

    Ubuntu 18.04 下wine的安装以及wine-mono, wine-gecko 的安装 deepin-wine 的安装 安装方法: 问题汇总: wine 的安装 安装方法: 问题汇总: 因为 ...

  2. ROCm与tensorflow在ubuntu 18.04下的安装教程

    ROCm与tensorflow在ubuntu 18.04下的安装教程     本来准备买Nvidai的显卡,可是囊中羞涩再加上听说AMD的卡也能使用tensorflow进行深度学习加速了,所以1149 ...

  3. Ubuntu 18.04下autoware 1.12 安装日志(含花屏解决方法)

    Ubuntu 18.04下autoware 1.12 安装日志 安装Autoware 1.12 Autoware官网信息 下载相关依赖项 新建文件夹下载autoware 1.12 编译autoware ...

  4. linux ubuntu安装 mono,在Ubuntu 18.04系统中安装Mono及基本使用Mono的方法

    本文介绍在Ubuntu 18.04操作系统中安装Mono及基本使用Mono的方法.Mono是一个基于ECMA/ISO标准开发和运行跨平台应用程序的平台,它是Microsoft .NET框架的免费开源实 ...

  5. Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换

    关注公众号 风色年代(itfantasycc) 领 500G Java 微服务 开发资料 Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换_Linux教程_Linux公社-L ...

  6. linux 安装软件 垃圾,Ubuntu 18.04 安装垃圾清理工具 BleachBit 2.2

    Ubuntu 18.04 安装垃圾清理工具 BleachBit 2.2 BleachBit 可以清理系统缓存文件, 清理磁盘垃圾.下面记录在Ubuntu 18.04下安装垃圾清理工具 BleachBi ...

  7. Android 手机上安装并运行 Ubuntu 12.04

    Android 手机上安装并运行 Ubuntu 12.04 2012 年 8 月 16 日  by  DawnDIY in  Android |  7 Comments Android 是基于Linu ...

  8. Ubuntu 18.04下搜狗拼音输入法选词面板乱码问题(通过更换输入法版本完美解决,一劳永逸)

    Ubuntu 18.04下搜狗拼音输入法选词面板乱码问题(通过更换输入法版本完美解决,一劳永逸) 卸载已安装的搜狗拼音输入法 安装搜狗拼音输入法,注意版本 卸载已安装的搜狗拼音输入法 卸载已安装的输入 ...

  9. 本地搭建Wooyun漏洞库(二)——Ubuntu 18.04下搭建WooYun漏洞库

    本文参考https://github.com/grt1st/wooyun_search 这篇文章是建立在已经搭建好LAMP环境的基础上进行的,搭建方法可见:本地搭建Wooyun漏洞库(一)--Ubun ...

最新文章

  1. 西湖大学鞠峰组:环境宏病毒组学分析思路与常用工具
  2. Leetcode 136.只出现一次的数字 (每日一题 20210714)
  3. Windows10上安装Git 2.10.2详细图解
  4. [LuoguP1064][Noip2006]金明的预算方案
  5. ztree 更新配置后重新渲染树_【问】zTree异步加载时添加父节点怎样避免再次加载整树...
  6. Vue 是如何用 Rollup 打包的?
  7. Samsung Galaxy S III GT-I9300详细刷机教程
  8. js小游戏---扫雷
  9. Navicat for MySQL注册码
  10. 类继承和接口继承的差别
  11. 零数科技获评《互联网周刊》2021元宇宙潜力企业TOP50
  12. 难以忽视的真相:谈及利润,iPhone‘独孤求败’
  13. Deeplink(深度链接)拉起App,我是这样做到的
  14. redis主从结构 主从从
  15. python脚本创建拓扑_Mininet自定义拓扑总结
  16. Spring核心容器功能
  17. html 点击增加样式,js点击添加css样式 css添加jq点击事件 JavaScript点击增加css样式...
  18. Grub 4 DOS 简介
  19. pptp连接服务器无响应,解决PPTP客户端拨号不成功
  20. 最实用idae快捷键

热门文章

  1. python-pillow图像处理模块
  2. 如何将方形图片磨成圆形图片
  3. SpringBoot13:集成SpringSecurity 全部使用 安全*
  4. git push 总是报错 Push rejected: Push to origin/dev was rejected
  5. 王者荣耀s16服务器维护,王者荣耀s16更新内容
  6. PeopleSoft 单点登录
  7. 使用Arduino和太阳能电池板制作Li-Fi音频播放器
  8. 面向大模型微调的instruction指令自动化生成技术:SELF-INSTRUCT指令自动化生成框架工作介绍...
  9. 成都盛迈坤电商:店铺直通车要怎么操作
  10. 基于单片机太阳能充电管理系统设计-毕设课设资料