基于matlab开发和评估停车场场景中的视觉定位算法(附源码)

news2024/10/6 15:22:52

一、前言

本示例展示了如何使用虚幻引擎模拟环境中的合成图像数据开发视觉定位系统。

获取基本事实以评估定位算法在不同条件下的性能是一项具有挑战性的任务。与使用高精度惯性导航系统或差分GPS等更昂贵的方法相比,不同场景下的虚拟仿真是一种经济高效的方法来获得地面真相。使用仿真可以在各种场景和传感器配置下进行测试。它还支持快速算法开发,并提供精确的地面事实。

本示例使用虚幻引擎模拟环境来开发和评估停车场场景中的视觉定位算法。

二、概述

视觉定位是估计捕获图像相对于已知场景的视觉表示的相机姿势的过程。它是增强现实、机器人和自动驾驶等应用的关键技术。视觉本地化的管道包括以下内容:

  • 地图加载:加载预构建的地图 3-D 地图,其中包含世界点位置以及地图点与关键帧之间的 3-D 到 2-D 对应关系。此外。对于每个关键帧,加载与 3-D 地图点对应的要素描述符。

  • 全局初始化:从第一个图像帧中提取要素,并将其与对应于所有 3-D 地图点的要素进行匹配。获得 3D 到 2-D 对应关系后,通过求解透视点 (PnP) 问题来估计世界坐标中第一帧的相机位姿。使用仅运动束调整来优化姿势。与第一帧共享最可重视的三维地图点的关键帧被标识为参考关键帧。

  • 跟踪: 定位第一帧后,对于每个新帧,将新帧中的要素与参考关键帧中具有已知三维世界点的要素进行匹配。使用与全局初始化步骤中相同的方法估计和优化相机姿势。通过跟踪与附近关键帧关联的要素,可以进一步优化相机姿势。

三、创建场景

引导车辆进入停车位是一项具有挑战性的操作,依赖于准确的定位。该模型模拟了使用停车场场景中的视觉定位系统。

  • 模拟 3D 场景配置(自动驾驶工具箱)模块设置大型停车场场景。子系统将停放的汽车添加到停车场。

  • 具有地面跟随功能的模拟3D车辆(自动驾驶工具箱)块控制自我车辆的运动。

  • 模拟3D摄像头(自动驾驶工具箱)模块对固定在车顶中心的单眼摄像头进行建模。您可以使用相机校准器应用来估计要模拟的实际相机的内部结构。

  • MATLAB 系统模块实现了视觉定位算法。相对于地图的初始相机姿势是使用函数估计的。随后的相机姿势使用函数估计,并使用函数进行优化。此块还提供预构建地图中估计相机轨迹的可视化。您可以在块对话框中指定预构建的地图数据和照相机内部参数。

四、加载地图数据

预构建的地图数据是使用使用虚幻引擎模拟开发视觉SLAM算法(自动驾驶工具箱)示例中的立体摄像头生成的。数据由三个对象组成,这些对象通常用于管理可视 SLAM 的图像和地图数据:

  • vSetKeyFrame:一个图像视图集对象,用于存储关键帧的相机姿势以及 中每个三维地图点的关联特征点。mapPointSet

  • mapPointSet:一个世界点对象,用于存储 3-D 地图点位置以及关键帧中 3-D 点和 2-D 特征点之间的对应关系。三维地图点提供环境的稀疏表示。

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

你可以按照为虚幻引擎模拟选择航点(自动驾驶工具箱),选择一系列航点,并为飞行器生成参考轨迹。此示例使用记录的参考轨迹。

六、运行模拟

运行模拟并在预构建的地图中可视化估计的相机轨迹。白点表示当前帧中追踪的三维地图点。您可以将估计的轨迹与模拟 3D 摄像机模块提供的地面实况进行比较,以评估定位精度。

七、结论

通过此设置,您可以快速迭代不同的场景、传感器配置或参考轨迹,并在进入实际测试之前优化视觉定位算法。

八、程序

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

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

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

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

相关文章

数字化时代,到底如何认识商业智能BI?

数字化时代,商业智能BI对于企业的落地应用有着巨大价值,逐渐成为了现代企业信息化、数字化转型中的基础建设。 我曾经看到有人在讨论过商业智能BI的部署对于企业是否有实际意义,现在市场的数据已经证明商业智能BI在商业世界中,在…

使用Docker安装RabbitMQ并实现入门案例“Hello World”

RabbitMQ官方文档:RabbitMQ Tutorials — RabbitMQ 一、RabbitMQ安装(Linux下) 你可以选择原始的方式安装配置,也可以使用docker进行安装,方便快捷! 1. 安装docker 没有docker的先安装一下docker&#x…

谷歌和edge浏览器升级到94及以上版本后反复提示安装pageoffice客户端

原因:Chrome开发团队以网络安全为由,强推ssl证书,希望所有部署在公网的网站,全部改用https访问,所以最新的谷歌和edge升级到94版本后对公网上的http请求下的非同域的http请求进行了拦截,于是就出现了目前遇…

一分钟告诉你国内和国外的ai绘画软件哪个好

前几天,我在一次聚会上偶然听到朋友们谈论起创作ai绘画的问题,大家都很热衷于用国内的ai绘画软件来生成自己喜欢的艺术作品,但又不知道国内和国外的ai绘画软件哪个好。正当我们陷入无尽的思考中时,其中一位朋友突然站出来说&#…

【计算机网络】1.5——计算机网络的体系结构

计算机网络的体系结构 概述 计算机网络的体系结构是计算机网络及其构建所应完成功能的精确定义 考题 不属于网络体系结构所描述的内容的是 A、网络的层次 B、每层使用的协议 C、协议的内部实现细节 D、每层必须完成的功能 这些功能的「实现细节」,是遵守这种体系…

SPEC CPU 2017 Ubuntu 20.04 LTS cpu2017-1_0_5.iso 安装、测试 单核成绩 笔记

环境 $ gcc -v Using built-in specs. COLLECT_GCCgcc COLLECT_LTO_WRAPPER/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper OFFLOAD_TARGET_NAMESnvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pk…

vue3中的computed和watch

一、computed 1. vue2和vue3中计算属性用法对比 Vue2中的计算属性 Vue2中的计算属性是通过在Vue实例的computed选项中定义函数来创建的。计算属性会根据依赖的响应式属性进行缓存,只有当依赖的属性发生变化时,计算属性才会重新求值。 举个例子&#x…

【环境配置】Conda报错 requests.exceptions.HTTPError

问题&#xff1a; conda 创建新的虚拟环境时报错 Collecting package metadata (current_repodata.json): done Solving environment: done# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<…

OpenCVForUnity(二)基本图像容器Mat

这里写目录标题 前言Mat指针引用说明存储的方式如何创建一个Mat对像 前言 今天继续学习OpenCV的基本单位Mat. 学计算机的同学都知道在计算机中,你所看到的一切其都是数据的呈现.期最底层的本质皆是0和1的构成的.当然图片,视频等等也不例外.我们用相机,扫描仪核磁共振成像等方式…

OpenAI深夜放大招,GPT4 API全面开放并弃用一系列旧模型

GPT-4 API 现已向所有付费 OpenAI API 客户开放。GPT-3.5 Turbo、DALLE 和 Whisper API 现已普遍可用&#xff0c;我们宣布了一些旧型号的弃用计划&#xff0c;这些型号将于 2024 年初退役。 ✅ GPT4 API面向付费用户开放&#xff0c;不需要再额外申请,并且具有8K上下文&#…

bash文件输入到txt文件中

bash test_bct.sh >> test.txt结果如下

WeeChat 4.0.0 正式发布

导读WeeChat (Wee Enhanced Environment for Chat) 是一款自由开源的轻量级 IRC 客户端&#xff0c;具有高度的可定制特性&#xff0c;并且可以通过脚本进行扩展。 WeeChat 支持大多数的平台和操作系统&#xff0c;例如 Linux、BSD、macOS、Debian GNU/Hurd、HP-UX、Solaris、…

全国产化适配低代码平台,政企数字化的不二选择

编者按&#xff1a;在国家政策及战略方向的指导下&#xff0c;信创产业已成为奠定中国未来发展的重要数字基础&#xff0c;而国产化则可以解决核心技术关键被“卡脖子”的问题。另一方面&#xff0c;低代码平台能够为企业加速交付业务应用&#xff0c;降低运营成本&#xff0c;…

插入排序(思路+代码)

变量&#xff1a; index &#xff1a;代表待插入数的前一个数的下标&#xff0c;依次往回找&#xff0c;找到找到结果。 indexvalue&#xff1a;代表待插入元素的值&#xff0c;找到位置之后往index1的位置插入元素 代码&#xff1a; import java.util.Arrays;public class …

【库表操作】

一、数据库Market中创建表customers 1、创建数据库 #创建数据库 mysql> create database Market; mysql> use Market;2、创建数据表 #创建数据表 mysql> create table customers(-> c_num int(11) primary key auto_increment,-> c_name varchar(50),-> c_…

iOS-配置Universal Links通用链接

1、开启Associated Domains服务 登录苹果开发者网站&#xff0c;在Certificates, Identifiers & Profiles页面左侧选择Identifiers&#xff0c;右侧选择对应的App ID&#xff0c;点击进入配置详情页&#xff0c;开启Associated Domains服务&#xff1b; 2、更新Profile文件…

【动手学习深度学习--逐行代码解析合集】09权重衰减

【动手学习深度学习】逐行代码解析合集 09权重衰减 视频链接&#xff1a;动手学习深度学习–权重衰减 课程主页&#xff1a;https://courses.d2l.ai/zh-v2/ 教材&#xff1a;https://zh-v2.d2l.ai/ 0、准备工作 import matplotlib # 注意这个也要import一次 import matplotli…

Wordpress的mysql迁库遇到问题

在我们迁移库的时候经常会出现如下问题&#xff1a; 5.7日期默认0000-00-00 00:00:00 设置错误。 MySQL默认设置中不支持日期datetime格式下的0000-00-00 00:00:00。 解决方法如下&#xff1a; select sql_mode 来查看对应内容 ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO…

vue打包后,生成的dist文件出现浏览器缓存问题——技能提升

最近同事问我&#xff0c;打包后的项目放在服务器上后&#xff0c;在终端打开时&#xff0c;必须清除浏览器缓存也就是ctrlF5才可以。 我打包后查看dist/index.html文件 发现没有css和js文件都有不同版本号的标识&#xff0c;按道理来说&#xff0c;是不会出现这个缓存的问题…

在Chrome谷歌浏览器中执行JavaScript的方法

在Chrome谷歌浏览器中如何执行JavaScript&#xff1f;在Chrome 浏览器中可以通过按下 F12 按钮或者右击页面&#xff0c;选择"检查"来开启开发者工具。 也可以在右上角菜单栏选择 "更多工具"》"开发者工具" 来开启&#xff1a; 1、Console 窗口调…