Ubuntu18.04版本下配置ORB-SLAM3和数据集测试方法

文章目录

  • 环境说明
  • 必要配置
  • 一、Pangolin
    • 源码和库文件下载
    • 依赖安装和编译安装
  • 二、Eigen3
    • 源码和库文件下载
    • 编译安装
  • 三、Opencv
    • 源码和库文件下载
    • 编译安装
  • 四、DBoW2 和 g2o
  • 五、boost
    • 源码和库文件下载
    • 编译安装
  • 六、libssl-dev
  • 七、ORB-SLAM3
    • 源码和库文件下载
    • 编译安装
  • 数据集测试
  • 参考链接


环境说明

使用:VMware Workstation Pro
虚拟机系统版本是:Ubuntu 18.04.06
虚拟机内存:8g(若为4g大小,很容易出现后文中ORB-SLAM3编译时会出现的内存问题)
虚拟机存储:50g

若是配置完发现存储空间不足,可以参考这篇博客进行清理:

下载配置技巧:Ubuntu18.04安装vmware-tools解决无法复制粘贴和自由移动文件的问题
按照文章描述的内容完成安装后,可以在主机可以翻墙的情况下先下载好文件,而后挪入到虚拟机当中,有一定程度的便利


必要配置

打开终端,分别输入

sudo apt-get install git # 为了可以使用git指令

(这样才能在终端界面上使用如,git clone这样的指令)

sudo apt-get remove vim-common # 卸载旧版本vi编辑器
sudo apt-get install vim # 安装新版本的vi编辑器
sudo apt-get install build-essential # 安装g++和gcc

(为了避免如链接所描述的问题)


一、Pangolin

源码和库文件下载

1、链接地址下载:Pangolin
2、git 指令下载:

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

依赖安装和编译安装

安装依赖:

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 # 进入Pangolin文件夹
mkdir build # 创建Build文件夹
cd build    # 进入build文件夹
cmake ..    # 依照上级目录的CMakeLists.txt文件编译
cmake --build .

二、Eigen3

源码和库文件下载

1、链接地址下载:Eigen3
2、git 指令下载:

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

编译安装

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

三、Opencv

源码和库文件下载

Opencv:下载Opencv3.4.3版本

https://opencv.org/releases/page/5/

ippicv库:电脑配置了vpn并且可以进入外网,可以忽略这部分下载

https://github.com/opencv/opencv_3rdparty/blob/dfe3162c237af211e98b8960018b564bc209261d/ippicv/ippicv_2017u3_lnx_intel64_general_20170822.tgz

编译安装

准备工作
1、修复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

2、修复终端报错提示ippicv_2017u3_lnx_intel64_general_20170822.tgz的加速库下载失败
电脑配置了vpn并且在开始编译的时候可以进入外网的同学,可以忽略这步
错误示例:
在这里插入图片描述
把OpenCV源文件中 /3rdparty/ippicv 文件夹下的 ippicv.cmake 中,

第47行的

"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/" 

改成你新下载的ippicv文件路径
更改示例:
在这里插入图片描述

更新依赖库:

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

编译安装:(跳过准备工作中的加速库配置的同学记得打开vpn进入外网)

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

配置环境:
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完成了安装
在这里插入图片描述

四、DBoW2 和 g2o

DBoW2主要用于回环检测,g2o(General Graph Optimization)主要用于图优化。

ORB-SLAM3的源码包自带DBoW2 和 g2o,编译时会自动安装。不用管。

五、boost

源码和库文件下载

链接地址:下载1.77.0版本的boost_1_77_0.tar.gz

https://www.boost.org/users/history/

编译安装

对下载的文件进行解压后,进入文件夹boost_1_77_0,在此打开终端
分别执行:

sudo ./bootstrap.sh
sudo ./b2 install

需要一定时间,需要耐心等待

六、libssl-dev

直接打开终端,执行:

sudo apt-get install libssl-dev

七、ORB-SLAM3

源码和库文件下载

1、链接地址下载:ORB-SLAM3
2、git clone指令:

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

编译安装

准备工作:
修改CMakeLists.txt:打开ORB-SLAM3目录下的CMakeLists.txt,找到第33行

find_package(OpenCV 4.4)

将OpenCV版本号改为:

find_package(OpenCV 3.4)

修改build.sh:在将虚拟机内存改为8G的前提下,将ORB_SLAM3目录下的build.sh中的文件内容修改为:

echo "Configuring and building Thirdparty/DBoW2 ..."

cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
cd ../../g2o

echo "Configuring and building Thirdparty/g2o ..."

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
cd ../../Sophus

echo "Configuring and building Thirdparty/Sophus ..."

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4
前三块都在ORB-SLAM3目录下的Thirdparty文件夹中,
若是中断了,可以在对应文件夹里跳过cd执行剩余内容

cd ../../../
#此处在ORB-SLAM3的目录下
echo "Uncompress vocabulary ..."

cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..
echo "Configuring and building ORB_SLAM3 ..."

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
#此块内容最容易出错,且耗时长,我大概编译了四十分钟

必要说明:
将make改为make -j4会加快编译速度,但也会加大内存的占用,遇到问题:

Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

所以最后一块内容的编译是,make
使用make进行编译,内存占比在4g左右浮动,尽量需要虚拟机内存大于4g,这就是上文虚拟机内存选择8g的原因

开始编译:

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

编译成功示例如下:
在这里插入图片描述
最后一块编译内容里容易出现的错误:

在这里插入图片描述
解决方法是打开对应的文件,如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());
    }
}

修改完后重新运行build.sh进行编译即可

其他可参考的错误解决方案:
安装orbslam3时报错:error: no match for ‘operator/’
ORB-SLAM2编译错误_嵙杰的博客-CSDN博客

数据集测试

解压下载的数据集后(若该文件夹不名为V102,请改为V102),

V102文件夹里有一个mav0的文件夹,还有可能出现的_MACOSX 文件夹(该文件夹是缓存垃圾,可以直接删除)

在ORB-SLAM3文件夹下创建文件夹dataset,将文件夹V102移入dataset

形成的目录结构如下

/ORB-SLAM3/dataset/V102/mav0

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

./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配置及安装教程(2023.3)
ORB-SLAM3配置安装及运行—Ubuntu20.04(2021年)

文章的很多内容有所缩减,只是为了配置安装,若是希望对细节有所了解,可以查看一下参考链接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Python对数据的操作转换

1、列表加值转字典 在Python中&#xff0c;将列表的值转换为字典的键可以使用以下代码&#xff1a; myList ["name", "age", "location"] myDict {k: None for k in myList} print(myDict) 输出&#xff1a; {name: None, age: None, loca…

大数据组件-Flume集群环境的启动与验证

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…

4.(Python数模)0-1规划

Python解决0-1规划问题 参考下面文章 源代码 import pulp # 导入 pulp 库# 主程序 def main():# 投资决策问题&#xff1a;# 公司现有 5个拟投资项目&#xff0c;根据投资额、投资收益和限制条件&#xff0c;问如何决策使收益最大。"""问题建模&#x…

【MySQL】4、MySQL备份与恢复

备份的主要目的是灾难恢复&#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等 MySQL日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data #配置文件 vim /etc/my.cnf 日志的分类 常见日志有&#xff1a; 错误日志&#xff0c;一般查询日志&…

c#继承(new base)的使用

概述 C#中的继承是面向对象编程的重要概念之一&#xff0c;它允许一个类&#xff08;称为子类或派生类&#xff09;从另一个类&#xff08;称为父类或基类&#xff09;继承属性和行为。 继承的主要目的是实现代码重用和层次化的组织。子类可以继承父类的字段、属性、方法和事…

专业的视觉特效处理包,FxFactory 8 Pro for Mac助您打造精彩视频

FxFactory 8 Pro for Mac是一款强大的视觉特效处理包&#xff0c;专门为Mac用户设计。它集成了超过200种高质量的视觉效果和过渡效果&#xff0c;可以轻松地应用于各种视频项目中。该软件提供了一个直观的界面&#xff0c;用户可以通过简单拖放操作将特效应用到视频片段上。它支…

MySQL索引,事务和存储引擎

一、索引 1、索引的概念 ●索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于C语言的链表通过指针指向数据记录的内存地址&#xff09;。 ●使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先…

SpringCloudAlibaba Gateway(一)简单集成

SpringCloudAlibaba Gateway(一)简单集成 随着服务模块的增加&#xff0c;一定会产生多个接口地址&#xff0c;那么客户端调用多个接口只能使用多个地址&#xff0c;维护多个地址是很不方便的&#xff0c;这个时候就需要统一服务地址。同时也可以进行统一认证鉴权的需求。那么服…

75 # koa 基本逻辑实现以及属性的扩展

准备工作 新建自己的 kaimo-koa 文件夹&#xff0c;结构如下&#xff1a; lib application.js&#xff1a;创建应用context.js&#xff1a;上下文request.js&#xff1a;koa 中自己实现的 request 的对象response.js&#xff1a;koa 中自己实现的 response 的对象 package.js…

soundtouch库的编译与使用

源码下载 https://gitlab.com/soundtouch/soundtouch/-/archive/2.1.2/soundtouch-2.1.2.tar.bz2 SDK配置 使用vs逐个打开source下指定的三个项目文件&#xff0c;修改SDK&#xff0c;因为可能库中使用的是8.0&#xff0c;你使用的10.0 编译准备 在编译soundtouch动态库时要…

泊松回归和地理加权泊松回归

01 泊松回归 泊松回归(Poisson Regression)是一种广义线性模型,用于建立离散型响应变量(计数数据)与一个或多个预测变量之间的关系。它以法国数学家西蒙丹尼泊松(Simon Denis Poisson)的名字命名,适用于计算“事件发生次数”的概率,比如交通事故发生次数、产品缺陷数…

图文详解PhPStudy安装教程

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 官方下载 请在PhPStudy官方网站下载安装文件&#xff0c;官方链接如下&#xff1a;https://m.xp.cn/linux.html&#xff1b;图示如下&#xff1a; 请下载PhPStudy安装文件…

MongoDB 会丢数据吗? 在次补刀MongoDB 双机热备

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis &#xff0c;Oracle ,Oceanbase 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请加微信号 liuaustin3 &#xff08;…

Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作

Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作 目录 Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作 一、简单介绍 二、汉化操作 附录&#xff1a; 一、Install from URL 中出现 Failed to connect to 127.0.0.1 port 7890: Connection refused 错误&#xf…

【半监督医学图像分割】2022-MedIA-UWI

【半监督医学图像分割】2022-MedIA-UWI 论文题目&#xff1a;Semi-supervise d me dical image segmentation via a triple d-uncertainty guided mean teacher model with contrastive learning 中文题目&#xff1a;基于对比学习的三维不确定性指导平均教师模型的半监督图像分…

【vue】this.$nextTick解决this.$refs undefined的问题

说明 1、发邮件页面分成两个部分&#xff1a;模态框页面&#xff08;头部和底部&#xff09;和form页面&#xff08;操作按钮&#xff09; 2、点击回复按钮&#xff0c;要将发件人信息带到模态框页面&#xff0c;给定默认值且禁止收件人下拉选择&#xff08;多个邮箱&#xff…

Python钢筋混凝土结构计算.pdf-混凝土构件计算

计算原理&#xff1a; 代码实现&#xff1a; #钢筋混凝土参数 def c_hrb(): global fcuk,HRB,Ec,fc,ft,ftk,Es,fy,fyp,fyk global a1,epsilon_cu fcukEcfcftftk0.0 HRBEsfyfypfyk0.0 #矩形应力图系数a1&#xff0c;C50以下为1.0 a11.0 #正截面混凝土极限压应变epsilon_cu&#…

【数据结构篇】线性表1 --- 顺序表、链表 (万字详解!!)

前言&#xff1a;这篇博客我们重点讲 线性表中的顺序表、链表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列... 线性表在逻辑上是…

Sentinel 流量控制框架

1. Sentinel 是什么&#xff1f; Sentinel是由阿里中间件团队开源的&#xff0c;面向分布式服务架构的轻量级高可用流量控制组件。 2. 主要优势和特性 轻量级&#xff0c;核心库无多余依赖&#xff0c;性能损耗小。 方便接入&#xff0c;开源生态广泛。 丰富的流量控制场景。 …

STM32 FREERTOS osDelayUntil()异常

问题&#xff1a; 在使用osDelayUntil&#xff08;&#xff09;进行固定延时时发现不起作用&#xff0c;程序不能按照预期的延时进行执行&#xff08;比延时要快&#xff09;。 #define taskMBSysManage_Delay_TIME 1000 TickType_t xLastWakeTime; xLastWakeTime xTaskGe…