首页> 中国专利> 使用偏差进行基于日志的模拟

使用偏差进行基于日志的模拟

摘要

本公开涉及测试用于操作自动车辆的软件。例如,可以使用日志数据和软件运行第一模拟,以控制第一模拟车辆670。在此期间,可以将模拟车辆的一个或多个特性与来自日志数据的车辆的一个或多个特性进行比较。该比较可以用于确定启动定时器的偏差点。此外,可以使用日志数据和软件运行第二模拟以控制第二模拟车辆。偏差点可以用于确定切换时间,以允许软件控制第二模拟车辆。确定软件是否能够在定时器到期之前在没有特定类型的事件发生的情况下继续第一模拟和/或在没有特定类型的事件发生的情况下继续第二模拟。

著录项

  • 公开/公告号CN112740188A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 伟摩有限责任公司;

    申请/专利号CN201980062436.4

  • 发明设计人 C.奈加德;Y.徐;J.斯托特;

    申请日2019-07-29

  • 分类号G06F11/36(20060101);

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人金玉洁

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:46:31

说明书

相关申请的交叉引用

本申请要求2018年8月7日提交的申请序列号16/056,865的权益,其公开内容通过引用结合于此。

背景技术

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

发明内容

本公开的一个方面提供了一种测试用于在自动驾驶模式下操作车辆的软件的方法。该方法包括:使用由在自动驾驶模式下操作的车辆收集的日志数据运行第一模拟,其中使用软件运行模拟以控制第一模拟车辆;将模拟车辆的一个或多个特性与来自日志数据的车辆的一个或多个特性进行比较,以确定偏差(divergence)点;使用该偏差点来确定第二模拟的切换时间(handover time),该切换时间与第二模拟中允许软件控制第二模拟的第二模拟车辆的时间相对应;使用日志数据运行第二模拟,其中使用切换时间和软件运行第二模拟以控制第二模拟车辆;以及确定软件是否能够在没有特定类型的事件发生的情况下完成第二模拟。

在一个示例中,特定类型的事件是碰撞,并且该方法还包括,当确定碰撞已经发生时,标记第二模拟以供进一步检查(review)。在另一个示例中,确定偏差点包括将第一模拟车辆的规划轨迹与来自日志数据的车辆的规划轨迹进行比较。在该示例中,确定偏差点包括确定第一模拟车辆的规划轨迹和来自日志数据的车辆的规划轨迹中的位置、速度或速度改变中的一个或多个在某个时间段内何时偏差(diverge)超过某个阈值量。在另一个示例中,确定偏差点包括确定第一模拟车辆的位置和来自日志数据的车辆的位置何时偏差超过阈值量。在另一个示例中,确定偏差点包括确定第一模拟车辆的位置和来自日志数据的车辆的位置在相对于第一模拟中模拟车辆行驶的车道中的交通方向的横向方向上何时偏差超过阈值量。在另一个示例中,确定偏差点包括确定第一模拟车辆的位置和来自日志数据的车辆的位置在相对于第一模拟中模拟车辆行驶的车道中的交通方向的纵向方向上何时偏差超过阈值量。在该示例中,确定偏差点包括确定第一模拟车辆的位置和来自日志数据的车辆的位置在相对于车道中的交通方向的横向方向上何时偏差超过阈值量。在另一个示例中,该方法还包括在第一模拟中的偏差点处,启动在第一模拟期间到期的定时器,并且当特定类型的事件在定时器到期之前发生时,标记第一模拟以供检查。在该示例中,该方法还包括如果特定类型的事件仅在定时器到期之后在第一模拟期间发生,则不标记第一模拟以供检查。附加地或可替代地,特定类型的事件是第一模拟车辆和第一模拟中的对象之间的碰撞。附加地或可替代地,特定类型的事件包括模拟车辆表现出特定类型的操纵行为。

本公开的另一个方面提供了一种测试用于在自动驾驶模式下操作车辆的软件的方法。该方法包括:使用由在自动驾驶模式下操作的车辆收集的日志数据运行模拟,其中使用软件运行模拟以控制模拟车辆;将模拟车辆的一个或多个特性与来自日志数据的车辆的一个或多个特性进行比较,以确定偏差点;在模拟中的偏差点处,启动在模拟期间到期的定时器;以及确定软件是否能够在定时器到期之前在没有特定事件发生的情况下继续模拟。

在一个示例中,特定事件是模拟车辆和模拟中的对象之间的碰撞。在另一个示例中,该方法还包括如果特定事件在定时器到期之前发生,则标记模拟以供检查。在另一个示例中,该方法还包括如果特定事件仅在定时器到期之后在模拟期间发生,则不标记模拟以供检查。在另一个示例中,特定事件是模拟车辆和模拟中的对象之间的碰撞。在另一个示例中,特定事件包括模拟车辆表现出特定类型的操纵行为。在另一个示例中,确定偏差点包括确定模拟车辆的位置和来自日志数据的车辆的位置何时偏差超过阈值量。在另一个示例中,确定偏差点包括确定模拟车辆的位置和来自日志数据的车辆的位置在相对于模拟中模拟车辆行驶的车道中的交通方向的横向方向或纵向方向中的至少一个方向上何时偏差超过阈值量。

附图说明

图1是根据示例性实施例的示例车辆的功能图。

图2是根据本公开的各方面的地图信息的示例。

图3是根据本公开的各方面的车辆的示例外部视图。

图4是根据本公开的各方面的示例系统的示意图。

图5是根据本公开的各方面的图4的系统的功能图。

图6是根据本公开的各方面的模拟的示例表示(representation)。

图7是根据本公开的各方面的日志数据和模拟结果的示例比较。

图8是根据本公开的各方面的模拟的示例表示。

图9是根据本公开的各方面的模拟和切换时间的示例表示。

图10是根据本公开的各方面的示例流程图。

图11是根据本公开的各方面的另一示例流程图。

图12是根据本公开的各方面的另一示例流程图。

具体实施方式

概述

本技术涉及使用自动操作的车辆的软件、在基于日志的模拟中评估碰撞。基于日志的模拟与使用由在自动模式下操作的车辆在诸如1分钟或者更长或更短的某个短时间段内收集的日志数据运行的模拟相对应。日志数据可以包括来自车辆的各种系统(包括感知、选路、规划、定位等)的信息。同时,实际车辆被虚拟自动车辆或模拟车辆代替,虚拟自动车辆或模拟车辆可以使用用于自动控制车辆的软件来做出决策。通过这样做,软件可以得到严格的测试。例如,模拟可以用于确定特定类型的事件(诸如特定类型的行为或碰撞)是否已经发生。作为示例,这些事件可以用于各种目的,诸如确定软件是否可以在没有碰撞的情况下“通过”给定的模拟,而不需要车辆在现实世界中物理地驾驶“真实的”英里或者必须“制造”情况。

然而,当使用所记录的数据运行模拟时,改变自动车辆的行为(诸如通过测试不同于用于记录所记录的数据的软件版本)可能会导致意想不到的后果。例如,在仅一分钟长的模拟的几秒钟之后,模拟车辆可能在其行为上偏差非常大,以至于由于该情况不再可实现而失去了模拟的目的(用于测试软件对特定情况的反应)。这可能是因为模拟中的代理(或日志数据中定义的其他道路使用者)可能会干扰模拟车辆(例如,与模拟车辆碰撞),因为这些代理的行为与在日志数据中观察到的一样。典型地,如果模拟导致特定类型的事件,诸如模拟车辆的特定类型的行为和/或模拟车辆与代理或日志数据的其他对象碰撞,则模拟可以被标记以供操作员检查。

为了更好地利用日志数据进行模拟,可以基于模拟车辆的行为与用于记录日志数据的实际车辆的行为有多大偏差来“调整”模拟。例如,可以调整“切换时间”或软件对模拟车辆进行控制的时间点(point)。例如,可以针对实际车辆在日志数据中如何驾驶、直到某个感兴趣的点或者在该感兴趣的点之后的某个时间而相同地运行模拟。该感兴趣的点可以是模拟中的模拟车辆和捕获日志数据的实际车辆之间的偏差点。

在一个示例中,可以通过将模拟车辆的规划轨迹与日志数据中识别出的实际车辆的规划轨迹进行比较来确定偏差点。每条规划轨迹可以与未来路径的组合的速度和几何形状或者单独的几何形状和速度分布分量相对应。当规划轨迹中的位置、速度或速度改变中的一个或多个在某个时间段内偏差超过某个阈值量时,这可以被认为是偏差点。

然而,由于比较规划轨迹的时间要求,至少一些偏差可能不被识别为感兴趣的点。这样,可以比较模拟中的模拟车辆和捕获日志数据的实际车辆的位置。模拟中位置充分偏差的第一时间点可以被识别为偏差点。

然后,偏差点可以是使用相同的日志数据来确定新的模拟的切换时间。切换时间可以是偏差点或偏差点加上某个时间段。换句话说,新的模拟迫使模拟车辆在改变来自日志数据的其位置、速度、朝向、走向等之前等待直到至少到达偏差点。如果新的模拟导致特定类型的事件,诸如模拟车辆的特定类型的行为和/或模拟车辆与代理或日志数据的其他对象碰撞,则新的模拟可以被标记以供操作员检查。可以重复该过程,直到对于模拟、在模拟车辆和捕获日志数据的实际车辆之间不存在额外的偏差点。

附加地或可替代地,一旦在模拟中识别出偏差点,则可以启动定时器。在定时器到期之后,某些事件可能会被忽略。例如,如果正在分析模拟以确定软件何时可能导致车辆以特定方式做出行为或操纵或者与另一个代理或对象碰撞,并且这种事件在定时器到期之后发生,则这些事件可以被忽略或不被标记。因此,本来会被标记以供操作员检查的这种模拟将不会被标记。

本文所描述的特征提供了一种测试用于自动车辆的软件的安全、有效和现实的方法。例如,软件可以在数十万种场景下被测试,而不会危及实际人员的生命和财产。同时,通过使新的模拟的切换时间成为与先前模拟的偏差点相对应的偏差点,这防止了模拟车辆无意中降低模拟的有用性。此外,这种方法有效地提供了被测试的软件的更真实的响应,以及来自固定量的日志数据的更有价值和更有用的模拟。此外,使用定时器来确定是否标记模拟以供检查可以减少检查实际上不是真的“失败”的模拟所需的时间和其他资源。此外,那些被标记的模拟对于确定如何修改或更新被测试的软件可能更为重要。在没有这样的测试的情况下,使用未经测试的软件对人员或财产造成伤害的风险可能太大。

示例系统

如图1所示,根据本公开的一个方面的车辆100包括各种组件。尽管本公开的某些方面对于特定类型的车辆特别有用,但是车辆可以是任何类型的车辆,包括但不限于轿车、卡车、摩托车、公共汽车、娱乐车辆等。车辆可以具有一个或多个计算设备,诸如包含一个或多个处理器120、存储器130和通常存在于通用计算设备中的其他组件的计算设备110。

存储器130存储可由一个或多个处理器120访问的信息,包括可由处理器120执行或使用的指令134和数据132。存储器130可以是能够存储处理器可访问的信息的任何类型,包括计算设备可读介质、或存储可以借助电子设备来读取的数据的其他介质,诸如硬盘驱动器、存储卡、ROM、RAM、DVD或其他光盘、以及其他可写和只读存储器。系统和方法可以包括前述的不同组合,由此指令和数据的不同部分被存储在不同类型的介质上。

指令134可以是由处理器直接执行(诸如机器代码)或间接执行(诸如脚本)的任何指令集。例如,指令可以作为计算设备代码存储在计算设备可读介质上。在这方面,术语“软件”、“指令”和“程序”在这里可以互换使用。指令可以以目标代码格式存储以便由处理器直接处理、或者以任何其他计算设备语言(包括按需解释或预先编译的独立源代码模块的集合或脚本)存储。下面更详细地解释指令的例程、方法和功能。

数据132可以由处理器120根据指令134来检索、存储或修改。例如,尽管要求保护的主题不受任何特定数据结构的限制,但是数据可以存储在计算设备寄存器中、存储在关系数据库中作为具有多个不同的字段和记录的表、存储在XML文档或平面文件中。数据也可以以任何计算设备可读格式被格式化。

一个或多个处理器120可以是任何常规处理器,诸如商业上可获得的CPU。可替代地,一个或多个处理器可以是专用设备,诸如ASIC或其他基于硬件的处理器。尽管图1在功能上示出了处理器、存储器和计算设备110的其他元件在同一块内,但是本领域普通技术人员将理解,处理器、计算设备或存储器实际上可以包括多个处理器、计算设备或存储器,这些处理器、计算设备或存储器可以存放在或不存放在同一物理外壳内。例如,存储器可以是位于不同于计算设备110的外壳的外壳中的硬盘驱动器或其他存储介质。因此,对处理器或计算设备的引用将被理解为包括对可以并行操作或可以不并行操作的处理器或计算设备或存储器的集合的引用。

计算设备110可以包括通常与诸如上述处理器和存储器的计算设备以及用户输入150(例如,鼠标、键盘、触摸屏和/或麦克风)和各种电子显示器(例如,具有屏幕的监视器或可操作来显示信息的任何其他电学设备)结合使用的组件中的全部。在该示例中,车辆包括内部电子显示器152以及一个或多个扬声器154,以提供信息或视听体验。在这方面,内部电子显示器152可以位于车辆100的车舱内,并且可以由计算设备110使用以向车辆100内的乘客提供信息。

计算设备110还可以包括一个或多个无线网络连接156,以便于与其他计算设备(诸如下面详细描述的客户端计算设备和服务器计算设备)通信。无线网络连接可以包括短程通信协议(诸如蓝牙、蓝牙低能量(LE)、蜂窝连接),以及各种配置和协议(包括互联网、万维网、内联网、虚拟专用网、广域网、局域网、使用专属于一个或多个公司的通信协议的专用网络、以太网、WiFi和HTTP),以及前述的各种组合。

在一个示例中,计算设备110可以是自动驾驶计算系统的控制计算设备、或者可以结合到车辆100中。自动驾驶计算系统能够与车辆的各种组件通信,以便根据存储器130的自动控制软件来控制车辆100的运动,如下文进一步所讨论的。例如,回到图1,计算设备110可以与车辆100的各种系统(诸如减速系统160、加速系统162、转向系统164、信令系统166、选路(routing)系统168、定位系统170、感知系统172和动力系统174(即,车辆的发动机或马达))通信,以便根据存储器130的指令134控制车辆100的运动、速度等。此外,尽管这些系统被示出为在计算设备110的外部,但是实际上,这些系统也可以被结合到计算设备110中,同样作为用于控制车辆100的自动驾驶计算系统。

作为示例,计算设备110可以与减速系统160和/或加速系统162的一个或多个致动器(诸如车辆的制动器、加速踏板和/或发动机或马达)交互,以便控制车辆的速度。类似地,计算设备110可以使用转向系统164的一个或多个致动器(诸如方向盘、转向轴和/或齿条和小齿轮(rack and pinion)系统中的小齿轮和齿条),以便控制车辆100的方向。例如,如果车辆100被配置为在道路上使用,诸如轿车或卡车,转向系统可以包括一个或多个致动器以控制车轮的角度来转动车辆。计算设备110可以使用信令系统166,以便向其他驾驶员或车辆用信号通知(例如,在需要时通过点亮转向信号或刹车灯)车辆的意图。

计算设备110可以使用选路系统168,以便确定和遵循到位置的路线。在这方面,选路系统168和/或数据132可以存储详细的地图信息,例如,识别道路的形状和高度、车道线、交叉路口、人行横道、速度限制、交通信号、建筑物、标志、实时交通信息、植被或其他这样的对象和信息的高度详细的地图。

图2是包括交叉路口202和204的道路段的地图信息200的示例。在该示例中,地图信息200包括识别车道线210、212、214、交通信号灯220、222、人行横道230、人行道240、停车标志250、252以及让行标志260的形状、位置和其他特性的信息。尽管地图信息在这里被描述为基于图像的地图,但是地图信息不需要是完全基于图像的(例如,光栅)。例如,地图信息可以包括一个或多个道路图或信息的图形网络,诸如道路、车道、交叉路口以及这些特征之间的连接。每个特征可以被存储为图形数据,并且可以与诸如地理位置以及其是否链接到其他相关特征的信息相关联,例如,停车标志可以链接到道路和交叉路口等。在一些示例中,相关联的数据可以包括道路图的基于网格的索引,以允许对特定道路图特征的高效查找。

计算设备110可以使用定位系统170,以便确定车辆在地图上或地球上的相对或绝对位置。例如,定位系统170可以包括GPS接收器,以确定设备的纬度、经度和/或海拔位置。其他定位系统(诸如基于激光的定向定位(localization)系统、惯性辅助的GPS或基于相机的定向定位)也可以用于识别车辆的位置。车辆的位置可以包括绝对地理位置,诸如纬度、经度和海拔,以及相对位置信息,诸如相对于紧邻其周围的其他小汽车的位置,其通常可以用比绝对地理位置更少的噪声来确定。

定位系统170还可以包括与计算设备110通信的其他设备,诸如加速度计、陀螺仪或其他方向/速度检测设备,以确定车辆的方向和速度或对车辆的方向和速度的改变。仅作为示例,加速设备可以确定其相对于重力方向或垂直于重力方向的平面的俯仰、偏转或滚转(或对其的改变)。该设备还可以跟踪速度的增加或减少以及这种改变的方向。本文所阐述的设备提供的位置和朝向数据可以被自动提供给计算设备110、其他计算设备以及前述的组合。

感知系统172还包括用于检测车辆外部的对象(诸如其他车辆、道路中的障碍物、交通信号、标志、树木等)的一个或多个组件。例如,感知系统172可以包括激光器、声纳、雷达、相机和/或记录可以由计算设备110处理的数据的任何其他检测设备。在车辆是诸如小型厢式车的客用车的情况下,小型厢式车可以包括安装在车顶或其他方便的位置上的激光器或其他传感器。例如,图3是车辆100的示例外部视图。在这个示例中,车顶上(roof-top)外壳310和圆顶外壳312可以包括LIDAR传感器以及各种相机和雷达单元。此外,位于车辆100前端的外壳320和车辆驾驶员侧和乘客侧的外壳330、332中的每个可以存放LIDAR传感器。例如,外壳330位于驾驶员车门360的前面。车辆100还包括同样位于车辆100的车顶的雷达单元和/或相机的外壳340、342。附加的雷达单元和相机(未示出)可以位于车辆100的前端和后端和/或沿着车顶或车顶上外壳310的其他位置。

计算设备110可以通过控制各种组件来控制车辆的方向和速度。例如,计算设备110可以使用来自详细的地图信息和选路系统168的数据来完全自动地将车辆导航到目的地位置。计算设备110可以使用定位系统170来确定车辆的位置,并且感知系统172在需要时检测并响应于对象以安全到达该位置。为了这样做,计算设备110可以使车辆加速(例如,通过增加加速系统162提供给发动机的燃料或其他能量)、减速(例如,通过减少供应给发动机的燃料、换档和/或通过减速系统160施加制动)、改变方向(例如,通过转向系统164转动车辆100的前轮或后轮),以及用信号通知这种改变(例如,通过点亮信令系统166的转动信号)。因此,加速系统162和减速系统160可以是传动系统的部分,该传动系统包括车辆的发动机和车辆的车轮之间的各种组件。此外,通过控制这些系统,计算设备110还可以控制车辆的传动系统,以便自动地操纵车辆。

车辆100的计算设备110还可以从其他计算设备(诸如作为运输服务的部分的那些计算设备以及其他计算设备)接收信息或向所述其他计算设备传送信息。图4和图5分别是示例系统400的示意图和功能图,示例系统400包括经由网络460连接的多个计算设备410、420、430、440和存储系统450。系统400还包括车辆100和可以被配置为与车辆100相同或相似的车辆100A、100B。尽管为了简单起见,仅描绘了几个车辆和计算设备,但是典型的系统可以包括显著更多的车辆和计算设备。

如图4所示,计算设备410、420、430、440中的每一个可以包括一个或多个处理器、存储器、数据和指令。这种处理器、存储器、数据和指令可以被配置为类似于计算设备110的一个或多个处理器120、存储器130、数据132和指令134。

网络460和中间节点可以包括各种配置和协议,包括短程通信协议,诸如蓝牙、蓝牙LE、互联网、万维网、内联网、虚拟专用网、广域网、局域网、使用专属于一个或多个公司的通信协议的专用网络、以太网、WiFi和HTTP,以及前述的各种组合。这样的通信可以由能够向其他计算设备发送和从其他计算设备接收数据的任何设备(诸如调制解调器和无线接口)来促进。

在一个示例中,一个或多个计算设备410可以包括具有多个计算设备的一个或多个服务器计算设备(例如负载平衡服务器群),这些计算设备与网络的不同节点交换信息,目的是从其他计算设备接收数据、处理数据和向其他计算设备发送数据。例如,一个或多个计算设备410可以包括能够经由网络460与车辆100的计算设备110或车辆100A的类似计算设备以及计算设备420、430、440通信的一个或多个服务器计算设备。例如,车辆100、100A可以是可以由服务器计算设备派遣到不同位置的车队的部分。在这方面,服务器计算设备410可以用作验证计算系统,该验证计算系统可以用于验证自动控制软件,诸如车辆100和车辆100A的车辆可以使用该自动控制软件在自动驾驶模式下操作。此外,服务器计算设备410可以使用网络460发送信息并在显示器(诸如计算设备420、430、440的显示器424、434、444)上向用户(诸如用户422、432、442)呈现信息。在这方面,计算设备420、430、440可以被认为是客户端计算设备。

如图4所示,每个客户端计算设备420、430、440可以是旨在供用户422、432、442使用的个人计算设备,并且具有通常与个人计算设备结合使用的组件中的所有,包括一个或多个处理器(例如,中央处理单元(CPU))、存储数据和指令的存储器(例如,RAM和内部硬盘驱动器)、诸如显示器424、434、444的显示器(例如,具有屏幕的监视器、触摸屏、投影仪、电视或可操作来显示信息的其他设备)和用户输入设备426、436、446(例如,鼠标、键盘、触摸屏或麦克风)。客户端计算设备还可以包括用于记录视频流的相机、扬声器、网络接口设备以及用于将这些元件彼此连接的组件中的所有。

尽管客户端计算设备420、430和440中的每个可以包括全尺寸的个人计算设备,但是它们可以可替代地包括能够通过诸如互联网的网络与服务器无线交换数据的移动计算设备。仅作为示例,客户端计算设备420可以是移动电话或能够经由互联网或其他网络获得信息的设备,诸如无线使能的PDA、平板PC、可穿戴计算设备或系统、或上网本。在另一个示例中,客户端计算设备430可以是可穿戴计算系统,如图4中示出的手表所示。作为示例,用户可以使用小型键盘、键区、麦克风、使用相机的可视信号或触摸屏来输入信息。

在一些示例中,客户端计算设备440可以是由管理员或操作员用来检查场景结果、切换时间和验证信息的操作工作站,如下文进一步所讨论的。尽管在图4和图5中仅示出了单个操作工作站440,但是任意数量的这样的工作站可以包括在典型的系统中。此外,尽管操作工作站被描绘为台式计算机,但是操作工作站可以包括各种类型的个人计算设备,诸如膝上型计算机、上网本、平板计算机等。

与存储器130一样,存储系统450可以是能够存储可由服务器计算设备410访问的信息的任何类型的计算机化存储器,诸如硬盘驱动器、存储卡、ROM、RAM、DVD、CD-ROM、可写和只读存储器。此外,存储系统450可以包括分布式存储系统,其中数据存储在物理上可以位于相同或不同地理位置的多个不同存储设备上。如图4和图5所示,存储系统450可以经由网络460连接到计算设备,和/或可以直接连接到或结合到计算设备110、410、420、430、440等中的任何一个。

存储系统450可以存储各种类型的信息,如下文更详细描述的。该信息可以由诸如一个或多个服务器计算设备410的服务器计算设备检索或以其他方式访问,以便执行本文所描述的特征中的一些或所有。例如,存储系统450可以存储日志数据。例如,该日志数据可以包括由感知系统(诸如车辆100的感知系统172)生成的传感器数据。作为示例,传感器数据可以包括原始传感器数据以及识别所感知到的对象的特性(诸如对象(诸如车辆、行人、骑自行车者、植被、路缘、车道线、人行道、人行横道、建筑物等)的形状、位置、朝向、速度等)的数据。日志数据还可以包括识别不同类型的事件的“事件”数据,不同类型的事件诸如与其他对象的碰撞、描述车辆100的潜在路径的规划的几何形状和/或速度的规划轨迹、车辆在不同时间的实际位置、车辆在不同时间的实际朝向/走向(heading)、车辆在不同时间的实际速度、加速度和减速度、对感知到的对象的分类和响应、感知到的对象的行为预测、车辆的各种系统(诸如加速、减速、感知、转向、信令、选路、动力等)在不同时间的状态(包括记录的错误、车辆的各种系统在不同时间的输入和输出等)。这样,这些事件和传感器数据可以用于“重建(recreate)”车辆的环境,包括在模拟中感知到的对象和车辆的行为。

此外,存储系统450还可以存储由诸如车辆100的车辆使用的自动控制软件,以在自动驾驶模式下操作车辆。存储在存储系统450中的该自动控制软件可以是尚未被验证的版本。一旦被验证,自动控制软件可以被发送到例如车辆100的存储器130,以便被计算设备110用来在自动驾驶模式下控制车辆100。

示例方法

除了上述和附图中所示的操作之外,现在将描述各种操作。应当理解,以下操作不必以下面描述的精确顺序来执行。相反,可以以不同的顺序或同时处理各种步骤,并且也可以添加或省略步骤。

为了测试和/或验证将被存储在存储器130中以供车辆100的计算设备110使用的自动控制软件,服务器计算设备410可以运行各种模拟。这些模拟可以是基于日志的模拟,其从存储在存储系统450的前述日志数据中的信息生成。在这方面,服务器计算设备410可以访问存储系统450,以便检索日志数据并运行模拟。例如,可以从存储系统中检索与生成日志数据的自动车辆的实时分钟相对应的部分日志数据。这部分日志数据可以由人类操作员和/或计算设备基于日志中记录的事件的类型来“手动”选择、或者更随机地被选择,例如,通过选择所有自动驾驶日志中的1%或者更多或更少。

检索出的部分日志数据可以用于运行初始模拟。当通过部分日志数据运行自动控制软件时,日志数据的细节(传感器数据和事件)可以用于生成模拟。换句话说,部分日志数据的传感器数据可以简单地“扮演(play)”作为由自动控制软件控制的模拟车辆的感知系统172的输入。在这方面,自动控制软件“体验”或处理日志数据,就好像自动控制软件实际上正在车辆100上运行一样。换句话说,模拟可以包括定义对象的特性(诸如对象的形状、位置、朝向、速度等,所述对象诸如由日志数据的传感器数据定义的车辆、行人、骑自行车者、植被、路缘、车道线、人行道、人行横道、建筑物等)的数据。此外,模拟可以包括与车辆100相对应的虚拟车辆的特性,包括由日志数据的事件定义的虚拟车辆的形状、位置、朝向、速度等。

图6提供了与地图信息200相对应的道路段的模拟的示例600。在该示例中,交叉路口602和604分别对应于交叉路口202和204。在这方面,车道线210、612、614、交通信号灯620、622、人行横道630、人行道640、停车标志650、652和让行标志660的形状、位置和其他特性对应于车道线210、212、214、交通信号灯220、222、人行横道230、人行道240、停车标志250、252和让行标志260的形状、位置和其他特性。在示例600中,与车辆100或车辆100A相对应的模拟车辆670正在接近交叉路口604。从来自用于模拟的日志数据的传感器数据和/或事件数据生成的代理(agent)车辆620也正在接近交叉路口604。该模拟可以包括代理车辆620“表现不佳”,因为车辆620可能忽略了停车标志650。

在一些情况下,自动控制软件仅被提供有感知系统172能够检测到的关于场景的信息,而不是场景的每一处细节。例如,返回示例600,服务器计算设备410可以运行场景,使得自动控制软件被给予对详细的地图信息200以及将由模拟车辆670的感知系统检测到的任何信息的访问。

初始模拟可能与“切换时间”相关联。该切换时间可以对应于自动控制软件被给予在模拟中控制虚拟车辆的控制并允许模拟被用于测试自动控制软件的时间。换句话说,自动控制软件能够结合地图信息使用传感器数据来确定虚拟车辆应该如何响应于其环境。

对于初始模拟的“初始”切换时间,可以使用进入模拟的默认切换时间,诸如5秒或者更多或更少。可替代地,可以根据该模拟的环境为每个场景自动地选择切换时间。在一些情况下,例如使用操作工作站440,人类操作员可以进一步确认或手动调谐(tune)切换时间。在一个示例中,对于给定的模拟,如果模拟车辆在模拟中的某个点与另一个对象(诸如车辆、行人或骑自行车者)碰撞,则在该预期碰撞之前几秒(诸如碰撞之前5秒或者更多或更少)的第二点可以被选择作为未来用于该模拟的切换时间。然后,该切换时间可以被确认为合理的、或者由人类操作员调整。使用利用人工检查对切换时间的更简单的验证过程减少了不必要的复杂性和计算,并可以在更大的数据集上提供更一致的结果。例如,图6的示例600可以表示在切换时间的模拟。

在初始模拟的运行期间或之后,可以将日志数据与模拟结果进行比较,以确定偏差点。例如,可以通过将模拟车辆的一个或多个特性与来自日志数据的实际车辆(在上述示例中,车辆100)的一个或多个特性进行比较来确定偏差点。在一个示例中,可以通过将模拟车辆的规划轨迹与在日志数据中识别出的实际车辆的规划轨迹进行比较来确定偏差点。每条规划轨迹可以与未来路径的组合的速度和几何形状或者单独的几何形状和速度分布分量相对应。当规划轨迹中的位置、速度或速度改变中的一个或多个在某个时间段内偏差超过某个阈值量时,这可以被认为是偏差点。

然而,由于比较规划轨迹的时间要求,至少一些偏差可能不被识别为偏差点。这样,可以比较模拟中的模拟车辆和捕获日志数据的真实或实际车辆的位置。模拟中位置至少偏差预定阈值(诸如1米或者更多或更少)的第一时间点可以被识别为偏差点。

例如,图7表示实际车辆的日志数据位置的示例比较700,从而识别由方形表示并在时间上从710增加到718的位置710-718,以及由圆圈表示并在时间上从720增加到728的模拟车辆的位置720-728。这些位置中的每一个都可以表示模拟或日志数据中的时间点。当然,模拟可以具有与日志数据中的时钟相对应的模拟时钟,以便允许识别日志数据和模拟中的相应的点。这样,为了比较的目的,位置710和位置720对应于第一时间点,位置712和722对应于第二时间点,等等。在该示例中,当这些位置之间的距离的偏差或差大于或等于1米时、或者例如在位置716和726处,可以确定偏差点。由位置716和726表示的时间因此可以是偏差点。

在一些情况下,可以相对于车辆当前行驶的车道的交通方向或行驶方向在横向(在横向方向上)和纵向(在纵向方向上)两者上测量偏差点,而不是画“直线”来确定偏差点。在该示例中,可以与对待纵向偏差不同地来对待横向偏差,因为与模拟车辆相对于车道向左还是向右移动相比,模拟车辆比实际车辆移动得更快或更慢可能不太令人感兴趣。阈值的示例可以包括满足1米或者更多或更少的横向偏差和3米或者更多或更少的纵向偏差中的一个或两个。

为了更好地利用日志数据进行模拟,可以基于模拟车辆的行为与用于记录日志数据的实际车辆的行为有多大偏差来“调整”模拟。例如,可以调整切换时间或软件被给予对模拟车辆的控制的点。换句话说,可以针对实际车辆在日志数据中如何驾驶、直到模拟中的模拟车辆和捕获日志数据的实际车辆之间的某个偏差点而相同地运行模拟。

检索出的部分日志数据可以用于运行新的或第二模拟。第二模拟可以使用软件来运行以控制第二模拟车辆。来自第一或先前模拟的偏差点可以用于确定第二模拟的切换时间,以允许软件对第二模拟车辆进行控制。换句话说,新的模拟迫使模拟车辆在改变来自日志数据的其位置、速度、朝向、走向等之前等待,直到至少到达偏差点处。在一个示例中,偏差点可以被用作第二模拟的切换时间。可替代地,可以将时间段(诸如5秒或者更多或更少)添加到偏差点以确定切换时间。该时间段的持续时间可以是可调的。例如,较小的数字将提供更详细的信息,尽管代价是更大的计算资源需求(即,更多的模拟将需要更多的资源)。

作为另一种替代方案,可以使用最小差。例如,新的模拟的切换时间可以根据来自先前模拟中的切换时间的偏差点的最大值(maximum)和某个最小时间段来确定。例如,该最小时间段可以是5秒或者更多或更少,并且也可以如上所述地来调整。通过使用最小时间段,计算设备可以避免在某部分日志数据中创建过多数目的模拟,其非常容易受到偏差的影响。

例如,图8可以表示与示例600的模拟相对应的模拟的示例800。此外,在示例800中,与车辆100或车辆100A相对应的模拟车辆870正在接近交叉路口604。然而,在该示例中,切换时间可以根据示例700的偏差点或者例如示例700的位置716和726来确定。此外,位置716和726的时间可以用作第二模拟的切换时间,或者某个固定时间段可以被添加到位置716和726的时间以确定切换时间。此外,图8的示例800可以表示在第二模拟的切换时间处的第二模拟。

服务器计算设备110可以监视和/或分析第二模拟的结果,以便确定在第二模拟期间是否发生了特定类型的事件。换句话说,服务器计算设备能够确定软件是否能够在没有特定类型的事件发生的情况下完成第二模拟。例如,服务器计算设备可以确定模拟车辆是否表现出特定类型的操纵行为,诸如急转弯(swerve)、急刹车和/或与日志数据的另一个对象碰撞。如果特定类型的事件确实发生或已经发生,那么新的模拟可以被标记以供操作员检查。

同时,如上所述,可以为该第二模拟确定新的或第二偏差点。可以运行第三模拟。如上所述,第二偏差点可以用于确定第三模拟的切换时间。此外,服务器计算设备110可以监视和/或分析第三模拟的结果,以便确定在第三模拟期间是否发生了特定类型的事件。同时,如上所述,可以为该第三模拟确定第三偏差点。可以运行第四模拟。如上所述,第三偏差点可以用于确定第四模拟的切换时间,等等。

可以重复该过程,直到在模拟期间在模拟车辆和捕获日志数据的实际车辆之间不存在额外的偏差点,和/或直到切换时间超过原始模拟的持续时间。例如,转向图9的示例900,示出了第一、第二和第三模拟910、920、930的时间线。如果第一模拟910的偏差点出现在t=1.0s,则第二模拟920可以在偏差点之后五秒的切换时间922处开始,例如,在t=6.0s处。如果该第二模拟在t=14.0s处具有偏差点,则第三模拟930的切换时间可以被设置为t=14.0s(使用根据来自先前模拟中的切换时间的偏差点的最大值和某个最小时间段来确定切换时间的示例)。一旦在原始模拟的持续时间期间没有偏差点(即,如果曾经有偏差点,其将在原始模拟的持续时间之后出现),该过程可以终止。

此外,为了使以后的模拟在计算资源成本方面“更便宜”,当触发新的模拟时,对于虚拟车辆,新的模拟可以重新使用感知系统的输出。这是可能的,因为当模拟车辆的定位、位置、朝向相对于捕获日志数据的实际车辆改变时,模拟车辆的感知系统将在模拟中“检测到”的东西不一定改变。

图10包括用于测试用于在自动驾驶模式下操作车辆的软件的示例中的一些的示例流程图1000,其可以由诸如计算设备410的处理器的一个或多个处理器来执行。例如,在框1010,使用由在自动驾驶模式下操作的车辆收集的日志数据运行第一模拟。使用软件运行模拟以控制第一模拟车辆。在框1020,将模拟车辆的一个或多个特性与来自日志数据的车辆的一个或多个特性进行比较,以确定偏差点。在框1030,偏差点用于确定第二模拟的切换时间。切换时间与第二模拟中允许软件控制第二模拟车辆的时间相对应。在框1040,使用日志数据运行第二模拟。使用控制第二模拟车辆(或者更确切地说,第二模拟的模拟车辆)的软件并且使用作为切换时间的偏差点来运行第二模拟,以允许软件控制第二模拟车辆。在框1050,确定软件是否能够在没有特定类型的事件发生的情况下完成第二模拟。

附加地或可替代地,一旦在模拟中识别出偏差点,则可以启动定时器。例如,该定时器在模拟中可以是5秒钟的时间(可能比实时运行得更快)或者更多或更少。在定时器到期之后,特定事件可能会被忽略。例如,如果正在分析模拟以确定软件何时可能导致车辆以特定方式做出行为或操纵(诸如急转弯或变道等)或者与另一个代理或对象碰撞或几乎碰撞,并且这种事件在定时器到期之后发生,则这些事件更有可能是由模拟中的其他代理而不是软件引起的。定时器可以帮助确定事件由软件相对于模拟中的另一个代理引起的可能程度。换句话说,在定时器到期之前发生的这种事件更有可能是由软件而不是模拟中的其他代理引起的。类似地,在定时器到期之后发生的这种事件可能更可能是由模拟中的其他代理而不是软件引起的。因此,在定时器到期之后发生的这些事件可以被忽略、或不被标记、或者被标记但是具有较低的优先级,以避免对具有由代理而不是软件引起的碰撞的模拟的不必要的检查。图11包括用于测试用于在自动驾驶模式下控制车辆的软件的示例中的一些的示例流程图1100,其可以由诸如计算设备410的处理器的一个或多个处理器来执行。例如,在框1110,使用由在自动驾驶模式下操作的车辆收集的日志数据来运行模拟。使用软件运行模拟以控制第一模拟车辆。在框1120,将模拟车辆的一个或多个特性与来自日志数据的车辆的一个或多个特性进行比较,以确定偏差点。在框1130,在模拟中的偏差点处,启动在模拟期间到期的定时器。在框1140,确定软件是否能够在定时器到期之前没有特定事件发生的情况下继续模拟。

图12包括用于测试用于在自动驾驶模式下控制车辆的软件的示例中的一些的示例流程图1200,其可以由诸如计算设备410的处理器的一个或多个处理器来执行。例如,在框1210,使用由在自动驾驶模式下操作的车辆收集的日志数据运行第一模拟。使用软件运行第一模拟以控制第一模拟车辆。在框1220,在第一模拟的运行期间,将第一模拟车辆的一个或多个特性与来自日志数据的车辆的一个或多个特性进行比较,以便确定偏差点。在框1230,在偏差点处,启动在模拟期间到期的定时器。在框1240,确定软件是否能够在定时器到期之前没有特定事件发生的情况下继续第一模拟。在框1250,偏差点用于确定第二模拟的切换时间。切换时间与第二模拟中允许软件控制第二模拟车辆的时间相对应。在框1260,使用日志数据运行第二模拟。使用控制第二模拟车辆的软件并使用作为切换时间的偏差点来运行第二模拟,以允许软件控制第二模拟车辆。在框1270,确定软件是否能够在没有特定类型的事件发生的情况下完成第二模拟。此外,该过程可以在如上所述的循环中继续。

此外,本文所描述的特征提供了一种测试用于自动车辆的软件的安全、有效和现实的方法。例如,软件可以在数十万种场景下被测试,而不会危及实际人员的生命和财产。同时,通过使新的模拟的切换时间成为与先前模拟的偏差点相对应的偏差点,这防止了模拟车辆无意中降低模拟的有用性。此外,这种方法有效地提供了被测试的软件的更真实的响应,以及来自固定量的日志数据的更有价值和更有用的模拟。此外,使用定时器来确定是否标记模拟以供检查可以减少检查实际上不是真的“失败”的模拟所需的时间和其他资源。此外,那些被标记的模拟对于确定如何修改或更新被测试的软件可能更为重要。在没有这样的测试的情况下,使用未经测试的软件对人员或财产造成伤害的风险可能太大。

除非另有说明,否则前述替代示例并不相互排斥,而是可以以各种组合来实现,以实现独特的优点。由于在不脱离由权利要求所限定的主题的情况下,可以利用上述特征的这些和其他变化和组合,所以对实施例的前述描述应该通过说明的方式进行,而不是通过限制由权利要求所限定的主题进行。此外,对本文描述的示例的提供,以及措辞为“诸如”、“包括”等的子句不应该被解释为将权利要求的主题限制到特定示例;相反,这些示例旨在仅说明多种可能实施例中的一个。此外,不同附图中的相同附图标记可以识别相同或相似的元件。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号