基于matlab使用虚幻引擎模拟开发视觉SLAM算法(附源码)

一、前言

本示例展示了如何使用从虚幻引擎®模拟环境中获取的图像数据开发可视化同步定位和映射(SLAM)算法。

视觉SLAM是计算摄像机相对于周围环境的位置和方向,同时映射环境的过程。开发可视化 SLAM 算法并评估其在不同条件下的性能是一项具有挑战性的任务。最大的挑战之一是生成相机传感器的地面实况,尤其是在户外环境中。使用仿真可以在各种场景和相机配置下进行测试,同时提供精确的地面实况。

此示例演示了如何使用虚幻引擎模拟为停车场景中的单眼或立体摄像机开发视觉SLAM算法。

二、在模拟环境中设置场景

使用模拟 3D 场景配置块设置模拟环境。选择内置的大型停车场场景,其中包含多个停放的车辆。视觉 SLAM 算法可匹配连续图像中的特征。要增加潜在要素匹配的数量,可以使用停放车辆子系统向场景添加更多停放车辆。要指定车辆的停车姿势,请使用该功能。如果选择更自然的场景,则不需要存在其他车辆。自然场景通常具有足够的纹理和特征多样性,适合特征匹配。

打开模型并添加停放的车辆

三、设置自我车辆和摄像头传感器

通过使用带有地面跟随块的模拟 3D 车辆,设置沿指定参考路径移动的自我车辆。相机变体子系统包含两种配置的相机传感器:单目和立体。在这两种配置中,摄像头都安装在车顶中心。您可以使用相机校准器或立体相机校准器应用来估计要模拟的实际相机的内部结构。此示例首先显示单目相机工作流,然后显示立体摄像机工作流。

四、可视化和记录传感器数据

运行模拟以可视化和记录传感器数据。使用视频查看器块可视化来自相机传感器的图像输出。使用“目标工作空间”块记录相机传感器的地面真实位置和方向。

五、利用记录数据开发单目视觉SLAM算法

使用图像评估单目视觉 SLAM 算法。该函数实现单目 ORB-SLAM 管道:

  • 地图初始化:ORB-SLAM 首先初始化来自两个图像的 3-D 点地图。使基于 2-D ORB 特征对应关系计算相对姿态,并使用三角测量来计算 3-D 地图点。这两个帧作为关键帧存储在图像视图集对象中。三维地图点及其与关键帧的对应关系存储在对象中。

  • 跟踪:初始化地图后,对于每个新图像,该函数通过将当前帧中的特征与最后一个关键帧中的特征进行匹配来估计相机姿势。该函数通过跟踪本地地图来优化估计的相机姿势。

  • 局部映射:如果当前帧被标识为关键帧,则用于创建新的三维地图点。在此阶段,用于通过调整相机姿势和 3D 点来最大程度地减少重投影错误。

  • 闭环:通过使用功能袋方法将每个关键帧与所有先前的关键帧进行比较来检测每个关键帧的循环。检测到闭环后,将优化姿势图,以使用 导航工具箱功能优化所有关键帧的相机姿势。

六、根据实际情况进行评估

您可以根据从仿真中获得的地面实况评估优化的相机轨迹。由于图像是从单眼相机生成的,因此相机的轨迹只能恢复到未知的比例因子。您可以根据地面实况大致计算比例因子,从而模拟通常从外部传感器获得的比例因子。

七、立体视觉 SLAM 算法

在单目视觉SLAM算法中,使用单个相机无法准确确定深度。地图的比例和估计的轨迹是未知的,并且会随着时间的推移而漂移。此外,由于地图点通常无法从第一帧开始三角测量,因此引导系统需要多个视图才能生成初始地图。使用立体摄像头可以解决这些问题,并提供更可靠的视觉SLAM解决方案。该函数实现立体视觉 SLAM 管道。与单目管线的主要区别在于,在贴图初始化阶段,立体管线从同一帧的一对立体图像创建三维地图点,而不是从不同帧的两个图像创建它们。

八、提取立体图像

运行立体视觉 SLAM 算法

与单目视觉SLAM算法相比,立体视觉SLAM算法可以更准确地估计相机轨迹。

九、立体图像的密集重建

给定精细的相机姿势,您可以从与关键帧对应的立体图像中执行密集重建。

十、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

程序有偿获取:评论区下留言,博主看到会私信你。

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

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

相关文章

快速搭建专属于自己的单商户商城系统!

<系统简介> 基于ThinkPHP6.0、Vue、uni-app、PHP8.0、MySQL5.7、element-ui等主流通用技术开发的一套likeshop单商户商城系统&#xff0c;真正做到好懂&#xff0c;易改&#xff0c;不绕弯 代码全开源 极易二开 可免费商用 系统适用于B2C、单商户、自营商城场景。完…

Linux 系统编辑 --文件IO

目录 1.文件 IO 1.1系统调用 1.2 C 标准库文件 IO 函数 1.3 open/close 函数 1.4 文件描述符表 1.7 read/write 函数 1.8 缓冲区 1.9 错误处理函数 2.0 阻塞、非阻塞 2.1 lseek 函数 辅助学习资料 参考书 1 &#xff1a;《 Unix 环境高级编程》 W.Richard St…

问题解决:更新字段为NULL的字段,一直无法更新成功

问题回顾&#xff1a; UPDATE t_user SET is_deleted1 WHERE is_deleted0 AND (email IS NULL)执行上面的SQL一直没有生效&#xff0c;原因是我手动在Navicat中删除了email字段的值。导致一直无法执行上面的SQL&#xff0c;最后发现了原因&#xff0c;请看下面红框&#xff1a…

JAVA Email

Email就是电子邮件。电子邮件的应用已经有几十年的历史了&#xff0c;我们熟悉的邮箱地址比如aaaa22222163.com&#xff0c;邮件软件比如Outlook、网易闪电邮、Foxmail都是用来收发邮件的。当然&#xff0c;使用Java程序也可以收发电子邮件。 传统的邮件就是通过邮局投递&#…

zookeeper的动态扩容

附属意义的扩容&#xff1a;扩容的新增节点为观察者observer 1.观察者概念&#xff1a; a.在zookeeper引入此新的zookeeper节点类型为observer&#xff0c;是为了帮助处理投票成本随着追随者增加而增加的问题并且进一步完善了zookeeper的可扩展性 b.观察者不参与投票&#x…

django要在books接口中不同数据的新类

要在books接口中添加一个处理不同数据的新类&#xff0c;并希望通过 Django 管理后台添加和显示这些数据&#xff0c;需要对三个文件进行修改 1.在 models.py 文件中添加新的模型类。 例如&#xff0c;假设您要添加一个名为 Category 的新模型&#xff1a; from django.db i…

记一次 Visual Studio 2022 卡死分析

一&#xff1a;背景 1. 讲故事 最近不知道咋了&#xff0c;各种程序有问题都寻上我了&#xff0c;你说 .NET 程序有问题找我能理解&#xff0c;Windows 崩溃找我&#xff0c;我也可以试试看&#xff0c;毕竟对 Windows 内核也知道一丢丢&#xff0c;那 Visual Studio 有问题找…

黑芝麻智能科技、上海紫先面试(部分)(未完全解析)

黑芝麻智能科技 Hystrix可以限流吗&#xff1f;客户端限流&#xff0c;是限制对下游&#xff08;被调用方&#xff09;的访问&#xff0c;不是对本服务限流。从HystrixCommand的.withExecutionIsolationStrategy(ExecutionIsolationStrategy.SEMAPHORE)也可以看出来&#xff0c…

English Learning - L3 作业打卡 Lesson8 Day59 2023.7.4 周二

English Learning - L3 作业打卡 Lesson8 Day59 2023.7.4 周二 引言&#x1f349;句1: I started snowboarding, then I went back to work, then I went back to school.成分划分连读爆破语调 &#x1f349;句2: And just this past February, I won two back to back World C…

具有音调控制功能的25W混合式Hi—Fi放大器

现代电子技术应用中电子管的使用虽然已经较少&#xff0c;但由于电子管有晶体管不可替代的一些优越特性&#xff0c;所以在部分领域特别是音响电路中还受到人们的亲睐。这是一款由“靓”音电子管和音响集成电路联合组成的混合放大器。该放大器由电子管作前级&#xff0c;音响专…

设计模式--------创建型模式

创建型模式 用于描述“怎样创建对象”&#xff0c;它的主要特点是“将对象的创建与使用分离”。GoF&#xff08;四人组&#xff09;书中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 1.单例设计模式 单例模式&#xff08;Singleton Pattern&#xff09…

day3 QT对话框

目录 QDialog 标准对话框&#xff08;Standard Dialogs&#xff09;&#xff1a; 内置对话框&#xff08;Built-in Dialogs&#xff09;&#xff1a; 自定义对话框&#xff08;Custom Dialogs&#xff09; 示例 myqdialog.h widget.h myqdialog.cpp widget.cpp QDialog Q…