ORB-SLAM2 安装编译运行(非 ROS)

安装编译

必备安装工具
主要包括 cmake 、 git 、 gcc 、 g++
gcc 的全称是 GNU Compiler Collection,它是由 GNU 推出的一款功能强大的、性能优越的
多平台编译器,是一个能够编译多种语言的编译器。最开始 gcc 是作为 C 语言的编译器(GNU
C Compiler),现在除了 c 语言,还支持 C++、java、Pascal 等语言。gcc 支持多种硬件平台。
gcc 是 GCC 中的 GUN C Compiler(C 编译器)
g++是 GCC 中的 GUN C++ Compiler(C++编译器)
gdb 是是 GCC 中的 GUN 调试工具
cmake(cross platform make 的缩写)是一个开源跨平台的安装编译工
具。它将多个头文件和源文件组合构建为一个工程。他能够输出各种各
样的 makefile 或者 project 文件,所有操作都是通过编译
CMakeLists.txt 来完成。
sudo apt-get install vim cmake git gcc g++ libboost-all-dev
安装第三方库(推荐源码安装)
1、安装 Pangolin
不要用最新的 pangolin,可能会出错
建议从这里下载 0.5 版本 https://github.com/stevenlovegrove/Pangolin/tree/v0.5
# Pangolin 依赖项
# 显示相关
sudo apt-get install libglew-dev
# Python
sudo apt-get install libpython2.7-dev
# 视频编解码(可选)
sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat
dev libswscale-dev
# 读取图像序列用
sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev
libopenexr-dev
# Get Pangolincd ~/your_fav_code_directory
# 不要用最新的 pangolin,会出错,
# 建议从这里下载 0.5 版本
https://github.com/stevenlovegrove/Pangolin/tree/v0.5
# 解压
cd Pangolin-0.5
# Configure and build
mkdir build && cd build
cmake ..
make -j4
sudo make install
验证是否成功安装
# 在如下路径下运行示例代码,注意路径(和我的路径不同)
./Pangolin-0.5/build/examples/HelloPangolin/HelloPangolin
2、安装 OpenCV
提醒:推荐安装和 ros 匹配的 OpenCV 版本。否则可能会冲突
ros melodic 默认安装 opencv3.2
以后不要在同一个主控上安装多个版本 opencv,那是自找麻烦,涉及到各种配置,配置不
对就导致程序无法运行,调试配置花费大量精力!
先安装依赖项
Ubuntu 16.04 安装方法
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev
libavformat-dev
libjpeg.dev
sudo apt-get install libtiff4.dev libswscale-dev libjasper-dev
Ubuntu 18.04 稍微有点不同,安装方法如下
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev
libavformat-dev libjpeg.dev libtiff5-dev libswscale-dev libopenexr
dev libtbb-dev
# Ubuntu 18.04 下安装 libjasper-dev 需要一点额外操作
sudo add-apt-repository "deb http://s ecurity .ubuntu.com/ubuntu
xenial-s ecurity main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
正式安装 OpenCV3.2
cd opencv-3.2.0 # 根据自己下载的版本来,推荐和 ROS 一样的 OpenCV 版本
mkdir build
cd build
cmake ..
make -j4 # 假设你电脑有 4 个核,这样可以编译的快一点
sudo make install
成功安装
3、安装 eigen3
Eigen3 版本需要 >=3.1.0 ,一般来说 16.04 和 18.04 使用 apt 安装的版本就符合这个要
sudo apt-get install libeigen3-dev
查看 eigen 版本
cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h
#或者
cat /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h
4、DBoW2、G2O 无需安装
已经包含在 ORBSLAM2 中的第三方库文件夹中,不需要自己编译安装

安装 ORB_SLAM2

# 用 git 下载 ORB_SLAM2 源码
git clone https://github.com/raulmur/ORB_SLAM2.git
cd ORB_SLAM2
# 添加可执行权限
chmod +x build.sh
#运行
./build.sh
可能遇到的错误
1、usleep 函数问题
先移除错误编译的 build 文件
# 确保在 ORB_SLAM2 文件夹下
rm -r build
在 ORB_SLAM2/include/System.h 中添加一句
#include "unistd.h"
然后重新
./build.sh
2、错误 2 ,找不到 eigen
错误显示如下
原因,pangolin 版本不对,使用 pangolin 0.5 版本
https://github.com/stevenlovegrove/Pangolin/tree/v0.5
运行数据集
单目
TUM 数据集为例进行演示。
首先从 http://vision.in.tum.de/data/datasets/rgbd-dataset/download 中下载任意一个数据
包并解压
tar zxvf rgbd_dataset_freiburg1_desk.tgz
https://github.com/raulmur/ORB_SLAM2 上的示例运行代码如下
# 请勿直接复制!只是参考格式,需要修改 PATH_TO_SEQUENCE_FOLDER
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt
Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
注意,此处的 TUMX.yaml 文件要对应于你下载的数据集类型 , 需要改成对应的 TUM1.yaml
或 TUM2.yaml 或 TUM3.yaml
PATH_TO_SEQUENCE_FOLDER 要对应于你的数据集文件夹存放路径,在我的电脑上,上
述命令应修改如下 :
# 在 ORB_SLAM2 文件夹下打开终端,输入如下(注意要根据自己数据集存放路
径修改地址)
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt
Examples/Monocular/TUM1.yaml
/home/cxl/SLAM/DataSets/TUM/rgbd_dataset_freiburg1_desk
RGB-D
以 TUM 数据集为例
associate.py 脚本用来关联 RGB 和 depth 图像,ORB_SLAM2 里已经提前做好了关联,存放
在 Examples/RGB-D/associations 路径
我们打开其中一个
RGB 时间戳 RGB 图像名 depth 时间戳 depth 图像名
associate.py 脚本用来关联 RGB 和 depth 图像的原理:认为时间戳相差 0.02s(默认参
数) 的 RGB 和 depth 是同步的
自己也可以用脚本来同步,结果和 ORB_SLAM2 里存储的是一样的,代码见下。支持 Python2,
修改一下可支持 Python3
python associate.py PATH_TO_SEQUENCE/rgb.txt
PATH_TO_SEQUENCE/depth.txt > associations.txt
RGB-D 模式的运行模式
# 请勿直接复制!只是参考格式,需要修改 TUMX.yaml,
PATH_TO_SEQUENCE_FOLDER,ASSOCIATIONS_FILE
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB
D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
注意,此处的 TUMX.yaml 文件要对应于你下载的数据集类型 , 需要改成对应的 TUM1.yaml
或 TUM2.yaml 或 TUM3.yaml
PATH_TO_SEQUENCE_FOLDER 要对应于你的数据集文件夹存放路径,在我的电脑上,上述
命令应修改如下 :
ASSOCIATIONS_FILE 对应于数据集所在的关联文件夹位置
# 在 ORB_SLAM2 文件夹下打开终端,输入如下(注意要根据自己数据集存放路
径修改地址)
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB
D/TUM1.yaml /home/cxl/SLAM/DataSets/TUM/rgbd_dataset_freiburg1_desk
Examples/RGB-D/associations/fr1_desk.txt
双目
EuRoC 数据集为例,从官网下载数据集
http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
分为 MH 和 V1,V2 序列
对于 MH 序列
运行格式如下,其中 PATH_TO_SEQUENCE,SEQUENCE 需要替换成自己的路径或文件名
# 请勿直接复制!只是参考格式,需要修改 PATH_TO_SEQUENCE,SEQUENCE
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt
Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/cam0/data
PATH_TO_SEQUENCE/cam1/data
Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
比如我的电脑上,运行指令为:
# 在 ORB_SLAM2 文件夹下打开终端,输入如下(注意要根据自己数据集存放路
径修改地址)
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt
Examples/Stereo/EuRoC.yaml
/home/cxl/SLAM/DataSets/EuRoC/MH_03_medium/mav0/cam0/data
/home/cxl/SLAM/DataSets/EuRoC/MH_03_medium/mav0/cam1/data
Examples/Stereo/EuRoC_TimeStamps/MH03.txt
注意:路径,文件名一定要输对。尽量用 TAB 键补全,保证路径和 文件是有效的。注意数
据集名称 MH_03,时间戳文件名 MH03 中间没有下划线。文件名写错,可能会卡住(不报
错)。
对于 V1、V2 序列
运行格式如下,其中 PATH_TO_SEQUENCE,SEQUENCE 需要替换成自己的路径或文件名
# 请勿直接复制!只是参考格式,需要修改 PATH_TO_SEQUENCE,SEQUENCE
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt
Examples/Stereo/EuRoC.yaml PATH_TO_SEQUENCE/mav0/cam0/data
PATH_TO_SEQUENCE/mav0/cam1/data
Examples/Stereo/EuRoC_TimeStamps/SEQUENCE.txt
比如我的电脑上,运行指令为:
# 在 ORB_SLAM2 文件夹下打开终端,输入如下(注意要根据自己数据集存放路
径修改地址)
./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt
Examples/Stereo/EuRoC.yaml
/home/cxl/SLAM/DataSets/EuRoC/V1_02_medium/mav0/cam0/data
/home/cxl/SLAM/DataSets/EuRoC/V1_02_medium/mav0/cam1/data
Examples/Stereo/EuRoC_TimeStamps/V102.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/39030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将等保2.0的要求融入日常安全运维实践中?

等保2.0的基本要求 等保2.0是中国网络安全领域的基本国策和基本制度,它要求网络运营商按照网络安全等级保护制度的要求,履行相关的安全保护义务。等保2.0的实施得到了《中华人民共和国网络安全法》等法律法规的支持,要求相关行业和单位必须按…

C#/WPF 自制白板工具

随着电子屏幕技术的发展&#xff0c;普通的黑板已不再适用现在的教学和演示环境&#xff0c;电子白板应运而生。本篇使用WPF开发了一个电子白板工具&#xff0c;功能丰富&#xff0c;非常使用日常免费使用&#xff0c;或者进行再次开发。 示例代码如下&#xff1a; Stack<St…

拓扑排序[讲课留档]

拓扑排序 拓扑排序要解决的问题是给一个有向无环图的所有节点排序。 即在 A O E AOE AOE网中找关键路径。 前置芝士&#xff01; 有向图&#xff1a;有向图中的每一个边都是有向边&#xff0c;即其中的每一个元素都是有序二元组。在一条有向边 ( u , v ) (u,v) (u,v)中&…

JavaScript 动态网页实例 —— 广告效果

广告是现代网页设计中不可或缺的内容。广告可以有很多种形式,但最终目的都是要吸引观众的注意力。尽管广告少不了画面、音效和广告语等效果,但其实现主要还是应用JavaScript 代码,只要很好掌握了JavaScript程序设计,剩下的就是创意和美工了。本章介绍几种广告效果,包括对联…

ChatGPT 官方发布桌面端,向所有用户免费开放

Open AI 官方已经发布了适用于 macOS 的 ChatGPT 桌面端应用。 此前&#xff0c;该应用一直处于测试阶段&#xff0c;仅 Plus 付费订阅用户可以使用。 目前已面向所有用户开放&#xff0c;所有 Mac 用户均可免费下载使用。 我们可以访问官网下载安装包&#xff1a;https://op…

Java利用poi实现word,excel,ppt,pdf等各类型文档密码检测

介绍 最近工作上需要对word,excel,ppt,pdf等各类型文档密码检测&#xff0c;对文件进行分类&#xff0c;有密码的和没密码的做区分。查了一堆资料和GPT都不是很满意&#xff0c;最后东拼西凑搞了个相对全面的检测工具代码类&#xff0c;希望能给需要的人带来帮助。 说明 这段…

PHP 爬虫之使用 Curl库抓取淘宝商品列表数据网页的方法

使用 PHP 的 cURL 库来抓取淘宝商品列表数据网页需要谨慎&#xff0c;因为淘宝等电商平台通常会有反爬虫机制&#xff0c;以防止数据被滥用。然而&#xff0c;如果你只是出于学习目的&#xff0c;并且了解并遵守了淘宝的robots.txt文件和相关的使用条款&#xff0c;你可以尝试使…

2024 年江西省研究生数学建模竞赛题目 B题投标中的竞争策略问题--完整思路、代码结果分享(仅供学习)

招投标问题是企业运营过程中必须面对的基本问题之一。现有的招投标平台有国家级的&#xff0c;也有地方性的。在招投标过程中&#xff0c;企业需要全面了解招标公告中的相关信息&#xff0c;在遵守招投标各种规范和制度的基础上&#xff0c;选择有效的竞争策略和技巧&#xff0…

基于JSP技术的校园餐厅管理系统

开头语&#xff1a; 你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果您对校园餐厅管理系统感兴趣或有相关需求&#xff0c;欢迎随时联系我。我的联系方式在文末&#xff0c;期待与您交流&#xff01; 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#x…

QT的编译过程

qmake -project 用于从源代码生成项目文件&#xff0c;qmake 用于从项目文件生成 Makefile&#xff0c;而 make 用于根据 Makefile 构建项目。 详细解释&#xff1a; qmake -project 这个命令用于从源代码目录生成一个初始的 Qt 项目文件&#xff08;.pro 文件&#xff09;。它…

Keil5中:出现:failed to execute ‘...\ARMCC\bin\ArmCC‘

点三个点&#xff0c;去自己的磁盘找自己的ARM\ARMCC\bin

深入解析:计算机系统总线全方位解读

在计算机组成原理中&#xff0c;总线系统是连接计算机各个部件的重要通道。本文将详细介绍系统总线的基本概念、分类、特性及性能指标、结构和控制方式。希望通过本文的讲解&#xff0c;能够帮助基础小白更好地理解计算机系统总线的工作原理。 系统总线 (System Bus) 系统总线…

查看视频时间基 time_base

时间基、codec, 分辨率&#xff0c;音频和视频的都一样&#xff0c;才可以直接使用ffmpeg -f concat -i file.txt 方式合并。 On Thu, Dec 03, 2015 at 21:54:53 0200, redneb8888 wrote: I am looking for a way to find the time base of a stream (video or audio), $ ffpr…

selenium 简介以及 selenium 环境配置

文章目录 一、初识 selenium1.selenium 简介2.selenium 三大组件3.selenium工作过程和原理4.selenium自动化测试流程5.selenium优点 二、自动化测试1.UI自动化本质2.UI自动化的前提3.适用场景4.UI自动化的原则5.UI自动化的覆盖率 三、selenium 环境配置 一、初识 selenium 1.s…

单点登录demo

gitee.com 搜索xxl(许雪里) 的sso 操作demo 完整流程图

网络安全控制相关技术

1.恶意代码&#xff08;Malware&#xff09; 网络从出现、发展演进都始终伴随着安全方面的问题&#xff0c;只是每个阶段表现的形式不同而已。在网络安全方面&#xff0c;不能不提进行网络攻击的网络病毒&#xff0c;或者说恶意代码&#xff08;Malware&#xff09;。所有恶意…

MySQL中的网络命名空间支持

Network Namespace Support&#xff08;网络命名空间支持&#xff09; 提供了在Linux系统中创建和管理多个隔离网络空间的能力。网络命名空间是来自主机系统的网络堆栈的逻辑副本。网络命名空间对于设置容器或虚拟环境非常有用。每个名称空间都有自己的IP地址、网络接口、路由表…

什么是应用安全态势管理 (ASPM):综合指南

软件开发在不断发展&#xff0c;应用程序安全也必须随之发展。 传统的应用程序安全解决方案无法跟上当今开发人员的工作方式或攻击者的工作方式。 我们需要一种新的应用程序安全方法&#xff0c;而ASPM在该方法中发挥着关键作用。 什么是 ASPM&#xff1f; 应用程序安全…

配电智能网关赋能电力系统智能化运行维护

随着智能电网和物联网技术的不断发展&#xff0c;两者之间的融合应用成为电力行业的重要趋势。配电智能网关作为连接两者的关键设备&#xff0c;在智能电网的物联网应用中发挥着重要作用。 配电智能网关能够实现对电力系统的实时监控、数据采集、远程控制等功能&#xff0c;为…

已解决org.omg.CORBA.portable.RemarshalException:在CORBA中需要重新编组的正确解决方法,亲测有效!!!

已解决org.omg.CORBA.portable.RemarshalException&#xff1a;在CORBA中需要重新编组的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 服务器端代码 客户端代码 报错原因 解决思路 解决方法 1. 检查网络连接 …