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

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

文章目录

  • 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://xiahunao.cn/news/3032126.html

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

相关文章

ChatGPT未来可能应用于iPhone?

苹果接即将与OpenAI达成协议 ChatGPT未来应用于iPhone 前言 就在5月11日&#xff0c;苹果公司正与OpenAI进行深入讨论&#xff0c;计划在其最新的iOS操作系统中整合OpenAI的先进技术。这一举措是苹果公司在为其产品线融入更先进的人工智能功能所做努力的一部分。 目前情况双方…

全网最详细IOS系统APP上架教程(二)

上一篇讲解了IOS系统APP上架注册苹果开发者账号需要的材料、邓白氏编码的注册等&#xff0c;本文将继续讲解后续流程。 详细步骤 三、申请苹果开发者账号 在苹果手机上安装Apple Developer 打开Apple Developer&#xff0c;用之前注册好的Apple ID登录&#xff0c;输入姓名身…

收音机套件焊接和装调的总结

很早之前买了一个小收音机&#xff0c;今天翻出来焊接上。 还好&#xff0c;质量挺好的&#xff0c;电路板没有氧化。 一。静态电流 pcb上面留有ABCD四个测电流的位置。方便调试。 焊接后&#xff0c;V1电流偏大&#xff0c;如果电流过大&#xff0c;会导致R2的压降过大&am…

基于SpringBoot+Vue的笔记共享平台 免费获取源码

项目源码获取方式放在文章末尾处 项目技术 数据库&#xff1a;Mysql5.7/8.0 数据表&#xff1a;10张 开发语言&#xff1a;Java(jdk1.8) 开发工具&#xff1a;idea 前端技术&#xff1a;vue 后端技术&#xff1a;SpringBoot 功能简介 (有文档) 项目获取关键字&#…

机器人系统ros2-开发实践08-了解如何使用 tf2 来访问坐标帧转换(Python)

tf2 库允许你在 ROS 节点中查询两个帧之间的转换。这个查询可以是阻塞的&#xff0c;也可以是非阻塞的&#xff0c;取决于你的需求。下面是一个基本的 Python 示例&#xff0c;展示如何在 ROS 节点中使用 tf2 查询帧转换。 本教程假设您已完成tf2 静态广播器教程 (Python)和tf…

STM32(六):定时器PWM呼吸灯 (标准库函数)

前言 上一篇文章已经介绍了如何用STM32单片机中的TIMER定时器来控制LED灯的交替闪烁&#xff0c;实现了点灯的第五种方式。这篇文章我们来介绍一下如何用STM32单片机中的定时器的PWM波来实现LED的“呼吸”。 一、实验原理 关于定时器这边就不多加赘述&#xff0c;详细请看上…

selenium进行xhs图片爬虫:03获取一篇图文的图片

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️感谢大家点赞&#x1f44d;&…

如何选择合适加密软件来保护信息资产|精选加密软件分析

五款加密软件对比分析&#xff0c;是一项复杂而必要的任务&#xff0c;旨在帮助用户选择最适合其需求的加密工具。在数字化时代&#xff0c;信息安全显得尤为重要&#xff0c;因此&#xff0c;对加密软件的评估与比较显得尤为关键。 首先&#xff0c;我们要考虑的是这些加密软件…

小程序分包

上传时主包不能过大&#xff0c;采用分包的方式&#xff0c;这里是taro框架 要访问的话

飞跨电容型的三电平(FC-NPC)逆变器simulink仿真模型

本人搭建了飞跨电容型的三电平逆变器simulink仿真模型&#xff0c;相较于二极管钳位型三电平逆变器而言&#xff0c;钳位二极管变为飞跨的电容。采用SPWM调制和均流均压控制&#xff0c;通过搭建仿真模型得到三电平波形。 三电平拓扑中的飞跨电容是指在电路的输出端使用电容来实…

代码随想录第五十天|最佳买卖股票时机含冷冻期、买卖股票的最佳时机含手续费

题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 最佳买卖股票时机含冷冻期与打家劫舍的题目有异曲同工之妙&#xff0c;主要是出现了天数的间隔&#xff0c;一次需要在买卖股票的最佳时机II 题目上做一点调整&#xff0c;代码如下&#xff1a; 如代码所示&…

逻辑卷管理-LVM

目录 1. LVM的基本概念 2. Linux下创建和管理LVM 3. 环境准备 4. 物理卷管理 4.1. 创建物理卷 4.2. 显示物理卷 4.3. 删除物理卷 4. 卷组管理 4.1. 创建卷组 4.2. 显示卷组 4.3. 扩展卷组 4.4. 缩减卷组 4.5. 删除卷组 4.6. 分割卷组 4.7 组合卷组 5. 逻辑卷管…

OpenGL导入的纹理图片错位

在OpenGL中导入图片的纹理照片的函数为 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, p_w, p_h, 0, GL_BGR, GL_UNSIGNED_BYTE, pic_data);其中p_w, p_h为图片的宽和高&#xff0c;pic_data为指向图片存储空间的的地址(unsigned char *类型) 在OpenGL中图片默认是4字节对齐的&…

数据结构与算法===递归

文章目录 定义适用场景爬楼梯代码实现 小结 定义 递归(Recursion)是指函数的自身调用。 这个算法演变为了程序员之间的梗&#xff0c;所表达的意思近似于“套娃”&#xff0c;表示不断重复引用别人的话从而产生循环。 适用场景 这个应该很多的&#xff0c;像一些树的遍历&am…

【基于 PyTorch 的 Python 深度学习】5 机器学习基础(1)

前言 文章性质&#xff1a;学习笔记 &#x1f4d6; 学习资料&#xff1a;吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容&#xff1a;根据学习资料撰写的学习笔记&#xff0c;该篇主要介绍了机器学习的基本任务、机器学习的一般流程&…

Leetcode—295. 数据流的中位数【困难】

2024每日刷题&#xff08;132&#xff09; Leetcode—295. 数据流的中位数 实现代码 class MedianFinder { public:MedianFinder() {}void addNum(int num) {if(maxHeap.empty() || num < maxHeap.top()) {maxHeap.push(num);} else {minHeap.push(num);}if(maxHeap.size(…

Verilog_学习路线(小白)

#前言&#xff1a; 自从专心学习专业课后&#xff0c;发现知识点得用&#xff0c;越用越熟练&#xff0c;工具也一样&#xff0c;高级工具的学习可帮助我们在工作中极大地提高效率&#xff0c;但这里要记住一点&#xff0c;任何工具都是为解决实际问题出现的&#xff0c;即落脚…

武汉星起航助力新手卖家掌握亚马逊政策,开启跨境电商新征程

在数字化浪潮席卷全球的今天&#xff0c;亚马逊平台以其强大的影响力和广阔的市场前景&#xff0c;吸引了越来越多的卖家涌入其中。然而&#xff0c;对于初涉亚马逊市场的新手卖家而言&#xff0c;如何在激烈的市场竞争中立足&#xff0c;并成功开展跨境电商业务&#xff0c;却…

用python进行接口测试(详细教程)

前言 其实我觉得接口测试很简单&#xff0c;比一般的功能测试还简单&#xff0c;现在找工作好多公司都要求有接口测试经验&#xff0c;也有好多人问我什么是接口测试&#xff0c;本着不懂也要装懂的态度&#xff0c;我会说&#xff1a;所谓接口测试就是通过测试不同情况下的入…

微火全域运营是什么?为什么一上线就火了?

近日&#xff0c;以共享WiFi贴和智慧数字经营等项目闻名业内的品牌微火又提出了新概念——微火全域运营&#xff0c;并同步上线了微火全域运营平台。这一举动无疑是给全域运营赛道和有意向做微火全域运营服务商的创业者群体中投下了一枚重磅炸弹&#xff0c;有创业者透露&#…