自动驾驶车辆系统和组件的仿真和验证的制作方法

文档序号:27450402发布日期:2021-11-18 00:46阅读:373来源:国知局
自动驾驶车辆系统和组件的仿真和验证的制作方法
自动驾驶车辆系统和组件的仿真和验证
1.相关申请的交叉参考
2.本技术要求于2019年2月6日提交的美国临时申请第62/802,108号的优先权,其通过引用整体并入于此。
技术领域
3.本公开总体涉及自动驾驶(autonomous vehicle)车辆系统的仿真、验证和/或训练,包括但不限于车辆的控制系统、车辆的传感器布置和/或系统的其他方面。


背景技术:

4.自动驾驶(即无人驾驶)车辆系统需要大量测试才能安全地部署在公共道路上。通常,用于测试自动驾驶车辆系统的已知方法和系统包括使用真实车辆、真实道路和真实障碍物的广泛的现场测试。因此,根据此类方法和系统对自动驾驶车辆的控制系统和其他特征进行的系统测试通常受限于在不危及公众的测试环境中活动车辆、行人、道路等的有限可用性,以及受限于创建静态环境和/或可重现事件(其允许在控制环境变量的同时测试车辆系统的特定方面)的难度。
附图说明
5.图1是用于自动驾驶车辆系统及其组件的仿真、验证和/或训练的示例系统的示意图。
6.图2是示出进行自动驾驶车辆和/或其组件的多个测试仿真的示例方法的流程图。
7.图3是示出了定义用于自动驾驶车辆和/或其组件的测试仿真的被测车辆的示例方法的流程图。
8.图4是可以与图2的方法一起使用的示例接口。
9.图5是示出了定义用于自动驾驶车辆和/或其组件的测试仿真的场景的示例方法的流程图。
10.图6是可以与图5的方法一起使用的示例仿真城市道路。
11.图7是可以与图5的方法一起使用的示例仿真停车场。
12.图8是可以与图4的方法一起使用的示例仿真高速公路。
13.图9是示出执行自动驾驶车辆和/或其组件的测试仿真的示例方法的流程图。
14.图10是示出在自动驾驶车辆和/或其组件的一系列测试仿真中针对测试仿真的一个或多个方面进行参数化的示例方法的流程图。
15.图11是用户计算环境的示例实施例的示意图。
具体实施方式
16.根据本公开的教导,可以改进用于测试、验证和训练自动驾驶车辆系统和部件的已知方法和系统。在一些实施例中,可以提供数字仿真环境,其中可以虚拟地测试和验证自
动驾驶车辆系统的各个方面。如将更详细地描述的,根据本公开的自动驾驶车辆系统的测试可以包括参数化自动驾驶车辆系统的一个或多个特征,例如(i)传感器的数量、布置和/或编程;(ii)自动驾驶车辆的控制编程的各个方面(例如,对特定刺激或事件的响应策略);和/或(iii)车辆本身的特征(例如尺寸、加速度和转弯性能等),并在参数化的特征空间上执行大量仿真。除了车辆的特征之外,可以将环境条件参数化,包括天气条件、车辆交通、行人交通、交通灯定时等。
17.根据本公开的自动驾驶车辆仿真器可以包括基于容器的测试架构,其中用户可以提供用户希望而进行测试或验证的自动驾驶车辆的一部分或传感器软件堆栈(例如控制系统或感知系统(例如,一个或多个传感器或传感器控制器)的一部分)的容器,与由第三方提供的、可公开获得的或由测试软件以其他方式提供的测试的其他方面(例如,控制系统的其他部分、道路、环境、车辆的其他方面等)的容器。结果,本公开提供高度灵活的仿真架构,使用户能够测试自动驾驶车辆的特定部分,例如控制系统或其部分、感知系统或其部分等,而无需用户进行提供整个自动驾驶车辆、整个控制系统或整个感知系统。
18.现在参考附图,其中在各种视图中,相同的数字表示相同或相似的特征,图1是用于测试和验证自动驾驶车辆系统的示例系统100的示意图。系统100可以包括以硬件和/或软件体现的多个功能模块。在实施例中,本文描述的功能模块中的每一个可以包括在存储计算机可读指令的一个或多个非暂时性计算机可读存储器设备中,所述计算机可读指令在由处理器执行时使处理器执行模块的所述功能。
19.系统100的用户可以是自动驾驶车辆系统的所有者或希望测试自动驾驶车辆系统或自动驾驶车辆系统的一个或多个组件的另一实体。在一些实施例中,这里描述的一个或多个模块可以包含在用户的本地计算资源中。附加地或替代地,一个或多个模块可以包含在基于云的计算资源中,用户可通过浏览器或其他接口对其进行访问。
20.系统100可包括设计器模块102(本文中可简称为“设计器(designer)102”)、导向器模块104(本文可简称为“导向器(director)104”)和分析器模块106(在本文中可简称为“分析器(analyzer)106”),以及将在下文中描述的其他功能模块和组件。如将在下文和本公开所附权利要求中进一步详细描述的,一般而言例如,设计器102包括接口,通过该接口从用户接收期望的自动驾驶车辆仿真的细节,导向器104执行期望的仿真,并且分析器106向用户呈现仿真的结果。
21.为了便于描述,本公开将大体参考单个自主车辆(ego vehicle)的仿真和测试来讨论系统和方法。然而,应当注意的是,可以应用本公开的系统和方法以在单个仿真中或一系列仿真中仿真并测试两个或多个自主车辆(例如,在同一场景中,使得两个或更多个自主车辆可以在仿真中交互)。在不同的实施例中,如果仿真中包括两个或更多个自主车辆,则可以在仿真的实例上针对那些自主车辆参数化相同或不同的参数。
22.设计器102可以包括用户接口,例如图形用户接口,用户通过该图形用户接口输入期望仿真的一个或多个方面。用户可以输入包括场景细节和车辆细节多个方面。场景可以包括一个或多个场景——每个场景包括例如,道路网络、天气和其他环境细节、静止障碍物、其中将发生仿真的虚拟环境的其他静态细节,以及场景中的动态参与者(dynamic actor),包括行人和车辆交通。用户可以从预定的一组场景细节(例如,预定的道路网络,例如高速公路、城市街区、停车场等)中进行选择,或者可以定义用户自己的场景或场景方面。
例如,用户可以定义自己的道路网络。
23.在定义场景时,用户可以详细说明用户想要测试自动驾驶车辆的特定情况或事件。例如,用户可以详细说明在特定时间采取特定行动的交通车辆和/或行人的存在。附加地或替代地,用户可以更笼统地输入环境的细节——交通车辆的数量、行人的数量、信号灯的存在等;并且本公开的系统可以提供这些车辆、行人、信号灯等行为的随机化(并且在实施例中,参数化)仿真。
24.如上所述,通过设计器102,用户还可以指定车辆细节——即被测试的自动驾驶车辆的细节(在本公开中其可以称为“自主车辆”)。车辆细节可以包括例如车辆上传感器的类型、数量、位置和/或性能。例如,用户可以指定一个或多个雷达、激光、激光雷达、相机、gps、imu、定位器和/或可用于检测自主车辆上(即,在自主车辆的数字表示上)的自动驾驶车辆周围的环境或自我车意识辆空间中的位置的其他传感器的数量、位置和性能。在一个实施例中,用户可以为一个或多个传感器提供特定固件以测试和评估该传感器固件的性能。附加地或替代地,用户可以定义一个或多个传感器的硬件方面(例如,雷达传感器的波束宽度、激光器的功率等),以便测试和评估该硬件布置的性能。
25.除了传感器之外,用户可以提供的其他车辆细节可以包括自主车辆的车体尺寸和性能特征,例如转弯半径、发动机或马达扭矩曲线等。在实施例中,这样的细节可以是相应的市售车辆的细节,并且可以从车辆制造商数据或此类车辆的第三方测试中得出。附加地或替代地,给定自我车辆的性能特征和车体尺寸可以是通用的,以代表一类车辆(例如,小型双门轿车、四门轿车、小型suv、大型厢式货车等)的典型性能和车体尺寸。
26.在设计器中,用户还可以指定自主车辆的起始位置以及自主车辆通过道路网络的预期目的地和/或期望路径。用户还可以指定测试的一个或多个未通过条件(在本文中也可以称为通过/未通过条件),其可以相对于sut在仿真中被监控。在一些实施例中,未通过条件可以是自主车辆的行为或事件。在一些实施例中,未通过条件可以是自主车辆上传感器的行为或事件。在一些实施例中,未通过条件可由用户指定。
27.通过设计器102,用户可以定义场景或车辆的一个或多个参数化特征。例如,以下特征中的一个或多个可以被参数化:(i)一个或多个传感器的数量、放置和/或软件和硬件设置;(ii)自动驾驶车辆控制编程的各个方面(例如,对特定刺激或事件的响应策略);(iii)车辆本身的特征(例如尺寸、重量、发动机参数、变速箱参数、轮胎、加速度和转向性能、颜色等);(iv)天气;(v)车辆交通的存在、数量、车辆类型和/或行为;(vi)行人交通的存在、数量和/或行为;(vii)交通灯定时;(viii)道路网络的一个或多个方面(例如,特定路段的车道数量、停车通道的宽度、车道标记、停车位标记等);(ix)一天中的时间;和/或场景或自主车辆的其他特征。对于参数化特征,用户可以提供一组固定值或定义需要进行仿真的值范围。例如,用户可以选择仅将降水参数化,并且可以定义降雨率或降雪率的范围。替代地,用户可以选择对特定雷达传感器的降水和位置进行参数化,并且可以定义雷达传感器在自主车辆上的一组位置以及降雨率或降雪率的范围。任何数量和组合的特征都可以被参数化以进行仿真。
28.如图1所示,在实施例中,设计器102可以经由代表性状态转移(rest)api 108与导向器104交互。设计器102的接口可以是在用户的计算设备上执行的本地应用程序,或者可以设置在服务器上并由用户通过网络用户接口访问。类似地,用户可以通过rest api 108
和/或通过与导向器的网络用户接口110交互而将通过设计器102指定的数据提供给导向器104。用户在设计器102中的输入可以通过任何适当的数据传输被导向器104接收。
29.导向器104可以包括硬件和软件模块,该硬件和软件模块使导向器104能够根据通过设计器从用户接收的数据执行仿真。这种硬件和软件可以包括rest api 108和网络接口110、管理器112、仿真引擎114和结果数据库116。在实施例中,导向器104的模块可以在远离用户的地方实现,例如在云中。
30.在实施例中,管理器112可以控制导向器104内的数据交换以及导向器104和其他模块之间的数据交换,以使得导向器104能够执行这里描述的功能。
31.通常,对于单个仿真,仿真引擎114可以仿真场景,可以仿真场景中的被测系统(“sut”)118(或场景中的多个sut 118),并且可以记录场景和sut 118各自的数据供用户稍后查看。
32.如图1中仿真119的多次迭代所示,引擎可以对被测系统118的许多不同版本进行单独的仿真。如被测系统118的多次迭代所示,在一些实施例中,这些仿真119中的每一个可以包括多个被测系统118。根据一个或多个参数化特征,不同的仿真119可以彼此不同。例如,在一个实施例中,导向器104(例如,在管理器112的控制下)可以将仿真引擎114应用于仿真119以执行被测系统118的蒙特卡罗仿真。在一些实施例中,概率分布可用于从参数化特征的值范围内选择该参数化特征的值。在一些实施例中,参数化特征值的各种可能组合可以由导向器104以以下方式之一处理,例如:
33.·
全面的:导向器104对参数化特征值的每个可能组合执行仿真。
34.·
随机参数:用户在设计器102中选择要执行的仿真的数量上限,并且导向器104自动针对该仿真的数量选择参数化特征值的组合。
35.·
仅边缘:导向器针对每个值范围边缘的参数化特征值的每个组合执行仿真。例如,对于3个参数化特征,仅边缘策略将包括8个仿真。
36.·
单一仿真:导向器104使用每个参数化特征的指定值(例如,每个参数化特征的值范围的中心)执行单一仿真。
37.如上所述,用户可以为参数化特征定义一组特定的值或值的范围。在用户指定值范围的实施例中,导向器104可以选择该范围内的多个值用于仿真(例如,三个或更多值)。在一个实施例中,导向器104可以选择在该范围内均匀间隔开的这些值。在其他实施例中,导向器可以在该范围内随机选择这样的值(例如,根据概率分布),或者可以以其他方式选择该范围内的值。
38.仿真引擎114可以包含用于对仿真环境的所有方面进行仿真的模块,包括天气、车辆动力学、碰撞物理、行人行为、交通车辆行为和动力学、道路、建筑物和其他障碍物外观、传感器性能等。用于仿真这些方面的模块通常是商业上可获得的并且是本领域技术人员已知的。
39.在实施例中,一个或多个传感器的功能是通过导向器104进行仿真的。这种传感器的基础数学模型可以基于传感器的感测手段(例如,雷达的激光、电磁脉冲等)之间的相互作用的已知物理模型,其通过光线追踪技术、计算机着色器(computer shader)、有限差分分析、有限元分析、有限体积分析、矩量法和/或简化模型应用于数字仿真场景。基于物理的模型可以通过对传感器的发射器和/或接收器进行仿真并对发射的/接收的数据进行信号
处理、图像处理和数值分析,来复制传感器硬件在现实世界中的工作方式。例如,导向器可以对以下进行仿真:从激光雷达和雷达传感器向场景中发射电磁波、此类波向场景中相交对象的传播、相交对象对此类波的反射、折射和/或吸收、此类波从物体的反射或折射传播、以及传感器对反射波和折射波的接收。基础传感器模型然后分析接收到的能量并计算传感器输出。接收的能量的大小不仅取决于发射器的能量,还取决于相交物体的材料属性、物体的几何形状和颜色、入射角、天气状况以及相交物体的湿度和脏污程度。在实施例中,所有这些方面都可以由导向器104仿真。发射器和接收器可以位于同一位置也可以不在同一位置。
40.在实施例中,射线追踪器可以针对每个仿真的能量波发射多于一条射线以(1)获得波形时间相关的反射信号,(2)进行射线弹跳法(sbr)分析或(3)进行信号处理。激光雷达模型可以对波形数据进行数值分析,以报告每次发射的多次返回。用户可以针对每个仿真波束的射线分布使用预定义的模式,也可以在传感器配置中定义模式。
41.容器注册表120可以存储用户的被测系统的一个或多个方面。容器注册表120可以是导向器104从其为给定仿真创建sut(或其部分)的实例的源。因此,用户可以向容器注册表120输入(例如,上传或使其可用)一个或多个sut,导向器104可以在各种仿真119中使用这些sut。用户可以将一个或多个sut的离散部分输入到容器注册表120,在一些实施例中,用户可以以用户希望独立地或单独地测试那些部分的程度将一个或多个sut的离散部分输入到容器注册表120。因此,可以从容器注册表120接收被测系统118的一个或多个方面。
42.仿真引擎114可以包括例如用于公开可用的传感器的固件、用于实际车辆的性能特征、用于市售自动驾驶车辆的已知固件或固件部分、物理模型、天气模型、感知模型(例如,如何将一个或多个传感器的输出转换成一个或多个物体的存在、位置、速度等)等。仿真引擎114可以用作给定仿真的“控制”方面的源,以便测试用户的sut的组件和特征。
43.导向器104的基于容器的方法有利地使用户能够提供自动驾驶车辆控制系统的组件(例如,特定传感器、特定传感器布置、特定事件的特定车辆控制策略)以及在各种环境条件下和/或与自动驾驶车辆控制系统的各种其他组件相结合地彻底测试该组件。此外,如在本公开的其他地方更详细地描述的,导向器104的基于容器的方法实现了可移植性和平台独立性(例如,使导向器能够以多种不同的编程语言合并sut并合并许多不同的sut方面和组合方面)以及对依赖的隔离和控制。
44.在实施例中,用户可能希望在用户的本地计算资源中维护被测系统,而不是将被测系统上传到导向器104的计算资源。因此,导向器104可以远程地与被测系统接口,包括远程呼叫被测系统和接收来自被测系统的响应。导向器104可以包括用于使得这种数据与由用户维护和存储的被测系统进行交换的被测系统连接器。
45.导向器104可以将每个仿真的结果存储在结果数据库116中。在实施例中,单个仿真的结果可以包括仿真的一个或多个方面(例如,所有方面)各自的时间同步数据,包括仿真的动态方面的外观、位置、速度和/或加速度,例如自主车辆、交通车辆、行人等;以及仿真的静态方面的位置和外观,例如路缘石、建筑物和其他障碍物;以及仿真传感器的输出(例如,相机图像、激光雷达点云等)。这种数据也可以与被测系统118中调用的例程调用和代码时间同步并一起记录。
46.分析器106可以包括图形用户接口,通过该图形用户接口,用户可以查看已经由导
向器104执行的一个或多个仿真。在实施例中,分析器106可以仿真的输出四维(4d)(例如,三个空间维度加上时间)渲染。在实施例中,分析器106可以进一步输出用户的被测系统中的代码跟踪,与仿真的各个其他数据同步,以使得用户能够查看被调用的被测系统的特定例程和部分,从而使得用户可以根据需要调整被测系统的代码。在一些实施例中,分析器106可以进一步输出来自仿真的原始传感器数据,该输出可以与仿真的4d渲染同步。
47.在一些实施例中,分析器106可以输出用户可以用作训练数据以改进控制系统或感知系统的一个或多个方面的数据。例如,分析器106可以输出交通车辆的位置、速度和其他方面的各个数据以及来自传感器的输出和控制系统对来自多个仿真的传感器数据的解释,作为用于训练交通车辆识别算法的训练数据。
48.图2是示出进行自动驾驶车辆和/或其组件的多个测试仿真的示例方法200的流程图。在一些实施例中,方法200或其一个或多个方面可由系统100的一个或多个方面执行或与系统100的一个或多个方面一起执行,例如设计器102、导向器104和/或分析器106。
49.将参考车辆、传感器、场景、环境等来描述本公开的方法200和其他方法。应当理解,在本公开的上下文中,这样的实体是虚拟表示,而不是物理实体.
50.方法200可以包括:在框202,接收测试仿真参数集。在一些实施例中,测试仿真参数集可以包括例如一个或多个自主车辆(或其一个或多个方面)、一个或多个场景以及一个或多个通过/未通过条件。可以参考图3

8提供关于定义自主车辆和定义场景的细节。在一个实施例中,可以从用户接收测试仿真参数集。
51.对于每组参数值,测试仿真参数集还可以包括一个或多个通过/未通过条件。通过

未通过条件可以包括,例如,自主车辆与场景中的另一物体之间的接触(未通过)、在预定量时间内在指定路径上移动(通过)等。
52.接收测试仿真参数集可以包括:在子框202a,接收被测系统容器并且在子框202b接收剩余的测试仿真参数集。
53.在子框202a接收的sut容器可以是或可以包括用户特定系统,例如用于自动驾驶车辆的控制方案、传感器配置、传感器固件、车体等。在一些实施例中,sut容器在一些实施例中可以是用户专有的。在一些实施例中,可以通过用户向执行方法200的计算系统上传sut来接收sut容器。在其他实施例中,可以通过从单独的计算资源远程链接和远程调用sut来接收sut容器。在一些实施例中,例如,sut可以作为二进制文件被接收。
54.在一些实施例中,可以在子框202(a)处接收两个或更多个sut容器。例如,用户可以在不同的容器中提供两个不同的传感器,或者在不同的容器中提供传感器及其控制固件。为了便于描述,总体将参考具有单个sut的实施例来描述方法200的其余部分,但是应当理解,在一些实施例中,方法200可以应用于多个sut。
55.在子框202b处接收的剩余测试仿真参数集可以包括除用户sut之外、执行一个或多个测试仿真所需的所有其他方面。在一些实施例中,可以从参数的中央存储库(例如,存储在一个或多个服务器上)检索剩余的测试仿真参数集。在子框202b接收剩余的测试仿真参数可以包括为用户提供每个参数的多个选项,以及接收用户对每个参数的选择。
56.在一些实施例中,接收测试仿真参数集可以包括接收测试仿真参数集中的多个参数的单个值和随着一系列测试仿真改变该参数集中一个或多个参数的指令。例如,可以接收参数集中所有参数的单个值,并且可以接收改变参数集中一个参数的指令。在一些实施
例中,要改变的参数可以是自主车辆参数,例如自主车辆上传感器的位置、传感器设置、自主车辆车体、自主车辆的控制逻辑的设置、自主车辆的性能特征等等。在其他实施例中,要改变的参数可以是场景参数,例如交通设置、红绿灯位置或定时、街道特征等。
57.该方法还可以包括:在框204,为每个可变参数确定相应的多个值。在一些实施例中,确定给定参数的多个值可以包括例如确定围绕在块202处接收的给定基值的一组值。附加地或替代地,确定给定参数的多个值可以包括为参数集中的其余参数提供的参数确定合适的一组值。例如,在可变参数是传感器位置的情况下,传感器位置可以跨自主车辆(该车辆使用单个这样的传感器)的整个前部而变化,相对地,传感器位置也可以跨仅车辆(该车辆使用两个这样的传感器)前部的单侧而变化。
58.在一些实施例中,传感器类型的一个方面可以是在仿真测试之间变化的值。例如,传感器硬件延迟或传感器控制固件延迟可以随着测试而变化。在另一个示例中,传感器的环境误差源可以是变化的值,例如相机上的污垢、雾化/潮湿的镜头、通过玻璃或其他材料的激光穿透值、被遮挡的激光或激光雷达光束或其他模糊传感器上的材料的程度或gps位置噪声。误差源可以附加地或替代地包括粘贴像素(stuck pixel)的数量或位置、损坏的激光或激光雷达束、或传感器内的其他硬件误差。在另一个示例中,传感器的硬件设置可以是可变值,例如激光束的光束加宽特性。在另一示例中,传感器的基于位置或布置的误差可以是可变值,例如imu未对准角度、偏置误差和比例因子、或定位器位置、方向和运动学噪声。在另一个示例中,可以改变传感器的固件设置,例如雷达检测概率或误报率。
59.该方法还可以包括,在框206,执行多个仿真,每个仿真对应于可变参数的相应值。每个仿真可以包括根据自主车辆的控制逻辑使自主车辆移动通过测试场景。仿真控制逻辑又可以响应来自一个或多个传感器的仿真输入。如下文将描述的,每个测试场景可以包括通过所选道路的所选自主车辆路径。
60.在一些实施例中,执行仿真可以包括创建仿真引擎容器实例,该容器实例包括仿真的场景和剩余的测试仿真参数集(在子框202b处接收)。执行仿真还可以包括创建sut的容器实例和通过api调用sut容器实例的仿真引擎容器实例。如以下将关于图9所描述的,在一些实施例中,执行多个仿真可以包括创建多个仿真引擎容器实例和sut容器实例,每个仿真引擎容器实例通过api调用相应的sut容器实例。
61.在一些实施例中,执行多个仿真可以包括并行执行两个或更多个仿真。在一些实施例中,每个这样的仿真可以包括相应仿真引擎容器实例通过api调用相应的sut容器实例以执行测试仿真。
62.该方法还可以包括,在框208,记录测试仿真。可以记录测试仿真,使得可以以一种或多种形式向用户重放仿真。例如,给定的测试仿真可以被记录为“视频”(即4d渲染),其中用户查看自主车辆通过测试场景。因此,测试仿真可以包括在场景内在多个时间点的测试环境的全三维渲染。给定的测试仿真也可以通过测试期间事件的文本列表来记录,例如通过自主车辆采取的动作、测试场景中的动作等。
63.方法200还可以包括,在框210,对于多个仿真中的每个仿真,确定自主车辆是通过了还是未通过仿真的一个或多个条件。框210可以包括将通过/未通过条件与测试仿真进行比较以将仿真的一个或多个时间点与每个通过/未通过条件进行比较,从而确定是否满足该通过/未通过条件。
64.方法200还可以包括,在框212,为用户输出一个或多个记录的仿真。输出记录的仿真可以包括例如显示记录的仿真、传输记录的仿真或其他形式的输出。
65.在一些实施例中,输出仿真可以包括输出具有多个相机选项的自主车辆和/或场景的其他方面的4d可视化(三个空间维度加上时间)。在一些实施例中,4d可视化可以包括物体和路径可视化。在一些实施例中,仿真的输出可以包括与4d可视化同步的传感器数据回放。在一些实施例中,仿真的输出可以包括带有过滤器和搜索的日志文件显示,以及带有搜索的记录时间序列数据的图表。在一些实施例中,仿真的输出可以包括与仿真的其他各个数据同步的用户的被测系统中的代码跟踪。
66.图3是示出定义用于自动驾驶车辆和/或其部件的测试仿真的测试车辆的示例方法300的流程图。在一些实施例中,方法300或其一个或多个方面可由设计器102执行或与设计器102一起执行。如上所述,被测车辆在本文中可被称为“自我”车辆。
67.方法300可以包括,在框302,指定测试车体。在一些实施例中,指定测试车体可包括接收用户对测试车体的选择。例如,用户可以选择市售车体。在其他实施例中,指定测试车体可以包括接收用户设计的车体,或从一组边界条件内提供随机生成的车体。
68.方法300还可包括,在框304,指定测试车辆的性能特征。性能特征可以包括,例如,在一种或多种天气条件下沿一个或多个矢量的加速度、转弯半径、制动力或制动减速度等。例如,用户可以选择市售车辆(即该车辆的性能特征)。在其他实施例中,指定测试车辆的性能特征可以包括接收用户指定的性能特征,或从一组边界条件内提供随机生成的性能特征。
69.方法300还可包括,在框306,将一个或多个传感器放置在指定的测试车辆上。放置一个或多个传感器可包括接收用户对一个或多个传感器的选择和/或用户对测试车辆上传感器位置的指定。这样的传感器可以包括例如雷达、激光、激光雷达、相机、gps、imu、定位器和/或用于检测自动驾驶车辆周围的环境和/或物体和/或自主车辆的位置的其他传感器。
70.图4是用于在方法300的框306处将一个或多个传感器放置在车辆上的示例接口400。接口400可以包括自主车辆的多个不同视图。用户可以选择视图和该视图内的自主车辆上的位置,并选择放置在该位置的传感器的类型。在一些实施例中,用户可以选择特定的传感器(例如,特定的市售型号,或用户自己的待测传感器等)。用户可以选择每个放置的传感器的方向。用户可以根据需要在自主车辆上放置尽可能多的传感器。
71.再次参考图3,方法300还可包括,在框308,为测试车辆指定控制逻辑。在一些实施例中,指定控制逻辑可以包括接收用户对已知或商业上可获得的控制逻辑的选择。在其他实施例中,指定控制逻辑可以包括接收用户专有控制逻辑或控制逻辑的用户专有部分。在一些实施例中,指定控制逻辑可以包括在一组安全边界内创建随机化控制逻辑(或其一个或多个方面)。在一些实施例中,为车辆指定控制逻辑可以包括向用户提供潜在的自主车辆行为的列表,并允许用户从这些行为中进行选择(例如,跟随距离、最大速度)。
72.图5是示出定义用于自动驾驶车辆和/或其组件的测试仿真的场景的示例方法500的流程图。在一些实施例中,方法500或其一个或多个部分可由设计器102执行或与设计器102一起执行。
73.方法500可以包括,在框502,指定测试场景(这里也可以称为场景)。指定测试场景可以包括,例如,针对一个或多个车辆和行人创建或选择一个或多个道路、人行道、停车位
和其他路径的网络。许多不同的场景类型可以用作本公开的一部分。下面将参照图6、7、8描述某些示例场景。
74.图6是可以与图5的方法500一起使用的示例的仿真城市道路场景600。示例的仿真城市道路场景600可以包括例如以网格图案布置的街道网络602。在一些实施例中,街道网络602可以是一组封闭的街道,如图6所示。在图6的仿真城市道路场景600中,每条街道可以包括一个或多个方向上的一个或多个车道。在图6的仿真城市道路场景600以及本公开的其他仿真场景中,街道的一个或多个交叉路口可以包括交通灯、交通标志(例如,停车标志、让行标志等)或其他交通控制媒体。
75.示例的仿真城市道路场景600还可包括街道之间的一个或多个建筑物604。在一些实施例中,建筑物在整个仿真场景中可以是统一的。在其他实施例中,建筑物在整个环境中可以是可变的。每个建筑物可以包括一种或多种仿真材料,这些仿真材料可以对自主车辆使用的一种或多种类型的传感器具有仿真的反射率(例如,雷达、激光、红外线、不同颜色的可见光)。
76.图7是可以用作测试场景的示例仿真停车场场景700,其可以与图5的方法一起使用。仿真停车场场景700可以包括一排或多排停车位702,这些停车位可以垂直于行驶车道或与行驶车道成角度。停车场场景还可以包括停车场周围的一条或多条街道602和一个或多个建筑物604。与城市道路场景600一样,停车场场景700可以是封闭环境。
77.图8是可以用作测试道路场景的示例仿真高速公路场景800,其可以与图5的方法一起使用。高速公路场景800可以包括由一个或多个车道以及一个或多个入口匝道和/或出口匝道构成的高速公路场景802。在一些实施例中,高速公路场景802可能没有交通灯。在一些实施例中,高速公路场景802可以是封闭环境。
78.再次参考图5,方法500还可包括:在框504,指定自主车辆通过测试场景的路径。指定自主车辆的路径可以包括例如接收通过测试场景的用户指定路径。在其他实施例中,指定自主车辆的路径可以包括随机创建通过测试场景的路径(例如,在接收到用户选择的起点和/或终点之后)。
79.方法500还可以包括:在框506,在测试场景中放置一个或多个动态参与者并设置该一个或多个动态参与者的行为。动态参与者可以包括例如交通车辆(例如,汽车、卡车、公共汽车等)、骑自行车的人、行人以及与自主车辆相关的其他第三方参与者。动态参与者可以基于随机密度随机放置,可以响应于一个或多个用户设置(例如,密度、速度、攻击性等)随机放置,或者可以响应于特定用户放置选择而放置。动态参与者的运动也可以由用户设置以及从用户接收——例如,交通车辆是否正在移动或停放,行人是步行还是站立等。
80.方法500还可以包括:在框508,指定场景的一个或多个环境方面。环境方面可以包括,例如,降水类型和降水量或速率、一天中的时间、一年中的时间、太阳或月亮的位置、云量、温度、街道路面类型(例如,混凝土、砖、泥土等)和特征(例如,沥青填充物(tar snake)、坑洼、减速带等)、道路标记质量等。环境方面可以通过从用户接收到的一个或多个选择来指定,或者可以从一组约束中随机指定。
81.方法500还可包括,在框510,设置测试场景内的交通灯定时。交通灯定时可以在一组约束内随机设置,或者可以响应特定用户选择来设置。在一些实施例中,设置交通灯定时可以包括设置场景中每个交通灯的初始状态(例如,响应于用户输入,或自动地)。
82.图9是示出执行自动驾驶车辆和/或其部件的测试仿真的示例方法900的流程图。在一些实施例中,方法900或其一个或多个方面可由导向器104执行。
83.方法900可以包括,在框902,创建仿真引擎容器实例。仿真引擎容器实例可以包括进行以下操作所需的物理和规则:创建测试场景、用一个或多个自主车辆和一个或多个其他动态参与者填充测试场景以及在测试场景中操作自主车辆,包括对自主车辆的一个或多个传感器进行仿真以及响应来自这些传感器的输入对自主车辆的控制逻辑进行仿真。仿真引擎容器实例可以进一步包括除了用户的sut之外的自主车辆的各方面。仿真引擎容器实例还可以包括在整个仿真期间被参数化的可变参数的相应值。
84.在一些实施例中,创建仿真引擎容器实例可以包括将仿真引擎api编译成被测系统的编程语言。
85.方法900还可以包括:在框904,创建每个被测用户系统容器的实例。因此,在执行大量仿真的情况下,每个仿真可以包括其自己的sut容器实例。
86.方法900还可包括:在框906,将仿真引擎容器实例连接到一个或多个sut容器。仿真引擎容器实例可以经由与仿真引擎相关联的软件api连接到sut容器。在一些实施例中,仿真引擎容器实例可以特定于一组测试参数值。此外,在一些实施例中,sut容器可以特定于一组测试参数值。因此,为了测试不同组的参数值(例如,作为测试的给定方面的参数化的一部分,例如特定参数的特定值),可以创建单独的仿真引擎容器实例和/或可以创建单独的sut容器。
87.方法900还可以包括:在框908,根据链接的仿真引擎容器实例和sut实例运行仿真,包括创建场景、仿真环境、仿真第三方动态参与者、仿真一个或多个传感器的操作,并根据由一个或多个传感器的输出通知的控制方案来仿真自主车辆的行为(例如,沿着选定的路径)。
88.根据方法900的基于容器的仿真可以提供许多优点。首先,它可以有效地使用计算资源来并行运行多个仿真,并且可以轻松地从单个仿真扩展到数千个仿真并行,提供足够的并行资源。其次,它可以使被测系统在其原生(或接近其原生)环境中运行,因为api可以被编译成sut的计算语言。第三,它通过将单个仿真部署为通过网络api连接的一组容器来支持模块化。因此,一个完整的被测系统可以分成多个组件,每个组件都在自己的容器中运行。第四,它使多个被测系统能够在单个仿真或一组仿真中共同地并被安全地测试,而不会将被测系统的代码库暴露给彼此,这可以使不同的各方共同开发控制系统(例如,与提供传感器的一方,另一方为传感器提供控制固件,而无需代码库共享)。
89.图10是示出在自动驾驶车辆和/或其组件的一系列测试仿真中对测试仿真的一个或多个方面进行参数化的示例方法1000的流程图。方法1000可以与图2和图9的方法200、900一起使用。具体地,可以应用图10的方法1000来确定给定参数的不同值(例如,在方法200中),在一些实施例中,这些不同值可以应用在可以根据方法900执行的单独仿真中。
90.方法1000可以包括:在框1002,定义参数值空间。在一些实施例中,参数值空间可以由用户定义,或者在一些实施例中可以被自动定义。例如,在参数是车辆前保险杠上的传感器位置的情况下,参数值空间可以包括被选择用于测试的自主车体的前保险杠上的每个可能位置。在另一个示例中,当参数是车辆控制逻辑中的跟随距离设置时,参数值空间可以是从零到选定的最大值(例如,100码),或者用户选择的更窄范围。
91.方法1000还可以包括:在框1004,对参数值空间进行离散化,这可以包括将参数空间划分为一组间隔开的离散值。在一些实施例中,离散值可以均匀地间隔开。在其他实施例中,离散值可以不均匀地间隔开(例如,在参数空间的中心周围具有更高的密度,或者在预期具有更多成功值的一个或多个区域周围具有更高的密度)。
92.方法1000还可以包括:在框1006,选择第一组初始参数值。第一组参数值可以是离散化参数值的整个集合的子集。在一些实施例中,该组初始参数值可以覆盖整个参数空间。在其他实施例中,该组初始参数值可以仅覆盖参数空间的一部分。在一些实施例中,第一组参数值可以跨离散化参数空间而均匀采样。在其他实施例中,第一组参数值可以从离散化的参数空间中随机采样。
93.方法1000还可以包括:在框1008,针对第一组中的每个参数值执行多个相应的仿真测试。例如,可以根据方法900执行每个仿真测试。
94.方法1000还可以包括:在框1010,根据在框1008运行的多个仿真测试的相应结果,将第一参数值集合内的值分组到各集群中。例如,考虑如下示例:提供四个通过

未通过条件(条件a、b、c和d),其中相应仿真通过所有通过/未通过条件的参数值可以被分组在第一集群中,其中相应仿真通过条件a、b和c但是未通过条件d的参数值可以被分组在第二集群中,其中相应仿真通过条件b、c和d但是未通过条件a的参数值可以被分组在第三集群中,依此类推。在其他实施例中,可以应用其他聚类标准。
95.方法1000还可包括:在框1012,基于集群选择另一组参数值。在一些实施例中,选择另一组参数值可以包括以下中的一个或多个:
96.·
如果所有测试参数值都在同一个集群中,则对离散化的参数值空间进行随机采样;
97.·
如果存在两个或更多集群(即,参数值空间内不同的通过/不通过结果),则在集群间的参数空间区域(例如,包括集群的边缘并与之重叠,或排除集群的边缘且不与集群的边缘重叠)中选择参数值。集群间的参数空间区域中的参数值可以根据以下一项或多项选择:
98.ο随机采样通过和未通过集群之间的参数空间区域。
99.ο使用梯度下降以沿着通过和未通过集群之间的参数空间的路径。
100.方法1000还可以包括:在框1014,针对另一组中的每个参数值执行多个相应的仿真测试。例如,可以根据方法900执行每个仿真测试。
101.方法1000还可以包括:在框1016,根据在框1014执行的附加仿真测试的结果更新在框1010中创建的集群。
102.该方法还可以包括:在框1018,重复框1012、1014、1016直到连续参数集之间的距离降到预定阈值以下或者直到已经执行了预定最大数量的仿真。在一些实施例中,计算参数集之间的距离可以包括根据每个集合中的相似参数之间的归一化距离的平方和来计算欧几里得距离。例如,如果一个参数集包含三个参数a、b和c,则两个参数集(由下标1和2指定)之间的总距离(d
t
)可以根据下面的等式(1)来定义:
103.d
t
=(d(ai,a2))2+(d(bi,b2))2+(d(ci,c2))2ꢀꢀꢀꢀꢀꢀ
(等式1)
104.对适用于特定参数(a、b或c)的等式(1)的距离测量(d)可以返回归一化距离。适用于特定参数的距离测量的特定形式可以取决于参数类型。
105.根据本公开的变量值参数化可以提供许多优点。首先,根据本公开的参数化可以确定参数的理想值,特别是如果参数化与sut的一个方面相关。第二,根据本公开的参数化使得能够确定sut起作用和不起作用的条件和环境,特别是在参数化与sut之外的某事物相关的情况下。例如,参数化仿真的各个输出可以具体地通知用户sut以尽可能多的特异性导致和不导致期望结果的条件(例如,使用户能够确定在传感器未按预期运行条件下的特定日光度数,或车辆控制策略无法正常运行的特定交通运动组合等)。
106.参考图1、2、9和10,在操作中,用户可以输入一组仿真测试的期望方面,如关于图2所描述的(并且更具体地,关于图3和图5)。例如,用户可以提供sut并且可以从设计器102提供的选项中选择仿真测试的剩余方面。例如,用户的sut可以是传感器(例如,具有其自己的特定和专有物理和硬件特性)和/或传感器控制固件,并且用户可以从提供的选项选择自主车辆的其他方面以及测试场景。在另一个示例中,用户的sut可以是自动驾驶车辆的控制逻辑,并且用户可以从提供的选项中选择用于测试的自主车辆和场景。用户的sut和系统提供的方面可能在各个容器中。因此,设计器102可以被配置为提供仿真测试的任何或所有方面供用户选择。用户可以进一步选择一个或多个参数值用于根据方法1000进行参数化。设计器102和导向器104可以联合执行方法200、900和1000以选择合适的参数值并针对这些参数值执行一系列仿真测试,其中每个仿真测试可包括其自己的用于每个用户sut的容器实例和其自己的仿真引擎容器实例。
107.图11是用户计算环境的示例实施例的示意图,该用户计算环境包括通用计算系统环境1100,例如台式计算机、膝上型计算机、智能电话、平板电脑或具有执行指令的能力的任何其他此类设备,例如存储在非暂时性计算机可读介质中的那些指令。此外,虽然在单个计算系统100的上下文中进行了描述和说明,但本领域技术人员还将理解,下文描述的各种任务可以在具有通过本地或广域网链接的多个计算系统200的分布式环境中实施,在该本地或广域网中可执行指令可与多个计算系统1100中的一个或多个相关联和/或由其执行。
108.在其最基本的配置中,计算系统环境1100通常包括至少一个处理单元1102和至少一个存储器1104,它们可以通过总线1106链接。根据计算系统环境的确切配置和类型,存储器1104可以是易失性(例如ram 1110)、非易失性(例如rom 1108、闪存等)或两者的某种组合。计算系统环境1100可以具有附加特征和/或功能。例如,计算系统环境1100还可以包括附加存储(可移动和/或不可移动),包括但不限于磁盘或光盘、磁带驱动器和/或闪存驱动器。可以通过例如硬盘驱动器接口1112、磁盘驱动器接口1114和/或光盘驱动器接口1116使计算系统环境1100可以访问此类附加存储设备。可以理解,这些将分别链接到系统总线1106的设备允许读取和写入硬盘1118、读取或写入可移动磁盘1120、和/或读取或写入可移动光盘1122,例如cd/dvd rom或其他光学介质。驱动器接口及其相关联的计算机可读介质允许计算机可读指令、数据结构、程序模块和用于计算系统环境1100的其他数据的非易失性存储。本领域技术人员将进一步理解其他类型的可以存储数据的计算机可读介质可以用于此相同目的。此类介质设备的示例包括但不限于磁带、闪存卡、数字视盘、伯努利盒式磁带、随机存取存储器、纳米驱动器、记忆棒、其他读/写和/或只读存储器和/或用于存储信息(例如计算机可读指令、数据结构、程序模块或其他数据)的任何其他方法或技术。任何这样的计算机存储介质可以是计算系统环境1100的一部分。
109.多个程序模块可以存储在一个或多个存储器/介质设备中。例如,基本输入/输出
系统(bios)1124,包含有助于在计算系统环境1100内的元件之间传输信息的基本例程,例如在启动期间,可以存储在rom 1108中。类似地,ram 1110、硬盘驱动器1118和/或外围存储器设备可用于存储计算机可执行指令,包括操作系统1126、一个或多个应用程序1128(例如设计器102、导向器104或分析器106或其他程序以执行本公开的功能、方法、操作等中的一个或多个)、其他程序模块1130和/或程序数据1122。此外,例如,可以根据需要通过网络连接将计算机可执行指令下载到计算环境1100。
110.终端用户(例如自动驾驶车辆控制系统或其他被测系统和/或其方面的所有者)可以通过诸如键盘1134和/或指示设备1136的输入设备将命令和信息输入到计算系统环境1100中。虽然未示出,但其他输入设备可以包括麦克风、操纵杆、游戏手柄、扫描仪等。这些和其他输入设备通常将通过外围接口连接到处理单元1102,然后耦合到总线1106。输入设备可以通过接口直接或间接连接到处理器1102,例如并行端口、游戏端口、火线或通用串行总线(usb)。为了查看来自计算系统环境1100的信息,监视器1140或其他类型的显示设备也可以经由接口连接到总线1106,例如经由视频适配器1132。除了监视器1140之外,计算系统环境1100可以还包括未显示的其他外围输出设备,例如扬声器和打印机。
111.计算系统环境1100还可以利用到一个或多个计算系统环境的逻辑连接。计算系统环境1100和远程计算系统环境之间的通信可以经由负责网络路由的进一步处理设备(例如网络路由器1152)来交换。与网络路由器1152的通信可以经由网络接口组件1154来执行。因此,在这样的联网环境中,例如因特网、万维网、lan或其他类似类型的有线或无线网络,将理解的是相对于计算系统环境1100描述的程序模块或其部分可以存储在计算系统环境1100的存储器存储设备中。
112.计算系统环境1100还可以包括用于确定计算系统环境1100的位置的定位硬件1186。在实施例中,定位硬件1156可以包括,仅作为示例,gps天线、rfid芯片或读取器、wifi天线、或可用于捕获或传输可用于确定计算系统环境1100的位置的信号的其他计算硬件。
113.计算环境1100或其部分可以包括图1的系统100的一个或多个组件,例如在实施例中,执行系统100的一个或多个功能模块的用户或云服务器系统的计算资源。
114.在本公开的第一方面,提供了一种用于执行自动驾驶车辆的电子仿真的方法。该方法包括:从用户接收被测系统,所述被测系统包括自动驾驶车辆的组件;从所述用户接收通过/未通过条件;从所述用户接收可变参数的指示;确定所述可变参数的多个值;针对所述多个值中的每个值创建相应的被测系统容器实例;针对所述多个值中的每个值创建相应的仿真引擎容器实例,每个仿真引擎容器实例链接到相应的被测系统容器;使用所述仿真容器实例,针对所述多个值中每个值执行相应的仿真;针对所述相应仿真中的每个仿真,确定该仿真是通过还是未通过该通过/未通过条件;以及向所述用户输出所述相应的仿真的结果。
115.在第一方面的一个实施例中,被测系统为传感器,并且每个仿真引擎容器实例包括自动驾驶车辆的车体、自动驾驶车辆的一个或多个性能特征以及场景,该场景包括道路。
116.在第一方面的实施例中,可变参数包括:传感器的延迟时间;传感器的环境误差;传感器的硬件误差;传感器的硬件设置;传感器的基于位置或基于布置的误差;或传感器的固件设置。
117.在第一方面的实施例中,确定可变参数的多个值包括:确定可变参数的值空间;以
及从值空间内随机选择多个值。
118.在第一方面的实施例中,多个值是第一多个值,仿真引擎容器实例是第一多个仿真引擎容器实例,并且所述仿真是第一多个仿真,该方法进一步包括:根据所述第一多个仿真中每个仿真是通过还是未通过所述通过/未通过条件,将所述第一多个值分组为两个或多个集群;根据所述集群选择第二多个值;创建包括针对所述第二多个值中每个值的相应仿真引擎容器实例的第二多个仿真引擎容器实例,所述第二多个容器实例中的每个容器实例链接到相应的被测系统容器;使用所述第二多个仿真容器实例执行第二多个仿真,所述第二多个仿真包括针对所述第二多个值中每个值的相应仿真;针对所述第二多个相应仿真中每个仿真,确定该仿真是通过还是未通过该通过/未通过条件;以及向所述用户输出所述第二多个相应仿真的结果。
119.在第一方面的实施例中,该方法还包括:指定自动驾驶车辆的车体;指定自动车辆的性能特征;指定自动驾驶车辆的传感器布置;以及针对自动驾驶车辆指定控制逻辑;其中每个被测系统容器实例和关联的仿真引擎容器实例共同包括车体、性能特征、传感器布置和控制逻辑。
120.在第一方面的一个实施例中,该方法还包括:指定道路;确定一个或多个环境条件;确定一个或多个交通车辆;其中每个仿真引擎容器实例包括道路、一个或多个环境条件以及一个或多个交通车辆。
121.在第一方面的实施例中,向用户输出相应仿真的结果包括输出以下中的一个或多个:在至少一个所述仿真中的所述自动驾驶车辆的4d可视化;在至少一个所述仿真中的传感器数据回放;一个或多个所述仿真的日志文件显示;在至少一个所述仿真中的被测系统中的代码跟踪;或者每个所述仿真通过或未通过该通过/未通过条件。
122.在本公开的第二方面,提供了一种用于执行自动驾驶车辆的电子仿真的系统。该系统包括:处理器;非易失性计算机可读存储器,该存储器上存储有指令,当被处理器执行时,该指令使处理器:从用户接收被测系统,被测系统包括自动驾驶车辆的组件;从用户接收通过/未通过条件;从用户接收可变参数的指示;确定可变参数的多个值;针对多个值中的每个值创建相应的被测系统容器实例;针对多个值中的每个值创建相应的仿真引擎容器实例,每个仿真引擎容器实例链接到相应的被测系统容器;使用仿真容器实例,针对多个值中每个值执行相应的仿真;针对相应仿真中的每个仿真,确定该仿真是通过还是未通过该通过/未通过条件;以及向所述用户输出相应仿真的结果。
123.在第二方面的一个实施例中,被测系统为传感器,每个仿真引擎容器实例包括自动驾驶车辆的车体、自动驾驶车辆的一个或多个性能特征和场景,该场景包括道路。
124.在第二方面的实施例中,可变参数包括:传感器的延迟时间;传感器的环境误差;传感器的硬件误差;传感器的硬件设置;传感器的基于位置或基于布置的误差;或传感器的固件设置。
125.在第二方面的实施例中,确定可变参数的多个值包括:确定可变参数的值空间;以及从值空间内随机选择多个值。
126.在第二方面的实施例中,多个值是第一多个值,所述仿真引擎容器实例是第一多个仿真引擎容器实例,并且仿真是第一多个仿真,并且存储器存储进一步的指令,当由处理器执行时,这些指令使处理器所述仿真是第一多个仿真,所述存储器存储另外的指令,当由
所述处理器执行时,另外的指令使得所述处理器:根据所述第一多个仿真中每个仿真是通过还是未通过所述通过/未通过条件,将所述第一多个值分组为两个或多个集群;根据所述集群选择第二多个值;创建包括针对所述第二多个值中每个值的相应仿真引擎容器实例的第二多个仿真引擎容器实例,所述第二多个容器实例中的每个容器实例链接到相应的被测系统容器;使用所述第二多个仿真容器实例执行第二多个仿真,所述第二多个仿真包括针对所述第二多个值中每个值的相应仿真;针对所述第二多个相应仿真中每个仿真,确定该仿真是通过还是未通过该通过/未通过条件;以及向所述用户输出所述第二多个相应仿真的结果。
127.在第二方面的实施例中,存储器存储另外的指令,当由处理器执行时,该另外的指令使得处理器:指定自动驾驶车辆的车体;指定自动车辆的性能特征;指定自动驾驶车辆的传感器布置;以及针对自动驾驶车辆指定控制逻辑;其中每个被测系统容器实例和关联的仿真引擎容器实例共同包括车体、性能特征、传感器布置和控制逻辑。
128.在第二方面的实施例中,存储器存储另外的指令,当由处理器执行时,该另外的指令使处理器:指定道路;确定一个或多个环境条件;确定一个或多个交通车辆;其中每个仿真引擎容器实例包括道路、一个或多个环境条件以及一个或多个交通车辆。
129.在第二方面的实施例中,向用户输出相应仿真的结果包括输出以下中的一个或多个:在至少一个所述仿真中的自动驾驶车辆的4d可视化;在至少一个所述仿真中的传感器数据回放;一个或多个仿真的日志文件显示;在至少一个仿真中的被测系统中的代码跟踪;或者每个仿真是通过或未通过该通过/未通过条件。
130.在第二方面的实施例中,被测系统远离处理器和存储器,并且从用户接收被测系统包括接收到被测系统的链接。
131.在本公开的第三方面,提供了一种用于执行自动驾驶车辆的电子仿真的方法。该方法包括:(i)从用户接收被测系统,所述被测系统包括自动驾驶车辆的组件;(ii)从所述用户接收可变参数的指示;(iii)确定所述可变参数的第一多个值;(iv)执行第一多个仿真,所述第一多个仿真包括针对所述第一多个值中每个值的相应仿真;(v)根据所述第一多个仿真的相应结果将所述第一多个值分成两个或多个集群;(vi)根据所述集群确定所述可变参数的另外的多个值;(vii)执行另外的多个仿真,所述另外的多个仿真包括针对所述另外的多个值中每个值的相应仿真;(viii)根据所述另外的多个仿真的相应结果将所述另外的多个值分组到集群中;以及(ix)向所述用户输出所述第一多个仿真和所述另外的多个仿真的结果。
132.在第三方面的实施例中,该方法还包括重复(vi)、(vii)和(viii)直到连续多个值之间的距离低于预定阈值或直到执行了预定数量的仿真。
133.在第三方面的实施例中,根据集群确定可变参数的另外多个值包括选择位于两个所述集群之间的所述可变参数的值。
134.虽然本公开已经描述了某些实施例,但是应当理解,除了权利要求中明确记载的之外,权利要求书不意在限于这些实施例。相反,本公开旨在涵盖可包括在本公开的精神和范围内的替代、修改和等同物。此外,在本公开的详细描述中,阐述了许多具体细节以提供对所公开实施例的透彻理解。然而,对于本领域的普通技术人员来说显而易见的是,可以在没有这些具体细节的情况下实践与本公开一致的系统和方法。在其他情况下,没有详细描
述众所周知的方法、过程、组件和电路,以免不必要地混淆本公开的各个方面。
135.已经根据计算机或数字系统存储器内的数据位上的操作的过程、逻辑块、处理和其他符号呈现了本公开的详细描述的一些部分。这些描述和表示是数据处理领域的技术人员用来最有效地向本领域的其他技术人员传达他们工作的实质的手段。过程、逻辑块、过程等在本文中并且通常被认为是导致期望结果的步骤或指令的自洽序列。这些步骤是需要对物理量进行物理操作的步骤。通常,尽管不一定,这些物理操作采用能够在计算机系统或类似电子计算设备中存储、传输、组合、比较和以其他方式操作的电或磁数据的形式。为方便起见,并参考常见用法,参考当前公开的各种实施例,此类数据被称为位、值、元素、符号、字符、术语、数字等。
136.然而,应当记住,这些术语将被解释为参考物理操作和数量,并且仅仅是应该考虑到本领域中常用的术语来进一步解释的便利标签。除非另外特别说明,从这里的讨论中显而易见,应当理解,贯穿本实施例的讨论,使用诸如“确定”、“输出”、“传输”、“记录”、“定位”、“存储”、“显示”、“接收”、“识别”、“利用”、“产生”、“提供”、“访问”、“检查”、“通知”或“传递”等之类的术语进行讨论指的是操作和转换数据的计算机系统或类似电子计算设备的动作和处理。数据在计算机系统的寄存器和存储器内被表示为物理(电子)量,并被转换为在计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备中类似地表示为物理量的其他数据,如本文所述或以其他方式为本领域普通技术人员所理解。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1