掌桥专利:专业的专利平台
掌桥专利
首页

使用线性时间逻辑的自主运载工具操作

文献发布时间:2023-06-19 12:02:28


使用线性时间逻辑的自主运载工具操作

相关申请的交叉引用

本申请要求于2019年6月4日提交的美国临时申请62/856,875的权益,其全部内容通过引用并入本文。

技术领域

本说明书大体上涉及用于运载工具的操作的路径规划。

背景技术

运载工具从初始地点到最终目的地的操作通常需要用户或运载工具的决策系统选择从初始地点到最终目的地通过道路网络的路线。选择复杂的路线可能需要许多决策,使得传统的路线选择算法不切实际。

发明内容

提供了使用线性时间逻辑的自主运载工具(AV)操作的技术。该技术包括使用运载工具的一个或多个处理器来存储定义用于操作运载工具的操作约束的线性时间逻辑表达式。运载工具位于第一时空地点处。一个或多个处理器用于接收运载工具的第二时空地点。一个或多个处理器用于识别用于将运载工具从第一时空地点操作到第二时空地点的运动段。一个或多个处理器基于运动段确定线性时间逻辑表达式的值。一个或多个处理器基于所确定的线性时间逻辑表达式的值来生成用于根据运动段操作运载工具的操作度量。

在实施例中,运载工具的一个或多个处理器接收用于操作运载工具的一个或多个操作约束。一个或多个操作约束中的各个操作约束由相应的线性时间逻辑表达式定义。一个或多个处理器确定用于操作运载工具的一个或多个运动段。一个或多个运动段中的各个运动段连接两个不同的时空地点。一个或多个处理器基于时间模态算子确定运载工具的状态序列的一个或多个线性时间逻辑表达式的值。一个或多个处理器基于一个或多个线性时间逻辑表达式的值将操作度量分配给一个或多个运动段。一个或多个处理器选择一个或多个运动段中的运动段。所选择的运动段具有低于阈值的所分配的操作度量。运载工具的控制模块根据所选择的运动段操作运载工具。

在实施例中,运载工具的一个或多个处理器接收多个运动段。多个运动段中的各个运动段将第一时空地点连接到第二时空地点。一个或多个处理器生成Kripke结构,该Kripke结构包括与第一时空地点相对应的第一顶点。第二顶点与第二时空地点相对应。Kripke结构包括多个边。多个边中的各个边与多个运动段中的相应运动段相对应。一个或多个处理器接收定义用于操作运载工具的操作约束的线性时间逻辑表达式。对于Kripke结构内的多个边中的各个边:响应于在第一顶点或第二顶点处确定的线性时间逻辑表达式的值为假,一个或多个处理器将操作度量分配给与边相对应的运动段。一个或多个处理器选择与最低操作度量相关联的运动段以操作运载工具。

在实施例中,运载工具的一个或多个处理器存储表示用于操作运载工具的运动段的Kripke结构。运动段包括多个时空地点。对于多个时空地点中的各个时空地点:一个或多个处理器基于Kripke结构评价线性时间逻辑表达式。线性时间逻辑表达式定义用于根据运动段操作运载工具的操作约束。响应于线性时间逻辑表达式的值在时空地点处改变,一个或多个处理器在时空地点处在Kripke结构内插入地点标记,以将运动段划分为两个不同的运动段。一个或多个处理器向基于地点标记的两个不同运动段中的各个运动段分配操作度量。一个或多个处理器基于操作度量确定用于操作运载工具的轨迹。

在一个实施例中,运载工具的一个或多个处理器存储同运载工具与对象的碰撞相对应的线性时间逻辑表达式。一个或多个处理器接收用于操作运载工具的第一运动段。一个或多个处理器基于第一运动段确定线性时间逻辑表达式的第一值。响应于所确定的第一值指示运载工具与对象的碰撞的第一概率大于阈值,运载工具的控制模块根据不同于第一运动段的第二运动段来操作运载工具。基于第二运动段确定的线性时间逻辑表达式的第二值指示运载工具与对象的碰撞的第二概率小于阈值。

这些和其它方面、特征和实现可以表示为用于进行功能的方法、设备、系统、组件、程序产品、手段或步骤以及其它方式。

这些和其它方面、特征和实现将从包括权利要求的以下描述变得明显。

本文公开的实施例的益处和优点包括AV沿着成本降低的轨迹的导航使得乘客和行人的安全性的增加、对AV的磨损的降低、行驶时间的减少和行驶距离的减少。基于交通规则生成优选轨迹增加了AV、道路网络上的其它运载工具和行人的安全性。当AV确定为潜在轨迹将违反较高等级的操作约束时,终止潜在轨迹的评价以减少计算时间。这里公开的实施例避免了根据交通规则生成加权产品自动机的高计算成本。因此,针对移动运载工具实时进行成本降低的轨迹的生成。

附图说明

图1示出根据一个或多个实施例的具有自主能力的自主运载工具(AV)的示例。

图2示出根据一个或多个实施例的示例“云”计算环境。

图3示出根据一个或多个实施例的计算机系统。

图4示出根据一个或多个实施例的AV的示例架构。

图5示出根据一个或多个实施例的感知模块可以使用的输入和输出的示例。

图6示出根据一个或多个实施例的LiDAR系统的示例。

图7示出根据一个或多个实施例的操作中的LiDAR系统。

图8示出根据一个或多个实施例的LiDAR系统的操作的附加细节。

图9示出根据一个或多个实施例的规划模块的输入和输出之间的关系的框图。

图10示出根据一个或多个实施例的路径规划中所使用的有向图。

图11示出根据一个或多个实施例的控制模块的输入和输出的框图。

图12示出根据一个或多个实施例的控制器的输入、输出和组件的框图。

图13示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具操作的操作环境的框图。

图14-图15示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具操作的示例。

图16-图20示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具操作的处理。

具体实施方式

在以下描述中,为了解释的目的,阐述了许多具体细节,以便提供对本发明的透彻理解。然而,本发明可以在没有这些具体细节的情况下实施将是明显的。在其它实例中,众所周知的构造和装置是以框图形式示出的,以避免不必要地使本发明模糊。

在附图中,为了便于描述,示出了示意要素(诸如表示装置、模块、指令块和数据要素的那些要素)的具体排列或次序。然而,本领域技术人员应当理解,附图中示意要素的具体次序或排列并不意在意味着要求特定的处理次序或序列、或处理过程的分离。此外,在附图中包含示意要素并不意在意味着在所有实施例中都需要这种要素,也不意在意味着由这种要素表示的特征不能包括在实施例中或不能在实施例中与其它要素结合。

此外,在附图中,连接要素、诸如实线或虚线或箭头用于例示两个或更多个其它示意要素之间的连接、关系或关联,没有任何此类连接要素并不意在意味着不能存在连接、关系或关联。换句话说,一些要素之间的连接、关系或关联未在附图中示出,以便不使本公开内容模糊。此外,为了便于例示,使用单个连接要素来表示要素之间的多个连接、关系或关联。例如,如果连接要素表示信号、数据或指令的通信,本领域技术人员应理解,这种要素表示影响通信可能需要的一个或多个信号路径(例如,总线)。

现在将详细参考实施例,其示例在附图中例示出。在以下的详细描述中,阐述了许多具体细节,以便提供对所描述的各种实施例的透彻理解。然而,对于本领域的普通技术人员来说将明显的是,可以在没有这些具体细节的情况下实施所描述的各种实施例。在其它情况下,没有详细描述众所周知的方法、程序、组件、电路和网络,以便不会不必要地使实施例的方面模糊。

下面描述的若干特征各自可以彼此独立地使用,也可以与其它特征的任何组合一起使用。然而,任何个别特征可能不能解决以上所讨论的任何问题,或者只能解决以上所讨论的问题之一。以上所讨论的一些问题可能不能通过本文所描述的任何一个特征得到充分解决。虽然提供了标题,但在本说明书的其它地方也可以找到与具体标题有关但在具有该标题的部分中未找到的信息。本文根据以下概要描述实施例:

1.总体概述

2.系统概述

3.自主运载工具架构

4.自主运载工具输入

5.自主运载工具规划

6.自主运载工具控制

7.使用线性时间逻辑的AV操作的操作环境

8.使用线性时间逻辑的AV操作的示例

9.使用线性时间逻辑的AV操作的处理

总体概述

位于初始时空地点的自主运载工具(AV)存储定义用于操作AV的操作约束的线性时间逻辑表达式。线性时间逻辑表达式是具有参考时间的模态的模态时间逻辑表达式。操作约束例如是交通规则或旨在增加AV中乘坐的乘客的乘客舒适度水平的规则。AV接收AV要行驶至的目的地时空地点。例如,AV可以从AV中乘坐的乘客或从远程服务器接收用于指定目的地时空地点的指示。AV使用一个或多个处理器来识别用于将AV从初始时空地点操作到目的地时空地点的运动段。运动段是行驶车道的一部分。此外,运动段指定例如AV在行驶车道上行驶时的速率。AV基于运动段确定线性时间逻辑表达式的值。例如,AV评价线性时间逻辑表达式以确定是否将违反操作约束。AV基于所确定的线性时间逻辑表达式的值来生成用于根据运动段操作AV的操作度量。操作度量是违反操作约束的成本。因此,AV生成从初始时空地点到目的地时空地点的降低的成本轨迹。

系统概述

图1示出具有自主能力的自主运载工具100的示例。

如本文所使用的,术语“自主能力”是指一种功能、特征或设施,该功能、特征或设施使运载工具能够部分地或完全地操作,而无需实时的人类干预,包括但不限于完全自主运载工具、高度自主运载工具和有条件自主运载工具。

如本文所使用的,自主运载工具(AV)是一种具有自主能力的运载工具。

如本文所使用的,“运载工具”包括货物或人员的运输方式。例如,小汽车、公共汽车、火车、飞机、无人机、卡车、船只、舰艇、潜水器、飞船等。无人驾驶的小汽车是运载工具的示例。

如本文所使用的,“轨迹”是指将AV从第一时空地点操作到第二时空地点的路径或路线。在实施例中,第一时空地点被称为初始地点或起始地点,第二时空地点被称为目的地、最终地点、目标、目标位置或目标地点。在一些示例中,轨迹由一个或多个路段(例如,道路的数段)组成,并且各路段由一个或多个块(例如,车道或交叉口的一部分)组成。在实施例中,时空地点对应于真实世界地点。例如,时空地点是上车或下车地点,以使人员或货物上车或下车。

如本文所使用的,“(一个或多个)传感器”包括一个或多个硬件组件,用于检测与传感器周围环境有关的信息。一些硬件组件可包括感测组件(例如,图像传感器、生物特征传感器)、传输和/或接收组件(例如,激光或射频波发射器和接收器)、电子组件(诸如,模数转换器)、数据存储装置(诸如,RAM和/或非易失性存储器)、软件或固件组件和数据处理组件(诸如,专用集成电路)、微处理器和/或微控制器。

如本文所使用的,“场景描述”是一种数据结构(例如,列表)或数据流,其包括由AV运载工具上的一个或多个传感器检测到的一个或多个分类或标记的对象,或由AV外部的源提供的一个或多个分类或标记的对象。

如本文所使用的,“道路”是一个可以被运载工具穿过的物理区域,并且可以对应于已命名的通道(例如,城市街道、州际高速公路等)或可对应于未命名的通道(例如,房屋或办公楼内的行车道、停车场的一段、空置停车场的一段、乡村区域的污物通道等)。因为有些运载工具(例如,四轮驱动的小卡车、越野车(SUV)等)能够穿过各种不特别适合运载工具行驶的物理区域,因此“道路”可以是任何市政当局或其它政府或行政机构没有正式定义为一条通道的物理区域。

如本文所使用的,“车道”是道路的可被运载工具穿过的部分,并且可对应于车道标记之间的大部分或全部空间,或仅对应于车道标记之间的一些空间(例如,小于50%)。例如,具有相距远的车道标记的道路可能在标记之间容纳两个或更多个运载工具,使得一个运载工具可以在不穿过车道标记的情况下超过另一个运载工具,并且因此可被解释为具有比车道标记之间的空间窄的车道,或具有车道之间的两个车道。在没有车道标记的情况下,也可以对车道进行解释。例如,可以基于环境的物理特征(例如乡村区域沿着通道的岩石和树木)来定义车道。

“一个或多个”包括由一个要素执行的功能、由多个要素例如以分布式的方式执行的功能、由一个要素执行的若干功能、由若干要素执行的若干功能、或上述的任何组合。

还将理解的是,尽管在一些情况下,术语“第一”、“第二”等在本文中是用来描述各种要素的,但这些要素不应受到这些术语的限制。这些术语仅用于区分一个要素与另一个要素。例如,在未背离各种所描述的实施例的范围的情况下,第一触点可被称为第二触点,并且类似地,第二触点可被称为第一触点。第一触点和第二触点两者都是触点,但它们不是相同触点。

在本文所描述的各种实施例的说明书中使用的术语仅用于描述特定实施例的目的,而不是意在限制。如在所描述的各种实施例的说明书和所附权利要求书中所使用的,单数形式“a”、“an”和“the”也意在包括复数形式,除非上下文另有明确说明。还将理解的是,如本文所使用的“和/或”是指并且包括一个或多个相关清单项目的任何和所有可能的组合。还将理解的是,当在本说明书中使用术语“包括”、“包含”、“具备”和/或“具有”时,具体说明存在所陈述的特征、整数、步骤、操作、要素和/或组件,但并不排除存在或添加一个或多个其它特征、整数、步骤、操作、要素、组件、和/或其群组。

如本文所使用的,取决于上下文,术语“如果”可选地被理解为意指“当”或“在当时”或“响应于确定为”或“响应于检测到”。类似地,取决于上下文,短语“如果已确定”或“如果[所陈述的条件或事件]已被检测到”可选地被理解为意指“在确定时”或“响应于确定为”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。

如本文所使用的,AV系统是指AV以及支持AV操作的硬件、软件、存储的数据和实时生成的数据的阵列。在实施例中,AV系统并入在AV内。在实施例中,AV系统跨若干地点分布。例如,AV系统的一些软件是在类似于下面关于图2描述的云计算环境200的云计算环境中实现的。

一般而言,本文件描述了适用于任何具有一种或多种自主能力的运载工具的技术,包括完全自主运载工具、高度自主运载工具和有条件自主运载工具,诸如分别为所谓的第5级、第4级和第3级运载工具(见SAE国际标准J3016:道路上机动车自动驾驶系统相关术语的分类和定义,通过引用将其全部内容并入本文件,用于了解运载工具自主权等级的更多详细信息)。本文件所描述的技术也适用于部分自主运载工具和驾驶员辅助运载工具,诸如所谓的第2级和第1级运载工具(见SAE国际标准J3016:道路上机动车自动驾驶系统相关术语的分类和定义)。在实施例中,一个或多个第1级、第2级、第3级、第4级和第5级运载工具系统可基于对传感器输入的处理,在某些操作条件下自动执行某些运载工具操作(例如,转向、制动和使用地图)。本文件中所描述的技术可以使从完全自主运载工具到人类操作的运载工具范围内的任何级别的运载工具受益。

参考图1,AV系统120使AV 100沿着轨迹198操作,穿过环境190至目的地199(有时称为最终地点),同时避开对象(例如,自然障碍物191、运载工具193、行人192、骑车者和其它障碍物)和遵守道路规则(例如,操作规则或驾驶偏好)。

在实施例中,AV系统120包括被装备以从计算机处理器146接收操作命令并对其进行操作的装置101。在实施例中,计算处理器146与下面参考图3描述的处理器304类似。装置101的示例包括转向控制器102、制动器103、挡位、加速踏板或其它加速控制机构、挡风玻璃雨刮器、侧门锁、窗控器和转向指示器。

在实施例中,AV系统120包括用于测量或推断AV 100的状态或条件的属性的传感器121,这些属性诸如是AV的位置、线性速度和线性加速度、角速度和角加速度、以及航向(例如,AV 100的前端的方向)。传感器121的示例是GNSS、测量运载工具线加速度和角速率两者的惯性测量单元(IMU)、用于测量或估计轮滑移率的轮速率传感器、轮制动压力或制动扭矩传感器、引擎扭矩或轮扭矩传感器以及转向角度和角速率传感器。

在实施例中,传感器121还包括用于感测或测量AV的环境的属性的传感器。例如,可见光、红外或热(或两者兼有)光谱的单目或立体摄像机122,LiDAR 123,RADAR,超声波传感器,飞行时间(TOF)深度传感器,速率传感器,温度传感器,湿度传感器和降水传感器。

在实施例中,AV系统120包括数据存储单元142和存储器144,用于存储与计算机处理器146相关联的机器指令或由传感器121收集的数据。在实施例中,数据存储单元142与以下关于图3描述的ROM 308或存储装置310类似。在实施例中,存储器144与下面描述的主存储器306类似。在实施例中,数据存储单元142和存储器144存储有关环境190的历史、实时和/或预测性信息。在实施例中,存储的信息包括地图、驾驶性能、交通拥堵更新或天气条件。在实施例中,与环境190有关的数据从远程数据库134通过通信信道传输到AV100。

在实施例中,AV系统120包括通信装置140,用于将对其它运载工具的状态和条件(诸如位置、线速度和角速度、线加速度和角加速度、以及线航向和角航向)测量或推断的属性传送到AV 100。这些装置包括运载工具到运载工具(V2V)和运载工具到基础设施(V2I)通信装置以及用于通过点对点或自组织(ad hoc)网络或两者进行无线通信的装置。在实施例中,通信装置140跨电磁频谱(包括无线电和光通信)或其它介质(例如,空气和声介质)进行通信。运载工具对运载工具(V2V)、运载工具对基础设施(V2I)通信(以及在实施例中为一种或多种其它类型的通信)的组合有时被称为运载工具对所有事物(V2X)通信。V2X通信通常符合一个或多个通信标准,用于与自主运载工具进行的和在自主运载工具之间的通信。

在实施例中,通信装置140包括通信接口。例如,有线、无线、WiMAX、Wi-Fi、蓝牙、卫星、蜂窝、光、近场、红外或无线电接口。通信接口将数据从远程数据库134传输到AV系统120。在实施例中,远程数据库134嵌入在如图2中所描述的云计算环境200中。通信接口140将从传感器121收集的数据或与AV 100操作有关的其它数据传输到远程数据库134。在实施例中,通信接口140向AV 100传输与遥操作有关的信息。在一些实施例中,AV 100与其它远程(例如,“云”)服务器136通信。

在实施例中,远程数据库134还存储和传输数字数据(例如,存储诸如道路和街道地点的数据)。这些数据存储在AV 100上的存储器144中,或者通过通信信道从远程数据库134传输到AV 100。

在实施例中,远程数据库134存储和传输与以前在一天中类似时间沿着轨迹198行驶的运载工具的驾驶属性有关的历史信息(例如,速率和加速度分布)。在一个实现中,这种数据可以存储在AV 100上的存储器144中,或者通过通信信道从远程数据库134传输到AV100。

位于AV 100上的计算装置146基于实时传感器数据和先验信息两者以算法方式生成控制动作,允许AV系统120执行其自主驾驶能力。

在实施例中,AV系统120包括耦接到计算装置146的计算机外围设备132,用于向AV100的用户(例如,乘员或远程用户)提供信息和提醒并接收来自该用户的输入。在实施例中,外围设备132类似于下面参考图3讨论的显示器312、输入装置314和光标控制器316。耦接是无线的或有线的。任意两个或更多个的接口装置可以集成到单个装置中。

示例云计算环境

图2示出示例“云”计算环境。云计算是一种服务交付模式,用于使得能够方便、按需地在网络上访问可配置计算资源(例如网络、网络带宽、服务器、处理、内存、存储、应用程序、虚拟机和服务)的共享池。在典型的云计算系统中,一个或多个大型云数据中心容纳用于交付云所提供的服务的机器。现在参考图2,云计算环境200包括通过云202互连的云数据中心204a、204b和204c。数据中心204a、204b和204c为连接到云202的计算机系统206a、206b、206c、206d、206e和206f提供云计算服务。

云计算环境200包括一个或多个云数据中心。一般而言,云数据中心(例如图2中所示的云数据中心204a)是指构成云(例如图2中所示的云202或云的特定部分)的服务器的物理排列。例如,服务器在云数据中心中物理排列成房间、组、行和机架。云数据中心有一个或多个区域,其中包括一个或多个服务器房间。每个房间有一行或多行服务器,并且每行包括一个或多个机架。每个机架包括一个或多个单独的服务器节点。在一些实现中,区域、房间、机架和/或行中的服务器基于数据中心设施的物理基础设施要求(包括电力、能源、热力、热源和/或其它要求)被排列成若干组。在实施例中,服务器节点类似于图3中描述的计算机系统。数据中心204a具有许多分布在多个机架上的计算系统。

云202包括云数据中心204a、204b和204c以及用于连接云数据中心204a、204b和204c并有助于促进计算系统206a-f对云计算服务的访问的网络和网络资源(例如,网络设备、节点、路由器、交换机和网络电缆)。在实施例中,该网络表示一个或多个本地网络、广域网或通过使用地面或卫星连接部署的有线或无线链路耦接的网际网络的任意组合。通过网络交换的数据使用多种网络层协议(诸如,因特网协议(IP)、多协议标签交换(MPLS)、异步传输模式(ATM)、帧中继(Frame Relay)等)进行传输。此外,在网络表示多个子网络的组合的实施例中,在每个底层子网络上使用不同的网络层协议。在实施例中,网络表示一个或多个互连网际网络(诸如公共因特网等)。

计算系统206a-f或云计算服务消费者通过网络链路和网络适配器连接到云202。在实施例中,计算系统206a-f被实现为各种计算装置,例如服务器、台式机、膝上型计算机、平板电脑、智能手机、物联网(IoT)装置、自主运载工具(包括小汽车、无人机、航天飞机、火车、公共汽车等)和消费电子产品。在实施例中,计算系统206a-f在其它系统中实现或作为其它系统的一部分实现。

计算机系统

图3示出计算机系统300。在实现中,计算机系统300是一种专用计算装置。专用计算装置被硬连线以执行这些技术,或包括诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的被持久编程为执行上述技术的数字电子装置,或可包括一个或多个通用硬件处理器,这些硬件处理器经编程以根据固件、存储器、其它存储器、或者组合中的程序指令执行这些技术。这种专用的计算装置还可以将定制的硬线逻辑、ASIC或FPGA与定制的编程相结合来完成这些技术。在各种实施例中,专用计算装置是台式计算机系统、便携式计算机系统、手持装置、网络装置或包含硬线和/或程序逻辑以实现这些技术的任何其它装置。

在实施例中,计算机系统300包括总线302或用于传达信息的其它通信机制、以及与总线302耦接以处理信息的硬件处理器304。硬件处理器304是例如通用微处理器。计算机系统300还包括主存储器306,诸如随机存取存储器(RAM)或其它动态存储装置,该主存储器306耦接到总线302以存储信息和指令,该信息和指令由处理器304执行。在一个实现中,主存储器306用于在执行要由处理器304执行的指令期间存储临时变量或其它中间信息。当这些指令存储在处理器304可访问的非暂时性存储介质中时,使计算机系统300变成一个专用机器,该机器被定制以执行指令中指定的操作。

在实施例中,计算机系统300还包括只读存储器(ROM)308或耦接到总线302的其它静态存储装置,用于存储处理器304的静态信息和指令。提供诸如磁盘、光盘、固态驱动器或三维交叉点存储器的存储装置310,并且该存储装置310耦接到总线302以存储信息和指令。

在实施例中,计算机系统300通过总线302耦接到诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子体显示器、发光二极管(LED)显示器或用于向计算机用户显示信息的有机发光二极管(OLED)显示器的显示器312。包括字母数字键和其它键的输入装置314耦接到总线302,用于向处理器304传送信息和命令选择。另一种类型的用户输入装置是光标控制器316,诸如鼠标、轨迹球、触控显示器或光标方向键,用于将方向信息和命令选择传送到处理器304,并用于控制光标在显示器312上的移动。这种输入装置通常具有两个轴(第一轴(例如,x轴)和第二轴(例如,y轴))上的两个自由度,这两个轴允许装置指定平面上的位置。

根据一个实施例,本文的技术由计算机系统300响应于处理器304执行主存储器306中包含的一个或多个指令的一个或多个序列而执行。这些指令从诸如存储装置310的另一存储介质读入主存储器306。执行主存储器306中包含的指令序列使处理器304执行本文所描述的过程步骤。在替代实施例中,使用硬连线电路代替或与软件指令结合使用。

如本文所使用的术语“存储介质”是指存储数据和/或指令的任何非暂时性介质,这些数据和/或指令使机器以特定方式操作。这种存储介质包括非易失性介质和/或易失性介质。非易失性介质例如包括诸如存储装置310的光盘、磁盘、固态驱动器或三维交叉点存储器。易失性介质包括动态存储器,诸如主存储器306。存储介质的常见形式包括例如软盘、软磁盘、硬盘、固态驱动器、磁带或任何其它磁数据存储介质、CD-ROM、任何其它光数据存储介质、任何具有孔型的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NV-RAM、或任何其它存储芯片或存储盒。

存储介质有别于传输介质,但可以与传输介质相结合使用。传输介质参与存储介质之间的信息传输。例如,传输介质包括同轴电缆、铜线和光纤,其包括具备总线302的电线。传输介质也可以采取声波或光波的形式,诸如在无线电波和红外数据通信过程中产生的声波或光波。

在实施例中,各种形式的介质涉及将一个或多个指令的一个或多个序列承载到处理器304以供执行。例如,这些指令最初是在远程计算机的磁盘或固态驱动器上执行的。远程计算机将指令加载到其动态存储器中,并使用调制解调器通过电话线路发送指令。计算机系统300的本地调制解调器接收电话线路上的数据,并使用红外发射器将数据转换为红外信号。红外检测器接收红外信号中承载的数据,并且适当的电路将数据放置在总线302上。总线302将数据承载到主存储器306,处理器304从主存储器306检索并执行指令。主存储器306接收的指令可以可选地在处理器304执行之前或之后存储在存储装置310上。

计算机系统300还包括耦接到总线302的通信接口318。通信接口318提供耦接到连接至本地网络322的网络链路320的双向数据通信。例如,通信接口318是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或用以提供与相应类型电话线路的数据通信连接的调制解调器。作为另一示例,通信接口318是局域网(LAN)卡,用于提供与兼容LAN的数据通信连接。在一些实现中,无线链路也被实现。在任何这种实现中,通信接口318发送和接收承载表示各种类型的信息的数字数据流的电、电磁或光信号。

网络链路320通常通过一个或多个网络向其它数据装置提供数据通信。例如,网络链路320通过本地网络322提供与主计算机324或与由因特网服务提供商(ISP)326运营的云数据中心或设备的连接。ISP 326又通过现在通常称为“因特网”328的世界范围分组数据通信网络来提供数据通信服务。本地网络322和因特网328两者都使用承载数字数据流的电、电磁或光信号。通过各种网络的信号以及网络链路320上并通过通信接口318的信号是传输介质的示例形式,其中这些信号承载了进出计算机系统300的数字数据。在实施例中,网络320包含上述云202或云202的一部分。

计算机系统300通过(一个或多个)网络、网络链路320和通信接口318发送消息和接收包括程序代码的数据。在实施例中,计算机系统300接收用于处理的代码。接收到的代码在接收到时由处理器304执行,和/或存储在存储装置310中,或存储在其它非易失性存储装置中以便以后执行。

自主运载工具架构

图4示出用于自主运载工具(例如,图1所示的AV 100)的示例架构400。架构400包括感知模块402(有时称为感知电路)、规划模块404(有时称为规划电路)、控制模块406(有时称为控制电路)、定位模块408(有时称为定位电路)和数据库模块410(有时称为数据库电路)。各模块在AV 100的操作中发挥作用。共同地,模块402、404、406、408和410可以是图1所示的AV系统120的一部分。在实施例中,模块402、404、406、408和410中的任何模块是计算机软件(例如,计算机可读介质上所存储的可执行代码)和计算机硬件(例如,一个或多个微处理器、微控制器、专用集成电路[ASIC]、硬件存储器装置、其它类型的集成电路、其它类型的计算机硬件、或者这些硬件中的任何或所有的组合)的组合。

在使用中,规划模块404接收表示目的地412的数据,并且确定表示AV100为了到达(例如,抵达)目的地412而可以行驶的轨迹414(有时称为路线)的数据。为了使规划模块404确定表示轨迹414的数据,规划模块404从感知模块402、定位模块408和数据库模块410接收数据。

感知模块402使用例如也如图1所示的一个或多个传感器121来识别附近的物理对象。将对象分类(例如,分组成诸如行人、自行车、汽车、交通标志等的类型),并且将包括经分类的对象416的场景描述提供至规划模块404。

规划模块404还从定位模块408接收表示AV位置418的数据。定位模块408通过使用来自传感器121的数据和来自数据库模块410的数据(例如,地理数据)以计算位置来确定AV位置。例如,定位模块408使用来自GNSS(全球导航卫星系统)传感器的数据和地理数据来计算AV的经度和纬度。在实施例中,定位模块408所使用的数据包括具有行车道几何属性的高精度地图、描述道路网络连接属性的地图、描述行车道物理属性(诸如交通速率、交通量、运载工具和自行车车道的数量、车道宽度、车道交通方向、或车道标记类型和地点,或者它们的组合)的地图、以及描述道路特征(诸如十字路口、交通标志或各种类型的其它行驶信号等)的空间地点的地图。

控制模块406接收表示轨迹414的数据和表示AV位置418的数据,并且以将使得AV100行驶轨迹414到达目的地412的方式来操作AV的控制功能420a~420c(例如,转向、油门、制动、点火)。例如,如果轨迹414包括左转,则控制模块406将以如下方式操作控制功能420a~420c:转向功能的转向角度将使得AV 100左转,并且油门和制动将使得AV 100在进行转弯之前暂停并等待经过的行人或运载工具。

自主运载工具输入

图5示出感知模块402(图4)所使用的输入502a-502d(例如,图1中所示的传感器121)和输出504a-504d(例如,传感器数据)的示例。一个输入502a是LiDAR(光检测和测距)系统(例如,图1所示的LiDAR 123)。LiDAR是使用光(例如,诸如红外光等的一道光)来获得与其视线中的物理对象有关的数据的技术。LiDAR系统产生LiDAR数据作为输出504a。例如,LiDAR数据是用于构造环境190的表示的3D或2D点(也称为点云)的集合。

另一输入502b是RADAR(雷达)系统。RADAR是使用无线电波来获得与附近的物理对象有关的数据的技术。RADAR可以获得与不在LiDAR系统的视线内的对象有关的数据。RADAR系统502b产生RADAR数据作为输出504b。例如,RADAR数据是用于构造环境190的表示的一个或多个射频电磁信号。

另一输入502c是照相机系统。照相机系统使用一个或多个照相机(例如,使用诸如电荷耦接器件[CCD]等的光传感器的数字照相机)来获取与附近的物理对象有关的信息。照相机系统产生照相机数据作为输出504c。照相机数据通常采用图像数据(例如,诸如RAW、JPEG、PNG等的图像数据格式的数据)的形式。在一些示例中,照相机系统具有例如为了立体影像(立体视觉)的目的的多个独立照相机,这使得照相机系统能够感知深度。尽管照相机系统所感知的对象在这里被描述为“附近”,但这是相对于AV而言的。在使用中,照相机系统可被配置为“看见”远处的(例如,AV前方的远至1公里或更远的)对象。因此,照相机系统可以具有为了感知遥远的对象而优化的诸如传感器和镜头等的特征。

另一输入502d是交通灯检测(TLD)系统。TLD系统使用一个或多个照相机来获得与交通灯、街道标志和提供视觉操作信息的其它物理对象有关的信息。TLD系统产生TLD数据作为输出504d。TLD数据经常采用图像数据(例如,诸如RAW、JPEG、PNG等的图像数据格式的数据)的形式。TLD系统与包含照相机的系统的不同之处在于:TLD系统使用具有宽视场(例如,使用广角镜头或鱼眼镜头)的照相机,以获得与尽可能多的提供视觉操作信息的物理对象有关的信息,使得AV 100能够访问这些对象所提供的所有相关操作信息。例如,TLD系统的视角可以为约120度或更大。

在实施例中,使用传感器融合技术来组合输出504a-504d。因而,将个体输出504a-504d提供至AV 100的其它系统(例如,提供至如图4所示的规划模块404),或者可以采用相同类型的单个组合输出或多个组合输出(例如,使用相同组合技术或组合相同输出或者这两者)或不同类型的单个组合输出或多个组合输出(例如,使用不同的各个组合技术或组合不同的各个输出或者这两者)的形式,将组合输出提供至其它系统。在实施例中,使用早期融合技术。早期融合技术的特征在于:在将一个或多个数据处理步骤应用到组合输出之前,将输出组合。在实施例中,使用后期融合技术。后期融合技术的特征在于:在将一个或多个数据处理步骤应用到个体输出之后,将输出组合。

图6示出LiDAR系统602的示例(例如,图5所示的输入502a)。LiDAR系统602从发光器606(例如,激光发射器)发射光604a-604c。LiDAR系统所发射的光通常不在可见光谱中;例如,经常使用红外光。所发射的光604b中的一些光遇到物理对象608(例如,运载工具)并且反射回到LiDAR系统602。(从LiDAR系统发射的光通常不会穿透物理对象,例如,实心形式的物理对象。)LiDAR系统602还具有用于检测反射光的一个或多个光检测器610。在实施例中,与LiDAR系统相关联的一个或多个数据处理系统生成表示LiDAR系统的视场614的图像612。图像612包括表示物理对象608的边界616的信息。这样,图像612用于确定AV附近的一个或多个物理对象的边界616。

图7示出操作中的LiDAR系统602。在该图所示的情境中,AV 100接收采用图像702的形式的照相机系统输出504c和采用LiDAR数据点704的形式的LiDAR系统输出504a两者。在使用中,AV 100的数据处理系统将图像702与数据点704进行比较。特别地,在数据点704中也识别在图像702中识别出的物理对象706。这样,AV 100基于数据点704的轮廓和密度来感知物理对象的边界。

图8示出LiDAR系统602的操作的附加细节。如上所述,AV 100基于LiDAR系统602所检测到的数据点的特性来检测物理对象的边界。如图8所示,诸如地面802等的平坦对象将以一致的方式反射从LiDAR系统602发射的光804a-804d。换句话说,由于LiDAR系统602使用一致的间隔发射光,因此地面802将以相同的一致间隔将光反射回到LiDAR系统602。在AV100在地面802上行驶时,在没有东西阻挡道路的情况下,LiDAR系统602将继续检测到由下一个有效地面点806反射的光。然而,如果对象808阻挡道路,则LiDAR系统602所发射的光804e-804f将以与预期一致方式不一致的方式从点810a-810b反射。根据该信息,AV 100可以确定存在对象808。

路径规划

图9示出(例如,如图4所示的)规划模块404的输入和输出之间的关系的框图900。一般而言,规划模块404的输出是从起点904(例如,源地点或初始地点)到终点906(例如,目的地或最终地点)的路线902。路线902通常由一个或多个路段定义。例如,路段是指要在街道、道路、公路、行车道或适合汽车行驶的其它物理区域的至少一部分上行驶的距离。在一些示例中,例如,如果AV 100是诸如四轮驱动(4WD)或全轮驱动(AWD)小汽车、SUV或小卡车等的能够越野的运载工具,则路线902包括诸如未铺面路径或开阔田野等的“越野”路段。

除路线902之外,规划模块还输出车道级路线规划数据908。车道级路线规划数据908用于在特定时间基于路线902的路段的条件来驶过这些路段。例如,如果路线902包括多车道公路,则车道级路线规划数据908包括轨迹规划数据910,其中AV 100可以使用该轨迹规划数据910以例如基于出口是否临近、多个车道中的一个或多个车道是否存在其它运载工具、或者在几分钟或更少时间的过程中变化的其它因素来从这多个车道中选择某车道。类似地,在一些实现中,车道级路线规划数据908包括路线902的某路段特有的速率约束912。例如,如果该路段包括行人或非预期交通,则速率约束912可以将AV 100限制到比预期速率慢的行驶速率,例如基于该路段的限速数据的速率。

在实施例中,向规划模块404的输入包括(例如,来自图4所示的数据库模块410的)数据库数据914、当前地点数据916(例如,图4所示的AV位置418)、(例如,用于图4所示的目的地412的)目的地数据918和对象数据920(例如,如图4所示的感知模块402所感知的经分类的对象416)。在实施例中,数据库数据914包括规划时所使用的规则。规则是使用形式语言(例如,使用布尔逻辑)指定的。在AV 100所遇到的任何给定情形中,这些规则中的至少一些规则将适用于该情形。如果规则具有基于AV 100可用的信息(例如,与周围环境有关的信息)所满足的条件,则该规则适用于给定情形。规则可以具有优先级。例如,“如果公路是高速公路,则移动到最左侧车道”这一规则与“如果出口在一英里内临近,则移动到最右侧车道”相比可以具有更低的优先级。

图10示出在路径规划中(例如,由规划模块404(图4))使用的有向图1000。一般而言,如图10所示的有向图那样的有向图1000用于确定任何起点1002和终点1004之间的路径。在现实世界中,分隔起点1002和终点1004的距离可能相对较大(例如,在两个不同的都市区域中),或者可能相对较小(例如,毗邻城市街区的两个十字路口或多车道道路的两条车道)。

在实施例中,有向图1000具有表示起点1002和终点1004之间的AV 100可能占用的不同地点的节点1006a-1006d。在一些示例中,例如,在起点1002和终点1004表示不同的都市区域时,节点1006a-1006d表示道路的路段。在一些示例中,例如,在起点1002和终点1004表示相同道路上的不同地点时,节点1006a-1006d表示该道路上的不同位置。这样,有向图1000包括不同粒度级别的信息。在实施例中,具有高粒度的有向图也是具有更大规模的另一有向图的子图。例如,起点1002和终点1004相距远(例如,相距许多英里)的有向图的大部分信息处于低粒度,并且该有向图是基于所存储的数据,但该有向图还包括用于该有向图中的表示AV 100的视场中的物理地点的一部分的一些高粒度信息。

节点1006a-1006d不同于无法与节点重叠的对象1008a-1008b。在实施例中,在粒度低时,对象1008a-1008b表示汽车不能穿过的地区,例如无街道或道路的区域。在粒度高时,对象1008a-1008b表示AV 100的视场中的物理对象,例如其它汽车、行人、或AV 100不能与之共用物理空间的其它实体。在实施例中,对象1008a-1008b的一部分或全部是静态对象(例如,不改变位置的对象,诸如街灯或电线杆等)或动态对象(例如,能够改变位置的对象,诸如行人或其它小汽车等)。

节点1006a-1006d通过边1010a-1010c连接。如果两个节点1006a-1006b通过边1010a连接,则AV 100可以在一个节点1006a和另一节点1006b之间行驶,例如,而不必在到达另一节点1006b之前行驶到中间节点。(当提到AV 100在节点之间行驶时,意味着AV 100在由相应节点表示的两个物理位置之间行驶。)边1010a-1010c通常是双向的,从某种意义上,AV 100从第一节点行驶到第二节点,或者从第二节点行驶到第一节点。在实施例中,边1010a-1010c是单向的,从某种意义上,AV 100可以从第一节点行驶到第二节点,然而AV100不能从第二节点行驶到第一节点。在边1010a-1010c表示例如单向街道,街道、道路或公路的单独车道,或者由于法律或物理约束因而仅能沿一个方向穿过的其它特征的情况下,边1010a-1010c是单向的。

在实施例中,规划模块404使用有向图1000来识别由起点1002和终点1004之间的节点和边组成的路径1012。

边1010a-1010c具有关联成本1014a-1014b。成本1014a-1014b是表示在AV100选择该边的情况下将花费的资源的值。典型的资源是时间。例如,如果一个边1010a所表示的物理距离是另一边1010b所表示的物理距离的两倍,则第一边1010a的关联成本1014a可以是第二边1010b的关联成本1014b的两倍。影响时间的其它因素包括预期交通、十字路口的数量、限速等。另一典型的资源是燃料经济性。两个边1010a-1010b可以表示相同的物理距离,但例如由于道路条件、预期天气等,因此一个边1010a与另一边1010b相比需要更多的燃料。

在规划模块404识别起点1002和终点1004之间的路径1012时,规划模块404通常选择针对成本优化的路径,例如,在将边的个体成本相加到一起时具有最小总成本的路径。

自主运载工具控制

图11示出(例如,如图4所示的)控制模块406的输入和输出的框图1100。控制模块根据控制器1102而操作,该控制器1102例如包括:与处理器304类似的一个或多个处理器(例如,诸如微处理器或微控制器或这两者等的一个或多个计算机处理器);与主存储器306、ROM 308和存储装置310类似的短期和/或长期数据存储装置(例如,存储器,随机存取存储器或闪速存储器或这两者);以及存储器中所存储的指令,这些指令在(例如,由一个或多个处理器)执行时执行控制器1102的操作。

在实施例中,控制器1102接收表示期望输出1104的数据。期望输出1104通常包括速度,例如速率和航向。期望输出1104例如可以基于从(例如,如图4所示的)规划模块404接收到的数据。根据期望输出1104,控制器1102产生可用作油门输入1106和转向输入1108的数据。油门输入1106表示例如通过接合转向踏板或接合另一油门控件来接合AV 100的油门(例如,加速控制)以实现期望输出1104的大小。在一些示例中,油门输入1106还包括可用于接合AV100的制动器(例如,减速控制)的数据。转向输入1108表示转向角度,例如AV的转向控制(例如,方向盘、转向角致动器或用于控制转向角度的其它功能)应被定位成实现期望输出1104的角度。

在实施例中,控制器1102接收在调整提供至油门和转向的输入时使用的反馈。例如,如果AV 100遇到诸如山丘等的干扰1110,则AV 100的测量速率1112降至低于期望输出速率。在实施例中,任何测量输出1114均被提供至控制器1102,使得例如基于测量速率和期望输出之间的差分1113来进行所需的调整。测量输出1114包括测量位置1116、测量速度1118(包括速率和航向)、测量加速度1120和AV 100的传感器可测量的其它输出。

在实施例中,例如通过诸如照相机或LiDAR传感器等的传感器预先检测与干扰1110有关的信息,并且该信息被提供至预测性反馈模块1122。然后,预测性反馈模块1122将控制器1102可用于相应地调整的信息提供至控制器1102。例如,如果AV 100的传感器检测到(“看见”)山丘,则控制器1102可以使用该信息来准备在适当时间接合油门,以避免显著减速。

图12示出控制器1102的输入、输出和组件的框图1200。控制器1102具有影响油门/制动器控制器1204的操作的速率分析器1202。例如,速率分析器1202根据例如由控制器1102接收到并由速率分析器1202处理后的反馈,来指示油门/制动器控制器1204使用油门/制动器1206进行加速或进行减速。

控制器1102还具有影响方向盘控制器1210的操作的横向跟踪控制器1208。例如,横向跟踪控制器1208根据例如由控制器1102接收到并由横向跟踪控制器1208处理后的反馈,来指示方向盘控制器1210调整转向角致动器1212的位置。

控制器1102接收用于确定如何控制油门/制动器1206和转向角致动器1212的若干输入。规划模块404提供控制器1102例如选择AV 100开始操作时的航向并确定在AV 100到达十字交叉路口时穿过哪个道路路段所使用的信息。定位模块408例如将描述AV 100的当前地点的信息提供至控制器1102,使得控制器1102可以确定AV 100是否处于基于正控制油门/制动器1206和转向角致动器1212的方式而预期的地点。在实施例中,控制器1102接收来自其它输入1214的信息,例如从数据库、计算机网络等接收到的信息。

使用线性时间逻辑的自主运载工具的操作环境

图13示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具(AV)操作的操作环境1300的框图。图13的框图包括远程服务器136和操作环境1300。在其它实施例中,图13的框图包括比本文描述的对象更多或更少的对象。

图13所示的远程服务器136是如上文参考图1所示和描述的遥操作服务器或云服务器。远程服务器136包括一个或多个处理器和数据存储。远程服务器136通过网络与操作环境1300中的实体(例如,AV 100)通信。网络表示使用有线或无线链路耦接的一个或多个局域网、广域网或互联网的任何组合,该有线或无线链路是使用地面或卫星连接部署的。通过网络交换的数据使用任何数量的网络层协议(诸如互联网协议(IP)、多协议标签交换(MPLS)、异步传输模式(ATM)、帧中继等)来发送。此外,在网络表示多个子网络的组合的实施例中,不同的网络层协议被用于各个底层子网络。在实施例中,网络表示一个或多个互连的互联网(诸如公共互联网等)。

操作环境1300表示地理区域,诸如州、镇、邻区或道路网络等。操作环境1300可以是上面参考图1例示和描述的操作环境190的示例。AV 100以及一个或多个对象1008位于操作环境1300内。对象1008是如上文参考图1所描述的AV 100外部的物理实体。

一个或多个对象1008位于AV 100的外部,并且可以是上面参考图4和5例示和描述的对象416的示例。上面参考图1例示和描述了对象1008。在实施例中,对象1008是AV操作环境1300的静态部分或方面,诸如道路段、交通信号灯、建筑物、位于道路段上的停车空间、高速公路出口或入口坡道、AV操作环境1300的可驾驶区域的多个车道、可驾驶区域的标高、与可驾驶区域邻接配置的路缘、或者分隔可驾驶区域的两个车道的中线。在实施例中,对象1008是动态对象,诸如另一运载工具193、行人192、骑车者或乘坐诸如滑板、电子踏板车、SegwayTM、个人轻型电动运载工具或个人移动装置等的小型运载工具的人。AV 100接收表示对象1008的特性的传感器数据,并进行碰撞预测,并且在需要时减少驾驶侵略性。以上参考图6、图7和图8中的物理对象608、物理对象608的边界616、物理对象706、地面802和对象808更详细地描述对象1008。

AV 100是部分自主或完全自主的运载工具,其使用一个或多个传感器1304和规划模块404来规划轨迹以在对象1008周围导航。这种轨迹的示例是图1中所示的轨迹198。AV100包括传感器1304、一个或多个乘客传感器1308、控制模块406、规划模块404、一个或多个输入装置314以及数据存储单元142。以上参考图1更详细地描述了AV 100。在其它实施例中,AV 100包括比本文所描述的组件更多或更少的组件。类似地,功能以与这里描述的方式不同的方式分布在组件和/或不同实体之间。

AV 100的一个或多个传感器1304包括感测操作环境1300的状态(诸如对象1008的存在等)的视觉传感器。传感器1304通信地耦接到感知模块402以发送传感器数据。以上参考图4更详细地描述感知模块402。传感器1304包括可见光、红外或热(或两者兼有)光谱的一个或多个单目或立体摄像机、LiDAR、RADAR、超声波传感器、飞行时间(TOF)深度传感器。传感器1304可以是上面参考图1例示和描述的传感器122-123的示例。

在实施例中,传感器数据包括LiDAR点云数据或照相机图像。AV 100的LiDAR传感器用于用脉冲激光照射对象1008并测量反射脉冲。然后使用激光返回时间的差和波长来生成传感器数据并创建对象1008的数字3D表示。在实施例中,将LiDAR点云数据存储为多维占用栅格。在信号级别处对LiDAR点云数据进行预处理,然后在更高级别处进行处理以提取对象1008的特性。在实施例中,使用组合的二维和三维栅格结构,并且将这些结构中的空间镶嵌成若干离散单元。LiDAR点云数据的结构允许由AV 100处理大量原始测量数据。

一个或多个乘客传感器1308包括用于记录数据(诸如,乘客的面部表情、皮肤电导、脉搏和心率、乘客身体的温度、瞳孔扩张和AV座椅扶手上的压力等)的专用传感器。使用不同的传感器(例如,心率监测器、血压计、瞳孔计、红外温度计或皮肤电反应传感器)或不同传感器的组合来记录各种类型的数据。规划模块404生成AV 100的用以例如减少乘客传感器1308所检测到的指示乘客不舒适或压力的升高的心率或皮肤电导水平的轨迹。如普通技术人员将理解的,一个或多个乘客的一个或多个物理测量结果可以与不舒适或压力的水平相关,并且该不舒适或压力的水平可以通过轨迹的改变来调整。

在实施例中,规划模块404生成轨迹,使得使用乘客传感器测量的乘客舒适度水平高于阈值。例如,阈值在75%和90%之间的范围内。0%的乘客舒适度水平意味着乘客非常不舒适。这种水平通常不会经历。100%的乘客舒适度水平意味着乘客非常舒适,并且轨迹的进一步改变不会增加乘客舒适度水平。规划模块404选择较低速度或较少侵略性的转弯以生成提供更高乘客舒适度水平的不同轨迹。以这种方式,规划模块404使用运动规划来改善乘客舒适度。

上面参考图3更详细地例示和描述输入装置314。在实施例中,输入装置314包括智能扬声器,该智能扬声器接收来自AV 100中乘坐的乘客的语音命令。智能扬声器包括一个或多个近场或远场麦克风以接收命令。智能扬声器还将来自AV 100或远程服务器136的音频消息传递给乘客。在实施例中,智能扬声器包括或连接到AV 100或远程服务器136的智能助理。智能助理查找诸如天气、路线规划等的信息,并且还向乘客传递与即将发生的机动动作有关的警报。

上面参考图1更详细地例示和描述数据存储单元142。数据存储单元142用于存储数据,例如来自传感器1304的传感器数据、来自乘客传感器1308的乘客传感器数据、从远程服务器136接收的关于路线的指示或由规划模块404生成的轨迹数据。

上面参考图4更详细地例示和描述规划模块404。在驾驶模式下,感知模块402使用来自传感器1304的数据(例如,声传感器数据、LiDAR数据或立体照相机数据)以检测和分类或标记操作环境1300中的静态对象和动态对象。规划模块404使用经分类/标记的对象1008和它们的特性(例如位置、速度或航向)以预测操作环境1300内的AV 100和对象1008之间的碰撞,并生成通过操作环境1300的安全轨迹。

在实施例中,AV 100位于诸如酒店或交通中心等的初始时空地点。AV100从远程服务器136或从数据存储单元142接收定义用于操作AV 100的操作约束的线性时间逻辑表达式。操作约束是当在操作环境1300中操作时AV 100意图遵循的规则。操作约束是增加AV100中乘坐的乘客的乘客舒适度水平的交通规则或约束。例如,增加乘客舒适度水平的约束规定了对AV 100的加速度的最大限制。在实施例中,AV 100从远程服务器136接收或从数据存储单元142检索用于操作AV 100的一个或多个操作约束。一个或多个操作约束中的各个操作约束由相应的线性时间逻辑表达式定义。

线性时间逻辑是具有参考时间的模态的模态时间逻辑。线性时间逻辑表达式是表示AV 100的操作条件最终是否为真或AV 100的操作条件是否为真直到满足另一条件为止等的公式。线性时间逻辑表达式是由有限集合的命题变量AP、逻辑算子

在实施例中,AV 100从远程服务器136或从使用输入装置314的乘客接收供AV 100行驶至的目的地时空地点。例如,目的地时空地点是住宅或办公室。规划模块404识别用于从初始时空地点操作到目的地时空地点的运动段。运动段是操作环境1300的可驾驶区域的一部分。例如,运动段包括车道、街道区间或交叉口。当AV 100根据运动段操作时,运动段例如指定AV 100的速率、AV 100的加速度或AV 100的方向取向。在实施例中,规划模块404使用利用传感器1304接收的传感器数据以基于路径规划图(例如,上面参考图10更详细地例示和描述的路径规划图1000)来识别运动段。在实施例中,AV 100使用规划模块404来确定用于操作AV 100的一个或多个运动段。

规划模块404基于运动段来确定用于AV 100的线性时间逻辑表达式的值。在实施例中,线性时间逻辑表达式的值是二进制值,例如,真/假或0/1。在其它实施例中,线性时间逻辑表达式的值表示AV 100的操作属性或状态。例如,线性时间逻辑表达式的值表示AV100是否正在改变车道,AV 100的右车道边界是否包括虚黄线,或者AV 100是否位于交叉口内。线性时间逻辑表达式包括一个或多个线性时间逻辑命题。例如,线性时间逻辑表达式定义了如下操作约束,该操作约束指定AV 100在交叉口内操作期间不应改变车道。线性时间逻辑表达式由以下表示:

其中!in_intersection是表示AV 100是否位于交叉口内的线性时间逻辑命题,以及is_baseline是表示AV 100的时空地点的命题变量。类似地,线性时间逻辑命题表示AV100正在其中操作的车道。参考以上示例,线性时间逻辑表达式no_lane_change_in_intersection的值与AV 100在交叉口内操作期间是否正在改变车道相对应。

在实施例中,线性时间逻辑表达式的值与AV 100是否正在由操作约束指定的方向上操作相对应。例如,与AV 100是否正在由行驶车道的交通规则所指定的方向上行驶相对应的线性时间逻辑表达式由以下表示:

规划模块404通过确定线性时间逻辑表达式内的一个或多个线性时间逻辑命题中的各个线性时间逻辑命题的值来评价各个线性时间逻辑表达式。因此,规划模块404通过逻辑地聚合一个或多个线性时间逻辑命题的一个或多个值以导出线性时间逻辑表达式的值来评价线性时间逻辑表达式。规划模块404通过分析状态在时间上连续地演进的AV 100生成轨迹。为了将在时间上连续地演进的AV 100建模为状态序列,规划模块404在不同时间采样AV 100的状态,并将所采样的状态添加到状态序列。例如,对任何线性时间逻辑命题(例如,is_baseline、in_intersection、lane_index、right_line或left_line)改变的所有时间进行采样。因此,对于任何索引i,存在状态s

在实施例中,规划模块404通过基于时间模态算子确定AV 100的状态序列的线性时间逻辑表达式的值来评价线性时间逻辑表达式。例如,规划模块404使用NEXT时间模态算子以通过评价感兴趣的状态之后的序列中的时间上的下一状态来评价AV 100在状态序列中的操作。例如,定义AV 100的操作约束的线性时间逻辑表达式由以下表示:

为了评价上述示例中的线性时间逻辑表达式,规划模块404利用s

继续上面示例,规划模块404评价线性时间逻辑命题NEXT(lane_index)=lane_index。变量L

继续上面示例,规划模块404评价线性时间逻辑命题(NEXT(lane_index)lane_index&&(right_line==1||right_line==3||right_line==5))||(NEXT(lane_index)

在实施例中,规划模块404基于定义操作约束的线性时间逻辑表达式来确定AV100的根据运动段的操作是否违反操作约束。响应于线性时间逻辑表达式的值为假,进行AV100的根据运动段的操作是否违反操作约束的确定。在实施例中,即使操作违反一个或多个操作约束中的操作约束,规划模块404也决定根据所选择的运动段来操作AV 100。响应于定义操作约束的线性时间逻辑表达式的值为假,AV 100的根据所选择的运动段的操作违反操作约束。例如,较高等级的操作约束指定AV 100应避免与对象1008碰撞。较低等级的操作约束指定AV 100的最大限速。规划模块404可以违反较低等级的操作约束,并且加速到遵守较高等级的操作约束且避免碰撞。

在实施例中,规划模块404生成Kripke(克里普克)结构作为其轨迹生成处理的一部分。下面参考图14更详细地例示和描述Kripke结构的示例。Kripke结构表示要评价的一个或多个运动段。Kripke结构是顶点表示AV 100的可达状态且边表示状态转移的图。规划模块404使用Kripke结构评价线性时间逻辑表达式。Kripke结构包括多个顶点。Kripke结构的第一顶点与AV 100的初始时空地点相对应。Kripke结构的第二顶点与AV 100的目的地时空地点相对应。Kripke结构的连接第一顶点和第二顶点的边与用于将AV 100从初始时空地点操作到目的地时空地点的运动段相对应。

在实施例中,规划模块404随机化从操作环境1300的地图获得的时空信息以生成Kripke结构。AV 100从远程服务器136接收地图或从数据存储单元142检索地图。当AV 100位于初始时空地点时,它随机化地图中的时空信息以生成它可以操作所根据的多个选项或运动段。多个选项或运动段用于生成Kripke结构。规划模块404使用Kripke结构以基于一个或多个线性时间逻辑表达式来评价各个运动段或选项。在实施例中,规划模块404对从操作环境1300的地图获得的时空信息进行采样以生成Kripke结构。例如,规划模块404选择地图中在距AV 100的初始时空地点的特定距离内的点以生成多个运动段,然后将这些运动段用于生成Kripke结构

规划模块404通过在多个顶点中的各个顶点处确定线性时间逻辑表达式的值来评价线性时间逻辑表达式。线性时间逻辑表达式定义特定操作约束。在一些情况下,在第一顶点处评价的线性时间逻辑表达式的第一值不同于在第二顶点处评价的线性时间逻辑表达式的第二值。规划模块404响应于在Kripke结构的第一顶点处评价的线性时间逻辑表达式的第一值与在Kripke结构的第二顶点处评价的线性时间逻辑表达式的第二值不同而确定为违反特定操作约束。

在实施例中,线性时间逻辑表达式的值在运动段上的中间点处改变。当线性时间逻辑表达式的值改变时,规划模块404在中间点处将运动段划分为两个不同的运动段。下面参考图15更详细地例示和描述运动段的划分。响应于线性时间逻辑表达式的值在时空地点处改变,在该时空地点处划分运动段。进行划分以确保线性时间逻辑表达式的值沿运动段最多改变一次。

在实施例中,由S表示AV 100的一组可能状态。例如,AV 100的特定状态s包括AV100的位置、航向或速率以及在操作环境1300中的其它对象1008的位置、航向或速率。在该示例中,总共有n个感兴趣的命题变量v

继续以上示例,E表示Kripke结构的边。E(d)表示AV 100在沿边E的距离d处的状态,例如,E(0)表示AV 100在边E的开始处的状态。规划模块404考虑d

在实施例中,规划模块404根据运动段生成用于操作AV 100的操作度量。操作度量是基于当根据运动段评价线性时间逻辑表达式时的线性时间逻辑表达式的确定值。操作度量是根据运动段操作AV 100的成本。例如,如果规划模块404预测为根据运动段操作AV 100将导致碰撞或违反其它交通规则,则规划模块向运动段分配更高的操作度量(成本)。规划模块将避免根据该运动段操作AV 100以降低成本。上面参考图10更详细地例示和描述与规划图中的边相关联的成本的使用。

在实施例中,规划模块404响应于分配给运动段的操作度量小于阈值而决定根据运动段来操作AV 100。例如,图表示包含一个或多个运动段。AV 100接收定义AV 100的一个或多个操作约束的一个或多个线性时间逻辑表达式。规划模块404针对一个或多个运动段中的各个运动段评价一个或多个线性时间逻辑表达式中的各个线性时间逻辑表达式。响应于线性时间逻辑表达式的值为假,规划模块404将操作度量(成本)分配给运动段。规划模块选择一个或多个运动段中的运动段,使得所选择的运动段具有低于阈值的所分配的操作度量。例如,操作度量可以在0至99的范围内,其中99是最高成本。如果阈值是5,则选择具有小于5的操作度量的运动段。

在实施例中,与操作AV 100有关的操作约束是分等级的多个操作约束中的一个操作约束。例如,对导航安全具有更大影响的操作约束的等级更高。在实施例中,规划模块404通过确定操作约束的等级来生成操作度量。例如,如果违反等级为10的操作约束,则操作度量将高于违反等级为1的操作约束。在实施例中,规划模块404通过确定由被评价为假的线性时间逻辑表达式定义的操作约束的等级来将操作度量分配给运动段。当线性时间逻辑表达式被评价为假时,规划模块404确定为违反了相应的操作约束。然后规划模块404确定所违反的操作约束的等级。规划模块404通过表示由被评价为假的线性时间逻辑表达式定义的操作约束的等级来将操作度量分配给运动段作为运动段的操作度量。

在实施例中,AV 100存储与AV 100和对象1008的碰撞相对应的线性时间逻辑表达式。线性时间逻辑表达式从远程服务器136检索并存储在数据存储单元142中。例如,线性时间逻辑表达式包括AV 100的用以避免AV 100与对象1008的碰撞的最小速率。在另一示例中,线性时间逻辑表达式包括AV 100的用以避免AV 100与对象1008的碰撞的最小加速度。因此,AV 100必须加速以避免碰撞。在实施例中,线性时间逻辑表达式是多个等级线性时间逻辑表达式之一。与对导航安全的更大影响相关联的线性时间逻辑表达式将具有更高的等级。

AV 100接收用于操作AV 100的第一运动段。第一运动段与道路、停车场、桥梁、施工区域、道路路缘、车道边界或交叉口相关联。例如,根据第一运动段操作AV 100使得AV100穿过道路、停车场或桥梁。规划模块404基于第一运动段确定线性时间逻辑表达式的第一值。线性时间逻辑表达式的第一值被确定为假。因此,规划模块404确定为根据第一运动段操作AV 100将导致AV 100与对象1008的碰撞。在实施例中,规划模块404响应于AV 100的操作速率大于最大限速而确定线性时间逻辑表达式的第一值为假。例如,如果规划模块404预测到运动段将导致AV 100加速,则将违反相应的操作约束。

在实施例中,规划模块404通过基于从一个或多个传感器1304获得的传感器数据确定从AV 100到对象1008的距离来确定线性时间逻辑表达式的第一值。例如,如果距离小并且AV 100正在对象1008的方向上驾驶,则规划模块404确定为根据第一运动段操作AV100将导致碰撞。在实施例中,规划模块404响应于AV 100与对象1008的碰撞的第一概率大于阈值而确定线性时间逻辑表达式的第一值为假。例如,阈值为10%。规划模块404通过预测对象1008的轨迹来确定碰撞的第一概率。在实施例中,规划模块404使用扩展卡尔曼滤波器来跟踪对象1008并确定潜在碰撞的时间。规划模块404确定对象1008的潜在行为(例如,车道改变或左转弯),并向各个潜在行为分配概率。在实施例中,规划模块404确定相对于AV100的纵轴上的位置、AV 100与对象1008的碰撞的第一概率,其中该位置远离AV 100的后轴。

规划模块生成表示第一运动段的Kripke结构。在实施例中,规划模块通过确定在根据第一运动段操作AV 100时AV 100相对于对象1008的横向误差容限来生成Kripke结构。横向误差容限表示在避免与对象1008的碰撞的同时AV 100的横向转向的横向自由度的大小。如果横向误差容限较小,则AV 100横向更靠近对象1008。规划模块404通过将Kripke结构的与第一运动段相关联的边与所确定的横向误差容限相关联来生成Kripke结构。

在实施例中,规划模块404向控制模块406发送用以终止根据第一运动段的AV 100的操作的消息。规划模块404响应于AV 100与对象1008的碰撞的第一概率大于阈值而发送用以终止AV 100的操作的消息。例如,阈值为5%。响应于所确定的第一值指示AV 100与对象1008的碰撞的第一概率(例如,30%)大于阈值,控制模块406根据不同于第一运动段的第二运动段来操作AV 100。规划模块404确定为基于第二运动段所确定的线性时间逻辑表达式的第二值指示AV 100与对象1008的碰撞的第二概率(例如0%)小于阈值。因此,规划模块404使用线性时间逻辑表达式的评价以基于与各个运动段相关联的碰撞的概率在运动段之间进行选择。

在实施例中,与线性时间逻辑表达式相关联的第一操作度量大于与第二线性时间逻辑表达式相关联的第二操作度量。线性时间逻辑表达式对AV 100的导航安全的影响大于第二线性时间逻辑表达式对导航安全的影响。例如,第二线性时间逻辑表达式与由AV 100的一个或多个乘客传感器1308测量的乘客舒适度水平相关联。在实施例中,第二线性时间逻辑表达式包括AV 100的与由乘客传感器1308测量的乘客舒适度水平相关联的最大速率。如果特定运动段将导致AV 100超过最大速率,则规划模块404将第二操作度量分配给特定运动段。在实施例中,第二线性时间逻辑表达式包括AV 100的与由乘客传感器1308测量的乘客舒适度水平相关联的最大加速度。如果特定运动段将导致AV 100超过最大加速度,则规划模块404将第二操作度量分配给特定运动段。因此,第二操作度量是根据特定运动段(加速度超过最大极限)操作AV100的成本(较低的乘客舒适度水平)。

控制模块406根据如上所述由规划模块404生成的轨迹来操作AV 100。控制模块406在上面参考图4例示和描述。控制模块可以根据所选择的运动段来操作AV 100。在实施例中,控制模块406根据具有较低操作度量的运动段来操作AV 100,使得操作度量在轨迹上最小化。控制模块406操作AV 100以避免与由感知模块402识别的对象1008的碰撞。控制模块406使用来自规划模块404的轨迹来操作AV 100的制动420c、转向420a和油门420b(上面参考图4例示和描述)。在实施例中,控制模块406根据轨迹在操作环境1300的离散可驾驶区域内操作AV 100。

使用线性时间逻辑的自主运载工具操作的示例

图14示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具操作的示例。在实施例中,AV 100从远程服务器136接收用于导航AV 100的多个运动段(运动段1412、1416、1420、1424)。在其它实施例中,规划模块404使用上面图10中更详细描述的图1000生成多个运动段。在其它实施例中,规划模块404使用上面图13中更详细描述的方法生成多个运动段。多个运动段中的各个运动段(例如,运动段1412)将第一时空地点1404连接到第二时空地点1408。例如,运动段与操作环境1300中的道路、停车场、桥梁、施工区域、道路路缘、车道的边界或交叉口相关联。

规划模块404生成包括与第一时空地点1404相对应的第一顶点和与第二时空地点1408相对应的第二顶点的Kripke结构1400。Kripke结构1400还包括多个边。多个边中的各个边与多个运动段中的相应运动段(例如,运动段1412)相对应。AV 100接收定义用于操作AV 100的操作约束的一个或多个线性时间逻辑表达式。在实施例中,AV 100从远程服务器136接收线性时间逻辑表达式。在其它实施例中,AV 100从数据存储单元142检索线性时间逻辑表达式。各个线性时间逻辑表达式定义用于操作AV 100的相应操作约束。例如,第一操作约束指定AV 100不应与另一对象(例如,对象1008)碰撞。第二操作约束指定AV 100不应超过最大限速以遵守交通规则。第三操作约束指定AV 100不应超过最大加速度以提供特定乘客舒适度水平。

在实施例中,规划模块404通过针对各个运动段(例如,运动段1412)确定在根据运动段1412操作AV 100时AV 100相对于对象1008的横向误差容限来生成Kripke结构1400。例如,如果所确定的横向误差容限较小,则AV 100具有较少的横向机动空间,并且更可能与对象1008碰撞。规划模块404通过将多个边中的各个边与所确定的横向误差容限相关联来生成Kripke结构1400。在实施例中,线性时间逻辑表达式包括AV 100的用以避免AV 100与对象1008的碰撞的最小速率。如果特定运动段(例如,上坡行驶)指定AV 100将比最小速率更慢地行驶,则AV 100将无法避开对象1008,并且更可能与对象1008碰撞。在实施例中,线性时间逻辑表达式包括AV 100的用以避免AV 100与对象1008的碰撞的最小加速度。如果特定运动段指定AV 100将比最小加速度更慢地加速,则AV 100将无法避开对象1008,并且更可能与对象1008碰撞。

规划模块404使用Kripke结构1400来选择多个运动段中的运动段(例如,运动段1424)以用于将AV 100从第一时空地点1404操作到第二时空地点1408。对于与运动段相对应的多个边,规划模块404使用Kripke结构1400评价各个线性时间逻辑表达式。如果针对边在第一顶点或第二顶点处确定的线性时间逻辑表达式的值为假,则规划模块404将操作度量(例如,OM

继续上面示例,第一操作约束指定AV 100将不与对象1008碰撞。因此,定义操作约束的第一线性时间逻辑表达式同AV 100与对象1008碰撞的概率相关联。例如,如果碰撞的概率较高,则规划模块404将较高的操作度量分配给违反第一操作约束的运动段。在实施例中,规划模块404通过基于从一个或多个传感器1304获得的传感器数据确定从AV 100到对象1008的距离来分配操作度量。例如,如果AV 100更接近对象1008,则碰撞的概率且因此操作度量将更高。操作度量随着从AV 100到对象1008的距离的减小而增加。例如,规划模块404确定为运动段1412将导致碰撞,并且碰撞的概率较高。因此,将较高的操作度量OM

在实施例中,响应于AV 100与对象1008的碰撞的概率大于阈值,线性时间逻辑表达式的值被确定为假。例如,如果AV 100与对象1008的碰撞的概率是80%并且阈值是5%,则线性时间逻辑表达式的值被确定为假。

在实施例中,各个线性时间逻辑表达式是多个等级线性时间逻辑表达式中的一个。等级是基于所定义的各个操作约束对导航安全的影响。例如,多个等级线性时间逻辑表达式中的第一线性时间逻辑表达式的操作度量大于多个等级线性时间逻辑表达式中的第二线性时间逻辑表达式的操作度量。

继续上面示例,第二操作约束指定AV 100不应超过最大限速以遵守交通规则。因此,响应于AV 100的操作速率大于最大限速,定义第二操作约束的第二线性时间逻辑表达式的值被确定为假。例如,运动段1416使AV 100加速以避免与对象1008碰撞。因此,避免了碰撞并且不违反第一操作约束。但违反了第二操作约束。规划模块404将操作度量OM

在实施例中,线性时间逻辑表达式与由AV 100的一个或多个乘客传感器1308测量的乘客舒适度水平相关联。继续上面示例,第三操作约束指定AV100不应超过最大加速度,以提供特定乘客舒适度水平。因此,定义第三操作约束的第三线性时间逻辑表达式包括AV100的与特定乘客舒适度水平相关联的最大速率或最大加速度。例如,规划模块404确定根据运动段1420操作AV 100将导致AV 100违反第三操作约束。然而,第三操作约束对导航安全的影响较小。根据运动段1420操作将避免碰撞,并且也不会导致AV 100的加速。因此,将较低的成本OM

在实施例中,规划模块404终止包括运动段1412、1416、1420的轨迹的生成。例如,规划模块404响应于分配给运动段的操作度量大于阈值而终止轨迹的生成。如果阈值是9,则规划模块404将不使用具有操作度量OM

图15示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具操作的示例。图15所示的操作环境1500包括具有多个车道1512、1516等的街道1508的交叉口1504。操作环境1500包括AV 100所位于的初始时空地点1520和AV 100行驶至的目的地时空地点1524。规划模块404确定从初始时空地点1520到目的地时空地点1524的轨迹。初始时空地点1520位于车道1516内,并且目的地时空地点1524位于车道1512内。

操作环境1500包括从初始时空地点1520到时空地点1532的运动段1528。运动段1536将时空地点1532连接到时空地点1540。运动段1544将时空地点1540连接到目的地时空地点1524。然而,根据运动段1536沿着车道1516导航AV 100将较慢,这是因为存在位于时空地点1540的另一运载工具。运动段1560将时空地点1532连接到时空地点1556,并且包括在时空地点1564处从车道1516到车道1512的车道改变。运动段1548将时空地点1556连接到目的地时空地点1524。根据运动段1560导航AV 100并且在时空地点1532处改变车道将更快,这是因为AV 100将避开位于时空地点1540处的运载工具。然而,运动段1560使AV 100在交叉口1504内改变车道。由AV 100接收的线性时间逻辑表达式定义的操作约束指定AV 100不应在交叉口内改变车道。以上参考图13更详细地描述和评价定义这种操作约束的线性时间逻辑表达式no_lane_change_in_intersection的示例。

如上文图13更详细地描述,线性时间逻辑表达式包括一个或多个线性时间逻辑命题。例如,第一线性时间逻辑命题in_intersection与运载工具是否位于交叉口内相对应。第二线性时间逻辑命题与运载工具正操作的车道相对应。例如,如上面更详细地描述,is_baseline是表示AV 100的时空地点的命题变量。因此,线性时间逻辑表达式no_lane_change_in_intersection的值与AV 100正在交叉口1504内操作期间AV 100是否改变AV100正操作的车道相对应。

在实施例中,线性时间逻辑表达式的值与AV 100是否正在由操作约束指定的方向上操作相对应。例如,操作约束指定AV 100应该在车道1512、1516的方向上操作。这种操作约束由时间逻辑表达式定义如下:

与表达式no_lane_change_in_intersection类似地评价上述时间逻辑表达式lane_direction。

规划模块404将表示用于操作AV 100的运动段1528、1536、1544、1560、1548的Kripke结构存储在数据存储单元142中以进行处理。在实施例中,规划模块404使用上面参考图13、14更详细描述的方法生成Kripke结构。在其它实施例中,规划模块404从远程服务器136接收Kripke结构。各个运动段(例如,运动段1560)包括多个时空地点(例如,时空地点1532、1564、1556)。Kripke结构的多个顶点中的各个顶点与多个时空地点中的相应时空地点相对应。Kripke结构的连接第一顶点和第二顶点的边与用于将AV 100从第一时空地点(例如,初始时空地点1520)操作到第二时空地点(例如,时空地点1532)的运动段(例如,运动段1528)相对应。

规划模块404基于Kripke结构使用线性时间逻辑表达式来评价各个运动段(例如,运动段1560)。如上面参考图14更详细地描述的,Kripke结构包括与各个运动段相对应的边。对于运动段1560的多个时空地点1532、1564、1556中的各个时空地点,规划模块404基于Kripke结构来评价线性时间逻辑表达式。以上参考图13更详细地描述线性时间逻辑表达式no_lane_change_in_intersection的评价。在图15的示例中,在与时空地点1532相对应的第一顶点处评价的线性时间逻辑表达式no_lane_change_in_intersection的第一值不同于在与时空地点1556相对应的第二顶点处评价的线性时间逻辑表达式的第二值。

规划模块404确定根据运动段1560操作AV 100是否违反由no_lane_change_in_intersection定义的操作约束。例如,规划模块404响应于在Kripke结构的一个顶点处线性时间逻辑表达式no_lane_change_in_intersection的值为假而确定为运动段1560违反操作约束。由于运动段1560将导致AV 100在时空地点1564处在交叉口1504内改变车道,因此线性时间逻辑表达式no_lane_change_in_intersection的值在时空地点1564处改变。响应于确定该值的改变,规划模块404在时空地点1564处在Kripke结构内插入地点标记,以将运动段1560划分为两个不同的运动段1568、1572。运动段1568将时空地点1532连接到时空地点1564。运动段1572将时空地点1564连接到时空地点1556。

规划模块404向基于地点标记的两个不同运动段1568、1572中的各个运动段分配操作度量。在实施例中,规划模块404通过确定操作约束的等级来分配操作度量。操作约束是分等级的多个操作约束中的一个操作约束。指定没有碰撞的另一操作约束的等级更高。例如,规划模块将较低的操作度量分配给各个运动段1568、1572,这是因为在图15的示例中这两个运动段涉及不包括碰撞的规则违反。规划模块基于各个运动段的操作度量来确定或生成用于操作AV 100的轨迹。在实施例中,将轨迹上的操作度量最小化。例如,AV100决定根据运动段1536、1544操作,这是因为它们具有较低的总成本。在实施例中,根据所确定的轨迹来操作AV 100是对该轨迹上的操作度量小于阈值的响应。例如,如果阈值是50,并且分配给运动段1568的操作度量是60,则轨迹将避开运动段1568。控制模块406根据所确定的轨迹操作AV 100。

使用线性时间逻辑的自主运载工具操作的处理

图16示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具操作的处理1600。在一个实施例中,由AV 100进行图16的处理。在其它实施例中,其它实体(例如,远程服务器136的一个或多个组件)进行处理1600的一些或所有步骤。同样地,实施例可以包括不同的和/或附加的步骤,或者以不同的顺序进行各步骤。

AV 100使用一个或多个处理器来存储(1604)定义用于操作AV 100的操作约束的线性时间逻辑表达式。AV 100位于第一时空地点(例如,时空地点1404)。线性时间逻辑表达式是表示AV 100的操作条件最终是否为真或AV 100的操作条件是否为真直至满足另一条件为止等的公式。操作约束是当在操作环境1300中操作时AV 100意图遵循的规则。操作约束是交通规则或增加AV 100中乘坐的乘客的乘客舒适度水平的约束。

AV 100使用一个或多个处理器来接收(1608)用于AV 100的第二时空地点(例如,时空地点1408)。例如,AV 100可以从远程服务器136接收第二时空地点1408。

AV 100使用一个或多个处理器来识别(1612)用于将AV 100从第一时空地点1404操作到第二时空地点1408的运动段(例如,运动段1420)。例如,AV 100基于传感器数据识别运动段1420。运动段是操作环境1300的可驾驶区域的一部分。例如,运动段包括车道、街道区间或交叉口。运动段例如指定当AV 100正根据该运动段操作时的AV 100的速率、AV 100的加速度或AV 100的方向取向。

AV 100使用一个或多个处理器以基于运动段1420确定(1616)线性时间逻辑表达式的值。例如,如果运动段1420遵守操作约束,则该值为真,或者如果运动段1420违反操作约束,则该值为假。AV 100通过确定线性时间逻辑表达式中的各个线性时间逻辑命题的值来评价线性时间逻辑表达式。因此,AV100通过逻辑地聚合一个或多个线性时间逻辑命题的一个或多个值以导出线性时间逻辑表达式的值来评价线性时间逻辑表达式。

AV 100使用一个或多个处理器以基于所确定的线性时间逻辑表达式的值生成(1620)用于根据运动段1420操作AV 100的操作度量(例如,操作度量OM

图17示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具操作的处理1700。在一个实施例中,由AV 100进行图17的处理。在其它实施例中,其它实体(例如,远程服务器136的一个或多个组件)进行处理1700的一些或所有步骤。同样地,实施例可以包括不同的和/或附加的步骤,或者以不同的顺序进行各步骤。

AV 100使用一个或多个处理器以接收(1704)用于操作AV 100的一个或多个操作约束。一个或多个操作约束中的各个操作约束由相应的线性时间逻辑表达式定义。在实施例中,AV 100从远程服务器136接收一个或多个操作约束。在其它实施例中,AV 100从数据存储单元142检索一个或多个操作约束。

AV 100使用一个或多个处理器以确定(1708)用于操作AV 100的一个或多个运动段(例如,运动段1412、1416、1420和1424)。一个或多个运动段中的各个运动段连接两个不同的时空地点,例如第一时空地点1404和第二时空地点1408。运动段是操作环境1300的可驾驶区域的一部分。例如,运动段包括车道、街道区间或交叉口。运动段指定在AV 100正根据运动段操作时的AV100的速率、AV 100的加速度或AV 100的方向取向。

AV 100使用一个或多个处理器以基于时间模态算子(例如,NEXT算子)来确定(1712)一个或多个时间逻辑表达式的值。例如,如果运动段1420遵守操作约束,则值为真,或者如果运动段1420违反操作约束,则值为假。AV 100通过确定线性时间逻辑表达式内的一个或多个线性时间逻辑命题中的各个线性时间逻辑命题的值来评价线性时间逻辑表达式。因此,AV 100通过逻辑地聚合一个或多个线性时间逻辑命题的一个或多个值以导出线性时间逻辑表达式的值来评价线性时间逻辑表达式。

响应于每个线性时间逻辑表达式的值为假,AV 100使用一个或多个处理器以将操作度量(例如,操作度量OM

AV 100使用一个或多个处理器以选择(1720)一个或多个运动段中的运动段(例如,运动段1424),使得所选择的运动段1424具有低于阈值的所分配的操作度量OM

如上文参考图13所描述的,AV 100使用控制模块(例如,控制模块406)以根据所选择的运动段1424来操作。

图18示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具操作的处理1800。在一个实施例中,由AV 100进行图18的处理。在其它实施例中,其它实体(例如,远程服务器136的一个或多个组件)进行处理1800的一些或所有步骤。同样地,实施例可以包括不同的和/或附加的步骤,或者以不同的顺序进行各步骤。

AV 100使用一个或多个处理器以接收(1804)多个运动段,例如运动段1412、1416、1420和1424。多个运动段中的各个运动段将第一时空地点(例如时空地点1404)连接到第二时空地点(例如时空地点1408)。运动段是操作环境1300的可驾驶区域的一部分。例如,运动段包括车道、街道区间或交叉口。运动段指定在AV 100正根据运动段操作时的AV 100的速率、AV 100的加速度或AV 100的方向取向。

AV 100使用一个或多个处理器以生成(1808)Kripke结构(例如,Kripke结构1400)。Kripke结构1400包括与第一时空地点1404相对应的第一顶点和与第二时空地点1408相对应的第二顶点。Kripke结构1400还包括多个边,其中多个边中的各个边与多个运动段中的相应运动段相对应。

AV 100使用一个或多个处理器以接收(1812)定义用于操作AV 100的操作约束的线性时间逻辑表达式。例如,操作约束指定AV 100不应与对象(例如,对象1008)碰撞。线性时间逻辑表达式是表示AV 100的操作条件最终是否为真或AV 100的操作条件是否为真直到满足另一条件为止等的公式。操作约束是当在操作环境1300中操作时AV 100意图遵循的规则。操作约束是交通规则或增加AV 100中乘坐的乘客的乘客舒适度水平的约束。

对于Kripke结构1400内的多个边中的各个边,响应于在第一顶点或第二顶点处确定的线性时间逻辑表达式的值为假,AV 100将操作度量(例如,OM

AV 100使用一个或多个处理器以选择(1820)与最低操作度量相关联的运动段(例如,运动段1424)以操作AV 100。例如,AV 100选择具有最低操作度量OM

图19示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具操作的处理1900。在一个实施例中,由AV 100进行图19的处理。在其它实施例中,其它实例(例如,远程服务器136的一个或多个组件)进行处理1900的一些或全部步骤。同样地,实施例可以包括不同的和/或附加的步骤,或者以不同的顺序进行各步骤。

AV 100使用一个或多个处理器以存储(1904)表示用于操作AV 100的运动段(例如,运动段1560)的Kripke结构。运动段1560包括多个时空地点(例如,时空地点1532、1564、1556)。Kripke结构包括与时空地点1532相对应的第一顶点和与时空地点1556相对应的第二顶点。Kripke结构还包括与运动段1560相对应的边。

对于多个时空地点中的各个时空地点(例如,时空地点1564):AV 100使用一个或多个处理器以基于Kripke结构来评价(1908)线性时间逻辑表达式。线性时间逻辑表达式定义用于根据运动段1560操作AV 100的操作约束。例如,由线性时间逻辑表达式定义的操作约束指定AV 100不应在交叉口内改变车道。以上参考图13更详细地描述和评价定义这种操作约束的线性时间逻辑表达式no_lane_change_in_intersection的示例。

响应于线性时间逻辑表达式的值在时空地点1564处改变,AV 100使用一个或多个处理器以在时空地点1564处在Kripke结构内插入(1912)地点标记。因此,AV 100将运动段1560划分为两个不同的运动段(例如,运动段1568、1572)。

AV 100使用一个或多个处理器以向基于时空地点1564处的地点标记的两个不同运动段1568、1572中的各个运动段(例如,运动段1568)分配(1916)操作度量。在实施例中,AV 100通过确定操作约束的等级来分配操作度量。操作约束是分等级的多个操作约束中的一个操作约束。指定没有碰撞的另一操作约束的等级更高。例如,由于两个运动段涉及不包括碰撞的规则违反,因此AV 100将较低的操作度量分配给各个运动段1568、1572。

AV 100使用一个或多个处理器以基于操作度量确定(1920)用于操作AV100的轨迹。在实施例中,轨迹上的操作度量被最小化。例如,AV 100确定根据运动段1536、1544操作,因为它们具有较低的总成本。

图20示出根据一个或多个实施例的使用线性时间逻辑的自主运载工具操作的处理2000。在一个实施例中,图20的处理由AV 100进行。在其它实施例中,其它实体(例如,远程服务器136的一个或多个组件)进行处理2000的一些或全部步骤。同样地,实施例可以包括不同的和/或附加的步骤,或者以不同的顺序进行各步骤。

AV 100使用一个或多个处理器以存储(2004)同AV 100与对象(例如,对象1008)的碰撞相对应的线性时间逻辑表达式。线性时间逻辑表达式从远程服务器136检索并存储在数据存储单元142中。例如,线性时间逻辑表达式包括AV 100的用以避免AV 100与对象1008的碰撞的最小速率。

AV 100使用一个或多个处理器以接收(2008)用于操作AV 100的第一运动段(例如,运动段1412)。第一运动段1412与道路、停车场、桥梁、施工区域、道路路缘、车道边界或交叉口相关联。例如,根据第一运动段1412操作AV 100使得AV 100穿过道路、停车场或桥梁。

AV 100使用一个或多个处理器以基于第一运动段1412确定(2012)线性时间逻辑表达式的第一值。例如,线性时间逻辑表达式的第一值被确定为假。因此,AV 100确定为根据第一运动段1412操作AV 100将导致AV 100与对象1008的碰撞。AV 100还确定为AV 100与对象1008的碰撞的第一概率大于阈值。例如,阈值为5%,并且碰撞的第一概率为30%。

响应于所确定的第一值指示AV 100与对象1008的碰撞的第一概率大于阈值,AV100使用控制模块406以根据不同于第一运动段1412的第二运动段(例如,运动段1424)来操作(2016)AV 100。基于第二运动段1424所确定的线性时间逻辑表达式的第二值指示AV 100与对象1008的碰撞的第二概率小于阈值。例如,碰撞的第二概率为0%。

附加实施例

在一些实施例中,运载工具的一个或多个处理器接收用于操作运载工具的一个或多个操作约束。一个或多个操作约束中的各个操作约束由相应的线性时间逻辑表达式定义。一个或多个处理器确定用于操作运载工具的一个或多个运动段。一个或多个运动段中的各个运动段连接两个不同的时空地点。一个或多个处理器基于时间模态算子确定运载工具的状态序列的一个或多个线性时间逻辑表达式的值。一个或多个处理器基于一个或多个线性时间逻辑表达式的值将操作度量分配给一个或多个运动段。一个或多个处理器选择一个或多个运动段中的运动段,使得所选择的运动段具有低于阈值的所分配的操作度量。运载工具的控制模块根据所选择的运动段操作运载工具。

在一些实施例中,将操作度量分配给一个或多个运动段包括确定一个或多个操作约束的等级。

在一些实施例中,操作度量的分配还包括表示由线性时间逻辑表达式定义的操作约束的等级作为运动段的操作度量。

在一些实施例中,一个或多个处理器在时空地点处将一个或多个运动段中的运动段划分为两个不同的运动段。

在一些实施例中,响应于线性时间逻辑表达式的值在时空地点处改变来进行运动段的划分。

在一些实施例中,确定一个或多个线性时间逻辑表达式的值包括评价一个或多个线性时间逻辑命题中的各个线性时间逻辑命题。

在一些实施例中,各个线性时间逻辑表达式包括一个或多个线性时间逻辑命题。

在一些实施例中,确定一个或多个线性时间逻辑表达式的值还包括聚合所评价的一个或多个线性时间逻辑命题中的各个线性时间逻辑命题。

在一些实施例中,一个或多个处理器随机化从运载工具所位于的环境的地图获得的时空信息以生成Kripke结构。

在一些实施例中,一个或多个处理器对从运载工具所位于的环境的地图获得的时空信息进行采样以生成Kripke结构。

在一些实施例中,响应于在Kripke结构的第一顶点处评价的线性时间逻辑表达式的第一值与在Kripke结构的第二顶点处评价的线性时间逻辑表达式的第二值不同,违反操作约束。线性时间逻辑表达式定义操作约束。

在一些实施例中,确定一个或多个线性时间逻辑表达式的值包括确定线性时间逻辑表达式的值是真还是假。

在一些实施例中,根据所选择的运动段操作运载工具违反了一个或多个操作约束中的操作约束。

在一些实施例中,响应于定义操作约束的线性时间逻辑表达式的值为假,根据所选择的运动段操作运载工具违反了操作约束。

在一些实施例中,生成Kripke结构。

在一些实施例中,Kripke结构的第一顶点与运载工具的两个不同时空地点中的第一时空地点相对应。

在一些实施例中,Kripke结构的第二顶点与两个不同时空地点中的第二时空地点相对应。

在一些实施例中,Kripke结构的连接第一顶点和第二顶点的边与用于将运载工具从第一时空地点操作到第二时空地点的运动段相对应。

在一些实施例中,Kripke结构包括多个顶点。

在一些实施例中,确定一个或多个线性时间逻辑表达式的值包括在多个顶点中的各个顶点处评价一个或多个线性时间逻辑表达式。

在一些实施例中,运载工具的一个或多个处理器接收多个运动段。多个运动段中的各个运动段将第一时空地点连接到第二时空地点。一个或多个处理器生成Kripke结构,该Kripke结构包括与第一时空地点相对应的第一顶点、与第二时空地点相对应的第二顶点、以及多个边。多个边中的各个边与多个运动段中的相应运动段相对应。一个或多个处理器接收定义用于操作运载工具的操作约束的线性时间逻辑表达式。对于Kripke结构内的多个边中的各个边:响应于在第一顶点或第二顶点处确定的线性时间逻辑表达式的值为假,将操作度量分配给与该边相对应的运动段。一个或多个处理器选择与最低操作度量相关联的运动段以操作运载工具。

在一些实施例中,操作度量的分配包括基于从运载工具的一个或多个传感器获得的传感器数据来确定从运载工具到对象的距离。

在一些实施例中,操作度量随着从运载工具到对象的距离的减小而增加。

在一些实施例中,一个或多个处理器终止包括多个运动段中的运动段的轨迹的生成。

在一些实施例中,响应于分配给运动段的操作度量大于阈值,进行轨迹的生成的终止。

在一些实施例中,线性时间逻辑表达式是多个等级线性时间逻辑表达式之一。

在一些实施例中,多个等级线性时间逻辑表达式中的第一线性时间逻辑表达式的操作度量大于多个等级线性时间逻辑表达式中的第二线性时间逻辑表达式的操作度量。

在一些实施例中,第一线性时间逻辑表达式同运载工具与对象的碰撞的概率相关联,并且第二线性时间逻辑表达式与由运载工具的一个或多个乘客传感器测量的乘客舒适度水平相关联。

在一些实施例中,响应于运载工具与对象的碰撞的概率大于阈值,线性时间逻辑表达式的值被确定为假。

在一些实施例中,线性时间逻辑表达式包括表示运载工具的(x,y)位置的命题变量。

在一些实施例中,运载工具的(x,y)位置与运载工具是位于车道内还是位于交叉口内相关联。

在一些实施例中,生成Kripke结构包括:对于各个运动段,确定当根据该运动段操作运载工具时运载工具相对于对象的横向误差容限。

在一些实施例中,生成Kripke结构还包括使用一个或多个处理器将多个边中的各个边与所确定的横向误差容限相关联。

在一些实施例中,线性时间逻辑表达式包括运载工具的用以避免运载工具与对象的碰撞的最小速率。

在一些实施例中,线性时间逻辑表达式包括运载工具的用以避免运载工具与对象的碰撞的最小加速度。

在一些实施例中,线性时间逻辑表达式包括运载工具的与由位于运载工具上的乘客传感器测量的乘客舒适度水平相关联的最大速率或最大加速度。

在一些实施例中,运载工具的控制模块在违反操作约束以避免运载工具与对象的碰撞的同时根据所选择的运动段操作运载工具。

在一些实施例中,运载工具的一个或多个处理器存储表示用于操作运载工具的运动段的Kripke结构。运动段包括多个时空地点。对于多个时空地点中的各个时空地点:一个或多个处理器基于Kripke结构评价线性时间逻辑表达式。线性时间逻辑表达式定义用于根据运动段操作运载工具的操作约束。响应于线性时间逻辑表达式的值在时空地点处改变,一个或多个处理器在时空地点处在Kripke结构内插入地点标记,以将运动段划分为两个不同的运动段。一个或多个处理器向基于地点标记的两个不同运动段中的各个运动段分配操作度量。一个或多个处理器基于操作度量确定用于操作运载工具的轨迹。

在一些实施例中,轨迹上的操作度量被最小化。

在一些实施例中,线性时间逻辑表达式包括一个或多个线性时间逻辑命题。

在一些实施例中,一个或多个线性时间逻辑命题中的第一线性时间逻辑命题与运载工具是否位于交叉口内相对应。

在一些实施例中,一个或多个线性时间逻辑命题中的第二线性时间逻辑命题与运载工具正操作的车道相对应。

在一些实施例中,线性时间逻辑表达式的值与运载工具正在交叉口内操作期间运载工具是否正在改变运载工具正操作的车道相对应。

在一些实施例中,线性时间逻辑表达式的值与运载工具是否正在由操作约束指定的方向上操作相对应。

在一些实施例中,运载工具的控制模块根据所确定的轨迹操作运载工具。

在一些实施例中,确定根据运动段操作运载工具是否违反操作约束。

在一些实施例中,响应于线性时间逻辑表达式的值为假,确定为运载工具的操作违反操作约束。

在一些实施例中,线性时间逻辑表达式的评价包括基于时间模态算子确定运载工具的状态序列的线性时间逻辑表达式的值。

在一些实施例中,响应于操作度量小于阈值,根据所确定的轨迹来操作运载工具。

在一些实施例中,操作度量的分配包括确定操作约束的等级。

在一些实施例中,操作约束是分等级的多个操作约束中的一个操作约束。

在一些实施例中,生成Kripke结构。Kripke结构的多个顶点中的各个顶点与多个时空地点中的相应时空地点相对应。

在一些实施例中,Kripke结构的连接第一顶点和第二顶点的边与用于将运载工具从第一时空地点操作到第二时空地点的运动段相对应。

在一些实施例中,在第一顶点处评价的线性时间逻辑表达式的第一值不同于在第二顶点处评价的线性时间逻辑表达式的第二值。

在先前描述中,已经参考许多具体细节描述了本发明的实施例,这些具体细节可因实现而不同。因此,说明书和附图应被视为说明性的,而非限制性意义的。本发明范围的唯一且排他的指示、以及申请人期望是本发明范围的内容是以发布权利要求书的具体形式从本申请发布的权利要求书的字面和等同范围,包括任何后续修正。本文中明确阐述的用于被包括在此类权利要求中的术语的任何定义应当以此类术语如在权利要求书中所使用的意义为准。另外,当在先前的说明书或所附权利要求书使用术语“还包括”时,该短语的下文可以是附加的步骤或实体、或先前所述的步骤或实体的子步骤/子实体。

相关技术
  • 使用线性时间逻辑的自主运载工具操作
  • 用于自主运载工具操作管理的定向调整动作
技术分类

06120113143824