VMware虚拟机中ubuntu使用记录(8)—— 如何在Ubuntu18.04中安装运行非ROS版本的ORB_SLAM3跑官方数据集(全程手把手教学安装)

news2024/9/29 7:31:56

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • ORB_SLAM3的介绍
  • 一、gitee下载ORB_SLAM3源码
    • 1. gitee导入gitHub仓库
  • 二、安装支持C++特性依赖
  • 三、安装Pangolin
    • 1. 安装Pangolin的依赖
    • 2. 下载编译
  • 四、安装Eigen3
    • 1.下载源码
    • 2. 编译安装
  • 五、安装Opencv4.5.2
    • 1. 查看opencv的版本
    • 2. 安装opencv4.5.2
  • 六、安装boost库
    • 1.下载源码
    • 2. 编译安装
  • 七、ORB_SLAM3的编译和安装
    • 1. 运行前的修改
    • 2. ORB_SLAM3的编译安装
  • 八、运行ORB_SLAM3的官方数据集
    • 1. 数据集的下载
    • 2. 查看运行指令
    • 3. 数据集测试运行
  • 总结


ORB_SLAM3的介绍

ORB-SLAM3是一款基于特征点的实时单目SLAM系统,是SLAM领域的研究热点之一。它的核心算法是结合了ORB特征点提取和描述子匹配、单目RGB相机的深度估计、运动估计和地图优化等步骤,能够在实时性和精度之间取得平衡,适用于各种环境下的定位和建图任务。在各种应用领域都有广泛的应用,如室内导航、自动驾驶、机器人导航、增强现实等。通过在移动机器人和自主系统中实现实时的SLAM功能,ORB-SLAM3为机器人领域的研究和应用提供了强大的支持,帮助机器人实现自主导航和定位。

ORB-SLAM3的算法原理主要包括以下几个步骤:首先,通过ORB特征点提取和描述子匹配来进行特征点的追踪和匹配;然后利用单目RGB相机的深度信息进行稀疏或稠密的深度估计;接着通过运动估计来估计相机的运动和姿态变换;最后通过地图优化来不断修正和优化地图的几何结构,从而实现实时的定位和建图。

总的来说,ORB-SLAM3作为一款领先的实时SLAM系统,不仅在技术上具有重要意义,还在社会和经济发展中发挥着积极的作用,推动了机器人技术的发展和应用,为社会带来了更多的便利和效益,

废话不多说,直接上教程!

一、gitee下载ORB_SLAM3源码

本次教程运行的是非ROS版本的ORB_SLAM3,所需的环境如下:
Ubuntu18.04、Opencv4.5.2
Pangolin0.6、 Boost库1.77.0版本、Eigen3.3.4

ORB_SLAM3的源码下载

下载网址:https://github.com/UZ-SLAMLab/ORB_SLAM3

推荐安装v0.4-beta(相对问题比较少,master/1.0的版本看最后的踩坑记录,不过都跑成功了,泪目呜呜呜!!!!)
以下的教程使用的是v0.4-beta版本的ORB_SLAM源码进行编译安装

1. gitee导入gitHub仓库

在没有科学上网的情况下,window、ubuntu上直接在gitHub官网下载压缩包很慢很慢,甚至下载的压缩包有问题,可能会出现解压失败的情况,下面是使用gitee进行下载的具体流程:

(1)注册gitee账号
按照流程填写信息注册即可:

官网网址:https://gitee.com/

(2)gitee导入gitHub仓库
登录gitee——点击+号——从GitHub导入:

在这里插入图片描述

点击从URL导入——复制GitHub网址粘贴上去——从gitee仓库下载即可:

在这里插入图片描述

二、安装支持C++特性依赖

终端输入:

sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install build-essential
sudo apt-get install cmake
sudo apt-get install git

三、安装Pangolin

1. 安装Pangolin的依赖

sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
sudo apt install libpython2.7-dev
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols

2. 下载编译

极力推荐:下载0.6版本的Pangolin,后面会避免一些问题

(1)下载源码

下载地址:https://github.com/stevenlovegrove/Pangolin

(2)编译安装
进入Pangolin目录下,创建build:

mkdir build    
cd build

编译源码:

cmake .. 
make

安装到本机:

sudo make install

(3)检查是否安装成功

cd examples/HelloPangolin
./HelloPangolin 

有如下的正方体图案出现即表示安装成功。

在这里插入图片描述

四、安装Eigen3

1.下载源码

终端输入:git clone https://github.com/eigenteam/eigen-git-mirror  

2. 编译安装

进入eigen-git-mirror目录下,创建build:

mkdir build    
cd build

编译源码:

cmake .. 
make

安装到本机:

sudo make install

安装后,头文件安装在了/usr/local/include/eigen3/

五、安装Opencv4.5.2

1. 查看opencv的版本

终端输入:

pkg-config --modversion opencv

2. 安装opencv4.5.2

具体的安装过程,可以参考一下这篇博客:
VMware虚拟机中ubuntu使用记录(7)—— 如何在Ubuntu18.04中安装opencv4.5.2

六、安装boost库

1.下载源码

进入boost库官网:

https://www.boost.org/

推荐下载1_77_0版本(我安装1.79.0、1.78.0都没成功)

2. 编译安装

1)解压文件
终端输入:

tar -xzvf boost_1_77_0.tar.gz   //boost_1_77_0.tar.gz为自己的压缩包名

2)执行 ./bootstrap.sh
解压之后进入解压出来的文件夹,然后执行这个脚本:

sudo ./bootstrap.sh

3)安装
执行完毕之后,你会发现又多了些文件,

再执行如下脚本:sudo ./b2 install

4)安装openssl
终端输入:

sudo apt-get install openssl 
sudo apt-get install libssl-dev

七、ORB_SLAM3的编译和安装

完成上述环境的搭建之后,下面就可以进行ORB_SLAM3的安装运行的工作。

1. 运行前的修改

1)修改CMakeList.txt文件
建议在CMakeList.txt文件的-wall 后面加上-w 用于屏蔽Warning便于发现错误的真正位置。
在这里插入图片描述
2)修改build.sh文件
建议将build.sh文件中的make -j/make -j4改成make -j2/make 避免运行./build.sh时出现系统卡死的情况(当然电脑的配置足够,可以不改)

2. ORB_SLAM3的编译安装

1)进入源码文件夹下(ORB_SLAM3目录下)

cd ORB_SLAM3
chmod +x build.sh
./build.sh

在虚拟机中,执行./build.sh时可能会报错:
“c++: internal compiler error: 已杀死 (program cc1plus)”

原因:
虚拟机运行内存不足

解决:
关掉虚拟机,重新编辑虚拟机,调大虚拟的内存,步骤如下所示:
在虚拟机的首页——点击编辑虚拟机——内存——调大内存即可(根据你自己的电脑内存大小来确定上限)

在这里插入图片描述
2)再次编译源码

./build.sh

出现报错:

错误error: ‘XXX’ is not a member of ‘std’

报错信息如下:

/usr/local/include/sigslot/signal.hpp:109:79:error:‘decay_t’ is not a
member of 'std’ bool is_weak_ ptr_compatible_v= detail ::
is_weak_ptr_compatible<std::decay_t

> :: value;
/usr/local/include/sigslot/signal.hpp:109:79: note: suggested
alternative: ‘decay’ bool is_weak_ptr_compatible_v= detail ::
is_weak_ptr_compatible<std: :decay_t

> :: value;

报错页面信息如下图所示:

在这里插入图片描述

原因:
可能是编译过程中调用了某一些库,库里面使用的是c++14的标准语法,但ORB_SLAM3中只有c++11的语法许可,没有14的,这就造成了冲突。

解决:
打开ORB_SLAM3/CMakeLists.txt文件,添加c++的使用许可:

add_compile_options(-std=c++14)

添加的位置如下图所示:

在这里插入图片描述

3)再次编译源码

./build.sh

不出意外,应该就可以完全编译成功了!!!!

如果出现报错:
“/usr/bin/ld:找不到 -lboost_serialization”
具体的解决可以参考这篇博客:

八、运行ORB_SLAM3的官方数据集

1. 数据集的下载

本次教程使用选用Euroc数据集,网址如下:

https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads

非ros环境要下载ASL格式的,如下图所示:

在这里插入图片描述

2. 查看运行指令

在源码的文件夹里面找到euroc_examples.sh文件,里面存放运行ORBSLAM的指令,如果源码里没有euroc_examples.sh,下面是github里的ORB详细注释版,包含测试ORB的.sh文件,连接如下:

https://github.com/electech6/ORB_SLAM3_detailed_comments

文件所在的位置:

在这里插入图片描述
将上述的文件复制到ORB_SLAM3文件夹下即可。

3. 数据集测试运行

具体的步骤如下:
(1) 创建数据集目录
以Machine Hall 01数据集为例,下载页面如下图:

在这里插入图片描述

这个压缩包下好了之后,解压出来里面是一个mav0的文件夹。然后在自己ORB-SLAM3文件夹下,创建一个文件夹叫dataset,在dataset文件夹下再创建一个MH01文件夹。存放目录如下图所示:

在这里插入图片描述

(2) 然后把mav0文件夹放到MH01里面去

(3) 打开euroc_examples.sh文件
打开这个脚本,你可以看到有一个与MH01有关的指令指令如下:
如:

./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt

文件的内容如下图所示:
在这里插入图片描述

注意:把"$pathDatasetEuroc"/MH01 改成你自己的路径,比如我的路径就是:./dataset/MH01

(4) 运行指令
在ROB_SLAM3文件夹下,打开终端,执行如下指令:
其中的文件的路径,改成自己的文件路径

./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt

最后,ORB-SLAM3就运行起来了,运行的界面如下:

在这里插入图片描述

(5) 如果你运行ORB_SLAM3时,只有终端的窗口,没有调出其他可视化窗口

你安装的版本可能是ORB_SLAM3-v0.1版本,这个版本是默认不打开窗口的。
解决:
在ORB_SLAM3-v0.1/Examples/Monocular目录下修改mono_euroc.cc文件,将false改成true,如下所示:

在这里插入图片描述

总结

以上就是运行ORB_SLAM的全部详细教程,主要是介绍了关于在ubuntu18.04中运行ORB_SLAM3的所有依赖的库的安装过程,和所遇到的一些报错的解决方法,最后也详细介绍如何下载和使用官方的数据集运行ORB_SLAM进行建图,真的是全程的踩坑记录!!!下期分享如何在ubuntu18.04系统中安装运行ROS版本的ORB_SLAM3。有什么问题,可以评论区里面交流讨论。

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

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

相关文章

java-spring 09 下.populateBean (方法成员变量的注入@Autowird,@Resource)

01.在populateBean 方法中的&#xff1a;用于Autowird&#xff0c;Resource注入 // 后处理器已经初始化boolean hasInstAwareBpps hasInstantiationAwareBeanPostProcessors();// 需要依赖检查boolean needsDepCheck (mbd.getDependencyCheck() ! AbstractBeanDefinition.DEP…

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

前言 在之前的文章介绍了定点数为什么需要舍入和几种常见的舍入模式。今天我们再来看看另外一种舍入模式&#xff1a;向最临近值取整nearest。 10进制数的nearest nearest&#xff1a; 向最临近值方向取整。它的舍入方式和四舍五入非常类似&#xff0c;都是舍入到最近的整数…

【电路笔记】-无源高通滤波器

无源高通滤波器 文章目录 无源高通滤波器1、概述2、一阶高通滤波器的频率响应3、高通滤波器示例4、二阶高通滤波器5、RC 差异化因素高通滤波器与低通滤波器电路完全相反,因为这两个组件已互换,滤波器输出信号现在从电阻器两端获取。 1、概述 由于低通滤波器只允许低于其截止…

【论文合集1】- 存内计算加速机器学习

本章节论文合集&#xff0c;存内计算已经成为继冯.诺伊曼传统架构后&#xff0c;对机器学习推理加速的有效解决方案&#xff0c;四篇论文从存内计算用于机器学习&#xff0c;模拟存内计算&#xff0c;对CNN/Transformer架构加速角度阐述存内计算。 【1】WWW: What, When, Where…

C# OpenCvSharp Demo - 棋盘格相机标定

C# OpenCvSharp Demo - 棋盘格相机标定 目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.Text; using Sys…

2019年计算机真题

2019年计算机真题 离散数学 一、用逻辑符号表达下列语句(论域为包含一切事物的集合) 1&#xff09;过平面上的两个点&#xff0c;有且仅有一条直线通过。 解: (1) P ( x , y ) : x , y \mathrm{P}_{(\mathrm{x}, \mathrm{y})}: \mathrm{x}, \mathrm{y} P(x,y)​:x,y 是平面上的…

线性表

1.1线性表的定义 线性表&#xff1a;零个或多个数据元素的有限序列。 注&#xff1a; &#xff08;1&#xff09;它是一个序列。元素之间是有顺序的&#xff0c;若元素存在多个&#xff0c;则第一个元素无前驱&#xff0c;最后一个元素无后继&#xff0c;其他元素有且只有一个…

SpringBoot 使用logback(多环境配置)

Logback是由log4j创始人设计的又一个开源日志组件。可用于项目日志功能。官网地址 第1步&#xff1a;添加坐标依赖 <!--logback--> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version…

该问题未得到解决(仅记录)

https://releases.ubuntu.com/bionic/进入网页下载ubuntu 选择烧录软件将下载的Ubuntu烧录到U盘中 之前用这个U盘烧录过一次&#xff0c;成功了&#xff0c;后来应该是U盘受损或者是什么其他原因使得用这个U盘总是烧录失败

网安面经之xss漏洞

目录 一、XSS漏洞 1、xss漏洞原理与危害 2、xss的类型&#xff1f;区别&#xff1f;修复&#xff1f; 3、常见使用的标签&#xff0c;payload构造 一、XSS漏洞 1、xss漏洞原理与危害 原理&#xff1a;xss就是跨站脚本攻击漏洞&#xff0c;也可以理解为前端的代码注入&…

数字人金融应用技术指南

根据《北京金融科技产业联盟团体标准管理办法》的规定&#xff0c;2024年3月27日经北京金融科技产业联盟第三届理事会第二次会议审议&#xff0c;批准发布《数字人金融应用技术指南》&#xff08;T/BFIA 027—2024&#xff09;、《图数据库金融应用技术要求》&#xff08;T/BFI…

医院转型新突破:精益六西格玛助力管理费大降13%,业务飙升26%

近年来&#xff0c;越来越多的医院开始尝试引入精益六西格玛管理模式&#xff0c;以期实现管理费的降低和业务量的增长。那么&#xff0c;精益六西格玛模式真的有这么牛吗&#xff1f;深圳天行健六西格玛培训公司将从实践角度出发&#xff0c;探讨精益六西格玛如何助力医院实现…

GAME101-Lecture06学习

前言 上节课主要讲的是三角形的光栅化。重要的思想是要利用像素的中心对三角形可见性的函数进行采样。 这节课主要就是反走样。 课程链接&#xff1a;Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)_哔哩哔哩_bilibili 反走样引入 ​ 通过采样&#xff0c;得到…

Vuex核心概念-state状态

目录 一、目标 二、提供数据 三、使用数据 1.通过store直接访问 2.通过辅助函数&#xff08;简化&#xff09; 一、目标 明确如何给仓库提供数据&#xff0c;如何使用仓库的数据 二、提供数据 State提供唯一的公共数据源&#xff0c;所有共享的数据都要统一放到Store中的…

了解 条码工具 Dynamsoft 在条码读取器中的形态运算

在图像处理中&#xff0c;术语形态学是指分析形状以填充小孔、去除噪声、提取轮廓等的一组操作。形态学操作很像空间卷积中的过滤过程。有两个部分在起作用&#xff1a;结构元素和预定义的计算规则。 点击下载Dynamsoft最新版https://www.evget.com/product/3691/download 结…

C#上位机1ms级高精度定时任务

precisiontimer 安装扩展包 添加引用 完整代码 using PrecisionTiming;using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; us…

Java数组(二)

Java数组&#xff08;二&#xff09; 1、多维数组 多维数组可以看成是数组的数组&#xff0c;比如二维数组就是一个特殊的一维数组&#xff0c;其每一个元素都是一个一维数组。二维数组 int a[][] new int[2][5];解析&#xff1a;以上二维数组a可以看成一个两行五列的数组。…

七、Redis三种高级数据结构-HyperLogLog

Redis HyperLogLog是用来做基数统计的算法&#xff0c;HyperLogLog在优点是&#xff0c;在输入的元素的数量或者体积非常大时&#xff0c;计算基数占用的空间总是固定的、并且非常小。在Redis里每个HyperLogLog键只需花费12KB内存&#xff0c;就可以计算接近 264 个元素的基数。…

政安晨【零基础玩转各类开源AI项目】:基于Ubuntu系统本地部署使用GPT-SoVITS进行语音克隆与TTS语音生成

目录 介绍 什么是TTS 安装Miniconda 框架功能 测试通过的环境 开始 1. 安装好miniconda 2. 进入下载的GPT-SoVITS目录 3. 创建虚拟环境并执行脚本 4. 执行过程中可能会出错 5. 下载预训练模型 6. 训练过程中可能会报错 7. 使用过程中可能出错 8.以下是使用全过程…

Java入门基础学习笔记8——注释

1、注释&#xff1a; 注释是写在程序中对代码进行解释说明的文件&#xff0c;方便自己和其他人查看&#xff0c;以便理解程序的。 package cn.ensource.note;/**文档注释文档注释 */ public class NoteDemo {public static void main(String[] args) {// 单行注释System.out.…