ORB_SLAM3安装

ORB_SLAM3安装

  • 一.前期准备
    • 1.1ubuntu查看当前版本的命令
    • 1.2 根据ubuntu版本,更新下载软件源
    • 1.3 先下载git
    • 1.4 vim语法高亮
    • 1.5 常见的linux命令
  • 二.ORB-SLAM3下载
    • 2.1 ORB_SLAM3源码下载
    • 2.2 安装依赖库
      • 2.2.1 依赖库
      • 2.2.2 安装pangolin
      • 2.2.3 安装opencv
      • 2.2.4 Eigen3安装
  • 三 数据集运行
    • 3.1 下载EuRoc数据集
    • 3.2 文件修改(看情况)
    • 3.3 运行数据集
  • 四 ROS在ORB_SLAM3上应用

2024年11月8日 SMU

一.前期准备

1.1ubuntu查看当前版本的命令

lsb_release -a

ubuntu22.04

1.2 根据ubuntu版本,更新下载软件源

进入文件源配置文件中

sudo vi /etc/apt/sources.list

进入后为如下图所示
在这里插入图片描述
先将vim中内容清空

%d enter(回车)

将里面的文字替换为

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

1.3 先下载git

sudo apt install git

允许访问github,要解除防火墙

sudo nano /etc/hosts

在文件的末尾添加以下内容:

140.82.113.4 github.com 140.82.114.4 gist.github.com

1.4 vim语法高亮

参考这个:https://blog.csdn.net/weixin_44607113/article/details/140994318

1.5 常见的linux命令

https://blog.csdn.net/m0_46422300/article/details/104645072

二.ORB-SLAM3下载

2.1 ORB_SLAM3源码下载

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

解压缩

在这里插入代码片

2.2 安装依赖库

2.2.1 依赖库

sudo apt install libgl1-mesa-dev  //opengl
sudo apt install libglew-dev      //glew
sudo apt-get install libepoxy-dev //epoxy
sudo apt install python3//python3 
sudo apt install python3-pip//python3 pip
pip install numpy //numpy
sudo apt install cmake            //cmake

2.2.2 安装pangolin

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make -j4
sudo make install

安装pangolin成功
在这里插入图片描述

2.2.3 安装opencv

首先在windows下载opencv==4.4.0版本
然后再解压缩,安装opencv相关依赖项

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

opencv下建立build文件

mkdir build
cd build

然后运行

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

编译

sudo make -j8
sudo make install

opencv环境配置
打开/etc/ld.so.conf

sudo vi /etc/ld.so.conf

并在最后一行加入include /usr/loacal/lib
在这里插入图片描述

运行sudo ldconfig,修改/etc/bash.bashrc 文件

sudo ldconfig
sudo vi /etc/bash.bashrc 

在文件末尾加入:

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

进入opencv build目录

sudo make install
pkg-config --modversion opencv4

在这里插入图片描述

2.2.4 Eigen3安装

sudo apt-get update
sudo apt-get install libeigen3-dev

在根目录下运行命令

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

出现

/home/yq/orb-slam3/ORB_SLAM3/Thirdparty/DBoW2/DBoW2/BowVector.h:17:10: fatal error: boost/serialization/serialization.hpp: 没有那个文件或目录17 | #include <boost/serialization/serialization.hpp>|          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

表明缺少Boost库中的serialization模块

sudo apt-get install libboost-all-dev

出现错误

/usr/local/include/sigslot/signal.hpp:946:10: error:decay_t’ in namespace ‘std’ does not name a template type; did you mean ‘decay’?946 |     std::decay_t<Ptr> ptr;

表明要使用C++14
将cmake.txt中

# Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" 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)

出现错误

/home/yq/orb-slam3/ORB_SLAM3/src/System.cc:26:10: fatal error: openssl/md5.h: 没有那个文件或目录26 | #include <openssl/md5.h>

说明编译过程中缺少OpenSSL库中的md5.h头文件

sudo apt-get install libssl-dev

可以编译成功了!

三 数据集运行

3.1 下载EuRoc数据集

数据集地址:https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#downloads
在这里插入图片描述
在ORB_SLAM3文件下新建一个dataset数据集
把数据集文件解压放到里面
在这里插入图片描述
在ORB_SLAM3下运行

3.2 文件修改(看情况)

如果是单目相机,特别要注意要去mono_euroc.cc下修改文件中的false改为true
在这里插入图片描述
在这里插入图片描述

3.3 运行数据集

然后回到ORB_SLAM3目录下,运行

chmod +x build.sh
./build.sh

在这里插入图片描述
这表明重新生成了可执行文件
然后运行这个

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

上述结构为

可执行文件:./Examples/Monocular/mono_euroc
词汇文件:./Vocalbulary/ORBvoc.txt
摄像头配置文件:./Examples/Monocular/EuRoC.yaml
Euroc数据集:./dataset/euroc_dataset/MH_01_easy
Euroc时间戳: ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt

效果如下
在这里插入图片描述

四 ROS在ORB_SLAM3上应用

由于orb_slam作者的更新,ROS示例被放到了Examples_old位置,而Examples没有,所以进入Examples_old
在这里插入图片描述

添加ROS环境变量
ROS的路径
在这里插入图片描述

/home/yq/orb-slam3/ORB_SLAM3/Examples_old/ROS

然后进入配置里面

vi ~/.bashrc

加入ROS路径,在最后一行进行环境变量的添加

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples_old/ROS

在这里插入图片描述

进行配置刷新,并输出ROS环境变量路径来验证是否配置正确

source ~/.bashrc
echo $ROS_PACKAGE_PATH

在这里插入图片描述
运行build_ros.sh

chmod +x build_ros.sh
./build_ros.sh

在这里插入图片描述

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

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

相关文章

无需云端!国产开源大语言模型llama.cpp本地实战

作者&#xff1a;高瑞冬 注&#xff1a; 文章是2023年底写的。代码和运行方式虽有些旧&#xff0c;但基本原理一样。现在出来ollama&#xff0c;vllm等工具框架用来本地部署大模型&#xff0c;顺便更新一下。 [TOC](最后有彩蛋) 背景 上海人工智能实验室与商汤科技…

横向思维导图前端样式

追溯记录图路上 代码如下 index.vue <template><div style"margin-left: 5%;margin-top: 6%"> <el-form style"margin-top: -5%; " :inline"true"><el-form-item label"药品名称"><el-select v-model&qu…

清华大学提出Mini-Omni2:开源多模态模型,功能与GPT-4o媲美!

&#x1f310; 在人工智能领域&#xff0c;多模态模型的发展正如火如荼。今天&#xff0c;我们要介绍的是由清华大学提出的Mini-Omni2&#xff0c;这是一个开源的多模态语言模型&#xff0c;它在功能上与GPT-4o相媲美&#xff0c;能够理解和生成视觉、听觉和文本内容&#xff0…

HarmonyOS入门 : 获取网络数据,并渲染到界面上

1. 环境搭建 开发HarmonyOS需要安装DevEco Studio&#xff0c;下载地址 : https://developer.huawei.com/consumer/cn/deveco-studio/ 2. 如何入门 入门HarmonyOS我们可以从一个实际的小例子入手&#xff0c;比如获取网络数据&#xff0c;并将其渲染到界面上。 本文就是基于…

msvcr100.dll丢失怎么解决?高效靠谱的六种解决方法分享

在我们使用电脑的时候&#xff0c;有一种叫动态链接库&#xff08;DLL&#xff09;的文件特别重要。比如&#xff0c;msvcr100.dll是Microsoft Visual C 2010 Redistributable包里的一部分&#xff0c;很多应用程序在运行的时候都需要用到它。但是&#xff0c;有些用户在使用的…

【C++练习】二进制到十进制的转换器

题目&#xff1a;二进制到十进制的转换器 描述 编写一个程序&#xff0c;将用户输入的8位二进制数转换成对应的十进制数并输出。如果用户输入的二进制数不是8位&#xff0c;则程序应提示用户输入无效&#xff0c;并终止运行。 要求 程序应首先提示用户输入一个8位二进制数。…

【SpringBoot】19 文件/图片下载(MySQL + Thymeleaf)

Git仓库 https://gitee.com/Lin_DH/system 介绍 从 MySQL 中&#xff0c;下载保存的 blob 格式的文件。 代码实现 第一步&#xff1a;配置文件 application.yml spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT8datasource:driver-class-name: com.mysql.…

C++——异常

异常是在程序执行的过程中发生了某种错误&#xff0c;异常的处理机制允许我们讲发生的异常抛出给程序的另外一部分&#xff0c;对这个错误进行处理。这个机制让问题检测的环节和问题处理的环节分离。检测环节只需要负责检测即可&#xff0c;无需关系解决的细节问题。在C语言中处…

Linux相关概念和易错知识点(19)(HDD、Block group)

目录 1.HDD &#xff08;1&#xff09;HDD存储描述 &#xff08;2&#xff09;HDD结构图 &#xff08;3&#xff09;磁盘管理的分治思想 &#xff08;4&#xff09;硬盘中文件系统的整体划分图 2.Block group &#xff08;1&#xff09;文件管理 ①文件属性的存储 ②in…

WWDC24(Xcode 16)中全新的 Swift Testing 使用进阶

概述 WWDC 24 祭出的全新单元测试系统着实让苹果开发者们眼前一亮。“原来测试还可以这么爽&#xff01;&#xff1f;”&#xff0c;日渐逼近蟋蟀发型的某位码农如是说。 Swift Testing 在简洁性以及灵活性全面超越老大哥 XCTest 的同时&#xff0c;也让秃头码农们真正见识到了…

k8s-service、endpoints、pod之间是怎么进行网络互通的

k8s-service、endpoints、pod之间是怎么进行网络互通的 1、service2、endpoints3、service、endpoints、pod通信图4、不同服务pod内部间访问 1、service 在K8S中&#xff0c;Service是一种抽象&#xff0c;定义了一组Pod的逻辑集合和访问这些Pod的策略。首先&#xff0c;我们需…

命令行工具PowerShell使用体验

命令行工具PowerShell使用 PowerShell是微软开发的一种面向对象的命令行Shell和脚本语言环境&#xff0c;它允许用户通过命令行的方式管理操作系统。相较于传统CMD&#xff0c;PowerShell增加了面向对象的程序设计框架&#xff0c;拥有更强大的功能和扩展性。使用PowerShell可…

企业IT架构转型之道:阿里巴巴中台战略思想与架构实战感想

文章目录 第一章&#xff1a;数据库水平扩展第二章&#xff1a;中台战略第三章&#xff1a;阿里分布式服务架构HSF&#xff08;high speed Framework&#xff09;、早期Dubbo第四章&#xff1a;共享服务中心建设原则第五章&#xff1a;数据拆分实现数据库能力线性扩展第六章&am…

【优选算法篇】微位至简,数之恢宏——解构 C++ 位运算中的理与美

文章目录 C 位运算详解&#xff1a;基础题解与思维分析前言第一章&#xff1a;位运算基础应用1.1 判断字符是否唯一&#xff08;easy&#xff09;解法&#xff08;位图的思想&#xff09;C 代码实现易错点提示时间复杂度和空间复杂度 1.2 丢失的数字&#xff08;easy&#xff0…

在 WPF 中,绑定机制是如何工作的?WPF数据绑定机制解析

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;数据绑定机制是其核心功能之一&#xff0c;广泛用于连接应用程序的UI&#xff08;用户界面&#xff09;和应用程序的业务逻辑层。数据绑定允许你将UI元素与数据源&#xff08;如对象、集合或其他数…

基于 STM32 的天气时钟项目中添加天气数据的网络获取功能

基于 STM32 的天气时钟项目中添加天气数据的网络获取功能&#xff0c;您需要确保您的开发环境具备网络连接能力。这里以 ESP8266 Wi-Fi 模块为例&#xff0c;详细说明如何实现网络获取天气数据的功能。 1. 硬件连接 连接 ESP8266 模块 请参考以下连接方式&#xff0c;将 ESP82…

晓宇电视 1.9 | 电视直播软件,几千频道,高清秒播

晓宇电视是一款电视直播软件&#xff0c;提供数千个高清频道&#xff0c;支持秒播。最大的特色是没有广告&#xff0c;且不需要用户手动更新源地址。安装后即可使用&#xff0c;频道节目丰富&#xff0c;包括影视剧轮播专区&#xff0c;用户可以轻松观看喜爱的电影和电视剧。软…

双指针算法的妙用:提高代码效率的秘密(2)

双指针算法的妙用&#xff1a;提高代码效率的秘密&#xff08;2&#xff09; 前言&#xff1a; 小编在前几日讲述了有关双指针算法两道题目的讲解&#xff0c;今天小编继续进行有关双指针算法习题的讲解&#xff0c;老规矩&#xff0c;今天还是两道题目的讲解&#xff0c;希望…

MySQL:客户端工具创建数据库

MySQL 是一个开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;用于存储、管理和检索数据。MySQL是基于SQL语言的&#xff0c;它具有高效、可靠、易用的特点。 客户端工具 这个mysqld.exe就在计算机安装的数据可服务&#xff0c;启动之后&#xff0c;mys…

使用python向钉钉群聊发送消息

使用python向钉钉群聊发送消息 一、在钉钉群中新建机器人二、使用代码发送消息 一、在钉钉群中新建机器人 在群设置中添加机器人 选择自定义 勾选对应的安全设置 完成后会展示webhook&#xff0c;将地址复制出来&#xff0c;并记录&#xff0c;后面会用到 二、使用代码发送消…