Ubuntu18.04运行ORB-SLAM3(Demo+本地Realsense D415运行)

2023-05-16

ORB-SLAM3论文地址:https://arxiv.org/abs/2007.11898
代码地址:https://github.com/UZ-SLAMLab/ORB_SLAM3

一、安装库

根据ORB-SLAM3源代码安装以下库:
1、Pangolin
附上github网址:https://github.com/stevenlovegrove/Pangolin
根据github里面安装即可:

#安装依赖
sudo apt install libglew-dev
sudo apt install cmake
sudo apt install libpython2.7-dev
#可选依赖见github,我没装所以就不贴出来啦
#下载并编译
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
#最后不要忘了安装
sudo make install

2、opencv3.2.0
下载官网opencv3.2.0安装包

#安装依赖
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
#再加上以下依赖,后面出错了,所以先加上
sudo apt-get install libgtk-3-dev
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
#进入文件夹编译安装
mkdir build
cd build
cmake -D ENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j8
sudo make install

环境配置

sudo gedit /etc/ld.so.conf.d/opencv.conf        #添加库路径
#里面应该是   
/usr/local/lib             #没有则加上
sudo gedit ~/.profile      #添加环境变量
#末尾加上
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH

2.1 出现错误及解决办法
(1)无法定位软件包 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)出现错误

– Checking for module ‘gtk±3.0’
– No package ‘gtk±3.0’ found

#安装依赖
sudo apt-get install libgtk-3-dev

(3)出现错误

– No package ‘gstreamer-base-1.0’ found

#安装依赖
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

(4)出现错误

/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: 没有那个文件或目录
#include_next <stdlib.h>

#在cmake语句里加上
-D ENABLE_PRECOMPILED_HEADERS=OFF 

3、ROS
根据ROS官网安装对应版本的ROS,本机安装的是ROS Melodic

#加链接和钥匙
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
#安装完整版,其他的见官网
sudo apt install ros-melodic-desktop-full
#环境配置
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装依赖
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
sudo rosdep init
rosdep update

安装成功后,创建并初始化工作目录

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws/         #直接$ cd .. 也一样
catkin_make
#catkin的构建系统的相关文件保存在build目录中,构建后的可执行文件保存在devel目录中
#加载与catkin构建系统相关的环境文件
$ source ~/catkin_ws/devel/setup.bash

4、Eigen3
5、python2.7
6、DBoW2 and g2o(ORB-SLAM3文件中自带)

二、运行ORB-SLAM3

1、运行demo
依旧是根据github来
下载并编译ORB-SLAM3,将文件放入ROS工作空间的src文件夹中

#注意在ROS工作空间的src文件夹中下载,或者是下载完成后移入工作空间
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
#编译
cd ORB_SLAM3
chmod +x build.sh
./build.sh

下载数据集,官网下载慢可用迅雷下载
ps.不使用ROS运行的下载ASL格式的,使用ROS运行的下载ROS bag
在这里插入图片描述

修改ORB-SLAM3/euroc_examples.sh文件中的数据集地址

#!/bin/bash
#pathDatasetEuroc='/Datasets/EuRoC' #Example, it is necesary to change it by the dataset path
pathDatasetEuroc='/home/yu/Datasets' #Example, it is necesary to change it by the dataset path

另外,数据集文件名需要修改为euroc_examples.sh文件中对应的名称

例如MH_01_easy修改为MH01

接下来,运行demo

./euroc_examples.sh

结果图
在这里插入图片描述
2、用Realsense D415相机运行
Ubuntu18.04安装RealsenseD415方法见另一篇博客。
编译ROS版

#添加环境变量
gedit ~/.bashrc
#加入以下内容,PATH改为自己的地址
#export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples/ROS
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/yu/catkin_ws/src/ORB_SLAM3/Examples/ROS
#再加个这个吧
source ~/catkin_ws/devel/setup.bash
#编译
chmod +x build_ros.sh
./build_ros.sh

修改相应节点

> 打开 ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_rgbd.cc  文件
> 修改节点(绿色字体)
message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/color/image_raw", 100);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "camera/depth/image_rect_raw", 100);

相机标定后,修改ORB_SLAM3/Examples/ROS/ORB_SLAM3/Asus.yaml文件

#打开ROS
roscore
#打开相机
roslaunch realsense2_camera rs_rgbd.launch  
#运行节点,注意修改命令中的地址
#使用还需要修改yaml文件,即修改相机的参数
rosrun ORB_SLAM3 RGBD /home/yu/catkin_ws/src/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/yu/catkin_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/Asus.yaml

结果图
在这里插入图片描述
定位丢失时,建立新地图并与原地图匹配,为绑架恢复问题提供了一个可行的开源解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu18.04运行ORB-SLAM3(Demo+本地Realsense D415运行) 的相关文章

  • ubuntu18.04 查看在用串口

    1 终端输入cutecom 打开串口助手 xff0c 可能没有下载 xff0c 可根据提示下载安装 sudo cutecom 2 点击device旁边的下拉按钮即可查询当前在用的串口
  • Linux Ubuntu18.04系统 USB转串口驱动安装,查看串口号

    When you plugin your USB UART converter and run gt ls dev tty if you don t see the dev ttyUSB0 or similar your Linux doe
  • RealSense error calling rs2_pipeline_start_with_config

    问题 获取IMU数据的时候 xff0c 出现如下信息 xff1a RealSense error calling rs2 pipeline start with config pipe 0x5596a79cf920 config 0x559
  • 使用Xavier读取RealSense D435i的踩坑经历

    由于项目需要 xff0c 最近开始研究通过Xavier运行VINS的方法 xff0c 使用的传感器是Intel的RealSense xff0c 但是Xavier对RealSense的支持却不怎么好 xff0c 下面介绍一下躲坑方法 xff0
  • ORB_SLAM3初试

    源码地址 xff1a orb salm3 github 论文地址 orb slam3 paper ORB SLAM3提供了单目 xff0c 双目 xff0c rgbd 以及各自结合IMU的数据分析实现 demo运行效果展示 xff1a 在不
  • Ubuntu18.04安装AX210驱动

    Linux Support for Intel Wireless Adapters 从官网可以看到AX210支持的内核版本是5 10 43 如果要在低于5 10的内核版本上安装AX210的驱动的话 xff0c 需要安装以下方法操作 xff1
  • 【3D视觉】realsense D435三维重建

    1 xff0c 硬件 xff1a realsense D435 驱动及SDK开发包安装 GitHub IntelRealSense librealsense Intel RealSense SDK 下载最新驱动 安装后打开 Intel Re
  • 【Ubuntu】树莓派4B安装Ubuntu18.04(超详细)

    本教程主要记录下近期给树莓派4B安装Ubuntu18 04的过程 xff01 xff01 xff01 目录 一 下载Ubuntu18 04 Server版本 二 烧录 三 修改WiFi登录以及树莓派分辨率 1 修改wifi 2 修改分辨率
  • Just demo test

    MainWindow MainWindow QWidget parent QMainWindow parent ui new Ui MainWindow ui gt setupUi this for int i 0 i lt 3 i QLa
  • 【看后必会】一步步教你用React写一个markdown实时编辑器!

    1 实现效果 最近在用React写一个博客管理系统 有一个功能是添加新文章 在新建文章的页面 我希望做到像CSDN这样 左边是编辑区 markdown格式 右边是预览区 实时更新 编辑文本的同时 在预览区就能看到效果 就自己动手实现了一个这
  • ubuntu18断电后recovering journal一直卡在开机界面

    事故机器 elitebook735 系统 ubuntu18 内核 4 20 发生原因 没电关机了 还是保持电量充足比较好 开机的时候回显示 xxx recovering journal dev 磁盘 clean xxxxx 修复方法 关闭电
  • Ubuntu 18.04下使用Apache搭建一个web服务器

    Ubuntu 18 04下使用Apache搭建一个web服务器 几个必要的概念 web服务器 以我之见 web服务器就是运行在计算机上的一个向整个网络或者是web客户端 浏览器提供文档的一个程序 我们通过http请求便可以获取到存储到web
  • Android Studio 的NotePad制作(日志本)

    自己写的NotePad 一个星期左右的时间 完成了最基本的功能 但是 界面还是一如既往的shi 因为百度找的图标都不是那种成套的 想找的找不到 干脆下次自己画 NotePad的功能无非是对日志的增删改查 这次还加入了Preference的一
  • 今天这个是mybatis与spring的整合

    今天这个是mybatis与spring的整合 依旧是一个查询的demo 首先是demo的结构 然后是我的jdbc properties jdbc driverClassName com mysql jdbc Driver jdbc url
  • for循环实现1-100之间偶数和

    package com itheima 04 需求 求出1 100之间偶数和 分析 A 定义求和变量 初始化值是0 B 获取1 100之间的数据 用for循环实现 C 把获取到的数据进行判断 看是否是偶数 如果是 就累加 D 输出求和结果
  • nginx server.conf demo

    server access log Users xx software nginx logs access log error log Users xx software nginx logs error log listen 50001
  • Unity动画机制 Animator与Animator Controller教程

    Chinar blog www chinar xin Unity动画机制 Animator Animation 本文提供全流程 中文翻译 Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 Chinar 心分享 心
  • SpringBoot整合ELK教程

    SpringBoot整合ELK教程 1 基础概念 ELK 即 Elasticsearch Logstash Kibana 组合起来可以搭建线上日志系统 本文主要讲解使用 ELK 来收集测试框架产生的日志 Elasticsearch 用于存储
  • requirejs Angular 似乎没有注册控制器/服务/等

    我有一个非常简单的 requirejs 和 Angular 演示应用程序 当我运行代码时 就好像 Angular 没有注册 homeController 即使文件确实运行并输出 来自家庭控制器的 Hello 令人沮丧的是几乎没有关于如何解决
  • 显示多个 Google 路线的演示 (Google Maps API v3)

    大家好 有没有一个可以在单个 Google 地图上显示多个方向路线的功能演示 堆栈上的另一个问题 https stackoverflow com questions 3537676 google maps directions v3 mul

随机推荐

  • 信号量 Semaphore 用法及注意事项总结

    信号量 信号量在WIN32系统中是核心对象 xff0c 故其用法同其他同步机制类似 xff0c 但可应用于多个线程同步运行 xff0c 即同时有至多有限个线程同时工作 xff0c 而线程上线数量取决于初始化时指定的最大值 1 创建一个信号量
  • PHP的大数组是什么意思?有什么作用?底层原理是什么?

    在 PHP 中 xff0c 大数组指的是包含大量元素的数组 xff0c 其元素数量可以达到数百万或数千万甚至更多 这种数组在处理大规模数据时非常有用 xff0c 例如在数据分析 机器学习和科学计算等领域中 PHP 的大数组的实现方式可以采用
  • PHP的全局变量是是干什么的?有什么作用?底层原理是什么?

    PHP的全局变量是指在整个PHP脚本中都可以被访问到的变量 这些变量存储在PHP进程的内存中 xff0c 并在整个脚本执行期间保持不变 全局变量的作用是在不同的函数和代码块中共享数据 xff0c 从而使代码更加简洁和易于维护 全局变量的底层
  • PHP的日志是干什么的?有什么用?底层原理是什么?

    在软件开发中 xff0c 日志是记录系统活动的重要方式之一 xff0c 也是排查问题和故障排除的主要工具之一 PHP提供了多种日志记录方式 xff0c 如文件日志 数据库日志和Syslog等 它们的共同目的是在代码执行时收集和记录信息 xf
  • PHP的开发环境和部署环境是什么意思?底层原理是什么?

    PHP的开发环境和部署环境是指在开发和部署PHP应用程序时所使用的不同环境 开发环境通常是指程序员在本地开发PHP应用程序的环境 xff0c 其目的是为了让程序员能够快速开发和测试应用程序 xff0c 同时方便调试和排除问题 在开发环境中
  • PHP为什么需要错误报告级别?底层原理是什么?

    PHP提供了多种错误报告级别 xff0c 包括错误信息 警告信息 提示信息和严格模式等 xff0c 用于在开发过程中捕获和处理错误 底层原理是通过PHP的内部错误处理机制来实现的 当PHP执行脚本时 xff0c 如果出现了错误 xff0c
  • PHP的代码调试技巧是什么意思?底层原理是什么?

    PHP的代码调试技巧是指在开发过程中 xff0c 通过调试技术来解决代码中的问题 xff0c 提高代码的可靠性和稳定性 这些技巧可以帮助开发人员快速定位代码中的错误 xff0c 提高代码的质量和效率 PHP提供了多种调试技术 xff0c 包
  • PHP的mysqli扩展和mysql扩展的区别是什么?底层原理是什么?

    mysqli和mysql扩展都是PHP提供的操作MySQL数据库的扩展 它们的区别在于mysqli扩展是MySQL Improved Extension的简写 xff0c 是mysql扩展的改进版 xff0c 提供了更好的性能和更多的功能
  • PHP的依赖关系是什么意思?底层原理是什么?

    PHP的依赖关系指的是PHP应用程序或库与其他软件包或库之间的关系 这些软件包或库可能包括操作系统提供的库 xff0c 例如文件I O和网络功能 xff0c 也可能包括第三方库 xff0c 例如数据库客户端库和图像处理库 底层原理是 xff
  • 什么是Composer?底层原理是什么?

    Composer是PHP的一个依赖管理工具 xff0c 它可以帮助开发者在项目中自动管理依赖关系 xff0c 例如第三方库 框架 组件等 通过Composer xff0c 可以在项目中添加 更新 卸载依赖项 xff0c 并自动解析它们的依赖
  • 为什么composer可以自动管理依赖关系?底层原理是什么?

    Composer能够自动管理依赖关系的原理是基于包管理和自动加载的机制 首先 xff0c Composer通过一个名为Packagist的在线包存储库来管理各种PHP包 xff0c 这个仓库中包含了大量的PHP库和框架 xff0c 开发者可
  • windows线程同步-事件Event用法总结

    事件对象 Win32 中最具弹性的同步机制就属 events 对象了 Event 对象是一种核 心对象 xff0c 它的唯一目的就是成为激发状态或未激发状态 这两种状态全由程序 来控制 xff0c 不会成为 Wait 函数的副作用 Even
  • composer.lock是干什么的?底层原理是什么?

    composer lock文件是Composer工具在安装依赖包时生成的一个锁文件 它记录了当前应用程序所依赖的所有PHP库及其版本号 xff0c 以及所有依赖库所依赖的其他库及其版本号等信息 在运行composer install命令时
  • PHP的Zend引擎是干什么的?底层原理是什么?

    PHP的Zend引擎是PHP解释器的核心组件 xff0c 负责将PHP代码转换为可执行的指令集 xff0c 并执行这些指令 Zend引擎是PHP的默认执行引擎 xff0c 被广泛使用 Zend引擎的底层原理可以分为以下几个关键步骤 xff1
  • PHP解释器是干什么的?底层原理是什么?

    PHP解释器是用于解释执行PHP代码的软件程序 它负责将编写的PHP代码转换为可执行的机器指令 xff0c 并执行这些指令以实现代码的功能 PHP解释器的底层原理可以分为以下几个步骤 xff1a 词法分析 xff08 Lexical Ana
  • PHP代码的底层是什么?底层原理是什么?

    PHP代码的底层是由计算机可执行的机器码 xff08 二进制指令 xff09 组成 底层原理是将PHP代码经过编译和解释执行的过程转化为机器码 底层原理可以分为以下几个步骤 xff1a 词法分析 xff08 Lexical Analysis
  • Jetson Xavier NX 的SD卡系统镜像制作

    Jetson Xavier NX 的SD卡系统镜像制作 一 SD卡系统查看二 系统镜像制作三 系统镜像烧录 一 SD卡系统查看 现有的SD卡的内存为128G xff0c 其中64G内存并未分配 span class token commen
  • 嵌入式Linux下使用crond服务

    参考 xff1a https www linuxidc com Linux 2014 02 97369 htm http www linuxidc com Linux 2014 02 97360 htm https blog csdn ne
  • 关于Flexsns Sky 卡80%,以及乱码的解决问题

    一直被 flexsns sky 这个应用折磨好久了 xff0c 刚开始的时候安装成功 但是打开界面一直卡在80 那里 xff0c ucenter 里面的设置也是对的 官网也是挂的 xff01 于是百思不得解 接下来 我来说说我的解决办法把
  • Ubuntu18.04运行ORB-SLAM3(Demo+本地Realsense D415运行)

    ORB SLAM3论文地址 xff1a https arxiv org abs 2007 11898 代码地址 xff1a https github com UZ SLAMLab ORB SLAM3 一 安装库 根据ORB SLAM3源代码