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

自动车辆的伪对象检测

文献发布时间:2023-06-19 11:55:48


自动车辆的伪对象检测

相关申请的交叉引用

本申请要求于2018年12月12日提交的第16/217,899号申请序列的权益,其公开内容通过引用并入本文。

背景技术

自动驾驶车辆,诸如在自动驾驶模式下操作时不需要人类驾驶员的车辆,可以用于帮助将乘客或物品从一个位置运输到另一个位置。自动驾驶车辆的重要组件是感知系统,它允许车辆使用传感器(诸如相机、雷达、LIDAR传感器和其他类似设备)感知和解释其周围环境。例如,感知系统和/或车辆的计算设备可以处理来自这些传感器的数据,以便识别对象及其特征,诸如位置、形状、尺寸、朝向、走向、加速或减速、类型等。该信息对于允许车辆的计算系统为车辆做出适当的驾驶决策至关重要。然而,车辆的计算设备可能难以区分车辆必须响应的实际对象(actual object)和可以忽略的伪对象(spurious object)。

发明内容

本公开的各方面提供了训练模型的方法。该方法包括由一个或多个计算设备接收训练数据,该训练数据包括由车辆的LIDAR传感器生成的多个LIDAR数据点,每个给定的LIDAR数据点(1)包括位置信息和强度信息,并且(2)与给定的LIDAR数据点的除了强度信息之外的波形数据相关联,并且其中,多个LIDAR数据点中的至少一个LIDAR数据点还与标识伪对象的标签相关联,伪对象可以通过与多个LIDAR数据点中的最后至少一个LIDAR数据点相关联的波形数据与实体对象区分开,并且车辆能够驾驶通过伪对象;以及由一个或多个计算设备使用训练数据来训练模型,以便提高模型的准确度,并且其中,该模型被配置为对于给定的输入LIDAR数据点和相对应的波形数据,提供指示给定的输入LIDAR数据点是否是伪对象的输出。

在一个示例中,其中伪对象包括对应于车辆废气、灰尘、雨、雪或雾中的至少一种的对象。在另一个示例中,该输出提供了给定的输入LIDAR数据点对应于伪对象的可能性。在另一个示例中,对于多个LIDAR数据点中的特定LIDAR数据点,训练数据还包括峰伸长率(peak elongation)。在另一示例中,对于多个LIDAR数据点中的特定LIDAR数据点,训练数据还包括与特定LIDAR数据点相关联的波形数据中的峰的数量(a number of peaks)。在另一个示例中,对于多个LIDAR数据点中的特定LIDAR数据点,训练数据还包括与特定LIDAR数据点相关联的波形数据的峰宽度(peak width)。在另一示例中,多个LIDAR数据点中的特定LIDAR数据点的波形数据包括特定LIDAR数据点的在LIDAR传感器处接收的多个光的样本。在另一个示例中,标签还识别伪对象的类型,使得输出还包括给定的输入LIDAR数据点的伪对象的类型。在另一个示例中,多个LIDAR数据点对应于由LIDAR传感器捕获的单个帧。在另一个示例中,该帧对应于LIDAR传感器的一个360度旋转。在另一个示例中,伪对象是降水(precipitation)。在另一个示例中,伪对象是灰尘。在另一个示例中,伪对象是雾。

本公开的另一方面提供了控制车辆的方法。该方法包括:由一个或多个计算设备接收由车辆的LIDAR传感器生成的多个LIDAR数据点,多个LIDAR数据点中的每个给定的LIDAR数据点(1)包括位置信息和强度信息,并且(2)与给定的LIDAR数据点的除了强度信息之外的波形数据相关联;由一个或多个计算设备使用与多个LIDAR数据点相关联的波形数据,确定多个LIDAR数据点中的一个或多个LIDAR数据点对应于伪对象,伪对象可通过与多个LIDAR数据点中的最后至少一个(last least one)LIDAR数据点相关联的波形数据来与实体对象区分开,并且车辆能够驾驶通过伪对象;基于所述确定,由一个或多个计算设备过滤多个LIDAR数据点;以及由一个或多个计算设备使用过滤后的多个LIDAR数据点来以自动驾驶模式控制车辆。

在一个示例中,伪对象包括对应于车辆废气、灰尘、雨、雪或雾中的至少一种的对象。在另一个示例中,该确定还基于一个或多个启发式算法(heuristics)。在该示例中,一个或多个启发式算法基于特定LIDAR数据点的波形数据的峰伸长率。附加地或替代地,一个或多个启发式算法基于特定LIDAR数据点的波形数据中的峰的数量。附加地或替代地,一个或多个启发式算法基于特定LIDAR数据点的波形数据中的峰宽度。附加地或替代地,多个LIDAR数据点中的特定LIDAR数据点还与相对于预期峰宽度的峰伸长率相关联,并且其中,峰伸长率用于确定LIDAR数据点是否对应于车辆能够驾驶通过的伪对象。在另一个示例中,多个LIDAR数据点中的特定LIDAR数据点与特定LIDAR数据点的波形数据中的多个峰相关联,并且其中,多个峰中的每个峰的峰宽度被用于确定特定LIDAR数据点是否对应于车辆能够驾驶通过的伪对象。在另一个示例中,与多个LIDAR数据点中的特定LIDAR数据点相关联的波形数据包括特定LIDAR数据点的在LIDAR传感器处接收的多个光的样本。在另一个示例中,该方法还包括使用与一个或多个LIDAR数据点相关联的波形数据来确定伪对象的类型。在另一个示例中,多个LIDAR数据点对应于由LIDAR传感器捕获的单个帧。在该示例中,该帧对应于LIDAR传感器的一个360度旋转。在另一个示例中,该方法还包括,在过滤之前,对被确定为对应于伪对象的一个或多个LIDAR数据点进行组合(grouping),使得从多个LIDAR数据点中仅过滤出组合的(grouped)LIDAR数据点。在该示例中,所述组合基于给定空间体积内的被确定为对应于伪对象的点的阈值最小密度。此外,当以自动驾驶模式控制车辆时,所述过滤(filtering)允许车辆的一个或多个系统忽略一个或多个LIDAR数据点。在另一个示例中,该方法还包括,在过滤之前,基于一个或多个LIDAR数据点的位置是否对应于具有来自车辆的第二传感器的特定信号的位置来确认该确定,并且其中,该过滤还基于该确认。在该示例中,第二个传感器是雷达单元。在另一个示例中,该方法还包括接收识别多个LIDAR数据点中的至少一些LIDAR数据点对应于作为特定类型的道路使用者的对象的信息,并且在过滤之前,基于所接收的信息,基于一个或多个LIDAR数据点是否对应于特定类型的道路使用者来确认该确定,并且其中,该过滤还基于该确认。在该示例中,特定类型是行人、骑自行车者或车辆中的一种。附加地或替代地,该信息包括对象的边界框(bounding box),并且还基于一个或多个LIDAR数据点是否与边界框内的位置相关联来确认该确定。在另一个示例中,伪对象是降水。在另一个示例中,伪对象是灰尘。在另一个示例中,伪对象是雾。

附图说明

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

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

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

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

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

图6是根据本公开的各方面的波形的示例。

图7是根据本公开的各方面的波形的示例。

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

图9是根据本公开的各方面的车辆及其环境的示例性俯视图。

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

图11是根据本公开的各方面的边界框和数据的示例。

图12是根据本公开的各方面的边界框和数据的另一示例。

具体实施方式

本技术涉及识别对可以驾驶通过的伪对象或材料的检测,如车辆废气、灰尘、降水、雾等。当从LIDAR数据中观察时,这些伪对象可能看起来像是实体对象,但是可以从它们的波形数据中与实体对象区分开来。为此,可以使用不同的方法。例如,可以使用基于启发式算法的方法来确定伪对象。替代地,可以训练模型来确定给定的LIDAR传感器点是否可能对应于伪对象。模型本身可以是机器学习模型,包括诸如深度神经网络的神经网络、分类器、决策树、提升树等。

在一个示例中,可以使用多个启发式算法来确定LIDAR传感器数据是否对应于伪对象。换句话说,LIDAR传感器可以通过发射从对象反射并返回传感器的光脉冲来工作。返回光在被传感器接收到时被采样,以提供在被采样时的光的强度。这些样本可以一起用于确定例如在若干纳秒时段内的对象的波形。

典型地,该波形被处理以确定光行进的距离以及返回光(returning light)的强度。然而,波形也可以被处理以识别波形数据,包括峰宽度、峰的数量、峰的形状和峰伸长率。这反过来可用于识别伪对象。

例如,来自伪对象的波形可能趋向于变得伸展(stretch out),因为一些光会从伪对象反射回来,并且另一些光则可能穿过伪对象。波形的伸展程度和“隆起(hump)”或峰的数量可能暗示着光部分地穿过了第一个对象(意味着它可能是伪对象),并被第一个对象后面的一个或多个其他的对象反射。在这点上,启发式算法可以定义可用于检测或识别伪对象的波形的特征。

如上所述,作为基于启发式算法的方法的替代,可以训练模型来检测伪对象。为了训练模型,必须生成训练数据。例如,可以分析和标记(labeled)LIDAR数据。这些标签可以识别LIDAR数据的伪LIDAR数据点。标签可以最初由例如人类操作者施加,并且在一些情况下,部分由车辆的感知系统和/或通过将机器学习模型应用于LIDAR数据来施加。虽然帧的LIDAR数据点可以仅包括位置和强度信息,但是训练数据也可以包括附加细节,诸如那些LIDAR数据点的波形。除了波形本身,关于波形的其他信息也可以用作训练数据。然后,可以使用训练数据来训练模型,以识别输入帧的哪些LIDAR数据点对应于伪对象。因此,应用于LIDAR数据的模型的输出可以是所有LIDAR数据点以及是伪对象的相应可能性的列表,或者替代地,仅仅是那些具有足够高的可能性被视为伪对象的LIDAR数据点的列表。

启发式算法和/或模型然后可以被提供给一个或多个车辆,以便允许那些车辆的计算设备做出更好的知情驾驶决策。例如,在操作期间,由车辆的感知系统的LIDAR传感器捕获的每个帧可以被处理,以便识别哪些LIDAR数据点可能对应于伪对象。被识别为伪对象的这些LIDAR数据点然后可以被组合(grouped)在一起。然后可以从帧中过滤出这些组合的点和/或边界框。然后,所得到的过滤后的帧可以用于为车辆做出驾驶决策。

本文描述的特征允许生成用于检测伪对象的有用且有效的模型。虽然典型的方法可能依赖于强度和上下文信息,但是通过使用波形数据,该模型在检测伪对象方面可以显著地更加有效。此外,该模型可以与其他信息和启发式算法相结合,不仅检测伪对象,而且在决定如何控制车辆时确定应该和不应该过滤或忽略这些伪对象中的哪一些。

示例系统

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

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

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

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

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

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

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

在一个示例中,计算设备110可以是结合到车辆100中的自动驾驶计算系统。自动驾驶计算系统能够与车辆的各种组件进行通信,以便以自动驾驶模式控制车辆。例如,回到图1,计算设备110可以与车辆100的各种系统诸如减速系统160、加速系统162、转向系统164、信号系统166、规划系统168、定位系统170和感知系统172进行通信,以便在自动驾驶模式下根据存储器130的指令134控制车辆100的运动、速度等。同样,尽管这些系统被示为在计算设备110的外部,但是实际上,这些系统也可以被结合到计算设备110中,同样作为用于控制车辆100的自动驾驶计算系统。

作为示例,计算设备110可以与减速系统160和加速系统162交互,以便控制车辆的速度。类似地,计算设备110可以使用转向系统164来控制车辆100的方向。例如,如果车辆100被配置为在道路上使用,诸如汽车或卡车,则转向系统可以包括控制车轮的角度以转动车辆的组件。计算设备110可以使用信号系统166来向其他驾驶员或车辆发出车辆的意图的信号,例如,在需要时通过点亮转向信号灯或刹车灯。

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

图2是包括十字路口202和204的道路段的地图信息200的示例。地图信息200可以是存储在计算设备110的存储器130中的地图信息的本地版本。地图信息的其他版本也可以存储在下面进一步讨论的存储系统450中。在该示例中,地图信息200包括标识车道线210、212、214、交通灯220、222、人行横道230、人行道240、停车标志250、252和让行标志260的形状、位置和其他特征的信息。在这方面,地图信息包括交通灯220、222的三维(3D)位置以及标识由这些交通灯控制的车道的信息。例如,交通灯220可以由与路段218相对应的车道216控制。为了清楚和简单,仅描绘了路段218。然而,地图信息200可以包括地图信息的可驾驶区域的所有可驾驶区域的路段。换句话说,地图信息在本文中被描述为基于图像的地图,地图信息不需要完全基于图像(例如,光栅)。例如,地图信息可以包括一个或多个道路图或信息的图形网络,诸如道路、车道、十字路口以及这些特征之间的连接,这些特征可以由路段来表示。每个特征可以被存储为图形数据,并且可以与诸如地理位置以及它是否连接到其他相关特征的信息相关联,例如,停车标志可以连接到道路和十字路口等。在一些示例中,相关联的数据可以包括道路图的基于网格的索引,以允许某些道路图特征的高效查找。

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

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

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

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

车辆的各种系统可以使用自动驾驶车辆控制软件来操作,以便确定如何控制车辆。作为示例,感知系统172的感知系统软件模块可以使用由自动驾驶车辆的一个或多个传感器(诸如相机、LIDAR传感器、雷达单元、声纳单元、麦克风等)生成的传感器数据,以检测和识别对象及其特征。这些特征可包括位置、类型、走向、朝向、速度、加速度、加速度变化、尺寸、形状等。在一些情况下,特征可以被输入到行为预测系统软件模块中,该模块使用基于对象类型的各种行为模型来输出检测到的对象的预测的未来行为。在其他情况下,特征可以被放入一个或多个检测系统软件模块中,例如被配置为检测已知交通信号的状态的交通灯检测系统软件模块、被配置为从由车辆的一个或多个传感器生成的传感器数据中检测建筑区域的建筑区域检测系统软件模块、以及被配置为从由车辆的传感器生成的传感器数据中检测紧急车辆的紧急车辆检测系统。这些检测系统软件模块中的每一个检测系统软件模块都可以使用各种模型来输出建筑区域或对象是紧急车辆的可能性。检测到的对象、预测的未来行为、来自检测系统软件模块的各种可能性、标识车辆的环境的地图信息、来自定位系统170的标识车辆位置和朝向的定位信息、车辆的目的地以及来自车辆的各种其他系统的反馈可以被输入到规划系统168的规划系统软件模块中。规划系统和/或计算设备110可以使用该输入来生成车辆在未来的一些短暂时间段内要遵循的路线和轨迹。计算设备110的控制系统软件模块可以被配置成例如通过控制车辆的制动、加速和转向来控制车辆的运动,以便遵循轨迹。

计算设备110可以通过控制各种组件来控制车辆。例如,作为示例,计算设备110可以使用来自详细地图信息和规划系统168的数据完全自动地将车辆导航到目的地位置。计算设备110可以使用定位系统170来确定车辆的位置,并且使用感知系统172检测对象并在需要时对检测到的对象做出响应以安全到达该位置。同样,为了做到这一点,计算设备110可以生成轨迹,并且例如通过使车辆加速(例如,通过加速系统162向引擎或动力系统174提供燃料或其他能量)、减速(例如,通过减速系统160减少供应给引擎或动力系统174的燃料、改变档位和/或通过施加制动)、改变方向(例如,通过转向系统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,以及前述的各种组合。这种通信可以由能够向其他计算设备发送数据和从其他计算设备接收数据的任何设备(诸如调制解调器和无线接口)来实现。

在一个示例中,一个或多个计算设备110可以包括一个或多个具有多个计算设备的服务器计算设备,例如,负载平衡的服务器群,其与网络的不同节点交换信息,目的是从其他计算设备接收数据、处理数据并向其他计算设备发送数据。例如,一个或多个计算设备410可以包括一个或多个服务器计算设备,一个或多个服务器计算设备能够经由网络460与车辆100的计算设备110或车辆100A、100B的类似计算设备以及计算设备420、430、440进行通信。例如,车辆100、100A、100B可以是车队的一部分,车队能够向服务器计算设备410发送信息并且从服务器计算设备410接收信息。此外,服务器计算设备410可以使用网络460向用户(诸如用户422、432、442)发送信息和在显示器(诸如计算设备420、430、440的显示器424、434、444)上呈现信息。在这点上,计算设备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所示的手表。作为示例,用户可以使用小型键盘、小键盘、麦克风、使用相机的可视信号或触摸屏来输入信息。

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

存储系统450可以存储各种类型的信息,如下文更详细描述的。该信息可以由诸如一个或多个服务器计算设备的服务器计算设备检索或以其他方式访问,以便执行本文描述的特征的一些或所有特征。该信息可以由诸如一个或多个服务器计算设备410的服务器计算设备检索或以其他方式访问,以便执行本文描述的特征的一些或所有特征。

存储系统450可以存储由车辆的感知系统(诸如车辆100的感知系统172)捕获的传感器数据。例如,LIDAR传感器数据可以包括对应于表面的位置和强度(或反射率)的数据点,LIDAR传感器生成的光从该表面反射回LIDAR传感器。除了该信息之外,存储系统可以存储LIDAR数据的相应波形数据。换句话说,LIDAR传感器可以通过发射从对象反射并返回传感器的脉冲或短脉冲光来工作。然后,当传感器接收返回光或返回(return)时,对其进行采样,以提供采样时的光的强度。这些样本可以一起用于确定例如在若干纳秒时段内特定返回的波形。因此,每个返回可以对应于从对象的表面反射的光,并且可以用于基于返回到达传感器所花费的时间以及返回的强度来生成该表面的LIDAR数据点。换句话说,可以通过LIDAR传感器本身的计算组件来使用波形,以便确定光行进的距离以及返回光的强度。该处理可以提供每个LIDAR数据点的位置和强度(幅度)。在LIDAR传感器的单次旋转(例如360度旋转)期间,脉冲和相应返回的LIDAR数据点的收集可以被称为LIDAR传感器帧。

还可以分析波形以提供前述波形数据,包括峰宽度、峰的数量、峰的形状和峰伸长率。例如,转到图6,提供了实体(非伪)表面的示例波形600。在该示例中,对于来自单个脉冲的单次返回,存在对应于多个样本630-639的曲线拟合(curve fit)的单个峰610。峰610(A1)的幅度对应于LIDAR数据点的强度,并且峰610的宽度W1对应于采样强度高于背景强度(例如,噪音)的时间间隔。峰610的形状指示样本之间在时间间隔上的强度变化。

在图7中,提供了伪对象的示例波形700。如上所述,除峰强度之外的波形(或波形数据)的特征可以允许将相应的LIDAR数据点与实体对象区分开来。在该示例中,存在多个峰710、720或拟合多个样本730-739的曲线。此外,不是一个返回,而是一个脉冲导致多个返回,这里是两次。同样,峰710的幅度对应于波形的LIDAR数据点的强度或强度信息。此外,峰710的幅度A1或强度大于峰720的幅度A3或强度。同样,峰710、720的宽度W2、W3对应于采样强度高于背景强度(例如,噪音)的时间间隔。峰710、720的形状指示样本之间在时间间隔上的强度变化。

存储系统450可以存储多个启发式算法478。如下文进一步讨论的,这些启发式算法可用于基于前述波形数据来确定LIDAR传感器数据是否对应于伪对象。例如,与来自实体对象的返回的波形相比,来自伪对象的波形可能倾向于变得伸展,因为光的一些将从伪对象反射回来,并且光的另一些可能穿过伪对象。与实体对象的峰的预期宽度相比,峰被伸展或伸长的程度可以对应于峰伸长的幅度的量。例如,如果预期宽度是T(例如,以纳秒为单位测量),并且实际宽度是其两倍或2T,则峰伸长率可能是100%,因此很可能对应于伪对象。因此,该峰伸长率以及单次返回的峰的数量可以暗示着脉冲的光部分地穿过第一对象(意味着它可能是伪对象),并且被第一对象之外的一个或多个其他对象反射。

在这点上,启发式算法可以定义伪对象的波形的特征。例如,对于第一个启发式算法,如果在LIDAR数据点的波形中有一个以上的峰,这可以用于确定返回的波形数据指示伪对象。例如,在图6的示例中,波形600仅包括单个峰,这指示波形600对应于实体对象。同时,在图7的示例中,波形700包括不止一个峰,这指示波形700对应于伪对象。对于另一个示例,对于第二个启发式算法,峰伸长的量,或者更确切地说,返回到LIDAR传感器的波形的宽度与从LIDAR传感器射出的光束的光的波形的宽度的变化,可以用于确定波形对应于伪对象。换句话说,伸长率越大,返回的波形数据指示伪对象的可能性就越大。例如,峰710的宽度大于峰610的宽度。因此,这可以用于确定波形对应于伪对象。作为第二种启发式算法,也可以使用来自同一脉冲的两个峰的相对强度。例如,如果同一脉冲的第一个峰的强度低于第二个峰的强度(即,有多个返回),如在峰710和峰720的示例中,这可能是第一个峰是伪点的强烈指示。尤其是第一个脉冲也伸长的时候。作为另一个示例,波形的特定形状(例如,山形(mountain)与孤峰形(butte))也可以用作启发式算法来确定波形是否对应于伪对象。也可以使用点强度、俯仰角(elevation angle)、离地高度的组合的其他启发式算法。例如,其下没有任何点的离地面一米的低强度LIDAR数据点很可能是伪对象(例如,由激光击中飞行昆虫引起),而远距离(远离车辆)和接近地面的低强度点可能不是伪对象(例如,由道路上的黑暗对象引起)。因此,这些启发式算法可以通过观察伪对象的波形来“手动调整(handtuned)”。

存储系统450以及车辆100的数据132可以存储一个或多个模型470以及每个这样的模型的模型参数值472。例如,存储系统可以存储一个或多个用于确定感兴趣的车道的状态的模型。模型470可以包括分类器,诸如神经网络、深度神经网络、决策树、提升树等。此外,存储系统450可以包括可以用于训练模型的训练子系统476,如下面进一步讨论的。

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

示例方法

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

如上所述,作为基于启发式算法的方法的替代,可以训练模型来检测伪对象。为了能够使用一个或多个模型470的模型来识别交通灯,该模型可以首先被“离线”训练,即提前和/或在远程计算设备处训练,然后经由网络460和无线网络连接156发送到车辆100。例如,一个或多个服务器计算设备410可以通过首先从存储系统450检索训练数据474来生成模型参数值472。

为了生成训练数据474,可以分析和标记LIDAR传感器数据。这些标签可以标识LIDAR数据的伪LIDAR数据点。标签可以最初由例如人类操作者施加,并且在一些情况下,部分由车辆的感知系统和/或通过将机器学习模型应用于LIDAR数据来施加。例如,车辆的感知系统可以为对象或对应于该对象的多个LIDAR数据点提供边界框(bounding box),此后,如果需要,人类操作者可以调整边界框,并添加将该对象标识为伪对象的标签。附加地或替代地,可以由操作者创建边界框并将其应用于LIDAR数据。

在一些情况下,人类贴标人员(labeler)可以只将单独的(individual)点标记为伪,因此不需要边界框。例如,可以向人类操作者显示一系列带有时间戳的LIDAR传感器帧,例如3个或更多或更少,并且可以将前述标签施加到与伪对象相对应的那些帧中的伪对象。每一帧可以对应于从LIDAR传感器的一个或多个360度旋转生成的数据,并且可以按时间顺序排列,使得帧随着时间前进。在这方面,第一帧可以对应于紧接在第二帧之前的时间,第二帧可以对应于紧接在第三帧之前的时间。作为另一种类似的方法,取代标记伪点,人类贴标人员可以标记所以非伪对象,而任何剩余都可以被自动地标记为伪。

虽然帧的LIDAR数据点可以仅包括位置和强度信息,但是训练数据也可以包括附加细节,诸如LIDAR数据点的波形数据。除了波形本身,关于波形的其他信息也可以用作训练数据。例如,其它波形数据,例如峰伸长率、峰宽度和脉冲的数量也可以包括在训练数据中。

然后可以使用训练数据474来训练模型。例如,上述帧以及波形数据可以用作训练输入,波形数据包括帧的每个LIDAR数据点的波形、峰伸长率、峰宽度和峰的数量。标签和与这些标签相关联的任何LIDAR数据点可用作训练输出。训练可以提供参数值472,并且用于训练模型的训练数据越多,参数值就越精确。因此,用于训练模型的训练数据越多,模型在识别伪对象时就越精确。准确性可以指的是具有更精确的模型,具有更少的与召回率(recall)、受试者操作特征(ROC)曲线和相应特征(即,曲线下面积)等的折衷。换句话说,可以训练模型来识别输入帧的哪些LIDAR数据点对应于伪对象。在这点上,每个帧的每个LIDAR数据点及其对应的波形、波形的脉冲伸长率(pulse elongation)、波形的峰宽度和波形中的峰的数量可以由模型单独分析。因此,输出可以是所有LIDAR数据点的列表及其为伪对象的相应可能性,或者替代地,仅是那些具有足够高的可能性被视为伪的LIDAR数据点的列表。这可以例如使用选择的手动调整的阈值来确定,当然,给定所期望的在精确度与召回率之间的折衷。

在一些情况下,如果标签包括关于伪对象的附加细节,这可以用于使用模型对伪对象进行更精细的确定。例如,如果标签指示伪对象的类型,诸如雨或雾,模型也可以被训练以识别任何给定的LIDAR数据点的伪对象的类型。例如,这可能有助于确定车辆应该如何响应。例如,如果检测到雨,可以开启雨刷器来清洁传感器等,而如果检测到灰尘或雾,车辆可能会减速,并可能预测其他道路使用者也可能减速。

在一些情况下,还可以使用附加信息来训练模型。例如,当LIDAR数据帧被捕获时,车辆周围一些区域内的地图信息也可以用作训练输入。此外,来自车辆其他传感器的传感器数据,诸如相机图像和来自麦克风的音频,也可以用于训练模型。例如,相机图像可以捕获灰尘、雨或雪等伪对象,并且麦克风可以捕获雨声。因此,这些附加的数据可能有助于区分伪对象和非伪对象。

图8是根据本公开的各方面的示例流程图800,示例流程图可以由一个或多个计算设备的一个或多个处理器来执行,诸如服务器计算设备410的处理器,以便训练用于检测伪对象的模型。例如,在框810,接收包括由车辆的LIDAR传感器生成的多个LIDAR数据点的训练数据。每个给定的LIDAR数据点包括位置信息和强度信息,并且与给定的LIDAR数据点的除了强度信息之外的波形数据相关联。多个LIDAR数据点中的至少一个LIDAR数据点还与标识伪对象的标签相关联,伪对象基于多个LIDAR数据点中的至少一个LIDAR数据点的波形数据与实体对象相区分,并且车辆能够驾驶通过伪对象。在框820,使用训练数据训练模型以便提高模型的准确性。该模型被配置为对于给定的输入LIDAR数据点和相应的波形数据,提供指示给定的输入LIDAR数据点是否是伪对象的输出。

然后,可以将多个启发式算法和/或训练的模型提供给一个或多个车辆,以便允许这些车辆的计算设备做出更佳的知情驾驶决策。例如,多个启发式算法478和/或模型470和模型参数值472可以例如经由网络460被发送到车辆100的计算设备110,或者通过其他方式将该信息加载到计算设备110中。然后,该信息可以存储在计算设备110的存储器130中,以便允许计算设备使用该模型来为车辆100做出驾驶决策。

出于演示的目的,图9描绘了车辆100在包括十字路口902和904的道路段900上被操纵。在图9的示例900中,车辆100和车辆980都正在接近十字路口902。与车辆980相邻的是行人982。在车辆980和行人982周围的区域中,还存在车辆废气云984、986(这些对于人眼来说不一定是可见的,但是在这里出于示例的目的而被描绘)。在该示例中,十字路口902和904分别对应于地图信息200的十字路口202和204的位置。类似地,车道线910、912和914分别对应于车道线210、212和214的形状、位置和其他特征。类似地,人行横道930分别对应于人行横道230的形状、位置和其他特征;人行道940对应于人行道240;交通灯920、922分别对应于交通灯220、222;停止标志950、952分别对应于停止标志250、252;以及让行标志960对应于让行标志260。

图10是根据本公开的各方面的示例流程图1000,该示例流程图可以由一个或多个计算设备的一个或多个处理器(诸如计算设备110的处理器120)执行,以便以自动驾驶模式控制车辆。转到框1010,接收由车辆的LIDAR传感器生成的多个LIDAR数据点。例如,当车辆100四处驾驶时,感知系统172捕获车辆的环境的传感器数据。例如,包括LIDAR传感器数据的LIDAR传感器帧可以由车辆的LIDAR传感器(诸如圆顶外壳312的LIDAR传感器)收集,并提供给计算设备110。例如,回到图9,感知系统172可以捕获在车辆100的环境中的各种对象(包括车辆980、行人982和车辆废气984、986)的传感器数据。

多个LIDAR数据点中的每个给定的LIDAR数据点可以包括位置信息和强度信息,并且还可以与给定的LIDAR数据点的除了强度信息之外的波形数据相关联。例如,对于来自LIDAR传感器的LIDAR传感器数据的每个LIDAR传感器数据点可以包括位置信息、强度信息以及采样点和/或波形。采样点和/或波形可以例如由计算设备110和/或LIDAR传感器本身处理,以便识别波形的特征(而不仅仅是峰强度)或波形数据,包括峰宽度、峰的数量、峰的形状和峰伸长率。

转到框1020,至少使用多个LIDAR数据点的波形数据来确定多个LIDAR数据点中的一个或多个LIDAR数据点对应于伪对象。在这种情况下,伪对象可以包括从LIDAR数据点看起来是实体对象,但是可以基于LIDAR数据点的波形数据来与实体对象区分,并且车辆能够驾驶通过的对象,诸如废气、灰尘、降水(例如,雨、雪等)、雾等。例如,该确定可以涉及计算设备110使用启发式算法来分析多个LIDAR数据点的波形数据,以识别一个或多个LIDAR数据点。附加地或替代地,例如为了验证(或反之亦然)该识别,波形数据和LIDAR传感器帧可以被输入到模型中以识别一个或多个LIDAR数据点。此外,当LIDAR数据帧被捕获时,车辆周围一些区域内的地图信息也可以被输入到模型中,如果这样的信息被用于训练模型的话。

在一些情况下,可以使用启发式算法和模型两者来确定LIDAR数据点的可能性。然后,两个可能性中较高的一个(即,无论哪种可能性指示LIDAR数据点更有可能是伪对象)可以与手动调整的启发式算法进行比较,以识别LIDAR数据点是否是伪对象。

被识别为伪对象的任何LIDAR数据点可以被组合在一起。这些组合可以基于被识别为伪对象的LIDAR数据点的密度来完成。例如,在将这些点组合在一起之前,可能需要与伪对象相对应的点的阈值最小相对密度。例如,对于帧中给定空间体积内的5000个LIDAR数据点的组,如果至少4500个(或90%)被识别为伪对象,则被识别为伪对象的那些LIDAR数据点可以被组合在一起。在一些情况下,LIDAR数据点的组可以被收集到边界框中。

当然,绝对密度点可能取决于这些LIDAR数据点离LIDAR传感器有多远,因为离得越远,激光点就越少。换句话说,预期更大密度的LIDAR数据点可能更靠近LIDAR传感器,而不是更远离。为了解决这个问题,可以考虑用于较小的局部区域(local region)的密度。例如,对于在从地面延伸到2米高度的一侧上的20厘米的矩形空间柱,如果在这样的体积中只有非常少数量的LIDAR数据点,例如10个或更多或更少,则整个体积可能更有可能为伪,因为通常对于在20米范围内的实体对象,在同一体积中可能有几十个或数百个LIDAR数据点。可以分析彼此接近的相似尺寸的空间柱的密度,并且如果其中许多被确定为伪,则这些柱内的整组LIDAR数据点可以被识别为伪对象。在一些情况下,该信息可用于将给定组细分为伪子组和非伪子组。换句话说,如果给定空间柱内的密度相对于附近的其他空间柱有较大的增加,这可能表示非伪对象或LIDAR数据点的组。

回到图10,在框1030,然后基于该确定过滤多个LIDAR数据点。换句话说,可以从多个LIDAR数据点中过滤出与伪对象相对应的一个或多个LIDAR数据点。为了简化这种过滤,可以从LIDAR传感器帧和/或多个LIDAR数据点中过滤出前述的点和/或边界框的组。

然后,在框1040,过滤后的多个LIDAR数据点可用于以自动驾驶模式控制车辆。例如,所得到的过滤后的帧然后可以用于为车辆做出驾驶决策。换句话说,车辆的各种系统,诸如车辆的导航系统168和生成车辆要遵循的轨迹的规划系统(可以结合到计算设备110中),可以简单地忽略这些点,因为它们对应于伪对象。这允许车辆的计算设备忽略车辆废气、灰尘、雾、降水等的数据,这可以节省大量的处理资源,尤其是在下雨和大量LIDAR数据点可能被过滤的情况下。在这点上,计算设备110能够识别伪对象,并防止车辆对它们做出反应,例如通过粗暴地(harshly)制动,这在一些情况下会使车辆的乘客感到不安。在一些情况下,LIDAR数据点的组和/或单个LIDAR数据点也可以与其他信息组合,以确认该检测。该其他信息可以包括附加的手动调整的启发式算法。作为一个实例,可以将LIDAR数据点和/或对应的边界框的组的位置与来自车辆的其他传感器的传感器数据进行比较,以确认所述点是否对应于伪对象。例如,闪亮的金属对象诸如购物车或自行车车轮可以具有类似于雨的波形,但如果对于该对象存在来自车辆的雷达单元的强烈信号,与该对象在同一位置的组的LIDAR数据点不可能是雨。因此,该组LIDAR数据点不会被过滤。

过滤后的LIDAR数据点可与其他信息相结合,以允许计算设备110确定可用于做出驾驶决策的关于车辆环境的附加信息。例如,给定检测到的伪对象的量和位置,计算设备110可以确定正在下雨或者空气中有降水。这可以由计算设备110用来推断路面是湿的,这可以用来影响车辆的行为。例如,计算设备110可以使车辆减速或者改变车辆如何执行特定的操纵。类似地,计算设备110可以推断其他车辆可能驾驶得更慢并且更谨慎,并相应地对这些车辆做出响应。作为另一个示例,从其过滤LIDAR数据点的区域可以对应于车辆传感器不如通常有效的区域。该信息可被输入感知和/或规划系统,以更好地响应车辆的环境。

附加地或替代地,其他道路使用者,诸如行人、骑自行车者或车辆的全部或部分,可能被识别为伪对象。例如,手持叶片鼓风机的行人可能会生成一团灰尘,或者行人可能正站在雨、雪中或车辆废气附近(如图9的示例)。因此,被识别为伪对象的至少一些点可以与行人分类器检测到的行人的边界框重叠。作为另一个实例,如果车辆驾驶通过水坑,它可能会溅起水花。同样,被识别为伪对象的至少一些点可以与车辆分类器检测到的车辆的边界框重叠。在这些情况下,行人或车辆的边界框内被识别为伪对象的点可以被过滤,也可以不被过滤。在这方面,行人和车辆数据仍将被馈送到车辆的其他系统,并且行人和车辆分类器被有效地用作对伪对象的识别的检查。

作为一个实例,转向图11的示例,边界框1110表示由计算设备110确定为对应于行人982的LIDAR数据点1120的区域。在该示例中,车辆废气986的一部分986A(显示为阴影)与边界框1110内的空间体积重叠,并且车辆废气986的一部分986B在边界框1110的外部。因此,部分986B可以如上所述被过滤掉,但是部分986A可以不被过滤。再次,通过不过滤部分986A,与行人982的边界框1110重叠的该部分的LIDAR数据点仍然被馈送到车辆的其他系统,并且行人分类器被有效地用作对伪对象的识别的检查。这反过来防止了对实际上可能不是伪对象的对象的“过分过滤”,并且通过防止车辆能够穿过实际上非伪的对象而显著提高了安全性。

作为另一个实例,转向图12的示例,边界框1210表示由计算设备110确定的对应于行人982的LIDAR数据点的区域。在该示例中,车辆废气986已经被错误地与LIDAR数据点1220聚类(cluster),并且被识别为行人。因此,行人982的边界框1210比正常情况下要大(即,与边界框1110的尺寸相比)。使用以上示例,计算设备110可以确定LIDAR数据点1220的一些部分(这里对应于车辆废气986)对应于伪对象(这里是车辆废气),并且LIDAR数据点1220的剩余部分对应于行人,例如,通过消除过程并且因为边界框标签。因此,对应于车辆废气的LIDAR数据点的聚类的外边缘(这里为986B)可以被过滤,例如,通过减小边界框的尺寸,直到任何进一步的减小将导致对应于行人的LIDAR数据点在边界框1210之外为止。在该示例中,计算设备110可以有效地将边界框1210的尺寸减小到边界框1110的尺寸。再次,通过不过滤部分986A,与行人的减小的边界框982重叠的这部分的LIDAR数据点仍然被馈送到车辆的其他系统,并且行人分类器被有效地用作对伪对象的识别的检查。这反过来防止了对实际上可能不是伪对象的对象的“过分过滤”,并且通过防止车辆能够穿过实际上非伪的对象而显著提高了安全性。

本文描述的特征允许使用启发式算法和/或模型来检测伪对象,启发式算法和/或模型提供了用于检测伪对象的有用且有效的方式。虽然典型的方法可能依赖于强度和上下文信息,但是通过使用波形数据,启发式算法和/或模型在检测伪对象方面可以显著地更加有效。此外,模型可以与其他信息和启发式算法组合,不仅检测伪对象,而且在决定如何控制车辆时确定应该以及不应该过滤或忽略这些伪对象中的哪一些。此外,该模型甚至可以用于确定伪对象的类型,这对于确定如何控制车辆很重要。

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

相关技术
  • 自动车辆的伪对象检测
  • 辨别车牌照真伪及车辆自动交费的检测控制设施
技术分类

06120113107073