用于移动机器人轨迹规划器的性能测试的制作方法

未命名 10-19 阅读:61 评论:0


1.本公开涉及用于评估轨迹规划器在真实或模拟场景中的性能的方法,以及用于实现该方法的计算机程序和系统。这样的规划器能够自动规划全/半自动驾驶车辆或其他形式的移动机器人的自主轨迹。示例应用包括ads(自动驾驶系统(autonomous driving system))和adas(高级驾驶员辅助系统(advanced driver assist system))性能测试。


背景技术:

2.自动驾驶车辆领域取得了重大且快速的发展。自动驾驶车辆(autonomous vehicle,av)是一种配备有传感器和控制系统的车辆,传感器和控制系统使该车辆能够在没有人控制其行为的情况下运行。自动驾驶车辆配备有传感器,传感器使该车辆能够感知其物理环境,这样的传感器包括例如相机、雷达和激光雷达。自动驾驶车辆配备有适当编程的计算机,这些计算机能够处理从传感器接收的数据,并基于传感器感知的环境做出安全且可预测的决策。自动驾驶车辆可以是全自动驾驶的(至少在某些情况下,它被设计为在没有人为监督或干预的情况下运行)或半自动驾驶的。半自动驾驶系统需要不同水平的人为监督和干预,这样的系统包括高级驾驶员辅助系统和三级自动驾驶系统。测试特定自动驾驶车辆或一种自动驾驶车辆上的传感器和控制系统的行为有不同方面。
[0003]“5级”车辆是在任何情况下都能完全自动驾驶运行的车辆,因为它总是能保证达到一定的最低安全水平。这样的车辆根本不需要手动控制(方向盘、踏板等)。
[0004]
相比之下,3级和4级车辆可以全自动驾驶运行,但只能在某些特定情况内(例如在地理围栏区域内)全自动驾驶运行。3级车辆必须配备自动驾驶地处理需要立即响应的任何情况(例如紧急制动);然而,情况的变化可能会触发“过渡需求”,要求驾驶员在某些有限的时间段内控制车辆。4级车辆也有类似的限制;然而,在驾驶员没有在规定的时间段内做出反应的情况下,4级车辆还必须能够自动驾驶地实现“最小风险策略”(minimum risk maneuver,mrm)(即某些适当的动作),使车辆处于安全条件(例如减速和停车)。2级车辆要求驾驶员随时准备干预,如果自动驾驶系统在任何时候都不能正确响应,驾驶员有责任进行干预。对于2级自动化,驾驶员有责任确定何时需要他们的干预;对于3级和4级,这一责任转移到车辆的自动驾驶系统,当需要干预时,车辆必须提醒驾驶员。
[0005]
随着自动驾驶级别的提高并且更多的责任从人转移到机器,安全是日益严峻的挑战。在自动驾驶中,保证安全的重要性已经得到了认可。保证安全并不一定意味着零事故,而是意味着保证在特定情况下达到一定的最低安全水平。通常认为这一最低安全水平必须显著超过人类驾驶员的安全水平,自动驾驶才能可行。
[0006]
根据shalev-shwartz等人的“on a formal model of safe and scalable self-driving cars(一种安全可扩展的自动驾驶汽车形式化模型)”(2017),arxiv:1708.06374(rss论文)(其全部内容通过引用并入本文),估计人为驾驶导致每小时10-6
个严重事故。假设自动驾驶系统将需要将其减少至少三个数量级,rss论文得出结论,需要保证每小时10-9
个严重事故的最低安全水平,注意到纯数据驱动的方法因此需要在每次对av系统的软件或
硬件进行改变时收集大量的驾驶数据。
[0007]
rss论文提供一种基于模型的保证安全的方法。基于规则的责任敏感性安全(responsibility-sensitive safety,rss)模型通过将以下少量“常识”驾驶规则形式化来构建:
[0008]“1.不要从后面撞击。
[0009]
2.不要胡乱地切入。
[0010]
3.通行权是给予的,而不是取得的。
[0011]
4.注意能见度有限的区域。
[0012]
5.如果你能避免一场事故而不造成另一场事故,你就必须去做。”[0013]
rss模型呈现为证明是安全的,因为如果所有代理始终遵守rss模型的规则,就不会发生事故。目的是将需要收集的驾驶数据量减少几个数量级,以便证明所需的安全水平。
[0014]
安全模型(例如rss)可以用作用于评估由自主代理在自动驾驶系统(堆栈)控制下在真实或模拟场景中实现的轨迹质量的基础。通过将堆栈暴露在不同场景中并且评估由此产生的自主轨迹是否符合安全模型的规则(基于规则的测试)来对堆栈进行测试。基于规则的测试方法也可以应用于性能的其他方面,例如舒适度或朝向既定目标的进度。


技术实现要素:

[0015]
根据本文的第一方面,一种评估移动机器人的轨迹规划器在真实或模拟场景中的性能的计算机实现的方法,该方法包括:接收场景的场景地面实况,场景地面实况使用轨迹规划器生成响应于场景的至少一个场景元素来控制场景的自主代理;接收场景的一个或更多个性能评估规则以及每个性能评估规则的至少一个激活条件;以及由测试预言机(test oracle)处理场景地面实况,以确定在场景的多个时间步长上是否满足每个性能评估规则的激活条件。仅当每个性能评估规则的激活条件得到满足时才由测试预言机对每个性能评估规则进行评估,以提供至少一个测试结果。
[0016]
在通过/失败规则的环境下,这提供了第三个“不适用”,规则可以在给定的时间步长中对该第三个“不适用”进行评估。特别是在评估(通常在模拟或测试中的模拟的组合中生成的)大量场景数据时,在许多时间步长和许多场景中评估潜在的复杂规则可能需要相当大量的计算资源。通过基于更简单的激活条件(评估这些激活条件比评估规则本身更便宜)的“去激活”规则,可以在不损害最终结果的情况下节省大量资源。事实上,结果的质量可能会提高,因为“不适用”(无效的)结果通常更具信息性,因为它区分了规则适用且通过/失败的情况以及规则不自然适用的情况。例如,在交叉路口场景中,可以相对于自主代理希望加入的道路上的多个其他代理的各种距离阈值来定义规则,仅当自主代理跨越道路边界时才激活该规则。如果该规则一直是有效的,那么当自主代理在交叉路口处等待时,(与“通过”和“不适用”之间没有区别的情况相比)这不仅会导致评估成本高昂,而且这一时间段的结果也不会提供很多信息。
[0017]
在实施例中,可以对场景地面实况进行处理,以确定对于多个场景元素的集合中的每个场景元素,在场景的多个时间步长上是否满足每个性能评估规则的激活条件。可以仅在场景元素中的至少一个满足每个性能评估规则的激活条件时,并且仅在自主代理和满足激活条件的场景元素之间,对每个性能评估规则进行评估。
[0018]
在实施例中,每个性能评估规则可以被编码在一段规则创建代码中作为第二逻辑谓语,每个性能评估规则的激活条件被编码在该段规则创建代码中作为第一逻辑谓语,其中,在每个时间步长,测试预言机针对每个场景元素评估第一逻辑谓语,仅评估自主代理和满足第一逻辑谓语的任何场景元素之间的第二逻辑谓语。
[0019]
测试预言机可以接收具有不同的各自激活条件的多个性能评估规则,并根据多个性能评估规则各自不同的激活条件对多个性能评估规则进行选择性评估。
[0020]
每个性能评估规则可以与驾驶性能有关。
[0021]
该方法可以包括在图形用户界面(graphical user interface,gui)上呈现时间序列中多个时间步长的相应结果,每个时间步长的结果可视地指示包括以下的至少三个类别中的一个类别:当不满足激活条件时的第一类别、当满足激活条件并且通过规则时的第二类别、以及当满足激活条件并且规则失败时的第三类别。
[0022]
例如,结果可以被呈现为与至少三个类别相对应的至少三种不同颜色中的一种颜色。
[0023]
性能评估规则中的第一性能评估规则的激活条件可以取决于性能评估规则中的至少第二性能评估规则的激活条件。
[0024]
例如,当第二性能评估规则(例如与安全相关)有效时,第一性能评估规则(例如与舒适度有关)可能会被停用。
[0025]
场景元素可以包括一个或更多个其他代理。
[0026]
性能评估规则中的至少一个可以在自主代理和场景中的场景元素集合中的一个场景元素之间被选择性地成对评估,并且可以针对每个场景元素独立地评估其激活条件,以确定是否在每个时间步长评估自主代理和该其他代理之间的性能评估规则。
[0027]
场景元素集合可以是其他代理的集合。
[0028]
可以针对每个场景元素评估激活条件,以在每个时间步长计算包含满足激活条件的任何场景元素的标识符的可迭代项,可以通过在每个时间步长循环遍历可迭代项来评估性能评估规则。
[0029]
性能评估规则可以被定义为应用于从场景地面实况提取的一个或更多个信号的计算图,其中可迭代项通过计算图,以便评估自主代理和满足激活条件的任何场景元素之间的规则。
[0030]
本文的另一个方面提供了一种评估移动机器人的轨迹规划器在真实或模拟场景中的性能的计算机实现的方法,该方法包括:接收场景的场景地面实况,场景地面实况使用轨迹规划器生成以响应于场景中的一个或更多个场景元素来控制场景中的自主代理;接收场景中的一个或更多个性能评估规则以及每个性能评估规则的至少一个激活条件;以及由测试预言机处理场景地面实况,以确定对于每个场景元素,在场景的多个时间步长上是否满足每个性能评估规则的激活条件;其中,仅当对于场景元素中的至少一个满足每个性能评估规则的激活条件时,由测试预言机对每个性能评估规则进行评估,并且仅在自主代理和满足激活条件的场景元素之间进行评估,以提供至少一个测试结果。
[0031]
进一步的方面提供了一种计算机系统,该计算机系统包括被配置为实现第一方面或其任何实施例的方法的一个或更多个计算机,以及用于对计算机系统进行编程以实现该方法的可执行程序指令。
附图说明
[0032]
为了更好地理解本公开,并且为了示出如何实施本公开的实施例,仅通过示例的方式参考以下附图,其中:
[0033]
图1a示出自动驾驶车辆堆栈的示意性功能框图;
[0034]
图1b示出自动驾驶车辆测试范式的示意性概况;
[0035]
图1c示出场景提取流水线的示意性框图;
[0036]
图2示出测试流水线的示意性框图;
[0037]
图2a示出测试流水线的可能实施方式的进一步细节;
[0038]
图3a示出在测试预言机内评估的规则树的示例;
[0039]
图3b示出规则树的节点的示例输出;
[0040]
图4a示出要在测试预言机内评估的规则树的示例;
[0041]
图4b示出在场景地面实况数据集合上评估的规则树的第二示例;
[0042]
图4c示出如何在测试预言机内选择性地应用规则;
[0043]
图5示出用于呈现图形用户界面的可视化部件的示意性框图;
[0044]
图5a、图5b和图5c示出图形用户界面内可用的不同视图;
[0045]
图6a示出切入场景的第一实例;
[0046]
图6b示出第一场景实例的示例预言机输出;
[0047]
图6c示出切入场景的第二实例;
[0048]
图6d示出第二场景实例的示例预言机输出;
[0049]
图7示出领域特定语言中用于定义由测试预言机应用的规则的规则创建代码的示例;以及
[0050]
图8示出用于呈现自定义规则树的输出的gui视图的另一个示例。
具体实施方式
[0051]
所描述的实施例提供了一种测试流水线,以便于在真实或模拟场景中对移动机器人堆栈进行基于规则的测试。真实或模拟场景中的代理(行动者)行为由测试预言机基于定义的性能评估规则进行评估。这样的规则可以评估安全的不同方面。例如,可以定义安全规则集合以根据特定的安全标准、法规或安全模型(例如rss)来评定堆栈的性能,或者可以定义定制规则集合以测试性能的任何方面。测试流水线在安全方面的应用并不限于此,测试流水线可以用于测试性能的任何方面,例如舒适度或朝着某个既定目标的进度。规则编辑器允许定义或修改性能评估规则,并将其传递给测试预言机。
[0052]“全”堆栈通常涉及从低级传感器数据(感知)的处理和解释,馈送预测和规划等主要高级功能,以及生成适当控制信号以实现规划级决策(例如控制制动、转向、加速度等)的控制逻辑的方方面面。对于自动驾驶车辆,3级堆栈包括用于实现过渡需求的一些逻辑,4级堆栈另外包括用于实现最小风险策略的一些逻辑。堆栈还可以实现信号、前照灯、挡风玻璃雨刷等次要控制功能。
[0053]
术语“堆栈”也可以指全堆栈的单独子系统(子堆栈),例如感知堆栈、预测堆栈、规划堆栈或控制堆栈,可以单独测试或以任何期望的组合测试这些堆栈。堆栈可以纯粹指软件,即可以在一个或更多个通用计算机处理器上执行的一个或更多个计算机程序。
[0054]
无论是真实的还是模拟的,场景都需要自主代理来导航真实的或建模的物理环境。自主代理是真实的或模拟的移动机器人,该移动机器人在测试中的堆栈的控制下移动。物理环境包括静态和/或动态元素,测试中的堆栈需要对这些元素进行有效响应。例如,移动机器人可以是在堆栈(自主车辆)控制下的全或半自动驾驶车辆。物理环境可以包括静态道路布局和给定的环境条件(例如天气、一天中的时间、照明条件、湿度、污染/颗粒物水平等)的集合,该集合可以随着场景进度而保持或变化。交互式场景另外包括一个或更多个其他代理(“外部”代理,例如其他车辆、行人、骑自行车的人、动物等)。
[0055]
以下示例考虑了自动驾驶车辆测试的应用。然而,原理同样应用于其他形式的移动机器人。
[0056]
场景可以在不同的抽象级别上表征或定义。更抽象的场景适应更大程度的变化。例如,“切入场景”或“变道场景”是高度抽象的场景的示例,其特征是感兴趣的策略或行为,这些感兴趣的策略或行为可以适应许多变化(例如不同的代理起始位置和速度、道路布局、环境条件等)。“场景运行(scenario run)”是指代理(可选地在一个或更多个其他代理的存在下)对物理环境进行导航的具体情况。例如,可以使用不同的代理参数(例如起始位置、速度等)、不同的道路布局、不同的环境条件和/或不同的堆栈配置等来(在真实世界和/或模拟器中)执行切入或变道场景的多次运行。术语“运行”和“实例”在该环境中可互换使用。
[0057]
在以下示例中,堆栈的性能至少部分通过在一个或更多个运行过程中根据给定的性能评估规则集合评估测试预言机中自主代理的行为来评定。这些规则应用于该(或每个)场景运行的“地面实况”,通常,这只是指场景运行的适当表征(包括自主代理的行为),该表征出于测试的目的被视为权威。地面实况是模拟所固有的;模拟器计算场景状态序列,根据定义,这是模拟场景运行的完美、权威的表征。在真实世界场景运行中,场景运行的“完美”表征并不存在于同一意义上;然而,可以以多种方式(例如基于车载传感器数据的手动注释、这样的数据的自动/半自动注释(例如使用离线/非实时处理)和/或使用外部信息源(例如外部传感器、地图等)等)获得适当的信息性地面实况。
[0058]
场景地面实况通常包括自主代理和任何其他(显著)代理(如适用)的“迹线(trace)”。迹线是代理在场景过程中的位置和运动的历史。有许多方式来表征迹线。迹线数据通常将包括环境内的代理的空间和运动数据。该术语用于真实场景(具有真实世界迹线)和模拟场景(具有模拟迹线)两者。迹线通常记录由代理在场景中实现的实际轨迹。关于术语,“迹线(trace)”和“轨迹(trajectory)”可能包含相同或相似类型的信息(例如一系列随时间变化的空间和运动状态)。术语“轨迹”在规划环境下通常是受欢迎的(可以指未来/预测的轨迹),而术语“迹线”在测试/评估环境下通常与过去的行为有关。
[0059]
在模拟环境中,向模拟器提供“场景描述”作为输入。例如,场景描述可以使用场景描述语言(scenario description language,sdl)进行编码,或者以模拟器可以使用的任何其他形式进行编码。场景描述通常是场景的更抽象的表征,可以产生多个模拟运行。根据实施方式,场景描述可以具有一个或更多个可配置参数,这些可配置参数可以变化以增加可能变化的程度。抽象和参数化程度是一种设计选择。例如,场景描述可能会对具有参数化环境条件(例如天气、照明等)的固定布局进行编码。然而,进一步的抽象是可能的,例如具有可配置的道路参数(例如道路曲率、车道配置等)。模拟器的输入包括场景描述以及所选择的参数值集合(如适用)。后者可以被称为场景的参数化。可配置参数定义参数空间(也称
为场景空间),参数化对应于参数空间中的点。在这种情况下,“场景实例”可以指基于场景描述和(如果适用)所选择的参数化的模拟器中场景的实例化。
[0060]
为了简洁起见,术语“场景”也可用于指场景运行,以及更抽象意义上的场景。术语“场景”的含义将从其使用的背景中清晰可见。
[0061]
轨迹规划是当前环境中的重要功能,术语“轨迹规划器”、“轨迹规划系统”和“轨迹规划堆栈”在本文中可以互换使用,指的是可以为移动机器人规划未来轨迹的部件或多个部件。轨迹规划决策最终确定自主代理实现的实际轨迹(尽管在一些测试环境中,这可能受到例如控制堆栈中这些决策的实施方式、以及自主代理对所生成的控制信号的真实或建模的动态响应等其他因素的影响)。
[0062]
轨迹规划器可以单独测试,也可以与一个或更多个其他系统(例如感知、预测和/或控制)结合测试。在全堆栈中,规划通常指更高级别的自动驾驶决策能力(例如轨迹规划),而控制通常指较低级别的控制信号的生成,用于执行那些自动驾驶决策。然而,在性能测试环境中,术语“控制”也在更广泛的意义上使用。为免生疑问,当轨迹规划器被认为在模拟中控制自主代理时,这并不一定意味着(狭义上)控制系统与轨迹规划器相结合进行测试。
[0063]
示例av堆栈
[0064]
为了向所描述的实施例提供相关环境,现在将描述av堆栈的示例形式的进一步细节。
[0065]
图1a示出av运行时堆栈100的高度示意性框图。运行时堆栈100示出为包括感知(子)系统102、预测(子)系统104、规划(子)系统(规划器)106和控制(子)系统(控制器)108。如前所述,术语(子)堆栈也可用于描述上述部件102-108。
[0066]
在真实世界环境中,感知系统102从av的车载传感器系统110接收传感器输出,并使用那些传感器输出来检测外部代理并测量它们的物理状态,例如它们的位置、速度、加速度等。车载传感器系统110可以采取不同的形式,但通常包括各种传感器,例如图像捕获设备(相机/光学传感器)、激光雷达和/或雷达单元、卫星定位传感器(全球定位系统(global positioning system,gps)等)、运动/惯性传感器(加速度计、陀螺仪等)等。车载传感器系统110因此提供丰富的传感器数据(可以从传感器数据中提取关于周围环境的详细信息)以及av和该环境内的任何外部行动者(车辆、行人、骑自行车的人等)的状态。传感器输出通常包括多个传感器模态的传感器数据,例如来自一个或更多个立体光学传感器、激光雷达、雷达等的立体图像。可以使用滤波器、融合部件等组合多个传感器模态的传感器数据。
[0067]
感知系统102通常包括多个感知部件,这些感知部件协作以解释传感器输出,从而向预测系统104提供感知输出。
[0068]
在模拟环境中,根据测试的性质,特别是根据堆栈100为测试目的“切片”的位置(见下文),可能有必要也可能没有必要对车载传感器系统100进行建模。对于更高级别的切片,不需要模拟传感器数据,因此不需要复杂的传感器建模。
[0069]
预测系统104使用感知系统102的感知输出来预测例如av附近的其他车辆等的外部行动者(代理)的未来行为。
[0070]
由预测系统104计算的预测被提供给规划器106,规划器106使用预测来做出在给定驾驶场景中由av执行的自动驾驶决策。由规划器106接收的输入通常指示可驾驶区域,还
将捕捉可驾驶区域内任何外部代理(从av的角度来看为障碍物)的预测移动。可驾驶区域可以使用来自感知系统102的感知输出结合例如hd(高清(high definition))地图等的地图信息来确定。
[0071]
规划器106的核心功能是考虑预测的代理运动来规划av的轨迹(自主轨迹)。这可以称为轨迹规划。规划轨迹是为了在场景内实现期望的目标。例如,目标可以是进入环形交叉路口并在期望的出口离开环形交叉路口;超过前面的车辆;或者以目标速度停留在当前车道(车道跟随)。例如,该目标可以由自动驾驶路线规划器(未示出)来确定。
[0072]
控制器108通过向av的车载行动者系统112提供合适的控制信号来执行规划器106所做的决策。特别地,规划器106规划av的轨迹,控制器108生成控制信号以实现规划的轨迹。通常,规划器106将规划未来,使得在规划器106规划新的轨迹之前,规划的轨迹可以仅在控制级上部分地实现。行动者系统112包括“主要”车辆系统,例如制动、加速度和转向系统,以及次要系统(例如信号、雨刷、前灯等)。
[0073]
注意,在给定时刻的规划的轨迹和自主代理遵循的实际轨迹之间可能存在区别。规划系统通常在规划步长序列上运行,在每个规划步长更新规划的轨迹,以考虑自先前的规划步长以来场景中的任何变化(或者更准确地说,偏离预测变化的任何变化)。规划系统106可以对未来进行推理,使得在每个规划步长处的规划轨迹延伸越过下一个规划步长。因此,任何单独的规划轨迹都可以是未完全实现的(如果在模拟中单独测试规划系统106,则自主代理可以简单地遵循规划轨迹精确地直到下一个规划步长;然而,如所指出的,在其他真实和模拟环境中,规划轨迹可能不会精确地遵循直到下一个规划步长,因为自主代理的行为可能受到例如控制系统108的运行和自主车辆的真实或建模动态等其他因素的影响)。在许多测试环境中,自主代理的实际轨迹才是最终重要的;特别是实际轨迹是否安全,以及例如舒适度和进度等其他因素。然而,本文中基于规则的测试方法也可以应用于规划轨迹(即使那些规划轨迹没有完全地或精确地由自主代理实现)。例如,即使根据给定的安全规则集合,代理的实际轨迹被认为是安全的,也可能是瞬时规划轨迹是不安全的;规划器106正在考虑不安全的行动过程的事实可能是暴露的,即使它在该场景中没有导致不安全的代理行为。除了模拟中的实际代理行为之外,瞬时规划轨迹还构成了一种可以有效评估的内部状态。可以类似地评估其他形式的内部堆栈状态。
[0074]
图1a的示例考虑了相对“模块化的”架构,具有可分离的感知系统、预测系统、规划系统和控制系统102-108。子堆栈本身也可以是模块化的,例如在规划系统106内具有可分离的规划模块。例如,规划系统106可以包括多个轨迹规划模块,这些轨迹规划模块可以应用于不同的物理环境(例如简单车道驾驶与复杂交叉路口或环形交叉口)。由于上述原因,这与模拟测试相关,因为它允许单独地或以不同的组合测试部件(例如规划系统106或其单独的规划模块)。为免生疑义,对于模块化堆栈架构,术语堆栈不仅可以指全堆栈,还可以指其任何单独的子系统或模块。
[0075]
在不同堆栈实施方式之间,各种堆栈功能的集成或可分离的程度可能会有很显著的差异(在某些堆栈中,某些方面可能紧密耦合,无法区分)。例如,在其他堆栈中,可以集成规划和控制(例如这样的堆栈可以直接根据控制信号进行规划),而(例如图1中所描绘的)其他堆栈的架构可以在两者(例如根据轨迹进行规划,以及利用单独的控制优化来确定如何在控制信号级上最好地执行规划轨迹)之间绘制出明显的区分。类似地,在一些堆栈中,
预测和规划可以更紧密地耦合。在极端情况下,在所谓的“端到端”驾驶中,感知、预测、规划和控制可能本质上是不可分割的。除非另有说明,否则本文中使用的感知、预测规划和控制术语并不意味着这些方面的任何特定的耦合或模块化。
[0076]
应当理解,术语“堆栈”包括软件,但也可以包括硬件。在模拟中,在最终上传到物理车辆的车载计算机系统之前,可以在“通用”车外计算机系统上测试堆栈的软件。然而,在“硬件在环”测试中,测试可以扩展到车辆本身的下层硬件。例如,为了测试的目的,堆栈软件可以在耦接至模拟器的车载计算机系统(或其副本)上运行。在这种情况下,测试中的堆栈扩展到车辆的下层计算机硬件。作为另一示例,堆栈110的某些功能(例如感知功能)可以在专用硬件中实现。在模拟环境中,硬件在环测试可能涉及将合成传感器数据馈送至专用硬件感知部件。
[0077]
图1b示出自动驾驶车辆的测试范式的高度示意性概况。通过在模拟器202中运行多个场景实例,并在测试预言机252中评估堆栈100(和/或其单个子堆栈)的性能,例如图1a中所描绘的类型的ads/adas堆栈100在模拟中经受重复测试和评估。测试预言机252的输出向专家122(团队或个人)提供信息,允许他们识别堆栈100中的问题并修改堆栈100以缓解这些问题(s124)。该结果还帮助专家122选择进一步的场景进行测试(s126),并且该过程继续,在模拟中重复修改、测试和评估堆栈100的性能。改进的堆栈100最终被结合(s125)在配备有传感器系统110和行动者系统112的真实世界av 101中。改进的堆栈100通常包括在车辆101的车载计算机系统中的一个或更多个计算机处理器(未示出)中执行的程序指令(软件)。在步骤s125,改进的堆栈的软件被上传到av 101。步骤125还可以涉及对下层车辆硬件的修改。在av 101上,改进的堆栈100从传感器系统110接收传感器数据,并向行动者系统112输出控制信号。真实世界测试(s128)可以与基于模拟的测试结合使用。例如,在通过模拟测试和堆栈细化的过程达到可接受的性能水平后,可以选择适当的真实世界场景(s130),并且可以在测试预言机252中捕获和类似地评估av 101在那些真实场景中的性能。
[0078]
可以以各种方式(包括手动编码)获得用于模拟目的的场景。该系统还能够从真实世界运行中提取用于模拟目的的场景,从而允许在模拟器202中重新创建真实世界情况及其变化。
[0079]
图1c示出场景提取流水线的高度示意性框图。真实世界运行的数据140被传递到“地面实况”流水线142,用于生成场景地面实况的目的。运行数据140可以包括,例如,在一个或更多个车辆(可以是自动驾驶的、人为驱动的或其组合)上捕获的/生成的传感器数据和/或感知输出、和/或从其他来源(例如外部传感器(cctv等))捕获的数据。在地面实况流水线142内处理运行数据,以便为真实世界运行生成适当的地面实况144(迹线和环境数据)。如所讨论的,地面实况过程可以基于对“原始”运行数据142的手动注释,或者该过程可以是完全自动化的(例如使用离线感知方法),或者可以使用手动和自动地面实况的组合。例如,3d边界框可以被放置在行驶数据140中捕获的车辆和/或其他代理周围,以便确定它们的迹线的空间和运动状态。场景提取部件146接收场景地面实况144,并处理场景地面实况144以提取可用于模拟目的的更抽象的场景描述148。场景描述148由模拟器202消耗,从而允许执行多个模拟运行。模拟运行是原始真实世界运行的变化,可能的变化程度由抽象程度确定。为每个模拟运行提供地面实况150。
[0080]
测试流水线
[0081]
现在将描述测试流水线和测试预言机252的进一步细节。下面的示例专注于基于模拟的测试。然而,如前所述,测试预言机252同样可以应用于评估真实场景上的堆栈性能,下面的相关描述同样应用于真实场景。以下描述以图1a中的堆栈100为例。然而,如前所述,测试流水线200是高度灵活的,可以应用于以任何自动级运行的任何堆栈或子堆栈。
[0082]
图2示出测试流水线的示意性框图,测试流水线由附图标记200指示。测试流水线200示出为包括模拟器202和测试预言机252。模拟器202运行模拟场景以用于测试av运行时堆栈100的全部或部分的目的,测试预言机252评估堆栈(或子堆栈)在模拟场景上的性能。如所讨论的,可能仅测试运行时堆栈的子堆栈,但为了简单起见,以下描述通篇指的是(全)av堆栈100。然而,该描述同样应用于子堆栈而不是全堆栈100。术语“切片”在本文中用于选择用于测试的堆栈部件的集合或子集。
[0083]
如前所述,基于模拟的测试的想法是运行自主代理必须在被测试的堆栈100的控制下导航的模拟驾驶场景。通常,该场景包括自主代理通常在存在一个或更多个其他动态代理(例如其他车辆、自行车、行人等)的情况下需要导航的静态可驾驶区域(例如特定的静态道路布局)。为此,从模拟器202将模拟输入203提供给测试中的堆栈100。
[0084]
堆栈的切片决定模拟输入203的形式。举例来说,图2示出正在测试的av堆栈100内的预测系统104、规划系统106和控制系统108。为了测试图1a中的全av堆栈,感知系统102也可以在测试期间应用。在这种情况下,模拟输入203将包括合成传感器数据,该合成传感器数据使用适当的传感器模型生成并在感知系统102内以与真实传感器数据相同的方式进行处理。这需要生成足够真实的合成传感器输入(例如真实感图像数据和/或同样真实的模拟激光雷达/雷达数据等)。感知系统102的最终输出将依次馈送至更高级预测系统104和规划系统106。
[0085]
相比之下,所谓的“规划级别”模拟将基本上绕过感知系统102。模拟器202将直接向预测系统104提供更简单、更高级的输入203。在一些情况下,它甚至可以绕过预测系统104,以便在直接从模拟场景获得的预测(即“完美”预测)上测试规划器106。
[0086]
在这些极端之间,存在许多不同级别的输入切片的范围,例如仅测试感知系统102的子集(例如“稍后”(更高级)感知部件(例如对来自较低级感知部件(例如对象探测器、边界盒探测器、运动探测器等)的输出进行操作的诸如滤波器或融合部件之类的部件)。
[0087]
无论它们采取何种形式,模拟输入203都被(直接地或间接地)用作规划器108做出的决策的基础。控制器108又通过输出控制信号109来实现规划器的决策。在现实世界环境中,这些控制信号将驱动av的物理行动者系统112。在模拟中,自主车辆动态模型204用于将所得到的控制信号109转换为自主代理在模拟内的真实运动,从而对自动驾驶车辆对控制信号109的物理响应进行模拟。
[0088]
替代地,一种更简单的模拟形式假设自主代理在规划步长之间精确地遵循每个规划轨迹。该方法(在其与规划可分离的程度上)绕过控制系统108并且消除对自主车辆动态模型204的需要。这可能足以测试规划的某些方面。
[0089]
就外部代理在模拟器202内表现出自动驾驶行为/决策的程度而言,实现某种形式的代理决策逻辑210来执行这些决策并确定场景内的代理行为。代理决策逻辑210在复杂性上可以与自主堆栈100本身相当,或者它可以具有更有限的决策能力。目的是在模拟器202内提供足够真实的外部代理行为,以便能够有效地测试自主堆栈100的做出决策的能力。在
一些情况下,这根本不需要任何代理决策逻辑210(开环模拟),并且在其他情况下,可以使用相对有限的代理逻辑210(例如基本自适应巡航控制(adaptive cruise control,acc))来提供有用的测试。如果合适的话,可以使用一个或更多个代理动态模型206来提供更真实的代理行为。
[0090]
根据场景描述201a和(如果适用)场景的所选择的参数化201b来运行场景。场景通常具有静态元素和动态元素两者,这些元素可以在场景描述201a中被“硬编码”或可配置,并因此由场景描述201a结合所选择的参数化201b来确定。在驾驶场景中,静态元素通常包括静态道路布局。
[0091]
动态元素通常包括场景内的一个或更多个外部代理,例如其他车辆、行人、自行车等。
[0092]
为每个外部代理提供给模拟器202的动态信息的程度可以变化。例如,可以通过可分离的静态层和动态层来描述场景。给定的静态层(例如定义道路布局)可以与不同的动态层组合使用,以提供不同的场景实例。对于每个外部代理,动态层可以包括代理要遵循的空间路径以及与该路径相关联的运动数据和行为数据中的一个或两个。在简单的开环模拟中,外部行动者简单地遵循在动态层中定义的空间路径和运动数据,该动态层是非反应性的,即不对模拟内的自主代理做出反应。这样的开环模拟可以在没有任何代理决策逻辑210的情况下实现。然而,在闭环模拟中,动态层定义沿着静态路径要遵循的至少一种行为(例如acc行为)。在这种情况下,代理决策逻辑210以反应的方式在模拟内实现该行为,即对自主代理和/或其他外部代理做出反应。运动数据仍然可以与静态路径相关联,但在这种情况下是不太规范的,并且例如可以用作沿着该路径的目标。例如,对于acc行为,可以沿着代理将寻求匹配的路径设置目标速度,但是可以允许代理决策逻辑210在沿着该路径的任何点处将外部代理的速度降低到目标以下,以便保持与前方车辆的目标行车间距。
[0093]
可以理解的是,为了模拟的目的,可以以许多方式描述场景,并具有任何程度的可配置性。例如,代理的数量和类型以及它们的运动信息可以被配置为场景参数化201b的部分。
[0094]
给定模拟的模拟器202的输出包括自主代理的自主迹线212a和一个或更多个外部代理(迹线212)的一个或更多个代理迹线212b。每个迹线212a、212b是具有空间分量和运动分量两者的模拟内的代理行为的完整历史。例如,每个迹线212a、212b可以采取空间路径的形式,该空间路径具有与沿着该路径的点相关联的运动数据,例如速度、加速度、急动(加速度变化率)、速动(急动变化率)等。
[0095]
还提供附加信息以补充迹线212并向迹线212提供环境。这样的附加信息被称为“环境”数据214。环境数据214属于场景的物理环境,可以具有静态分量(例如道路布局)和动态分量(例如天气条件在模拟过程中变化的程度)两者。在某种程度上,环境数据214可以是“直通(passthrough)”的,因为它直接由场景描述201a或参数化201b的选择定义,因此不受模拟结果的影响。例如,环境数据214可以包括直接来自场景描述201a或参数化201b的静态道路布局。然而,通常环境数据214将包括模拟器202内导出的至少一些元素。例如,这可以包括模拟环境数据,例如天气数据,其中,模拟器202可以随着模拟进度而自由地改变天气条件。在这种情况下,天气数据可以依存于时间,该时间依存性将反映在环境数据214中。
[0096]
测试预言机252接收迹线212和环境数据214,并根据性能评估规则254的集合对那些输出评分。性能评估规则254示出为被提供作为测试预言机252的输入。
[0097]
规则254本质上是分类的(例如通过/失败类型的规则)。某些性能评估规则还与用
于“评分”轨迹的数字性能指标相关联(例如指示成功或失败的程度或有助于解释分类结果或与分类结果相关的一些其他数量)。对规则254的评估是基于时间的,给定的规则在场景中的不同点处可能具有不同的结果。评分也是基于时间的:对于每个性能评估度量,测试预言机252跟踪该度量的值(评分)如何随着模拟进度而随时间变化。测试预言机252提供输出256,该输出256包括每个规则的分类(例如通过/失败)结果的时间序列256a以及每个性能度量的得分-时间图256b,如稍后进一步详细描述的。结果和评分256a、256b向专家122提供信息,并且可以用于识别和缓解测试堆栈100内的性能问题。测试预言机252还提供该场景的总体(聚合)结果(例如总体通过/失败)。测试预言机252的输出256与关于输出256所属的场景的信息相关联地存储在测试数据库258中。例如,输出256可以与场景描述210a(或其标识符)和所选择的参数化201b相关联地存储。除了与时间相关的结果和评分之外,还可以将总体评分分配给场景并存储为输出256的部分。例如,每个规则的聚合评分(例如总体通过/失败)和/或所有规则254的聚合结果(例如通过/失败)。
[0098]
图2a示出切片的另一种选择,并使用附图标记100和100s分别指示全堆栈和子堆栈。子堆栈100s将在图2的测试流水线200内进行测试。
[0099]
多个“后期”感知部件102b形成要测试的子堆栈100s的部分,并在测试期间应用于模拟感知输入203。后期感知部件102b可以例如包括滤波或其他融合部件,该后期感知部件102b融合来自多个早期感知部件的感知输入。
[0100]
在全堆栈100中,后期感知部件102b将从早期感知部件102a接收实际感知输入213。例如,早期感知部件102a可以包括一个或更多个2d或3d边界框探测器,在这种情况下,提供给后期感知部件的模拟感知输入可以包括在模拟中经由射线跟踪导出的模拟2d或3d边界框检测。早期感知部件102a通常包括直接对传感器数据进行操作的部件。通过图2a的切片,模拟感知输入203将在形式上对应于通常由早期感知部件102a提供的实际感知输入213。然而,早期感知部件102a不是作为测试的部分来应用的,而是用于训练一个或更多个感知误差模型208,该一个或更多个感知误差模型208可以用于以统计上严格的方式将真实误差引入到模拟感知输入203中,该模拟感知输入203被馈送到测试中的子堆栈100的后期感知部件102b。
[0101]
这样的感知误差模型可以被称为感知统计性能模型(perception statistical performance model,pspm)或同义词“prism”。pspm的原理以及用于构建和训练它们的合适技术的进一步细节可以结合在国际专利公开号wo2021037763、wo2021037760、wo2021037765、wo2021037761和wo2021037766中,它们中的每一个都通过引用整体并入本文。pspm背后的思想是将真实误差有效地引入到提供给子堆栈100s的模拟感知输入中(即反映在真实世界中应用早期感知部件102a时预期的误差类型)。在模拟环境中,“完美”地面实况感知输入203g由模拟器提供,但这些被用于导出具有由感知误差模型208引入的真实误差的更真实的感知输入203。
[0102]
如上述参考文献中所述,pspm可以取决于代表物理条件的一个或更多个变量(“混杂因素”),从而允许引入反映不同可能的现实世界条件的不同水平的误差。因此,模拟器202可以通过简单地改变天气混杂因素的值来模拟不同的物理条件(例如不同的天气条件),这将反过来改变感知误差的引入方式。
[0103]
子堆栈100s内的后期感知部件102b处理模拟感知输入203的方式与处理全堆栈100内的真实世界感知输入213的方式完全相同,并且它们的输出反过来驱动预测、规划和控制。
[0104]
替代地,prism可用于对整个感知系统102(包括后期感知部件208)进行建模,在这种情况下,pspm用于生成真实感知输出,该真实感知输出作为输入直接传递到预测系统104。
[0105]
根据实施方式,给定场景参数化201b和堆栈100的给定配置的模拟结果之间可能存在或可能不存在确定性关系(即相同的参数化可能或可能不总是导致同一堆栈100的相同结果)。非决定论可能以各种方式出现。例如,当模拟基于prism时,prism可能会在场景的每个给定时间步长对可能的感知输出上的分布进行建模,从中对真实感知输出进行概率采样。这导致模拟器202内的不确定性行为,由此由于不同的感知输出被采样,对于同一堆栈100和场景参数化可以获得不同的结果。替代地或附加地,模拟器202可以是固有非确定性的,例如天气、照明或其他环境条件可以在一定程度上在模拟器202内随机化/概率化。如将理解的,这是一种设计选择:在其他实施方式中,可以在场景的参数化201b中完全指定变化的环境条件。对于非确定性模拟,每个参数化都可以运行多个场景实例。可以将聚合通过/失败结果分配给参数化201b的特定选择,例如作为通过或失败结果的计数或百分比。
[0106]
测试编排部件260负责选择用于模拟目的的场景。例如,测试编排部件260可以基于来自先前场景的测试预言机输出256自动选择场景描述201a和合适的参数化201b。
[0107]
测试预言机规则:
[0108]
性能评估规则254被构造为要在测试预言机内应用的计算图(规则树)。除非另有说明,否则本文中的术语“规则树”是指被配置为实现给定规则的计算图。每个规则被构造为规则树,多个规则的集合可以被称为多个规则树的“森林”。
[0109]
图3a示出由提取器节点(叶对象)302和评估器节点(非叶对象)304的组合构建的规则树300的示例。每个提取器节点302从场景数据310的集合中提取时变数值(例如浮点)信号(评分)。在上述意义上,场景数据310是场景地面实况的一种形式,并且可以被称为这样。通过在真实或模拟场景中部署轨迹规划器(例如图1a中的规划器106)获得场景数据310,场景数据310示出为包括自主和代理迹线212以及环境数据214。在图2或图2a的模拟环境中,场景地面实况310被提供作为模拟器202的输出。
[0110]
每个评估器节点304示出为具有至少一个子对象(节点),其中,每个子对象是提取器节点302中的一个或评估器节点304中的另一个。每个评估器节点从其子节点接收输出,并将评估器函数应用于那些输出。评估器函数的输出是分类结果的时间序列。以下示例考虑简单的二进制通过/失败结果,但这些技术可以很容易地扩展到非二进制结果。每个评估器函数根据预设原子规则评定其子节点的输出。可以根据期望的安全模型来灵活地组合这样的规则。
[0111]
此外,每个评估器节点304从其子节点的输出中导出时变数字信号,该时变数字信号通过阈值条件与分类结果相关(见下文)。
[0112]
顶级根节点304a是评估器节点,该评估器节点不是任何其他节点的子节点。顶级根节点304a输出最终的结果序列,并且其子节点(即作为顶级根节点304a的直接或间接子节点的节点)提供下层信号和中间结果。
[0113]
图3b直观地描绘由评估器节点304计算的导出信号312和相应的结果时间序列314的示例。结果314与导出信号312相关,因为当(并且仅当)导出信号超过失败阈值316时返回通过结果。如将理解的,这仅仅是将结果的时间序列与对应信号相关联的阈值条件的一个示例。
[0114]
由提取器节点302从场景地面实况310直接提取的信号可以称为“原始”信号,以区别于由评估器节点304计算的“导出”信号。结果和原始/导出信号可以在时间上离散化。
[0115]
图4a示出在测试平台200内实现的规则树的示例。
[0116]
提供规则编辑器400,用于构建要用测试预言机252实现的规则。规则编辑器400从用户(其可以是也可以不是系统的终端用户)接收规则创建输入。在本示例中,规则创建输入以领域特定语言(domain specific language,dsl)编码,并且定义要在测试预言机252内实现的至少一个规则图408。以下示例中的规则是逻辑规则,true和false分别表示通过和失败(可以理解,这纯粹是设计选择)。
[0117]
以下示例考虑使用原子逻辑谓语的组合制定的规则。基本原子谓语的示例包括基本逻辑门(or、and等)和逻辑函数(例如“大于”、(gt(a,b))(当a大于b时返回true,否则返回false))。
[0118]
gt函数是在场景中实现自主代理和另一个代理之间的安全横向距离规则(具有代理标识符“other_agent_id”)。两个提取器节点(latd、latsd)分别应用lateraldistance和lateralsafedistance提取器函数。那些函数直接在场景地面实况310上运行,以分别提取时变横向距离信号(测量自主代理和所识别的其他代理之间的横向距离)以及自主代理和所识别的其他代理的时变安全横向距离信号。安全横向距离信号可以取决于各种因素,例如(在迹线212中捕获的)自主代理的速度和其他代理的速度以及在环境数据214中捕获的环境条件(例如天气、照明、道路类型等)。
[0119]
评估器节点(is_latd_safe)是latd和latsd提取器节点的父节点,并映射到gt原子谓语。因此,当实现规则树408时,is_latd_safe评估器节点将gt函数应用于latd和latsd提取器节点的输出,以便针对场景的每个时间步长计算真/假结果,针对latd信号超过latsd信号的每个时间步长返回true,否则返回false。以这种方式,从原子提取器函数和谓语构造“安全横向距离”规则;当横向距离达到或低于安全横向距离阈值时,自主代理不符合安全横向距离规则。可以理解,这是非常简单的规则树示例。任意复杂度的规则可以根据相同的原理构建。
[0120]
测试预言机252将规则树408应用于场景地面实况310,并经由用户界面(user interface,ui)418提供结果。
[0121]
图4b示出规则树的示例,该规则树的示例包括与图4a中的横向距离分支对应的横向距离分支。此外,规则树还包括纵向距离分支和用于实现安全距离度量的顶级or谓语(安全距离节点is_d_safe)。与横向距离分支类似,纵向距离分支从场景数据中提取纵向距离阈值信号和纵向距离阈值信号(分别为提取器节点lond和lonsd),当纵向距离高于安全纵向距离阈值时,纵向安全评估器节点(is_lond_safe)返回true。当横向距离和纵向距离中的一个或两个是安全的(低于适用的阈值)时,顶级or节点返回true,如果两者都不安全,则返回false。在这种情况下,只有一个距离超过安全阈值就足够了(例如如果两辆车在相邻车道上行驶,当它们并排时,它们的纵向间距为零或接近零;但如果这些车辆有足够的横向间距,这种情况并非不安全)。
[0122]
例如,顶级节点的数字输出可以是时变鲁棒性评分。
[0123]
可以构建不同的规则树,例如实现给定安全模型的不同规则,实现不同的安全模型,或将规则选择性地应用于不同的场景(在给定的安全模型中,并非每个规则都将一定适用于每个场景;通过这种方法,不同的规则或规则的组合可以应用于不同场景)。在这个框架内,还可以构建规则来评估舒适度(例如基于沿着轨迹的瞬时加速度和/或急动)、进度
(例如基于达到定义的目标所花费的时间)等。
[0124]
上述示例考虑了在单个时间实例中对结果或信号进行评估的简单逻辑谓语,例如or、and、gt等。然而,在实践中,可能需要根据时间逻辑来制定某些规则。
[0125]
hekmatnejad等人的“encoding and monitoring responsibility sensitive safety rules for automated vehicles in signal temporal logic”(2019)第19届memocode会议:第17届acm-ieee系统设计的形式化方法和模型国际会议论文集(通过引用整体并入本文)公开了rss安全规则的信号时序逻辑(signal temporal logic,stl)编码。时态逻辑为构造根据时间限定的谓语提供形式化的框架。这意味着由评估器在给定时刻计算的结果可以取决于另一时刻的结果和/或信号值。
[0126]
例如,安全模型的要求可能是自主代理在设定的时间范围内对某个事件做出反应。可以使用规则树内的时态逻辑谓语,以类似的方式对这样的规则进行编码。
[0127]
在上述示例中,在场景的每个时间步长评估堆栈100的性能。可以由此得出总体测试结果(例如通过/失败),例如,如果规则在场景内的任何时间步长失败,则某些规则(例如安全关键规则)可能会导致总体失败(即,必须在每个时间步长通过规则才能获得场景上的总体通过)。对于其他类型的规则,总体通过/失败标准可能是“较柔和的(softer)”(例如只有在某个规则在一定数量的连续时间步长内失败时,该规则才会触发失败),并且这样的标准可能取决于环境。
[0128]
图4c示意性地描绘在测试预言机252内实现的规则评估的分层。接收规则254的集合用于在测试预言机252中实现。
[0129]
某些规则仅应用于自主代理(示例是舒适度规则评估在任何给定时刻自主轨迹是否超过了某个最大加速度或急动阈值)。
[0130]
其他规则与自主代理和其他代理的交互有关(例如,上面考虑的“无碰撞”规则或安全距离规则)。每个这样的规则在自主代理和每个其他代理之间以成对的方式进行评估。另一个示例是“行人紧急制动”规则只能在行人走到自主车辆前面时激活,并且只能针对该行人代理。
[0131]
并不是每个规则都一定适用于每个场景,有些规则可能只适用于场景的一部分。测试预言机422内的规则激活逻辑422确定规则254中的每一个是否以及何时适用于所讨论的场景,并且当规则适用时选择性地激活规则。因此,规则可以在整个场景中保持有效,可能永远不会在给定场景中被激活,或者可能只在一些场景中被激活。此外,可以针对场景中不同点处的不同数量的代理来评估规则。以这种方式选择性地激活规则可以显著地提高测试预言机252的效率。
[0132]
给定规则的激活或去激活可能取决于一个或更多个其他规则的激活/去激活。例如,当行人紧急制动规则被激活时,“最佳舒适度”规则可能被认为不适用(因为行人的安全是首要问题),而当后者激活时,前者可能去激活。
[0133]
规则评估逻辑424在每个有效规则保持有效的任何时间段对每个有效规则进行评估。每个交互规则在自主代理和它所应用的任何其他代理之间以成对的方式进行评估。
[0134]
在规则的应用中也可能存在一定程度的相互依存性。例如,解决舒适度规则和紧急制动规则之间的关系的另一种方式是,每当针对至少一个其他代理激活紧急制动规则时,增加舒适度规则的急动/加速度阈值。
[0135]
虽然已经考虑了通过/失败结果,但规则可能是非二进制的。例如,可以引入两类
错误——“可接受”和“不可接受”。再次,考虑到舒适度规则和紧急制动规则之间的关系,当规则失败但当紧急制动规则有效时,舒适度规则上的可接受失败可能发生。因此,规则之间的相互依存性可以以各种方式来处理。
[0136]
规则254的激活标准可以在提供给规则编辑器400的规则创建代码中指定,任何规则相互依存性的性质以及用于实现这些相互依存性的机制也可以指定。
[0137]
图形用户界面
[0138]
图5示出可视化部件520的示意性框图。可视化部件示出为具有连接到测试数据库258的输入,用于在图形用户界面(gui)500上呈现测试预言机252的输出256。gui被呈现在显示系统522上。
[0139]
图5a示出gui 500的示例视图。该视图属于包含多个代理的特定场景。在该示例中,测试预言机输出526属于多个外部代理,根据代理来组织结果。对于每个代理,在场景中的某个点处,适用于该代理的每个规则都有结果的时间序列。在所描绘的示例中,已为“代理01”选择了摘要视图,从而显示为每个适用规则计算的“顶级”结果。在每个规则树的根节点处计算顶级结果。颜色编码用于区分该代理的规则无效(“不适用”)、有效和通过、以及有效和失败的时间段。
[0140]
为每个结果的时间序列提供第一可选元素534a。这允许访问规则树的较低级结果(即在规则树中较低级计算的结果)。
[0141]
图5b示出“规则02”结果的第一扩展视图,其中还可视出较低级节点的结果。例如,对于图4b的“安全距离”规则,可以可视化“is_latd_safe节点”和“is_lond_safe”节点的结果(图5b中标记为“c1”和“c2”)。在规则02的第一扩展视图中,可以看出,规则02的成功/失败是由结果c1和c2之间的逻辑or关系定义的;(如上述“安全距离”规则中所述)只有当c1和c2两者都失败时,规则02才失败。
[0142]
为每个结果的时间序列提供第二可选元素534b,该第二可选元素534b允许访问相关的数字性能评分。
[0143]
图5c示出第二扩展视图,其中对规则02的结果和“c1”结果进行了扩展,以揭示那些规则对代理01有效的时间段的相关评分。评分显示为视觉评分-时间图,该图以类似的颜色编码表示通过/失败。
[0144]
示例场景:
[0145]
图6a描绘模拟器202中切入场景的第一实例,该第一实例以自主车辆602和另一车辆604之间的碰撞事件结束。切入场景的特征是多车道驾驶场景,其中自主车辆602沿着第一车道612(自主车道)移动,而另一车辆604最初沿着第二相邻车道604移动。在该场景中的某个点处,另一车辆604从相邻车道614移动到自主车辆602前方的自主车道612中(切入距离)。在该场景中,自主车辆602无法避免与另一车辆604碰撞。第一场景实例响应于碰撞事件而结束。
[0146]
图6b描绘从第一场景实例的地面实况310a获得的第一预言机输出256a的示例。在自主车辆602和另一车辆604之间的场景的持续时间内评估“无碰撞”规则。碰撞事件会在场景结束时导致此规则失败。此外,还评估了图4b中的“安全距离”规则。当另一车辆604横向移动得更靠近自主车辆602时,出现安全横向距离阈值和安全纵向距离阈值两者都被突破的时间点(t1),导致安全距离规则的失败,该失败持续到时间t2的碰撞事件为止。
[0147]
图6c描绘切入场景的第二实例。在第二种情况下,切入事件不会导致碰撞,并且自主车辆602能够在切入事件之后到达另一车辆604后面的安全距离。
[0148]
图6d描绘从第二场景实例的地面实况310b获得的第二预言机输出256b的示例。在这种情况下,“无碰撞”规则贯穿始终。当自主车辆602和其他车辆604之间的横向距离变得不安全时,在时间t3违反安全距离规则。然而,在时间t4,自主车辆602设法到达另一车辆604后面的安全距离。因此,安全距离规则仅在时间t3和时间t4之间失败。
[0149]
规则编辑器-领域特定语言(dsl)
[0150]
图7示出测试预言机400的规则创建输入的示例,这些规则创建输入在特定的dsl选择中编码。
[0151]
在图7的示例中,可以在测试平台200内构建自定义规则图。测试预言机252被配置为以预设提取器函数702和预设评估器函数704的形式提供模块化的“构建块”集合。
[0152]
规则编辑器400接收来自用户的规则创建输入。规则创建输入在dsl中编码,并且描述了规则创建代码706的示例部分。规则创建代码706定义自定义规则图408,对应于图4a中的规则图。规则图的选择纯粹是说明性的,dsl的好处是用户可以以定制的方式构建期望的规则图。规则编辑器400解释规则创建代码706,并使自定义规则图408在测试预言机252内实现。
[0153]
在代码706内,提取器节点创建输入被描绘并标记为711。提取器节点创建输入711示出为包括预定提取器函数702中的一个的标识符712。
[0154]
还描绘了评估器节点创建输入713,并且示出为包括预设评估器函数704中的一个的标识符714。这里,输入713指示创建具有两个子节点的评估器节点,这两个子节点具有节点标识符715a、715b(其在该示例中恰好是提取器节点,但通常可以是评估器节点、提取器节点或两者的组合)。
[0155]
自定义规则图的节点是面向对象编程(object-oriented programming,oop)意义上的对象。在测试预言机252内提供节点工厂类(nodes())。为了实现自定义规则图708,节点工厂类710被实例化,生成的工厂对象710(节点工厂)的节点创建函数(add_node)被调用,其中包含要创建的节点的细节。
[0156]
根据代码706,gt函数用于实现场景中自主代理和另一个代理之间的安全横向距离规则(具有代理标识符“other_agent_id”)。在代码406中定义了两个提取器节点(latd、latsd),分别映射到预设lateraldistance和lateralsafedistance提取器函数。那些函数直接在场景地面实况310上运行,以分别提取时变横向距离信号(测量自主代理和所识别的其他代理之间的横向距离)以及自主代理和所识别的其他代理的时变安全横向距离信号。安全横向距离信号可以取决于各种因素,例如(在迹线212中捕获的)自主代理的速度和其他代理的速度以及在环境数据214中捕获的环境条件(例如天气、照明、道路类型等)。这对终端用户来说基本上是不可见的,终端用户只需选择期望的提取器函数(尽管在一些实施方式中,该函数的一个或更多个可配置参数可能会暴露给终端用户)。
[0157]
评估器节点(is_latd_safe)在代码706中被定义为latd和latsd提取器节点的父节点,映射到gt原子谓语。因此,当实现规则树408时,is_latd_safe评估器节点将gt函数应用于latd和latsd提取器节点的输出,以便针对场景的每个时间步长计算真/假结果,针对latd信号超过latsd信号的每个时间步长返回true,否则返回false。以这种方式,从原子提取器函数和谓语构造了“安全横向距离”规则;当横向距离达到或低于安全横向距离阈值
时,自主代理不符合安全横向距离规则。可以理解,这是非常简单的自定义规则示例。任意复杂度的规则可以根据相同的原理构建。测试预言机252将自定义规则树408应用于场景地面实况310,并以输出图717的形式提供结果,也就是说,测试预言机252不简单地提供顶级输出,而是提供在自定义规则图408的每个节点处计算的输出。在“安全横向距离示例”中,提供了由is_latd_safe节点计算的结果的时间序列,但在输出图717中也提供了下层信号latd和latsd,允许终端用户在图中的任何级处容易地调查特定规则的失败原因。在该示例中,输出图717是经由用户界面(ui)418显示的自定义规则图408的视觉表征;自定义规则图的每个节点都以图5a-图5c中所描绘的方式通过其输出的可视化进行扩展。
[0158]
图8示出用于呈现自定义规则树的gui 500的另一个示例视图。多个输出图可经由gui获得,与输出图所涉及的场景地面实况的可视化501相关联地显示。每个输出图是特定规则图的可视化表征,该特定规则图已通过规则图的每个节点的输出的可视化进行了扩展。每个输出图最初以折叠的形式显示,其中只表征每个计算图的根节点。第一视觉元素802和第二视觉元素804分别表示第一计算图和第二计算图的根节点。第一输出图以折叠形式描绘,并且仅根节点的二进制通过/失败结果的时间序列被可视化(作为第一视觉元素802内的简单颜色编码的水平条)。然而,第一视觉元素802是可选择的,以将可视化扩展到较低级节点及其输出。第二输出图以扩展形式描绘,通过选择第二视觉元素804来访问。视觉元素806、808表示可应用规则图内的较低级评估器节点,并且以相同的方式可视化它们的结果。视觉元素810、812表示图内的提取器节点。每个节点的可视化也可以选择以渲染该节点的扩展视图。扩展视图提供在该节点处计算或提取的时变数字信号的可视化。第二视觉元素804示出为处于扩展状态,其导出信号的可视化被显示以代替其结果的二进制序列。基于失败阈值对导出信号进行颜色编码(在本示例中,降至零或以下的信号指示根据适用规则的失败)。提取器节点的可视化810、812以与呈现其原始信号的可视化相同的方式可扩展。一旦在给定的场景地面实况集合上对规则图进行了评估,图8的视图就会呈现规则图的输出。此外,在评估规则图之前,可以为了创建规则图的用户的利益而呈现初始可视化。初始可视化可以是对规则创建代码406中的变化的更新响应。
[0159]
尽管图7中没有描绘,但节点创建输入711、713可以另外设置相关评估器或提取器函数中的一个或更多个可配置参数(例如阈值、时间间隔等)的值。
[0160]
在某些实施例中,可以经由对规则图的选择性评估来提高计算效率。例如,在图7的图内,如果(例如)is_latd_safe在某个时间步长或时间间隔返回true,则可以计算顶级is_d_safe节点的输出,而无需评估该时间步长/间隔的纵向距离分支。这样的效率增益基于对图的“自上而下”评估——从树的顶级开始,只根据需要计算分支到提取器节点,以获得到级输出。
[0161]
评估器或提取器函数可能具有一个或更多个可配置参数。例如,latsd和lonsd节点可以具有指定如何从场景地面实况310提取阈值距离的可配置参数,例如作为自主速度的可配置函数。
[0162]
通过尽可能高速缓存和重用结果,可以获得进一步的效率增益。
[0163]
例如,当用户修改图或某个参数时,只能(在某些情况下,仅以计算顶级结果所需的程度——见上文)重新计算受影响节点的输出。
[0164]
虽然上述示例考虑了时变信号和/或分类的时间序列的形式的输出(例如通过/失
败或真/假结果),替代地或附加地,其他类型的输出也可以在节点之间传递。例如,时变可迭代项(即可以在for循环上迭代的对象)可以在节点之间传递。
[0165]
变量可以在运行时通过树和绑定进行分配和/或传递。运行时变量和可迭代项的组合提供对循环和运行时(与场景相关)参数化的控制,而树本身保持“静态”。
[0166]
for循环可以定义规则适用的特定场景条件,例如“针对前方的代理”或“针对该交叉路口的每个交通灯”等。为了实现这样的循环,需要变量(例如基于“other_agent”变量实现“针对每个附近代理”循环),但也可以用于在当前环境中定义(存储)变量,然后可以由树中更下面的其他块(节点)访问(加载)。
[0167]
时间段只能根据需要(也以自上而下的方式)进行计算,可以针对新要求的时间段高速缓存和合并新要求的时间段的结果。
[0168]
例如,一个规则(规则图)可能要求计算前方车辆的加速度,以检查自适应巡航控制车头时距。另外,另一个规则(规则树)可能需要自主代理(“附近”代理)周围所有车辆的加速度。
[0169]
在适用的时间段重叠的情况下,一个树可能能够重用另一个树的加速度数据(例如在“other_vehicle”被视为“前方”的持续时间是其被视为

附近’的持续时间的子集的情况下)。
[0170]
参考图4c,随着场景运行的进行,规则激活逻辑422可以以上述方式基于循环遍历可迭代项来实现。dsl可以扩展为在任意给定的时间步长在任意谓语上实现循环。在这种情况下,第一逻辑谓语定义适用于每个代理的激活条件。例如,第一谓语可以根据(例如由自主代理的某个阈值距离内的任何代理满足的)距离阈值条件来定义“附近”代理的概念,或者将“前方”代理的概念定义为(例如如果单个代理(i)在自主代理前方,(ii)与自主代理在同一车道上,以及(iii)比满足条件(i)和(ii)的任何其他代理更接近代理所满足的)代理位置上的适当条件集合。定义激活条件的第一逻辑谓语可以以与规则本身相同的方式在dsl中进行编码。规则树反过来可以通过第二逻辑谓语以上述方式定义。这扩展了dsl框架,以将循环合并到任意谓语上。使用要在dsl中构建的形式为“对于[满足谓语1的任何代理],评估[谓语2]”的循环,在dsl中编码的规则和激活条件;在场景运行的每一步,都会构建满足谓语1(如果有的话)的代理集合,并且仅针对该集合的成员评估谓语2。“谓语1”定义每个代理的规则激活条件,“谓语2”定义规则树本身。可以构建时变可迭代项,以跟踪在场景运行的持续时间内,哪些代理在任意时间满足谓语1,并根据需要向下传递规则树,以促进高效的规则评估。
[0171]
例如,每个规则及其激活条件可以在一阶逻辑中定义。
[0172]
下面提供了一段代码,该段代码使用替代语法将自定义规则图(alks_01)定义为时间逻辑谓语。
[0173]
[0174][0175][0176]
在上面的示例中,longitudinaldistance()和velocityalongroadrateralaxis
()是预设提取器函数,例如“and”、eventually()、next()和always()等函数是原子评估器函数。函数agentisonnamelane()是评估器函数,该评估器函数直接应用于确定给定代理是否与自主代理在同一车道上的场景。
[0177]
这里,nearbyagents()是时变可迭代的,识别满足自主代理的某个距离阈值的任何其他代理。这是基于与自主代理的距离在自主代理和每个其他代理之间应用的规则激活条件的一个示例。
[0178]
虽然上述示例考虑了av堆栈测试,但该技术可以应用于测试其他形式的移动机器人的部件。其他移动机器人正在开发中,例如用于在内部和外部工业区中运送货物。这样的移动机器人上没有人,属于被称为uav(无人自动驾驶车辆)的移动机器人的类别。自动驾驶空中移动机器人(无人机)也在开发中。
[0179]
一种计算机系统包括执行硬件,该执行硬件可以被配置为执行本文公开的方法/算法步骤和/或实现使用本技术训练的模型。术语执行硬件包括被配置为执行相关方法/算法步骤的硬件的任何形式/组合。执行硬件可以采用一个或更多个处理器的形式,该一个或更多个处理器可以是可编程的或不可编程的,或者可以使用可编程和不可编程硬件的组合。合适的可编程处理器的示例包括基于指令集架构的通用处理器,例如中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)/加速器处理器等。这样的通用处理器通常执行保持在耦接至处理器或处理器内部的存储器中的计算机可读指令,并根据那些指令执行相关步骤。其他形式的可编程处理器包括具有通过电路描述代码可编程的电路配置的现场可编程门阵列(field programmable gate array,fpga)。不可编程处理器的示例包括专用集成电路(application specific integrated circuit,asic)。代码、指令等可以适当地存储在暂时性或非暂时性介质上(后者的示例包括固态、磁性和光存储设备等)。运行时堆栈图1的子系统102-108可以在可编程或专用处理器或两者的组合中实现,在测试等环境中,在车辆上或在车外计算机系统中实现。图2中的各种部件,例如模拟器202和测试预言机252,可以类似地在可编程的和/或专用的硬件中实现。

技术特征:
1.一种评估移动机器人的轨迹规划器在真实或模拟场景中的性能的计算机实现的方法,所述方法包括:接收所述场景的场景地面实况,所述场景地面实况使用所述轨迹规划器生成以响应于所述场景中的至少一个场景元素来控制所述场景的自主代理;接收所述场景的一个或更多个性能评估规则以及每个性能评估规则的至少一个激活条件;以及由测试预言机处理所述场景地面实况,以确定在所述场景的多个时间步长上是否满足每个性能评估规则的激活条件,其中,仅当满足每个性能评估规则的激活条件时才由所述测试预言机对每个性能评估规则进行评估,以提供至少一个测试结果。2.根据权利要求1所述的方法,其中,对于多个场景元素的集合中的每个场景元素,处理所述场景地面实况以确定在所述场景的多个时间步长上是否满足每个性能评估规则的激活条件,其中,仅当针对所述场景元素中的至少一个满足每个性能评估规则的激活条件时,并且仅在所述自主代理和满足所述激活条件的场景元素之间,对每个性能评估规则进行评估。3.根据权利要求1或2所述的方法,其中,每个性能评估规则被编码在一段规则创建代码中作为第二逻辑谓语,每个性能评估规则的激活条件被编码在该段规则创建代码中作为第一逻辑谓语,其中,在每个时间步长,所述测试预言机针对每个场景元素评估所述第一逻辑谓语,并且仅评估所述自主代理和满足所述第一逻辑谓语的任何场景元素之间的所述第二逻辑谓语。4.根据权利要求1、2或3所述的方法,其中,由所述测试预言机接收具有不同的各自激活条件的多个性能评估规则,并根据所述多个性能评估规则各自不同的激活条件选择性地对所述多个性能评估规则进行评估。5.根据任一前述权利要求所述的方法,其中,每个性能评估规则与驾驶性能有关。6.根据任一前述权利要求所述的方法,包括:在图形用户界面gui上呈现时间序列中的多个时间步长的相应结果,每个时间步长的结果可视地指示包括以下的至少三个类别中的一个类别:当不满足所述激活条件时的第一类别,当满足所述激活条件并且通过所述规则时的第二类别,以及当满足所述激活条件并且所述规则失败时的第三类别。7.根据权利要求6所述的方法,其中,所述结果被呈现为与所述至少三个类别相对应的至少三种不同颜色中的一种颜色。8.根据任一前述权利要求所述的方法,其中,所述性能评估规则中的第一性能评估规则的激活条件取决于所述性能评估规则中的至少第二性能评估规则的激活条件。9.根据权利要求8所述的方法,其中,当所述第二性能评估规则有效时,停用所述第一性能评估规则。10.根据权利要求9所述的方法,其中,所述第二性能评估规则涉及安全,所述第一性能评估规则涉及舒适度。11.根据任一前述权利要求所述的方法,其中,所述场景元素包括一个或更多个其他代理。
12.根据权利要求11所述的方法,其中,所述场景元素的集合是其他代理的集合。13.根据从属于权利要求2的权利要求11或12所述的方法,其中,针对每个场景元素评估所述激活条件,以在每个时间步长计算包含满足所述激活条件的任何场景元素的标识符的可迭代项,所述性能评估规则通过在每个时间步长循环遍历所述可迭代项来评估。14.根据权利要求13所述的方法,其中,所述性能评估规则被定义为应用于从所述场景地面实况提取的一个或更多个信号的计算图,所述可迭代项通过所述计算图以便评估所述自主代理与满足所述激活条件的任何场景元素之间的规则。15.一种计算机系统,包括一个或更多个计算机,所述计算机系统被配置为实现任一前述权利要求所述的方法。16.一种可执行程序指令,用于对计算机系统进行编程以实现任一前述权利要求所述的方法。

技术总结
一种评估移动机器人的轨迹规划器在真实或模拟场景中的性能的计算机实现的方法,包括接收场景的场景地面实况,该场景地面实况使用轨迹规划器生成以响应于场景中的至少一个场景元素来控制场景的自主代理。接收场景的一个或更多个性能评估规则以及每个性能评估规则的至少一个激活条件。测试预言机处理场景地面实况,以确定在场景的多个时间步长上是否满足每个性能评估规则的激活条件。仅当每个性能评估规则的激活条件得到满足时,才由测试预言机对每个性能评估规则进行评估,以提供至少一个测试结果。测试结果。测试结果。


技术研发人员:伊恩
受保护的技术使用者:法弗人工智能有限公司
技术研发日:2022.02.11
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐