ORB-SLAM3配置及安装教程(2023.3)

这篇具有很好参考价值的文章主要介绍了ORB-SLAM3配置及安装教程(2023.3)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验简介

配置了好多次ORB-SLAM3,看了一些博客,都写的不是很完整,这次根据自己的经验以及从一个新系统开始

的实际的安装过程,记录一下详细的步骤。

ps.我是用的虚拟机安装的,并且是在一个新系统上开始配置的

所以我的操作步骤是在一个全新的Ubuntu上做的,参考博客的同学注意一下(如果你已经在系统上安装过了一

些包,则有些步骤可以省去)

1 实验环境

我用的是虚拟机VMware运行的

Ubuntu版本是18.04

ORB-SLAM3源码: https://github.com/UZ-SLAMLab/ORB_SLAM3

2 准备工作(安装依赖)

ps:整个安装的大致流程我参考的是这篇博客

https://blog.csdn.net/holly_Z_P_F/article/details/118031317

但是中间遇到了一些问题

2.1 github clone

最好创建一个文件夹,将要下载的文件都放在这个文件夹中

2.1.1 ORB-SLAM3源码

打开终端,输入下面这个指令

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

如果 git 拒绝连接可以直接去这个网址下载压缩包解压

ORB-SLAM3

注意,如果是新系统,没有安装git,则需要先装git

sudo apt-get install git

另外,如果是新系统的话,预装的vi编辑器不完整,用不了。

执行如下命令安装vi编辑器。

sudo apt-get remove vim-common
sudo apt-get install vim

2.1.2 Pangolin

git clone https://github.com/stevenlovegrove/Pangolin.git

或者去下面这个网址下载压缩包

Pangolin

2.1.3 Eigen3

# github 有个mirror,版本3.3.4 from 2017
git clone https://github.com/eigenteam/eigen-git-mirror

在我安装的过程中这一步经常出错,换个网络多试几次就出来了,或者也可以去下面这个网址下载压缩包

Eigen3

注意!!!

不要采用下面这个指令安装eigen3

sudo apt-get install libeigen3-dev

如果采用这个指令安装,默认是安装到了/usr/include/eigen3,ORB-SLAM3检测不到,导致编译会报错。利用源码安装,安装好的路径是 /usr/local/include/eigen3/

2.2 Eigen3安装

在参考博客中博主是先安装Pangolin再安装Eigen3的,但我实际安装的过程中发现Pangolin是依赖Eigen3的,因此应该先安装Eigen3

#安装
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install
 
#安装后,头文件安装在/usr/local/include/eigen3/

2.3 Pangolin安装

2.3.1 安装依赖

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

2.3.2 编译安装

cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .

2.4 Opencv安装

最新的ORB-SLAM3要求OpenCV 4.4及以上
但是最好不要安装OpenCV4以上(参考博主的解释是:4默认不会生成.pc文件,最后查看版本的时候查看不到,找不到包)。具体原因不太理解,最后也选择安装3.4.3版本
首先,到官网下载源码:https://opencv.org/releases/page/5/
ps.下载其他OpenCV3版本的理论上也可以,为了避免其他错误,选择参考博主的版本,实验可行。

ORB-SLAM3配置及安装教程(2023.3)

下载之后放在最开始创建的文件夹,解压

unzip opencv-3.4.3.zip

ps. 也可以直接右键提取文件

更新一下,准备安装OpenCV依赖库

sudo apt-get update

使用一条指令安装所有依赖库

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff5-dev libswscale-dev libjasper-dev

# 原博客安装的是libtiff4-dev,运行过程报错,改成libtiff5-dev

注意:在运行的时候可能会出现以下报错信息

error: unable to locate libjasper-dev 无法定位这个包libjasper-dev

解决方法是:执行以下指令

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev

其中libjasper1是libjasper-dev的依赖包

运行完这个,再安装下面这个指令就没错了

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

安装好依赖,开始编译OpenCV

cd opencv-3.4.3
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

注意:执行上面指令后,终端会自动下载一个必需的ippicv加速库。
如果终端卡住并显示正在下载,只需要等一会儿不用进行任何操作。
否则,终端会显示报错,提示ippicv_2017u3_lnx_intel64_general_20170822.tgz的加速库下载失败。报错如下:

ORB-SLAM3配置及安装教程(2023.3)
解决方法是下载离线的ippicv库

下载链接为:https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822

下载好之后,把这个ippicv文件夹单独拷贝出来,放到自己的文件夹中

ORB-SLAM3配置及安装教程(2023.3)
然后把OpenCV源文件中 /3rdparty/ippicv 文件夹下的 ippicv.cmake 中,

第47行"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/" 改成你新下载的ippicv文件路径

这样,就改成了离线编译的ippicv文件

再次执行cmake指令,完成编译

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

PS. 这一步骤在参考博客中说需要科学上网才能正常下载,否则需要自己下载离线库编译。但经过我多次尝试,不需要科学上网也能正常下载ippicv库,可以多尝试几次(下载离线库相对比较麻烦)

cmake完成之后使用make编译

ps. j4表示4核,可以根据虚拟机分配的核数进行调整,也可以不用,直接make,速度稍微慢点,但不容易出错

make -j4

这个过程时间可能稍微长一点,完成之后,不要忘了安装

sudo make install

到此,OpenCV安装结束,然后配置一下环境

1)添加库路径

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

2)更新系统库

sudo ldconfig

3)配置bash

sudo gedit /etc/bash.bashrc

在末尾添加如下两行代码

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH 

4)保存,执行如下指令使得配置生效

source /etc/bash.bashrc 

5)更新

sudo updatedb  

如果该指令报错,那么可能是没有安装mlocate

先执行安装命令

apt-get install mlocate

然后再sudo updatedb

6)版本检测

pkg-config --modversion opencv

注意:如果执行后,显示找不到包。那么注意下载的OpenCV版本是不是3.版本的,OpenCV版本4以上的,默认不生成.pc文件,会出现找不到包的问题

输出如下,表示OpenCV完成了安装

ORB-SLAM3配置及安装教程(2023.3)

2.5 DBoW2 and g2o

DBoW2主要用于回环检测,g2o(General Graph Optimization)主要用于图优化。
ORB-SLAM3的源码包自带DBoW2 and g2o,编译时会自动安装,不用管。

2.6 安装boost库

由此链接进入boost官网:https://www.boost.org/

我下载的是1.77.0

ORB-SLAM3配置及安装教程(2023.3)

ORB-SLAM3配置及安装教程(2023.3)
下载之后解压

tar -xzvf boost_1_77_0.tar.gz

解压之后进入解压出来的文件夹

执行下面这个脚本

sudo ./bootstrap.sh

执行完毕之后,会发现又多了些文件

再执行下面这个脚本

sudo ./b2 install

需要一段时间,耐心等待即可

2.7 安装libssl-dev

执行下面这个指令

sudo apt-get install libssl-dev

3 ORB-SLAM3编译和安装

源码编译

进入源码文件夹,执行下述指令

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

注意:这个build.sh是官方给的安装脚本,执行即可编译,但是实际操作经常会出错,太吃内存,最好不要直接运行脚本

我选择打开build.sh脚本,依次执行如下每条指令,并根据自己虚拟机分配的核数选择make后面的核数进行编译

注意:在这之前先打开ORB-SLAM3对应的CMakeLists.txt
找到 find_package(OpenCV 4.4)这行代码,将OpenCV版本号改为find_package(OpenCV 3.4)
因为我们之前安装的就是3.4版本的,而在最新的ORB-SLAM3中要求是4.4及以上版本,改成3.4不影响实验

echo "Configuring and building Thirdparty/DBoW2 ..."
 
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
 
cd ../../g2o
 
echo "Configuring and building Thirdparty/g2o ..."
 
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
 
cd ../../../
 
echo "Uncompress vocabulary ..."
 
cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
 
 
echo "Configuring and building ORB_SLAM3 ..."
 
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

运行最后一条指令时,出现报错如下:
ORB-SLAM3配置及安装教程(2023.3)
解决方法是打开对应的文件,如Tracking.cc,LoopClosing.cc

再include后面添加以下代码

namespace cv
{
template<typename _Tp, int m, int n> static inline
Matx<_Tp, m, n> operator / (const Matx<_Tp, m, n> &a, float alpha)
{
return Matx<_Tp, m, n>(a, 1.f / alpha, Matx_ScaleOp());
}
}

ps. 这里发生了一个很玄学的情况

最后一条指令我使用make -j4,即使在对应的文件中加入了上述代码也仍然会报错。

然后我改成make之后就成功编译了(离谱~

但同时,改成make之后编译速度大大降低,需要等很久

数据集测试

EuRoc数据集下载地址:

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

下载比较慢,有百度网盘的可以用下面这个地址,我将所有EuRoc数据集(包括bag格式和ASL格式)都下载下来放里面了,链接永久有效

链接:https://pan.baidu.com/s/1-48M4G-CJ-j_AFSeLr8XDw?pwd=wd0s
提取码:wd0s

要下载ASL格式的,我下载了V102V203两个
ORB-SLAM3配置及安装教程(2023.3)

这个压缩包下好之后,解压打开之后,里面是一个mav0的文件夹(有些打开会还有一个_MACOSX 文件加,可以直接删掉,只留mav0文件夹)

具体原因是这个其实是在MAC操作系统压缩时产生的缓存垃圾,在Windows系统、Linux系统就会显示出来(大概是这意思)

然后在ORB-SLAM3文件夹下创建一个文件夹dataset

dataset文件夹下将解压的数据集文件夹放进来

eg. /ORB-SLAM3/dataset/V102/mav0

然后,在ORB-SLAM3的源码中,有一个Examples文件夹

里面有一个脚本euroc_examples.sh,打开这个脚本

PS. 最新的ORB-SLAM3版本已经找不到了,可以去下面这个链接拷贝过来

https://github.com/electech6/ORB_SLAM3_detailed_comments

并且里面还有ORB-SLAM3的详细注释

打开这个脚本,里面有ORB-SLAM3各种运行模式针对各个数据集的运行指令,选择下载数据集对应模式下的指令,提取出来(以V102、单目+IMU为例):

./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml “$pathDatasetEuroc”/V102 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/V102.txt dataset-V102_monoi

我加粗的地方需要改

**“$pathDatasetEuroc”**改为 ./dataset,表示数据集所在的路径

即得到下面这条指令

./Examples/Monocular-Inertial/mono_inertial_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular-Inertial/EuRoC.yaml ./dataset/V102 ./Examples/Monocular-Inertial/EuRoC_TimeStamps/V102.txt dataset-V102_monoi

在ORB-SLAM3文件夹下打开终端执行这条指令

ORB-SLAM3成功运行

运行截图

ORB-SLAM3配置及安装教程(2023.3)

ORB-SLAM3配置及安装教程(2023.3)
运行结束,终端显示

ORB-SLAM3配置及安装教程(2023.3)
ps.这里好像出了一点小错误,存储轨迹出错了

但神奇的是,仍然能看见存储的轨迹文件,奇怪

ORB-SLAM3配置及安装教程(2023.3)
整个过程大概就是这样,简单记录一下

如有不足,欢迎指正!

ps. 第一次写博客,感觉操作还比较生疏,但当写到结尾,翻看全部内容的时候,却产生了一种满满的成就感。

但这只是一个开始,以后也要继续加油!

因为是第一次写,所以大部分内容甚至格式都参考了这篇博客,并且第一次复现成功也是参考这篇博客

https://blog.csdn.net/holly_Z_P_F/article/details/118031317

非常感谢这位博主!!!文章来源地址https://www.toymoban.com/news/detail-413365.html

到了这里,关于ORB-SLAM3配置及安装教程(2023.3)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ORB-SLAM2的布置(一)Pangolin的安装

    ORB SLAM 2在github的官方流程 https://github.com/raulmur/ORB_SLAM2 然后就是安装Pangolin 在 ORB SLAM 2 中那些很炫酷的实时建图画面是通过 Pangolin 实现的。 Pangolin 是一个轻量级的开发库,控制 OpenGL 的显示、交互等。 Pangolin 的核心依赖是 OpenGL 和 GLEW。     OpenCV3.2 版本 DBoW2 和 g2o,这两个

    2023年04月18日
    浏览(37)
  • 自学SLAM(2)---保姆教程教你如何使用自己的视频运行ORB-SLAM2

    如果你是新手入门,仅仅只会Linux的基本操作,并看了高翔老师视觉SLAM视屏的第一讲,那么你需要准备一整天的时间,可能还不一定能运行出来!运行ORB-SLAM2将会安装很多很多东西。那么,我们准备开始!! 我是默认你已经装了虚拟机和Ubuntu系统的!! 首先先展示一下成果

    2024年02月08日
    浏览(53)
  • ubuntu18.04配置ORB-SLAM3并跑EuRoC数据集(单目)

    1.1  C++11 or C++0x Compiler 安装 新建一个终端(新建终端的快捷键是Ctrl+Alt+T) 输入以下代码 sudo apt-get install gcc sudo apt-get install g++ sudo apt-get install build-essential sudo apt-get install cmake 1.2  Pangolin 安装 Pangolin的官方教程地址:https://github.com/stevenlovegrove/Pangolin 安装Pangolin 1.2.1下载

    2023年04月20日
    浏览(55)
  • Ubuntu20.04的ROS环境安装ORB-SLAM3详解

    视觉SLAM实验要在Ubuntu20.04系统上使用ROS跑ORB-SLAM3,熟悉一下特征点法的SLAM,把安装过程总结记录下来。 系统 版本 ubuntu 20.04 Pangolin 0.6 Eigen 3 Opencv 4.2 usb_cam 执行命令更新源 1、ROS简介 ROS全称Robot Operating System(机器人操作系统) ROS是适用于机器人的开源元操作系统 ROS集成了大

    2023年04月21日
    浏览(69)
  • Ubuntu18.04版本下配置ORB-SLAM3和数据集测试方法

    使用:VMware Workstation Pro 虚拟机系统版本是:Ubuntu 18.04.06 虚拟机内存:8g(若为4g大小,很容易出现后文中ORB-SLAM3编译时会出现的内存问题) 虚拟机存储:50g 若是配置完发现存储空间不足,可以参考这篇博客进行清理: 下载配置技巧:Ubuntu18.04安装vmware-tools解决无法复制粘贴

    2024年02月09日
    浏览(55)
  • ORB-SLAM2的布置(四)ORB-SLAM2构建点云

    高博的工作是对基本 ORB SLAM2 的扩展,基本思想是为每个关键帧构造相应的点云,然后依据从 ORB SLAM2 中获取的关键帧位置信息将所有的点云拼接起来,形成一个全局点云地图。 https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map 具体的依赖包括: OpenCV (推荐 3.2 版本) DBoW2 和 g2o(源

    2024年02月05日
    浏览(58)
  • 【视觉SLAM】ORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking

    Citations: Y. Diao, R. Cen, F. Xue.ORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking[C].2021 13th International Conference on Advanced Computational Intelligence (ICACI). Wanzhou,China.2021:160-165. Keywords: Visualization,Simultaneous localization and mapping,Cameras,Real-time systems,Aircraft navigation,Central Processing Unit,Traje

    2023年04月08日
    浏览(64)
  • 【SLAM实战篇】Ubuntu 20.04版本(OpenCV版本4.5.3)对于ORB-SLAM2安装运行,代码编译,自己的数据集构造

    学完SLAM十四讲 心血来潮想跑一下ORB-SLAM2的代码,纯新手小白,自己的踩坑经历进行整理: 本文章主要对ORB-SLAM2进行编译运行。以及自己构建数据集。 源码github地址:https://github.com/raulmur/ORB_SLAM2 终端克隆代码: 查看源代码,其重要的代码库仅为三个文件夹: Example include s

    2024年03月13日
    浏览(52)
  • ORB-SLAM 论文阅读

    论文链接 ORB-SLAM 0. Abstract 本文提出了 ORB-SLAM,一种基于特征的单目同步定位和建图 (SLAM) 系统 该系统对严重的运动杂波具有鲁棒性,允许宽基线环路闭合和重新定位,并包括全自动初始化 选择重建的点和关键帧的适者生存策略具有出色的鲁棒性,并生成紧凑且可跟踪的地图

    2024年01月22日
    浏览(57)
  • SLAM ORB-SLAM2(20)查找基础矩阵

    在 《SLAM ORB-SLAM2(12)估算运动并初始地图点》 的 2.3. 计算H矩阵和F矩阵过程 中

    2024年03月17日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包