ORB_SLAM3安装

news/2024/11/13 23:48:18/

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下载

ORB_SLAM3_62">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

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

ORB_SLAM3_264">四 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.ppmy.cn/news/1545887.html

相关文章

Spring Boot技术在导师双选系统中的应用

第一章 绪论 1.1 选题背景 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;尽管身边每时每刻都在产生大量信息&#xff0c;这些信息也都会在短时间内得到处理&#xff0c;并迅速传播。因为很多时候&#xff0c;管理层决策需要大量信…

朴素贝叶斯分类器基于iris及Python手写实现

数据来源为sklean.datasets中的load_iris&#xff0c;代码如下&#xff1a; # -*- coding:utf-8 -*- import numpy as np import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import ac…

Yocto 项目下通过网络更新内核、设备树及模块

Yocto 项目下通过网络更新内核、设备树及模块 前言 在 Yocto 项目的开发过程中&#xff0c;特别是在进行 BSP&#xff08;Board Support Package&#xff09;开发时&#xff0c;经常需要调整特定软件包的版本&#xff0c;修改内核、设备树以及内核模块。然而&#xff0c;每次…

江苏博才众创科技产业园集团拟投资10亿元在泰兴打造汽车零部件产业园

2024年11月7日&#xff0c;泰兴市高新技术产业开发区与江苏博才众创科技产业园集团举行新能源汽车零部件智能制造产业园项目签约仪式。 泰兴市高新区党工委委员、管理办副主任王峰表示&#xff1a;高新区是全市项目建设的主阵地&#xff0c;近年来聚焦高端化、智能化、绿色化&a…

【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302

一、应用领域 工控主板、安卓主板、TV板卡、智能三表&#xff08;电表、水表、气表&#xff09;、便携式仪器仪表等需要计时或有日历要求的产品。 二、基本特性 D8563和D1302是芯谷科技推出的RTC实时时钟芯片&#xff0c;具有功耗低、走时精准、外围简单等特点&#xff0c;二者…

使用Docker快速部署FastAPI Web应用

Docker是基于 Linux 内核的cgroup、namespace以及 AUFS 类的Union FS 等技术&#xff0c;对进程进行封装隔离&#xff0c;一种操作系统层面的虚拟化技术。Docker中每个容器都基于镜像Image运行&#xff0c;镜像是容器的只读模板&#xff0c;容器是模板的一个实例。镜像是分层结…

100种算法【Python版】第50篇——Tim Sort

本文目录 1 基本原理2 主要步骤3 算法示例4 Python 实现4.1 代码说明4.2 复杂度分析Tim Sort 是一种混合排序算法,由 Tim Peters 于 2002 年为 Python 编程语言设计。它结合了插入排序和归并排序的优点,专门针对实际数据中的某些模式进行优化。Tim Sort 的核心思想是将数组分…

Spring Boot 与 Vue 共筑高校网上订餐卓越平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…