当前位置:   article > 正文

【ORB_SLAM系列1】—— 如何在Ubuntu18.04中安装运行非ROS版本的ORB_SLAM3跑官方数据集(全程手把手教学安装)_ubuntu18.04 orb3slam

ubuntu18.04 orb3slam

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


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
  • 1

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

1. gitee导入gitHub仓库

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

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

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

(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
  • 1
  • 2
  • 3
  • 4
  • 5

三、安装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
  • 1
  • 2
  • 3
  • 4
  • 5

2. 下载编译

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

(1)下载源码

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

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

mkdir build    
cd build
  • 1
  • 2

编译源码:

cmake .. 
make
  • 1
  • 2

安装到本机:

sudo make install
  • 1

(3)检查是否安装成功

cd examples/HelloPangolin
./HelloPangolin 
  • 1
  • 2

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

在这里插入图片描述

四、安装Eigen3

1.下载源码

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

2. 编译安装

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

mkdir build    
cd build
  • 1
  • 2

编译源码:

cmake .. 
make
  • 1
  • 2

安装到本机:

sudo make install
  • 1

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

五、安装Opencv4.5.2

1. 查看opencv的版本

终端输入:

pkg-config --modversion opencv
  • 1

2. 安装opencv4.5.2

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

六、安装boost库

1.下载源码

进入boost库官网:

https://www.boost.org/
  • 1

推荐下载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为自己的压缩包名
  • 1

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

sudo ./bootstrap.sh
  • 1

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

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

4)安装openssl
终端输入:

sudo apt-get install openssl 
sudo apt-get install libssl-dev
  • 1
  • 2

七、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
  • 1
  • 2
  • 3

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

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

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

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

./build.sh
  • 1

出现报错:

错误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)
  • 1

添加的位置如下图所示:

在这里插入图片描述

3)再次编译源码

./build.sh
  • 1

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

如果出现报错:
“/usr/bin/ld:找不到 -lboost_serialization”
具体的解决可以参考这篇博客:
使用./build.sh编译ORB_SLAM源码时出现报错:/usr/bin/ld:找不到 -lboost_serialization的解决办法

八、运行ORB_SLAM3的官方数据集

1. 数据集的下载

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

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

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

在这里插入图片描述

2. 查看运行指令

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

https://github.com/electech6/ORB_SLAM3_detailed_comments
  • 1

文件所在的位置:

在这里插入图片描述
将上述的文件复制到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
  • 1

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

注意:把"$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
  • 1

最后,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。有什么问题,可以评论区里面交流讨论。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/830707
推荐阅读
相关标签
  

闽ICP备14008679号