保姆教程教你如何使用数据集运行ORB-SLAM3

链接: 自学SLAM(2)—保姆教程教你如何使用自己的视频运行ORB-SLAM2
这篇文章是详细教怎么运行ORB-SLAM2的,那么下来我们就看看怎么运行ORB-SLAM3
理论上ORB-SLAM2的环境也是可以跑ORB-SLAM3的,因为我之前试过,编译成功了,由于某些原因,我把虚拟机给删了。所以只能从头再来!

里面很多下载网站需要用梯子才能进入,怎么科学上网大家自己探索!!
还有就是远程连接虚拟机在windows上下载传到ubuntu上,我给大家推荐WinSCP这个软件,比我前面用的Xshell,Xftp好用多了!
远程链接如果连接不上,大家自行网上搜索解决方案!

目录

  • 1.github clone源码
  • 2.安装Pangolin、Eigen3
  • 3.安装OpenCv
  • 4.安装DBoW2 and g2o、boost库
  • 5.ORB-SLAM3编译和安装
  • 6.数据集和运行

在此之前我默认你的Ubuntu已经安装了clone,cmake等等了
没有安装也没关系,在使用的时候他会报错,你根据报错自己安装就可以了,我相信来学SLAM的这些基本能力还是有的吧!

1.github clone源码

打开终端,输入下面这个指令,克隆ORB-SLAM3的源码

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

如果 git 拒绝连接可以直接去这个网址下载压缩包解压
注意,如果是新系统,没有安装git,则需要先装git

sudo apt-get install git

另外,如果是新系统的话,预装的vi编辑器不完整,用不了。
执行如下命令安装vi编辑器。

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

2.安装Pangolin、Eigen3

Pangolin

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

Eigen3

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

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

sudo apt-get install libeigen3-dev

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

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

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

编译安装Pangolin:
安装依赖

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

编译安装

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

如果cmake pangolin提示找不到epoxy,执行sudo apt-get install libepoxy-dev 就行了

3.安装OpenCv

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

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

在执行这个命令的时候你有可能会遇到:
在这里插入图片描述
解决方案:

 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

然后继续:

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的加速库下载失败。报错如下:
在这里插入图片描述
解决方法是下载离线的ippicv库
下载链接为:https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822
下载好之后,把这个ippicv文件夹单独拷贝出来,放到自己的文件夹中
在这里插入图片描述
然后把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

在这里插入图片描述
但是你可能会遇到ISO C++17 does not allow dynamic exception specifications的问题!!
这是由于gcc,g++版本过高导致的,C++17不支持动态异常规格。需要安装gcc,g++11以下(不包含11)
我们需要卸载原来的gcc,g++

//卸载高版本
sudo apt-get remove gcc
sudo apt-get remove g++
//安装低版本
sudo apt-get install gcc-9
sudo apt-get install g++-9
//设置默认编辑器
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50 --slave /usr/bin/g++ g++ /usr/bin/g++-9

**然后删掉我们的opencv文件夹,从解压那里重新来一遍!!**为了不麻烦大家翻回去重新看,我在这里直接写,大家照着看就行
在这里插入图片描述删掉
然后重新解压一个新的
然后把OpenCV源文件中 /3rdparty/ippicv 文件夹下的 ippicv.cmake 中,
第47行"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/" 改成你新下载的ippicv文件路径。
修改样例:“/home/你的用户名/某个文件/ippicv”
这样,就改成了离线编译的ippicv文件
再次执行cmake指令,完成编译

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j2//你电脑性能高你就j4 j8,j几就是几核编译,我这烂电脑j4就卡死了
sudo make install

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

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'  //添加库路径
sudo ldconfig  //更新系统库
sudo gedit /etc/bash.bashrc  //配置bash

在这里插入图片描述
如果有这个问题,此问题的解决方案是安装’dbus-x11’。

sudo apt-get install dbus-x11

或者就不要用gedit,直接用vim不香嘛?sudo vim /etc/bash.bashrc

//在末尾添加如下两行代码↓
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH source /etc/bash.bashrc //保存,执行如下指令使得配置生效
sudo updatedb  //更新如果该指令报错,那么可能是没有安装mlocate↓
先执行安装命令
sudo apt-get install mlocate
然后再sudo updatedb版本检测
pkg-config --modversion opencv

注意:如果执行后,显示找不到包。那么注意下载的OpenCV版本是不是3.版本的,OpenCV版本4以上的,默认不生成.pc文件,会出现找不到包的问题
输出如下,表示OpenCV完成了安装
在这里插入图片描述

4.安装DBoW2 and g2o、boost库

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

由此链接进入boost官网:https://www.boost.org/users/history/version_1_77_0.html
我下载的是1.77.0
在这里插入图片描述

tar -xzvf boost_1_77_0.tar.gz  //下载之后解压

解压之后进入解压出来的文件夹
执行下面这个脚本

cd boost_1_77_0/
sudo ./bootstrap.sh

执行完毕之后,会发现又多了些文件
再执行下面这个脚本

sudo ./b2 install

需要一段时间(挺长的),耐心等待即可

然后安装libssl-dev
执行下面这个指令

sudo apt-get install libssl-dev

5.ORB-SLAM3编译和安装

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

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

注意:这个build.sh是官方给的安装脚本,执行即可编译,但是实际操作经常会出错,太吃内存,最好不要直接运行脚本
我选择打开build.sh脚本,依次执行如下每条指令,并根据自己虚拟机分配的核数选择make后面的核数进行编译

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

然后根据build.sh的脚本一条一条的运行
直接./build.sh的话,我推荐你电脑是8核+这样,否则和我一样一条一条运行吧!
里面原本是make -j,
我运行的时候DBoW2和g2o改成make -j2,ORB-SLAM3直接make单核编译,
大家看自己电脑情况!
第三部分编译ORB-SLAM3的时候会有特别多的问题,大家编译的时候看到有红字就ctrl+c停止看错误是啥!!

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

第一部分DBoW2完成:
在这里插入图片描述
第二部分g2o完成:
在这里插入图片描述
第三部分需要在ORB-SLAM3路径下创建build
上面的命令在tar -xf ORBvoc.txt.tar.gz后没有返回,会出现以下错误:
在这里插入图片描述

第三部分ORB-SLAM3编译:
在这里插入图片描述
decay这个的问题出在于编译器的问题,原作者使用的是C++11编译的,从CMakeLists.txt前面几行可以看出,换用C++14可以解决该问题。解决方案:
修改CMakeLists.txt
这些注释掉

# Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")add_definitions(-DCOMPILEDWITHC11)message(STATUS "Using flag -std=c++14.")
elseif(COMPILER_SUPPORTS_CXX0X)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")add_definitions(-DCOMPILEDWITHC0X)message(STATUS "Using flag -std=c++0x.")
else()message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++14 support. Please use a different C++ compiler.")
endif()

改为:

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_EXTENSIONS OFF)
add_definitions(-DCOMPILEDWITHC11)

在这里插入图片描述

6.数据集和运行

EuRoc数据集下载地址:

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

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

链接:https://pan.baidu.com/s/1fkLRlrhmJNdDSLuLS_uUfw 提取码:ioj3
–来自百度网盘超级会员V3的分享

要下载ASL格式的
在这里插入图片描述
这个压缩包下好之后,解压打开之后,里面是一个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各种运行模式针对各个数据集的运行指令,选择下载数据集对应模式下的指令,提取出来(以第一条为例)照着我这个改一下,我改的地方用红圈圈起来了
在这里插入图片描述
注意一下这些文件的位置!
在这里插入图片描述
如果现在运行的话是没有图形化界面的,我们需要改一点东西
在这里插入图片描述

这些工作全部做好,我们基本就胜利了!!!!!
在ORB-SLAM3文件下输入指令:

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

在这里插入图片描述

在这里插入图片描述
我们的ORB-SLAM3就跑出来了!!!!

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

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

相关文章

最佳学习率和Batch Size缩放中的激增现象

前言 《Surge Phenomenon in Optimal Learning Rate and Batch Size Scaling》原文地址GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文,并对其进行了中文翻译。还有部分最佳示例教程。如果有帮助到大家&a…

Linux源码-进程描述符

Linux操作系统引入了PCB(Process Control Block,进程控制块)结构。PCB是Linux操作系统识别进程的通道。 创建进程时,首先会创建PCB,根据PCB中的信息对进程实施有效管理。当进程终止后,Linux操作系统会释放对应的PCB资源。 PCB的数据结构是s…

2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第二部分】

上一篇文章:2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第一部分】_尘封的CPU的博客-CSDN博客最近回顾了Java B组的试题,深有感触:脑子长时间不用会锈住,很可怕。兄弟们,都给我从被窝里爬起来,赶…

解决error Error: certificate has expired问题

安装环境遇到下面问题: 产生原因:可能是开了服务器代理访问导致ssl安全证书失效 解决办法: 在终端输入以下命令: yarn config set "strict-ssl" false -g

3ds Max导出fbx贴图问题简单记录

1.前言 工作中发现3ds Max导出的fbx在其它软件(Autodesk viewer,blender,navisworks,FBXReview等)中丢失了部分贴图,但导出的fbx用3ds Max打开却正常显示。 fbx格式使用范围较广,很多常见的三…

Milvus【部署 01】向量数据库Milvus在Linux环境下的在线+离线安装

向量数据库Milvus在Linux环境下的在线离线安装 1.千问简介2.在线安装2.离线安装 1.千问简介 Milvus 是一款专为处理高维向量数据设计的开源云原生数据库,旨在满足海量向量数据的实时召回需求。它由 Zilliz 公司开发并维护,基于Apache许可证2.0版本发布。…

ASUS华硕A豆14笔记本电脑I421EAYB,I421EQYB_ADOL14EA工厂模式原厂Win11系统安装包下载

适用型号:ADOL14EA笔记本I421EAYB、I421EQYB 链接:https://pan.baidu.com/s/1krU8m_lbApyUfZQo5E4cCQ?pwd0ewl 提取码:0ewl 华硕原装WIN11系统工厂安装包,带有MyASUS WinRE RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系…

Linux上安装JDK,Java起飞,开启编程之旅

在Linux环境下搭建Java开发平台,是许多开发者入门Java世界的第一步。Java的跨平台特性使得在Linux上安装JDK尤为重要,它不仅能为Linux开发者提供更广阔的应用场景,也是探索Java强大功能的起点。 接下来,让我们一起在Linux中完成J…

【SpringMVC】_SpringMVC实现留言墙

目录 1. 需求分析 2. 接口定义 2.1 提交留言 2.2 获取全部留言 3. 响应数据 4. 服务器代码 4.1 MessageInfo 文件 4.2 MessageController 文件 5. 前端页面代码 5. 运行测试 1. 需求分析 实现如下页面: 1、输入留言信息,点击提交后&#xff0…

使用腾讯云服务器从0搭建个人网站,超简单图文教程

使用腾讯云服务器搭建网站全流程,包括轻量应用服务器和云服务器CVM建站教程,轻量可以使用应用镜像一键建站,云服务器CVM可以通过安装宝塔面板的方式来搭建网站,腾讯云服务器网txyfwq.com整理使用腾讯云服务器建站教程,…

NPOI入门指南:轻松操作Excel文件的.NET库

目录 引言 一、NPOI概述 二、NPOI的主要用途 三、安装NPOI库 四、NPOI基本使用 六、性能优化和内存管理 七、常见问题与解决方案 八、结论 附录 引言 Excel文件作为数据处理的重要工具,广泛应用于各种场景。然而,在没有安装Microsoft Office的…

llama.cpp

https://github.com/echonoshy/cgft-llm 【大模型量化】- Llama.cpp轻量化模型部署及量化_哔哩哔哩_bilibili github.com/ggerganov/llama.cpp cd ~/code/llama.cpp/build_cuda/bin ./quantize --allow-requantize /root/autodl-tmp/models/Llama3-8B-Chinese-Chat-GGUF/Llama…

海尔智家:科技优秀是一种习惯

海尔智家:科技优秀是一种习惯 2024-06-28 15:19代锡海 6月24日,2023年度国家科学技术奖正式揭晓。海尔智家“温湿氧磁多维精准控制家用保鲜电器技术创新与产业化”项目荣获国家科学技术进步奖,成为家电行业唯一牵头获奖企业。 很多人说&…

分布式kettle调度管理平台简介

介绍 Kettle(也称为Pentaho Data Integration)是一款开源的ETL(Extract, Transform, Load)工具,由Pentaho(现为Hitachi Vantara)开发和维护。它提供了一套强大的数据集成和转换功能&#xff0c…

【C++】类、静态、枚举、重载、多态、继承、重写、虚函数

五、类 面向对象编程是一个巨大的编程范式。C中的类class就是基于对象的程序设计。 我们可以用类来定义一个新的类型,这些新类型就可以像内置类型一样使用。 内置类型颗粒度太太小,现实需求又非常复杂,这就需要我们把内置类型适度的进行拼搭…

源码学习:文件描述符

在进程描述学习中,扯到了max_fds,接着就联想到了日常运维中常见的ulimit参数、sysctl内核参数,原来以为max_fds与这些个关联性比较强,但经过一早上折腾以后,发现其实还是有一些差距的。但是在学习过程中,却…

【C++】数组、字符串

六、数组、字符串 讨论数组离不开指针,指针基本上就是数组的一切的基础,数组和指针的相关内容参考我的C系列博文:【C语言学习笔记】四、指针_通过变量名访问内存单元中的数据缺点-CSDN博客【C语言学习笔记】三、数组-CSDN博客 1、数组就是&…

数据结构03 链表的基本操作【C++数组模拟实现】

前言:本节内容主要了解链表的基本概念及特点,以及能够通过数组模拟学会链表的几种基本操作,下一节我们将通过STL模板完成链表操作,可以通过专栏进入查看下一节哦~ 目录 单链表及其特点 完整链表构成 完整链表简述 创建单链表 …

京东云备案流程图_云主机快速ICP备案_京东云服务器备案问题解答

京东云ICP备案流程,备案包括网站和APP备案,以及备案问题解答FAQ,阿腾云以京东云网站域名备案流程为例,先填写主办单位信息,选择网站备案或APP备案,申请授权码并验证,填写并上传主办单位详细信息…

光伏仿真软件是什么?都有哪些功能?

光伏仿真软件,作为现代光伏系统设计的重要工具,正日益受到设计师、工程师和决策者的青睐。它结合了物理学、工程学和计算机科学的原理,以数字化方式模拟光伏系统的运行,帮助用户预测和优化系统的性能。本文将详细探讨光伏仿真软件…