【ORB-SLAM3】在 Ubuntu20.04 上编译 ORM-SLAM3 并使用 D435i 运行测试

【ORB-SLAM3】在 Ubuntu20.04 上编译 ORM-SLAM3 并使用 D435i 运行测试

  • 1 Prerequisites
    • 1.1 C++11 or C++0x Compiler
    • 1.2 Pangolin
    • 1.3 OpenCV
    • 1.4 Eigen3
  • 2 安装 Intel® RealSense™ SDK 2.0
    • 2.1 测试设备
    • 2.2 编译源码安装 (Recommend)
    • 2.3 预编译包安装
  • 3 编译 ORB-SLAM3
  • 4 使用 D435i 运行 ORB-SLAM3
    • 4.1 运行
    • 4.2 运行时遇到的 Bug
      • 4.2.1 terminate called after throwing an instance of 'rs2::invalid_value_error'
      • 4.2.2 Segmentation fault (core dumped)

ORB-SLAM3 GitHub 链接: Link

1 Prerequisites

如果要重新安装以下第三方库,可以在之前运行 sudo make install 的目录(一般是 build 文件夹)下运行 sudo make uninstall 对其进行卸载。

1.1 C++11 or C++0x Compiler

在 ORB-SLAM3 的 CMakeLists.txt 中会有检查,如果不满足会有报错。

在这里插入图片描述

1.2 Pangolin

参考文档: Link

这里我选择安装的是 Pangolin v0.6,下载链接: Link

  1. 准备工作
git clone --recursive https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
./scripts/install_prerequisites.sh recommended

如果有报错:E: Unable to locate package catch2,则

  • 从 install_prerequisites.sh 中移除安装 catch2

参考 issue: Link

在这里插入图片描述

  • 自行安装 catch2

参考文档: Link

git clone https://github.com/catchorg/Catch2.git
cd Catch2
cmake -B build -S . -DBUILD_TESTING=OFF
sudo cmake --build build/ --target install
  1. 安装 Pangolin v0.6
unzip Pangolin-0.6.zip -d ~/3rdparty
cd ~/3rdparty/Pangolin-0.6cmake -B build
cmake --build build			# instead of ”make“
sudo cmake --install build 	# instead of ”sudo make install“

1.3 OpenCV

参考文档: Link

这里我选择安装的是 OpenCV 4.4.0 + OpenCV_Contrib 4.4.0

sudo apt update && sudo apt install -y cmake g++ wget unzipwget -O opencv.zip https://github.com/opencv/opencv/archive/4.4.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.4.0.zip
unzip opencv.zip -d ~/3rdparty
unzip opencv_contrib.zip -d ~/3rdpartycd ~/3rdparty/opencv-4.4.0 
mkdir build && cd build
# Configure
cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.4.0/modules ..
# Build
cmake --build .
# Install
sudo make install

1.4 Eigen3

要使用 Eigen,只需下载并提取 Eigen 的源代码,Eigen 子目录中的头文件是使用 Eigen 编译程序所需的唯一文件。

这里我选择安装的是 Eigen 3.3.0,下载链接: Link

unzip eigen-3.3.0.zip -d ~/3rdparty
cd ~/3rdparty/eigen-3.3.0
mkdir build && cd build
cmake --build .
sudo cmake --install .

2 安装 Intel® RealSense™ SDK 2.0

参考文档: Link

如果不安装 librealsense2,运行 ./build.sh 后不会生成 stereo_inertial_realsense_D435i 等与 RealSense 有关的可执行文件。

2.1 测试设备

使用 D435i 相机,设备信息如下:

  • firmware version: 5.15.1
  • librealsense2 version: v2.54.2

下面有两种安装方式: 编译源码进行安装和利用预编译包进行安装,我这里用的是编译源码的方式。

2.2 编译源码安装 (Recommend)

  1. 安装依赖
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
sudo apt-get install libssl-dev libusb-1.0-0-dev libudev-dev pkg-config libgtk-3-dev
sudo apt-get install git wget cmake build-essential
sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev at
  1. 下载源码以及准备工作
  • 下载 librealsense master 分支: Link
unzip librealsense-master.zip -d ~/3rdparty
  • 设置 udev 规则
cd ~/3rdparty/librealsense-master
./scripts/setup_udev_rules.sh
  • 查询系统内核版本
uname -r

在这里插入图片描述

如果是 Ubuntu 20/22 (focal/jammy) with LTS kernel 5.13, 5.15,则

./scripts/patch-realsense-ubuntu-lts-hwe.sh

如果是 Ubuntu 18/20 with LTS kernel (< 5.13),则

./scripts/patch-realsense-ubuntu-lts.sh
  1. 编译安装
cd ~/3rdparty/librealsense-master
mkdir build && cd build
cmake ../ -DBUILD_EXAMPLES=true
sudo make uninstall && make clean && make && sudo make install
  1. 测试
realsense-viewer

在这里插入图片描述

2.3 预编译包安装

参考文档: Link

  1. 安装
# Register the server's public key
sudo mkdir -p /etc/apt/keyrings
curl -sSf https://librealsense.intel.com/Debian/librealsense.pgp | sudo tee /etc/apt/keyrings/librealsense.pgp > /dev/null# Make sure apt HTTPS support is installed
sudo apt-get install apt-transport-https# Add the server to the list of repositories
echo "deb [signed-by=/etc/apt/keyrings/librealsense.pgp] https://librealsense.intel.com/Debian/apt-repo `lsb_release -cs` main" | \
sudo tee /etc/apt/sources.list.d/librealsense.list
sudo apt-get update# Deploy librealsense2 udev rules, build and activate kernel modules, runtime library and executable demos and tools
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils# Install the developer and debug packages
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
  1. 测试
realsense-viewer

3 编译 ORB-SLAM3

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
cd ORB_SLAM3
chmod +x build.sh
./build.sh

完成后,将会在 lib 文件夹中创建 libORB_SLAM3.so,并在 Examples 和 Examples_old 文件夹中创建可执行文件。

4 使用 D435i 运行 ORB-SLAM3

4.1 运行

先校准相机,并写入校准文件 your_camera.yaml,但我这里直接用现成的。

./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/RealSense_D435i.yaml

4.2 运行时遇到的 Bug

4.2.1 terminate called after throwing an instance of ‘rs2::invalid_value_error’

报错如下图:

在这里插入图片描述

参考 issue: Link

解决方法:

将 D435i 相关的 .cc 文件中这两行内容注释掉: RS2_OPTION_AUTO_EXPOSURE_LIMITRS2_OPTION_ENABLE_AUTO_EXPOSURE,然后重新编译 ./build.sh

在这里插入图片描述

4.2.2 Segmentation fault (core dumped)

报错如下图:

在这里插入图片描述

参考 issue: Link

解决方法:

System.cc 文件中这一行内容注释掉: cout << (*settings_) << endl,然后重新编译 ./build.sh

在这里插入图片描述

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

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

相关文章

网络学习:RIPNG

目录 前言&#xff1a; 一、RIPNG与RIP的区别 二、如何配置RIPNG 如何解决RIPNG环路问题呢&#xff1f; 控制RIPNG的选路 1、修改RIPNG默认优先级 2.配置接口附加开销值从而干涉RIPNG的选路 RIPNG拓展配置 1.RIPNG的认证 配置RIPNG进程下的IPsec认证&#xff1a; 配…

解决淘宝镜像过期问题 ERR! request https://registry.npm.taobao.org

目录 一、问题描述 二、解决方案 2.1、针对于域名更换解决方案 2.2、针对于证书过期解决方案 三、进行测试 一、问题描述 针对于2022年5月31号和2024年1 月 22 日前的前端项目 npm.taobao.org和旧域名于2021年官方公告域名更换事件&#xff0c;已于2022年05月31日零时起…

Spring Bean加载优先级

当我们使用 ConditionalOnMissingBean / ConditionalOnBean注解去给某个 bean 注入赋予条件时&#xff0c;那在条件判断时我们需要确保条件判断过程所需的环境已准备好。 举个例子 下面的代码中有两个配置类&#xff0c;涉及两个 Bean 的注入 配置类 ConfigA 需要注入一个 A…

SpringBoot源码探险 —— SpringBoot启动流程详解

一&#xff0c;SpringBoot启动流程 本人使用的SpringBootParent版本为 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.1</version><relativePath/>…

计算机网络——26通用转发和SDN

通用转发和SDN 网络层功能&#xff1a; 转发&#xff1a; 对于从某个端口 到来的分组转发到合适的 输出端口路由&#xff1a; 决定分组从源端 到目标端的路径 网络层 传统路由器的功能 每个路由器(Per Route)的控制平面 &#xff08;传统&#xff09; 每个路由器上都有实…

Oracle数据库如果出现乱码,需要查看是否时字符集不一致导致乱码,这样解决

1、如果出现乱码&#xff0c;需要查看是否时字符集不一致导致乱码 以修改为ZHS16GBK字符集为例&#xff0c;具体字符集需要sql查询。 Oracle查看字符集 SELECT * FROM NLS_DATABASE_PARAMETERS p where p.PARAMETERNLS_CHARACTERSET; SELECT USERENV(language) FROM DUAL; 1.…

uni-app从零开始快速入门

教程介绍 跨端框架uni-app作为新起之秀&#xff0c;在不到两年的时间内&#xff0c;迅速被广大开发者青睐和推崇&#xff0c;得益于它颠覆性的优势“快”&#xff0c;快到可以节省7套代码。本课程由uni-app开发者团队成员亲授&#xff0c;带领大家无障碍快速掌握完整的uni-app…

STM32 CubeMx创建Lwip+FreeRtos时出现ping不通的问题

STM32 CubeMx创建LwipFreeRtos时出现ping不通 1、配置ETH&#xff0c;使用中断 2、配置Lwip&#xff08;使用静态ip&#xff09;&#xff0c;其余什么都不用管 3、配置FreeRtos&#xff08;选择V2版本&#xff09;&#xff0c;其余什么都不用管 4、创建代码 5、查看自动生…

目标检测预测框可视化python代码实现--OpenCV

import numpy as np import cv2 import colorsys from PIL import Image, ImageDraw, ImageFontdef puttext_cn(img, text, pt, color(255,0,0), size16):if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型img Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2…

注册中心的基础知识

什么是注册中心 当服务启动时,将服务信息服务名称/IP/端口写入注册中心.注册中心接收服务端信息时保存服务信息,并且维护服务列表数据当服务消费者启动时会通过IP:端口(注册中心)远程链接注册中心. 获取服务列表信息.缓存到本地 当消费者调用服务时,查找缓存到本地的服务列表…

XSS一-WEB攻防-XSS跨站反射型存储型DOM型标签闭合输入输出JS代码解析

演示案例&#xff1a; XSS跨站-输入输出-原理&分类&闭合XSS跨站-分类测试-反射&存储&DOM #XSS跨站-输入输出-原理&分类&闭合 漏洞原理&#xff1a;接受输入数据&#xff0c;输出显示数据后解析执行 基础类型&#xff1a;反射(非持续)&#xff0c;存储(…

LinuxYUMVimg++/gccgdbGit使用

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;前面的文章给大家介绍了Linux的基础命令和权限&#xff0c;学会了命令行的模式使用Linux&#xff0c;今后要开始在Linux上写代码了&#xff0c;在这篇文章将介绍YUM、vim、gdb、git等常用的工具。 先来看看Linux如何安装软…

怎么拆解台式电脑风扇CPU风扇的拆卸步骤-怎么挑

今天我就跟大家分享一下如何选购电脑风扇的知识。 我也会解释一下机箱散热风扇一般用多少转。 如果它恰好解决了您现在面临的问题&#xff0c;请不要忘记关注本站并立即开始&#xff01; 文章目录列表&#xff1a;大家一般机箱散热风扇都用多少转&#xff1f; 机箱散热风扇选择…

linux centos 安装jenkins,并构建spring boot项目

首先安装jenkins&#xff0c;使用war包安装&#xff0c;比较简单&#xff0c;注意看下载的版本需要的JDK版本&#xff0c;官网下载https://www.jenkins.io/download/ 把下载好的war包放到服务器上&#xff0c;然后运行&#xff0c;注意8080端口的放行 # 前台运行并指定端口 ja…

数据结构 - 二叉树非递归遍历

文章目录 前言一、前序二、中序三、后序 前言 本文实现二叉树的前中后的非递归遍历&#xff0c;使用栈来模拟递归。 文字有点简略&#xff0c;需要看图和代码理解 树节点&#xff1a; typedef char DATA; //树节点 typedef struct Node {DATA data; //数据struct Node* left…

嵌入式仿真平台

嵌入式仿真实验教学平台 (puliedu.com) 这个平台可以写代码&#xff0c;元件拖一下就行&#xff0c;但是就是用的是标准库&#xff0c;自己一般写的hal库程序用不了&#xff0c;但是新手用还是可以的

I2C系列(三):软件模拟I2C读写24C04

一.目标 PC 端的串口调试软件通过 RS-485 与单片机通信&#xff0c;控制单片机利用软件模拟 I2C 总线对 EEPROM&#xff08;24C04&#xff09; 进行任意读写。 二.RS-485简述 在工业控制领域&#xff0c;传输距离越长&#xff0c;要求抗干扰能力也越强。由于 RS-232 无法消除…

CSS3 中的盒模型:标准与IE盒模型的差异

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

2、Jenkins持续集成-gitlab安装和源码上传

文章目录 1、Gitlab代码托管服务器安装2、源代码上传托管 环境&资源准备 统一采用VMware中安装CentOS7&#xff0c;安装教程&#xff0c;统一设置静态IP资源包都存在于我的资源里面 资源版本&位置 名称机器IP软件代码托管服务器192.168.2.100Gitlab-12.4.2持续集成服…

Polar 2024春季个人挑战赛 Jay17 WP

Polar 2024春季个人挑战赛 Rank&#xff1a;7 【WEB】机器人 开题 起手敏感文件robots.txt 【WEB】PHP反序列化初试 最简单的php反序列化 POC&#xff1a; <?php class Easy{public $name;public function __wakeup(){echo $this->name;} } class Evil{public $evi…