用于测试自主车辆软件的具有修改的因素的模拟的制作方法

文档序号:30758420发布日期:2022-07-13 20:53阅读:134来源:国知局
用于测试自主车辆软件的具有修改的因素的模拟的制作方法
用于测试自主车辆软件的具有修改的因素的模拟
1.相关申请的交叉引用
2.本技术是2019年11月27日提交的美国专利申请第16/697,428号的继续,其全部公开内容通过引用并入本文。


背景技术:

3.自主车辆,例如不要求人类驾驶员的车辆,可以用于帮助将乘客或物品从一个位置运输到另一个位置。这样的车辆可以以完全自主模式操作,其中乘客可以提供诸如接载或目的地位置的某一初始输入,并且车辆例如通过确定并遵循可能要求车辆对其他道路使用者(诸如车辆、行人、骑自行车者等)做出响应并与其他道路使用者进行交互的路线来操纵自身到该位置。至关重要的是,这些车辆用于以自主模式操作的自主控制软件在此类软件实际用于在车辆正与其他对象交互的区域中控制车辆之前被测试和验证。


技术实现要素:

4.本公开的一个方面提供了一种测试用于以自主驾驶模式操作车辆的软件的方法。该方法包括:由一个或多个处理器通过修改在日志数据中识别的因素的特性并通过使用由以自主驾驶模式操作的车辆收集的日志数据来运行模拟,其中,模拟使用软件来运行以控制模拟的车辆;在模拟的运行期间,由一个或多个处理器确定将发生第一模拟的车辆和修改的因素之间的第一类型的交互;响应于确定将发生模拟的车辆和修改的因素之间的第一特定类型的交互,由一个或多个处理器用模拟与修改的因素对应的道路使用者的交互式因素替换修改的因素,该交互式因素能够对由模拟的车辆执行的动作做出响应;以及由一个或多个处理器确定在模拟中已发生模拟的车辆和交互式因素之间的第二特定类型的交互。
5.在一个示例中,第一特定类型的交互是碰撞。在该示例中,第二特定类型的交互是碰撞,并且该方法还包括:响应于确定已发生模拟的车辆和交互式因素之间的碰撞,标记模拟以供进一步查看。可替代地,第二特定类型的交互是模拟的车辆急转弯或交互式因素急转弯中的一个,并且该方法还包括,响应于确定已发生模拟的车辆和模型因素之间的碰撞,标记模拟以供进一步查看。可替代地,第二特定类型的交互是模拟的车辆以特定速率减速或交互式因素以特定速率减速中的一个,并且该方法还包括,响应于确定已发生模拟的车辆和交互式因素之间的碰撞,标记模拟以供进一步查看。在另一个示例中,该方法还包括通过分析各种日志数据来识别日志数据,以识别自主车辆正展现第一类型的行为并且因素正展现第二类型的行为的情形。在该示例中,第一类型的行为是改变车道,并且第二类型的行为是经过自主车辆。可替代地,第一类型的行为是进行未受保护的转弯,并且第二类型的行为是在靠近来自迎面而来的车道的自主车辆时超过对因素的速度限制。在另一个示例中,特性包括因素的尺寸。在另一个示例中,特性包括因素的形状。在另一个示例中,因素是第一类型的道路使用者,并且修改因素使修改的因素对软件表现为不同于第一类型的道路使用者的第二类型的道路使用者。在该示例中,第一类型的道路使用者是汽车,并且第二类型的道路使用者是摩托车。可替代地,第一类型的道路使用者是汽车,并且第二类型的道路使
用者是具有特定特性的卡车。可替代地,第一类型的道路使用者是行人,并且第二类型的道路使用者是骑自行车者。可替代地,第一类型的道路使用者是行人,并且第二类型的道路使用者是动物。可替代地,第一类型的道路使用者是骑自行车者,并且第二类型的道路使用者是骑踏板车者。可替代地,第一类型的道路使用者是带有购物车的行人,并且第二类型的道路使用者是带有婴儿车的行人。
附图说明
6.图1是根据示例性实施例的示例车辆的功能图。
7.图2是根据本公开的各方面的地图信息的示例。
8.图3是根据本公开的各方面的车辆的示例外部视图。
9.图4是根据本公开的各方面的示例系统的示意图。
10.图5是根据本公开的各方面的图4的系统的功能图。
11.图6是根据本公开的各方面的日志数据的示例表示。
12.图7是根据本公开的各方面的模拟的另一示例表示。
13.图8是根据本公开的各方面的模拟和数据的另一示例表示。
14.图9是根据本公开的各方面的示例流程图。
具体实施方式
15.概述
16.本技术涉及使用用于自主操作的车辆的软件来评估基于日志的模拟中的交互。基于日志的模拟对应于使用由以自主模式操作的车辆在诸如1分钟或更多或更少的某短时间段内收集的日志数据运行的模拟。日志数据可能包括来自包括感知、路线、规划、定位等的车辆的各种系统的信息。同时,实际车辆被替换为可以使用用于自主控制车辆的软件做出决策的模拟的车辆。通过这样做,可以严格地测试软件。例如,模拟可以用于确定是否已经发生了特定类型的事件或与另一因素(agent)的交互,诸如特定类型的行为、碰撞或接近碰撞。作为示例,这些事件和交互可以用于各种目的,诸如确定软件是否可以在没有碰撞或接近碰撞的情况下“通过”给定的模拟,以及查明(pinpoint)可能受到关注的行为和/或软件模块的类型,以改进性能和安全性,而不要求车辆物理驾驶“现实的”里程(miles)或必须在现实世界中“制造”情形。
17.但是,在使用日志数据运行模拟时,可能存在有限数量的具有某些特性的情形。例如,可能需要在“异常”情况(针对其可能有很少示例)下测试软件。作为示例,在具有特定类型的道路使用者(诸如骑摩托车者)的情形下测试软件可能是困难的,因为在记录了日志数据的车辆附近可能有摩托车的很少示例。因此,软件可能能够导致车辆执行的某些行为(诸如改变车道或接近合并)可能没有充分测试以在摩托车附近自信地使用这些行为。结果,针对这样的情形验证车辆的软件的安全性和有效性可能是非常困难的。为了解决这些问题,在运行模拟时,更常见的道路使用者或因素可以被较不常见的道路使用者替换。
18.为了识别相关日志数据,可以分析日志数据以识别下述情形:自主车辆正展现一种或多种特定类型的行为,而另一因素正展现一种或多种特定类型的行为。使用识别的日志数据,可以运行模拟。在该模拟中,可以修改针对其识别了日志数据的、正在尝试特定类
型的行为的因素,以便提供修改的模拟。
19.在修改的模拟期间,系统可以确定是否将有用于替换修改的因素的触发。用于替换修改的因素的触发可以包括模拟的车辆和修改的因素之间的某一类型的交互。如果没有,则将运行模拟,而不需要用交互式因素替换修改的因素。如果有,则可以用具有某些响应能力的因素替换修改的因素。因此,交互式因素可能能够在修改的模拟中对自主车辆的行为做出响应。
20.可以分析修改的模拟以识别与其他因素的特定类型的交互,诸如模拟的车辆和交互式因素之间的碰撞或接近碰撞。如果没有碰撞或接近碰撞,则可以认为该软件已经“通过”修改的模拟,或者可以认为该软件针对该特定的修改的模拟进行了验证。如果识别出与因素的碰撞或接近碰撞,则可以对修改的模拟进行注释或标记以供另外的考虑等。可以分析模拟以查看除碰撞数据之外的测量(诸如舒适、滞留(stranding)、安全风险等),以评估软件。
21.本文描述的特征可以提供测试针对自主车辆的软件的安全、有效和现实的方式,以针对异常情形使用软件识别潜在的至关重要的漏洞(bug)。例如,可以基于实际传感器数据使用修改的因素在数十万个情形下测试软件。此外,那些被注释或标记的模拟对于确定如何修订或更新被测试的软件可能更为至关重要。此外,通过添加交互式因素,可以创建允许分析多个潜在安全问题的“新”模拟,而不要求针对这样的模拟的新的日志数据。其他好处可能包括软件开发者对行为改变进行实验并使用其显示其改变如何进展(play out)的许多现实示例的能力。这可以允许快得多的特征开发,因为替代方案将涉及开发者自己筛选大量伪失败、等待操作员进行同样的事情、或者以行为改变四周驾驶现实车辆来将现实的响应载入日志。
22.示例系统
23.如图1所示,根据本公开的一个方面的车辆100包括各种组件。虽然本公开的某些方面与特定类型的车辆结合特别有用,但是车辆可以是任何类型的车辆,包括但不限于汽车、卡车、摩托车、公共汽车、休闲车等。车辆可以具有一个或多个计算设备,诸如包含一个或多个处理器120、存储器130和典型地存在于通用计算设备中的其他组件的计算设备110。
24.存储器130存储可由一个或多个处理器120访问的信息,包括可以由处理器120执行或以其他方式使用的指令134和数据132。存储器130可以是能够存储可由处理器访问的信息的任何类型的存储器,包括计算设备可读介质,或存储可借助电子设备被读取的数据的其他介质,诸如硬盘驱动器、存储卡、rom、ram、dvd或其他光盘,以及其他可写和只读存储器。系统和方法可以包括前述的不同组合,由此指令和数据的不同部分被存储在不同类型的介质上。
25.指令134可以是由处理器直接(诸如机器代码)或间接(诸如脚本)执行的任何指令集合。例如,指令可以作为计算设备代码被存储在计算设备可读介质上。在这方面,术语“软件”、“指令”和“程序”在本文中可以互换使用。指令可以以用于由处理器直接处理的目标代码格式存储,或以任何其他计算设备语言(包括按需解释或预先编译的独立源代码模块的集合或脚本)存储。下面更详细地解释指令的功能、方法和例程。
26.处理器120可以根据指令134检索、存储或修改数据132。例如,虽然要求保护的主题不受任何特定数据结构限制,但是数据可以被存储在计算设备寄存器中、在关系数据库
中作为具有多个不同字段和记录的表、xml文档或平面文件。数据还可以以任何计算设备可读格式被格式化。
27.一个或多个处理器120可以是任何常规处理器,诸如商用cpu。可替代地,一个或多个处理器可以是专用设备,诸如asic或其他基于硬件的处理器。尽管图1在功能上示出了计算设备110的处理器、存储器和其他元件在同一块内,但是本领域普通技术人员将理解,处理器、计算设备或存储器实际上可以包括可存放或可不存放在同一物理外壳内的多个处理器、计算设备或存储器。例如,存储器可以是位于与计算设备110的外壳不同的外壳中的硬盘驱动器或其他存储介质。因此,对处理器或计算设备的引用将被理解为包括对可以并行操作或可以不并行操作的处理器或计算设备或存储器的集合的引用。
28.计算设备110可以包括通常与计算设备结合使用的所有组件,诸如上述处理器和存储器,以及用户输入150(例如,鼠标、键盘、触摸屏和/或麦克风)和各种电子显示器(例如,具有屏幕的监视器或可操作以显示信息的任何其他电学设备)。在该示例中,车辆包括内部电子显示器152以及一个或多个扬声器154以提供信息或视听体验。在这方面,内部电子显示器152可以位于车辆100的舱室内,并且可以由计算设备110使用以向车辆100内的乘客提供信息。
29.计算设备110还可以包括一个或多个无线网络连接156以促进与其他计算设备(诸如,下面详细描述的客户端计算设备和服务器计算设备)通信。无线网络连接可以包括短距离通信协议,诸如蓝牙、蓝牙低功耗(le)、蜂窝连接,以及各种配置和协议,包括互联网、万维网、内联网、虚拟专用网、广域网、本地网络、使用一个或多个公司专属的通信协议的专用网络、以太网、wifi和http,以及前述各项的各种组合。
30.在一个示例中,计算设备110可以是自主驾驶计算系统的或结合到车辆100中的控制计算设备。自主驾驶计算系统可能能够与车辆的各种组件通信,以便如下文进一步讨论的那样根据存储器130的自主控制软件控制车辆100的移动。例如,返回图1,计算设备110可以与车辆100的各种系统通信以便根据存储器130的指令134控制车辆100的移动、速度等,各种系统诸如减速系统160、加速系统162、转向系统164、信号系统166、路由系统168、定位系统170、感知系统172和动力系统174(即车辆的引擎或马达)。同样,虽然这些系统被示为在计算设备110的外部,但实际上,这些系统也可以被结合到计算设备110中,同样作为用于控制车辆100的自主驾驶计算系统。
31.作为示例,计算设备110可以与减速系统160和/或加速系统162的一个或多个致动器(诸如车辆的制动器、加速踏板和/或引擎或马达)交互,以便控制车辆的速度。类似地,计算设备110可以使用转向系统164的一个或多个致动器(诸如方向盘、转向轴和/或齿条和小齿轮(rack and pinion)系统中的小齿轮和齿条)以便控制车辆100的方向。例如,如果车辆100被配置为在道路上使用,诸如汽车或卡车,则转向系统可以包括一个或多个致动器以控制车轮的角度以使车辆转弯。计算设备110可以使用信号系统166以便向其他驾驶员或车辆用信号通知(例如,通过在需要时点亮转弯信号或刹车灯)车辆的意图。
32.计算设备110可以使用路由系统168以便确定并遵循到位置的路线。在这方面,路由系统168和/或数据132可以存储详细的地图信息,例如,识别道路、车道线、交叉路口、人行横道、速度限制、交通信号、建筑物、标志、实时交通信息、植被的形状和高度或其他这样的对象和信息的高度详细的地图。
33.图2是用于包括交叉路口202、204的道路段(section of roadway)的地图信息200的示例。在该示例中,地图信息200包括识别车道线210、212、214、交通信号灯220、222、人行横道230、人行道240、停止标志250、252、让行标志260的形状、位置和其他特性的信息。尽管地图信息在本文被描绘为基于图像的地图,但是地图信息不需要完全基于图像(例如,栅格(raster))。例如,地图信息可以包括诸如道路、车道、交叉路口以及这些特征之间的连接的信息的一个或多个道路图或图形网络。每个特征可以被存储为图形数据,并且可以与诸如地理位置以及其是否链接到其他相关特征(例如,停止标志可以被链接到道路和交叉路口等)的信息相关联。在一些示例中,相关联的数据可以包括道路图的基于网格的索引,以允许高效查找某些道路图特征。
34.计算设备110可以使用定位系统170以确定车辆在地图上或地球上的相对或绝对位置。例如,定位系统170可以包括gps接收器以确定设备的纬度、经度和/或海拔位置。其他定位系统,诸如基于激光的定位系统、惯性辅助gps或基于相机的定位,也可用于识别车辆的位置。车辆的位置可以包括绝对地理位置,诸如纬度、经度和海拔,以及相对位置信息,诸如相对于紧接在其周围的其他汽车的位置,其通常可以用比绝对地理位置更少的噪声来确定。
35.定位系统170还可以包括与计算设备110通信的其他设备(诸如加速度计、陀螺仪或另一方向/速度检测设备)以确定车辆的方向和速度或其改变。仅作为示例,加速设备可以确定其相对于重力方向或相对于与重力方向垂直的平面的俯仰、偏航或滚转(或其改变)。该设备还可以追踪速度的增加或减少以及这样的改变的方向。如本文中阐述的设备对位置和朝向数据的提供可以被自动地提供给计算设备110、其他计算设备和前述的组合。
36.感知系统172还包括一个或多个组件以用于检测车辆外部的对象,诸如其他车辆、道路中的障碍物、交通信号、标志、树木等。例如,感知系统172可以包括激光器、声纳、雷达、相机和/或记录可以由计算设备110处理的数据的任何其他检测设备。在车辆是诸如小型货车的乘用车辆的情况下,小型货车可以包括安装在车顶(roof)或其他方便的位置的激光器或其他传感器。例如,图3是车辆100的示例外部视图。在该示例中,顶部(roof-top)外壳310和圆顶外壳312可以包括lidar(激光检测和测距)传感器以及各种相机和雷达单元。此外,位于车辆100前端的外壳320和车辆的驾驶员侧和乘客侧的外壳330、332可以各自存放lidar传感器。例如,外壳330位于驾驶员车门350的前面。车辆100还包括用于也位于车辆100的车顶上的雷达单元和/或相机的外壳340、342。附加的雷达单元和相机(未示出)可以位于车辆100的前端和后端和/或在沿着车顶或顶部外壳310的其他定位上。
37.计算设备110可以通过控制各种组件来控制车辆的方向和速度。作为示例,计算设备110可以使用来自详细地图信息和路由系统168的数据完全自主地将车辆导航到目的地位置。计算设备110可以使用定位系统170来确定车辆的位置,并且使用感知系统172来检测对象并且在需要时对对象做出响应,以安全到达该位置。为了这样做,计算设备110可以使车辆加速(例如,通过增加由加速系统162提供给引擎的燃料或其他能量)、减速(例如,通过减少供应给引擎的燃料、换档和/或通过由减速系统160施加制动)、改变方向(例如,通过由转向系统164转动车辆100的前轮或后轮),并且用信号通知这样的改变(例如,通过点亮信号系统166的转弯信号)。因此,加速系统162和减速系统160可以是包括在车辆的引擎和车辆的车轮之间的各种组件的传动系统的一部分。同样,通过控制这些系统,计算设备110还
可以控制车辆的传动系统以便自主地操纵车辆。
38.车辆100的计算设备110还可以从其他计算设备(诸如作为运输服务的部分的那些计算设备以及其他计算设备)接收信息或向其他计算设备传送信息。图4和图5分别是示例系统400的示意图和功能图,示例系统400包括经由网络460连接的多个计算设备410、420、430、440和存储系统450。系统400还包括车辆100和可被配置为与车辆100相同或相似的车辆100a、100b。尽管为了简单起见,仅描绘了几个车辆和计算设备,但是典型的系统可以包括显著更多的车辆和计算设备。
39.如图4所示,计算设备410、420、430、440中的每一个可以包括一个或多个处理器、存储器、数据和指令。这样的处理器、存储器、数据和指令可以与计算设备110的一个或多个处理器120、存储器130、数据132和指令134类似地配置。
40.网络460和中间节点可以包括各种配置和协议,包括短距离通信协议,诸如蓝牙、蓝牙le、互联网、万维网、内联网、虚拟专用网、广域网、本地网络、使用一个或多个公司专属的通信协议的专用网络、以太网、wifi和http以及前述的各种组合。这样的通信可以由能够向其他计算设备传输数据和从其他计算设备接收数据的任何设备(诸如调制解调器和无线接口)来促进。
41.在一个示例中,一个或多个计算设备410可以包括具有多个计算设备的一个或多个服务器计算设备(例如负载平衡服务器群),其与网络的不同节点交换信息,目的是从其他计算设备接收数据、处理数据和向其他计算设备传输数据。例如,一个或多个计算设备410可以包括能够经由网络460与车辆100的计算设备110或车辆100a的类似计算设备以及计算设备420、430、440通信的一个或多个服务器计算设备。例如,车辆100、100a可以是可以由服务器计算设备派遣到各种位置的车队的一部分。在这方面,服务器计算设备410可以用作验证计算系统,该验证计算系统可以用于验证诸如车辆100和车辆100a的车辆可以用于以自主驾驶模式操作的自主控制软件。此外,服务器计算设备410可以使用网络460向用户(诸如用户422、432、442)传输信息,并且在显示器(诸如计算设备420、430、440的显示器424、434、444)上向用户(诸如用户422、432、442)呈现信息。在这方面,计算设备420、430、440可以被认为是客户端计算设备。
42.如图4所示,每个客户端计算设备420、430、440可以是旨在由用户422、432、442使用的个人计算设备,并且具有通常与个人计算设备结合使用的组件中的所有,包括一个或多个处理器(例如,中央处理单元(cpu))、存储数据和指令的存储器(例如,ram和内部硬盘驱动器)、诸如显示器424、434、444的显示器(例如,具有屏幕的监视器、触摸屏、投影仪、电视机或可操作以显示信息的其他设备)、和用户输入设备426、436、446(例如,鼠标、键盘、触摸屏或麦克风)。客户端计算设备还可以包括用于记录视频流的相机、扬声器、网络接口设备以及用于将这些元件彼此连接的组件中的所有。
43.尽管客户端计算设备420、430和440中的每个可以包括全尺寸的个人计算设备,但是它们可以可替代地包括能够通过诸如互联网的网络与服务器无线交换数据的移动计算设备。仅作为示例,客户端计算设备420可以是移动电话、或能够经由互联网或其他网络获得信息的设备,诸如支持无线的pda、平板pc、可穿戴计算设备或系统、或者上网本。在另一个示例中,客户端计算设备430可以是可穿戴计算系统,如图4所示的腕表。作为示例,用户可以使用小型键盘、键区、麦克风、利用相机使用视觉信号、或触摸屏来输入信息。
44.在一些示例中,客户端计算设备440可以是由管理员或操作员使用以查看如下进一步讨论的场景输出、切换时间和验证信息的操作工作站。尽管在图4和图5中仅示出了单个的操作工作站440,但是在典型系统中可以包括任意数量的这样的工作站。此外,虽然操作工作站被描绘为台式计算机,但操作工作站可以包括各种类型的个人计算设备,诸如膝上型计算机、上网本、平板计算机等。
45.与存储器130一样,存储系统450可以是能够存储可由服务器计算设备410访问的信息的任何类型的计算机化存储,诸如硬盘驱动器、存储卡、rom、ram、dvd、cd-rom、可写和只读存储器。此外,存储系统450可以包括分布式存储系统,其中数据被存储在物理上可位于相同或不同地理位置处的多个不同的存储设备上。如图4和图5所示,存储系统450可以经由网络460连接到计算设备,和/或可以直接连接到或结合到计算设备110、410、420、430、440等中的任何一个。
46.存储系统450可以存储如下更详细描述的各种类型的信息。服务器计算设备(诸如一个或多个服务器计算设备410)可以检索或以其他方式访问该信息,以便执行本文描述的特征中的一些或全部。例如,存储系统450可以存储日志数据。该日志数据可以包括例如由感知系统(诸如车辆100的感知系统172)生成的传感器数据。作为示例,传感器数据可以包括原始传感器数据以及识别定义感知的对象的特性(诸如车辆、行人、骑自行车者、植被、路缘、车道线、人行道、人行横道、建筑物等的对象的诸如形状、位置、朝向、速度等)的数据。日志数据还可以包括识别不同类型事件(诸如与其他对象的碰撞或接近碰撞)的“事件”数据,描述车辆100、100a的潜在路径的规划的几何形状和/或速度的规划的轨迹,车辆在不同时间的实际位置,车辆在不同时间的实际朝向/走向,车辆在不同时间的实际速度、加速度和减速度,感知的对象的分类和对感知的对象的响应,感知的对象的行为预测,车辆的各种系统(诸如加速度、减速度、感知、转向、信号、路由、动力等)在不同时间的状态(包括载入日志的错误)、车辆的各种系统在不同时间的输入和输出等。因此,这些事件和传感器数据可以用于“重新创建(recreate)”车辆的环境,包括感知的对象,以及车辆在模拟中的行为。在某些情况下,日志数据可以用识别自主车辆的行为(诸如经过、改变车道、合并等)的信息以及用在日志数据中识别其他因素的行为(诸如经过或超车(overtake)自主车辆、改变车道、合并等)的信息进行注释。
47.存储系统还可以存储交互式因素或可用于生成模拟的道路使用者的数据和指令,以便在模拟中与虚拟车辆进行交互。因为存在不同类型的道路使用者,所以可能有不同类型的交互式因素。例如,可能有用于车辆(或特定类型的车辆,诸如自主车辆、公共汽车、厢式货车、小型汽车、卡车、摩托车、紧急车辆(例如警车、救护车等)以及其他较大的车辆)、以及非车辆(诸如行人、行人人群、带有婴儿车的行人、儿童、踏板车、野生动物和宠物等)的交互式因素。由于人类通常是不可预测的,因此可以通过建立特性集来生成模型。这些可能与反应时间相关,该反应时间例如用于如人类驾驶员、行人、骑自行车者那样通过移动脚或手来改变车辆的制动、加速和/或转向行为来对视觉或可听刺激做出反应。换言之,该模型可以包括从现有的人类反应研究中可获得的针对理想、平均或低于平均的人类将如何制动或急转弯(swerve)的模型。在这方面,模型可能是近似的和手动调整的,并且可能以比典型的人类驾驶员更可预测的方式做出响应。在一些实例中,模型还可能具有行为规则,诸如典型驾驶员在4向停车(4-way stop)处将如何表现或对环境中的儿童的将如何做出响应等。
48.此外,存储系统450还可以存储自主控制软件,该自主控制软件将由诸如车辆100的车辆使用以便以自主驾驶模式操作车辆。存储在存储系统450中的该自主控制软件可以是尚未被测试或验证的版本。一旦被验证,自主控制软件可以例如被发送给车辆100的存储器130,以便由计算设备110用来以自主驾驶模式控制车辆100。
49.示例方法
50.除了上述和图中所示的操作之外,现在将描述各种操作。应当理解,以下操作不必以下面描述的精确顺序执行。反而,可以以不同的顺序或同时处理各个步骤,并且还可以添加或省略步骤。
51.为了测试和/或验证将被存储在存储器130中以供车辆100的计算设备110使用的自主控制软件,服务器计算设备410可以运行各种模拟。这些模拟可以是从存储在存储系统450的上述日志数据中的信息生成的基于日志的模拟。在这方面,服务器计算设备410可以访问存储系统450以便检索日志数据并运行模拟。例如,可以从存储系统中检索对应于生成了日志数据的自主车辆的实时一分钟的日志数据的一部分。这部分日志数据可以由人类操作员和/或计算设备基于日志中记录的事件的类型或更随机地(例如,通过选择所有自主驾驶日志的1%或更多或更少)“手动”选择。
52.如上所述,当使用日志数据运行模拟时,可能存在有限数量的具有某些特性的情形。例如,可能有在“异常(outlier)”情况(对于“异常(outlier)”情况,可能存在非常少的示例)下测试软件的需要。作为示例,在具有特定类型的道路使用者(诸如骑摩托车者)的情形下测试软件可能是困难的,因为在记录了日志数据的车辆附近可能有摩托车的非常少的示例。因此,软件可能能够导致车辆执行的某些行为(诸如改变车道或附近合并)可能没有充分测试以在摩托车附近自信地使用这些行为。结果,针对这样的情形验证车辆的软件的安全性和有效性可能是非常困难的。为了解决这些问题,在运行模拟时,更常见的道路使用者或因素可以用较不常见的道路使用者替换。这样的较不常见的道路使用者的示例可以包括例如自主车辆、骑摩托车者、骑自行车者、紧急车辆、卡车或其他更大型的车辆。较不常见的道路使用者的其他非车辆示例可以包括例如行人、行人人群、带有婴儿车的行人、儿童、踏板车、野生动物和宠物等。
53.为了识别相关日志数据,可以分析存储系统450的日志数据以识别下述情形:其中自主车辆正展现一种或多种特定类型的行为以及另一因素正展现一种或多种特定类型的行为。例如,如上所述,日志数据可以用识别自主车辆的行为(诸如经过、改变车道、合并等)的信息以及用在日志数据中识别其他因素的行为(诸如经过或超车自主车辆、改变车道、合并等)的信息进行注释。作为示例,使用该识别信息,可以识别针对自主车辆想要进行车道改变并且另一个对象(与自主车辆在相同或不同车道上)想要经过自主车辆的情形的日志数据,或者对象切入到自主车辆前方、侧方或后方的车道、未受保护的转弯(左转弯、右转弯、u形掉头等)等的其他情形。针对其他类型的对象(诸如在人行横道中的、可能转弯进入人行横道中和之外的人群的行人)的其他情形也可能有用。
54.作为一个示例,可以识别因素未在交叉路口处的停止标志处停止并且自主车辆正在进行左转弯的日志数据。转向图6,提供了对应于地图信息200的道路段的日志数据600的示例。在该示例中,交叉路口602和604分别对应于交叉路口202和204。在这方面,车道线210、612、614,交通信号灯616、616、人行横道630、人行道640、停止标志650、652和让行标志
660的形状、位置和其他特性对应于车道线210、212、214、交通信号灯220、222、人行横道230、人行道240、停止标志250、252和让行标志260的形状、位置和其他特性。在日志数据600中,车辆100正在靠近交叉路口604,例如,以便进行左转弯。从来自用于模拟的日志数据的事件数据和/或传感器数据生成的因素车辆620、622、624、626也正在靠近或穿过交叉路口604。在该示例中,日志数据可以指示车辆620(描绘为汽车)不在停止标志650处停止,因此,可以识别该日志数据。当然,取决于人类操作员感兴趣使用什么类型的情形来用于测试的目的,可以识别任何数量的其他类型的模拟。作为另一个示例,自主车辆正在进行未受保护的转弯(例如,未受保护的左转弯)并且因素在靠近来自迎面而来的车道(例如对向交通)的自主车辆时正在超速(即超过第二车辆正在行驶的车道的公布的速度限制)的日志数据。
55.图9包括用于测试用于以自主驾驶模式控制车辆的软件的一些示例的示例流程图900,其可以由诸如计算设备410的处理器的一个或多个处理器执行。例如,在框910,通过修改在日志数据中识别的因素的特性并通过使用由以自主驾驶模式操作的车辆收集的日志数据来运行模拟。在该示例中,模拟使用软件来运行以控制模拟的车辆。例如,使用识别的日志数据,可以运行模拟。检索的日志数据的部分可以用于运行初始模拟。当通过日志数据的部分运行自主控制软件时,日志数据的细节(传感器数据和事件)可以用于生成模拟。换言之,日志数据的部分的传感器数据可以简单地被“播放”作为到由自主控制软件控制的模拟的车辆的感知系统172的输入。在这方面,自主控制软件就像自主控制软件正实际在车辆100上运行一样“体验”或处理日志数据。换句话说,模拟可以包括定义对象的特性(由日志数据的传感器数据定义的诸如车辆、行人、骑自行车者、植被、路缘、车道线、人行道、人行横道、建筑物等的对象的诸如形状、位置、朝向、速度等)的数据。此外,模拟可以包括对应于车辆100的虚拟车辆的特性,包括由日志数据的事件定义的虚拟车辆的形状、位置、朝向、速度等。
56.然而,在该模拟中,可以修改针对其识别了日志数据的、正在尝试特定类型的行为的因素,以便提供修改的模拟。例如,可以调整因素的特性(诸如因素的大小(例如,尺寸)和形状),以使因素对于模拟的车辆(或者更确切地说,对于模拟中正在使用的软件)表现为更像是特定类型的因素。换句话说,软件将像修改的因素是不同类型的因素一样地“感知”修改的因素。这可以涉及生成修改的因素的传感器数据并将该传感器数据提供给软件。例如,可以将一车辆修改为看起来更像另一车辆,诸如特定类型的自主车辆、公共汽车、厢式货车、小型汽车、卡车、摩托车、紧急车辆(例如警车、救护车等)或其他更大型的车辆,以及非车辆,诸如行人、行人人群、带有婴儿车的行人、儿童、踏板车、野生动物和宠物等。在又一些示例中,诸如汽车的车辆可以被修改以表现为具有特定大小和/或形状特性的卡车(例如自卸卡车、垃圾车、牵引车-拖车等),行人可以被修改以表现为骑自行车者,骑自行车者可以被修改以表现为骑踏板车者、带有购物车的行人可以被修改以表现为带有婴儿车的行人等。
57.图7提供了使用示例600的修改版本的日志数据运行的模拟700的示例。在该示例中,模拟的车辆770可以对应于车辆100或车辆100a并且可以使用存储系统450的软件来确定模拟的车辆将在模拟中如何表现。此外,车辆620被修改的因素620’替换。在该示例中,车辆620的大小和形状被修改,以使修改的因素620’表现为展现车辆620的行为的骑摩托车者。当然,如上所述,修改的因素可以对应于任何数量的不同类型的道路使用者,诸如自主
车辆、公共汽车、厢式货车、小型汽车、卡车、摩托车、紧急车辆(例如警车、救护车等)和其他更大型的车辆,以及非车辆,诸如行人、行人人群、带有婴儿车的行人、儿童、踏板车、野生动物和宠物等。
58.在修改的模拟期间,服务器计算设备410可以确定是否将有用于以存储系统450的交互式因素替换修改的因素的触发。用于替换修改的因素的触发可以包括模拟的车辆和修改的因素之间的某一类型的交互。返回图9,在框920,在模拟的运行期间,确定在第一模拟的车辆和修改的因素之间将发生第一类型的交互。此后,在框930,响应于确定将发生模拟的车辆和修改的因素之间的第一类型的交互,用模拟与修改的因素对应的道路使用者的交互式因素替换修改的因素,该交互式因素能够对由模拟的车辆执行的动作做出响应。
59.例如,第一类型的交互可以包括碰撞或接近碰撞。换言之,如果在自主车辆(或者更确切地说,模拟的车辆)和修改的因素之间将有碰撞(或接近碰撞),则这可能是用存储系统450的交互式因素替换修改的因素的触发。这可以通过查看模拟的车辆770的位置和朝向以及修改的因素620’的位置和朝向并推断这些对象是否将在模拟期间在某个点处彼此相交来完成。例如,这可能包括计算修改的因素的给定轨迹和由软件为车辆生成的轨迹是否将彼此相交(或在小距离内,即接近)。如果不是,则将运行模拟,而无需用交互式因素替换修改的因素。
60.同样,如果在模拟中将有碰撞或接近碰撞,则修改的因素可以被服务器计算设备410替换为具有一些响应能力的因素(例如交互式因素)。因此,交互式因素可能能够在模拟中对模拟的车辆(例如车辆770)的行为进行响应。图8表示模拟700的轨迹的比较。在该示例中,修改的因素的轨迹820在点810处与由软件为车辆生成的轨迹870相交。因此,服务器计算设备410可以用交互式因素620”自动替换修改的因素620’,并继续模拟。在这方面,替换发生在模拟期间。此外,交互式因素将具有修改的因素的物理和其他特性,但交互式因素620”现在可能能够在模拟中对模拟的车辆770的行为进行响应。
61.在一些实例中,交互式因素可以由服务器计算设备410给予某些特性,诸如增加或减少的侵占性(aggressiveness)。作为示例,侵占性较大的交互式因素可能比侵占性较小的交互式因素更可能变得与自主车辆更近或在更短的时间段内改变车道。在这方面,许多不同的模拟可以以交互式因素的不同水平的侵占性运行。结果,可以从单个模拟的日志数据创建多个不同类型的模拟。此外,由于交互式因素已经是调整的因素,因此将可能生成原本在载入日志的数据中很少见的情形,以用于测试软件。
62.在一些实例中,当运行模拟或修改的模拟时,日志数据中的所有的因素可以由服务器计算设备410替换为交互式因素。例如,参考模拟700,除了修改的因素620’之外,所有因素车辆622、624和626都可以被来自存储系统450的交互式因素替换。然而,在这样的情况下,因为交互式因素可以被模拟的车辆完美地感知(即具有锐利、清晰的边缘和边界),与软件的感知系统(即对应于感知系统172的软件)的某些问题可能会被遗漏。此外,使用更多来自日志数据的数据可能比使用更少来自日志数据的数据具有更高的现实性的保真度。换句话说,取决于交互式因素,具有侵占性的驾驶员可能变得更有礼貌,或反之亦然。因此,为了使模拟尽可能现实,可以使用其他方法。
63.服务器计算设备410可以分析模拟的结果以识别是否已经发生了特定类型的交互。在这方面,服务器计算设备可能能够确定软件是否能够在模拟的车辆和交互式因素之
间没有发生特定类型的交互的情况下完成模拟。转向图9的框940,确定在模拟期间模拟的车辆和交互式因素之间是否已经发生了第二类型的交互。例如,特定类型的动作可以包括模拟的车辆和交互式因素之间的碰撞或接近碰撞,以及特定类型的操纵(例如,使交互式因素急转弯或硬制动的由模拟的车辆进行的急转弯、硬制动或特定速率的减速、风险行为,使模拟的车辆急转弯或硬制动等的由交互式因素进行的风险行为)。如果没有碰撞或接近碰撞,则可以认为软件已经“通过”修改的模拟,或者可以认为该软件针对该特定的修改的模拟进行了验证。如果识别出与因素的碰撞或接近碰撞,这可能指示软件在尚未发生碰撞或接近碰撞的情况下将不完成修改的模拟。因此,可以对修改的模拟进行注释或标记以供另外的考虑等。除了碰撞或接近碰撞和其他交互之外或作为碰撞或接近碰撞和其他交互的替代,可以分析模拟以查看其他测量(诸如舒适、滞留(stranding)、安全风险等),以评估软件。
64.尽管此处的示例涉及修改和替换仅一个道路使用者,但此处描述的特征可适用于同一模拟内的多个道路使用者。例如,可以分析存储系统450的日志数据以识别下述情形:其中自主车辆正展现一种或多种特定类型的行为,而两个或更多其他因素正展现一种或多种特定类型的行为。作为示例,可以分析日志数据以识别下述情形:其中,自主车辆正在进行未受保护的左转弯,靠近来自迎面而来的车道的自主车辆的第二车辆正在超速(即超过第二车辆正在行驶的车道的公布的速度限制)并且第三车辆(例如,卡车)正在阻挡自主车辆对第二车辆的视野。然后可以修改第二和第三车辆中的一个或两者。例如,可以将第二车辆修改成表现为摩托车,并且将第三车辆修改成表现为甚至更大型的卡车,从而使模拟更加复杂。对于具有与该车辆的轨迹相交的轨迹的那些修改的第二和/或第三车辆中的任何一个,那些第二和/或第三车辆可以被替换为如上所述的交互式因素。作为另一个示例,可以分析日志数据以识别自主车辆正在靠近多个乱穿马路的行人的情形。在运行模拟时,可以将乱穿马路的行人修改成表现为其他道路使用者,诸如骑自行车者、骑踏板车者、动物或能够乱穿马路的其他类型的道路使用者。对于具有与车辆的轨迹相交的轨迹的那些修改的其他道路使用者中的任何一个,那些其他道路使用者可以被替换为如上所述的交互式因素。
65.尽管本文中的示例依赖于基于由现实车辆收集的日志数据的模拟,但可以从来自先前模拟、或者来自甚至可能实际上不包括这样的现实生活驾驶数据的模拟的日志数据生成模拟。
66.本文描述的特征可以提供测试针对自主车辆的软件的安全、有效和现实的方式,以针对异常情形使用软件识别潜在的至关重要的漏洞。例如,可以基于实际传感器数据使用修改的因素在数十万个情形下测试软件。此外,那些被注释或标记的模拟对于确定如何修订或更新被测试的软件可能更为至关重要。此外,通过添加交互式因素,可以创建允许分析多个潜在安全问题的“新”模拟,而不要求针对这样的模拟的新的日志数据。其他好处可能包括软件开发者对行为改变进行实验并使用其显示其改变如何进展的许多现实示例的能力。这可以允许快得多的特征开发,因为替代方案将涉及开发者自己筛选大量伪失败、等待操作员进行同样的事情、或者以行为改变四周驾驶现实车辆来将现实的响应载入日志。
67.除非另有说明,否则前述替代示例并不相互排斥,而是可以以各种组合来实现,以实现独特的优点。由于在不脱离由权利要求所限定的主题的情况下,可以利用上述特征的
这些和其他变化和组合,所以对实施例的前述描述应该通过说明的方式进行,而不是通过限制由权利要求所限定的主题进行。此外,对本文描述的示例的提供,以及措辞为“诸如”、“包括”等的分句不应该被解释为将权利要求的主题限制到具体示例;反而,这些示例旨在仅说明多种可能实施例中的一个。此外,不同附图中的相同附图标记可以识别相同或相似的元素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1