ORBSLAM2 安装与运行(Ubuntu 18.04下测试)
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.so
在lib
文件夹中 以及测试程序 mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc
和 stereo_euroc
在Example
文件夹中。
单目示例
此处以单目模式下的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下测试)相关推荐
- Ubuntu 18.04 下wine的安装以及wine-mono, wine-gecko 的安装
Ubuntu 18.04 下wine的安装以及wine-mono, wine-gecko 的安装 deepin-wine 的安装 安装方法: 问题汇总: wine 的安装 安装方法: 问题汇总: 因为 ...
- ROCm与tensorflow在ubuntu 18.04下的安装教程
ROCm与tensorflow在ubuntu 18.04下的安装教程 本来准备买Nvidai的显卡,可是囊中羞涩再加上听说AMD的卡也能使用tensorflow进行深度学习加速了,所以1149 ...
- Ubuntu 18.04下autoware 1.12 安装日志(含花屏解决方法)
Ubuntu 18.04下autoware 1.12 安装日志 安装Autoware 1.12 Autoware官网信息 下载相关依赖项 新建文件夹下载autoware 1.12 编译autoware ...
- linux ubuntu安装 mono,在Ubuntu 18.04系统中安装Mono及基本使用Mono的方法
本文介绍在Ubuntu 18.04操作系统中安装Mono及基本使用Mono的方法.Mono是一个基于ECMA/ISO标准开发和运行跨平台应用程序的平台,它是Microsoft .NET框架的免费开源实 ...
- Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换
关注公众号 风色年代(itfantasycc) 领 500G Java 微服务 开发资料 Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换_Linux教程_Linux公社-L ...
- linux 安装软件 垃圾,Ubuntu 18.04 安装垃圾清理工具 BleachBit 2.2
Ubuntu 18.04 安装垃圾清理工具 BleachBit 2.2 BleachBit 可以清理系统缓存文件, 清理磁盘垃圾.下面记录在Ubuntu 18.04下安装垃圾清理工具 BleachBi ...
- Android 手机上安装并运行 Ubuntu 12.04
Android 手机上安装并运行 Ubuntu 12.04 2012 年 8 月 16 日 by DawnDIY in Android | 7 Comments Android 是基于Linu ...
- Ubuntu 18.04下搜狗拼音输入法选词面板乱码问题(通过更换输入法版本完美解决,一劳永逸)
Ubuntu 18.04下搜狗拼音输入法选词面板乱码问题(通过更换输入法版本完美解决,一劳永逸) 卸载已安装的搜狗拼音输入法 安装搜狗拼音输入法,注意版本 卸载已安装的搜狗拼音输入法 卸载已安装的输入 ...
- 本地搭建Wooyun漏洞库(二)——Ubuntu 18.04下搭建WooYun漏洞库
本文参考https://github.com/grt1st/wooyun_search 这篇文章是建立在已经搭建好LAMP环境的基础上进行的,搭建方法可见:本地搭建Wooyun漏洞库(一)--Ubun ...
最新文章
- 西湖大学鞠峰组:环境宏病毒组学分析思路与常用工具
- Leetcode 136.只出现一次的数字 (每日一题 20210714)
- Windows10上安装Git 2.10.2详细图解
- [LuoguP1064][Noip2006]金明的预算方案
- ztree 更新配置后重新渲染树_【问】zTree异步加载时添加父节点怎样避免再次加载整树...
- Vue 是如何用 Rollup 打包的?
- Samsung Galaxy S III GT-I9300详细刷机教程
- js小游戏---扫雷
- Navicat for MySQL注册码
- 类继承和接口继承的差别
- 零数科技获评《互联网周刊》2021元宇宙潜力企业TOP50
- 难以忽视的真相:谈及利润,iPhone‘独孤求败’
- Deeplink(深度链接)拉起App,我是这样做到的
- redis主从结构 主从从
- python脚本创建拓扑_Mininet自定义拓扑总结
- Spring核心容器功能
- html 点击增加样式,js点击添加css样式 css添加jq点击事件 JavaScript点击增加css样式...
- Grub 4 DOS 简介
- pptp连接服务器无响应,解决PPTP客户端拨号不成功
- 最实用idae快捷键
热门文章
- python-pillow图像处理模块
- 如何将方形图片磨成圆形图片
- SpringBoot13:集成SpringSecurity 全部使用 安全*
- git push 总是报错 Push rejected: Push to origin/dev was rejected
- 王者荣耀s16服务器维护,王者荣耀s16更新内容
- PeopleSoft 单点登录
- 使用Arduino和太阳能电池板制作Li-Fi音频播放器
- 面向大模型微调的instruction指令自动化生成技术:SELF-INSTRUCT指令自动化生成框架工作介绍...
- 成都盛迈坤电商:店铺直通车要怎么操作
- 基于单片机太阳能充电管理系统设计-毕设课设资料