当前位置: 首页 > news >正文

面向高速公路车辆切入场景的自动驾驶测试用例生成方法

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&#xff08;Server-Sent Events&#xff09;可以实现后端主动向前端推送数据 目录 核心代码完整代码参考文章 核心代码 依赖 <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实战项目

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

Opencv手工选择图片区域去水印

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

《向量数据库》——向量数据库跟大模型是什么关系呢?

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

通过这 5 项 ChatGPT 创新增强您的见解

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

W5500-EVB-PICO主动PING主机IP检测连通性(十)

前言 上一章我们用W5500_EVB_PICO 开发板做UDP组播数据回环测试&#xff0c;那么本章我们进行W5500_EVB_PICO Ping的测试。 什么是PING&#xff1f; Ping &#xff08;Packet Internet Groper&#xff09;是一种因特网包探索器&#xff0c;用于测试网络连接量的程序 。Ping是…...

解释基本的3D理论

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 坐标系 3D 本质上是关于 3D 空间中形状的表示&#xff0c;并使用坐标系来计算它们的位置。 WebGL 使用右侧坐标系 — 轴指向右侧&#xff0c;轴指向上方&#xff0c;轴指向屏幕外&#xff0c;如上图所示。xyz 对象 …...

C# 练习题

26. Enum(枚举) /*枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值类型。换句话说&#xff0c;枚举包含自己的值&#xff0c;且不能继承或传递继承。 */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 编辑过程中&#xff0c;由于某种原因异常退出正在编辑的文件&#xff0c;再次编辑该文件时&#xff0c;会出现如下提示&#xff1a; 一个文件出现了带有.swp的副本文件的时候&#xff0c;会出现…...

基于飞桨图学习框架的空间异配性感知图神经网络

本期文章将为大家分享飞桨社区开发者肖淙曦、周景博发表于数据挖掘顶会KDD2023的论文《Spatial Heterophily Aware Graph Neural Networks》。 肖淙曦 肖淙曦&#xff0c;百度研究院商业智能实验室研究实习生&#xff0c;中国科学技术大学在读博士生&#xff0c;主要从事时空…...

Springboot整合JWT

1. 应用场景 前后端分离项目保持登录状态。 问题&#xff1a;ajax请求如何跨域&#xff0c;将无法携带jsessionid&#xff0c;这样会导致服务器端的session不可用。如何解决&#xff1f; 后端&#xff1a; 登录接口在验证过用户密码后&#xff0c;将用户的身份信息转换成…...

如何使用Python和正则表达式处理XML表单数据

在日常的Web开发中&#xff0c;处理表单数据是一个常见的任务。而XML是一种常用的数据格式&#xff0c;用于在不同的系统之间传递和存储数据。本文通过阐述一个技术问题并给出解答的方式&#xff0c;介绍如何使用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 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…...

【简单】228. 汇总区间

原题链接&#xff1a;https://leetcode.cn/problems/summary-ranges/description/ 228. 汇总区间 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&…...

Mysql高级语句

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

Python中 re.compile 函数的使用

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

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...