提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 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”
具体的解决可以参考这篇博客:
使用./build.sh编译ORB_SLAM源码时出现报错:/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。有什么问题,可以评论区里面交流讨论。