【VSLAM】ORB-SLAM3安装部署与运行

心口如一,犹不失为光明磊落丈夫之行也。——梁启超

文章目录

    • :smirk:1. ORB-SLAM3介绍
    • :blush:2. 代码安装部署
      • 1. 安装ros与opencv
      • 2. 安装Pangolin作为可视化和用户界面
      • 3. 安装Eigen3一个开源线性库,可进行矩阵运算
      • 4. 安装ORB-SLAM3
    • :satisfied:3. 案例运行
      • 1. 运行数据集
      • 2. 用真实相机usb_cam运行

😏1. ORB-SLAM3介绍

ORB-SLAM3是一种基于视觉传感器的实时单目、双目和RGB-D SLAM系统

SLAM代表同时定位与地图构建,是指在未知环境下通过机器人上搭载的传感器获取数据并运用算法进行实时处理,从而在机器人运动中同时完成对机器人自身姿态的估计和构建三维环境地图。

ORB-SLAM3是由英国伯明翰大学开发的,是ORB-SLAM2的改进版本,加入了语义信息处理,能够更加准确地估计相机的位置和方向,并且可以识别场景中的物体和结构,实现更加智能化的SLAM过程。

😊2. 代码安装部署

1. 安装ros与opencv

安装依赖:

sudo apt-get update
sudo apt-get install git cmake build-essential libglew-dev libgtk2.0-dev \
libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff5-dev \
libopenexr-dev libeigen3-dev libboost-all-dev libprotobuf-dev protobuf-compiler \
libgoogle-glog-dev libgflags-dev libatlas-base-dev liblapack-dev libsuitesparse-dev \
libvtk6-dev python3-pip python3-dev python3-numpy python3-yaml

安装完ros后,会自带opencv 3.2.0版本。

pkg-config modversion opencv

2. 安装Pangolin作为可视化和用户界面

安装依赖:sudo apt-get install libglew-dev libpython2.7-dev libgl1-mesa-dev libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols

下载代码:git clone https://github.com/stevenlovegrove/Pangolin.git

编译安装:

cd Pangolin
mkdir build
cd build
cmake ..
make -j8
sudo make install

3. 安装Eigen3一个开源线性库,可进行矩阵运算

安装eigen3:sudo apt-get install libeigen3-dev

4. 安装ORB-SLAM3

下载代码:git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3

构建ORB-SLAM3:

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

可能的问题:AR编译不通过,删除即可;se3库有问题,重新编译对应库。

构建ROS版本的ORB-SLAM3:

gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/ORB_SLAM3/Examples_old/ROS

chmod +x build_ros.sh
./build_ros.sh

可能的问题:改一下cmakelist.txt中的参数。

😆3. 案例运行

1. 运行数据集

编译完成后会在ORB_SLAM3/Examples文件夹下生成各种可执行文件。这里以单目相机为例运行:

在这里插入图片描述

  1. 下载数据集:有TUM、KITTI、EuRoC三种数据集,这里使用TUM数据集,从https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download下载序列并解压缩。

  2. 执行命令,其中PATH_TO_SEQUENCE_FOLDER为数据集的存储路径,并将tumx.yaml与下载的数据集对应,比如TUM1.yaml,TUM2.yaml 和TUM3.yaml分别对应 freiburg1, freiburg2 和 freiburg3,根据自己的情况对路径(相对路径或绝对路径)做修改。

./Examples/Monocular/mono_tum /home/dev/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/dev/ORB_SLAM3/Examples/Monocular/TUM1.yaml /home/dev/ORB_SLAM3/dataset/rgbd_dataset_freiburg1_xyz

效果如下:

在这里插入图片描述

2. 用真实相机usb_cam运行

ORB_SLAM3自带了ros的版本,在Examples_old/ROS中,编译完成后,先运行usb相机:

roslaunch usb_cam usb_cam-test.launch

然后执行单目vslam命令(注意将订阅的topic改成对应相机的):

rosrun ORB_SLAM3 Mono /home/dev/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/dev/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/Asus.yaml

效果如下:

在这里插入图片描述

以上。

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

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

相关文章

架构-软件工程模块-1

概述 这一模块选择题的分值比较多,案例题和论文也有能用上的地方。主要知识点会特殊标注或说明。 软件开发生命周期 软件工程三要素:方法、工具、过程。不会直接考,但可帮助记忆理解。 传统软件生命周期方法学分为:(选…

ChatGPT的强化学习部分介绍——PPO算法实战LunarLander-v2

PPO算法 近线策略优化算法(Proximal Policy Optimization Algorithms) 即属于AC框架下的算法,在采样策略梯度算法训练方法的同时,重复利用历史采样的数据进行网络参数更新,提升了策略梯度方法的学习效率。 PPO重要的突…

尚硅谷-宋红康-JVM上中下篇完整笔记-JVM中篇

一.Class文件结构 1.概述 1.1 字节码文件的跨平台性 所有的JVM全部遵守Java虚拟机规范:Java SE Specifications,也就是说所有的JV环境都是一样的,这样一来字节码文件可以在各种JVM上运行。 1.2 Java的前端编译器 想要让一个Java程序正确地运行在JVM中&am…

177_模型_Power BI 进销存6大日期维度期初与期末

177_模型_Power BI 进销存6大日期维度期初与期末 一、背景 在经销存报表设计中,经常会遇到的便是期初与期末。当然我们这里说期初与期末指的是期初库存与期末库存。 这里的期一般常见的会有:年月日。本案例将演示 6 大日期维度,分别是&…

勒索病毒“顽疾”,没有“特效药”吗?

基础设施瘫痪、企业和高校重要文件被加密、毕业论文瞬间秒没……这就是六年前的今天,WannaCry勒索攻击爆发时的真实场景。攻击导致150多个国家数百万台计算机受影响,也让勒索病毒首次被全世界广泛关注。 六年后,勒索攻击仍是全球最严重的网络…

Kali E:Unable to locate package错误解决

默认的新装的kali 可能都会遇到这个安装报错E: Unable to locate package httrack问题,今天我记录下彻底解决过程和效果。 Command httrack not found, but can be installed with: apt install httrack Do you want to install it? (N/y)y apt install httrack Re…

什么是域名流量劫持?

作为传统的互联网攻击方式,域名流量劫持已经十分常见,这种网络攻击将会在不经授权的情况下控制或重定向一个域名的DNS记录。域名劫持的影响难以估量,因为它可以导致在访问一个网站时,用户被引导到另一个不相关的网站,对…

深入理解java虚拟机精华总结:运行时栈帧结构、方法调用、字节码解释执行引擎

深入理解java虚拟机精华总结:运行时栈帧结构、方法调用、字节码解释执行引擎 运行时栈帧结构局部变量表操作数栈动态连接方法返回地址 方法调用解析分派静态分派动态分派 基于栈的字节码解释执行引擎 运行时栈帧结构 Java虚拟机以方法作为最基本的执行单元&#xf…

Vue3 自定义指令让元素自适应高度,el-table在可视区域内滚起来

我始终坚持,前端开发不能满足于实现功能,而是需要提供优秀的交互与用户体验。即使没有产品没有UI的小项目,也可以自己控制出品质量,做到小而美。所以前端们不仅仅需要了解框架如何用,还要学习一些设计、交互、体验的知…

诗圣杜甫不同时期的代表作

杜甫一生大致分为四个时期。 中青年时期 青年时,作为官三代的杜甫并不缺钱,四处游历,与李白、高适唱和、仙游,成为佳话。这个时期杜甫的作品热血豪迈,气势蓬勃。代表作首推《望岳》: 岱宗夫如何&#xf…

2023/5/8总结

JAVA基础知识(2) 1.方法 1、方法定义 格式:public static void 方法名(){ //方法体 } 2、方法调用 格式:方法名(); 3、方法的通用格式 public static 返回值类型方法名&…

C++面向对象(黑马程序员)

内存分区模型 #include<iostream> using namespace std;//栈区数据注意事项&#xff1a;不要返回局部变量的地址 //栈区的数据由编译器管理开辟和释放int* func(int b) //形参数据也会放在栈区 {b 100;int a 10; //局部变量存放在栈区&#xff0c;栈区的数据在函数执…

存bean和取bean

准备工作存bean获取bean三种方式 准备工作 bean:一个对象在多个地方使用。 spring和spring boot&#xff1a;spring和spring boot项目&#xff1b;spring相当于老版本 spring boot本质还是spring项目&#xff1b;为了方便spring项目的搭建&#xff1b;操作起来更加简单 spring…

vue+express+mysql做一个简单前后端交互,从数据库中读取数据渲染到页面

1.下载上次的包 npm I &#xff0c;同时下载新的包 axios 2.打开数据库服务器&#xff0c;同时使用新建数据库一样&#xff0c;数据包名 3.新建一个项目 4.全局注册axios 5.新建一个server文件夹&#xff08;里面在建一个index.js的主文件&#xff09;用来放我们后端写的东西 …

数据结构与算法基础(王卓)(36):交换排序之快排【第三阶段:深挖解决问题】精华!精华!精华!!!重要的事情说三遍

目录 Review&#xff1a; 具体问题&#xff1a; 操作核心&#xff1a; 注&#xff1a; 操作分解&#xff1a; 操作实现&#xff1a; 问题&#xff08;1&#xff09;&#xff1a;进行不一样次数的 if / else 判断 问题&#xff08;2&#xff09;&#xff1a;通过判断条件…

TypeScript 最近各版本主要特性总结

&#xff08;在人生的道路上&#xff0c;当你的期望一个个落空的时候&#xff0c;你也要坚定&#xff0c;要沉着。——朗费罗&#xff09; TypeScript 官网 在线运行TypeScript代码 第三方中文博客 特性 typescript是javascript的超集&#xff0c;向javascript继承额外的编辑…

2023鲁大师评测沟通会:鲁大师尊享版登场、“鲁小车”正式上线

作为硬件评测界的“老兵”&#xff0c;鲁大师不仅有着十几年的硬件评测经验&#xff0c;并且一直都在不断地尝试、不断地推陈出新。在5月9日举行的“2023年鲁大师评测沟通会”上&#xff0c;鲁大师向大众展示了在过去一年间取得的成果。 PC业务迭代升级&#xff0c;鲁大师客户端…

干货满满!破解FP安全收款难题

怎样安全收款是做擦边产品卖家比较忧虑的问题&#xff0c;2023年已经即将来到了年中&#xff0c;跨境卖家们在这一方面做得怎么样了呢&#xff1f; 这期分享破解FP独立站收款难题的方法。 一、商家破解FP收款难题方法 1.第三方信用通道 优点&#xff1a;信用卡在国外使用率比…

好家伙,又一份牛逼笔记面世了...

最近网传的一些裁员的消息&#xff0c;搞的人心惶惶。已经拿到大厂offer的码友来问我&#xff1a;大厂还能去&#xff0c;去了会不会被裁。 还在学习的网友来问我&#xff1a;现在还要冲互联网么&#xff1f; 我是认为大家不用恐慌吧&#xff0c;该看啥看啥&#xff0c;该学啥…

ASEMI代理ADI亚德诺ADUM3211TRZ-RL7原厂芯片

编辑-Z ADUM3211TRZ-RL7参数描述&#xff1a; 型号&#xff1a;ADUM3211TRZ-RL7 数据速率&#xff1a;10 Mbps 传播延迟&#xff1a;50 ns 脉冲宽度失真&#xff1a;3 ns 脉冲宽度&#xff1a;100 ns 输出上升/下降时间&#xff1a;2.5 ns 供电电流&#xff1a;2.6 mA …