用于模拟控制的智能体行为模型的制作方法

文档序号:33133128发布日期:2023-02-01 13:37阅读:65来源:国知局
用于模拟控制的智能体行为模型的制作方法
用于模拟控制的智能体行为模型
1.相关申请
2.本技术要求于2020年6月1日提交的美国申请16/889,747号的权益,其全部内容通过引用并入本文。


背景技术:

3.运行场景的模拟可以提供用于测试自主系统和/或机器学习模型管道(例如那些结合在自主车辆中的)的有价值的方法。然而,人类行为可以是不可预测的,因此可能难以准确地识别和建模不常见的异常行为。例如,人类驾驶员可能突然转向离开高速公路进入出口匝道,在迎面而来的车辆前面转弯,在十字路口红灯时转弯(在此处这样的转弯是非法的)等。
附图说明
4.参考附图来描述具体实施方式。在附图中,附图标记的最左边的数字标识该附图标记首次在其中出现的附图。不同附图中的相同的附图标记指示相似或相同的项目。
5.图1示出了示例场景,其中可以至少部分地基于通过与自主车辆相关联的一个或多个传感器收集到的传感器数据、至少部分地基于通过感知组件生成的预测数据来控制自主车辆。
6.图2示出了用于生成在模拟系统中使用的智能体行为模型(agent behavior model)的示例架构的框图。
7.图3示出了用于生成误差模型的示例过程的图示流程图,该误差模型可以是用于动态对象的真实模拟的智能体行为模型的一部分。
8.图4a示出了示例预测机动(maneuver)和作为预测主题的对象所采取的示例实际路径/实际机动。
9.图4b和4c示出了可以与不同误差模型相关联的示例场景和场景标签。
10.图5a-5c示出了与对象和/或场景相关联的误差模型可以至少部分地基于环境中对象的位置/对象所采取的动作而改变的方式。
11.图6示出了用于在模拟环境中真实地模拟动态对象的运动(包括异常行为)的示例过程的流程图。一些技术可以包括运行场景的多个模拟并且使动态对象按照误差模型规定的发生率采取异常动作。
具体实施方式
12.用于准确地模拟诸如车辆、行人、骑自行车者或动物的对象的行为的技术可以包括生成智能体行为模型,其可以确定用于控制模拟对象(例如,模拟环境中的动态对象(即能够运动的对象,例如车辆、行人、骑自行车者、动物)的模拟表示)的指令。智能体行为模型可以被设计为模仿动态对象可能时不时地表现出异常行为的方式。例如,智能体行为模型可以使模拟车辆在迎面而来的车辆前面执行转弯、突然转向、越过车道标线、执行非法机
动、以非法速度移动等,其频率与真实场景中这样的事件发生的频率相似。使用智能体行为模型模拟这种反常行为可以改进对自主车辆对于自主车辆周围环境中的对象的响应的测试。
13.自主车辆可以包括感知组件,感知组件从与自主车辆相关联的一个或多个传感器接收传感器数据。感知组件可以使用传感器数据来确定感知数据,感知数据可以指示环境中有什么以及对未来的环境的状态的预测。例如,感知数据可以指示对象存在于环境中,对象存在的位置及其分类(例如,车辆、行人、标牌、静态对象、骑自行车者),以及与对象相关联的预测数据,该预测数据指示在未来时间对象的预测位置、航向和/或速度和/或对象可以做出的机动。预测机动可以是对象所采取的动作的高级描述,例如,保持对象的状态(例如,保持停止位置、保持轨迹)、执行左转弯、停止或车道变更;进入或离开道路、人行横道、人行道或隔离车道(例如,自行车道、多乘员车辆车道)等。
14.生成智能体行为模型可以包括从导航通过场景的自主车辆接收与场景相关联的感知数据和日志数据。日志数据可以包括自主车辆在场景中的操作期间收集/生成的传感器数据和/或感知数据。在一些示例中,日志数据还可以包括在自主车辆已经将感知数据和/或传感器数据传输到远程计算装置之后添加的标签。标签可以指示关于传感器数据中出现的对象的基准真值。
15.技术可以包括确定预测数据与日志数据之间的差异并且基于与多个相同或相似场景相关联地确定的差异来构建误差模型。例如,该技术可以包括预处理操作,包括在与不同场景相关联的日志数据和/或感知数据中识别不同场景。场景可以包括环境的布局(例如,四路受控十字路口、三路不受控十字路口、六路非典型控制十字路口、两车道高速公路、单向行驶方向),场景中对象的数量、类型、和/或配置。该配置可以识别对象的位置、朝向、和/或轨迹/速度。该技术可以包括根据在数据收集时间段内从一个或多个自主车辆接收到的日志数据和感知数据,聚合与相同场景相关联的日志数据和感知数据。随着与场景相关联的新的日志数据和/或感知数据被添加到聚合中(或所有聚合数据被一次添加),误差模型可以被逐步地构建。在一些示例中,误差模型可以按照场景、按照对象类型、和/或按照场景中的对象位置/朝向/状态被确定。
16.该技术可以包括构建不同类型的误差模型。在至少一个示例中,该技术可以包括确定机动误差模型和路径误差模型。可以至少部分地基于通过自主车辆的感知组件预测的机动与通过日志数据指示的由对象执行的实际机动之间的差异来生成机动误差模型。可以至少部分地基于通过感知组件预测的路径与由对象采取的实际路径之间的差异(例如,预测位置与实际位置之间的欧氏距离)来生成路径误差模型。路径可以是对象遵循的预测位置和/或轨迹的序列。在任一情况下,误差模型可以包括与不同机动/路径相关联的概率分布。例如,机动误差模型可以指示第一场景中车辆保持其状态(例如,继续向前直行)的概率分布,在该场景中车辆位于十字路口的中间并且正在直线运动通过十字路口。机动误差模型可以基于场景、对象类型、环境中的对象位置/航向/速度、和/或车辆的状态(例如,执行转弯、停止)来指示车辆将左转、右转、突然停止、或继续其轨迹的概率。例如,该技术可以包括确定对象做出机动和/或对象所做出的该机动匹配预测机动的次数,如在多个实例中观察到的。
17.在不同场景中生成的用于诸如车辆、行人的对象类型的误差模型可以与该对象类
型相关联,作为该对象类型的智能体行为模型。当在模拟中实例化该类型的对象时,可以从存储器调用此智能体行为模型。例如,该技术可以包括接收场景,其可以至少部分地基于从自主车辆接收到的地图数据、日志数据和/或至少部分地基于在计算装置处接收到的输入(例如,个人可以与计算装置的用户接口交互以定义场景)被定义。在一些示例中,场景可以指示环境的特性,例如,如一个或多个对象的位置、朝向、移动和/或特性(例如,材料、高度、宽度、深度、亮度)。例如,环境可以包括通过待模拟的场景指定的配置中的一个或多个静态对象和/或一个或多个智能体(例如,动态对象)。在一些示例中,可以至少部分地基于智能体行为模型的输出来控制在场景中被实例化的动态对象中的任一个。
18.在一些示例中,在模拟期间使用智能体控制对象的模拟行为可以包括至少部分地基于通过自主车辆的感知组件接收到的模拟传感器数据来确定与对象相关联的预测数据。该感知组件可以是在自主车辆上运行的感知组件的副本或虚拟化。感知组件可以输出与模拟对象相关联的预测数据;该预测数据可以由智能体行为模型接收。在一些示例中,预测数据可以至少包括模拟对象的预测机动和/或预测路径。智能体行为模型可以至少部分地基于与模拟对象相关联的误差模型来修改模拟对象的预测机动和/或预测路径。
19.例如,修改预测机动和/或预测路径可以包括至少部分地基于与预测机动和/或预测路径相关联的概率对误差模型进行采样并且改变预测机动和/或预测路径。该技术可以包括至少部分地基于修改的机动和/或修改的路径来控制模拟对象的运动。修改机动可以导致改变机动并且修改路径可以包括修改定义路径的曲线的参数或增加与离散位置的位置相关联的与参考曲线的偏差(例如,参考曲线可以通过预测机动来定义)。例如,可以预测模拟对象将继续直行,并且仅从通过“直行”机动定义的直线路径轻微地横向运动,但对机动误差模型进行采样可能导致低概率事件,其中模拟对象执行向右急转弯,同时保持相同的速度并且在与向右急转弯相关联的路径的横向位移中变化很大。在一些示例中,机动模型可以指示与机动相关联的概率,例如,机动模型可以指示可能出现的不同机动,并且与不同机动相关联的不同概率指示相应机动将由对象执行的概率(并且可以基于感知系统的误差,如本文进一步讨论的)。例如,机动模型可以指示对象可以执行的不同机动以及与其相关联的概率,该概率加起来总和为1。可以考虑其他分配概率的方式,例如百分比(所有可能的下一次机动的总和可以是或可以不是100%)等。
20.在附加或替代示例中,模拟可以运行多次场景的模拟,并且该技术可以包括跟踪与对象相关联的机动和/或路径的发生率。在这样的实例中,修改预测机动和/或预测路径可以包括改变机动和/或预测路径以符合至少部分地基于与对象和/或场景相关联的误差模型而确定的发生率。例如,机动误差模型可以指示,在每1000次车辆通过十字路口的场景的迭代中,车辆会有一次在迎面而来的车辆前面急转弯。智能体行为模型可以强制执行发生率,确保在每1000次迭代中,有一次预测机动被修改为包括在迎面而来的车辆前面急转弯。
21.本文讨论的技术可以被用于测试自主车辆(例如,自主车辆的规划组件)的操作,其可以至少部分地基于与智能体的模拟运动相关联的模拟传感器数据来生成用于控制自主车辆的操作的轨迹。通过感知组件产生的感知数据也可以被提供给规划组件,用于测试规划组件。
22.该技术可以改进自主车辆的一个或多个组件(例如,定位组件、感知组件、规划组
件)的测试和/或训练,并且可以由此改进其准确性以及自主车辆(或集成这样的感知组件和/或规划组件的任何其他系统)的操作的安全性和有效性。此外,该技术可以减少准确地模拟场景所需要的计算资源量,因为高效地使用自主车辆本身的感知组件来控制由智能体行为模型修改的模拟,这可能需要比感知组件少得多的计算能力。
23.示例场景
24.图1示出了包括车辆102的示例场景100。在一些示例中,示例场景100可以是真实场景和/或示例场景100可以是被建模为模拟场景的真实场景的表示。在示例场景100是模拟场景的示例中,可以至少部分地基于在计算装置的用户接口处接收到的输入确定示例场景100(例如,计算装置的用户可以定义示例场景100中的环境、对象、和/或示例场景100的特性)和/或可以至少部分地基于从一个或多个自主车辆接收到的日志数据确定示例场景100。日志数据可以至少部分地基于在自主车辆接收到的传感器数据、通过感知组件生成的感知数据、和/或通过规划组件生成的指令。在一些示例中,自主车辆可以存储日志数据和/或周期性地将日志数据传输到远程计算装置。
25.在一些实例中,车辆102可以是被配置为根据美国国家公路交通安全管理局发布的5级分类操作的自主车辆,该分类描述了一种能够在整个行程中执行所有安全关键功能的车辆,其中驾驶员(或乘员)不被期望在任何时候控制车辆。然而,在其他示例中,车辆102可以是具有任何其他级别或分类的完全自主车辆或部分自主车辆。可以设想,本文讨论的技术可以应用于不只是机器人控制,例如用于自主车辆。例如,本文讨论的技术可以被应用于采矿、制造、增强现实等。此外,即使车辆102被描绘为陆地车辆,但是车辆102可以是航天器、船只和/或类似物。在一些示例中,车辆102可以在模拟中被表示为模拟车辆。为简单起见,本文的讨论不区分模拟车辆和真实车辆。因此,对“车辆”的引用可以引用模拟车辆和/或真实车辆。
26.根据本文讨论的技术以及在其中场景100是真实示例的示例,车辆102可以从车辆102的传感器104接收传感器数据。例如,传感器104可以包括位置传感器(例如,全球定位系统(gps)传感器)、惯性传感器(例如,加速度计传感器、陀螺仪传感器等)、磁场传感器(例如,指南针)、位置/速度/加速度传感器(例如,速度计、驱动系统传感器)、深度位置传感器(例如,激光雷达传感器、雷达传感器、声纳传感器、飞行时间(tof)相机、深度相机,和/或其他深度感测传感器)、图像传感器(例如,相机)、音频传感器(例如,麦克风)、和/或环境传感器(例如,气压计、湿度计等)。在一些示例中,模拟传感器可以对应车辆102上的传感器104中的至少一个,并且在模拟中,传感器104中的一个或多个可以被模拟。在一些示例中,模拟传感器的位置可以对应传感器104中的一个相对于车辆102的位置。
27.传感器104可以生成传感器数据,该数据可以由与车辆102相关联的计算装置106接收。然而,在其他示例中,传感器104和/或计算装置106中的一些或全部可以与车辆102分离和/或被设置为远离车辆102,并且数据捕获、处理、命令、和/或控制可以经由有线和/或无线网络通过一个或多个远程计算装置被传送给车辆102/从车辆102被传送。
28.计算装置106可以包括存储器108,其存储定位组件110、感知组件112、规划组件114、和/或模拟系统116。通常,定位组件110可以包括软件系统和/或硬件系统,其用于确定车辆102相对于一个或多个坐标系(例如,相对于环境、相对于道路、相对于与自主车辆相关联的移动的惯性方向)的姿态(例如,位置和/或朝向)。定位组件110可以将该数据的至少一
部分输出到感知组件112,该感知组件112可以输出定位数据中的至少一些和/或使用定位数据作为用于确定感知数据中的至少一些的参考。
29.感知组件112可以确定车辆102周围的环境中有什么,并且规划组件114可以根据从定位组件110和/或感知组件112接收到的信息来确定如何操作车辆102。定位组件110、感知组件112、和/或规划组件114可以包括一个或多个机器学习(ml)模型和/或其他计算机可执行指令。
30.在一些示例中,定位组件110和/或感知组件112可以从传感器104接收传感器数据和/或从模拟系统116接收模拟数据。本文讨论的技术可以包括将从模拟组件116接收到的模拟数据添加到通过感知数据112输出的感知数据,由此改进对可能的智能体行为的在线预测。例如,在至少一个示例中,模拟系统116可以使用本文讨论的智能体行为模型生成修改的机动和/或修改的路径,并且向规划组件114和/或感知组件112提供修改的机动和/或修改的路径。
31.在一些实例中,感知组件112可以确定与车辆102附近的对象相关的数据(例如,与检测到的对象相关联的分类、实例分割、踪迹),指定车辆的目的地的路线数据,识别道路特性(例如,在用于定位自主车辆的不同传感器模式中可检测到的特征)的全球地图数据,识别在车辆附近检测到的特性(例如,建筑物、树木、栅栏、消防栓、停车标志、以及在各种传感器模式中可检测到的任何其他特征的位置和/或尺寸)的局部地图数据等。在一些示例中,车辆102周围的对象可以是模拟环境的模拟对象。通过感知组件112产生的数据可以被统称为“感知数据”。一旦感知组件112已经生成感知数据,感知组件112可以将感知数据提供给规划组件114。
32.规划组件112可以至少部分地基于感知数据和/或其他信息,例如,如通过模拟系统116生成的模拟数据(例如,修改的机动和/或路径)和/或定位数据(例如,车辆102相对于地图在环境中的位置和/或通过感知组件110检测到的特征)来确定轨迹118。例如,规划组件114可以确定车辆102从第一位置到第二位置的路线;基本上同时地并且至少部分地基于感知数据和/或模拟感知数据生成多个潜在轨迹,以用于根据后退水平技术(receding horizon technique)(例如,1微秒、半秒)控制车辆102的运动以控制车辆穿越路线(例如,为了避开任何检测到的对象);并且选择潜在轨迹中的一个作为车辆102可以使用以生成驱动控制信号的轨迹118,该驱动控制信号可以被传输到车辆102的驱动组件。图1描绘了这样的轨迹118的示例:其表示为指示航向、速度和/或加速度的箭头,尽管轨迹本身可以包括用于pid控制器的指令,该指令可以进而致动车辆102的驱动系统。例如,轨迹118可以包括用于自主车辆102的控制器的指令以致动车辆102的驱动组件以实现转向角度和/或转向速率,这可以导致车辆位置、车辆速度、和/或车辆加速度(或在模拟自主车辆时的其模拟版本)。轨迹118可以包括控制器跟踪的目标航向、目标转向角度、目标转向速率、目标位置、目标速度、和/或目标加速度。
33.示例场景100包括行人120,该行人在紧挨着其中车辆102正在操作的道路的人行道上行走。感知组件112可以接收与环境相关联的传感器数据并且确定环境中行人120的位置以及与行人120相关联的分类(即“行人”)。通过感知组件112生成的感知数据可以被存储在日志数据存储库中,其可以包括行人120在当前时间步长和先前时间步长处的位置。例如,图1描绘了行人120在时间t0的当前位置122和行人的先前(历史)位置,即在时间t-1
的位
置124和在时间t-2
的位置126。每个时间步长可以对应于时间间隔(例如,100毫秒、500毫秒、1秒、任何其他时间段)。在至少一个示例中,位置122-126和对象分类可以被关联为通过感知组件112生成的踪迹的一部分。
34.在示例场景100中,感知组件112可以至少部分地基于位置122、历史位置124和/或126、对象分类、和/或与行人120相关联的其他数据来确定行人120的预测机动128和/或路径。图1将路径描绘为离散位置,包括时间t1处的预测位置130和时间t2处的预测位置132。当前位置和历史位置被描绘为实心圆,而预测位置被描绘为空心圆。注意,虽然路径被描绘为包括离散位置,但是预测组件112可以将路径确定为直线或曲线和/或作为与机动相关联的标准参考直线或曲线的偏差或参数。例如,路径可以定义转弯机动的曲率参数或与由机动定义的曲线的偏差。
35.在一些示例中,预测数据可以附加地或替代地至少部分地基于地图数据或其他数据。在一些示例中,预测数据可以包括环境的自顶向下的分割,如在美国专利申请第15/963,833号中更详细地描述的,其全部内容被并入本文,和/或与环境相关联的自顶向下的预测,如在美国专利申请第16/779,576号中更详细地描述的,其全部内容被并入本文。例如,在所描绘的示例中,行人地图的预测位置可以至少部分地基于环境中行人120相对于人行横道的位置。地图数据可以由存储器108存储。在一些示例中,预测数据和/或其他感知数据可以被存储为日志数据的一部分。日志数据可以包括与未来时间t1和t2相关联的传感器数据和/或感知数据,其分别由车辆102在车辆102继续操作时收集和生成。注意,在下一个时间步长,车辆102将生成新的预测。换言之,预测机动和位置可能已经在时间t-2
由感知组件112生成,并且当前时间可能已经对应于时间t2。
36.在一些示例中,场景标签134可以与作为日志数据的一部分被存储的传感器数据和/或感知数据相关联。在一些示例中,场景标签134可以通过不同的计算装置(例如,在日志数据被车辆102传输之后的远程计算装置)被添加。例如,场景标签可以表征环境中对象的数量、类型、或配置、和/或环境的布局。在一些示例中,场景标签可以是数据结构。配置可以定义环境中对象的位置、航向、和/或速度,并且环境的布局可以识别环境(例如,四路灯控十字路口、左转车道不受控的四路灯控十字路口、具有单向道路的三路不受控的十字路口)的一般特征。在一些示例中,场景标签可以作为日志数据处理操作的一部分被生成。处理操作可以包括确定与识别对象的相对位置和/或类型的感知数据相关联的传感器数据。例如,处理操作可以识别下面列举的区域中的对象的数量和/或类型,并将该数据与相应的传感器数据相关联。所得到的元数据注释可以被聚类并且场景标签可以与每个不同的聚类相关联,这可以基于对象的数量和/或类型和/或区域。这些区域可以包括,例如:
37.·
在车辆102的前面,
38.·
到车辆102的一侧,
39.·
在车辆102的后面,
40.·
在车辆102的车道对面的车道中,
41.·
在车辆102的下一个车道中,
42.·
在各种十字路口/交叉路口配置(例如,在四路受控十字路口;在t形交叉路口;在4路十字路口,其中2路受控、2路不受控)中或附近,
43.·
靠近道路等。
44.在一些示例中,场景标签可以不是人类可理解的,场景标签可以仅仅是聚类标识符,尽管在其他示例中,人类可理解的术语可以被附到聚类(例如,车辆侧面的两个对象,车辆前面的一个对象)、训练好的嵌入物等。
45.车辆102可以将传感器数据、感知数据、和/或场景标签134(如果其是通过感知组件112在车辆上生成)的至少一部分作为日志数据的一部分传输到远程计算装置(图1中未示出)。
46.示例系统
47.图2示出了实现本文讨论的技术的示例系统200的框图。在一些实例中,示例系统200可以包括车辆202,其可以表示图1中的车辆102。在一些实例中,车辆202可以是被配置为根据美国国家公路交通安全管理局发布的5级分类操作的自主车辆,该分类描述了一种能够在整个行程中执行所有安全关键功能的车辆,其中驾驶员(或乘员)不被期望在任何时候控制车辆。然而,在其他示例中,车辆202可以是具有任何其他级别或分类的完全自主车辆或部分自主车辆。此外,在一些实例中,本文描述的技术也可以由非自主车辆使用。
48.车辆202可以包括车辆计算装置204、传感器206、发射器208、网络接口210、和/或驱动组件212。车辆计算装置204可以表示计算装置106并且传感器206可以表示传感器104。系统200可以附加地或替代地包括计算装置214。
49.在一些实例中,传感器206可以表示传感器104并且可以包括激光雷达传感器、雷达传感器、超声传感器、声纳传感器、位置传感器(例如,全球定位系统(gps)、指南针等)、惯性传感器(例如,惯性测量单元(imu)、加速度计、磁力计、陀螺仪等)、图像传感器(例如,红-绿-蓝(rgb)、红外(ir)、强度、深度、飞行时间相机等)、麦克风、车轮编码器、环境传感器(例如,温度计、湿度计、光传感器、压力传感器等)等。传感器206可以包括这些或其他类型的传感器中的每一个的多个实例。例如,雷达传感器可以包括位于车辆202的拐角、前部、后部、侧面、和/或顶部处的单独的雷达传感器。作为另一示例,相机可以包括设置在围绕车辆202的外部和/或内部的各种位置处的多个相机。传感器206可以给车辆计算装置204和/或计算装置214提供输入。在一些示例中,本文讨论的模拟传感器可以对应于特定类型的传感器和/或任何传感器。如本文所讨论的,与模拟传感器相关联的位置可以对应于传感器的视场(例如,焦点)相对于车辆202和/或车辆202的运动方向的位置和/或起始点。
50.车辆202也可以包括发射器208,用于发射光和/或声音,如上文所描述。该示例中的发射器208可以包括与车辆202的乘客通信的内部音频和视觉发射器。通过示例而非限制的方式,内部发射器可以包括扬声器、灯、标志、显示屏、触摸屏、触觉发射器(例如,振动和/或力反馈)、机械致动器(例如,安全带张紧器、座椅定位器、头枕定位器等)等。该示例中的发射器208也可以包括外部发射器。作为示例而非限制,该示例中的外部发射器包括示意行进方向的灯或其他车辆动作的指示器(例如,指示灯、标志、灯阵列等),以及一个或多个音频发射器(例如,扬声器、扬声器阵列、喇叭等)以与行人或其他附近车辆用声音进行通信,其中的一个或多个包括声束转向技术(acoustic beam steering technology)。
51.车辆202也可以包括网络接口210,其实现车辆202与一个或多个其他本地或远程计算装置之间的通信。例如,网络接口210可以促进与车辆202上的其他本地计算装置和/或驱动组件212的通信。而且,网络接口210可以附加地或替代地允许车辆与其他附近的计算装置(例如,其他附近的车辆、交通信号等)通信。网络接口210可以附加地或替代地使车辆
202能够与计算装置214通信。在一些示例中,计算装置214可以包括分布式计算系统(例如,云计算架构)的一个或多个节点。
52.网络接口210可以包括物理接口和/或逻辑接口,用于将车辆计算装置204连接到另一个计算装置或网络,例如网络216。例如,网络接口210可以实现基于wi-fi的通信,例如经由ieee 200.11标准定义的频率,短距离无线频率例如蜂窝通信(例如,2g、3g、4g、4g lte、5g等)或使得相应的计算装置能够与其他计算装置相接合的任何合适的有线或无线通信协议。在一些实例中,车辆计算装置204和/或传感器206可以在经过预定时间段之后、接近实时地等,经由网络216以特定频率将传感器数据发送到计算装置214。
53.在一些实例中,车辆202可以包括一个或多个驱动组件212。在一些实例中,车辆202可以具有单个驱动组件212。在一些实例中,驱动组件212可以包括一个或多个传感器,以检测驱动组件212和/或车辆202的周围环境的状况。作为示例而非限制,驱动组件212的传感器可以包括:一个或多个车轮编码器(例如,旋转编码器)以感测驱动组件的车轮的旋转,惯性传感器(例如,惯性测量单元、加速度计、陀螺仪、磁力计等)以测量驱动组件的取向和加速度,相机或其他图像传感器,超声传感器以声学地检测驱动组件的周围环境中的对象,激光雷达传感器,雷达传感器等。一些传感器,例如车轮编码器,可以对于驱动组件212是唯一的。在一些实例中,驱动组件212上的传感器可以重叠或补充车辆202的对应系统(例如,传感器206)。
54.驱动组件212可以包括车辆系统中的许多系统,包括:高压电池;马达,用于推进车辆;逆变器,将来自电池的直流电转换成交流电以供其他车辆系统使用;转向系统,包括转向马达和转向齿条(其可以是电动的);制动系统,包括液压致动器或电动致动器;悬架系统,包括液压组件和/或气动部件;稳定性控制系统,用于分配制动力以减轻牵引力的损失并维持控制;hvac系统;照明(例如,诸如用于照亮车辆的外部周围环境的头/尾灯的照明);以及一个或多个其他系统(例如,冷却系统、安全系统、车载充电系统、其他电气组件例如dc/dc转换器、高压接头、高压电缆、充电系统、充电端口等)。另外,驱动组件212可以包括驱动组件控制器,该驱动组件控制器可以接收和预处理来自传感器系统的数据并且控制各种车辆系统的操作。在一些实例中,驱动组件控制器可以包括一个或多个处理器以及与该一个或多个处理器通信耦合的存储器。存储器可以存储一个或多个组件以执行驱动组件212的各种功能。此外,驱动组件212也可以包括一个或多个通信连接,其使得相应的驱动组件能够与一个或多个其他本地或远程计算装置进行通信。
55.车辆计算装置204可以包括处理器218以及与该一个或多个处理器218通信耦合的存储器220。存储器220可以表示存储器108。计算装置214也可以包括处理器222和/或存储器224。处理器218和/或222可以是能够执行指令以处理数据并执行如本文所述的操作的任何合适的处理器。作为示例而非限制,处理器218和/或222可以包括一个或多个中央处理单元(cpu)、图形处理单元(gpu)、集成电路(例如,专用集成电路(asic))、门阵列(例如,现场可编程门阵列(fpga))、和/或任何其他装置或装置的一部分,其处理电子数据以将该电子数据转换成可以被存储在寄存器和/或存储器中的其他电子数据。
56.存储器220和/或224可以是非暂时性计算机可读介质的示例。存储器220和/或224可以存储操作系统和一个或多个软件应用、指令、程序、和/或数据以实现本文描述的方法以及归属于各种系统的功能。在各种实现方式中,存储器可以使用任何合适的存储器技术
来实现,例如静态随机存取存储器(sram)、同步动态ram(sdram)、非易失性/闪存型存储器、或任何其他类型的能够存储信息的存储器。本文描述的架构、系统、和单独的元件可以包括许多其他逻辑组件、程序化组件和物理组件,其中附图中示出的那些组件仅仅是与本文中的讨论有关的示例。
57.在一些实例中,存储器220和/或存储器224可以存储定位组件226、感知组件228、规划组件230、日志数据232、地图234、和/或系统控制器236,其中任何一个的零个或多个部分可以是硬件,例如gpu、cpu、和/或其他处理单元。定位组件226可以表示定位组件110,感知组件228可以表示感知组件112,规划组件230可以表示规划组件114,并且模拟系统238可以表示模拟系统116。
58.在至少一个示例中,定位组件226可以包括硬件和/或软件,以从传感器206接收数据以确定车辆202的位置、速度、和/或朝向(例如,x-位置、y-位置、z-位置、翻滚、俯仰、或偏航中的一个或多个)。例如,定位组件226可以包括和/或请求/接收环境的地图234,并且可以在地图234内连续地确定自主车辆的位置、速度、和/或朝向。在一些实例中,定位组件226可以利用slam(同时定位和映射)、clams(同时校准、定位和映射)、相对slam、束调整、非线性最小二乘优化和/或类似技术,以接收图像数据、激光雷达数据、雷达数据、imu数据、gps数据、车轮编码器数据等,以准确地确定自主车辆的位置、姿态、和/或速度。在一些实例中,定位组件226可以向车辆202的各种组件提供数据以确定自主车辆的初始位置,以用于生成轨迹和/或用于生成地图数据,如本文所讨论的。在一些示例中,定位组件226可以向感知组件228提供车辆202相对于环境的位置和/或朝向和/或与其相关联的传感器数据。
59.在一些实例中,感知组件228可以包括以硬件和/或软件实现的主感知系统和/或预测系统。感知组件228可以检测车辆202周围环境中的对象(例如,识别出对象存在)、将对象分类(例如,确定与检测到的对象相关联的对象类型)、分割传感器数据和/或环境的其他表示(例如,将传感器数据和/或环境的表示的一部分识别为与检测到的对象和/或对象类型相关联)、确定与对象相关联的特性(例如,识别与对象相关联的当前、预测、和/或先前的位置、航向、速度、和/或加速度的踪迹)等。通过感知组件228确定的数据被称为感知数据。
60.规划组件230可以从定位组件226接收车辆202的位置和/或朝向和/或从感知组件228接收感知数据,并且可以至少部分地基于这些数据中的任何数据来确定用于控制车辆202的操作的指令。在一些示例中,确定指令可以包括至少部分地基于与指令和其相关联的系统相关联的格式来确定指令(例如,用于控制自主车辆的运动的第一指令可以被格式化为系统控制器236和/或驱动组件212可以解析/导致被执行的消息和/或信号的第一格式(例如,模拟的、数字的、气动的、运动学的),用于发射器208的第二指令可以根据与其相关联的第二格式被格式化)。在一些示例中,其中规划组件230可以在模拟中包括硬件/软件在环(例如,用于测试和/或训练规划组件230),规划组件230可以生成指令,该指令可以被用于控制模拟车辆。在一些示例中,规划组件230可以是模拟系统238的一部分。
61.日志数据232可以包括通过车辆202(例如,通过感知组件228)收集/确定的传感器数据、感知数据、和/或场景标签,以及在操作期间由车辆202生成和/或发送的任何其他消息,包括但不限于,控制消息、误差消息等。在一些示例中,车辆202可以将日志数据232传输到计算装置214。计算装置214可以至少部分地基于日志数据来识别一个或多个场景,这也可以包括定义场景。例如,计算装置214可以确定环境中的环境布局、对象的数量、类型、和
配置,和/或将该定义和与该场景相关联的日志数据的一个或多个部分相关联。在一些示例中,日志数据232可以包括在车辆的操作期间在车辆102上生成的(历史)感知数据240。在附加或替代示例中,感知数据240可以包括在模拟期间生成的感知数据。
62.在一些示例中,计算装置214可以根据本文讨论的技术至少部分地基于日志数据232和感知数据240来确定智能体行为模型242。
63.模拟系统238可以在车辆202和/或计算装置214上操作(尽管图2将模拟系统238描绘为在计算装置214上操作)。如果模拟系统238在车辆上操作,那么模拟系统238可以提供关于对象可能采取的机动和/或路径的替代预测。这些替代预测可以作为输入被提供给规划组件230。模拟系统238可以与感知组件228并行运行和/或感知组件228可以是模拟系统238的一部分和/或向模拟系统238提供感知数据。
64.模拟系统238可以确定环境和/或车辆202的模拟。例如,模拟可以包括环境和/或车辆202的部分的位置、朝向、运动、和/或质量的表示。环境可以包括智能体,例如另一车辆、行人、植被、建筑物、标牌等。模拟可以被用于测试车辆202的各种组件的操作。在一些示例中,模拟可以至少部分地基于向感知组件228和/或规划组件230提供来自模拟的数据,而被用于测试自主车辆的感知组件228和/或规划组件230。
65.模拟系统238可以接收场景数据244和/或日志数据232。模拟系统332可以接收场景数据244和/或日志数据232以确定模拟246,其可以是场景的二维或三维表示。例如,三维表示可以包括与环境的一个或多个对象相关联的位置、朝向、几何数据(例如,多边形表示、数字丝网表示)和/或移动数据,和/或可以包括材料、照明、和/或照明数据,尽管在其他示例中该数据可以被省略。在一些示例中,场景数据244可以作为通过场景的组合迭代的一部分被程序化地生成,响应于与计算装置214的用户接口的交互(例如,响应于用户输入)被接收等,尽管在至少一个示例中,场景数据244可以至少部分地通过与日志数据(和/或智能体行为模型242)相关联的场景被定义。在一些示例中,场景数据244可以修改基于日志数据232生成的场景的特性。
66.场景数据244可以包括与场景相关联的环境的二维表示、其中包含的对象、以及与其相关联的特性,所有这些都可以是与日志数据相关联的场景的一部分。例如,场景数据244可以识别对象的位置、对象占据的区域、与对象相关联的速度和/或加速度、对象是静态的或动态的、与对象相关联的对象类型(例如,诸如“行人”、“骑自行车者”、“车辆”、“超大型车辆”、“交通灯”、“交通标牌”、“建筑物”、“道路”、“人行横道”、“人行道”的分类)、和/或与对象和/或对象类型相关联的其他运动学特质(例如,摩擦系数、弹性、延展性)。关于环境本身,场景数据可以识别环境的拓扑结构、与环境相关联的天气条件、照明状态(例如,晴天、多云、夜晚)、光源的位置等。在一些示例中,可以至少部分地基于地图234来生成与场景数据244相关联的拓扑结构、固定对象(例如,建筑物、树木、标牌)、位置和维度等。在一些示例中,场景数据244可以被用于实例化对象的三维表示,和/或模拟环境可以至少部分地基于地图数据(例如,其可以定义环境的拓扑结构;诸如标牌、植物和/或建筑物的固定物的位置和/或维度)和/或场景数据而被实例化。在一些示例中,智能体行为模型242可以与场景相关联,或者反之亦然。
67.在一些示例中,模拟传感器可以至少部分地基于模拟246来确定传感器数据248。例如,2019年9月24日提交并且被并入本文的美国专利申请第16/581,632号更详细地讨论
了这一点。在附加或替代示例中,模拟246本身可以包括模拟传感器数据。
68.感知组件228(例如,其副本,其可以包括软件和/或硬件,其可以包括硬件在环模拟)可以接收基于模拟246生成的模拟传感器数据248并且可以输出预测数据250,预测数据250可以包括模拟对象的预测机动和/或预测路径。感知组件228可以将预测数据250提供给规划组件230和/或智能体行为模型242,其可以是模拟系统238的一部分,或者当与智能体行为模型242相关联的类型的对象至少部分地基于场景数据244被实例化时而被模拟系统238调用。
69.智能体行为模型242可以根据本文讨论的技术来修改预测数据250以生成智能体机动和/或路径252。智能体机动和/或路径252可以被用于在模拟246中控制模拟对象的运动。换言之,智能体机动和/或路径252可以是模拟246的一部分,模拟系统238可以包括智能体控制组件,以用于控制模拟动态对象的运动,并且智能体控制组件可以从智能体行为模型242接收智能体机动和/或路径252。智能体机动和/或路径252可以被用于测试感知组件228和/或规划组件230。
70.测试和/或训练规划组件230可以至少部分地基于智能体机动/路径252。例如,模拟系统238可以提供安全且快速的方式对规划组件230如何对车辆202在操作期间可能遇到或可能未遇到的各种场景做出回应进行测试,并且确定规划组件230是否生成安全和/或有效的控制指令来导航场景。
71.在一些示例中,模拟系统238可以附加地或替代地存储规则集,并且可以至少部分地基于该规则集来确定规划组件230通过还是未能通过场景。规则集可以与场景数据244相关联。在一些示例中,模拟系统238可以与场景标识符和/或规划组件230通过还是未能通过的指示相关联地记录规划组件230的版本。在附加或替代示例中,模拟系统238可以确定与规划组件230的性能相关联的非二进制指示(例如,除了通过/未能通过指示之外或代替通过/未能通过指示的分数)。非二进制指示可以至少部分地基于与规则集相关联的一组权重。在至少一个示例中,规则集可以指定场景的每n次迭代的碰撞的最大数量,其中n是正整数。在一些示例中,规则集可以是事件检测系统(2019年11月13日提交的美国专利申请第16/682,971号,其全部内容被并入本文)和/或碰撞监控系统(2019年12月4日提交的美国专利申请第16/703,625号)的一部分或由其取代。
72.存储器220和/或224可以附加地或替代地存储映射系统、规划系统、乘车管理系统等。尽管感知组件228和/或规划组件230被示出为被存储在存储器220和/或224中,感知组件228和/或规划组件230可以包括处理器可执行指令、机器学习模型(例如,神经网络)和/或硬件。
73.如本文所描述,定位组件226、感知组件228、规划组件230、智能体行为模型242、模拟系统238、和/或系统200的其他组件可以包括一个或多个ml模型。例如,定位组件226、感知组件228、规划组件230、和/或模拟系统238可以各自包括不同的ml模型管道。在一些示例中,ml模型可以包括神经网络。示例性神经网络是生物启发式算法,其将输入数据传递通过一系列连接层以产生输出。神经网络中的每一层也可以包括另一个神经网络,或者可以包括任何数量的层(无论是否卷积)。如在本公开的上下文中可以理解的,神经网络可以利用机器学习,其可以指代此类算法的宽泛分类,其中基于学习的参数来生成输出。
74.尽管在神经网络的上下文中讨论,但是可以使用与本公开一致的任何类型的机器
学习。例如,机器学习算法可以包括但不限于:回归算法(例如,普通最小二乘回归(olsr)、线性回归、逻辑回归、逐步回归、多元自适应回归样条(mars)、局部估计散点图平滑(loess)),基于实例的算法(例如,岭回归、最小绝对收缩和选择算子(lasso)、弹性网络、最小角回归(lars)),决策树算法(例如,分类与回归树(cart)、迭代二分法3(id3)、卡方自动交互检测(chaid)、决策树桩、条件决策树),贝叶斯算法(例如,朴素贝叶斯、高斯朴素贝叶斯、多项式朴素贝叶斯、平均单依赖估计器(aode)、贝叶斯信念网络(bnn)、贝叶斯网络),聚类算法(例如,k均值、k中值、期望最大化(em)、层次聚类),关联规则学习算法(例如,感知机、反向传播、跳场网络、径向基函数网络(rbfn)),深度学习算法(例如,深度玻尔兹曼机(dbm)、深度信念网络(dbn)、卷积神经网络(cnn)、堆栈自动编码器),降维算法(例如,主成分分析(pca)、主成分回归(pcr)、部分最小二乘回归(plsr)、sammon映射、多维缩放(mds)、投影追踪、线性判别分析(lda)、混合判别分析(mda)、二次判别分析(qda)、灵活判别分析(fda)),集成算法(例如,提升方法、自举聚合(bagging)、adaboost、堆栈泛化(混合)、梯度提升机(gbm)、梯度提升回归树(gbrt)、随机森林)、svm(支持向量机)、监督学习、无监督学习、半监督学习等)。架构的附加示例包括神经网络,例如resnet-50、resnet-101、vgg、densenet、pointnet等。在一些示例中,本文讨论的ml模型可以包括pointpillars、second、自顶向下的特征层(例如,参见美国专利申请第15/963,833号,其全部内容被并入本文)、和/或voxelnet。架构延迟优化可以包括mobilenetv2、shufflenet、channelnet、peleenet等。在一些示例中,ml模型可以包括残差块,例如pixor。
75.存储器220可以附加地或者替代地存储一个或多个系统控制器236,其可以被配置为控制车辆202的转向、推进、制动、安全性、发射器、通信和其他系统。这些系统控制器236可以与驱动组件212的对应的系统和/或车辆202的其他组件进行通信和/或对其进行控制。例如,规划组件230可以至少部分地基于通过感知组件228生成的感知数据和/或模拟感知数据来生成指令,并将指令传输到系统控制器236,系统控制器236可以至少部分地基于该指令来控制车辆202的操作。
76.应当注意,虽然图2被示出为分布式系统,但是在替代示例中,车辆202的组件可以与计算装置214相关联和/或计算装置214的组件可以与车辆202相关联。也就是说,车辆202可以执行与计算装置214相关联的功能中的一个或多个,并且反之亦然。
77.示例过程
78.图3示出了用于生成一个或多个误差模型的示例过程300的图示流程图,该误差模型可以是用于动态对象的真实模拟的智能体行为模型的一部分。在一些示例中,该技术可以包括确定每个对象类型和/或每个场景的智能体行为模型。例如,该技术可以包括确定针对对象类型“车辆”的第一智能体行为模型,确定针对对象类型“行人”的第二智能体行为模型等。在附加或替代示例中,车辆行为模型可以包括与第一场景相关联的一个或多个第一误差模型、与第二场景相关联的一个或多个第二误差模型等。在一些示例中,示例过程300可以由计算装置214和/或车辆202的组件执行。请注意,下面描述的操作讨论了在单个时间步长计算的相关联的预测数据。可以针对在附加时间步长确定的感知数据重复这些操作。
79.在操作302,示例过程300可以包括根据本文讨论的任何技术,接收与对象相关联的预测数据。例如,自主车辆的预测组件可以从与自主车辆相关联的传感器接收传感器数据,并且通过感知流水线确定预测数据。预测数据可以包括环境中对象的第一预测机动304
和/或第一预测路径306和/或第二预测机动308和/或第二预测路径(由于空间限制而未标记)。例如,图3继续示出通过感知组件与示例场景100中收集的传感器数据相关联地生成的预测数据的示例表示。请注意,感知组件可以预测每个时间步长的机动(例如,在t1处直行,从t2到t6右转,t7到t
10
直行)。而且,请注意,可以按照相同或不同的时间间隔来预测机动和路径。例如,可以按照比机动更精细(更短)的时间间隔来预测路径(例如,每0.2秒预测路径一次,但可以每1秒预测机动一次,尽管可以设想任何其他时间间隔)。在一些示例中,感知组件可以与预测机动相关联地确定概率。尽管指示概率的方式可以变化(例如,0和1之间的数字、百分比、对数),但是在描绘的示例中,预测机动304与0.65的概率相关联并且预测机动308与0.35的概率相关联。在一些示例中,与和对象相关联的预测机动相关联的概率的总和可以为1,如在所描绘的示例中。
80.在一些示例中,感知组件可以附加地或替代地在车辆操作时确定场景数据。例如,感知组件可以生成场景数据结构,场景数据结构包括感知数据的至少一部分。数据结构可以指示环境的布局和/或环境中对象的数量、类型或配置。预测数据和/或场景数据结构可以被关联和/或被添加到日志数据。
81.请注意,图3将预测路径306描绘为环境中的离散位置,尽管可以理解预测路径306可以附加地或替代地是直线或曲线。例如,可以训练感知组件以输出与预测机动304相关联的运动图元(参见2019年7月19日提交的美国专利申请第16/517,506号,其全部内容通过引用被并入本文),例如大体向右的曲线,并且预测路径306可以包括与运动图元相关联的一个或多个参数,其修改运动图元的长度、曲率、终止等。无论如何,路径本身可以定义离散位置、直线、曲线、与曲线/直线相关联的参数、和/或与标准曲线/直线的偏差(例如,对象可能位于沿着曲线/直线的任何具体位置的与曲线/直线的距离或距离的偏差)。
82.在操作310,示例过程300可以包括根据本文讨论的任何技术,接收与场景相关联的日志数据。在一些示例中,日志数据可以包括对象所采取的实际路径312和/或实际机动314的指示。在所描绘的实例中,行人原路返回并进入道路,这反映在所描绘的实际路径312和实际机动314两者中。在一些示例中,实际机动314可以从日志数据被确定。例如,在车辆上或在车辆以外运行的感知组件可以基于通过车辆捕获的传感器数据来确定由对象执行的机动,并且该实际机动可以与传感器数据相关联作为日志数据。在附加或替代示例中,可以基于在计算装置接收到的输入(例如,来自人类、来自机器学习模型)来标记实际机动。
83.在操作316,示例过程300可以包括根据本文讨论的任何技术,确定预测数据与日志数据之间的差异。对于预测机动,这可以包括确定预测机动和实际机动对于同一时间步长是否不同,并且生成机动是相同还是不同的指示。可以保存实际机动与预测机动不同或相同的次数的记录(与相同或相似场景相关联,如通过传感器数据被分组到其中的聚类所标识的,如上所述)。在一些示例中,可以将预测的准确度表示为百分比,尽管也可以设想其他方法。对于不同的机动,指示可以附加地或替代地指示实际机动。对于路径数据,操作316可以包括确定与同一时间步长相关联的预测路径中的点与实际路径中的点之间的欧氏(或任何其他坐标空间)距离,无论那些点是离散位置还是沿着直线或曲线的位置。在一些示例中,路径差异可以附加地或替代地包括朝向和/或速度的差异,因为预测路径和/或实际路径可以附加地或替代地包括这样的数据。图3将对应于同一时间步长的预测位置与实际位置之间的欧氏距离描绘为直线。
84.在操作318,示例过程300可以包括根据本文讨论的任何技术,至少部分地基于在操作314确定的差异来确定与对象类型相关联的误差模型。操作318可以包括至少部分地基于在相同场景中的多个时间步长、相同场景的多个实例的一个或多个时间步长、相同场景的多个实例的环境中的相同位置、和/或类似情况中计算出的差异,与对象类型和/或场景相关联地确定概率分布。例如,误差模型可以指示当预测特定轨迹时与某个对象分类的对象相关联的预测轨迹正确和/或左转、右转、直行等时的时间百分比。为了进一步说明,特定误差模型可以与对象分类行人和特定预测轨迹相关联,例如保持行人的轨迹、左转等,以及所观察到的预测轨迹正确的概率。误差模型可以附加地或替代地按照位置和/或时间步长被计算。换言之,误差模型可以在场景中的每个位置或时间步长上有所不同。在一些示例中,误差模型可以附加地或替代地与自主车辆的状态相关联。换言之,误差模型可以根据车辆状态、预测轨迹和/或与被预测轨迹的对象相关联的对象分类被确定。
85.在一些示例中,操作318可以包括与预测机动相关联地确定误差模型(即,机动误差模型320),其指示特定场景中的特定对象类型的对象将遵循预测机动的概率。误差模型可以附加地或替代地指示与不同机动相关联的概率。例如,机动误差模型320可以包括车辆将进行第一机动的第一概率和/或第一概率分布、车辆将进行第二机动的第二概率和/或第二概率分布等。在附加或替代示例中,误差模型可以指示与机动转换相关联的概率(例如,从执行左转转换为停止、从左转转换为右转、从左转转换为直行)。
86.在一些示例中,操作318可以包括与预测路径相关联地确定误差模型(即,路径误差模型322),其指示特定场景中的特定对象类型的对象将遵循预测路径的概率。路径误差模型322可以指示某种对象类型的对象将偏离路径一段距离的概率。路径误差模型322可以包括多个这样的概率和距离。例如,路径误差模型322可以指示行人将被定位为与预测位置相距第一距离的第一概率、行人将被定位为与预测位置相距第一距离的第二概率等。
87.确定误差模型可以附加地或替代地包括至少部分地基于与误差模型相关联的场景数据对误差模型进行聚类以确定与类似场景相关联的误差模型。与同一聚类相关联的误差模型可以被关联和/或合并到表示该聚类的误差模型中。
88.在一些示例中,示例过程300可以在示例过程600之前作为在从一个或多个自主车辆接收到的多个日志,或至少与场景的一个或多个实例相关联的日志数据上的预计算步骤来完成,尽管在附加或替代示例中,示例过程300可以作为模拟的一部分发生(例如,在其中车辆回放同一车辆或不同车辆的日志数据)。
89.示例预测机动、示例预测路径、示例场景、以及示例场景
90.图4a示出了示例预测机动400、预测路径402、以及作为预测主题的对象所采取的示例实际路径402。在所描绘的示例中,预测路径402是连续的曲线而不是离散位置,尽管离散位置可以通过曲线在不同时间步长处被定义。在一些示例中,预测路径402的大体形状(即,标准曲线/直线)可以至少部分地基于预测机动400,并且预测路径402可以包括修改该大体形状的一个或多个参数(例如,增加/减少曲线的长度,这也可以改变速度/加速度,因为路径是随时间定义的;曲率等)。图4a还将日志数据描绘为黑色阴影圆,指示对象在不同时间步长所处的实际位置。在所描绘的示例中,预测机动是正确的,对象(在该示例中是车辆),执行了右转。再次注意,仅描绘了一个预测机动,但是感知组件可以与每个时间步长相关联地确定预测机动。在所描绘的示例中,我们可以假设图4a中描绘的整个预测区间的预
测机动是“右转”。
91.然而,对象的实际路径与预测路径402存在偏差。这部分地通过实际位置406与和实际位置406的相同时间步长相关联的预测路径402的一部分之间的距离(即,路径偏差404)来说明。在该场景中针对车辆机动生成的误差模型可以至少部分地基于正确的机动预测,并且在该场景中针对车辆路径生成的误差模型可以至少部分地基于路径偏差404。
92.图4b和4c分别示出了不同的示例场景、日志数据表示408和410(例如,包括在通过车辆202在操作期间收集到的日志数据中的传感器数据的自顶向下表示)、以及与其相关联的简化场景数据结构412和414。例如,图4b示出了场景的日志数据表示408,其中车辆202遇到四路交叉路口,两个车辆在交叉路口中,并且一个行人在日志数据表示408中指示的位置处的人行道上。在一些示例中,感知组件可以确定指示日志数据表示408的简化形式的场景数据结构412,场景数据结构412指示其过度简化的版本,场景数据结构412被描绘为标签“4路交叉路口中的2个车辆、1个行人”。例如,场景数据结构412可以包括环境布局(例如,道路行驶方向;专用车道的存在和位置;标牌/交叉路口控制的存在和位置;车道/交叉路口的存在、数量、和位置)的指示;环境中的存在、位置和/或静态对象;以及环境中动态对象的数量、分类、位置、朝向和/或速度。在一些示例中,误差模型可以至少部分地基于与其相关联的相应的场景数据结构被聚类。例如,多维缩放(mds)、主成分分析(pca)等可以被应用于场景数据,并且根据聚类算法,可以合并与相同聚类相关联的误差模型,和/或可以从与相同聚类相关联的误差模型中选择代表性误差模型。实际上,这可以导致从与指示车辆任一侧的行人的场景数据、在其中多个车辆在交叉路口的场景等相关联的误差模型中合并和/或确定代表性误差模型。例如,与图4b和4c相关联地生成的误差模型可以根据一些聚类技术被合并。
93.图4c类似地描绘了可以通过车辆202的感知组件生成的日志数据表示410和相关联的(简化的)场景数据结构414。
94.注意,在至少一个示例中,至少两组误差模型可以与图4b和图4c中描绘的场景相关联地被生成,尽管更多或更少的误差模型可以被确定。例如,场景包括两种不同的对象类型,因此可以针对对象类型“车辆”生成机动误差模型/路径误差模型对,针对对象类型“行人”生成另一个对。可以与单个对象类型相关联地创建更多或更少的误差模型(例如,其中融合了机动误差模型和路径误差模型,其中针对其他预测数据添加了其他误差模型,例如用于明确阐明对象的对象变形)。在附加或替代示例中,可以生成至少四组误差模型,每个车辆类型和每个场景一组误差模型,从而在两个场景中存在的两个类型的对象之间产生四组。
95.在附加或替代示例中,环境中的每个对象类型、场景、和/或位置或场景中的时间步长可以有一组误差模型。例如,图5a-5c示出了与对象和/或场景相关联的误差模型可以至少部分地基于对象在环境中的位置/对象所采取的动作而进行改变的方式。图5a-5c示出了可以是与对象类型“车辆”和所描绘的场景相关联的智能体行为模型的一部分的机动误差模型。注意,与第一时间/位置(可能是未来时间/位置)相关联的图5a中的误差模型500的宽度比由在随后时间的误差模型502和504指示的概率分布更宽。该宽度可以指示在第一时间/位置的对象506的位置、航向、朝向和/或机动,对象506可以更有可能执行预测组件不太可能预期的机动。例如,这样的机动可以是某种反常行为,例如在车辆202前面突然转向。
96.然而,在图5b中,在对象506开始在车辆202前面执行转弯之后,与其相关联的机动误差模型包括更窄的概率分布,因为对象506将更可能完成转弯,更新的预测数据可以对此做出预测。这种变窄趋势随着图5c中的误差模型504增加。
97.请注意,虽然图3和图5a-5c将误差模型描绘为二维概率分布,但是误差模型可以包括三维或更多维概率分布。
98.示例模拟过程
99.图6示出了用于在模拟环境中真实地模拟动态对象的运动(包括异常行为)的示例过程600的流程图。示例过程600可以包括两个子过程:控制模拟自主车辆,示例子过程602;以及控制模拟动态对象,示例子过程604。在一些示例中,自主车辆的感知组件和/或规划组件(或其副本,其可以包括使用硬件在环模拟)可以完成示例子过程602,而模拟系统和/或智能体行为模型可以完成示例子过程604。注意,可以作为子过程602的一部分完成的操作被描绘在图6的左侧,而可以作为子过程604的一部分完成的操作被描绘在图6的右侧。请注意,框的竖直间距并不意指操作的相对时间。在附加或替代示例中,模拟系统和/或智能体行为模型可以完成示例子过程602和604的全部或部分。在附加或替代示例中,示例过程600不包括子过程,至少如根据附图划分的。在一些实例中,车辆计算装置204和/或计算装置214可以各自或单独地完成示例过程600的全部或部分。
100.在一些示例中,示例过程600可以在自主车辆的实时操作期间通过模拟系统执行,其中下文讨论的模拟车辆和环境对应于真实自主车辆和自主车辆周围的真实环境。换言之,可以对于真实的、实时场景执行示例过程600。在这样的示例中,模拟系统可以输出替代预测(例如,替代预测机动/路径)。在附加或替代示例中,示例过程600可以在完全或部分合成场景中通过模拟系统执行,其中场景分别至少部分地基于场景指令被完全地生成或使用传感器数据被部分地生成。合成场景可以被实时或以合成时间执行。例如,部分地合成的场景可以至少部分地基于实时传感器数据或基于日志数据来生成场景数据。
101.一些技术可以包括运行场景的多个模拟并且使动态对象按照智能体行为模型规定的发生率采取异常动作。在附加或替代示例中,动态对象可以至少部分地基于对智能体行为模型的概率分布进行采样而采取异常动作。
102.在操作606,示例过程600(和/或示例子过程604)可以包括根据本文讨论的任何技术,接收场景数据。例如,简单的模拟组件可以生成场景数据。在附加或替代数据中,场景数据可以包括传感器数据、场景指令和/或场景数据结构。在一些示例中,场景数据结构可以包括环境中的静态对象、动态对象和/或模拟车辆的位置、朝向和/或特性,其可以对应自主车辆的实时操作和/或可以对应自主车辆的模拟操作。在一些示例中,自主车辆的规划组件可以生成指令,用于以对模拟不可知的方式控制模拟车辆(例如,由规划组件生成的指令可以与针对类似的真实情况生成的指令相同)。可以按这种方式测试规划组件的操作。在一些示例中,组件可以将由规划组件生成的指令转换为用于控制模拟环境中的模拟车辆的指令(例如,更新与模拟车辆相关联的模拟状态,该模拟状态可以包括与模拟车辆相关联的位置、朝向、速度、加速度、航向等)。
103.场景数据可以附加地或替代地包括与一个或多个对象相关联的对象类型的指示和/或与一个或多个对象相关联的特性的指示(例如,位置、速度、加速度、航向、材料类型、运动学系数)。本文讨论的任何数据都可以是与日志数据的一部分相关联的场景数据结构
的一部分。场景数据结构可以包括二维图像、发布-订阅消息等。
104.在操作608,示例过程600(和/或子过程604)可以包括根据本文讨论的任何技术,至少部分地基于场景数据来实例化模拟环境。操作608可以包括至少部分地基于与对象类型相关联的一组模板模型来程序化地生成模拟环境。例如,该组模板模型可以包括三个不同的客车模型、四个不同的行人模型等。可以存在任何数量的不同模型。在一些示例中,模板模型可以包括表面没有任何纹理的对象的三维模型,虽然在附加或替代示例中,该模型可以包括纹理。
105.模板模型可以包括多边形网格、三角形网格等。在一些示例中,与动态对象相关联的模型可以具有比与静态对象相关联的模型更高的多边形计数。在一些示例中,模拟环境可以包括表面模型并且缺少照明和/或纹理。在附加或替代示例中,模拟环境可以包括照明和/或纹理,但是本文描述的技术在没有照明和/或纹理的情况下依然有效。模拟环境可以包括模拟车辆的模型。在一些示例中,实例化模拟环境的环境部分可以至少部分地基于日志数据、场景数据和/或地图数据,并且环境中的对象可以至少部分地基于作为场景数据的一部分被接收到的指令(例如,至少部分地基于用户选择和/或与用户接口的交互而生成的指令、程序化地生成的指令)。
106.在操作610,示例过程600(和/或子过程602)可以包括根据本文讨论的任何技术,接收模拟传感器数据。例如,感知组件可以至少部分地基于通过模拟系统生成的模拟(例如,至少部分地基于操作616、618和/或620)来接收模拟传感器数据。
107.在操作612,示例过程600(和/或子过程602)可以包括根据本文讨论的任何技术,至少部分地基于模拟传感器数据来预测对象的机动和/或路径。例如,感知组件可以至少部分地基于模拟传感器数据来确定(模拟)对象的预测机动和/或预测路径。
108.在操作614,示例过程600(和/或子过程602)可以包括根据本文讨论的任何技术,至少部分地基于感知数据来确定用于控制模拟(自主)车辆的轨迹。例如,感知数据可以在操作612由感知组件生成,并且感知数据可以包括在操作612确定的预测数据。
109.在操作616,示例过程600(和/或子过程604)可以包括根据本文讨论的任何技术,至少部分地基于与对象类型和/或场景相关联的智能体行为模型来修改对象的预测机动和/或路径。操作616可以包括操作618和/或操作620。在一些示例中,操作616可以包括取回与对象类型和/或场景相关联的智能体行为模型并且使用该智能体行为模型来修改预测数据。在其中智能体行为模型包括数据的多个维度(例如,与不同场景、位置、机动相关联的不同多维误差模型)的示例中,操作616可以包括选择对应于场景和/或预测机动/路径的智能体行为模型的误差模型。
110.在操作618处,示例过程600(和/或子过程604)可以包括根据本文讨论的任何技术,对误差模型进行采样以确定从预测机动和/或预测路径的改变。操作618可以包括对与对象类型和/或场景(和/或环境/场景中的位置/时间)相关联的智能体行为模型的一部分的误差模型随机地进行采样。概率分布的采样部分可以指示与预测机动/位置的偏差。对误差模型进行采样可以包括至少部分地基于预测机动和误差模型(例如,基于预测对象将继续直行,与这样的预测和该对象和/或自主车辆状态相关联的误差模型可以指示继续直行的概率为55%、右转的概率为18%、停车的概率为15%、左转的概率为12%;可以至少部分地基于这些概率来做出随机选择)对与对象的状态相关联的潜在机动进行加权采样。
111.例如并且取决于概率分布的形状,导致具有低概率的机动的样本可以和与预测机动/位置的急剧偏离相关联,并且也可能和与规范行为的急剧偏离相关联。与机动误差模型相关联的不同样本可以导致维持预测机动,但是在分布的尾部中或接近分布的尾部的其他概率可以导致将机动改变为不同的机动(例如,从直线向前行驶到猛然停止、突然转向某个方向)。类似地,对导致高概率的路径误差模型进行采样可以导致不修改预测路径或仅略微横向地变化模拟对象的位置。而尾部行为或接近尾部行为可以包括与预测路径的较大横向偏离。
112.在附加或替代示例中,操作618可以包括至少部分地基于误差模型来确定多个预测机动并且从多个预测机动中选择(通过与至少部分地基于误差模型的多个预测机动相关联的一组加权概率)多个预测机动中的一个。例如,感知组件可以预测动态对象可以执行右转并且可以预测对象将遵循的曲线。智能体行为模型可以对机动误差模型进行采样并接收规范概率,并且因此将机动保持为右转,但是对路径误差模型进行采样可以导致与异常行为相关联的概率。确定用于控制模拟对象的修改的机动/路径可以包括确定指令,该指令使模拟对象仍然执行右转但是转弯可能非常紧或非常松,导致模拟对象离开车道,进入专用车道、进入人行道、越过中心线等。如果采样的结果是反转的,那么该示例可以被反转。机动可以发生巨大改变,正在执行转弯的车辆可以突然转向相反的方向,但是如果路径概率是规范的,那么车辆可能不会与改变后的机动有很大的变化。在一些示例中,操作618可以包括如果采样概率达到或超过阈值概率,那么修改机动和/或路径。
113.附加地或替代地,操作618可以包括至少部分地基于路径误差模型来确定与机动相关联的路径偏差。在一些示例中,机动可以定义标准直线或曲线,并且偏差可以是距该曲线的横向距离(例如,与曲线正交的距离)。同样,确定偏差可以至少部分地基于随机加权选择、至少部分地基于通过路径误差模型指示的概率。在一些示例中,修改的机动可以按第一速率(例如,按1hz、0.5hz、10hz)被确定,而路径中的偏差可以按与第一速率相同或不同的第二速率(例如,1hz、10hz、100hz、200hz)被确定。在至少一个示例中,第一速率可以低于第二速率(例如,第一速率为1hz,而第二速率为200hz),使得可以存在与单个修改的机动相关联的多个偏差,使得车辆可以从修改的机动横向地漂移。换言之,可以每秒选择一次机动,并且可以比一秒更频繁地修改与该机动相关联的横向位置。
114.在操作620,示例过程600(和/或子过程604)可以附加地或替代地包括根据本文讨论的任何技术,跟踪先前模拟的场景并且选择对预测机动和/或预测路径的修改以模拟通过智能体行为模型建模的异常行为的发生率。例如,操作620可以包括跟踪先前的修改并分发选择的修改以符合与对象类型和场景相关联的误差模型,使得改变预测机动和/或预测路径将类似于现实世界中的对象而改变对象的行为。换言之,智能体行为模型可以被用于强制异常行为发生。例如,操作616可以使用随机采样(操作618),即使智能体行为模型指示某种异常行为在场景的n个实例中发生一次,但如果在第n次迭代时操作618将导致非异常行为,那么操作620也可以强制使修改包括异常行为,这可以包括丢弃操作618的结果并直接选择该行为用于控制模拟对象。
115.在操作622,示例过程600(和/或子过程604)可以包括根据本文讨论的任何技术,至少部分地基于修改的机动和/或修改的路径来控制模拟对象,该修改的机动和/或修改的路径是至少部分地基于操作618确定的。
116.示例条款
117.a、一种方法,包括:从自主车辆接收日志数据,包括:传感器数据,其来自与穿越环境的自主车辆相关联的传感器;对象的第一检测,其与第一时间相关联;对象的第二检测,其与第二时间相关联并且指示对象在第二时间的位置和由对象执行的机动;以及在第二时间之前的时间生成的对象将要执行的预测机动和对象在第二时间的预测位置;至少部分地基于确定预测机动与由对象执行的机动之间的差异以及预测位置与对象在第二时间的位置之间的距离来确定机动误差模型和路径误差模型;在模拟环境中实例化对象的模拟表示;确定对象的模拟表示的预测移动;以及至少部分地基于使用机动误差模型和路径误差模型修改预测移动来控制对象的模拟表示的运动。
118.b、段落a的方法,其中,修改预测移动包括:确定与模拟环境相关联的一个或多个参数;至少部分地基于一个或多个参数、预测移动和机动误差模型,确定与预测相关联的误差;以及至少部分地基于误差来更改预测移动。
119.c、段落a或b的方法,其中,修改预测移动包括以下各项中的至少一项:至少部分地基于由机动误差模型指示并且与修改的机动相关联的第一概率,从与机动误差模型相关联的多个机动中确定修改的机动;或者至少部分地基于由路径误差模型指示的概率,至少部分地基于确定与修改的机动的横向偏差来确定修改的路径。
120.d、段落a-c中任一项的方法,其中:修改预测移动包括确定修改的机动;并且修改的机动包括以下各项中的至少一项的指示:执行转弯;执行车道变更;倒车;停车;执行超车机动;进入或离开道路、人行横道、人行道或隔离车道;保持当前的运动;或者执行停止。
121.e、段落a-d中任一项的方法,其中:确定机动误差模型包括:至少部分地基于日志数据,确定其中预测机动与机动相似的实例的第一数量;并且至少部分地基于日志数据,确定与由对象执行的不同机动而不是预测机动相关联的实例的第二数量;以及确定路径误差模型包括:至少部分地基于日志数据,确定对象位于与和预测机动相关联的轨迹相距距离处的次数的第三数量。
122.f、段落a-e中任一项的方法,其中,确定机动误差模型或路径误差模型中的至少一个还包括:至少部分地基于传感器数据,确定与环境相关联的一个或多个参数;以及至少部分地基于一个或多个参数来确定多个误差模型的聚类。
123.g、一种系统,包括:一个或多个处理器;以及存储器,其存储处理器可执行指令,处理器可执行指令当由一个或多个处理器执行时,使系统执行操作,该操作包括:从自主车辆接收日志数据,包括:传感器数据,其来自与穿越环境的自主车辆相关联的传感器;对象的第一检测,其与第一时间相关联;对象的第二检测,其与第二时间相关联并且指示对象在第二时间的位置和由对象执行的机动;以及在第二时间之前的时间生成的对象将要执行的预测机动和对象在第二时间的预测位置;至少部分地基于确定预测机动与由对象执行的机动之间的差异以及预测位置与对象在第二时间的位置之间的距离来确定机动误差模型和路径误差模型;在模拟环境中实例化对象的模拟表示;确定对象的模拟表示的预测移动;以及至少部分地基于使用机动误差模型和路径误差模型修改预测移动来控制对象的模拟表示的运动。
124.h、段落g的系统,其中,修改预测移动包括:确定与模拟环境相关联的一个或多个参数;至少部分地基于一个或多个参数、预测移动和机动误差模型,确定与预测相关联的误
差;以及至少部分地基于误差来更改预测移动。
125.i、段落g或h的系统,其中,修改预测移动包括以下各项中的至少一项:至少部分地基于由机动误差模型指示并且与修改的机动相关联的第一概率,从与机动误差模型相关联的多个机动中确定修改的机动;或者至少部分地基于由路径误差模型指示的概率,至少部分地基于确定与修改的机动的横向偏差来确定修改的路径。
126.j、段落g-i中任一项的系统,其中:修改预测移动包括确定修改的机动;并且修改的机动包括以下各项中的至少一项的指示:执行转弯;执行车道变更;倒车;停车;执行超车机动;进入或离开道路、人行横道、人行道或隔离车道;保持当前的运动;或者执行停止。
127.k、段落g-j中任一项的系统,其中:确定机动误差模型包括:至少部分地基于日志数据,确定其中预测机动与机动相似的实例的第一数量;并且至少部分地基于日志数据,确定与由对象执行的不同机动而不是预测机动相关联的实例的第二数量;以及确定路径误差模型包括:至少部分地基于日志数据,确定对象位于与和预测机动相关联的轨迹相距距离处的次数的第三数量。
128.l、段落g-k中任一项的系统,其中,确定机动误差模型或路径误差模型中的至少一个还包括:至少部分地基于传感器数据,确定与环境相关联的一个或多个参数;以及至少部分地基于一个或多个参数来确定多个误差模型的聚类。
129.m、段落g-l中任一项的系统,其中,操作还包括以下中的至少一个:至少部分地基于模拟表示的运动来控制模拟车辆或自主车辆。
130.n、一种非暂时性计算机可读介质,其存储处理器可执行指令,处理器可执行指令当由一个或多个处理器执行时,使一个或多个处理器执行操作,该操作包括:从自主车辆接收日志数据,包括:传感器数据,其来自与穿越环境的自主车辆相关联的传感器;对象的第一检测,其与第一时间相关联;对象的第二检测,其与第二时间相关联并且指示对象在第二时间的位置和由对象执行的机动;以及在第二时间之前的时间生成的对象将要执行的预测机动和对象在第二时间的预测位置;至少部分地基于确定预测机动与由对象执行的机动之间的差异以及预测位置与对象在第二时间的位置之间的距离来确定机动误差模型和路径误差模型;在模拟环境中实例化对象的模拟表示;确定对象的模拟表示的预测移动;以及至少部分地基于使用机动误差模型和路径误差模型修改预测移动来控制对象的模拟表示的运动。
131.o、段落n的非暂时性计算机可读介质,其中,修改预测移动包括:确定与模拟环境相关联的一个或多个参数;至少部分地基于一个或多个参数、预测移动和机动误差模型,确定与预测相关联的误差;以及至少部分地基于误差来更改预测移动。
132.p、段落o的非暂时性计算机可读介质,其中,修改预测移动包括以下各项中的至少一项:至少部分地基于由机动误差模型指示并且与修改的机动相关联的第一概率,从与机动误差模型相关联的多个机动中确定修改的机动;或者至少部分地基于由路径误差模型指示的概率,至少部分地基于确定与修改的机动的横向偏差来确定修改的路径。
133.q、段落n-p中任一项的非暂时性计算机可读介质,其中:修改预测移动包括确定修改的机动;并且修改的机动包括以下各项中的至少一项的指示:执行转弯;执行车道变更;倒车;停车;执行超车机动;进入或离开道路、人行横道、人行道或隔离车道;保持当前的运动;或者执行停止。
134.r、段落n-q中任一项的方法,其中:确定机动误差模型包括:至少部分地基于日志数据,确定其中预测机动与机动相似的实例的第一数量;并且至少部分地基于日志数据,确定与由对象执行的不同机动而不是预测机动相关联的实例的第二数量;以及确定路径误差模型包括:至少部分地基于日志数据,确定对象位于与和预测机动相关联的轨迹相距距离处的次数的第三数量。
135.s、段落n-r中任一项的非暂时性计算机可读介质,其中,确定机动误差模型或路径误差模型中的至少一个还包括:至少部分地基于传感器数据,确定与环境相关联的一个或多个参数;以及至少部分地基于一个或多个参数来确定多个误差模型的聚类。
136.t、段落n-s中任一项的非暂时性计算机可读介质,其中,操作还包括以下中的至少一个:至少部分地基于模拟表示的运动来控制模拟车辆或自主车辆。
137.虽然上述示例条款是关于一种具体实施方式进行描述的,但应理解,在本文的上下文中,示例条款的内容还可以经由方法、装置、系统、计算机可读介质和/或另一实施方式来实现。另外,示例a-t中的任何一个可以单独地实现或与示例a-t中的任何其他一个或多个组合来实现。
138.结论
139.虽然已经用特定于结构特征和/或方法动作的语言描述了本发明的主题,但是应当理解的是,所附权利要求书中限定的主题不一定限于上述特定特征或动作。相反,该特定特征和动作被公开作为实施权利要求书的示例形式。
140.本文描述的组件表示可以被存储在任何类型的计算机可读介质中并且可以在软件和/或硬件中被实现的指令。上文描述的所有方法和过程可以体现在通过一个或多个计算机或处理器、硬件或其一些组合执行的软件代码组件和/或计算机可执行指令中并且经由其被完全自动化。一些或所有方法可以替代地体现在专门的计算机硬件中。
141.本文讨论的过程中的至少一些被示出为逻辑流程图,其每一个操作表示可以在硬件、软件或其组合中被实现的操作序列。在软件的上下文中,操作表示存储在一个或多个非暂时性计算机可读存储介质上的计算机可执行指令,当由一个或多个处理器执行时,使计算机或自主车辆执行所述操作。通常,计算机可执行指令包括执行具体功能或实现具体抽象数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序并不旨在被解释为限制,并且任何数量的所描述的操作可以按任何顺序和/或并行地组合以实现过程。
142.除非另有明确说明,诸如“可以”、“能够”、“可”或“可能”等条件性语言在上下文中被理解为表示某些示例包括某些特征、元件和/或步骤,而其他示例不包括。因此,这样的条件性语言通常不旨在暗示某些特征、元件和/或步骤以任何方式对于一个或多个示例是必需的,或者一个或多个示例必须包括用于在有或没有用户输入或提示的情况下做出决定的逻辑,在任何具体示例中是否包括或将要执行某些特征、元件和/或步骤。
143.除非另有明确说明,诸如短语“x、y或z中的至少一个”的连接性语言应被理解为表示项目、术语等可以是x、y或z中任一个,或其任何组合,包括每个元件的倍数。除非明确描述为单数,否则“一”表示单数和复数。
144.本文描述和/或在附图中描绘的流程图中的任何例程描述、元件或块应被理解为潜在地表示代码的模块、区段或部分,其包括一个或多个计算机可执行指令,用于实现例程中的特定逻辑功能或元件。替代实施方式被包括在本文描述的示例的范围内,其中元件或
功能可以被删除,或不按照所示出或讨论的顺序执行,包括基本上同步地、以相反的顺序、具有附加操作或省略操作,这取决于所涉及的功能,正如本领域的技术人员所理解的那样。注意,术语基本上可以指示范围。例如,基本上同时可以指示两个活动在彼此的时间范围内发生,基本上相同的维度可以指示两个元件具有在彼此范围内的维度等。
145.可以对上文描述的示例做出许多变化和修改,其中的元件将被理解为存在于其他可接受的示例中。所有这样的修改和变化都旨在被包括在本文本公开的范围内并受所附权利要求书保护。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1