康谋分享 | 基于多传感器数据的自动驾驶仿真确定性验证

目录

01 引言 

02 随机性的前因与后果

03 确定性的验证——以aiSim为例

1、传感器选型与配置

2、场景与方法

3、验证结果

04 总结


01 引言 

随着自动驾驶技术的飞速发展,仿真测试已成为替代成本高昂且充满风险的道路测试的关键环节。它能够在虚拟环境中模拟各种复杂的交通场景和极端天气,极大地加速了自动驾驶系统的开发与验证进程。然而,一个常被忽视的问题正悄然侵蚀着仿真测试的可信度——非确定性,即仿真测试过程中因核心引擎或其他因素导致的随机性

图1 aiSim多传感器融合示例

目前,许多市面上的仿真软件,尤其是基于游戏引擎开发的平台,其核心设计目标之一是高效地为玩家提供充满惊喜和变化的娱乐体验。这种内在的随机性,在游戏世界里是优点,但在严谨的汽车测试领域,却是一个致命的缺陷

想象一下在仿真测试过程中,工程师精心设置了所有参数——车辆速度、行人轨迹、天气状况、传感器配置——期望能稳定复现一个特定的危险场景。然而,每次点击“开始”,结果却不尽相同:第一次,车辆完美避让;第二次,发生了轻微碰撞;第三次,又安然无恙。这或许并非是算法时好时坏,而是仿真环境本身在“摇摆不定”。

02 随机性的前因与后果

Greg等人研究指出,基于游戏引擎的仿真环境,其随机性并非偶然,而是源于其底层架构的诸多方面:

(1)资源负载与调度:系统CPU/GPU的负载波动,会直接影响物理引擎的计算时机和顺序,导致即使输入完全相同,输出的轨迹也会产生高达数十厘米的偏差。

(2)物理引擎的“模糊”处理:为了实时渲染流畅的画面,游戏引擎在处理物体碰撞等复杂物理交互时,往往采用近似计算。这种不精确性在一次碰撞后会被急剧放大,甚至影响到场景中其他未参与碰撞的物体,造成全局性的结果污染。

(3)多线程与并行计算:为了效率,引擎会将任务分配给多个线程并行处理,但线程完成的顺序并非每次都固定,这种执行顺序的微小变化,会像蝴蝶效应一样,最终导致仿真结果的巨大差异。

这种随机性带来的问题是灾难性的:

(1)问题无法追溯:当测试中出现问题,工程师无法稳定复现它,也就无从定位和修复缺陷,极大地增加了调试成本和时间。

(2)结果失去可信度:如果仿真结果不稳定,如何相信它所提供的安全验证报告?这会给自动驾驶系统的安全性带来“伪证”,造成虚假的安全感。

(3)测试覆盖率失效:随机性使得精确控制测试用例、确保覆盖所有关键场景变得不可能。

归根结底,对于自动驾驶这种安全至上的系统,测试必须是科学、严谨且可重复的。因此,一个具备高度确定性、一致性的仿真平台,是所有有效测试的绝对前提

03 确定性的验证——以aiSim为例

为了验证一个仿真平台的确定性,最直接的方式便是确保各项参数不变的情况下进行重复仿真,对输出的仿真数据进行最直接的比较,判断是否存在差异。

例如,世界上首个获得ISO 26262 ASIL-D认证的AD/ADAS仿真测试软件aiSim,它构建了独特的仿真内核,摒弃了游戏引擎中那些为“体验”而牺牲“精确”的设计。为了验证aiSim的确定性,我们进行了一系列重复性实验。

1、传感器选型与配置

图2 aiSim传感器配置GUI

通过在GUI中拖放仿真传感器,我们在仿真车辆中添加了1个带有目标检测功能的1920×1080的前置针孔Camera、1个带有目标检测功能的前置Radar、1个带有目标检测功能的128线顶置LiDAR、1个内置IMU、1个内置GPS以及1个可以反馈自车状态的Vehicle sensor

图3 仿真传感器数据示例

2、场景与方法

图4 仿真场景示例

aiSim本身包含了数十种城市、郊区的室内、室外场景。本文以真实世界常见的“行泊一体”为例,在一个包含14辆他车的室外停车场环境(Parking_US-CA_SanJoseAlamitos)中,对主车执行了“跟车 -> 切入变道 -> 寻找车位 -> 泊车”的全套连贯动作。

我们在完全固定的软硬件环境下,针对三种典型天气进行了5轮完全独立的重复测试,每一轮测试都记录了长达1000帧的数据,以确保完整与统一。我们将每一轮测试的数据与首次测试的基准数据进行精确比对:

晴天 (Sunny):在Sunny.json配置下,模拟了日光充足的理想泊车环境。

雨天 (Rainy):切换至Rainy.json配置,引入了雨水对传感器性能的干扰。

复杂雪天 (Snowy & Broken Road):在Snowy.json的预设配置基础之上,加入了道路老化、标线磨损、路面破损、坑洼等极端退化元素,将测试环境推向了极限。

测试过程中,我们记录了全部传感器和车辆状态数据,包括:

视觉数据 (Camera):RGBA原始图像、语义分割图、目标检测图及JSON格式的2D/3D标注框。

雷达数据 (Radar & LiDAR):毫米波雷达和激光雷达的点云(LAS v1.4)、目标列表及3D标注框。

车辆自身状态 (GPS, IMU, Vehicle):高精度的定位、姿态、加速度及车辆动力学信息。

图5 仿真相机输出图像类型

我们采用均方根误差(RMSE)来量化图像、点云等原始数据的细微差异,并对JSON格式的结构化数据采用根据样本数值差异个数进行判定的统计确定性检验。

3、验证结果

Camera Sensor的RGBA原始图像、分割图像、目标检测图像均以tga格式输出,2D Bounding Box、3D Bounding Box均已json格式输出。通过比较同一环境、场景下相同帧之间的误差或差异项,验证Camera的确定性

对于tga格式文件,计算所有1000帧图像所有通道的像素均方根误差(MSE,Mean Squared Error)。在3类天气5次测试过程中,RGBA原始图像、分割图像、目标检测图像的所有通道的像素均方根误差均为0

图6 基于python脚本可视化的彩色图像、分割图像、目标检测图像均方根误差结果

对于json格式文件,比较2D与3D Bounding Box的所有Group的key与value,记录差异项个数(Number of Differences)。在3类天气5次测试过程中,Bounding Box信息(包括位置、姿态、个数、类型、id、相对速度、持续时间、像素遮挡率等)不存在差异项

图7 基于python脚本可视化的2D&3D BoundingBox差异项个数结果

Radar Sensor输出json格式的检测目标相关信息,包括距离、旋转、相对速度、id、类型等,因此与相机的Bounding Box一样,记录差异项个数(Number of Differences),结果也是一样,不存在差异项。

图8 基于python脚本可视化的Radar检测差异项个数结果

LiDAR Sensor生成的输出包括两种格式的数据:LAS格式的3D激光点云JSON格式的目标检测数据。激光点云数据包含每个点的坐标、强度、返回次数、唯一标识符(ID)等,我们比较内部的所有属性,记录差异项个数(Number of Differences);
对于以JSON格式输出的目标检测数据,与Camera类似,我们将比较所有Group的键(key)与值(value),并记录差异项个数(Number of Differences)。最终结果与前面相同,在3类天气5次测试之间均不存在差异项

需要指出的是,由于las文件和检测到的目标内部包含的GPS时间属性在aiSim中取自系统时间(UTC时间),该项不纳入差异比较范围

图9 基于python脚本可视化的LiDAR检测差异项个数结果

GPS Sensor、IMU Sensor以及用于观测仿真自车状态的Vehicle Sensor输出的均为JSON格式的信息,同样比较所有Group的键(key)与值(value),并记录差异项个数(Number of Differences)。对于3类天气5次测试的GPS、IMU、Vehicle数据信息,3类天气5次测试之间均不存在差异项。

图10 基于python脚本可视化的GPS、IMU、Vehicle Sensor结果


04 总结

在本文设计的传感器配置与场景中,aiSim的各项传感器数据在固定的参数配置下,仿真过程与仿真结果不存在任何差异(除UTC时间)。除了本文提到的传感器与场景,在其他不同环境、传感器配置下的验证中,aiSim也均表现出了卓越的确定性。

在aiSim的仿真世界里,没有偶然和随机,只有精确和必然。每一次的测试结果都真实反映了被测算法的真实能力,每一次的问题暴露都能被稳定复现和修正。

参考文献
1. On Determinism of Game Engines Used for Simulation-Based Autonomous Vehicle Verification


我是分享自动驾驶技术的康谋,欢迎关注互动~

aiSim自动驾驶仿真平台 - 端到端智驾仿真工具 | 高保真环境模拟和场景重建 | 软件在环测试 | 康谋科技https://keymotek.com/adas-simulator-aisim/

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

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

相关文章

FASTAPI+VUE3平价商贸管理系统

一、项目概述 PJMall 是一个基于 FastAPI 构建的商城管理系统后端服务,提供商品管理、订单处理、用户认证等核心功能。系统采用分层架构设计,支持高并发访问,适用于多角色用户(管理员、客户、供应商)。 核心特性 &a…

客服机器人知识库怎么搭?智能客服机器人3种方案深度对比(含零售落地案例)

一、知识库技术缺陷的权威数据 IDC 2025报告:89%企业因知识库更新延迟导致智能客服机器人解决率下降40%,传统规则引擎日均失效对话超2000次。 二、三大技术方案架构解析 1.LLM动态知识图谱方案 基于Transformer架构实时抓取政策/价格数据 知识关联度…

JavaScript 性能优化实战:减少 DOM 操作引发的重排与重绘

在前端开发中,DOM 操作是 JavaScript 性能优化的核心痛点之一。频繁的 DOM 操作会触发浏览器的 重排(Reflow) 和 重绘(Repaint),导致性能显著下降。本文将深入分析这一瓶颈,并通过实际案例展示优…

力扣 hot100 Day33

24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 //抄的 class Solution { public:ListNode* swapP…

DevExpress V25.1 版本更新,开启控件AI新时代

WinForms Controls v25.1 AI 驱动的语义搜索 我们的 WinForms 数据网格、GridLookUpEdit 和 SearchLookUpEdit 控件具有增强的搜索体验,使用户能够更快/更准确地在大型数据集中查找相关数据。与基于关键字的标准搜索不同,语义搜索利用自然语言处理 &…

【分层图 虚拟节点】 P11327 [NOISG 2022 Finals] Voting Cities|普及+

本文涉及知识点 C图论 P11327 [NOISG 2022 Finals] Voting Cities 题目描述 你所在的国家的国家主席 L o r d P o o t y \bf{Lord\ Pooty} Lord Pooty 将要退休了!他希望选择他的一个儿子作为他的继承人,出于各方面因素的考虑,他决定进行…

Web3云服务商安全性怎么选

Web3安全之锚:为何阿里云是企业级应用的首选​ 随着Web3、去中心化金融(DeFi)和数字资产的浪潮席卷全球,无数开发者和企业涌入这个充满机遇的新赛道。然而,机遇背后是同样巨大的安全挑战。从智能合约漏洞到大规模DDoS…

uniapp加上全局水印

文章目录 一、效果图二、创建watermark.js文件三、在main.js中引入四、运行 前言:uniapp页面加水印你还在傻乎乎的一个个页面加吗,今天教你一招,一步到位 一、效果图 未登录效果 登录后效果 二、创建watermark.js文件 这里的水印因为我…

thinkphp8.0七牛云直传图片

环境&#xff1a;tp8\php8.3; 服务器&#xff1a;centOS Stream 9; 场景&#xff1a;通过html页面直传七牛云服务器&#xff0c;速度更快&#xff1b; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta na…

Godot x openKylin 全国开发大赛正式启动

从2023年开始&#xff0c;Godot Hub 每年举办一次 Godot Hub Festival 开发大赛&#xff0c;现已成为国内 Godot 社区规模最大的开发比赛。本届 Godot Hub Festival 2025将与 OpenAtom openKylin 开源社区合作举办&#xff0c;定名为 Godot x openKylin 全国开发大赛&#xff0…

工控机Linux修改网口

修改Ip:sudo nmcli connection modify net1-static ipv4.addresses 192.168.200.225/24 修改dns:sudo nmcli connection modify net1-static ipv4.dns 114.114.114.114 修改网关:sudo nmcli connection modify net1-static ipv4.gateway 192.168.200.1 IP生效&#xff1a;nm…

CRMEB Pro版v3.3源码全开源+PC端+Uniapp前端+搭建教程

一.介绍 crmeb Pro版 v3.3版本正式发布&#xff0c;全新UI重磅上线&#xff0c;焕然一新&#xff0c;不负期待&#xff01;页面DIY设计功能全面升级&#xff0c;组件更丰富&#xff0c;样式设计更全面&#xff1b;移动端商家管理&#xff0c;让商城管理更便捷&#xff0c;还从…

【python】OOP:Object-Oriented Programming

文章目录 1. 面向对象编程的核心概念1.1 类与对象的关系1.2 封装&#xff08;Encapsulation&#xff09; 2. 继承与多态2.1 继承机制2.2 多重继承2.3 多态性 3. 特殊方法与运算符重载4. 抽象类与接口4.1 抽象基类 5. 组合与聚合6. 属性管理6.1 使用property装饰器6.2 描述符协议…

蒙特卡洛方法:随机抽样的艺术与科学

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 蒙特卡洛算法&#xff08;Monte Carlo Method&#xff09;是一类基于随…

Linux基础 -- UBI(**Unsorted Block Images**)

UBI&#xff08;Unsorted Block Images&#xff09;是 Linux 中为原始 NAND Flash 设计的一种 逻辑卷管理层&#xff0c;其核心作用是&#xff1a;在 NAND 闪存设备上提供 坏块管理、擦写均衡&#xff08;wear leveling&#xff09;和逻辑到物理地址映射等机制&#xff0c;为上…

线程相关函数

思维导图 1. 创建一个分支线程&#xff0c;在主线程中拷贝文件的前一部分&#xff0c;主线程拷贝后一部分。 2.解读代码 info1 from child process_1 info1 from parent process3.解读代码&#xff0c;-打印多少次 14次

SeaTunnel 社区月报(5-6 月):全新功能上线、Bug 大扫除、Merge 之星是谁?

在 5 月和 6 月&#xff0c;SeaTunnel 社区迎来了一轮密集更新&#xff1a;2.3.11 正式发布&#xff0c;新增对 Databend、Elasticsearch 向量、HTTP 批量写入、ClickHouse 多表写入等多个连接器能力&#xff0c;全面提升了数据同步灵活性。同时&#xff0c;近 100 个修复与优化…

数学建模_非线性规划

matlab求解调用示例 第二道例题建模 matlab求解 1.matlab只能处理min问题&#xff1a; max两边取负号变成min 2. > > >号变成 < < <&#xff1a;两边取负号 调用示例 第二道例题建模 目标函数取平方而不取绝对值 后面省略

【BurpSuite 2025最新版插件开发】基础篇7:数据的持久化存储

1 前言 历史章节&#xff1a; 【BurpSuite 2025最新版插件开发】基础篇1&#xff1a;环境搭建 【BurpSuite 2025最新版插件开发】基础篇2&#xff1a;插件生命周期与核心接口 【BurpSuite 2025最新版插件开发】基础篇3&#xff1a;请求拦截和修改简单示例 【BurpSuite 202…

GPT-4 Turbo集成智能工作流,开启自动化研究与知识管理新篇章!

目录 一、系统架构设计二、核心模块实现1. 智能数据采集引擎2. 自动化研究引擎3. 知识管理系统 三、智能工作流引擎四、关键技术实现1. 动态工作流引擎2. 知识图谱构建 五、企业级部署方案1. 云原生架构2. Docker部署脚本 六、应用案例&#xff1a;药物研发项目七、性能优化策略…