面向高速公路车辆切入场景的自动驾驶测试用例生成方法
1 前言
自动驾驶汽车为解决“交通事故、交通拥堵、环境污染、能源短缺”等问题提供了新的途径[1]。科学完善的测试验证评价体系对提高自动驾驶汽车的研发效率、健全相关法律法规、推进智能交通发展至关重要[2]。自2009年起,谷歌自动驾驶汽车已经进行了超过560万km公共道路测试和数十亿公里虚拟测试[3]。UBER、沃尔沃、特斯拉等企业也进行了大量实际道路自动驾驶测试[4]。然而,以UBER自动驾驶测试车辆事故为代表的多起事故表明,在自动驾驶技术成熟之前,实际道路测试具有较高的安全风险和社会风险。
此外,与传统汽车的人-车二元独立测试不同,自动驾驶汽车是人-车-路-环境强耦合系统,传统的道路场地测试已经无法满足自动驾驶汽车的测试需求。基于场景的虚拟测试技术试验场景配置灵活、效率高、重复性强、过程安全、成本低,可实现自动测试和加速测试,同时,虚拟测试系统能够模拟实际车辆测试中危险或难以实现的极端场景[4-5],大幅降低测试的难度和风险,减少工作量。因此,基于场景的虚拟测试已成为自动驾驶汽车测试评价不可或缺的重要环节。研究人员在测试场景构建方面做出了大量努力[6-7],Xia等利用层次分析法选择测试场景中的重要因素,通过组合测试法构建虚拟测试场景[8-9],Zofka等利用多种传感器采集数据,提出一种在虚拟环境中利用真实交通数据构建高风险测试场景的方法[10]。
现阶段的自动驾驶领域,“场景”还没有明确和统一的定义,同时,现有研究集中于自动驾驶测试场景的分析与构建,缺少对测试用例设计和生成的研究。因此,本文提出一种测试场景的定义,同时提出基于实际交通场景的测试用例设计和描述方法,并通过分析高速公路车辆切入场景进行验证,运用highD数据集实现测试用例设计,并利用蒙特卡洛方法(Monte Carol Method)生成测试用例。
2 自动驾驶测试场景及用例
2.1 测试场景概念
在现有针对自动驾驶汽车测试场景的研究中存在不同的场景定义。依据场景的分类,Elias Rocklage等提出“场景为一段道路上观测车辆自身与其他静态或动态物体的组合”[11]。考虑时间延续性,Gelder将场景定义为一段时间内观测车辆自身运动和所在静态与动态环境的组合,突出场景连续性[12]。Hala Elrofai等提出“场景是在一个特定时间范围内,测试车辆周围动态环境的持续变化,包括测试车辆在该环境中的行为”[13]。
在总结现有场景定义的基础上,本文提出一种适用于测试场景构建的场景定义。对于自动驾驶汽车测试而言,测试场景是测试对象在交通环境中与其他相关交通参与者交互实现行驶意图的过程。其中,行驶意图是指测试对象完成自身运动状态改变,例如完成一次自由变道或在交通路口转向。交通环境是测试对象运行的道路、气象、光照等静态环境。交通参与者是指场景内对测试对象运动状态有影响的场景元素,如与测试车辆行驶路线有冲突的车辆、行人等,在场景的观测与分析中,对测试对象运动没有影响的元素可以忽略。
2.2 测试用例的定义
在自动驾驶汽车测试中,场景是对真实交通环境中一类运行过程的抽象描述,测试用例是相应测试场景的可执行实例。一个完整的测试用例描述包含测试用例所属测试场景描述和测试用例要素信息。其中,测试场景描述提供了测试环境和测试过程的抽象描述,测试用例要素信息提供了测试环境中各要素的取值及测试中交通参与者的起始状态、状态变化过程和预期运行结果。
本文以高速公路环境下车辆切入为例,描述测试用例。由于高速公路环境交通场景相对单一,以平直道路上相邻车道车辆切入为测试场景。被测车辆在车道2中循线行驶,目标车辆在被测车辆相邻车道1中保持平稳直线行驶。在切入开始时刻T 0,目标车辆位于被测车辆侧前方,开始向车道2切入。在T 1时刻,目标车俩切入车道2并行驶至T 2时刻。在切入过程中,两车存在发生碰撞的风险。
2.3 测试用例构建
真实交通数据中蕴含多种交通场景。基于真实交通场景生成该场景下测试用例的方法如图2所示。真实交通场景可分解为静态交通环境和交通参与者的运动过程。其中静态交通环境涵盖道路状态、路侧设施、气象及光照条件等影响车辆运行的环境条件,从中可以提取出测试场景中的静态环境元素。交通参与者的运动过程是被观察对象在静态环境中与其他交通参与者交互运动并实现自身运动意图的过程。交通参与者的运动过程是测试场景的核心,为生成测试用例,需要对运动过程进行建模并分析真实场景的大量实例,估计模型的描述参数分布,从而实现由真实场景向标准测试场景的转变。在此基础上,针对不同的测试对象、测试方法和测试内容,灵活赋予描述参数不同的取值,组合不同的静态元素即可生成相应的测试用例,以适应不同测试需求。
3 测试用例构建关键技术
3.1 基元场景提取
基元场景提取是从实际交通场景中分离出基元场景并确定其描述向量的过程。通过基元场景提取,实际交通场景被分解为独立的基元并实现模型化和参数化。
本文采用参数估计法实现场景模型描述变量的分布规律估计。参数估计法利用先验知识假定数据总体服从某一分布,再利用样本数据求解分布的未知参数,通过对比不同的估计结果确定数据总体服从的分布。本文中采用高斯混合模型(Gaussian Mixture Model,GMM)对场景模型描述变量的分布进行估计[14]。
3.2 基元场景生成
根据基元场景描述模型及其描述变量,可以重新生成测试基元场景。通过基元场景的生成,可以获得远多于实际采集且符合测试要求的基元场景,满足自动驾驶测试对复杂交通运动过程的覆盖性要求。
真实交通运行过程通常具有高维性和复杂性的特点,在测试用例生成过程中,若对其所属场景数学模型进行简化假设,可能会导致近似结果与实际存在较大的偏差。蒙特卡洛方法能够直接模拟实际复杂系统,可以有效解决复杂系统简化导致的结果失真问题,且误差与问题维数无关,是解决复杂高维问题的有效方法[16]。本文依据模型描述变量的分布,采用蒙特卡洛方法进行随机取样生成基元场景。
3.3 测试用例的组合
测试用例的构建是将提取出的基元场景根据测试任务确定场景要素的参数,按照一定规则重新组合的过程。针对不同的测试对象、测试方法和测试内容,可以灵活地控制测试用例的基元数量和场景要素的参数,构建出相应的测试用例,从而适应不同的测试需求。
如图3所示,首先选取组成测试场景所需的基元场景形成功能测试场景。在此基础上确定基元场景描述变量及其取值区间,为基元场景选择确定范围,形成逻辑测试场景。最后,根据逻辑场景集中选择基元场景,确定各描述变量的取值,组合生成具体测试用例。为了提高测试效率和降低测试成本,生成测试场景适宜采用强化测试思想,即选择基元场景组合生成高风险测试场景。
相关文章:
面向高速公路车辆切入场景的自动驾驶测试用例生成方法
1 前言 自动驾驶汽车为解决“交通事故、交通拥堵、环境污染、能源短缺”等问题提供了新的途径[1]。科学完善的测试验证评价体系对提高自动驾驶汽车的研发效率、健全相关法律法规、推进智能交通发展至关重要[2]。自2009年起,谷歌自动驾驶汽车已经进行了超过560万km公…...
Java:SpringBoot整合SSE(Server-Sent Events)实现后端主动向前端推送数据
SpringBoot整合SSE(Server-Sent Events)可以实现后端主动向前端推送数据 目录 核心代码完整代码参考文章 核心代码 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</a…...
cmd命令行设置 windows 设置环境变量
cmd命令行设置 windows 设置环境变量 参考 51CTO博客 设置用户级别的环境变量 :: 设置新参数 JAVA_HOME1 setx JAVA_HOME1 "c:\test"; exit; echo "%JAVA_HOME1%";:: 追加参数内容 JAVA_HOME1 setx JAVA_HOME1 "%JAVA_HOME1%;c:\test2\;"; exi…...

基于负载均衡的在线OJ实战项目
前言: 该篇讲述了实现基于负载均衡式的在线oj,即类似在线编程做题网站一样,文章尽可能详细讲述细节即实现,便于大家了解学习。 文章将采用单篇不分段形式(ps:切着麻烦),附图文&#…...

Opencv手工选择图片区域去水印
QT 插件化图像算法研究平台的功能在持续完善,补充了一个人工选择图片区域的功能。 其中,图片选择功能主要代码如下: QRect GLImageWidget::getSeleted() {QRect ajust(0,0,0,0);if(image.isNull() || !hasSelection)return ajust;double w1…...

《向量数据库》——向量数据库跟大模型是什么关系呢?
在人工智能领域,最近的一个重要趋势是大模型的兴起。在大模型的世界里,我们面临着处理和管理大规模向量数据的挑战,而向量数据库,就是为了满足这个需求而不断发展着。 那么,向量数据库跟大模型是什么关系呢?…...

通过这 5 项 ChatGPT 创新增强您的见解
为什么绝大多数的人还不会使用chatGPT来提高工作效能?根本原因就在还不会循序渐进的发问与chatGPT互动。本文总结了5个独特的chatGPT提示,可以帮助您更好地与Chat GPT进行交流,以获得更清晰的信息、额外的信息和见解。 澄清假设和限制 用5种提…...

W5500-EVB-PICO主动PING主机IP检测连通性(十)
前言 上一章我们用W5500_EVB_PICO 开发板做UDP组播数据回环测试,那么本章我们进行W5500_EVB_PICO Ping的测试。 什么是PING? Ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 。Ping是…...

解释基本的3D理论
推荐:使用 NSDT场景编辑器 快速搭建3D应用场景 坐标系 3D 本质上是关于 3D 空间中形状的表示,并使用坐标系来计算它们的位置。 WebGL 使用右侧坐标系 — 轴指向右侧,轴指向上方,轴指向屏幕外,如上图所示。xyz 对象 …...
C# 练习题
26. Enum(枚举) /*枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。 */using System;public class EnumTest {enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };static…...
解决Linux报错:Swap file “xxxxxx.swp“ already exists
出现问题 Swap file “.models_conf.yaml.swp” already exists! 在 Linux 下 vim 编辑过程中,由于某种原因异常退出正在编辑的文件,再次编辑该文件时,会出现如下提示: 一个文件出现了带有.swp的副本文件的时候,会出现…...

基于飞桨图学习框架的空间异配性感知图神经网络
本期文章将为大家分享飞桨社区开发者肖淙曦、周景博发表于数据挖掘顶会KDD2023的论文《Spatial Heterophily Aware Graph Neural Networks》。 肖淙曦 肖淙曦,百度研究院商业智能实验室研究实习生,中国科学技术大学在读博士生,主要从事时空…...
Springboot整合JWT
1. 应用场景 前后端分离项目保持登录状态。 问题:ajax请求如何跨域,将无法携带jsessionid,这样会导致服务器端的session不可用。如何解决? 后端: 登录接口在验证过用户密码后,将用户的身份信息转换成…...

如何使用Python和正则表达式处理XML表单数据
在日常的Web开发中,处理表单数据是一个常见的任务。而XML是一种常用的数据格式,用于在不同的系统之间传递和存储数据。本文通过阐述一个技术问题并给出解答的方式,介绍如何使用Python和正则表达式处理XML表单数据。我们将探讨整体设计、编写思…...
LA@方阵相似@相似矩阵的性质
文章目录 相似矩阵引言相似矩阵定义相似变换相似变换矩阵相似矩阵的矩阵多项式和特征值相同推论:与对角阵相似的矩阵性质定理 相似矩阵性质相似矩阵的乘方性质相似矩阵和矩阵多项式相似对角阵 对角阵多项式的展开小结 相似矩阵 引言 对角阵是矩阵中最简单的一类矩阵 对角阵相…...

ZLMediaKit 各种推拉流
1 用ffmpeg 推音视频流 ./ffmpeg -f dshow -i video"HP Wide Vision HD Camera" -f dshow -i audio"麦克风阵列 (Realtek High Definition Audio)" -rtbufsize 100M -max_delay 100 -pix_fmt yuv420p -tune zerolatency -c:v libx264 -crf 18 -s 1280x720…...

行业追踪,2023-08-29
自动复盘 2023-08-29 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...
【简单】228. 汇总区间
原题链接:https://leetcode.cn/problems/summary-ranges/description/ 228. 汇总区间 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖&…...

Mysql高级语句
高级语句 1.按关键字排序 SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC ASC 是按照升序进行排序的,是默认的排序方式,即 ASC 可以省略。 SELECT 语句中如果没有指定具体的排序方式,则默认按 ASC…...

Python中 re.compile 函数的使用
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 以下介绍在python的re模块中怎样应用正则表达式 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...