CN117529711A - 自主车辆测试支持工具 - Google Patents
自主车辆测试支持工具 Download PDFInfo
- Publication number
- CN117529711A CN117529711A CN202280041274.8A CN202280041274A CN117529711A CN 117529711 A CN117529711 A CN 117529711A CN 202280041274 A CN202280041274 A CN 202280041274A CN 117529711 A CN117529711 A CN 117529711A
- Authority
- CN
- China
- Prior art keywords
- perceived
- error
- computer system
- ground truth
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 152
- 230000008447 perception Effects 0.000 claims abstract description 101
- 238000000034 method Methods 0.000 claims abstract description 53
- 238000009877 rendering Methods 0.000 claims abstract description 26
- 230000000007 visual effect Effects 0.000 claims abstract description 19
- 230000008569 process Effects 0.000 claims abstract description 15
- 230000033001 locomotion Effects 0.000 claims description 30
- 230000003068 static effect Effects 0.000 claims description 21
- 238000001914 filtration Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims description 2
- 230000001364 causal effect Effects 0.000 abstract description 9
- 238000001514 detection method Methods 0.000 description 77
- 238000004088 simulation Methods 0.000 description 59
- 238000011156 evaluation Methods 0.000 description 39
- 230000006399 behavior Effects 0.000 description 31
- 230000006870 function Effects 0.000 description 20
- 230000000875 corresponding effect Effects 0.000 description 18
- 238000004458 analytical method Methods 0.000 description 14
- 239000003795 chemical substances by application Substances 0.000 description 14
- 230000008859 change Effects 0.000 description 13
- 238000012800 visualization Methods 0.000 description 13
- 230000001133 acceleration Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000002123 temporal effect Effects 0.000 description 9
- 230000007613 environmental effect Effects 0.000 description 8
- 239000000284 extract Substances 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 230000036461 convulsion Effects 0.000 description 7
- 230000001953 sensory effect Effects 0.000 description 7
- 238000000605 extraction Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000004913 activation Effects 0.000 description 5
- 238000003384 imaging method Methods 0.000 description 5
- 239000000463 material Substances 0.000 description 5
- 238000000848 angular dependent Auger electron spectroscopy Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000007670 refining Methods 0.000 description 4
- 102100034112 Alkyldihydroxyacetonephosphate synthase, peroxisomal Human genes 0.000 description 3
- 101000799143 Homo sapiens Alkyldihydroxyacetonephosphate synthase, peroxisomal Proteins 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 235000004522 Pentaglottis sempervirens Nutrition 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 2
- 230000009849 deactivation Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- 230000004308 accommodation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000004397 blinking Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000003313 weakening effect Effects 0.000 description 1
Landscapes
- Traffic Control Systems (AREA)
Abstract
一种用于测试部署在配备传感器的车辆中的实时感知系统的计算机系统,该计算机系统包括:输入端,配置为接收供配备传感器的车辆执行的现实世界驾驶运行的数据,包括传感器数据时间序列以及由感知系统从中提取的至少一个相关运行时感知输出时间序列;渲染组件,配置为渲染包括感知误差时间线的GUI,该感知误差时间线具有运行的每个时间步发生的任何感知误差的视觉指示;地面实况流水线,配置为处理传感器数据和运行时感知输出中至少一项,其中通过对此应用非实时和/或非因果感知算法来提取地面实况感知输出;感知预言机,配置为将运行时感知输出与地面实况感知输出进行比较,并标识所发生的任何感知误差以便生成感知误差时间线。
Description
技术领域
本公开涉及用于现实或模拟场景中评估自主车辆系统和轨迹规划器性能的工具和方法以及用于实施该方法的计算机程序和系统。示例应用包括自主驾驶系统(Autonomous Driving System﹣ADS)和高级驾驶辅助系统(Advanced Driver AssistSystem﹣ADAS)性能测试。
背景技术
自主车辆领域取得了重大而迅速的发展。自主车辆(Autonomous Vehicle﹣AV)是一种配备传感器和控制系统的车辆,能够在无人控制其行为的情况下操作。自主车辆配备支持感知其物理环境的传感器,此类传感器例如包括摄像头、雷达和激光雷达。自主车辆配备适当编程的计算机,能够处理从传感器接收的数据,并根据传感器感知的环境做出安全且可预测的决策。自主车辆可以是全自主型(因设计为至少在某些情况下无人监督或干预地进行操作)或半自主型。半自主系统需要不同程度的人为监督和干预,此类系统包括高级驾驶辅助系统和三级自主驾驶系统。测试特定自主车辆或某类自主车辆上传感器和控制系统的行为涉及不同方面。
“五级”车辆是一种在任何情况下都能全自主操作的车辆,因为始终保证满足某种最低安全级别。这种车辆根本不需要手动控制(方向盘、踏板等)。
相比之下,三级和四级车辆仅在某些规定情况下才能全自主操作(例如在地理围栏区域内)。三级车辆必须具备自主处理任何需要立即响应的情况(如紧急制动);然而,情况变化可能会引发“过渡需求”,要求驾驶员在有限的时间内接管车辆控制权。四级车辆也有类似限制;然而,如果驾驶员未在要求的时间帧内做出响应,四级车辆还须能够自主实施“最小风险策略(Minimum Risk Maneuver﹣MRM)”,即采取一定适当行动使车辆达到安全状态(例如减速停车)。二级车辆要求驾驶员做好随时干预的准备,如果自主驾驶系统无法随时做出适当响应,则驾驶员有责任进行干预。对于二级自动化,驾驶员有责任确定何时需要干预;对于三级和四级自动化,此责任转移到车辆自主系统,车辆必须在需要干预时提醒驾驶员。
随着自主水平的提高以及更多的责任从人转移到机器,安全问题日益严峻。在自主驾驶中,保证安全的重要性广受认可。保证安全并不一定意味着零事故,而是意味着保证规定情况下达到某种最低安全级别。人们普遍认为,自主驾驶的最低安全级别必须远超人类驾驶员的安全级别。
根据Shalev-Shwartz等人所著“On a Formal Model of Safe and ScalableSelf-driving Cars(关于安全可扩展自驾汽车的形式模型)”(2017),arXiv:1708.06374(RSS论文),其全部内容通过引用归并本文,评估人类驾驶会造成每小时发生10-6起严重事故。假设自主驾驶系统需要将其降低至少三个数量级,RSS论文总结到最低安全级别需要保证每小时严重事故低至10-9起,并指出每次要更改AV系统的软件或硬件时,纯靠数据驾驶的方法都需要收集海量驾驶数据。
RSS论文提供了一种基于模型的方法来保证安全性。基于规则的责任敏感安全(Responsibility-Sensitive Safety﹣RSS)模型是通过形式化少量“常识”驾驶规则来构建:
1.切勿后方追尾;
2.切勿鲁莽超车;
3.切勿抢占路权;
4.注意能见度有限区域;
5.务必规避事故却不造成其他事故。
RSS模型是一种可证明安全性的模型,即,若所有主体始终遵守RSS模型的规则,就不会发生任何事故。目的是将证明所需安全级别而需要收集的驾驶数据量减少几个数量级。
安全模型(如RSS)可以用作评估在自主系统(栈)控制下的现实或模拟场景中自我主体规划或实现的轨迹质量的基础。通过将栈暴露于不同的场景并评估所得的自我轨迹是否符合安全模型的规则来测试栈(基于规则的测试)。基于规则的测试方法还可应用于其他性能方面,如舒适度或实现既定目标的进展。
发明内容
本文描述了允许专家评测AV系统的感知误差和驾驶性能的技术。通过将AV感知系统的感知输出与地面实况感知输出进行比较来评估AV感知系统的感知输出,使专家能够评定感知问题对既定AV系统整体性能的影响。本文描述的UI在单个可视化中呈现感知误差和驾驶性能,提供感知与驾驶性能之间的相关性并帮助专家确定可能影响整体驾驶性能的感知误差来源。
本公开第一方面涉及一种用于测试实时感知系统的计算机系统,该实时感知系统用于部署在配备传感器的车辆中,该计算机系统包括:
至少一个输入端,配置为接收供配备传感器的车辆执行的至少一个现实世界驾驶运行的数据,该数据包括:(i)由配备传感器的车辆捕获的传感器数据时间序列,(ii)被测实时感知系统从中提取的至少一个相关运行时感知输出时间序列;
渲染组件,配置为生成用于渲染图形用户界面(GUI)的渲染数据,该图形用户界面包括感知误差时间线,对于至少一个现实世界驾驶运行的多个时间步中每一个时间步,该感知误差时间线具有该时间步发生任何感知误差的视觉指示;
地面实况流水线,配置为处理如下至少一项:(i)传感器数据时间序列,(ii)运行时感知输出时间序列,其中通过对此应用至少一个非实时和/或非因果感知算法来提取至少一个地面实况感知输出时间序列(“伪地面实况(Pseudo-Ground Truth)”),以便与运行时感知输出进行比较;
感知预言机,配置为将运行时感知输出时间序列与地面实况感知输出时间序列进行比较,从而标识一个或多个时间间隔内发生的任何感知误差,以便生成感知误差时间线。
各实施例中,标识感知误差可以是通过计算运行时感知输出时间序列与地面实况感知输出时间序列之间的误差数值并将误差数值与至少一个感知误差阈值进行比较。
例如,如果误差数值超过误差阈值,则误差数值可以仅标识为感知误差。
误差阈值可以是固定阈值或可变阈值。例如,不同的感知误差阈值可以应用于不同的活动者(Actor)/主体(Agent)或其不同类型(例如,车辆与行人阈值不同等)。
误差阈值可以是可调整误差或其他可配置误差,例如经由GUI或经由提供给感知预言机的规则定义指令(例如用领域特定语言(Domain-Specific Language﹣DSL)编码)。可以提供规则编辑器来采取感知误差规范形式对DSL规则定义指令进行编码。后一种方法提供了本文所称的“感知误差框架”。
误差阈值还可以随驾驶运行的一个或多个场景变量(运行变量,例如误差阈值适用对象的变量)而变化。例如,对于既定对象(例如主体或静态对象),随着该对象与自我主体之间的距离增加,该对象的感知误差阈值可以增加(基于更小的感知误差对于附近对象更为重要)。使用固定阈值但使用根据场景变量加权(例如,通过反距离加权)的误差数值可以实现相同的效果。本文中,言及“可变阈值”涵盖后一种实施方式,除非另作声明。
(加权)数值感知误差可以归一化,即变换成某个预定尺度,可选地借助固定误差阈值,例如变换成区间[-1,1],其中失败阈值设置为零。经归一化的感知误差可以称为感知“鲁棒性”分数。
加权标准/可变阈值可配置,例如可经由GUI或DSL配置。
除了所标识的感知误差之外,还可经由GUI渲染(归一化)误差值。
可以应用更复杂的规则,例如映射多个感知误差值或其组合,以基于一个或多个误差阈值来标识感知误差。
“感知误差”可以是感知误差的二元指标(有错/无错)或非二元分类指标(例如红绿蓝“交通信号灯”式分类)。
感知误差也可以是感知误差计数,例如跨多个对象和/或传感器和/或传感器模态进行聚合。
例如,可以分等级定义感知误差规则。例如,利用多个传感器和/或传感器模态(例如激光雷达、雷达、摄像头等)和/或多个对象,可以提取多个模态/对象上聚合的聚合感知误差。在此情形下,可以导出多个感知误差时间线,例如利用通过将预定规则应用于“低级”时间线(例如针对特定对象、传感器和/或传感器模态)来填充“顶级”聚合时间线。顶级时间线可扩展为查看低级时间线。感知误差也可以在时间窗内聚合,以便提供驾驶运行的“缩小”视图。
感知预言机可以配置为过滤掉运行的至少一个时间间隔,从感知误差时间线中省略该时间间隔,其中可以基于应用于下列的一个或多个过滤标准来执行过滤:感知误差(例如,过滤掉未发生感知误差的时间间隔)和/或与现实世界驾驶运行相关联的一个或多个标注/标签(例如,仅包含存在某类场景元素(如交通弱势群体)的时间间隔)。例如,标签可以包括有关动态和/或静态场景元素或条件(活动者、天气、光照等)的本体标签。这种过滤也可以称为时间线“切片”。
时间线可以聚合多个驾驶运行。在此情境下,切片是一种减少时间线上显示的“非感兴趣”信息的有用工具。
可经由GUI访问标签。
可以在GUI上显示驾驶运行的示意表示。静态表示可以显示当前时间步的驾驶运行的静态快照,其中可经由对GUI的指令来选择当前时间步。随着当前时间步变化,视觉指示符可以变化以在感知误差时间线上标记当前时间步。
与示意图一起也可以显示至少一个现实世界驾驶运行的(原始)数据。例如,可以显示俯视示意图,与现实世界驾驶运行的至少一个3D点云(例如LiDAR、Radar、单色/立体深度点云或上述任何组合/聚合)重叠。替选地或附加地,可以针对当前时间步显示来自一个现实世界驾驶运行的至少一个捕获图像(当前时间步变化导致GUI相应地更新为对应的图像)。
驾驶运行的示意表示可以使用运行时感知输出时间序列来渲染。例如,运行时感知输出时间序列可以包括多个检测到对象中每一个对象的地面实况边界框(位置、姿态、大小)时间序列以及每个对象的标识对象类型,其用于渲染该对象在驾驶运行的已知道路布局(例如源自地图)上的视觉图标。
也可以经由GUI显示运行时感知输出时间序列,以便与地面实况感知输出进行视觉比较。例如,运行时感知输出时间序列可以覆盖在从后者导出的示意表示上。例如,运行时感知输出可以包括多个测得实时边界框时间序列,可以将与当前时间步相关联的运行时边界框子集覆盖在当前时间步的快照上。
感知地面实况可以采取每个主体(自我主体和/或其他主体)行迹的形式,其中行迹是空间和运动状态时间序列(如边界框以及测得的速度向量或其他运动矢量)。
所提取的行迹可用于在GUI上可视化运行。
可以提供在GUI上动态“重放”场景的选项,其中视频指示符随着场景进展而沿着感知误差时间线移动。
还可以在GUI上显示第二驾驶性能时间线,其传达应用于相同地面实况感知输出(例如行迹)的驾驶性能评测的结果。为此,可以例如提供测试预言机。
运行数据可以包括多个传感器模态,例如LiDAR、Radar和图像(例如来自立体或单色成像的深度数据)中两项以上。
一些实施例中,一种传感器模态(或传感器模态组合)可用于为另一种传感器模态(或传感器模态组合)提供地面实况。例如,可以使用更精准的激光雷达来导出伪地面实况,用作从雷达或(单色或立体)图像数据导出的检测结果或其他感知输出的基线。
系统内可以使用相对少量手工标签的地面实况,例如作为基线来验证或测定伪地面实况或运行时感知输出的精度。
虽然上述考虑的感知误差源自伪地面实况,但本发明其他方面,本发明可以使用上述GUI来渲染采取其他方式导出的感知误差(包括来自现实世界数据而不使用伪地面实况,以及模拟器中生成的模拟驾驶运行的感知误差)。对于模拟运行,上述说明同样适用于模拟器直接提供的地面实况(无需地面实况流水线)以及模拟运行的场景变量。
本公开第二方面提供了一种用于评测自主车辆性能的计算机系统,该计算机系统包括:
至少一个输入端,配置为接收至少一个自主驾驶运行的性能数据,该性能数据包括至少一个感知误差时间序列和至少一个驾驶性能结果时间序列;
渲染组件,配置为生成用于渲染图形用户界面的渲染数据,该图形用户界面用于可视化性能数据并包括:
(i)感知误差时间线,
(ii)驾驶评测时间线,
其中,这些时间线在时间上对齐,并划分成至少一个驾驶运行的多个时间步,其中,对于每个时间步:感知时间线包括该时间步是否发生感知误差的视觉指示,驾驶运行评测时间线包括该时间步的驾驶性能的视觉指示。
驾驶评测时间线与感知时间线可以相互平行。
上述工具视觉上将驾驶性能与感知误差联系起来,辅助专家确定ADS/ADAS性能不佳/不可接受的情况。例如,通过关注驾驶性能时间线中发生重大驾驶规则失败的区域,专家可以在辅助的同时查看感知误差时间线,以了解感知误差是否可能导致规则失败。
各实施例中,驾驶性能可以是针对一个或多个预定义的驾驶规则来评测。
驾驶性能时间线可以聚合多个单独驾驶规则的驾驶性能,并且可扩展为查看单独驾驶规则的相应驾驶性能时间线。
上述(或每个)驾驶性能可扩展为查看规则的计算图表示(如下所述)。
驾驶运行可以是现实世界运行,驾驶规则应用于现实世界行迹。
某些情形下,可以使用地面实况流水线来提取(伪)地面实况行迹/感知输出,用于确定感知误差并评测针对驾驶规则的性能(如上第一方面)。
替选地,可以在不使用伪地面实况的情况下标识感知误差。例如,标识此类误差可以根据“闪烁”对象(运行时对象检测器失败时出现/消失)或“跳跃”对象(可以看到对象以运动学上不可行的方式跳过场景﹣例如运行时检测器可能会在运行中某个时刻“交换”两个邻近对象)。
性能数据可以包括指示关注感知区域的至少一个数值感知分数时间序列,并且图形用户界面可以至少包括对应的数值感知分数时间线,其中对于每个时间步,数值感知分数时间线包括与该时间步相关联的数值感知分数的视觉指示。
数值感知分数时间序列可以是硬度分数时间序列,指示感知系统在每个时间步的难度测度。
性能数据可以包括至少一个用户定义分数时间序列,并且图形用户界面可以包括至少一个对应的自定义时间线,其中对于每个时间步,自定义时间线包括在该时间步评估的用户定义分数的视觉指示。
替选地,运行可以是模拟运行,并且可以模拟感知误差。
例如,一个或多个感知误差(或感知性能)模型可用于对感知误差进行采样,或者更一般地模拟期间将地面实况模拟器状态转换为更真实感的感知误差,然后将其提供给被测栈中更高级别的组件。
另举一例,合成传感器数据可以在模拟中生成,并且栈的感知系统采取与现实传感器数据相同的方式处理合成传感器数据。在此情形下,可以采取与现实世界感知误差相同的方式导出模拟感知误差(但在此情形下无需地面实况流水线,因为可以通过与模拟器固有的地面实况进行比较来标识感知误差)。
过滤器/切片也可以应用于时间线,例如仅显示特定规则/规则组合上失败周围的时间段。这样即可基于应用于驾驶性能时间线的规则来过滤/切片感知误差时间线,反之亦然。
图形用户界面可以包括与时间线对齐的进度条,该进度条具有指示规则时间间隔的一个或多个标记,每个间隔包括驾驶运行的一个或多个时间步。标记子集可以标明数值时间指示符。
图形用户界面可以包括跨时间线延伸并指示驾驶运行的选定时间步的滑动条。响应于用户通过点击一条时间线上某一点来选择驾驶运行的新时间步,滑动条可以沿着时间线移动,使得滑动条在所选点处延伸穿过时间线。
图形用户界面可以包括缩放输入,该缩放输入可用于增加或减少时间线中所含驾驶运行的时间步数。时间线可以配置为当缩放输入用于增加或减少时间线中时间步数时,每个时间步的视觉指示符分别缩小或扩大,使得时间线保持恒定的长度。
进度条可以配置为当缩放输入用于将时间线中时间步数减少到低于阈值时,将标记调整为指示更短的时间间隔。当缩放输入用于将时间线中时间步数增加到高于阈值时,可以将标记调整为指示更长的时间间隔。
当缩放输入用于调整驾驶运行的时间步数时,可以将时间线调整为仅包含时间线上参考点的定义范围内的时间步。参考点可以是行驶运行的起点。替选地,参考点可以是行驶运行的当前选定时间步。当前选定点可以由滑动条来指示。
缩放输入可以包括缩放滑动条,可用于通过沿滑动条移动指示符来调整时间线中的时间步数。可以通过点击并沿着滑动条拖动滑块来移动指示符,或者通过点击滑块上指示符应移动到的点来移动指示符。缩放输入可以包括触摸屏上的捏合手势,基于触摸屏幕的两指间距离变化来调整时间线中的时间步数。替选地,缩放输入可以包括鼠标滚轮,响应于用户向前或向后滚动滚轮来调整时间线中的时间步数。
时间线可滚动为使得时间线中显示的多个时间步调整为响应于用户滚动动作而在时间上前移或后移。
可以选择其间的驾驶运行部分,其中通过点击进度条上指示该部分开始时间的第一点并沿进度条拖动到定义该部分结束时间的第二点。可以提取与所选定部分相对应的驾驶数据并将其存储到数据库。
上述第一方面是指通过将运行时感知输出与一组导出的(伪)地面实况感知输出进行比较来测试实时感知系统。另一方面,各实施例的任何上述特征可以更普遍地应用于通过与对应的地面实况感知输出序列进行比较来评估任何感知输出序列。就此而言,地面实况可以是任何视为准确的基线,以便通过与该基线进行比较来评估感知输出。
本公开第三方面涉及一种计算机系统,包括:
至少一个输入端,配置为接收有关至少一个驾驶运行的数据,该数据包括(i)第一感知输出时间序列以及(ii)第二地面实况感知输出时间序列,地面实况感知输出时间序列和运行时感知输出时间序列与至少一个时间间隔相关联;
渲染组件,配置为生成用于渲染图形用户界面(GUI)的渲染数据,该图形用户界面包括感知误差时间线,对于至少一个驾驶运行的多个时间步中每一个时间步,该感知误差时间线具有该时间步发生任何感知误差的视觉指示;
感知预言机,配置为将感知输出时间序列与地面实况感知输出时间序列进行比较,从而标识一个或多个时间间隔内发生的任何感知误差,以便生成感知误差时间线。
应当注意,术语“感知输出”在上下文中采用广义,包括获自人工注释的感知数据以及车辆感知栈的输出。
所述计算机系统可以附加地包括地面实况流水线。地面实况流水线可以配置为通过应用至少一个非实时和/或非因果感知算法处理至少一个驾驶运行的数据来生成第一感知输出时间序列,该数据包括来自驾驶运行的传感器数据时间序列以及感知系统从中提取的相关运行时感知输出时间序列。地面实况感知输出可以通过至少一个驾驶运行的手工注释来生成。本实施例中感知系统所生成的感知输出是“伪”地面实况感知输出,可以将其与针对同一驾驶运行接收的手工注释地面实况感知输出进行比较,以标识伪地面实况感知输出中的感知误差。这用比较可以用来评估从地面实况流水线获得的伪地面实况感知输出是否适合用作地面实况,以便与待评估的另一组感知输出进行比较。这种比较可以仅基于手工注释的驾驶数据子集,以使伪GT能够用于评测人工注释不适用的更大数据集的感知输出。
替选地,感知系统可以包括实时感知系统用于部署在配备传感器的车辆中,并且感知输出可以包括实时感知系统从既定驾驶运行的传感器数据时间序列中提取的运行时感知输出时间序列。生成地面实况感知输出可以是通过地面实况流水线应用至少一种非实时和/或非因果感知算法而处理传感器数据时间序列或运行时感知输出时间序列中至少一者。替选地,地面实况感知输出可以通过手工注释驾驶运行来生成。
驾驶运行可以是现实世界驾驶运行。
替选地,驾驶运行可以是模拟驾驶运行,由模拟器生成传感器数据,并且可以通过将实时感知系统应用到模拟传感器数据而获得运行时感知输出。可以直接从模拟器获得地面实况感知输出,以便与运行时感知输出进行比较。
本文又一方面提供了一种用于测试实时感知系统的计算机实现方法,该实时感知系统用于部署在配备传感器的车辆中,该方法包括:
在输入端处接收供配备传感器的车辆执行的至少一个现实世界驾驶运行的数据,该数据包括:(i)由配备传感器的车辆捕获的传感器数据时间序列,(ii)被测实时感知系统从中提取的至少一个相关运行时感知输出时间序列;
由渲染组件生成用于渲染的图形用户界面(GUI)的渲染数据,该图形用户界面包括感知误差时间线,对于至少一个现实世界驾驶运行的多个时间步中每一个时间步,该感知误差时间线具有该时间步发生任何感知误差的视觉指示;
在地面实况流水线处理如下至少一项:(i)传感器数据时间序列,(ii)运行时感知输出时间序列,其中通过对此应用至少一个非实时和/或非因果感知算法来提取至少一个地面实况感知输出时间序列,以便与运行时感知输出进行比较;
在感知预言机处将运行时感知输出时间序列与地面实况感知输出时间序列进行比较,从而标识一个或多个时间间隔内发生的任何感知误差,以便生成感知误差时间线。
本公开其他方面提供了用于对计算机系统进行编程以实施本文所述任何方法的可执行程序指令。
附图说明
下面结合附图举例说明本公开实施例的实施方式,以便更清楚地理解本发明,图中:
图1示出了一组感知误差规范用例;
图2A示出了自主车辆栈的示意性功能框图;
图2B示出了自主车辆测试范例的示意性概览图;
图2C示出了场景提取流水线的示意性框图;
图3示出了用于查看手工标注驾驶运行的用户界面;
图4A示出了地面实况流水线的概览图;
图4B示出了一组噪声边界框和一组精细化边界框;
图5A示出了一组用于地面实况流水线的检测精细化技术;
图5B示出了一组用于地面实况流水线的离线检测技术;
图6A示出了测试流水线的示意性框图;
图6B示出了测试流水线可能实施方式的更多细节;
图7A示出了测试预言机内评估规则树的示例;
图7B示出了规则树节点的示例输出;
图8A示出了测试预言机内评估规则树的示例;
图8B示出了根据场景地面实况数据集评估规则树的第二示例;
图8C示出了如何在测试预言机内选择性应用规则;
图9A示出了用于渲染图形用户界面的可视化组件的示意性框图;
图9B、图9C和图9D示出了图形用户界面内可用的不同视图;
图10A示出了第一超车场景实例;
图10B示出了第一场景实例的示例预言机输出;
图10C示出了第二超车场景实例;
图10D示出了第二场景实例的示例预言机输出;
图11示出了用于评估感知误差的示例架构;
图12A示出了分类工具的示例图形用户界面;
图12B示出了驾驶场景包括图形用户界面中显示的传感器数据的示意表示;
图12C示出了具有缩放功能和时间线滑动条的示例用户界面;
图12D示出了用户界面中选择场景分段;
图13示出了图形用户界面显示感知规则的聚焦视图;
图14示出了感知误差框架内的示例规则定义;
图15示出了感知误差的数值分数与定义误差阈值的示例图;
图16示出了如何将单个感知误差规范应用于现实和模拟的驾驶场景;
图17示出了如何使用定义的感知误差规范来测试感知和规划栈;
图18A和图18B示出了应用于标识场景相关误差的过滤工具;
图19A示出了如何通过图形用户界面调整误差阈值;
图19B示出了选择和分析驾驶场景“切片”。
具体实施方式
图11示出了一种示例架构,其中“感知预言机”1108从多个来源(现实来源和/或模拟来源)接收感知误差数据,并使用这些数据来填充“感知分类”图形用户界面(GUI)500。
测试预言机252评测驾驶性能,并且GUI 500的某些实施方式允许驾驶性能评测连同相应时间线上的感知信息。
某些感知误差可能源自现实或模拟运行的地面实况行迹,并且测试预言机使用这些相同的地面实况行迹来评测驾驶性能。
测试预言机252和感知预言机1108互成镜像,只要各自应用可配置的基于规则的逻辑来填充GUI 500上的时间线即可。前者对(伪)地面实况行迹应用分层规则来评测一个(或多个)运行中的驾驶性能,而后者应用类似的逻辑来标识显著感知误差。渲染组件1120生成用于在显示器上渲染GUI的渲染数据。
本申请人共同待审的国际专利申请PCT/EP2022/053406和PCT/EP2022/053413(通过引用归并本文)描述了用于编码测试预言机中规则的领域特定语言(DSL)。下面描述了DSL的扩展,用于编码感知预言中标识显著感知误差的规则。
上述实施例提供了测试流水线来促进现实或模拟场景中对移动机器人栈进行基于规则的测试,结合了灵活地标识并传达存在感知误差的附加功能。
“全栈”通常涉及从处理和解释低级传感器数据(感知)、馈送到主要高级功能(如预测和规划)以及控制逻辑生成合适的控制信号来实施规划级决策(例如控制制动、转向、加速等)。对于自主车辆,3级栈包括一些实现过渡需求的逻辑,4级栈还包括一些实现最小风险策略的逻辑。栈也可以实现次要控制功能,例如信号、前灯、挡风玻璃刮水器等。
术语“栈(Stack)”也可指全栈的各个子系统(子栈),如感知栈、预测栈、规划栈或控制栈,它们可以单独地或以任何预期组合进行测试。栈可纯指软件,即可以在一个或多个通用计算机处理器上执行的一个或多个计算机程序。
下述测试框架提供了根据现实世界数据生成场景地面实况的流水线。该地面实况可用作感知测试的基础,其中通过将生成的地面实况与正测试感知栈的感知输出进行比较并且根据驾驶规则评测驾驶行为。
测试预言机基于定义的性能评估规则来评估现实或模拟场景中的主体(活动者)行为。这些规则可以评估不同安全方面。例如,可以定义安全规则集来根据特定安全标准、法规或安全模型(如RSS)评测栈性能,或者可以定义定制规则集来测试任何性能方面。测试流水线不仅限于安全应用,还可用于测试任何性能方面,如舒适度或某些明确目标进展。规则编辑器允许定义或修改性能评估规则并将其传递给测试预言机。
类似地,可以通过“感知预言机”基于定义的感知规则来评估车辆感知。可以在提供用于定义感知误差的标准格式的感知误差规范内定义这些感知规则。
图1示出了感知误差框架的一组可能用例(Use Case)。在感知误差框架内定义规则允许向用户突出显示现实世界驾驶场景中的感兴趣区域(1602),其中例如通过重放用户界面中呈现的场景时标志这些区域。这就允许用户检查感知栈中明显的误差,并标识误差的可能原因,例如原始传感器数据中的遮挡。这样评估感知误差还允许在AV栈的感知组件与规划组件之间定义“合约”(1604),其中可以指定感知性能要求,并且满足这些感知性能要求的栈必能安全规划。可以使用统一框架来评估来自现实世界驾驶场景的现实感知误差以及模拟误差(1606),其中模拟误差是直接使用感知误差模型来模拟或者通过将感知栈应用于模拟传感器数据(例如摄像头图像的照片级真实感模拟)来计算。
可以在相同的感知误差规范内评估流水线所确定的地面实况本身(1608),其中通过根据定义的规则将其与通过人为审查和注释场景所确定的“真”地面实况进行比较。最后,应用感知误差测试框架的结果可用于指导测试策略以测试栈的感知子系统和预测子系统(1610)。
无论现实场景还是模拟场景,都需要自我主体导航现实或建模的物理背景。自我主体是在被测栈的控制下移动的现实或模拟移动机器人。物理背景包括需要被测栈有效响应的静态和/或动态元素。例如,移动机器人可以是在栈(自我车辆)控制下的全自主或半自主车辆。物理背景可以包括静态道路布局和一组既定环境条件(例如天气、当日时间、光照条件、湿度、污染/微粒水平等),其可能随场景进展而保持或改变。交互式场景附加地包括一个或多个其他主体(“外界”主体,例如其他车辆、行人、骑行人、动物等)。
下例考虑了自主车辆测试的应用。然而,这些原理同样适用于其他形式的移动机器人。
可以在不同的抽象层次上表示或定义场景。场景抽象度越高,容纳的变化度越高。例如,“超车场景”或“变道场景”是高度抽象场景的示例,其特征是感兴趣的策略或行为,可容纳许多变化(例如不同的主体起始位置和速率、道路布局、环境条件等)。“场景运行(Scenario Run)”是指具体发生主体在物理情境下导航,任选地存在一个或多个其他主体。例如,可以使用不同的主体参数(例如起始位置、速率等)、不同的道路布局、不同的环境条件和/或不同的栈配置等来执行多个超车或变道场景运行(在现实世界中和/或在模拟器中)。术语“运行”和“实例”在此情境下可互换使用。
在下例中,至少部分地通过在一个或多个运行过程中根据一组既定性能评估规则测试预言机中评估自我主体行为来评测栈的性能。这些规则应用于上述(或每个)场景运行的“地面实况”,一般是指对场景运行(包括自我主体行为)的适当表示,在测试中视为权威。地面实况为模拟固有;模拟器计算一系列场景状态,根据定义,这些场景状态是模拟场景运行的完美权威表示。在现实世界场景运行中,场景运行的“完美”表示从同样的意义上而言并不存在,但可以通过若干方式获得适当信息的地面实况,例如基于车载传感器数据的手工注释、此类数据的自动/半自动注释(例如使用离线/非实时处理)和/或使用外部信息源等(如外置传感器、地图等)。
场景地面实况通常包括自我主体和任何其他适用(突出)主体的“行迹”。行迹是主体在场景过程中位置和运动的历史记录。行迹有多种表示方式。行迹数据通常包括环境内主体的空间和运动数据。该术语的使用涉及现实场景(具有现实世界行迹)和模拟场景(具有模拟行迹)。行迹通常记录主体在场景中实现的实际轨迹。就术语而言,“行迹”和“轨迹”可以包含相同或相似类型的信息(如随时间变化的一系列空间和运动状态)。术语“轨迹”一般倾向于用在规划情境下(可指未来/预测的轨迹),而术语“行迹”一般倾向于用在测试/评估情境下描述过去的行为。
在模拟情境下,将“场景描述”作为输入提供给模拟器。例如,场景描述可以使用场景描述语言(SDL)或者采取模拟器可用的任何其他形式来编码。场景描述通常是抽象度更高的场景表示,可以引起多个模拟运行。根据实施方式,场景描述可以具有一个或多个可配置参数,可以改变这些参数来提高可能的变化程度。抽象度和参数化程度是一种设计选择。例如,场景描述可以使用参数化的环境条件(如天气、光照等)对固定布局进行编码。然而,也可能进一步抽象,例如使用可配置的道路参数(如道路曲率、车道配置等)。模拟器的输入包括场景描述以及一组选定参数值(若适用)。后者可以称为场景参数化。可配置参数定义参数空间(又称场景空间),并且参数化对应于参数空间中的点。在此情境下,“场景实例”可指模拟器中基于场景描述和(若适用)选定参数化的场景实例化。
为了简明起见,术语“场景”也可用来指场景运行以及更抽象意义上的场景。从使用该术语的上下文中可以清楚理解其含义。
轨迹规划是当前情境下的重要功能,术语“轨迹规划器”、“轨迹规划系统”和“轨迹规划栈”在此可互换使用,指代可以为移动机器人规划未来轨迹的一个或多个组件。轨迹规划决策最终决定了自我主体实现的实际轨迹(但在某些测试情境下,这可能会受到其他因素影响,如控制栈中这些决策的履行以及自我主体对所产生控制信号的现实或建模动态响应)。
轨迹规划器可以独立测试或者与一个或多个其他系统(例如感知、预测和/或控制)组合测试。在全栈内,规划一般是指更高级别的自主决策能力(如轨迹规划),而控制一般是指更低级别生成用于执行这些自主决策的控制信号。然而,在性能测试情境下,术语“控制”应取更广义理解。为免存疑,据称轨迹规划器在模拟中控制自我主体时,未必隐含控制系统(狭义上)与轨迹规划器组合测试。
AV栈示例
为了提供所述实施例的相关上下文,下面将描述示例形式AV栈的更多细节。
图2A示出了AV运行时栈100的高度示意性框图。如图所示,运行时栈100包括感知(子)系统102、预测(子)系统104、规划(子)系统(规划器)106和控制(子)系统(控制器)108。如上所述,术语(子)栈也可用于描述前述组件102、104、106、108。
在现实世界情境下,感知系统102接收来自AV车载传感器系统110的传感器输出,并使用这些传感器输出来检测外界主体并测量它们的物理状态,如它们的位置、速度、加速度等。车载传感器系统110可以采取不同的形式,但一般包括多种传感器,如图像捕捉设备(摄像头/光学传感器)、激光雷达和/或雷达单元、卫星定位传感器(GPS等)、运动/惯性传感器(加速计、陀螺仪等)等。因此,车载传感器系统110提供丰富的传感器数据,从中可以提取关于周围环境和AV状态以及该环境内任何外界活动者(车辆、行人、骑行人等)的详细信息。传感器输出通常包括多种传感器形态的传感器数据,如来自一个或多个立体光学传感器、激光雷达、雷达等的立体图像。可以使用过滤器、融合组件等来组合多种传感器形态的传感器数据。
感知系统102通常包括多个感知组件,这些感知组件相互协作来解释传感器输出并由此向预测系统104提供感知输出。
在模拟情境下,根据测试性质,特别是根据测试目的而对栈100进行“切片”的位置(参见下文),可能需要也可能不必对车载传感器系统100进行建模。通过更高级别的切片,无需模拟传感器数据,因此无需复杂的传感器建模。
来自感知系统102的感知输出被预测系统104用来预测外界活动者(外界主体,如AV附近的其他车辆)的未来行为。
将预测系统104计算出的预测提供给规划器106,规划器106使用这些预测做出AV要在既定驾驶场景中执行的自主驾驶决策。规划器106接收到的输入通常会指示可驾驶区域,还会捕捉可驾驶区域内任何外界主体(从AV角度的障碍物)的预测移动。可驾驶区域可以使用来自感知系统102的感知输出结合诸如HD(高清)地图等地图信息来确定。
规划器106的核心功能是考虑预测的主体运动来规划AV的轨迹(自我轨迹),这可称为轨迹规划。轨迹规划的目的是在场景内实现预期目标。该目标例如可能是进入环岛并在预期的出口离开;超越前方车辆;或按目标速率留在当前车道上(车道跟行)。该目标可以例如由自主路线规划器(未示出)确定。
控制器108通过向AV的车载活动者系统112提供适当的控制信号来执行规划器106做出的决策。具体地,规划器106规划AV的轨迹,并且控制器108生成控制信号来实施规划的轨迹。通常,规划器106将规划未来,以便在规划器106规划新轨迹之前可以仅在控制层面部分实施规划轨迹。活动者系统112包括“主要”车辆系统(如制动系统、加速系统和转向系统)以及次要系统(例如信号、雨刷器、前灯等)。
应当注意,既定时刻的规划轨迹与自我主体遵循的实际轨迹之间可能存在区别。规划系统通常通过一系列规划步骤进行操作,在每个规划步骤更新规划轨迹,以虑及自上一个规划步骤以来场景中的任何变化(或更确切而言,偏离预测变化的任何变化)。规划系统106可以推理未来,使得每一个规划步骤的规划轨迹超出下一个规划步骤。因而,任何单独的规划轨迹可能不会完全实现(如果规划系统106在模拟中单独进行测试,自我主体可以只是精确地遵循规划轨迹直到下一个规划步骤;但如上所述,在其他现实和模拟情境下,可能不会精确地遵循规划轨迹直到下一个规划步骤,因为自我主体的行为可能受到其他因素影响,如控制系统108的操作以及自我车辆的现实或建模动态)。在许多测试情境下,自我主体的实际轨迹才是最终的关键,特别是实际轨迹是否安全以及舒适度、进度等其他因素。然而,本文中基于规则的测试方法也可应用于规划轨迹(即使这些规划轨迹未被自我主体完全或准确实现)。例如,即使根据一组既定安全规则,主体的实际轨迹视为安全,但瞬时规划的轨迹也可能不安全;规划器106正考虑不安全的行动路线这一事实可能会有所启示,即便是并未导致主体在场景中做出不安全的行为。除了模拟中的实际主体行为之外,瞬时规划轨迹还会构成一种可有效评估的内部状态形式。可以类似地评估其他栈内部状态形式。
图2A的示例考虑相对“模块化”的架构,具有可分立的感知系统102、预测系统104、规划系统106和控制系统108。子栈本身也可模块化,例如规划系统106内具有可分立的规划模块。例如,规划系统106可以包括多个轨迹规划模块,可应用于不同的物理背景(例如,简单的车道行驶与复杂的路口或环岛)。由于上述原因,这与模拟测试相关,因为允许单独地或以不同组合来测试组件(诸如规划系统106或其各个规划模块)。为免存疑,就模块化栈架构而言,术语“栈”不仅可指全栈,也可指其任何单独的子系统或模块。
各种栈功能集成或分离的程度在不同栈的实施之间可能存在显著差异-在某些栈中,某些方面可能紧密耦合而难以区分。例如,在某些栈中,规划和控制可以集成(例如,此类栈可以直接根据控制信号进行规划),而其他栈的架构方式(如图2A所示)可以在两者之间明确区分(例如,根据轨迹进行规划,并分别进行控制优化来确定如何采取最佳方式在控制信号级别执行规划轨迹)。类似地,在某些栈中,预测和规划可能会更紧密耦合。极端情况下,在所谓的“端到端”驾驶中,感知、预测、规划和控制可能本质上密不可分。本文采用的术语“感知”、“预测”、“规划”和“控制”并非隐含那些方面的任何特定耦合或模块化,除非另作声明。
应当理解,术语“栈”涵盖软件,但也可涵盖硬件。在模拟中,栈的软件可以在“通用”车外计算机系统上进行测试,之后最终上传到实体车辆的车载计算机系统。然而,在“硬件在环(Hardware-in-the-Loop)”测试中,测试可能会扩展到车辆本身的底层硬件。例如,栈的软件可以在出于测试目的而耦合到模拟器的车载计算机系统(或其副本)上运行。在此情境下,被测栈扩展到车辆的底层计算机硬件。另举一例,栈110的某些功能(例如感知功能)可以在专用硬件中实施。在模拟情境下,硬件在环测试可能涉及将合成传感器数据馈送到专用硬件的感知组件。
测试范例
图2B示出了自主车辆测试范例的高度示意性概览图。例如,图2A所示类型的ADS/ADAS栈100在模拟中经历重复测试和评估,其中通过在模拟器202中运行多个场景实例并在测试预言机252中评估栈100(和/或其各个子栈)的性能。测试预言机252的输出为专家122(团队或个人)提供信息,允许他们标识出栈100中的问题并修改栈100来缓解这些问题(S124)。结果还帮助专家122选择进一步的测试场景(S126),该过程继续,在模拟中重复修改、测试并评估栈100的性能。将改进栈100最终合并到现实世界的AV 101中(S125),该AV101配备有传感器系统110和活动者系统112。改进栈100通常包括在车辆101的车载计算机系统(未示出)的一个或多个计算机处理器中执行的程序指令(软件)。步骤S125,将改进栈的软件上传到AV 101。步骤S125还可能涉及修改车辆底层硬件。在AV 101上,改进栈100接收来自传感器系统110的传感器数据并向活动者系统112输出控制信号。现实世界测试(S128)可以与基于模拟的测试结合使用。例如,通过模拟测试和栈精细化过程达到可接受性能水平后,可以选择适当的现实世界场景(S130),并且可以捕捉这些现实场景中AV 101的性能并在测试预言机252中进行类似评估。
可以通过多种方式获得场景以便进行模拟,包括手工编码。该系统还能够出于模拟目的从现实世界运行中提取场景,从而允许在模拟器202中重新创建现实世界情况及其变化。
图2C示出了场景提取流水线的高度示意性框图。现实世界运行的数据140传递到‘地面实况’流水线142以便生成场景地面实况。运行数据140可以例如包括在一辆或多辆车辆(可以是自主车辆、人类驾驶车辆或二者组合)上捕获/生成的传感器数据和/或感知输出以及/或者从外置传感器等其他来源(CCTV等)捕获的数据。在地面实况流水线142内处理运行数据,以便生成关于现实世界运行的适当地面实况144(行迹和情境数据)。如上所述,地面实况处理可以基于对原始运行数据140的手动注释,或者该过程可以完全自动化(例如,使用离线感知方法),或者可以使用手动和自动地面实况的组合。例如,可以将3D边界框放置在运行数据140中捕获的车辆和/或其他主体周围,以便确定其行迹的空间状态和运动状态。场景提取组件146接收场景地面实况144并处理该场景地面实况144以提取可用于模拟目的的抽象场景描述148。场景描述148供模拟器202使用,从而允许执行多个模拟运行。模拟运行是原始现实世界运行的变体,可能的变化程度由抽象度决定。为每个模拟运行提供地面实况150。
现实场景地面实况144和模拟地面实况150可以由感知分类工具152处理以评估感知栈,和/或由测试预言机252处理以基于地面实况144或模拟地面实况150来评测栈。
在目前车外情境下,无需实时提取行迹(或更确切而言,无需采取支持实时规划的方式提取行迹);相反,行迹是“离线”提取。离线感知算法的示例包括非实时感知算法和非因果感知算法。离线技术与“在线技术”形成对比,在线技术可以在AV栈100内可行地实施以促进实时规划/决策制定。
例如,可以使用非实时处理,该处理因AV车载计算机系统的硬件或其他实际约束而无法在线执行。例如,可以将一种或多种非实时感知算法应用于现实世界运行数据140以提取行迹。非实时感知算法可能是因其所需的计算或内存资源而无法实时运行的算法。
在此情境下也可使用“非因果”感知算法。非因果算法可能会也可能不会在执行那刻实时运行,但无论如何都无法在线情境下实施,因为该算法需要了解未来。例如,基于后续数据检测特定时刻主体状态(例如位置、姿态、速率等)的感知算法无法支持在线情境下在栈100内进行实时规划,因为该算法需要了解未来(除非将其约束为在较短的前瞻窗口内运算)。例如,反向传播过滤是一种非因果算法,有时可以实时运行,但需要了解未来。
术语“感知(Perception)”一般是指用于感知现实世界数据140中结构的技术,如2D或3D边界框检测、位置检测、姿态检测、运动检测等。例如,可以提取行迹作为-3D空间或2D空间(例如,鸟瞰图参照系)中边界框或其他空间状态的时间序列以及相关联的运动信息(例如速度、加速度、加加速度等)。
地面实况流水线
测试自主车辆栈的现实世界性能时的一个问题是自主车辆会生成海量数据。这些数据随后可用于分析或评估AV在现实世界中的性能。然而,一种潜在的挑战是在这段素材内找到相关数据并确定驾驶中发生了哪些感兴趣的事件。一种选项是手工解析数据并通过人工注释来标识感兴趣的事件,但这可能代价高昂。
图3示出了驾驶时手工标注现实驾驶数据的示例。AV配备有传感器,例如摄像头。摄像头沿着行驶收集素材,如示例图像1202所示。人类驾驶员在高速公路上驾驶的示例中,如果驾驶员注意到任何感兴趣的事件,驾驶员可以向AV提供标志并在传感器收集的数据内标注该帧。该图像示出了地图1200上的驾驶可视化,其中气泡示出了驾驶员沿着行驶标注某事的点。本例中,每个标注点对应于摄像头图像的一帧,这用于过滤驾驶后分析的数据,以便后续仅检查标注帧。
如地图1200所示,在标注帧之间的行驶路径中存在很大间隙,这些间隙中收集的数据未被标注,因此该数据未被使用。通过使用自我车辆驾驶员的手工注释来过滤数据,对驾驶数据的后续分析仅限于人类驾驶员或测试工程师发现够重要或够时间来标志的事件。然而,从剩余数据中或许可能了解到车辆在其他时间的性能,并且可能确定一种更完整地处理和评估驾驶性能的自动方式。此外,与手工标注等量数据相比,标识更多的问题就有机会针对等量收集数据对AV系统做出更多改进。
一种可能的解决方案是创建统一分析流水线,使用相同的度量来评测场景模拟和现实世界驾驶。第一步是从实际收集的数据中提取驾驶行迹。例如,可以基于车载检测来评估自我车辆的大致位置和其他主体的大致位置。然而,由于计算资源有限并且车载检测为实时工作,即通知既定检测的唯一数据就是传感器在该时间点前所观察到的数据,因此车载检测并不完美。这意味着检测结果可能充斥噪声又不准确。
图4A示出了如何在数据摄取流水线中处理和精细化数据以确定既定现实世界数据集的伪地面实况144。应当注意,无法从现实世界数据中提取“真”的地面实况,本文描述的地面实况流水线提供了足以用于评估的地面实况估计。在本文中,该伪地面实况144又可简称为“地面实况”。
数据摄取流水线(或“摄取”工具)从既定栈中获取感知数据140,任选地从任何其他数据源1300(如手工注释)获取感知数据140,并精细化数据以提取数据中捕获的现实世界驾驶场景的伪地面实况144。如图所示,摄取来自车辆的传感器数据和检测结果,任选地摄取附加输入,如离线检测或手工注释。对此进行处理,将离线检测器1302应用于原始传感器数据和/或精细化从车辆的车载感知栈接收到的检测结果1304。然后输出精细化检测结果作为场景的伪地面实况144。这则可用作各种用例的基础,包括测试预言机(稍后描述)根据驾驶规则评估地面实况、通过将车辆检测结果与伪地面实况进行比较来确定感知误差以及提取模拟场景。可以针对输入数据计算其他度量,包括感知“硬度”分数1306,可应用于例如检测结果或整个摄像头图像,指示了既定数据对于感知栈正确处理的难易程度。
图4B示出了精细化前后的一组边界框示例。图4B的示例中,上图显示了一组“未精细化”噪声的3D边界框,定义了车辆在每个时间步的定位和定向,其中这些边界框表示添加噪声的地面实况。虽然所示的示例适用于添加噪声的边界框,但从现实世界驾驶栈中精细化车辆检测结果也能达到同样的效果。如图4B所示,边界框有噪声,由于感知误差,所测边界框的定位和定向都会随时间变化。
精细化流水线可以使用各种方法来消除这种噪声。图4B的下方轨迹示出了消除噪声后车辆的伪地面实况行迹144。如图所示,车辆的定向及其定位在帧与帧之间保持一致,形成平滑的驾驶轨迹。不再赘述流水线用于执行此样平滑的多种可能方法。然而,该流水线既受益于较在线检测器更强的计算能力,从而能够使用更准确的检测器,又受益于利用过去和未来的检测结果来平滑轨迹,而从汽车上收集的现实世界检测为实时操作,因此只是基于过去的数据。例如,如果对象在时间t受部分遮挡但在时间t+n为汽车传感器完全可见,对于离线精细化流水线,时间t+n时的检测结果可用于为基于部分遮挡数据的早期检测结果提供信息,从而使整体检测结果更加完整。
可以利用各种类型的离线检测器或检测精细化方法。图5A示出了可能检测精细化技术的表单,图5B示出了可应用于传感器数据以获得改进检测结果的可能离线检测器的表单。
使用各种技术来精细化检测结果。一个示例是应用于摄像头图像的语义关键点检测。如图4B所示,经过精细化后,得到稳定的检测结果,其长方体大小合适,能够平稳地跟踪汽车。
请参阅国际专利申请WO2021/013792,其全文引用归并本文。上述参考文献公开了一类离线注释方法,该方法可以在地面实况流水线400内实施以提取每个感兴趣主体的伪地面实况行迹。通过应用自动注释技术来提取行迹,以便用一系列精细化的3D边界框来注释现实世界运行140的数据(在此情形下,主体行迹包括精细化的3D框)。
该方法的工作原理大致如下。现实世界运行数据140包括帧序列,其中每帧包括3D结构点集(例如点云)。将每个感兴趣主体(自我主体和/或其他主体)作为跨多帧的对象进行跟踪(该主体是上述参考术语中的“公共结构组件”)。
在本情境下,“帧”是指任何捕获的3D结构表示,即包括定义3D空间结构的捕获点(3D结构点),提供了该帧中捕获的基本上3D结构的静态“快照”(即静态3D场景)。可以说该帧与单个时刻相对应,但未必暗示需要立即捕获该帧或派生该帧的基础传感器数据—例如,可以由移动对象在LiDAR扫描中以“解扭(untwisted)”方式在短时间内(例如约100ms)捕获LiDAR测量值,以说明移动对象的任何运动,从而形成单点云。在此事件中,单点云仍然可以说对应于单个时刻。
现实世界运行数据可以包括多个帧序列,例如两项以上LiDAR、Radar和深度帧中的单独序列(本公开上下文中的深度帧是指通过深度成像派生的3D点云,如立体或单目深度成像)。帧还可包括通过融合来自不同传感器和/或不同传感器模态的多个点云来计算的融合点云。
该方法开始于每个感兴趣主体的一组初始3D边界框估计(粗略大小/姿态估计),用于根据帧本身构建主体的3D模型。这里,姿态是指6D姿态(3D空间中的3D定位和定向)。下例具体考虑从LiDAR提取3D模型,但该描述同样适用于其他传感器模式。对于多种传感器数据模态,可以例如由一个或多个第二传感器模态(例如Radar或深度成像)提供粗略的3D框。例如,可以通过将3D边界框检测器应用于第二模态(或多个第二模态)的点云来计算初始粗略估计。路线估计也可以根据相同的传感器模态(本例中为LiDAR)来确定,并使用后续处理技术来完善估计。另举一例,来自被测感知系统102的实时3D框可以用作初始粗略估计(例如,现实世界运行期间在车辆上计算得出)。对于后一种方法,该方法可以描述为一种检测精细化形式。
为了针对每个主体创建聚合3D对象模型,通过采用每帧粗略3D边界框内所含点的子集来跨多帧聚合属于该对象的点(或者可以稍微扩展粗略3D边界框以提供一定额外“余量”给目标点提取)。从广义上,聚合的工作原理是最初将每帧的点子集变换成主体的参考帧。此时无法确切获知主体参考帧的变换,因为仅大致知道每帧中主体的姿态。最初根据粗略3D边界框来评估变换。例如,可以通过变换点子集以与每帧中粗略3D边界框的轴线对齐来有效地实施变换。来自不同帧的点子集大部分属于同一对象,但由于初始姿态估计中的误差而可能在主体参考帧中错位。为了纠正错位,使用配准法对齐两个点子集。此类方法广泛地通过使用某种形式的匹配算法(例如迭代最近点)来变换(旋转/平移)对象点子集之一以使之与另一个点子集对齐。匹配利用了获知两个点子集大部分来自同一对象。然后可以在后续帧中重复此过程,以构建对象的密集3D模型。这样构建密集3D模型后,可以将噪声点(不属于对象)与实际对象点隔离,从而更容易过滤掉噪声点。然后,通过将3D对象检测器应用于过滤后的密集3D对象模型,可以针对所涉主体确定大小更准确、拟合更紧密的3D边界框(假设是刚性主体,使得3D边界的大小和形状大小在各帧之间不变,每帧中唯一的变量是其定位和定向)。最后,将聚合的3D模型与每帧中对应的对象点进行匹配,以准确定位每帧中更精确的3D边界框,从而针对每帧提供精细化的3D边界框估计(形成一部分伪地面实况)。这个过程可以迭代重复,从而提取初始3D模型,精细化姿态,根据精细化姿态更新3D对象模型,等等。
精细化3D边界框用作伪地面实况位置状态,用于确定基于位置的感知输出(例如运行时框、姿态估计等)的感知误差程度。
为了合并运动信息,3D边界框可以与3D运动模型联合优化。运动模型又可提供所涉主体的运动状态(例如速率/速度、加速度等),这又可用作运行时运动检测的伪地面实况(例如由被测感知系统102计算的速率/速度、加速度估计等)。运动模型可能会鼓励跨帧采用真实感(运动学上可行的)3D框。例如,可以基于成本函数制定联合优化,该成本函数惩罚聚合3D模型与每帧点之间的不匹配,但同时惩罚帧间主体姿态在运动学上不可行的变化。
运动模型还允许通过基于运动模型在相邻帧之间内插3D主体姿态而将3D框准确地定位在遗漏对象检测的帧中(即粗略估计不可用的帧,如果粗略估计为车载检测,并且被测感知系统102在既定帧上失效,则可能发生这种情况)。在感知分类工具152内,这允许标识遗漏对象检测。
3D模型可以采取聚合点云形式,或者可以将表面模型(例如距离场)拟合到点。国际专利公布WO2021/013791(通过引用归并本文)公开了3D对象建模技术的更多细节,其中将3D对象模型的3D表面编码为拟合到提取点的距离场(带符号)。
这些精细化技术的应用是可用于获得画面中主体144(包括自我车辆和外界主体)的伪地面实况,其中精细化检测结果可视为由画面中主体采取的现实行迹。这可用来评测车载感知的精度,其中通过将汽车检测结果与伪地面实况进行比较。伪地面实况还可用来查看被测系统(即自我车辆栈)如何违反高速公路规则。
伪地面实况检测结果144还可用于对所收集的数据进行语义标注和查询。例如,用户可以输入诸如“查找所有超车事件(find all events with a cut-in)”等查询,其中超车(cut-in)是指主体在自我车辆前方驶入自我车辆车道的任何时间。伪地面实况具有画面中每个主体的行迹以及这些行迹在任何时间的定位和定向,因此可以通过搜索主体行迹来查找这些行迹进入另一车辆前方车道的情况来标识超车。可以建立更复杂的查询。例如,用户可以输入查询“查找主体速度至少x的所有超车位置(find me all cut-ins where theagent had at least xvelocity)”。主体运动是通过从数据中提取的伪地面实况行迹来定义,因此可以直接在精细化检测结果中搜索主体超过既定速率的超车事件。一旦选择并运行这些查询,就会缩短手工分析数据所需的时间。这意味着无需依靠驾驶员实时标识感兴趣区域,而是可以在所收集的数据内自动检测感兴趣区域,并可以从中提取感兴趣的场景以便进一步分析。这就允许使用更多的数据,有可能标识人类驾驶员可能忽略的场景。
测试流水线
下面描述测试流水线和测试预言机252的更多细节。下例重点介绍基于模拟的测试。然而,如上所述,测试预言机252同样可应用于评估现实场景下的栈性能,下文相关描述同样适用于现实场景。具体地,下述测试流水线可以与如图1至图5所示从现实世界数据获得的提取地面实况144一起使用。稍后将详述上述测试流水线以及感知评估流水线应用于现实世界数据分析工具。下文参照图2A举例描述栈100。然而,如上所述,测试流水线200高度灵活,可应用于任何自主级别下操作的任何栈或子栈。
图6A示出了测试流水线(附图标记200)的示意性框图。如图所示,测试流水线200包括模拟器202和测试预言机252。模拟器202出于测试全部或部分AV运行时栈100目的而运行模拟场景,并且测试预言机252在模拟场景下评估栈(或子栈)的性能。如上所述,可以仅测试运行时栈的子栈,但简洁起见,下文描述始终是指(全)AV栈100。然而,该描述同样适用于子栈代替全栈100。在本文中,术语“切片(slicing)”用于选择栈组件的集合或子集来进行测试。
如前所述,基于模拟进行测试的构思是运行自我主体须在被测栈100的控制下导航的模拟驾驶场景。通常,该场景包括自我主体需导航的静态可驾驶区域(例如特定的静态道路布局),通常存在一个或多个其他动态主体(如其他车辆、自行车、行人等)。为此,将模拟输入203从模拟器202提供给被测栈100。
对栈进行切片决定了模拟输入203的形式。举例而言,图6A示出了被测AV栈100内的预测系统104、规划系统106和控制系统108。为了测试图2A的全AV栈,也可以在测试期间应用感知系统102。在此情形下,模拟输入203将包括合成传感器数据,该数据使用适当的传感器模型生成并在感知系统102内采取与现实传感器数据相同的方式处理。这需要生成足够真实感的合成传感器输入(例如照片级真实感图像数据和/或同样真实感的模拟LiDAR/Radar数据等)。感知系统102所得的输出又将馈送到更高级别的预测系统104和规划系统106中。
相比之下,所谓的“规划级”模拟基本上会绕过感知系统102。相反,模拟器202将直接向预测系统104提供更简单、更高级的输入203。某些情境下,甚至还可以适当绕过预测系统104,以便根据直接从模拟场景获得的预测(即“完美”预测)来测试规划器106。
这些极端情况中间存在许多不同级别输入切片的范围,例如仅测试感知系统102的子集,如“晚期”(上级)感知组件,例如对下级感知组件(如对象检测器、边界框检测器、运动检测器等)的输出进行操作的组件(过滤器或融合组件)。
模拟输入203无论采取何种形式皆可(直接或间接)用作规划器108做出决策的基础。控制器108又通过输出控制信号109来实施规划器的决策。在现实世界情境下,这些控制信号将驱动AV的物理活动者系统112。在模拟中,自我车辆动力模型204用于将所得的控制信号109转换成模拟内自我主体的真实感运动,从而模拟自主车辆对控制信号109的物理响应。
替选地,一种更简单的模拟形式假设自我主体在规划步骤之间精确地遵循每条规划轨迹。该方法绕过控制系统108(控制系统与规划系统可分立的程度上)并且不再需要自我车辆动态模型204。这可能足以测试规划的某些方面。
就外界主体在模拟器202内表现出自主行为/决策而言,实施某种形式的主体决策逻辑210来执行这些决策并确定场景内的主体行为。主体决策逻辑210在复杂度上可以与自我栈100本身相当,或者可以具有更有限的决策能力。其目的在于,在模拟器202内提供足够真实感的外界主体行为,以便能够有效地测试自我栈100的决策能力。某些情境下,这根本无需任何主体决策逻辑210(开环模拟),而其他情境下,可以使用相对有限的主体逻辑210(如基本自适应巡航控制(ACC))来提供有效的测试。适当时,一个或多个主体动态模型206可用于提供更真实感的主体行为。
根据场景的场景描述201a和(适用时)选定参数化201b来运行场景。场景通常既有静态元素又有动态元素,这些元素可以“硬编码”在场景描述201a中或者可配置进而由场景描述201a结合选定参数化201b来确定。在驾驶场景中,静态元素通常包括静态道路布局。
动态元素通常包括场景内的一个或多个外界主体,如其他车辆、行人、自行车等。
针对每个外界主体提供给模拟器202的动态信息范围可以变化。例如,场景可以通过可分立的静态层和动态层来描述。既定的静态层(例如定义道路布局)可以与不同的动态层结合用来提供不同的场景实例。针对每个外界主体,动态层可以包括该主体所遵循的空间路径以及该路径相关联的运动数据和行为数据之一或两者。在简单的开环模拟中,外界活动者仅遵循动态层中定义的空间路径和运动数据,该动态层为非反应式,即不会对模拟内的自我主体做出反应。这种开环模拟无需任何主体决策逻辑210即可实施。但在“闭环”模拟中,动态层却定义沿着静态路径遵循的至少一种行为(如ACC行为)。在此情形下,主体决策逻辑210在模拟内反应式实施该行为,即对自我主体和/或其他外界主体做出反应。运动数据仍可以与静态路径相关联,但在此情形下规范性较弱,可以例如用作沿路径的目标。例如,对于ACC行为,可以沿着主体寻求匹配的路径设定目标速度,但可允许主体决策逻辑210在沿着路径的任何点将外界主体的速度降低到目标以下,以便与前方车辆保持目标车距。
应当理解,可以采取多种方式、任何可配置程度下、出于模拟目的来描述场景。例如,主体的数目和类型及其运动信息可配置为一部分场景参数化201b。
模拟器202针对既定模拟的输出包括自我主体的自我行迹212a以及一个或多个外界主体的一个或多个主体行迹212b(行迹212)。每个行迹212a、212b是模拟内主体行为的完整历史记录,既有空间分量又有运动分量。例如,每条行迹212a、212b可以采取空间路径的形式,具有与沿路径各点相关联的运动数据,如速度、加速度、加加速度(jerk,加速度变化率)、加加加速度(snap,加加速度变化率)等。
还提供附加信息来补充行迹212并为其提供情境。这种附加信息称为“情境”数据214。情境数据214属于场景的物理情境,可以既有静态分量(如道路布局)又有动态分量(如模拟过程中天气条件变化程度)。在某种程度上,情境数据214可以是“透传”数据,因为该数据直接由场景描述201a或选定参数化201b定义,故不受模拟成果影响。例如,情境数据214可以包括直接来自场景描述201a或参数化201b的静态道路布局。然而,情境数据214通常包括模拟器202内导出的至少一些元素。这可以例如包括模拟的环境数据,如天气数据,其中模拟器202随着模拟进度而自由改变天气条件。在此情形下,天气数据可以具时间相关性,该时间相关性将反映在情境数据214中。
测试预言机252接收行迹212和情境数据214,并根据一组性能评估规则254对这些输出进行评分。如图所示,提供性能评估规则254作为测试预言机252的输入。
规则254按性质分类(例如通过/失败类型规则)。某些性能评估规则还与用于“评分”轨迹的数值性能度量相关联(例如,指示成功或失败的程度或者有助于解释分类结果或以其他方式与分类结果相关的一些其他量值)。评估规则254是以时间为基础﹣既定规则在场景中的不同点处可能具有不同成果。评分也是以时间为基础:针对每个性能评估度量,测试预言机252跟踪该度量的值(分数)随着模拟进度如何随时间变化。测试预言机252提供输出256,输出256包括每个规则的分类结果(例如通过/失败)时间序列256a以及每个性能度量的分数时间图256b,如后详述。结果256a和分数256b为专家122提供信息并且可用于标识和减轻被测栈100内的性能问题。测试预言机252还提供场景的总体(合计)结果(例如总体通过/失败)。测试预言机252的输出256与关于输出256所属场景的信息相关联地存储在测试数据库258中。例如,输出256可以与场景描述210a(或其标识符)以及选定参数化201b相关联地存储。除了时间相关的结果和分数之外,还可以将总分数分配给场景并存储为输出256的一部分。例如,每个规则的合计分数(例如总体通过/失败)和/或所有规则254的合计结果(例如通过/失败)。
图6B示出了另一种切片选择并且分别使用附图标记100和100S表示全栈和子栈。子栈100S将在图6A的测试流水线200内经受测试。
多个“晚期”感知组件102B形成部分待测子栈100S,并在测试期间应用于模拟感知输入203。晚期感知组件102B可以例如包括融合来自多个早期感知组件的感知输入的过滤或其他融合组件。
在全栈100中,晚期感知组件102B将接收来自早期感知组件102A的实际感知输入213。例如,早期感知组件102A可以包括一个或多个2D或3D边界框检测器,在此情形下,提供给晚期感知组件的模拟感知输入可以包括模拟中经由射线追踪导出的模拟2D或3D边界框检测结果。早期感知组件102A一般包括直接对传感器数据进行操作的组件。利用图6B的切片,模拟感知输入203将在形式上对应于正常由早期感知组件102A提供的实际感知输入213。然而,早期感知组件102A并不用作测试的一部分,而是用来训练一个或多个感知误差模型208,该感知误差模型208可用于将真实感误差以统计上严格的方式引入到模拟感知输入203中,将模拟感知输入203馈送到被测子栈100的晚期感知组件102B。
此类感知误差模型可称为感知统计性能模型(PSPM)或同义称为“PRISM”。PSPM的原理以及适用于构建和训练PSPM的合适技术的更多细节可以参阅国际专利公布WO2021037763、WO2021037760、WO2021037765、WO2021037761和WO2021037766,均全文引用归并本文。PSPM背后的构思是将真实感误差有效地引入到模拟感知输入中,又将模拟感知输入提供给子栈100S(即,反映了现实世界中要应用的早期感知组件102A所预期的误差类型)。在模拟情境下,由模拟器提供“完美”地面实况感知输入203G,但这些输入用来导出真实感更高的感知输入203以及由感知误差模型208引入的真实感误差。
如上述参考文献所述,PSPM可以依赖于代表物理状况(“混杂因素”)的一个或多个变量,从而允许引入反映不同现实世界可能状况的不同级别误差。因此,模拟器202可以通过简单地更改天气混杂因素值来模拟不同的物理状况(例如不同的天气条件),这又将改变引入感知误差的方式。
子栈100S内的晚期感知组件102b处理模拟感知输入203的方式与处理全栈100内现实世界感知输入213的方式完全相同,并且晚期感知组件102b的输出又驱动预测、规划和控制。
替选地,PRISM可用于对包括晚期感知组件208的整个感知系统102进行建模,在此情形下,PSPM用于生成真实感的感知输出,该感知输出直接作为输入传递给预测系统104。
根据实施方式,既定场景参数化201b与栈100既定配置的模拟成果之间可能存在也可能不存在确定性关系(即,针对相同的栈100,相同的参数化可能始终也可能不始终导致相同的成果)。可能通过多种方式出现非确定性。例如,当模拟是基于PRISM时,PRISM可能会在场景的每个既定时间步上对可能感知输出的分布进行建模,从中对真实感的感知输出进行概率采样。这会导致模拟器202内的非确定性行为,即由于采样的感知输出不同,相同的栈100和场景参数化可能会产生不同的成果。替选地或附加地,模拟器202可以本质上呈非确定性,例如天气、光照或其他环境条件可以在模拟器202内一定程度上随机的/概率。应当理解,这是一种设计选择:在其他实施方式中,反而可以在场景的参数化201b中完全指定变化的环境条件。在非确定性模拟情况下,可以针对每个参数化运行多个场景实例。合计通过/失败结果可以分配给参数化201b的特定选择,例如作为通过或失败成果的计数或百分比。
测试编排组件260负责出于模拟目的来选择场景。例如,测试编排组件260可以基于来自先前场景的测试预言机输出256来自动选择场景描述201a和合适的参数化201b。
测试预言机规则
性能评估规则254构建为要在测试预言机内应用的计算图(规则树)。本文中,术语“规则树”是指配置为实施既定规则的计算图,除非另作声明。每个规则构建为规则树,多个规则的集合可以称为多个规则树的“森林”。
图7A示出了从提取器节点(叶对象)302和评测器节点(非叶对象)304的组合构建规则树300的示例。每个提取器节点302从一组场景数据310中提取时变数值(例如浮点)信号(分数)。场景数据310是上述意义上的一种场景地面实况,可称为“场景地面实况”。场景数据310是通过在现实或模拟场景中部署轨迹规划器(如图2A的规划器106)来获得,如图所示,该数据包括自我和主体行迹212以及情境数据214。在图6或图6A的模拟情境下,提供场景地面实况310作为模拟器202的输出。
如图所示,每个评测器节点304具有至少一个子对象(节点),其中每个子对象是某个提取器节点302或另个评测器节点304。每个评测器节点接收来自其子节点的输出,并将评测器函数应用于这些输出。评测器函数的输出是分类结果时间序列。下例考虑到简单的二元通过/失败结果,但此类技术可以轻松扩展到非二元结果。每个评测器函数根据预定的原子规则来评测其子节点的输出。此类规则可以根据所需的安全模型灵活组合。
另外,每个评测器节点304从其子节点的输出导出时变数值信号,通过阈值条件将该信号与分类结果相关(参见下文)。
顶级根节点304a是不作任何其他节点的子节点的评测器节点。顶级节点304a输出最终结果序列,并且其后代(即,作为顶级节点304a的直接或间接子节点的那些节点)提供底层信号和中间结果。
图7B直观描绘了派生信号312和由评测器节点304计算的对应结果314时间序列的示例。结果314与派生信号312相关,因为当(且仅当)派生信号超过失败阈值316时返回通过结果。应当理解,这仅仅是一种将结果时间序列与对应信号相关联的阈值条件示例。
由提取器节点302直接从场景地面实况310提取的信号可以称为“原始”信号,区别于由评测器节点304计算的“派生”信号。结果和原始/派生信号可以随时间离散化。
图8A示出了在测试平台200内实施规则树的示例。
提供规则编辑器400来构建要用测试预言机252实施的规则。规则编辑器400接收来自用户(可以是也可以不是系统的终端用户)的规则创建输入。本例中,规则创建输入以领域特定语言(DSL)编码并定义要在测试预言机252内实施的至少一个规则图408。下例中的规则是逻辑规则,其中TRUE和FALSE分别表示通过和失败(应当理解,这纯粹是设计选择)。
下例考虑到使用原子逻辑谓词组合来制定的规则。基本原子谓词的示例包括基础逻辑门(OR、AND等)和逻辑函数,如“大于(Gt(a,b))”(当a大于b时返回TRUE,否则返回FALSE)。
Gt函数是在场景中自我主体与另一主体(具有主体标识符“other_agent_id”)之间实施安全横向距离规则。两个提取器节点(latd、latsd)分别应用LateralDistance和LateralSafeDistance提取器函数。这些函数直接对场景地面实况310进行运算,以分别提取时变横向距离信号(测定自我主体与所标识的其他主体之间的横向距离)以及自我主体人和所标识的其他主体的时变安全横向距离信号。安全横向距离信号可以取决于各种因素,如自我主体的速率和其他主体的速率(在行迹212中捕获)以及在情境数据214中捕获的环境条件(例如天气、光照、道路类型等)。
评测器节点(is_latd_safe)是提取器节点latd和latsd的父节点,并映射到Gt原子谓词。据此,当实施规则树408时,评测器节点is_latd_safe将Gt函数应用于提取器节点latd和latsd的输出,以便计算场景每个时间步的真/假结果,latd信号超过latsd信号的每个时间步返回TRUE,否则返回FALSE。这样就根据原子提取器函数和谓词构建了“安全横向距离”规则;当横向距离达到或低于安全横向距离阈值时,自我主体不符合安全横向距离规则。应当理解,这是规则树的极简示例。可以根据相同的原理构建任意复杂度的规则。
测试预言机252将规则树408应用于场景地面实况310,并经由用户界面(UI)418提供结果。
图8B示出了一种规则树示例,其横向距离分支与图8A的横向距离分支相对应。另外,规则树包括纵向距离分支和顶级OR谓词(安全距离节点is_d_safe)来实施安全距离度量。类似于横向距离分支,纵向距离分支从场景数据中提取纵向距离和纵向距离阈值信号(分别为提取器节点lond和lonsd),纵向安全评测器节点(is_lond_safe)在纵向距离高于安全纵向距离阈值时返回TRUE。顶级OR节点在横向距离和纵向距离之一或两者安全(低于适用阈值)时返回TRUE,若皆不安全则返回FALSE。在此情境下,仅其中一个距离超过安全阈值便足矣(例如,如果两辆车辆在相邻车道上行驶,当这二者并排行驶时,它们的纵向间距为零或接近于零;但若这两辆车辆具有足够的横向间距,则此情况并非不安全)。
例如,顶级节点的数值输出可以是随时间变化的鲁棒性分数。
可以构建不同的规则树,例如实施既定安全模型的不同规则,实施不同的安全模型,或者选择性将规则应用于不同的场景(在既定安全模型中,并非每条规则都必然适用于每个场景;通过这种方法可以将不同的规则或规则组合应用于不同的场景)。在此框架内,还可以构建规则来评估舒适度(例如,基于沿轨迹的瞬时加速度和/或加加速度)、进度(例如,基于达到定义目标所耗的时间)等。
上例考虑到在单个时间点对结果或信号进行评估的简单逻辑谓词,如OR、AND、Gt等,但实践中可能需要根据时间逻辑来制定某些规则。
Hekmatnejad等人著“Encoding and Monitoring Responsibility SensitiveSafety Rules for Automated Vehicles in Signal Temporal Logi(在信号时态逻辑中编码和监控自动驾驶车辆的责任敏感安全规则)”,2019年MEMOCODE'19第17届ACM-IEEE系统设计正式方法与模型国际会议论文集(全文引用归并本文)披露了RSS安全规则的信号时态逻辑(STL)编码。时态逻辑提供了一种用于构建符合时间条件的谓词的正式框架。这意味着评测器在既定时刻计算的结果可能取决于在另一时刻计算的结果和/或信号值。
例如,安全模型的要求可能是自我主体在设定时间帧内响应特定事件。可以使用规则树内的时间逻辑谓词以类似方式对此类规则进行编码。
上例中,在场景的每个时间步评估栈100的性能。由此可以得出总体测试结果(例如通过/失败),例如,如果某些规则(例如安全标准规则)在场景内的任何时间步均未通过则可能会导致总体失败(即,该规则必须在每个时间步均通过才能获得场景整体通过)。对于其他类型的规则,总体通过/失败标准可以是“更软性”标准(例如,如果某个规则在一定连续时间步数上未通过,则可仅针对该规则触发失败),这样的标准可以与情境相关。
图8C示意性描绘了在测试预言机252内实施规则评估的层次结构。接收一组规则254以在测试预言机252中进行实施。
某些规则仅应用于自我主体(例如舒适度规则,用于评测任何既定时刻自我轨迹是否超过某个最大加速度或加加速度阈值)。
其他规则涉及自我主体与其他主体的交互(例如,“无碰撞”规则或上文考虑的安全距离规则)。每个这样的规则在自我主体与每个其他主体之间成对进行评估。另举一例,“行人紧急制动”规则可以仅当行人走到自我车辆前方时才激活,并且仅针对该行人主体。
并非每条规则都必然适用于每个场景,某些规则可以仅适用于部分场景。测试预言机252内的规则激活逻辑422确定每个规则254是否以及何时适用于所涉场景,并且在这些规则适用时选择性激活规则。因而,规则可以针对整个场景保持活动,可以针对既定场景永不激活,或者可以仅针对某些场景才会激活。此外,可以在场景中不同点针对不同数量的主体来评估规则。这样选择性激活规则可以大幅提高测试预言机252的效率。
既定规则的激活或去激活可以取决于一个或多个其他规则的激活/去激活。例如,当行人紧急制动规则激活时,“最佳舒适度”规则可能视为不适用(因为行人安全是首要考虑因素),只要后者激活,前者便去激活。
规则评估逻辑424评估每个活动规则在其保持活动的任何时间段内的情况。每个交互规则在自我主体及其所适用的任何其他主体之间成对进行评估。
这些规则的应用也可能存在一定程度的相互依赖关系。例如,解决舒适度规则和紧急制动规则之间关系的另一种方式是每当针对至少一个其他主体激活紧急制动规则时就增大舒适度规则的加加速度/加速度阈值。
虽然考虑了通过/失败结果,但规则可能是非二元规则。例如,可以引入两个失败类别﹣“可接受”和“不可接受”。再者,考虑到舒适度规则和紧急制动规则之间的关系,当舒适度规则失败但紧急制动规则生效时,可能发生舒适度规则的失败可接受。因而,可以通过多种方式处理规则之间的相互依赖关系。
可以在提供给规则编辑器400的规则创建代码中指定规则254的激活标准,任何规则相互依赖关系的性质和这些相互依赖关系的实施机制也可如此指定。
图形用户界面
图9A示出了可视化组件520的示意性框图。如图所示,可视化组件具有连接到测试数据库258的输入端,用于在图形用户界面(GUI)500上渲染测试预言机252的输出256。在显示系统522上渲染GUI。
图9B示出了GUI 500的示例视图。该视图涉及包含多个主体的特定场景。本例中,测试预言机输出526属于多个外界主体,并且根据主体来组织结果。对于每个主体,在场景中某个时刻适用于该主体的每个规则都有结果时间序列。在所绘的示例中,已针对“第一主体(Agent 01)”选择了概览视图,这样就会显示针对每个适用规则计算的“顶级”结果。每个规则树的根节点都有计算的顶级结果。使用颜色编码来区分规则对于该主体不活动、活动并通过以及活动却失败的时间段。
针对每个结果时间序列提供第一可选元素534a,这允许访问规则树的低级结果,即规则树中低层次计算的结果。
图9C示出了“第二规则(Rule 02)”结果的第一种扩展视图,其中还将低级节点的结果进行可视化。例如,对于图4B的“安全距离”规则,可以将“is_latd_safe”节点和“is_lond_safe”节点的结果可视化(图9C中标签为“C1”和“C2”)。在Rule 02的第一种扩展视图中,可以看出Rule 02的成功/失败是由结果C1和C2之间的逻辑或关系定义;仅当C1和C2均失败时,Rule 02才会失败(如上述“安全距离规则”)。
针对每个结果时间序列提供第二可选元素534b,这允许访问相关联的数值性能分数。
图9D示出了第二种扩展视图,其中Rule 02结果和“C1”结果扩展为揭示这些规则对于Agent 01生效时间段的相关分数。分数显示为直观的分数时间图,同样用颜色编码来表示通过/失败。
示例场景
图10A描绘了模拟器202中超车场景的第一实例,该场景终止于自我车辆602与另一车辆604之间的碰撞事件。超车场景的特征在于多车道驾驶场景,其中自我车辆602沿着第一车道612(自我车道)移动,而另一车辆604最初沿着第二相邻车道604移动。在场景中的某个时刻,另一车辆604从相邻车道614移动到自我车辆602前方的自我车道612中(超车距离)。在此场景中,自我车辆602无法避免与其他车辆604相撞。第一场景实例响应于碰撞事件而终止。
图10B描绘了从第一场景实例的地面实况310a获得的第一预言机输出256a的示例。在自我车辆602与另一车辆604之间的场景时长内评估“无碰撞”规则。碰撞事件导致场景结束时此规则失败。此外,还评估了图4B的“安全距离规则”。随着另一车辆604横向移动靠近自我车辆602时,出现安全横向距离阈值和安全纵向距离阈值都被突破的时刻(t1),导致安全距离规则失败,这持续到t2时刻的碰撞事件。
图10C描述了第二种超车场景实例。第二种实例中,超车事件不会导致碰撞,自我车辆602能够在超车事件之后到达另一车辆604后方的安全距离。
图10D描绘了从第二场景实例的地面实况310b获得的第二预言机输出256b的示例。在此情形下,始终通过“无碰撞”规则。当自我车辆602与另一车辆604之间的横向距离变得不安全时,在时刻t3违反安全距离规则。然而,在时刻t4,自我车辆602设法到达另一车辆604后方的安全距离。因而,安全距离规则仅在时间t3与时间t4之间失败。
感知误差框架
如上所述,感知误差和驾驶规则都可基于由地面实况流水线144确定的提取伪地面实况144来评测并且呈现在GUI 500中。
图11示出了评估感知误差的架构。包括感知预言机1108的分类工具152用于提取和估计现实驾驶场景和模拟驾驶场景的感知误差,并输出结果连同来自测试预言机252的结果一起在GUI 500中渲染。应当注意,分类工具152虽在此称为感知分类工具,但可以更广泛地用于提取驾驶数据并呈现给用户,包括感知数据和驾驶性能数据,这可用于测试并改进自主车辆栈。
对于来自驾驶运行的现实传感器数据140,在线感知栈102的输出传递到分类工具152,以基于通过地面实况流水线400运行现实传感器数据140和在线感知输出获得所提取的地面实况144来确定“现实世界”感知误差数值1102。
类似地,对于模拟驾驶运行,其中从头开始模拟传感器数据,并且将感知栈应用于模拟传感器数据,由分类工具152基于来自感知栈的检测结果与模拟地面实况相比较来计算模拟感知误差1104。但在模拟情形下,可以直接从模拟器202获得地面实况。
在模拟器202直接对感知误差进行建模来模拟感知栈输出的情况下,获知模拟检测结果与模拟地面实况之间的差异,即模拟感知误差1110,并且将其直接传递到感知预言机1108。
感知预言机1108接收一组感知规则定义1106,其可以经由用户界面定义或以领域特定语言编写,稍后详述。感知规则定义1106可以应用定义感知误差及其极限的阈值或规则。感知预言机将定义的规则应用于针对驾驶场景获得的现实或模拟感知误差,并确定感知误差何处违反了定义的规则。将这些结果传递到渲染组件1120,渲染组件1120渲染所评估的感知规则的视觉指示符以在图形用户界面500中显示。应当注意,为了清楚起见,图11中未示出测试预言机的输入,但测试预言机252也取决于从地面实况流水线400或模拟器202获得的地面实况场景。
下面描述根据提取的地面实况评估现实世界驾驶栈感知误差的框架的更多细节。如上所述,测试预言机252的感知误差和驾驶规则分析皆可并入现实世界驾驶分析工具中,如下详述。
并非所有误差都有相同的重要性。例如,距离自我10米远的主体出现10厘米的平移误差要比距离自我100米远的主体出现同样的平移误差重要得多。一种解决这个问题的简单方法是根据与自我车辆的距离来缩放误差。然而,不同感知误差的相对重要性或者自我驾驶性能对不同误差的敏感性取决于既定栈的用例。例如,如果设计巡航控制系统在笔直道路上行驶,则该系统应对平移误差敏感,但无需对定向误差特别敏感。然而,AV处理环岛入口时应对定向误差高度敏感,因为它使用测得的主体定向作为主体是否离开环岛的指示,从而判断驶入环岛是否安全。因而,希望能够针对每个用例配置系统对不同感知误差的敏感度。
使用领域特定语言来定义感知误差。这可用于创建感知规则1402(参见图14),例如通过定义平移误差的允许极限。该规则针对与自我的不同距离实施一组可配置的安全误差级别。在表1400中对此做出定义。例如,当车辆距离不足十米时,其位置误差(即汽车检测结果与精细化伪地面实况检测结果之间的距离)可以定义为不超过10厘米。如果主体距离一百米远,则可接受误差可以定义为至多50厘米。使用查找表可以定义规则来适应任何既定用例。基于上述原则可以构建更复杂的规则。例如,规则可以定义为基于其他主体(如在自我车道与迎面交通被分隔物隔开的情况下,迎面车道中那些主体)相对于自我车辆的位置而完全忽略这些主体的误差。基于规则定义,自我超出定义截止距离的后方车流也可以忽略。
然后可以将一组规则一起应用于既定驾驶场景,其中通过定义包括所有待应用规则的感知误差规范1600。规范1600中可包括的典型感知规则定义了纵向和横向平移误差阈值(分别测定纵向和横向上相对于地面实况的平均检测误差)、定向误差阈值(定义旋转检测结果使之与对应的地面实况对直所需的最小角度)、大小误差阈值(测得边界框在每个维度上的误差,或者对齐后地面实况与测得框的联合交集(Intersection over Union,IOU)以获得量差)。另外的规则可以基于车辆动力学,包括主体速度和加速度误差以及分类误差,例如定义将汽车误分类为行人或卡车的惩罚值。规则还可以包括误报或漏检以及检测延迟。
基于定义的感知规则,可以建立鲁棒性分数。实际上,这可以用来说明,如果检测结果是在规定的规则阈值内,则系统应能安全驾驶,如果检测结果不在规定的规则阈值内(例如噪声太大),则可能会发生自我车辆无法应对的糟糕情况,这一点应该正式记录下来。可以包括复杂的规则组合,例如随时间推移评估检测结果以及合并复杂的天气依赖关系。
这些规则可用于将误差与UI中场景的播放相关联。如图14所示,不同的感知规则在时间线中显现为不同的颜色,该规则对应于DSL中应用既定规则定义的不同结果。这是DSL的主要用例(即分类工具可视化)。用户在DSL中编写规则,该规则在UI的时间轴中显现。
DSL还可用来基于针对定义规则计算的鲁棒性分数来定义系统的感知栈与规划栈之间的合约。图15示出了既定误差定义(例如平移误差)的鲁棒性分数的示例图。如果鲁棒性分数高于定义阈值1500,则指明感知误差是在预期性能范围内,系统作为整体应遵从安全驾驶。如图15所示,如果鲁棒性分数下降到阈值以下,则该误差属于“失约(out-of-contract)”,因为无法预期规划器106在这种感知误差级别还能安全驾驶。这个合约实质上成为感知系统的需求规范。这可用来归咎于感知或规划之一。如果汽车行为不当时将误差标识为履约(in-contract),则这表明规划器存在问题而不是感知问题,反之亦然,对于感知失约(out-of-contract)的不当行为,归责于感知误差。
可以在UI 500中显示合约信息,其中通过注释感知误差视为履约还是失约。这一过程的机制从DSL获取合约规范,并在前端自动标志失约误差。
图16示出了统一不同模态(即现实世界和模拟)感知误差的第三种用例。上文描述涉及现实世界驾驶,其中现实汽车行驶并收集数据,并且离线精细化技术和分类工具152计算感知误差以及这些误差是履约还是失约。然而,规定感知误差规则以评估误差的同一感知误差规范1600可应用于模拟驾驶运行。模拟可以是生成感知栈要处理的模拟传感器数据,也可以是使用感知误差模型直接从地面实况模拟检测,如前参照图11所述。
在第一种情形下,基于模拟传感器数据1112的检测结果将具有误差1104,DSL可用于定义这些误差是履约还是失约。这也可通过基于感知误差模型208的模拟来完成(即,将噪声添加到对象列表),其中可以计算并验证注入的误差1110以检查模拟器202正对预期要建模的内容进行建模。这也可用于有意注入履约的误差,而不注入失约的误差,以避免纯粹因感知误差而导致栈失败。一种用例中,可以在模拟中注入履约但接近合约边缘的误差,以便可以验证规划系统在预期感知性能下是否正确表现。这样就将感知和规划的进展解耦,因为它们可以根据该合约单独进行测试,一旦感知满足合约并且规划器在合约范围内工作,系统便应协同工作以达到令人满意的标准。
根据感知模型的切片位置,例如,如果进行融合,可能对模拟器的结果知之甚少,因此评估履约误差和失约误差有助于分析模拟场景。
另一种DSL应用是评测伪地面实况144本身的精度。通过精细化不完善的检测结果不可能获得完美的地面实况,但精细化流水线可能需要达到可接受精度才能可靠使用。DSL规则可用于评测当前的伪地面实况,并确定该伪地面实况与“真”GT目前的接近度以及未来尚需的接近度。这可能采用与用于检查根据伪地面实况计算的在线感知误差相同的合约,但对精度应用更严格的界限,以便足以确信伪地面实况对于在线检测结果而言足够“正确”用来评测。伪地面实况的可接受精度可以定义为根据“真”地面实况进行测定时的履约误差。即使经过精细化仍出现一些误差也可接受,只要在一定阈值内即可。如果不同的系统会有不同的用例,每个系统将应用不同的DSL规则集。
通过选择现实世界数据集、手工注释该数据集、根据定义的DSL规则对照此手工GT评估伪GT并确定是否已达到可接受精度,可以获得评估精细化检测结果的“真”地面实况。每次更新精细化流水线时,都可以重新运行对精细化检测结果的精度评测,以核查流水线未回归。
又一种DSL应用是,一旦在感知102与规划106之间定义了合约,便可划分需要在感知层完成的测试类型。这一点请参阅图17。例如,可以向感知层馈送一组传感器读数,这些读数都包含本应履约的误差﹣可以应用DSL规则来核查情况是否如此。类似地,对于规划层,可以首先应用地面实况测试1702,如果通过,则应用履约测试1704,这样系统馈有带履约误差的对象列表,并查看规划器的行为是否安全。
一个示例测试方案中,规划器可以视为“既定”,并且模拟可用于生成感知误差并查找规划器按预期表现可接受的感知精度极限。然后可以将这些极限用来半自动地为感知系统创建合约。可以根据该合约测试一组感知系统来查找满足该合约的系统,或者可以将该合约用作开发感知系统时的指导。
现实世界驾驶分析工具
上述测试框架(即测试预言机252和感知分类工具152)可以组合到现实世界驾驶分析工具中,其中感知和驾驶评估皆应用于从地面实况流水线400提取的感知地面实况(如图2C所示)。
图12A示出了用于分析从现实世界数据中提取的驾驶场景的示例用户界面。图12A的示例中,基于点云数据(例如LiDAR、Radar或从立体或单色深度成像导出)示出了场景的示意性俯视表示1204,并且在插图中显示了对应的摄像头帧1224。可以从高清地图数据中获得道路布局信息。摄像头帧1224也可以用检测结果来注释。用户界面还可以显示驾驶期间收集的传感器数据,如激光雷达、雷达或摄像头数据。这一点请参阅图12B。场景可视化1204还叠加有基于导出的伪地面实况以及来自车载感知组件的检测结果的注释。所示的示例中存在三辆车辆,各用一个框进行注释。实线框1220显示了关于场景主体的伪地面实况,而轮廓1222显示了来自自我感知栈102的未精细化检测结果。图中示出了可视化菜单1218,其中用户可选择要显示哪些传感器数据、在线和离线检测结果。可以根据需要对此切换开关。在车辆检测结果和地面实况检测结果旁边显示现实传感器数据可以允许用户标识或确认车辆检测中的某些误差。UI 500允许播放选定素材,所显示的时间线视图中,用户可以选择素材中的任意点1216来显示鸟瞰图快照以及与选定时间点相对应的摄像头帧。
如上所述,可以通过将检测结果与精细化伪地面实况144进行比较来评测感知栈102。根据定义的感知规则1106来评测感知,这可取决于特定AV栈的用例。这些规则为汽车检测结果与伪地面实况检测结果的定位、定向或尺度之间的差异指定不同的取值范围。可以用领域特定语言来定义规则(如上参照图14所述)。如图12A所示,沿着驾驶场景的“顶级”感知时间线1206聚集感知规则成果并显示不同的感知规则成果,违反任何感知规则时标志时间线上的时间段。这可以扩展为显示每个定义规则的一组单独的感知规则时间线1210。
感知误差时间线可以“缩小”以显示更长的驾驶运行时间段。在缩小视图中,可能无法以与放大时相同的粒度显示感知误差。在此情形下,时间线可以显示时间窗内感知误差集合,为放大视图提供一组汇总的感知误差。
第二驾驶评测时间线1208显示如何对照驾驶规则评测伪地面实况数据。顶级时间线1208中显示聚合的驾驶规则,并可以扩展成显示针对每个定义驾驶规则的性能的一组单独时间线1212。每个规则时间线可以如图所示进一步扩展为显示既定规则的数值性能分数随时间变化的曲线图1228。这对应于上文参照图9C描述的可选元素534b。在此情形下,伪地面实况检测视为场景中主体的实际驾驶行为。可以根据定义驾驶规则(例如基于数字高速公路法规)评估自我行为,以查看汽车在既定场景下的行为是否安全。
综上所述,感知规则评估和驾驶评测都是基于使用上述离线感知方法来精细化现实世界驾驶的检测结果。对于驾驶评测,使用精细化伪地面实况144来根据驾驶规则评测自我行为。如图2C所示,这也可用来生成用于测试的模拟场景。对于感知规则评估,感知分类工具152将记录的车辆检测结果与离线精细化检测结果进行比较,以快速标识和分类可能的感知失败。
还可以在驾驶员备注时间线视图1214中显示驾驶备注,其中可以显示驾驶期间标志的显要事件。例如,驾驶备注将包括车辆制动或转弯的时间点或者人类驾驶员脱离AV栈的时间点。
可以显示附加时间线,其中显示用户定义的度量以辅助用户调试和分类潜在问题。用户定义的度量可以定义为标识误差或栈缺陷以及发生误差时对误差进行分类。用户可以根据既定AV栈的目标来定义自定义度量。示例用户定义的度量可以标志消息何时无序到达或者感知消息的消息延迟。这有益于进行分类,因为可用于确定规划是因规划器误差还是因消息迟到或无序到达而发生。
图12B示出了显示传感器数据的UI可视化1204的示例,在插图中显示了摄像头帧1224。通常,由单张快照随时间显示传感器数据。然而,每帧可以显示多个时间步聚合的传感器数据,以便在高清地图数据不可用的情况下获取静态场景地图。如左侧所示,存在许多可视化选项1218来显示或隐藏数据,如现实生活场景期间收集的摄像头数据、雷达数据或激光雷达数据或者来自自我车辆自身感知的在线检测结果。本例中,来自车辆的在线检测结果显示为叠加实线框1220之上的轮廓1222,实线框1220表示地面实况精细化的检测结果。地面实况与车辆检测结果之间可以看到定向误差。
地面实况流水线400执行的精细化过程可用于生成伪地面实况144作为多个工具的基础。所示的UI显示来自感知分类工具152的结果,这允许使用测试预言机252评测单个驾驶例的ADAS驾驶能力、检测缺陷、提取场景来复制问题(参见图2C)以及发送标识的问题供开发者改进栈。
图12C示出了配置为使用户能够放大场景分段的示例用户界面。图12C示出了场景快照,如上参照图12A所述,在插图中显示示意表示1204以及摄像头帧1224。如上所述,图12C还示出了一组感知误差时间线1206、1210以及可扩展驾驶评测时间线1208和驾驶员注释时间线1214。
图12C所示的示例中,由同时延伸跨过所有时间线视图的滑动条1230指示驾驶场景的当前快照。这可以用来代替在单个播放条上显示场景中当前时间点的指示1216。用户可以点击滑动条1230以便选择并移动该滑动条到驾驶场景的任意时间点。例如,用户可能对特定误差感兴趣,如红色区段内或位置误差时间线上以其他方式指示为包含误差的区段内的时间点,该指示是基于当时观察到的“地面实况”与对应于所指示区段的时间段内检测结果之间的位置误差来确定。用户可以点击滑动条并将滑动条拖动到位置误差时间线内的感兴趣时间点。替选地,用户可以点击滑动条延伸穿过的时间线上任何时间点,以便将滑动条放置在该时间点。这样更新了示意图1204和插图1224以显示出对应于所选时间点的相应俯视示意图和摄像头帧。然后,用户可以检查示意图和可用摄像头数据或其他传感器数据,以查看位置误差并标识感知误差的可能原因。
在感知时间线1206上方和示意图下方显示出“标尺”条1232。该标尺条1232包含一系列指示驾驶场景时间间隔的“刻度”。例如,当时间线视图中显示十秒的时间间隔,显示出指示一秒间隔的刻度。某些时间点还标有数值指示符,例如“0秒”、“10秒”等。
在用户界面底部提供缩放滑块1234。用户可以沿着缩放滑块拖动指示符来更改时间线上显示的驾驶场景部分。替选地,可以通过点击滑块条上指示符应移动到的所需点来调整指示符的位置。显示百分比来指示当前选定的缩放级别。例如,如果完整的驾驶场景长达1分钟,则时间线1206、1208、1214分别显示这1分钟驾驶过程中各自的感知误差、驾驶评测和驾驶员备注,并且缩放滑块显示100%,按钮处于最左边的位置。如果用户滑动按钮直到缩放滑块显示200%,则时间线将调整为仅显示对应于场景30秒片段的结果。
缩放可以配置为根据滑动条的位置来调整时间线的显示部分。例如,如果将一分钟场景的缩放设置为200%,则放大的时间线将显示三十秒片段,其中以滑动条所在的选定时间点为中心,即在滑动条指示的时间点前后各显示时间线的十五秒。替选地,可以相对于诸如场景起点等参考点来应用缩放。在此情形下,缩放后时间线上显示的放大片段始终从场景起点处开始。标尺条1232的刻度和数值标签的粒度可以根据时间线放大或缩小的程度来调整。例如,当场景从30秒放大到显示3秒片段,缩放前可以按10秒间隔显示数值标签并按1秒间隔显示刻度,缩放后可以按1秒间隔显示数值标签并按100毫秒间隔显示刻度。将时间线1206、1208、1214中时间步的可视化“拉伸”为对应于放大的片段。可以在放大视图中的时间线上显示更高级别的细节,因为时间上更小的片段可由UI内时间线显示中更大的区域来表示。因而,较长场景内跨越很短时间的误差可能只有在放大后才能在时间线视图中变得可见。
其他缩放输入可用于调整时间线显示场景的更短或更长片段。例如,在触摸屏设备上实施用户界面时,用户可以通过应用捏合手势对时间线应用缩放。另一示例中,用户可以向前或向后滚动鼠标滚轮来更改缩放级别。
将时间线放大为仅显示驾驶场景子集时,可以随时间滚动时间线来随时间移置所显示的部分,使得用户可以在时间线视图中检查场景的不同部分。用户可以通过点击并拖动时间线视图底部的滚动条(未示出)或者例如使用相关设备上运行UI的触摸板来进行滚动。
用户还可以选择场景片段,例如将其导出以供进一步分析或作为模拟的基础。图12D示出了用户可以如何选择驾驶场景的区段。用户可以用光标点击标尺条1232上的相关点。这一过程可以在任何级别的缩放下完成。这样对用户选择设定了第一极限。用户沿着时间线拖动光标,以便将选择范围扩大到选定时间点。如果放大,通过连续拖动到场景显示片段的末尾,这会向前滚动时间线并允许进一步扩大选择。用户可以在任意点停止拖动,其中用户停止的那点就是用户选择的结束极限。用户界面底部的滑动条1230显示所选片段的时间长度,当用户拖动光标以扩大或缩小选择时更新该值。所选片段1238显示为标尺条上的阴影部分。显示的多个按钮1236提供诸如“提取跟踪场景(Extract Trace Scenario)”等用户动作来提取与选择相对应的数据。该数据可以存储在提取场景的数据库中。这可用于进一步分析或作为模拟类似场景的基础。做出选择之后,用户可以进行放大或缩小,并且标尺条1232上的选择1238也随着标尺和感知、驾驶评测和驾驶备注时间线伸出或缩回。
还可以使用伪地面实况数据与数据搜索工具一起用来搜索数据库内的数据。当部署新版本的AV栈时可以使用此工具。对于新版本的软件,汽车可以行驶一段时间(例如一周)来收集数据。在这些数据内,用户可能有兴趣测试汽车在特定条件下的行为,因此可能会提供查询,例如“向我展示整夜驾驶情况(show me all night time driving)”或“向我展示下雨时的情况(show me when it was raining)”等。数据搜索工具将提取相关素材,然后可以使用分类工具进行调查。数据搜索工具充当一种进一步分析的切入点。
可以使用另外的评测工具,例如,一旦实施了新的软件版本并且AV行驶了一段时间并收集了一定量数据,则可聚合数据以了解该汽车的总体性能。该汽车可能具有一组新开发的功能,例如运用指示灯以及进出环岛,想要对汽车在这些功能上的性能进行总体性能评估。
最后,可以使用重新模拟工具来运行开环模拟,其中通过在新栈上运行传感器数据来核查回归问题。
图13示出了感知分类工具152的示例用户界面,其中专注于场景可视化1204和感知误差时间线1206、1210。如左侧所示,存在许多可视化选项1218来显示或隐藏数据,如现实生活场景期间收集的摄像头数据、雷达数据或激光雷达数据或者来自自我车辆自身感知的在线检测结果。在此情形下,可视化仅限于精细化检测结果,即仅离线检测到的主体,精细化显示为实线框。每个实线框都有相关联的在线检测结果(未显示),这是在该快照的纠错/精细化之前感知主体的方式。如上所述,地面实况144与原始检测之间存在一定量误差。可以定义各种误差,包括场景中主体的比例、定位和定向误差以及误报“鬼影(Ghost)”检测和漏检。
如上所述,并非所有误差都有相同的重要性。感知规则的DSL允许根据所需的用例来定义规则。例如,如果设计巡航控制系统在笔直道路上行驶,则该系统应对平移误差敏感,但无需对定向误差特别敏感。然而,AV处理环岛入口时应对定向误差高度敏感,因为它使用测得的主体定向作为主体是否离开环岛的指示,从而判断驶入环岛是否安全。感知误差框架允许定义单独的表单和规则,指示既定平移或定向误差对于该用例的相对重要性。图13中自我车辆周围所示的框用于说明显示感知规则可定义为目标的感兴趣区域。在感知误差时间线1210内,可以在用户界面中显示规则评估结果。也可以在示意表示1204中显示规则的视觉指示符,例如通过标志定义特定规则的区域(图13中未示出)。
除了显示驾驶运行单张快照的结果之外,还可以应用查询和过滤来根据感知评估结果过滤数据,并为执行分析的用户提供更多情境。
图18A和图18B示出了用于过滤和显示现实生活驾驶运行的感知结果的图形用户界面500的示例。对于既定运行,如前所述,显示具有所有感知误差的聚合规则评估的感知误差时间线1206。可以显示第二组时间线1226,指示驾驶场景特征,如天气条件、道路特征、其他车辆和交通弱势群体。这些特征可以在用于定义感知误差规则的相同框架内定义。应当注意,感知规则可以定义为根据不同的驾驶条件应用不同的阈值。图18A还示出了过滤特征1800,其中用户可以选择查询应用于评估。本例中,用户查询是查找存在交通弱势群体(Vulnerable Road User﹣VRU)的驾驶运行“片段”。
该查询处理后用于过滤驾驶场景表示帧,以找到标注有交通弱势群体的那些帧。图18B示出了应用过滤器后感知时间线的更新视图。图中示出了原始时间线的子集,该子集中始终存在交通弱势群体,如“VRU”时间线中所指示。
图19A示出了可用于图形用户界面500内执行分析的另一特征。图中示出了用户可调整的一组误差阈值滑块1900。可以通过DSL中针对感知规则定义的感知误差极限来告知误差范围。用户可以通过将标记滑动到该误差所预期的新阈值来调整既定误差的阈值。例如,用户可以设定平移误差失败的阈值为31米。然后可以将该阈值反馈给前述感知规则DSL中写入的感知规则规范内所定义的平移误差,以调整规则定义为将新阈值考虑在内。将新规则评估传递到前端,在既定误差的扩展时间线视图1210中指示目前针对新阈值发生的规则失败。如图19A所示,降低不可接受误差值的阈值会导致时间线中标志更多误差。
图19B示出了如何将聚合分析应用于驾驶场景的选定切片,以允许用户基于计算的感知误差来选择和检查最相关的帧。如前所述,用户可以使用过滤特征1800来过滤场景以仅显示存在交通弱势群体的那些帧。在匹配帧内,用户可以进一步使用选择工具1902将场景“切片”为特定片段,可以将选择工具1902沿着时间线1206拖动并扩展到覆盖感兴趣时段。对于选定片段,可以在显示器1904中向用户显示一些聚合数据。可以选择选定片段内捕获的感知误差的各种属性并对照彼此绘制图表。在所示的示例中,将误差类型和误差大小绘制成图表,允许用户可视化场景所选部分的每类最重要的误差。用户可以选择图表上任意点来显示发生误差的相应帧的摄像头图像1906以及场景的其他变量,如遮挡,用户可以检查该帧是否有可能导致误差的任何因素。
地面实况流水线400可以连同感知分类工具152和测试预言机252以及另外用于查询、聚合和分析车辆性能的工具一起使用,包括上述数据搜索工具和聚合评测工具。除了上述快照视图之外,图形用户界面500还可以显示来自这些工具的结果。
虽然上述示例考虑了AV栈测试,但各技术也可应用于测试其他形式移动机器人的组件。其他移动机器人正在研发中,例如用于在内外工业区中载运供货。此类移动机器人不会载人,属于一类称作UAV(无人自主载具)的移动机器人。自主空中移动机器人(无人机)也正处于研发中。
本文引用组件、功能、模块等可以指代以各种方式在硬件级实施的计算机系统的功能组件。计算机系统包括执行硬件,可配置为执行本公开的方法/算法步骤和/或实施使用本技术训练的模型。术语“执行硬件”涵盖配置为执行相关方法/算法步骤的任何形式/组合的硬件。执行硬件可以采取一个或多个处理器形式,可以是可编程硬件或不可编程硬件,或者可以使用可编程硬件和不可编程硬件的组合。合适的可编程处理器的示例包括基于指令集架构的通用处理器,如CPU、GPU/加速器处理器等。这种通用处理器通常执行保存在耦合到处理器或处理器内部的存储器中的计算机可读指令,并且根据这些指令执行相关步骤。其他形式的可编程处理器包括具有可通过电路描述代码编程的电路配置的现场可编程门阵列(FPGA)。不可编程处理器的示例包括专用集成电路(ASIC)。代码、指令等可以酌情存储在暂态或非暂态介质上(后者示例包括固态、磁和光存储设备等)。图2A的运行时栈的子系统102、104、106、108可以在测试等情境下车载或车外计算机系统中以可编程或专用处理器或这两者的组合来实施。类似地,包括图11和图6在内的附图中的各种组件(如模拟器202和测试预言器252)可以在可编程和/或专用硬件中实施。
Claims (33)
1.一种用于测试实时感知系统的计算机系统,所述实时感知系统用于部署在配备传感器的车辆中,该计算机系统包括:
至少一个输入端,配置为接收供配备传感器的车辆执行的至少一个现实世界驾驶运行的数据,所述数据包括:(i)由所述配备传感器的车辆捕获的传感器数据时间序列,(ii)由被测实时感知系统从中提取的至少一个相关运行时感知输出时间序列;
渲染组件,配置为生成用于渲染图形用户界面GUI的渲染数据,所述图形用户界面包括感知误差时间线,对于所述至少一个现实世界驾驶运行的多个时间步中每一个时间步,所述感知误差时间线具有该时间步发生任何感知误差的视觉指示;
地面实况流水线,配置为处理如下至少一项:(i)所述传感器数据时间序列,(ii)所述运行时感知输出时间序列,其中通过对此应用至少一个非实时和/或非因果感知算法来提取至少一个地面实况感知输出时间序列,以便与所述运行时感知输出进行比较;
感知预言机,配置为将所述运行时感知输出时间序列与所述地面实况感知输出时间序列进行比较,从而标识一个或多个时间间隔内发生的任何感知误差,以便生成所述感知误差时间线。
2.根据权利要求1所述的计算机系统,其中,所述感知预言机标识感知误差,其中通过计算所述运行时感知输出时间序列与所述地面实况感知输出时间序列之间的误差数值并将所述误差数值与至少一个感知误差阈值进行比较。
3.根据权利要求2所述的计算机系统,其中,如果所述误差数值超过所述至少一个感知误差阈值中一个或多个阈值,则所述误差数值标识为感知误差。
4.根据权利要求2或3所述的计算机系统,其中,所述至少一个感知误差阈值为固定阈值。
5.根据权利要求2或3所述的计算机系统,其中,所述至少一个感知误差阈值能根据一个或多个场景变量而变化。
6.根据权利要求2至5中任一项所述的计算机系统,其中,所述误差阈值能够经由图形用户界面来调整。
7.根据权利要求2至6中任一项所述的计算机系统,其中,所述误差阈值能经由提供给所述感知预言机的规则定义指令来调整。
8.根据权利要求7所述的计算机系统,其中,使用规则编辑器来定义感知误差规范,包括以领域特定语言编码的规则定义指令。
9.根据权利要求5所述的计算机系统,其中,所述一个或多个场景变量包括感知对象与自我主体之间的距离,并且所述变量阈值随着所述感知对象与所述自我主体之间的距离增长而增大。
10.根据权利要求4所述的计算机系统,其中,所述误差数值根据一个或多个场景变量来加权。
11.根据权利要求2至10中任一项所述的计算机系统,其中,所述误差数值归一化到预定范围。
12.根据权利要求2至11中任一项所述的计算机系统,其中,除了所标识的感知误差之外,还能经由所述GUI访问所述误差数值。
13.根据任一项上述权利要求所述的计算机系统,其中,所述感知误差包括下列至少一项:
二元指标;
非二元分类指标。
14.根据任一项上述权利要求所述的计算机系统,其中,所述感知误差包括跨多个对象和/或传感器和/或传感器模态和/或时间窗计算的聚合误差。
15.根据权利要求14所述的计算机系统,其中,定义多个低级感知误差时间线,并且通过将预定规则应用于所述低级感知误差时间线来填充顶级聚合感知误差时间线。
16.根据权利要求15所述的计算机系统,其中,所述顶级时间线能扩展为查看所述低级时间线。
17.根据任一项上述权利要求所述的计算机系统,其中,所述感知预言机配置为过滤掉所述驾驶运行的至少一个时间间隔,其中,从所述感知误差时间线中省略该时间间隔,其中,基于一个或多个过滤标准来执行过滤:感知误差和/或与所述现实世界驾驶运行相关联的一个或多个标注/标签。
18.根据权利要求17所述的计算机系统,其中,经由所述GUI能访问所述标签。
19.根据任一项上述权利要求所述的计算机系统,其中,在所述GUI上显示所述驾驶运行的示意表示,所述示意表示显示所述驾驶运行在当前时间步的静态快照,其中,所述当前时间步能经由对所述GUI的指令来选择。
20.根据权利要求19所述的计算机系统,其中,视觉指示符改变为在所述感知误差时间线上标记所述当前时间步。
21.根据权利要求19或20所述的计算机系统,其中,在所述GUI上显示所述至少一个驾驶运行的传感器数据。
22.根据任一项上述权利要求所述的计算机系统,其中,所述传感器数据包括如下至少一项:
激光雷达点云,
雷达点云,
单色/立体深度图像,或
2D摄像头图像。
23.根据权利要求19或其任一项从属权利要求所述的计算机系统,其中,所述地面实况感知输出时间序列用于在所述GUI中渲染所述示意表示。
24.根据权利要求23所述的计算机系统,其中,经由所述GUI显示所述运行时感知输出时间序列,以便与所述地面实况感知输出进行视觉比较。
25.根据权利要求24所述的计算机系统,其中,所述运行时感知输出时间序列叠加在所述示意表示上。
26.根据任一项上述权利要求所述的计算机系统,其中,所述地面实况感知输出时间序列采取每个主体的行迹的形式,行迹包括所述主体的空间与运动状态时间序列。
27.根据任一项上述权利要求所述的计算机系统,还包括对所述地面实况感知输出应用驾驶性能评测的测试预言机,其中,在同样显示在所述GUI上的第二性能时间线中传达所述驾驶性能评测的结果。
28.根据任一项上述权利要求所述的计算机系统,其中,所述传感器数据包括来自两种以上传感器模态的数据,并且至少一种传感器模态用于为至少一种其他传感器模态提供地面实况。
29.根据任一项上述权利要求所述的计算机系统,其中,所述系统内使用手工标注的地面实况数据来测定所述地面实况感知输出的精度。
30.根据任一项上述权利要求所述的计算机系统,其中,所述系统内使用手工标注的地面实况数据来测定所述运行时感知输出的精度。
31.根据任一项上述权利要求所述的计算机系统,其中,在所述GUI中渲染从模拟驾驶运行中导出的感知误差和/或从现实世界驾驶数据中导出的感知误差而非地面实况感知输出。
32.一种用于测试实时感知系统的计算机实现方法,所述实时感知系统用于部署在配备传感器的车辆中,该方法包括:
在输入端处接收供配备传感器的车辆执行的至少一个现实世界驾驶运行的数据,所述数据包括:(i)由所述配备传感器的车辆捕获的传感器数据时间序列,(ii)由被测实时感知系统从中提取的至少一个相关运行时感知输出时间序列;
由渲染组件生成用于渲染的图形用户界面GUI的渲染数据,所述图形用户界面包括感知误差时间线,对于所述至少一个现实世界驾驶运行的多个时间步中每一个时间步,所述感知误差时间线具有该时间步发生任何感知误差的视觉指示;
在地面实况流水线处理如下至少一项:(i)所述传感器数据时间序列,(ii)所述运行时感知输出时间序列,其中通过对此应用至少一个非实时和/或非因果感知算法来提取至少一个地面实况感知输出时间序列,以便与所述运行时感知输出进行比较;
在感知预言机处将所述运行时感知输出时间序列与所述地面实况感知输出时间序列进行比较,从而标识一个或多个时间间隔内发生的任何感知误差,以便生成所述感知误差时间线。
33.一种计算机程序,包括用于对计算机系统进行编程以实施根据权利要求32所述方法的可执行程序指令。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2108182.3 | 2021-06-08 | ||
GB2108952.9 | 2021-06-22 | ||
GB2108958.6 | 2021-06-22 | ||
GB2111765.0 | 2021-08-17 | ||
GBGB2111765.0A GB202111765D0 (en) | 2021-08-17 | 2021-08-17 | Support tools for autonomous vehicle testing |
PCT/EP2022/065509 WO2022258671A2 (en) | 2021-06-08 | 2022-06-08 | Support tools for autonomous vehicle testing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117529711A true CN117529711A (zh) | 2024-02-06 |
Family
ID=77859967
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280041274.8A Pending CN117529711A (zh) | 2021-06-08 | 2022-06-08 | 自主车辆测试支持工具 |
CN202280040540.5A Pending CN117425882A (zh) | 2021-06-08 | 2022-06-08 | 自主车辆测试支持工具 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280040540.5A Pending CN117425882A (zh) | 2021-06-08 | 2022-06-08 | 自主车辆测试支持工具 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN117529711A (zh) |
GB (1) | GB202111765D0 (zh) |
-
2021
- 2021-08-17 GB GBGB2111765.0A patent/GB202111765D0/en not_active Ceased
-
2022
- 2022-06-08 CN CN202280041274.8A patent/CN117529711A/zh active Pending
- 2022-06-08 CN CN202280040540.5A patent/CN117425882A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
GB202111765D0 (en) | 2021-09-29 |
CN117425882A (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3789920A1 (en) | Performance testing for robotic systems | |
US20230234613A1 (en) | Testing and simulation in autonomous driving | |
US20240043026A1 (en) | Performance testing for trajectory planners | |
CN116171455A (zh) | 自主驾驶中的运行设计域 | |
US20240194004A1 (en) | Performance testing for mobile robot trajectory planners | |
KR20240019231A (ko) | 자율주행 차량 테스트를 위한 지원 도구 | |
US20240143491A1 (en) | Simulation based testing for trajectory planners | |
CN118284886A (zh) | 生成用于测试自动驾驶车辆行为的模拟环境 | |
CN116940933A (zh) | 自动驾驶车辆的性能测试 | |
CN117529711A (zh) | 自主车辆测试支持工具 | |
WO2024115764A1 (en) | Support tools for autonomous vehicle testing | |
WO2024115772A1 (en) | Support tools for autonomous vehicle testing | |
EP4338055A1 (en) | Test visualisation tool | |
CN117501249A (zh) | 测试可视化工具 | |
US20240256415A1 (en) | Tools for performance testing autonomous vehicle planners | |
WO2023227776A1 (en) | Identifying salient test runs involving mobile robot trajectory planners | |
EP4373726A1 (en) | Performance testing for mobile robot trajectory planners | |
Hammod | Determining Spatial Relevancy of Objects for Improved Development of Multi-Object Tracking in Autonomous Driving Systems | |
CN117242449A (zh) | 移动机器人轨迹规划器的性能测试 | |
CN116964563A (zh) | 轨迹规划器的性能测试 | |
WO2023017090A1 (en) | Perception testing | |
WO2023021208A1 (en) | Support tools for av testing | |
WO2022248692A1 (en) | Tools for performance testing autonomous vehicle planners |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |