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

news2024/11/17 0:56:48

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

文章目录

    • :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

效果如下:

在这里插入图片描述

以上。

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

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

相关文章

OpenHarmony开发者大会正式召开 百业齐鸣开源共兴​

4月19日,OpenHarmony 开发者大会于北京正式召开。此次会议以“开源正当时,共赢新未来”为主题,邀请了各行各业众多开发者与会,盛况非凡。据了解,此次大会由开放原子开源基金会指导,OpenHarmony 项目群工作委…

依赖引入手册Idea常用设置常用工具手册

目录 数据库相关web应用工具相关postmancanal 测试相关插件相关Idea相关 数据库相关 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <!--连接池-->…

进程控制(上)

目录 &#xff1a; 1.fork&#xff08;&#xff09;写实拷贝 -- 缺页中断 2.进程终止 1.退出码 2.exit&#xff08;进程终止&#xff09;、_exit() 3.进程等待 1.进程等待的必要性 2.进程如何进入等待 -----------------------------------------------------------------…

MySQL常见的存储引擎

InnoDB&#xff1a;InnoDB是一种兼顾高可靠性和高性能的通用存储引擎&#xff0c;在MySQL 5.5之后&#xff0c;InnoDB是默认的MySQL存储引擎。 特点&#xff1a;1、DML操作遵循ACID模型&#xff0c;支持事务; 2、行级锁&#xff0c;提高并发访问性能; 3、支持外键FOREIGN KEY约…

爬虫框架有Scrapy、BeautifulSoup、Selenium

爬虫框架有Scrapy、BeautifulSoup、Selenium BeautifulSoup比Scrapy相对容易学习。Scrapy的扩展&#xff0c;支持和社区比BeautifulSoup更大。Scrapy应被视为蜘蛛&#xff0c;而BeautifulSoup则是Parser。 1.爬虫基础知识 在开始Python爬虫之前&#xff0c;需要先掌握一些基础知…

C++特殊类设计

文章目录 1.设计一个类&#xff0c;不能被拷贝2.设计一个类&#xff0c;只能在堆上创建对象3.设计一个类&#xff0c;只能在栈上创建对象4.设计一个类&#xff0c;不能被继承5.设计一个类&#xff0c;只能创建一个对象5.1 单例模式5.2 饿汉模式5.3 懒汉模式5.4 两种模式的析构函…

操作系统进程线程(二)—父子进程、僵尸进程、孤儿进程、进程终止、守护进程

父子进程、进程组、作业、会话 父进程 已创建一个或者多个进程 子进程 fork创建的。这个函数被调用一次但是返回两次&#xff0c;子进程返回0&#xff0c;父进程返回子进程id。 fork之后&#xff0c;操作系统会赋值一个与父进程完全相同的子进程&#xff0c;虽然是父子关系…

微软 BingChat,全面开放使用 !

前两天&#xff0c;微软突然官宣全面开放BingChat&#xff1a; 无需任何等待。只需注册一个账户&#xff0c;首页即可体验。 更关键的是&#xff0c;还有一大堆堪称“家底”的新功能来袭&#xff01; 支持100种语言多模态输出、持续聊天且记录可随时导出、类ChatGPT插件功能…

企业内部信息太琐碎怎么办?选择一款在线工具制作内部知识库

在一个企业内部&#xff0c;信息的传递和沟通是非常重要的。企业内部的信息往往比较杂碎&#xff0c;包括各种文件、资料、报告、流程等等&#xff0c;如果不加以整理和管理&#xff0c;就会给企业的工作带来困难和不便。因此&#xff0c;选择一款在线工具制作内部知识库是非常…

桌面虚拟化的优势

启用基于云的虚拟桌面基础架构 &#xff08;VDI&#xff09; OpenText™ Exceed TurboX™ &#xff08;ETX&#xff09; 长期以来一直是虚拟化在 Linux 主机上运行的图形要求苛刻的软件的黄金标准。ETX 最新版本&#xff08;12.5&#xff09;增加了许多Microsoft Windows功能&…

JetPack WindowManager详解

一、JetPack架构 Android Jetpack 是Android官方提供的一套组件、工具和指导,可以帮助开发者摆脱编写样板代码并简化复杂任务,并且Jetpack组件提供向后的兼容性, 能够帮助开发者更快的开发更稳定且易维护的应用。 Jetpack大体分为4类:Architecture(架构)、Foundationy(…

项目经理如何及时掌控项目进度?

延迟是指超出计划的时间&#xff0c;而无法掌控则意味着管理者对实际情况一无所知。 为了解决这些问题&#xff0c;我们需要建立好的制度和沟通机制。例如使用项目管理软件来跟踪进度、定期开会并避免沟通障碍等。 管理者可以建立相关制度&#xff1a; 1、建立进度记录制度。…

SpringBoot启用web模拟测试(二)

1.web环境模拟测试 设置测试端口&#xff08;见SpringBoot启用web模拟测试&#xff08;一&#xff09;&#xff09; 模拟测试启动&#xff08;见SpringBoot启用web模拟测试&#xff08;一&#xff09;&#xff09; 测试模拟匹配&#xff08;各组成信息皆可配置&#xff09; …

JUC----ThreadLocal

目录 一、什么是ThreadLocal 二、ThreadLocal常用API 三、ThreadLocal的内部结构 四、ThreadLocal内存泄漏问题 一、什么是ThreadLocal ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问&#xff08;通过get和set方法访问&#xff09;时能保证各个线程…

shell脚本中函数的运用

shell脚本中函数的运用 一、函数的定义二、函数的作用范围三、实验1、阶乘2、函数库 一、函数的定义 shell函数是经常使用的&#xff0c;因为有些命令序列是需要反复调用执行的&#xff0c;将命令序列按格式写在一起&#xff0c;以便可以重复的使用。 shell函数&#xff1a; 使…

【C++】STL简介

在C领域我们正式进入到STL的学习&#xff0c;本期我们简单的介绍一下STL 目录 一、什么是STL 二、STL的版本 2.1 原始版本 2.2 P. J. 版本 2.3 RW版本 2.4 SGI版本 三、STL的六大组件 四、STL的缺陷 一、什么是STL STL(standard template libaray-标准模板库)&#x…

保姆级教程!教你打造自己的AI孙燕姿;全程使用AI工具设计一款桌游;搭建基于LLM的客服系统的实践 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『大模型技术与应用思考导图』跟着大佬做判断 王咏刚&#xff0c;创新工场CTO&#xff0c;技术撰稿人&#xff0c;有数个知名出版作品…

Nat. Commun. | 无需参数的几何深度学习,可准确预测蛋白质结合界面

编译 | 曾全晨 审稿 | 王建民 今天为大家介绍的是来自Matteo Dal Peraro团队的一篇关于预测蛋白质结合的论文。蛋白质是生命的重要分子组成部分&#xff0c;由于其特定的分子相互作用而负责大多数生物功能。然而&#xff0c;预测它们的结合界面仍然是一个挑战。作者提出了一种几…

【JS】1676- 重学 JavaScript API - Page Visibility API

在前端开发中&#xff0c;我们经常需要根据页面的可见性来控制资源的使用和提高页面的性能和响应速度。而 JavaScript 中的 Page Visibility API[1] 就提供了一种「检测页面是否可见」的方法。 本文将介绍 Page Visibility API 的概念、使用方法、兼容性和实际应用案例。 什么是…

【负载均衡式的在线oj(1.compile_runner_server模块)】

&#x1f389;实战项目&#xff1a;负载均衡式在线OJ 博主主页&#xff1a;桑榆非晚ᴷ 博主能力有限&#xff0c;如果有出错的地方希望大家不吝赐教 给自己打气&#xff1a;成功没有快车道&#xff0c;幸福没有高速路。所有的成功&#xff0c;都来自不倦地努力和奔跑&#xf…