编者按:本篇研究工作为生成自动驾驶测试用例提供了解决思路,依据本文提出的方法论可以高效搜索,生成具有测试意义的场景(既具备预期的形式,又可以对自动驾驶系统造成挑战,以测试相关功能)。本文提出的方法论将在高速公路路段上的适应度函数转移到交叉路口场景,具有较好的易用性和扩展性,适应度函数间进行组合也相当直观,并对扩展时会遇到的缺陷进行了规避。
《Fitness Function Templates for Testing Automated and Autonomous Driving Systems in Intersection Scenarios》
2021 IEEE Intelligent Transportation Systems Conference (ITSC)
Nicola Kolb, Florian Hauer, Alexander Pretschner
https://ieeexplore.ieee.org/abstract/document/9564591
摘要:基于场景的测试方法,是测试自动驾驶系统的常用方法。专家推导出诸如“十字路口左转”之类的场景类型,并将其提炼为参数化的场景。参数域的范围往往包含可能的测试用例,并非所有这些直观的测试用例都是“好的”测试用例,尽管它们的形式都是正确的,并对测试中的驾驶系统构成了挑战。对于“好的”测试用例的选择,文献提出了基于搜索、以适应度函数为优化目标的技术。现有的工作集中在技术方面或创建专用的适应度函数,而很少在方法论方面进行研究,以派生适当的适应度函数。以适应度函数模板的形式进行的方法论研究,迄今为止只在高速公路的直线段进行实例化。如何为其他道路环境(如十字路口场景类型),创建适当的适应度函数的方法论尚未解决。在本文工作中,我们将现有的高速公路适应度函数模板转移到交叉路口,为搜索技术在基于场景的测试中如何避免可能出现的缺陷提供帮助,并验证了适应度函数转移模板的适用性。
关键词:自动驾驶测试,交叉路口区域,测试方法,适应度函数
自动驾驶系统测试常常以基于场景的模拟测试方法进行,其中交通场景被编码,并抽象为所谓的场景类型[18]。例如图1所示的T型路口场景,被测车辆e(包含正在测试的驾驶系统)想要向左转弯,而另一辆车辆c从对向直线驶入路口。基于图1有许多不同类型的测试场景实例,例如左转弯与不同的速度迎面而来的交通。业界和现有研究工作中的常见做法(调查见[22])是将场景类型转化为参数化场景[18]。在我们的示例场景类型中,有几个方面可以被参数化,即被测车辆的初始速度以及迎面而来的交通参与者的启动时间和速度(图1,右)。为每个参数分配一个具体的值便会产生一个场景实例,作为一个潜在的测试用例[18]。
然而,并非参数空间中的所有场景实例都具有正确的形式,也就是说,它们不包含预期的车辆动作(此处为左转),或呈现与其他交通参与者的“不相关”的相对位置。在那些形式正确的场景实例中,并非都对测试中的驾驶系统提出挑战,例如周围的车辆都处于距离被测车辆较远的位置。相反,“好的”测试用例必须可以在参数空间中识别并包含预期车辆动作,并对被测系统造成挑战[13]。
文献[1],[2],[5],[7],[8],[13],[16]等的研究工作,均提出使用基于搜索的方法。在所谓的适应度函数的指导下,这些技术旨在确定有趣的场景实例。适应度函数作为描述测试用例质量的定量度量,在此基础上系统地派生相关的测试用例[10]。基于搜索的测试用例选择,在技术方面已经得到了广泛的理解和研究。但是,现有的多数研究工作都假定了适应度函数,或者为特定的系统或场景类型[13]临时创建它。对于工业中的实际应用,这种假设是有问题的,因为适应度函数的质量对于测试结果是至关重要的。因此,在推导适应度函数时,需要方法论指导。在团队之前的研究工作[13]中,我们以适应度函数模板的形式提供了这样的方法论,但仅在高速公路环境中进行测试用例的实例化,而忽略了其他场景环境。
我们将先前的工作[13]中的高速公路场景的适应度模板,进行推广、调整和转换到交叉路口场景,并论证了其适用性,为基于搜索的自动驾驶系统测试技术增加了方法论基础和实践。
在将基于搜索的方法应用到应该避免的场景上测试时,我们强调了相关的方法论缺陷。
图2给出了基于场景的自动驾驶系统测试过程的抽象概述。专家们根据可用的规范、要求,以及关于被测驾驶系统及其交通环境的心理学模型,推导出场景类型。作为补充,可以基于驾驶数据,对场景实例进行自动聚类,并对生成的场景类型列表进行完整性评估(图2中的⑦),如在实际交通数据集上进行验证[15]。然后通过使用一组相关参数类型(图2中的⑩),为它们派生(图2中的⑧)参数化的场景类型(图2中的⑨)。在之前的研究工作[13][14]中,我们将参数化场景定义为(F, P, D)。其中F为参数化场景的内容,也包含场景的非参数化部分;P描述了参数化的场景元素pi∈P,i=1,…,n,以及对应的域di∈D。这些参数的域构成了巨大的场景实例空间A=d1×…×dn-1×dn∈Rn,a∈A[18]。为了从这个场景实例空间A中选择“好的”测试用例,文献[1],[2],[5],[7],[8],[13],[16]在基于搜索的优化dsafe方法上进行了深入研究。本文研究工作的重点是适应度函数(图2中⑫)的派生(图2中⑪,用灰色突出显示),用于指导优化生成(图2中⑬)“好的”测试用例(图2中⑭)。这种生成通常涉及使用系统模型⑮进行模拟设置。
图2 基于场景的测试过程的抽象描述(以前的版本出现在[12][15]中)
我们的方法论指导包括两个方面:(1)我们为基于[13]的交叉路口场景类型,提供适应度函数模板;(2)展示它们的正确用法。通过这种方式,我们的目标是减少从业者创建适应度函数来识别所需形式的具有挑战性的场景实例时的努力和错误的可能性。
本文的研究目标是产生“好的”测试用例,这些测试用例是揭示潜在的错误系统行为的场景实例。在“好的”测试用例中,正确的被测系统会接近但不会超出安全边界,而有缺陷的系统则会超过了安全边界[13],[21]。这就要求场景实例既具有挑战性,又具有预期的形式。
以下模板确保搜索哪些场景实例具有预期的形式并具有挑战性。我们将[13]的模板从高速公路场景转移,并推广到交叉路口。我们假设基于搜索的方法是最小化的。
1)违反安全边界的模板:如图3中的示例:当对向车道有车辆c驶来时,自动驾驶汽车e应在十字路口向左转弯。如果系统决定在车辆c前左转,必须保持一定的安全距离(在时间或空间上安全)以确保安全。在转弯过程中,车辆之间保持一段距离(见图3,左)。为进行简要解释,图3中画出了空间中的距离。然而,我们也可以考虑其他可用于定义安全边界的、可测量的标准。
直观地说,人们可能倾向于应用基于搜索的方法来搜索距离d (或其他度量)最小的场景实例。然而,这种倾向是存在问题的,主要有两个原因:(1)搜索将是oracle问题[4]的一个实例,最小的d可以表示两车发生碰撞。然而,碰撞可能是,也可能不是由被测车辆造成[7],[8]。因此,很难判断碰撞是否是被测驾驶系统不安全行为的结果。(2)搜索到的目标可能是没有挑战性的测试用例。被测驾驶系统可以在较低的驾驶速度下接受较低的安全距离,从而将搜索导向低速场景。然而,最为违反安全的时刻(或最接近违反安全的时刻)可能是,也可能不是在低速情况下。
我们提出以下模板(基于[13])来搜索交叉路口的违反安全行为,如图3所示:
其中,∆d(t) = d(t)- dsafe(t)表示距离超出安全边界的缓冲区。场景实例的适应度值是最小的,即场景中最接近超出安全边界的时刻。当fsafety处于极小值时,避免了上文讨论的问题:(1)模板的结构中包含了一个oracle。当fsafety为正值时,尚未超出安全边界,并且可知缓冲区域的大小;如果是负值,说明超出安全边界,并其可知超出安全边界的程度。(2)当∆d(t)最小时,将搜索出关键场景实例,因为说明最接近违反安全的时刻(假设系统安全)或最为违反安全的时刻(假设系统故障)被识别。这允许了以下关于安全的推理:如果没有min(∆d(t))<0的场景实例,可以假设被测系统在这种参数化场景类型的所有实例中都是安全的。
在适应度模板中,可以用任何描述安全的、可测量的量代替dsafe(t),例如在时间或空间上。在我们的实验中,我们使用的是RSS[24]提出的安全边界,但任何其他安全距离,如[20],[23],同样可以使用。
2)确保所需场景形式的模板:为了安全论证,有必要“证明”被测驾驶系统在各种类型的场景中均表现良好,这就需要确保场景实例具有预期的形式,即是特定场景类型的实例。
一个简单的适应度函数模板如下:如果场景不是预期的形式,则分配一个糟糕的常量适应度值。如果是预期的形式,则分配适宜的常量适应度值。但这种模板并没有为基于搜索的测试技术的参数空间提供良好的指导。相反,我们建议:非预期形式的场景实例产生的适应度值,越接近预期的形式越良好。对于是预期形式的场景实例,将产生一个良好的常量适应度值。在预期形式的场景实例中确定最具挑战性的场景实例,将由“违反安全”的模板决定。
我们建议以下模板,对我们之前的工作[13]进行了概括,并使模板适用于交叉路口场景:
表示一个场景类型的时间或空间方面的变量,例如,在被测车辆开始左转的时刻tl,该场景中行人的位置。如果r(tl)在范围[lb, ub]内(上界为ub,下界为lb),此时场景实例就处于预期形式,例如行人的位置在被测车辆的行驶车道范围内,以确保被测车辆在此场景下必须减速反应。下面,我们将展示三个示例:
有两个边界的空间位置(l):在图4(左)中,描述了行人场景类型。本车e向左转弯,并应必须对行人p作出反应。这要求行人处于危险状态,即本车确实向左转弯时,行人横穿过本车行驶的车道。行人所在的区域在其行进方向上以lb=x1和ub=x2为界,在垂直方向上以斑马线标志为界。这仅是一个简单的解释,行人也可能不在斑马线内横穿马路。在本车进行左转弯的时刻tl,将行人的位置xp(tl)与以下距离进行比较:
如果行人位置不在范围内,适应度值越低,或适应度值越接近阈值,则越好。
有一个边界的空间位置(l):图4(右)的测试示例,用于本车是否在对向驶来的车辆到达之前安全地进行左转弯。然而,在许多场景实例中,本车在对向驶来的车辆后面转弯。这并不一定是坏的,因为这是安全的行为,但在这种场景实例下进行测试,不能得出本车系统在对向车辆到达前可安全左转弯的结论。相反,只有选择在本车在对向车辆前转弯的场景实例,才能测试本车的相关功能。这可以通过测量在本车e穿过对向车辆c行驶车道的瞬间,本车和对向车辆在x方向上的距离来检测。因此只给出了一个边界,fform的第二个边界则被省略[13]:
如果本车从对向车辆后面经过,本车转弯时与对向车辆的距离越近,适应度值越高。
有两个边界的时间(t):对行人场景类型可以有不同的解释:行人应在不早于本车开始左转前t1秒、不晚于本车开始左转t2秒后开始过马路。行人开始过马路的时刻用tl表示。同样,我们可以应用模板,但要确保是在时间上加以分类[13]:
如果行人没有按时出发,那么开始过马路的时间越接近期望的区间[t1, t2],适应度值越高。
一旦为某个场景类型选择了模板,就需要将它们组合起来进行搜索。在[13]的基础上,我们提出多目标搜索,根据帕累托(pareto)原则去优化适应度数组:对于两个分别具有适应度数组F1/2的测试用例tc1/2,如果所有的适应度值f1,i至少和适应度值f2,i相同,并且存在一个f1,j比f2,j更好,则可以认为tc1优于tc2。
每个模板都替换一个这样的fn,生成一个最终的适应度数组F= [f1…fm],m为各个场景类型所需的模板数量,其中m−1个模板用于确保所需的场景形式,剩下的一个模板用进行“违反安全”相关的搜索。这种分布是必要的,以避免III-C中所提及的缺陷。
。例如,左转弯的安全距离只能在有对向车辆驶来之前进行左转弯时被测量。当fb不为零时,搜索技术不会计算fa,而是将其设置为一个较高、较差的值[13]。
当适应度数组F确定后,即可进行搜索。首先,在fa优化之前,需要依赖其他模板的模板fb被置为零。数组中的最后一个模板是“违反安全”模板fsafety,这意味着当适应度数组F=[0 … 0 fsafety]时,搜索会在属于预期形式的场景实例中找到最具挑战性的场景实例。由于最终只优化单个适应度值,避免了难以解释的帕累托前沿(paretofront),产生一个明确的、“最佳”测试用例。
基于搜索的测试用例生成方法为基于场景的测试[2],[13]提供了安全认证的重要基础:基于搜索的方法试图识别具有最佳适应度值的测试用例。如果这个“最佳”测试用例揭示了被测系统的错误行为,那么无论如何这个系统都需要改进。然而,即使在这个测试用例没有揭示出有缺陷的系统行为,我们也获得了相关信息。根据定义,在参数化场景的参数空间中没有更好的测试用例。因此,我们确信系统在参数空间中的所有场景实例中都是安全的。但这需要基于搜索的方法在搜索这个“最佳”测试用例时表现良好,对于这个测试用例已经提出了几个建议,例如[1],[10]。
当应用基于搜索的方法时,重要的是要确保论证过程成立,否则测试结果将不能提供所需的支撑,同样不能作为安全论证的基础。我们讨论了将基于搜索的方法应用于基于场景的测试的两个最重要的方法论含义。
1)为场景类型创建搜索问题:为了安全论证,测试需要提供驾驶系统安全行为的证据。这需要证明系统在每种测试场景[15],[17]中都是安全的。对于每一种场景类型,都必须生成“最佳”的测试用例。这意味着,每个场景类型至少有一个搜索结果,并为预期的场景类型生成测试用例,然后可以应用所提供的模板。
因为所有基于场景的测试方法都是这样,所以对场景类型[11]、[17]的粒度级别有很强的依赖性。可以使用场景类型“本车在有对向车辆驶来的十字交叉路口左转弯”来进行安全论证,也可能使用“本车在四方向交叉路口左转弯,每个方向都有一条车道,只有一辆对向驶来的车辆”。在第一种场景类型下,参数化的场景需要一个参数来表示车道数和对向车辆数。然后,在适应度函数的帮助下,从所有符合上述参数化描述的交叉路口中抽取出“最佳”测试用例。第二种场景类型的颗粒度更细,因此有一个更严格的预期形式,需要不同的适应度函数。
如何选择正确的场景类型粒度级别,这一问题并不仅限于基于搜索的测试工作;任何基于场景的测试工作都在各自的粒度级别上做假设,通常是隐式的。在[3]和[18]中,对粒度级别提出了建议,但这仍然是一个正在进行的讨论。
2)为安全标准创建搜索问题:测试系统行为所依据的安全标准极大程度地影响测试用例的生成。通常情况下,驾驶系统必须保持不止一段安全距离,例如与场景中的不同车辆之间的安全距离,或与另一辆车辆之间的纵向和横向安全距离。
除了预期形式的模板外,还为每个安全距离的多目标搜索添加一个适应度值。然后通过搜索识别那些违反其中一个安全距离的场景实例。然而,这并不像预期的那样有效:多目标搜索使用了上述的帕累托原则。这意味着,对于一个安全距离的剩余缓冲区(见III-A.1节),不能在不最小化另一个安全距离的情况下最小化这个安全距离。直观地说,一个系统可以违反纵向安全距离时,并不接近违反横向安全距离。
相反,一次只能优化一个安全距离,即使在“同一个公式”中有多个安全距离的组合表示,也需要多个优化。例如,纵向的安全距离通常要比横向的安全距离大得多,如城市交通纵向安全距离可达20米,而横向的安全距离则小于1米。假设将其表示为单一的安全“公式”,并计算单一的适应度值,通过搜索先生成的测试用例,通常是系统接近(或违反)横向安全距离的。
由于空间的限制,我们只能讨论一种示例性场景类型的搜索(如图1):本车e在十字路口左转,并有对向车辆c驶来。本车可以在对向车辆的前部或后方进行左转弯。按照我们的流程,这需要进行分类讨论:对向车辆前和对向车辆后(见第III-C.1节)。在这两种情况下,我们感兴趣的安全距离分别在x和y方向(见第III-C.2节),我们将[13]的视角从一维(x)扩展到二维(x,y)。总的来说,我们需要对这个特定的场景类型进行4次搜索,以便能够确定测试的驾驶系统的行为安全。搜索一个接一个地执行。图7和图8描述了其中一个搜索的结果(case: x,对向车辆前)。
预期形式:唯一的形式标准是本车在对向车辆前方或后方进行左转弯(见图5)。因此,每一种情况只需要一个单一的适应度函数模板就可以确定预期的形式。对于“本车在对向车辆前方左转”这种情况,应用“有一个边界的空间位置”模板:
对于“本车在对向车辆后方左转”,判断标准改为xe(tl)≥xc(tl)即可。
安全性:作为安全距离,我们使用了受RSS模型[24]启发的空间距离。详细说明请参考[24]。我们用dsafety x/y表示安全距离公式,用fsafety x/y表示安全距离违反模板 (见图6)。
图6 在对向车辆后方左转场景(左转后)-纵向和横向安全距离
我们使用了受[19]启发的被测驾驶系统,该系统集决策、路径规划和控制于一体的模型预测控制技术。系统的确切行为并不重要,因为我们关注的是模板和方法论,而非系统的性能。作为仿真试验设置,我们使用MATLAB\Simulink结合应用广泛的IPG Carmaker。并使用了多目标算法NSGA-II[9]进行搜索,种群大小为50个,搜索代数为20代。这意味着在1000个测试用例中测试系统,尽管我们最感兴趣的是“最好的”一个,所提出的模板和方法论显然可以与其他任何仿真工具和多目标搜索技术相结合。
图7给出了每个种群的平均适应度值和最佳适应度值。这提供了两个主要的结论:(1)平均适应度值一开始较高,并分两步减少。最开始随机选择的场景实例并不符合期望的形式,从而产生较高的平均适应度。当种群包含几个场景实例,平均适应度第一次和第二次显著下降,因为种群中的大多数场景实例不仅是预期形式,而且还对被测车辆具有挑战性。这提示模板引导搜索到预期形式的、对被测车辆有挑战性的场景实例。(2)最佳适应度值一开始较高,当找到至少一个预期形式的场景实例后,就立即有大幅的下降。并随着代数增加不断下降,接近我们方法所需要的“最佳”测试用例。
图8所示为本车在对向车辆所在车道上左转时,“最佳”测试用例的纵向距离(绝对距离dx,剩余缓冲区距离∆dx,安全距离dsafety, x),以及系统最接近“违反安全”的场景快照。本车的行驶非常保守:即使在“最好”的测试案例中,本车车也会在26米的最小安全距离上保留一个剩余缓冲区。
由于篇幅的限制,我们只讨论单一场景类型的实验结果。然而,此演示显示了所提供的模板和方法论的易用性。对于更复杂的场景,有更多的交通参与者,要求更高的环境(如三车道交叉路口),以及场景参与者之间更复杂的时空交互,几个模板需要多次应用。即使这样,基于适应度值数组的组合也相当直观。多目标搜索将确保场景实例具有所需的形式和挑战性。因此,几乎所有相关的情况都可以用模板来表示。然而,我们当然不能保证这些模板涵盖“所有”场景类型。希望方法论能够帮助专家创建足够的适应度函数,并以覆盖所有道路环境为目标。适应度函数模板是基于搜索和场景的通用测试方法的一个有前途的基础。下一步的研究工作希望通过使用从真实驾驶数据中获得的场景目录,对该方法进行验证。此外,我们正研究该模板在其他道路情况下的适用性和完整性,如环形路口。
近期有较多基于场景的测试方法的研究工作,我们参考[22]为一个广泛的调查和讨论与本文工作较为接近的研究。
一些现有的基于场景测试和搜索的技术应用类似本文的方法来生成测试用例,用于制动[1]、[5]、车道保持[10]和自适应巡航控制[1]系统。它们的适应度函数是专门为单个场景类型创建的,并不适用于其他系统和其他场景类型。其他工作提供的适应度函数,旨在减少安全驾驶空间,对被测驾驶系统的运动规划提出挑战[2];或者旨在产生可避免的碰撞[7],[8]。虽然这些方法直观地产生了具有挑战性的测试用例,但它们不能确保预期的场景形式,因此不能为安全性论证提供合适的基础。
文献[16]中提出了一种方法,将场景描述语言(如“在车道上”或“位于后方”)转换为轨迹规划问题,以便创建基于lanelets的场景实例。他们并不关注方法论,即不关注如何创建适应度函数并将其应用于其他可能不使用lanelets的场景上,关注的是技术方面。文献[6]的研究团队为单一的、特定的城市交叉路口场景类型提供了适应度函数。但也没有为适应度函数的推导提供方法论方面的指导。在本团队之前的研究工作[13]中,我们提供了仅适用于公路场景的适应度模板,以确保场景实例具有预期的形式并对被测车辆有挑战性。
本文研究工作从为基于搜索的技术推导适应度函数提供方法论指导出发,因为适应度函数是测试用例的质量度量,因此也是系统性能的度量,所以构造适应度函数需要格外谨慎。否则,安全性就无从谈起。
在本文研究工作中,我们以适应度函数模板的形式为交叉路口场景类型提供了方法论指导,补充和推广了我们之前在高速公路场景上的工作。讨论了多种情况下如何应用和组合模板,并解释在使用基于搜索的方法进行场景测试时如何避免缺陷。
试验展示了适应度模板的易用性,并提供了引导搜索技术找到预期形式的场景实例的方法论,这些场景实例对被测驾驶系统具有挑战性。我们希望所提出的方法论能够帮助专家为交叉路口场景创建足够的适应度函数,而边界情况可能需要对适应度函数模板进行扩展。