康谋方案 | AVM合成数据仿真验证方案

news2025/4/21 20:22:15

随着自动驾驶技术的快速发展,仿真软件在开发过程中扮演着越来越重要的角色。仿真传感器与环境不仅能够加速算法验证,还能在安全可控的条件下进行复杂场景的重复测试。

本文将分享如何利用自动驾驶仿真软件配置仿真传感器与搭建仿真环境,并对脚本进行修改,优化和验证4个鱼眼相机生成AVM(Around View Monitor)合成数据的流程。通过这一过程,一同深入体验仿真软件的应用潜力!

一、流程概述

AVM是一种通过多相机实现车辆周围环境的实时监控和显示的系统,广泛应用于自动驾驶和高级驾驶辅助系统(ADAS)的环境感知中。本文基于仿真软件与脚本生成AVM图像的流程如下所示:

图1:基于aiSim构建AVM图像流程

首先,在Unreal Engine中配置标定投影参数所需的地图,并在仿真器中为车辆部署4个方向的鱼眼相机;

其次,基于相机内参进行去畸变,并记录求解投影矩阵所需的关键参考值,例如AVM画幅尺寸、参考点的相对坐标、参考区域的大小与位置、车辆与参考区域的距离等;

随后,在完成了角点提取预处理的标定图像中快速选取参考点,生成单方向的BEV视图,重复4次完成标定去畸变

后文将对每个流程进行具体描述。

二、仿真传感器与环境配置

对于AVM功能而言,通常需要配备4个及以上的大FOV相机以拍摄车辆周围的图像,在此基础上还可配备雷达以更好地获取车辆周围的障碍物信息。

图2:aiSim相机传感器障碍物真值输出

由于本文所使用仿真软件的相机传感器可以直接输出识别对象(车辆、行人等)的2D、3D边界框真值,所以只需配置4个方向的鱼眼相机即可满足整体需求:

(1)前置鱼眼相机:安装在前方车标附近,约15°俯视角;

(2)后置鱼眼相机:安装在后备箱附近,约25°俯视角;

(3)左、右侧鱼眼相机:分别安装在左右后视镜下方,约40°俯视角与相对车纵轴约100°的偏航角。

图3:环视OpenCV鱼眼相机传感器配置

除了传感器的配置,考虑到脚本是通过选取地面点,求解相机到地面的投影矩阵,并转换生成BEV视图进行组合,所以还需要构建一张特征明显、易于辨认标定效果的地图。

本文所使用的仿真软件支持在Unreal Engine中进行地图编辑与导出,并带有一定数量的3D资产库,因此可以基于一张基础室内地图,布置一定数量的正方形黑白标定板,根据需要搭建一个标定地图:

图4:基于aiSim插件的Unreal Engine地图编辑

首先,在Unreal Engine中打开项目,并进入室内合成地图;

然后,从3D资产库中选择100cm×100cm×5cm的标定板静态网格体,拖放到地图中;

随后,通过直接拖动模型上的变换工具或者修改侧边栏中的变换属性框调整标定板的位置与姿态;

进而,配置标定板的材质,以黑色、白色的交替顺序铺展标定板;

最终形成一个长方形的标定区域。

图5:编辑完成后的地图效果参考

批量铺展的过程可以拆分为对2×2的标定板组合实施横向与纵向阵列,完成后的地图如图所示,整体是一个6m×11m的矩形区域,车辆放置在中间2m×5m的矩形区域中。

三、图像处理与AVM合成验证集

如前文所述,本文使用的AVM脚本是基于车辆四周,位于相邻两个相机重叠视野的标定物,通过选取参考投影区域实现鱼眼相机到BEV的转化,以前视鱼眼相机为例:

图6:投影区域及BEV转化示意图


首先,由于是仿真传感器的标准OpenCV鱼眼相机模型,焦距、中心像素位置、畸变参数等内参均已知,可直接使用OpenCV的去畸变函数实现去畸变,如图6的(c)到(d)所示;

其次,设定图6(a)与(b)所示关键参数,确定图像上的点对应的真实世界位置,进而计算尺度:

(1)AVM视野总宽total_width = 2 × shift_width + 6 × board_size;

(2)AVM视野总长total_height = 2 × shift_height + 11 × board_size;

(3)board_size为标定板边长,此处为100,单位cm;

(4)shift_width与shift_height为视野延伸距离,单位cm;

(5)左上角投影点projection_point_0:(shift_width + 100, shift_height),以此类推右上角、左下角、右下角投影点坐标,形成投影区域;

(6)inner_height与inner_width为投影区域相对车辆的横向、纵向距离,单位cm,由此可以推算出自车所处区域;

而后,对去畸变相机图像追加Shi-Tomasi角点提取处理,并增加半自动采点的模式切换,自动选取鼠标点击像素位置周围欧式距离最小的角点,保障准确度的同时提升效率;

最后,如图6(d)选取4个角点,形成与(b)对应的参考投影区域,输出的BEV视图如图6(e)所示。

图7:环视BEV合成AVM示例

以此类推可以得到4个方向的BEV视图及对应的投影参数,结合车辆图层作为覆盖,即可生成对应传感器布置下的二维AVM合成图像,如图7所示,其中每个像素分辨率为1cm²。

图8:传感器外参优化示例

通过仿真软件,一方面可以在控制算法不变的情况下寻找出更优的传感器外参布局,另一方面也可以在控制传感器不变的情况下在多种不同场景验证,进而迭代优化AVM算法的表现。结合相机传感器自带的标注信息,后续也可以进行包括障碍物识别在内的更多功能验证。

图9:不同场景下的AVM合成数据

四、总结与展望

本文介绍了基于aiSim仿真软件生成AVM合成数据的完整流程,包括传感器与地图的配置、图像处理与BEV视图生成以及最终的AVM合成验证。

不难看出,仿真软件的高效性与灵活性保障了在安全可控的环境中快速验证算法性能的可行性,并可以通过多场景测试与参数优化改进算法,最终提升其综合表现。


我是分享自动驾驶技术的康谋

欢迎关注互动

期待与您的进一步交流

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

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

相关文章

Linux内核IPv4路由选择子系统

一、基本知识 1.具体案例:直连路由 结构fib_nh表示下一跳,包含输出网络设备、外出接口索引等信息。 有两个以太网局域网 LAN1 和 LAN2,其中 LAN1 包含子网 192.168.1.0/24,而 LAN2 包含子网 192.168.2.0/24。在这两个 LAN 之…

NWAFU 生物统计实验二 R语言版

#1 setwd(修改为你的工作路径或桌面路径) feed_types <- c("A", "B", "C") weight_gain_means <- c(36.8, 34.9, 21.3) weight_gain_sds <- c(2.4, 2.7, 6.6) weight_gain <- rnorm(3, mean weight_gain_means, sd weight_gain_sd…

Thinkphp指纹识别

识别ThinkPHP框架(指纹) 1.ioc判断 /favicon.ico 2.报错 /1 然后使用工具梭哈

【AVRCP】蓝牙AVRCP协议中的L2CAP互操作性要求深度解析

目录 一、L2CAP互操作性要求&#xff08;针对AVRCP&#xff09; 1.1 核心概念 1.2 AVRCP对L2CAP的增强需求 1.3 关键机制解析 1.4 浏览通道优化配置 1.5 实际应用场景与解决方案 二、通道类型与配置 2.1. 通道类型限制 2.2 PSM字段规范 2.3. 实现意义 3.4. 实际应用…

剑指 Offer II 111. 计算除法

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20111.%20%E8%AE%A1%E7%AE%97%E9%99%A4%E6%B3%95/README.md 剑指 Offer II 111. 计算除法 题目描述 给定一个变量对数组 equations 和一个实数值数组 values 作…

掌握 WRF/Chem 模式:突破大气环境研究技术瓶颈的关键

技术点目录 第一部分、WRF-Chem模式应用案例和理论基础第二部分、Linux环境配置及WRF-CHEM第三部分、WRF-Chem模式编译&#xff0c;排放源制作第四部分、WRF-Chem数据准备&#xff08;气象、排放、初边界条件等&#xff09;&#xff0c;案例实践第五部分、模拟结果提取、数据可…

linux性能监控的分布式集群 prometheus + grafana 监控体系搭建

prometheusgrafana分布式集群资源监控体系搭建 前言一、安装 prometheus二、在要监控的服务器上安装监听器三、prometheus服务器配置四、grafana配置大屏五、创建Linux监控看板五、监控windows服务器注意事项 前言 Prometheus 是一个开源的 ​分布式监控系统 和 ​时间序列数据…

数字化转型 2.0:AI、低代码与智能分析如何重塑企业竞争力?

引言&#xff1a;数字化转型进入2.0时代 在过去的十几年里&#xff0c;企业的数字化转型&#xff08;1.0&#xff09;主要围绕信息化和自动化展开&#xff0c;例如引入ERP、CRM等系统&#xff0c;提高办公效率&#xff0c;减少人为失误。然而&#xff0c;随着市场竞争加剧&…

基于SpringBoot的“校园招聘网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“校园招聘网站”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统整体功能图 局部E-R图 系统首页界面 系统注册…

由LAC自动建立L2TP实验

一、实验拓扑: 二、实验配置 1.LAC的配置 基础配置: [LAC]int g 0/0/0 [LAC-GigabitEthernet1/0/0]ip address 192.168.0.1 24 [LAC]int g 1/0/0 [LAC-GigabitEthernet1/0/0]ip address 10.1.1.254 24 [LAC-GigabitEthernet1/0/0]int g1/0/1 [LAC-GigabitEthernet1/0/1]ip ad…

内网渗透(CSMSF) 构建内网代理的全面指南:Cobalt Strike 与 Metasploit Framework 深度解析

目录 1. Cobalt Strike 在什么情况下会构建内网代理&#xff1f; 2. Cobalt Strike 构建内网代理的主要作用和目的是什么&#xff1f; 3. Cobalt Strike 如何构建内网代理&#xff1f;需要什么条件和参数&#xff1f; 条件 步骤 参数 4. Cobalt Strike 内网代理能获取什…

SAP FAGLL03 追加并显示描述字段

目录 1、新建一个结构2、操作FAGLPOSX结构3、新建一个BADI 1、新建一个结构 1.1、先在SE11中新建一个结构&#xff1a;ZZADD_FIELDS_FAGL&#xff0c;把我们要显示的描述字段放在这个结构中 2、操作FAGLPOSX结构 2.1、在FAGLPOSX结构中选择Append Structure&#xff0c;把我…

Linux Vim 寄存器 | 从基础分类到高级应用

注&#xff1a;本文为 “vim 寄存器” 相关文章合辑。 英文引文&#xff0c;机翻未校。 中文引文&#xff0c;略作重排。 未整理去重&#xff0c;如有内容异常&#xff0c;请看原文。 Registers 寄存器 Learning Vim registers is like learning algebra for the first ti…

Ubuntu版免翻墙搭建BatteryHistorian

摘要 昨天安装了一个翻墙版本的很不好用&#xff0c;主要是网络不稳定&#xff0c;故于是换了一个免翻墙的docker镜像。但是发现还是很难用。又安装了一个window版本的免翻墙的BatteryHistorian。明天再分享下Windows的免翻墙的BatteryHistorian步骤。 安装好Docker了就直接d…

Django Rest Framework 创建纯净版Django项目部署DRF

描述创建纯净版的Django项目和 Django Rest Framework 环境的部署 一、创建Django项目 1. 环境说明 操作系统 Windows11python版本 3.9.13Django版本 V4.2.202. 操作步骤(在Pycharm中操作) 创建Python项目drfStudy、虚拟环境 ​虚拟环境中安装 jdangopip install django==4.…

深度洞察:DeepSeek 驱动金融行业智能化转型变革

该文章为软件测评&#xff0c;不是广告&#xff01;&#xff01;&#xff01;&#xff01; 目录 一.金融行业的智能化转型浪潮​ 二.DeepSeek的核心技术剖析 1.DeepSeek 模型的金融智慧​ 2.实时联网搜索&#xff1a;把握金融市场脉搏​ 3.RAG 能力&#xff1a;铸就精准金…

面试题精选《剑指Offer》:JVM类加载机制与Spring设计哲学深度剖析-大厂必考

一、JVM类加载核心机制 &#x1f525; 问题5&#xff1a;类从编译到执行的全链路过程 完整生命周期流程图 关键技术拆解 编译阶段 查看字节码指令&#xff1a;javap -v Robot.class 常量池结构解析&#xff08;CONSTANT_Class_info等&#xff09; 类加载阶段 // 手动加载…

掌握些许 IPv6 要点,windows 远程桌面安全便利两相宜!

掌握这些要点&#xff0c;Windows 远程桌面安全便利两相宜&#xff01; 在日常办公中&#xff0c;许多人会用到 Windows 系统的远程桌面功能。但在实际使用时&#xff0c;会遇到内网计算机难以通过运营商的动态 ip 与多层 NAT 向互联网暴露端口的技术问题&#xff0c;和计算机…

【Linux进程】——进程的程序地址空间

目录 前言 1.程序地址空间 1.1区域划分 1.2程序地址空间的本质 1.3程序地址空间分配原则 2.数据寻找 2.1补充&#xff1a;进程挂起 结语 前言 在Linux系统的神秘世界里&#xff0c;进程就像是一个个小工匠&#xff0c;各自忙碌地完成着不同的任务。你是否想过&#xff…

边缘云原生操作系统的设计与思考

资料来源&#xff1a;火山引擎-开发者社区 边缘云行业现状和发展历程 从 06 年 AWS 推出 EC2 、S3 到今天已经过去了 18 年&#xff0c;云计算早已不是一个新鲜词汇&#xff0c;从当前业务来看&#xff0c;我们能看到云计算从中心到中心边缘的发展趋势&#xff0c;为什么会有 这…