用于自主车辆导航的众包和分发稀疏地图以及车道测量
文献发布时间:2023-06-19 11:16:08
本申请是申请日为2017年7月21日、申请号为201780051420.4、发明名称为“用于自主车辆导航的众包和分发稀疏地图以及车道测量”的发明专利申请的分案申请。
相关申请的交叉引用
本申请要求2016年7月21日提交的美国临时专利申请第62/365,188号;2016年7月21日提交的美国临时专利申请第62/365,192号;2016年8月10日提交的美国临时专利申请第62/373,153号的优先权权益。上述申请的全部内容通过引用整体并入本文。
技术领域
本公开总体涉及自主车辆导航和用于自主车辆导航的稀疏地图。特别地,本公开涉及用于众包用于自主车辆导航的稀疏地图的系统和方法、用于分发用于自主车辆导航的众包稀疏地图的系统和方法、用于使用众包稀疏地图导航车辆的系统和方法、用于对齐众包地图数据的系统和方法、用于众包路面信息收集的系统和方法,以及用于使用车道测量的车辆定位的系统和方法。
背景技术
随着技术的不断进步,能够在车行道上导航的完全自主车辆的目标即将出现。自主车辆可能需要考虑各种各样的因素,并且基于那些因素做出适当的决定,以安全和准确地到达期望的目的地。例如,自主车辆可能需要处理和解释可视信息(例如,从相机捕捉的信息),并且也可能使用从其它源(例如,从GPS设备、速度传感器、加速计、悬架传感器等)获得的信息。同时,为了导航到目的地,自主车辆还可能需要标识其在特定车行道内(例如,在多车道道路内的特定车道)的位置、沿着其它车辆旁边导航、避开障碍物和行人、观察交通信号和标志,以及在适当的交叉路口或交汇处从一条道路行驶到另一条道路。当车辆行驶到其目的地时,利用和解释由自主车辆收集的大量信息会带来许多设计挑战。自主车辆可能需要分析、访问和/或存储的大量数据(例如,捕捉的图像数据、地图数据、GPS数据、传感器数据等)带来了实际上可能限制自主导航甚至对自主导航有不利影响的挑战。此外,如果自主车辆依赖传统的地图技术进行导航,则存储和更新地图所需的大量数据会带来严峻的挑战。
除了用于更新地图的数据收集之外,自主车辆必须能够使用地图进行导航。因此,必须优化地图的尺寸和细节,及其构造和传输。
发明内容
与本公开一致的实施例提供了用于自主车辆导航的系统和方法。所公开的实施例可以使用相机来提供自主车辆导航特征。例如,与所公开的实施例一致,所公开的系统可以包括一个、两个、或更多监测车辆的环境的相机。所公开的系统可以基于,例如对由一个或多个相机捕捉的图像的分析来提供导航响应。所公开的系统还可以提供用于由众包稀疏地图(crowdsourced sparse map)构建和导航。其他公开的系统可以使用图像的相关分析来执行可以用稀疏地图补充导航的定位。导航响应还可以考虑其它数据,包括:例如,全球位置系统(global positioning system,GPS)数据、传感器数据(来自加速器、速度传感器、悬架传感器等)和/或其它地图数据。
如上所述,在一些实施例中,所公开的系统和方法可以使用稀疏地图进行自主车辆导航。例如,稀疏地图可以提供足够的信息用于导航,而不需要过多的数据存储。
在其他实施例中,所公开的系统和方法可以构建用于自主车辆导航的道路模型。例如,所公开的系统和方法可以允许众包用于自主车辆导航的稀疏地图,分发用于自主车辆导航的众包稀疏地图并且对齐众包地图数据。一些公开的系统和方法可以附加地或替代地众包路面信息收集。
在另一其他实施例中,所公开的系统和方法可以使用稀疏道路模型进行自主车辆导航。例如,所公开的系统和方法可以提供使用众包稀疏地图来导航车辆。
在又一其他实施例中,所公开的系统和方法可以提供自适应自主导航。例如,所公开的系统和方法可以提供使用车道测量来提供车辆的定位。
在一些实施例中,非暂时性计算机可读介质可以包括用于沿着路段的自主车辆导航的稀疏地图。稀疏地图可以包括沿着路段延伸的路面特征的至少一个线表示和与路段相关联的多个地标。每个线表示可以表示沿着与路面特征基本对应的路段的路径,并且可以通过对一个或多个车辆穿行路段时获取的多个图像的图像分析来识别路面特征。
在其他实施例中,用于生成用于沿着路段的自主车辆导航的稀疏地图的系统可以包括至少一个处理设备。该至少一个处理设备可以被配置为接收一个或多个车辆穿行路段时获取的多个图像;基于多个图像,识别沿着路段延伸的路面特征的至少一个线表示;基于多个图像,识别与路段相关联的多个地标。每个线表示可以表示沿着与路面特征基本对应的路段的路径。
在另一其他实施例中,用于沿着路段生成稀疏地图自主车辆导航的方法可以包括接收在一个或多个车辆穿行路段时获取的多个图像;基于多个图像,识别沿着路段延伸的路面特征的至少一个线表示;基于多个图像,识别与路段相关联的多个地标。每个线表示可以表示沿着与路面特征基本对应的路段的路径。
在一些实施例中,生成用在自主车辆导航中的道路导航模型的方法可以包括由服务器接收来自多个车辆的导航信息。来自多个车辆的导航信息可以与公共路段相关联。该方法可以进一步包括由服务器存储与公共路段相关联的导航信息,并且由服务器基于来自多个车辆的导航信息生成用于公共路段的自主车辆道路导航模型的至少一部分。用于公共路段的自主车辆道路导航模型可以包括沿着公共路段延伸的路面特征的至少一个线表示,并且每个线表示可以表示沿着与路面特征基本对应的公共路段的路径。此外,可以通过对多个车辆穿行公共路段时获取的多个图像的图像分析来识别路面特征。该方法可以进一步包括由服务器将自主车辆道路导航模型分发给一个或多个自主车辆,以用于沿着公共路段自主地导航一个或多个自主车辆。
在其他实施例中,用于生成用在自主车辆导航中的道路导航模型的系统可以包括至少一个网络接口、至少一个非暂时性存储介质和至少一个处理设备。至少一个处理设备可以被配置为使用网络接口接收来自多个车辆的导航信息。来自多个车辆的导航信息可以与公共路段相关联。至少一个处理设备还可以被配置为在非暂时性存储介质上存储与公共路段相关联的导航信息,并且基于来自多个车辆的导航信息生成用于公共路段的自主车辆道路导航模型的至少一部分。用于公共路段的自主车辆道路导航模型可以包括沿着公共路段延伸的路面特征的至少一个线表示,并且每个线表示可以表示沿着与路面特征基本对应的公共路段的路径。此外,可以通过对多个车辆穿行公共路段时获取的多个图像的图像分析来识别路面特征。至少一个处理设备还可以被配置为使用网络接口将自主车辆道路导航模型分发给一个或多个自主车辆,以用于沿着所述公共路段自主地导航所述一个或多个自主车辆。
在一些实施例中,用于沿着路段自主地导航车辆的系统可以包括至少一个处理设备。至少一个处理设备可以被配置为接收稀疏地图模型。稀疏地图模型可以包括沿着路段延伸的路面特征的至少一个线表示,并且每个线表示可以表示沿着与路面特征基本对应的路段的路径。至少一个处理设备还可以被配置为从相机接收代表车辆环境的至少一个图像,分析稀疏地图模型和从相机接收的至少一个图像,并基于对稀疏地图模型和从相机接收的至少一个图像的分析来确定对于车辆的自主导航响应。
在其他实施例中,用于沿着路段自主地导航车辆的方法可以包括接收稀疏地图模型。稀疏地图模型可以包括沿着路段延伸的路面特征的至少一个线表示,并且每个线表示可以表示沿着与路面特征基本对应的路段的路径。该方法还可以包括从相机接收代表车辆环境的至少一个图像,分析稀疏地图模型和从相机接收的至少一个图像,并基于对稀疏地图模型和从相机接收的至少一个图像的分析来确定对于车辆的自主导航响应。
在一些实施例中,一种确定沿着路段延伸的路面特征的线表示的方法,其中路面特征的线表示被配置用在自主车辆导航中,其可以包括由服务器接收包括与路面特征相关联的位置信息的第一组行程数据,以及由服务器接收包括与路面特征相关联的位置信息的第二组行程数据。可以基于对路段的图像的分析来确定位置信息。该方法还可以包括将第一组行程数据分段为第一行程片段,并将第二组行程数据分段为第二行程片段;将第一组行程数据与相应的片段内的第二组行程数据纵向对齐;并且基于第一和第二草稿片段中纵向对齐的第一和第二行程数据来确定路面特征的线表示。
在其他实施例中,用于确定沿着路段延伸的路面特征的线表示的系统,其中路面特征的线表示被配置用在自主车辆导航中,其可以包括至少一个处理设备。至少一个处理设备可以被配置为接收包括与路面特征相关联的位置信息的第一组行程数据,并且接收包括与路面特征相关联的位置信息的第二组行程数据。可以基于对路段的图像的分析来确定位置信息。至少一个处理设备还可以被配置为将第一组行程数据分段为第一行程片段,并将第二组行程数据分段为第二行程片段;将第一组行程数据与相应的片段内的第二组行程数据纵向对齐;并且基于第一和第二草稿片段中纵向对齐的第一和第二行程数据来确定路面特征的线表示。
在一些实施例中,用于收集路段的路面信息的系统可包括至少一个处理设备。所述至少一个处理设备可以被配置为从相机接收代表路段的一部分的至少一个图像,并且在所述至少一个图像中识别沿着路段的所述部分的至少一个路面特征。至少一个处理设备还可以被配置为根据车辆的局部坐标系确定与路面特征相关联的多个位置,并且将所确定的多个位置从车辆发送到服务器。所确定的位置可以被配置为使得能够由服务器确定沿着路段延伸的路面特征的线表示,并且线表示可以表示沿着与路面特征基本对应的路段的路径。
在其他实施例中,一种收集路段的路面信息的方法可以包括从相机接收代表路段的一部分的至少一个图像,以及在至少一个图像中识别沿着路段的所述部分的至少一个路面特征。该方法还可以包括根据车辆的局部坐标系确定与路面特征相关联的多个位置,以及将所确定的多个位置从车辆发送到服务器。所确定的位置可以被配置为使得能够由服务器确定沿着路段延伸的路面特征的线表示,并且线表示可以表示沿着与路面特征基本对应的路段的路径。
在一些实施例中,用于校正导航路段的车辆位置的系统可以包括至少一个处理设备。至少一个处理设备可以被配置为基于至少一个导航传感器的输出,确定沿着预定道路模型轨迹的车辆的测量位置。预定道路模型轨迹可以与路段相关联。至少一个处理设备还可以被配置为从图像捕捉设备接收表示车辆环境的至少一个图像,并分析所述至少一个图像以识别至少一个车道标记。至少一个车道标记可以与沿着路段的行驶车道相关联。至少一个处理设备还可以被配置为基于所述至少一个图像,确定从车辆到至少一个车道标记的距离,基于车辆的测量位置和所确定的距离来确定车辆与预定道路模型轨迹的估计的偏移,并基于所述估计的偏移来确定车辆的自主操纵动作,以校正车辆的位置。
在其他实施例中,用于校正导航路段的车辆位置的方法可以包括基于至少一个导航传感器的输出,确定沿着预定道路模型轨迹的车辆的测量位置。预定道路模型轨迹可以与路段相关联。该方法还可以包括从图像捕捉设备接收表示车辆环境的至少一个图像,并分析至少一个图像以识别至少一个车道标记。至少一个车道标记可以与沿着路段的行驶车道相关联。该方法可以进一步包括基于至少一个图像确定从车辆到至少一个车道标记的距离,基于所测量的车辆位置和确定的距离来确定车辆与预定道路模型轨迹的估计的偏移,并基于所述估计的偏移来确定车辆的自主操纵动作,以校正车辆的位置。
与其它公开的实施例一致,非暂时性计算机可读存储介质可以存储由至少一个处理设备执行并且执行本文所描述的方法中的任何的程序指令。
前述的一般描述和下面的详细描述仅仅是示例性和说明性的,并且不限制权利要求。
附图说明
并入本公开中并构成本公开的一部分的附图示出所公开的各种实施例。在附图中:
图1是与所公开的实施例一致的示例系统的图示性表示。
图2A是包括与所公开的实施例一致的系统的示例车辆的图示性侧视图表示。
图2B是与所公开的实施例一致的图2A中所示的车辆和系统的图示性顶视图表示。
图2C是包括与所公开的实施例一致的系统的车辆的另一实施例的图示性顶视图表示。
图2D是包括与所公开的实施例一致的系统的车辆的又一实施例的图示性顶视图表示。
图2E是包括与所公开的实施例一致的系统的车辆的又一实施例的图示性顶视图表示。
图2F是与所公开的实施例一致的示例车辆控制系统的图示性表示。
图3A是与所公开的实施例一致的、包括后视镜和用于车辆成像系统的用户界面的车辆的内部的图示性表示。
图3B是与所公开的实施例一致的、配置为位置在后视镜之后并抵靠车辆风挡的相机安装的示例的图示。
图3C是与所公开的实施例一致的图3B中所示的相机安装从不同的视角的图示。
图3D是与所公开的实施例一致的、配置为位置在后视镜之后并抵靠车辆风挡的相机安装的示例的图示。
图4是与所公开的实施例一致的、配置为存储用于执行一个或多个操作的指令的存储器的示例框图。
图5A是示出与所公开的实施例一致的、用于基于单目图像分析引起一个或多个导航响应的示例处理的流程图。
图5B是示出与所公开的实施例一致的、用于在一组图像中检测一个或多个车辆和/或行人的示例处理的流程图。
图5C是示出与所公开的实施例一致的、用于在一组图像中检测道路标记和/或车道几何信息的示例处理的流程图。
图5D是示出与所公开的实施例一致的、用于在一组图像中检测交通灯的示例处理的流程图。
图5E是示出与所公开的实施例一致的、用于基于车辆路径引起一个或多个导航响应的示例处理的流程图。
图5F是示出与所公开的实施例一致的、用于确定前方车辆是否正在改变车道的示例处理的流程图。
图6是示出与所公开的实施例一致的、用于基于立体图像分析引起一个或多个导航响应的示例处理的流程图。
图7是示出与所公开的实施例一致的、用于基于三组图像的分析引起一个或多个导航响应的示例处理的流程图。
图8示出与所公开的实施例一致的、用于提供自主车辆导航的稀疏地图。
图9A示出与所公开的实施例一致的路段的部分的多项式表示。
图9B示出三维空间中的曲线,其表示包括在与所公开的实施例一致的稀疏地图中的特定路段的车辆的目标轨迹。
图10示出可以包括在与所公开的实施例一致的稀疏地图中的示例地标。
图11A示出与所公开的实施例一致的轨迹的多项式表示。
图11B和11C示出与所公开的实施例一致的、沿着多车道道路的目标轨迹。
图11D示出与所公开的实施例一致的示例道路签名简档。
图12是与所公开的实施例一致的、使用从多个车辆接收的众包数据进行自主车辆导航的系统的示意图。
图13示出与所公开的实施例一致的、由多个三维样条表示的示例自主车辆道路导航模型。
图14示出与所公开的实施例一致的、通过组合来自许多行程的位置信息而生成的地图骨架。
图15示出与所公开的实施例一致的、用作为地标的示例标识纵向对齐两个行程的的示例。
图16示出与所公开的实施例一致的、用作为地标的示例标志纵向对齐许多行程的的示例。
图17是与所公开的实施例一致的、用于使用相机、车辆和服务器生成行程数据的系统的示意图。
图18是与所公开的实施例一致的、用于众包稀疏地图的系统的示意图。
图19是示出与所公开的实施例一致的、用于生成沿着路段的自主车辆导航的稀疏地图的示例性处理的流程图。
图20示出与所公开的实施例一致的服务器的框图。
图21示出与所公开的实施例一致的存储器的框图。
图22示出与所公开的实施例一致的聚类与车辆相关联的车辆轨迹的过程。
图23示出与所公开的实施例一致的、用于车辆的导航系统,其可以用于自主导航。
图24是示出与所公开的实施例一致的、用于生成用于自主车辆导航的道路导航模型的示例处理的流程图。
图25示出与所公开的实施例一致的存储器的框图。
图26是示出与所公开的实施例一致的、用于沿着路段自主地导航车辆的示例处理的流程图。
图27示出与所公开的实施例一致的存储器的框图。
图28A示出与所公开的实施例一致的、来自四个单独行程的行程数据的示例。
图28B示出与所公开的实施例一致的、来自五个单独行程的行程数据的示例。
图28C示出与所公开的实施例一致的、根据来自五个单独的行程的行程数据确定的车辆路径的示例。
图29是示出与所公开的实施例一致的、用于确定沿着路段延伸的路面特征的线表示的示例处理的流程图。
图30示出与所公开的实施例一致的存储器的框图。
图31是示出与所公开的实施例一致的、用于收集路段的路面信息的示例处理的流程图。
图32示出与所公开的实施例一致的存储器的框图。
图33A示出在不使用车道标记的情况下穿行车道的车辆的示例。
图33B示出在车辆的位置和航向已经漂移之后的图33A的示例。
图33C示出在位置和航向进一步漂移并且地标的预期位置与其实际位置明显不同之后的图33B的示例。
图34A示出与所公开的实施例一致的、在不使用车道标记的情况下穿行车道的车辆的示例。
图34B示出与所公开的实施例一致的、具有减小的位置和航向漂移的图34A的示例。
图34C示出与所公开的实施例一致的图34B的示例,其中地标的预期位置与其实际位置显著对齐。
图35是示出与所公开的实施例一致的、用于校正导航路段的车辆位置的示例处理的流程图。
具体实施方式
以下的详细描述参考附图。只要可能,在附图和以下的描述中使用相同的参考标号来指代相同或相似的部分。虽然本文描述了数个说明性实施例,但是修改、改编和其他实现方式是可能的。例如,可以对附图中图示的组件做出替换、添加或修改,并且可以通过对所公开的方法进行步骤的替换、重新排序、移除或添加,来对本文所描述的说明性方法进行修改。因此,以下的详细描述并不限于所公开的实施例和示例。代替地,适当的范围由所附权利要求限定。
如贯穿本公开所使用的,术语“自主车辆”是指在没有驾驶员输入的情况下能够实施至少一个导航改变的车辆。“导航改变”是指车辆的操纵、制动、或加速中的一个或多个。所谓自主,是指车辆不需要是完全自动的(例如,在没有驾驶员或没有驾驶员输入的情况下的完全操作)。相反,自主车辆包括能够在某些时间段期间在驾驶员的控制下操作,且在其他时间段期间无需驾驶员控制而操作那些车辆。自主车辆还可以包括仅控制车辆导航的一些方面,诸如操纵(例如,在车辆车道约束之间维持车辆路线),但可以将其它方面交给驾驶员(例如,制动)的车辆。在一些情况下,自主车辆可以处理车辆的制动、速率控制和/或操纵的一些或全部方面。
由于人类驾驶员通常依赖于可视线索和观察以便控制车辆,因此而建造了交通基础设施,其中车道标记、交通标志和交通灯均被设计为向驾驶员提供可视信息。鉴于交通基础设施的这些设计特性,自主车辆可以包括相机以及分析从车辆的环境捕捉的可视信息的处理单元。可视信息可以包括,例如可由驾驶员观察到的交通基础设施(例如,车道标记、交通标志、交通灯等)的组件以及其它障碍物(例如,其它车辆、行人、碎屑等)。此外,自主车辆还可以使用存储的信息,诸如在导航时提供车辆环境的模型的信息。例如,车辆可以使用GPS数据、传感器数据(例如,来自加速计、速率传感器、悬架传感器等)和/或其它地图数据,以在该车辆正在行驶的同时提供与其环境有关的信息,并且该车辆(以及其它车辆)可以使用该信息在模型上对其自身定位。
在本公开的一些实施例中,自主车辆可以使用在导航时获得的信息(例如,来自相机、GPS设备、加速度计、速度传感器、悬架传感器等)。在其他实施例中,自主车辆可以使用在导航时由该车辆(或由其他车辆)从过去的导航获得的信息。在另一其他实施例中,自主车辆可以使用在导航时获得的信息和从过去的导航获得的信息的组合。以下部分提供了与所公开实施例一致的系统的概述,接着是前向成像系统的概述和与该系统一致的方法。以下部分公开了用于构建、使用和更新用于自主车辆导航的稀疏地图的系统和方法。
图1是根据所公开的示例实施例的系统100的框图表示。取决于特定实施方式的要求,系统100可以包括各种组件。在一些实施例中,系统100可以包括处理单元110、图像获取单元120、位置传感器130、一个或多个存储器单元140、150、地图数据库160、用户界面170和无线收发器172。处理单元110可以包括一个或多个处理设备。在一些实施例中,处理单元110可以包括应用处理器180、图像处理器190或任何其它合适的处理设备。类似地,取决于特定应用的要求,图像获取单元120可以包括任意数量的图像获取设备和组件。在一些实施例中,图像获取单元120可以包括一个或多个图像捕捉设备(例如,相机),诸如图像捕捉设备122、图像捕捉设备124和图像捕捉设备126。系统100还可以包括将处理设备110通信地连接到图像获取设备120的数据接口128。例如,数据接口128可以包括用于将由图像获取设备120获取的图像数据传输到处理单元110的任何有线和/或无线的链路或多个链路。
无线收发器172可以包括被配置为通过使用射频、红外频率、磁场、或电场通过空中接口来交换传输到一个或多个网络(例如,蜂窝、因特网等)的一个或多个设备。无线收发器172可以使用任何熟知的标准来发送和/或接收数据(例如,Wi-Fi、
应用处理器180和图像处理器190两者都可以包括各种类型的处理设备。例如,应用处理器180和图像处理器190中的任一者或两者可以包括微处理器、预处理器(诸如图像预处理器)、图形处理单元(GPU)、中央处理单元(CPU)、辅助电路、数字信号处理器、集成电路、存储器或适用于运行应用和适用于图像处理和分析的任何其它类型的设备。在一些实施例中,应用处理器180和/或图像处理器190可以包括任何类型的单核或多核处理器、移动设备微控制器、中央处理单元等。可以使用各种处理设备,包括例如可从诸如
在一些实施例中,应用处理器180和/或图像处理器190可以包括可从
任何本文所公开的处理设备可以被配置为执行某些功能。配置处理设备(诸如任何所描述的EyeQ处理器或其它控制器或微处理器)以执行某些功能可以包括对计算机可执行指令的编程,并使处理设备在其操作期间可获得这些指令以用于执行。在一些实施例中,配置处理设备可以包括直接利用架构指令对处理设备编程。在任一情况下,被配置为执行本文公开的感测、图像分析和/或导航功能的处理设备表示控制主车辆的多个基于硬件的组件的专用的基于硬件的系统。例如,诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等的处理设备可以使用,例如一种或多种硬件描述语言(HDL)来配置。
在其它实施例中,配置处理设备可以包括将可执行指令存储在操作期间处理设备可访问的存储器上。例如,处理设备在操作期间可以访问该存储器以获得并执行所存储的指令。
尽管图1描绘了包含在处理单元110中的两个单独的处理设备,但是可以使用更多或更少的处理设备。例如,在一些实施例中,可以使用单个处理设备完成应用处理器180和图像处理器190的任务。在其它实施例中,这些任务可以由两个以上的处理设备执行。另外,在一些实施例中,系统100可以包括处理单元110中的一个或多个,而不包括诸如图像获取单元120的其它组件。
处理单元110可以包括各种类型的设备。例如,处理单元110可以包括各种设备,诸如控制器、图像预处理器、中央处理单元(CPU)、图形处理单元(GPU)、辅助电路、数字信号处理器、集成电路、存储器或任何其它类型的用于图像处理和分析的设备。图像预处理器可以包括用于捕捉、数字化和处理来自图像传感器的影像的视频处理器。CPU可以包括任何数量的微控制器或微处理器。GPU可以包括任何数量的微控制器或为处理器。辅助电路可以是任何数量的本领域公知的电路,包括高速缓存、电力供给、时钟和输入输出电路。存储器可以存储软件,该软件在由处理器执行时控制系统的操作。存储器可以包括数据库和图像处理软件。存储器可以包括任何数量的随机存取存储器、只读存储器、闪速存储器、磁盘驱动器、光存储、磁带存储、可移动存储和其它类型的存储。在一个实例中,存储器可以与处理单元110分离。在另一实例中,存储器可以被集成到处理单元110中。
每个存储器140、150可以包括软件指令,该软件指令在由处理器(例如,应用处理器180和/或图像处理器190)执行时可以控制系统100的各个方面的操作。这些存储器单元可以包括各种数据库和图像处理软件。存储器单元可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、磁盘驱动器、光存储、磁带存储、可移动存储和/或任何其它类型的存储。在一些实施例中,存储器单元140、150可以与应用处理器180和/或图像处理器190分离。在其它实施例中,这些存储器单元可以被集成到应用处理器180和/或图像处理器190中。
位置传感器130可以包括适用于确定与系统100的至少一个组件相关联的位置的任何类型的设备。在一些实施例中,位置传感器130可以包括GPS接收器。这种接收器可以通过处理由全球定位系统卫星广播的信号来确定用户位置和速度。可以使得来自位置传感器130的位置信息对于应用处理器180和/或图像处理器190可用。
在一些实施例中,系统100可以包括诸如用于测量车辆200的速率的速率传感器(例如,转速计、速率计)和/或用于测量车辆200的加速度的加速度计(单轴或多轴的)的组件。
用户界面170可以包括适用于向系统100的一个或多个用户提供信息或从系统100的一个或多个用户接收输入的任何设备。在一些实施例中,用户界面170可以包括用户输入设备,包括例如触摸屏、麦克风、键盘、指针设备、跟踪转轮、相机、旋钮、按钮等。利用这种输入设备,用户能够通过键入指令或信息、提供语音命令、使用按钮、指针或眼睛跟踪能力在屏幕上选择菜单选项、或通过任何其它适用于向系统100传送信息的技术来向系统100提供信息输入或命令。
用户界面170可以配备有一个或多个处理设备,其配置为向用户提供和从用户接收信息,并处理该信息以由例如应用处理器180使用。在一些实施例中,这种处理设备可以执行指令以辨识和跟踪眼睛运动、接收和解释语音命令、辨识和解释在触摸屏上做出的触摸和/或手势、响应键盘输入或菜单选择等。在一些实施例中,用户界面170可以包括显示器、扬声器、触觉设备和/或任何其它用于向用户提供输出信息的设备。
地图数据库160可以包括任何类型的用于存储对系统100有用的地图数据的数据库。在一些实施例中,地图数据库160可以包括与各种项目在参考坐标系统中的位置有关的数据,各种项目包括道路、水特征、地理特征、商业区、感兴趣的点、餐馆、加油站等。地图数据库160不仅可以存储这些项目的位置,而且可以存储与这些项目有关的描述符,包括例如与任何所存储的特征相关联的名称。在一些实施例中,地图数据库160可以与系统100的其它部件物理上位置在一起。替代或附加地,地图数据库160或其一部分可以相对于系统100的其它组件(例如,处理单元110)远程地定位。在这种实施例中,来自地图数据库160的信息可以通过与网络的有线或无线数据连接(例如,通过蜂窝网络和/或因特网等)而下载。在一些情况下,地图数据库160可以存储稀疏数据模型,所述稀疏数据模型包括某些道路特征(例如,车道标记)或主车辆的目标轨迹的多项式表示。下文结合图8至19讨论生成这种地图的系统和方法。
图像捕捉设备122、124和126每个可以包括任何类型的适用于从环境捕捉至少一个图像的设备。此外,可以使用任何数量的图像捕捉设备来获取用于输入到图像处理器的图像。一些实施例可以仅包括单个图像捕捉设备,而其它实施例可以包括两个、三个、或甚至四个、或更多个图像捕捉设备。以下将参考图2B至图2E进一步描述图像捕捉设备122、124和126。
系统100或其各种组件可以合并到各种不同的平台中。在一些实施例中,系统100可以被包括在车辆200上,如图2A所示。例如,车辆200可以配备有如上关于图1描述的系统100的处理单元110和任何其它组件。在一些实施例中,车辆200可以仅配备有单个图像捕捉设备(例如,相机),而在其它实施例中,诸如结合图2B至图2E所讨论的那些,可以使用多个图像捕捉设备。例如,图2A中所示的车辆200的图像捕捉设备122和124中的任一个可以是ADAS(Advanced Driver Assistance System,高级驾驶员辅助系统)成像集的一部分。
作为图像获取单元120的一部分的、被包括在车辆200上的图像捕捉设备,可以被置于任何合适的位置。在一些实施例中,如图2A至图2E,以及图3A至图3C中所示,图像捕捉设备122可以位于后视镜的附近。此位置可以提供与车辆200的驾驶员相似的视线,这可以辅助确定对驾驶员而言什么是可视和不可视的。图像捕捉设备122可以被置于靠近后视镜的任何位置,而将图像捕捉设备122放置在镜子的驾驶员侧还可以辅助获得表示驾驶员的视场和/或视线的图像。
还可以使用图像获取单元120的图像捕捉设备的其它位置。例如,图像捕捉设备124可以位于车辆200的保险杠上或保险杠中。这种位置尤其可以适用于具有宽视场的图像捕捉设备。位于保险杠的图像捕捉设备的视线可以与驾驶员的视线不同,并且因此,保险杠图像捕捉设备和驾驶员可能不总是看到相同的对象。图像捕捉设备(例如,图像捕捉设备122、124和126)还可以位于其它位置中。例如,图像捕捉设备可以位于车辆200的侧视镜中的一者或两者之上或之中、车辆200的车顶上、车辆200的引擎盖上、车辆200的后备箱上、车辆200的侧面上、安装在车辆200的任何车窗上、置于车辆200的任何车窗的后面、或置于在任何车窗的前面、以及安装在车辆200的前部和/或后部上的照明设备中或附近。
除了图像捕捉设备,车辆200还可以包括系统100的各种其它组件。例如,处理单元110可以被包括在车辆200上,与车辆的引擎控制单元(engine control unit,ECU)集成或分离。车辆200还可以配备有诸如GPS接收器的位置传感器130,并且还可以包括地图数据库160以及存储器单元140和150。
如早先讨论的,无线收发器172可以通过一个或多个网络(例如,蜂窝网络、因特网等)和/或接收数据。例如,无线收发器172可以将系统100收集的数据上传到一个或多个服务器,并且从一个或多个服务器下载数据。经由无线收发器172,系统100可以接收,例如对存储在地图数据库160、存储器140和/或存储器150中存储的数据的周期性更新或按需求更新。类似地,无线收发器172可以将来自系统100的任何数据(例如,由图像获取单元120捕捉的图像、由位置传感器130或其它传感器、车辆控制系统接收的数据等)和/或由处理单元110处理的任何数据上传到一个或多个服务器。
系统100可以基于隐私等级设置将数据上传到服务器(例如,上传到云)。例如,系统100可以实施隐私等级设置,以规定或限制发送到服务器的、可以唯一地标识车辆和/或车辆的驾驶员/所有者的数据(包括元数据)的类型。这种设置可以由用户经由例如无线收发器172来设置、可以由出厂默认设置、或由无线收发器172接收的数据来初始化。
在一些实施例中,系统100可以根据“高”隐私等级上传数据,并且在设定了设置的情况下,系统100可以传输数据(例如,与路途有关的位置信息、捕捉的图像等),而不带有任何关于特定车辆和/或驾驶员/所有者的细节。例如,当根据“高”隐私设置来上传数据时,系统100可以不包括车辆标识编号(vehicle identification number,VIN)或车辆的驾驶员或所有者的名字,而可以代替地传输数据(诸如,捕捉的图像和/或与路途有关的受限的位置信息)。
考虑其它隐私等级。例如,系统100可以根据“中间”隐私等级向服务器传输数据,并且可以包括在“高”隐私等级下不包括的额外信息,诸如车辆的型号和/或模型和/或车辆类型(例如载客车辆、运动型多用途车辆、卡车等)。在一些实施例中,系统100可以根据“低”隐私等级上传数据。在“低”隐私等级设置下,系统100可以上传数据,并且包括足以唯一地标识特定车辆、所有者/驾驶员和/或车辆行驶过的部分或整个路途的信息。这种“低”隐私等级数据可以包括以下中的一个或多个:例如VIN、驾驶员/所有者姓名、出发之前车辆的源点、车辆的期望目的地、车辆的型号和/或模型、车辆类型等。
图2A是根据所公开的实施例的示例车辆成像系统的图示性侧视图表示。图2B是图2A中所示的实施例的图示性顶视图例示。如图2B所示,所公开的实施例可以包括车辆200,该车辆200在其车体中包括系统100,该系统100具有位于车辆200的后视镜附近和/或靠近驾驶员的第一图像捕捉设备122、位于车辆200的保险杠区域(例如,保险杠区域210中的一个)之上或之中的第二图像捕捉设备124、以及处理单元110。
如图2C所示,图像捕捉设备122和124两者可以都位于车辆200的后视镜附近和/或靠近驾驶员。此外,尽管图2B和图2C示出了两个图像捕捉设备122和124,应理解的是,其它实施例可以包括两个以上的图像捕捉设备。例如,在图2D和图2E中所示的实施例中,第一图像捕捉设备122、第二图像捕捉设备124和第三图像捕捉设备126被包括在车辆200的系统100中。
如图2D所示,图像捕捉设备122可以位于车辆200的后视镜附近和/或靠近驾驶员,并且图像捕捉设备124和126可以位于车辆200的保险杠区域(例如,保险杠区域210中的一个)之上或之中。并且如图2E所示,图像捕捉设备122、124和126可以位于车辆200的后视镜附近和/或靠近驾驶席。所公开的实施例不限于图像捕捉设备的任何特定数量和配置,并且图像捕捉设备可以位于车辆200内或车辆200上的任何合适的位置中。
应理解的是,所公开的实施例不限于车辆,并且可以被应用在其它情景中。还应理解,所公开的实施例不限于车辆200的特定类型,并且可以适用于所有类型的车辆,包括汽车、卡车、拖车和其它类型的车辆。
第一图像捕捉设备122可以包括任何合适类型的图像捕捉设备。图像捕捉设备122可以包括光轴。在一个实例中,图像捕捉设备122可以包括具有全局快门的Aptina M9V024WVGA传感器。在其它实施例中,图像捕捉设备122可以提供1280×960像素的分辨率,并且可以包括滚动快门。图像捕捉设备122可以包括各种光学元件。在一些实施例中,可以包括一个或多个镜头,例如用于为图像捕捉设备提供期望的焦距和视场。在一些实施例中,图像捕捉设备122可以与6毫米镜头或12毫米镜头相关联。在一些实施例中,如图2D所示,图像捕捉设备122可以配置为捕捉具有期望的视场(FOV)202的图像。例如,图像捕捉设备122可以配置为具有常规FOV,诸如在40度到56度的范围内,包括46度FOV、50度FOV、52度FOV,或更大的FOV。可替代地,图像捕捉设备122可以配置为具有在23至40度的范围内的窄FOV,诸如28度FOV或36度FOV。此外,图像捕捉设备122可以配置为具有在100至180度的范围内的宽FOV。在一些实施例中,图像捕捉设备122可以包括广角保险杠相机或者具有高达180度的FOV的相机。在一些实施例中,图像捕捉设备122可以是具有约2:1的高宽比(例如,H×V=3800×1900像素)、具有约100度水平FOV的7.2M(百万)像素图像捕捉设备。这种图像捕捉设备可以被用来替代三个图像捕捉设备配置。由于显著的镜头失真,在图像捕捉设备使用径向对称镜头的实施方式中,这种图像捕捉设备的垂直FOV可以显著地小于50度。例如,这种镜头可以不是径向对称的,这将允许在100度水平FOV情况下垂直FOV大于50度。
第一图像捕捉设备122可以获取关于与车辆200相关联的场景的多个第一图像。多个第一图像中的每一个可以作为一系列的图像扫描线而被获取,其可使用滚动快门来捕捉。每个扫描线可以包括多个像素。
第一图像捕捉设备122可以具有与第一系列图像扫描线中的每一个的获取相关联的扫描速率。扫描速率可以指,图像传感器可以以该扫描速率获取与包含在特定扫描线中的每个像素相关联的图像数据。
图像捕捉设备122、124和126可以包含任何合适的类型和数量的图像传感器,例如,包括CCD传感器或CMOS传感器等。在一个实施例中,可以采用CMOS图像传感器以及滚动快门,以使得一行中的每个像素一次被读取一个,并且各行的扫描在逐行的基础上继续进行,直到已经捕捉了整个图像帧。在一些实施例中,可以相对于帧从顶部到底部顺序地捕捉各行。
在一些实施例中,本文公开的图像捕捉设备中的一个或多个(例如,图像捕捉设备122、124和126)可以构成高分辨率成像器,并且可以具有大于5M像素、7M像素、10M像素或更大像素的分辨率。
滚动快门的使用可能导致不同行中的像素在不同的时间被曝光和捕捉,这可能引起所捕捉的图像帧中的扭曲和其它图像伪像。另一方面,当图像捕捉设备122配置为利用全局或同步快门操作时,所有像素可以以相同量的时间并且在共同曝光时段期间被曝光。其结果是,在从采用全局快门的系统收集的帧中的图像数据表示在一特定时间的整个FOV(诸如FOV 202)的快照。与之相比,在滚动快门应用中,在不同的时间,帧中的每行被曝光并且数据被捕捉。因此,在具有滚动快门的图像捕捉设备中,移动对象可能出现失真。将在下面更详细地描述这种现象。
第二图像捕捉设备124和第三图像捕捉设备126可以是任何类型的图像捕捉设备。类似于第一图像捕捉设备122,图像捕捉设备124和126中的每一个可以包括光轴。在一个实施例中,图像捕捉设备124和126中的每一个可以包括具有全局快门的Aptina M9V024 WVGA传感器。可替代地,图像捕捉设备124和126中的每一个可以包括滚动快门。类似于图像捕捉设备122,图像捕捉设备124和126可以配置为包括各种镜头和光学元件。在一些实施例中,与图像捕捉设备124和126相关联的镜头可以提供FOV(诸如FOV204和206),其等于或窄于与图像捕捉设备122相关联的FOV(诸如FOV202)。例如,图像捕捉设备124和126可以具有40度、30度、26度、23度、20度或更小的FOV。
图像捕捉设备124和126可以获取关于与车辆200相关联的场景的多个第二图像和第三图像。该多个第二图像和第三图像中的每一个可以作为第二系列和第三系列的图像扫描线而被获取,这可以使用滚动快门进行捕捉。每个扫描线或行可以具有多个像素。图像捕捉设备124和126可以具有与被包含在第二系列和第三系列中的每个图像扫描线的获取相关联的第二扫描速率和第三扫描速率。
每个图像捕捉设备122、124和126可以放置在相对于车辆200的任何合适的位置和方向处。可以选择图像捕捉设备122、124和126的相对位置以帮助将从图像捕捉设备获取的信息融合在一起。例如,在一些实施例中,与图像捕捉设备124相关联的FOV(诸如FOV 204)可能部分地或完全地和与图像捕捉设备122相关联的FOV(例如FOV 202)以及与图像捕捉设备126相关联的FOV(例如FOV 206)重叠。
图像捕捉设备122、124和126可以位于车辆200上的任何合适的相对高度处。在一个实例中,在图像捕捉设备122、124和126之间可以存在高度差,其可以提供足够的视差信息以使能立体分析。例如,如图2A所示,两个图像捕捉设备122和124在不同的高度处。例如,在图像捕捉设备122、124和126之间还可以存在横向位移差,为处理单元110的立体分析给出了额外的视差信息。如图2C和图2D所示,横向位移的差异可以通过d
图像捕捉设备122可以具有任何合适的分辨率能力(例如,与图像传感器相关联的像素的数量),并且与图像捕捉设备122相关联的(一个或多个)图像传感器的分辨率可以比与图像捕捉设备124和126相关联的(一个或多个)图像传感器的分辨率更高、更低、或者与之相同。在一些实施例中,与图像捕捉设备122和/或图像捕捉设备124和126相关联的(一个或多个)图像传感器可以具有640×480、1024×768、1280×960的分辨率,或任何其它合适的分辨率。
帧速率(例如,在该速率下,图像捕捉设备获取一个图像帧的一组像素数据,然后继续捕捉与下一个图像帧相关联的像素数据)可以是可控的。与图像捕捉设备122相关联的帧速率可以比与图像捕捉设备124和126相关联的帧速率更高、更低或与之相同。与图像捕捉设备122、124和126相关联的帧速率可以取决于可能影响帧速率的定时的各种因素。例如,图像捕捉设备122、124和126中的一个或多个可以包括可选择的像素延迟时段,其在获取与图像捕捉设备122、124和/或126中的图像传感器的一个或多个像素相关联的图像数据之前或之后施加。通常,可以根据用于该设备的时钟速率来获取对应于每个像素的图像数据(例如,每个时钟周期一个像素)。另外,在包括滚动快门的实施例中,图像捕捉设备122、124和126中的一个或多个可以包括可选择的水平消隐时段,其在获取与图像捕捉设备122、124和/或126中的图像传感器的一行像素相关联的图像数据之前或之后施加。此外,图像捕捉设备122、124和126的一个或多个图像可以包括可选择的垂直消隐时段,其在获取与图像捕捉设备122、124和126的图像帧相关联的图像数据之前或之后施加。
这些定时控制可以使能与图像捕捉设备122、124和126相关联的帧速率的同步,即便每个的线扫描率速率不同。此外,如将在下面更详细地讨论的,这些可选择的定时控制以及其它因素(例如,图像传感器分辨率、最大线扫描速率等)可以使能从图像捕捉设备122的FOV与图像捕捉设备124和126的一个或多个FOV重叠的区域的图像捕捉的同步,即便图像捕捉设备122的视场不同于图像捕捉设备124和126的FOV。
图像捕捉设备122、124和126中的帧速率定时可以取决于相关联的图像传感器的分辨率。例如,假定对于两个设备,线扫描速率类似,如果一个设备包括具有640×480的分辨率的图像传感器,并且另一设备包括具有1280×960的分辨率的图像传感器,则需要更多的时间来从具有更高分辨率的传感器获取一帧图像数据。
可能影响图像捕捉设备122、124和126中的图像数据获取的定时的另一个因素是最大线扫描速率。例如,从被包含在图像捕捉设备122、124和126中的图像传感器获取一行图像数据将需要某个最低时间量。假定没有添加像素延迟时段,则用于获取一行图像数据的此最低时间量将与用于特定设备的最大线扫描速率有关。提供较高的最大线扫描速率的设备具有提供比具有较低的最大线扫描速率的设备更高的帧速率的潜力。在一些实施例中,图像捕捉设备124和126中的一个或多个可以具有高于与图像捕捉设备122相关联的最大线扫描速率的最大线扫描速率。在一些实施例中,图像捕捉设备124和/或126的最大线扫描速率可以是图像捕捉设备122的最大线扫描速率的1.25、1.5、1.75或2倍或更多倍。
在另一实施例中,图像捕捉设备122、124和126可以具有相同的最大线扫描速率,但图像捕捉设备122可以以小于或等于其最大扫描速率的扫描速率而操作。该系统可以配置为使得图像捕捉设备124和126中的一个或多个以等于图像捕捉设备122的线扫描速度的线扫描速率操作。在其它实例中,该系统可以配置为使得图像捕捉设备124和/或图像捕捉设备126的线扫描速率可以是图像捕捉设备122的线扫描速度的1.25、1.5、1.75、或2倍或更多倍。
在一些实施例中,图像捕捉设备122、124和126可以是不对称的。也就是说,它们可包括具有不同视场(FOV)和焦距的相机。例如,图像捕捉设备122、124和126的视场可以包括关于车辆200的环境的任何期望的区域。在一些实施例中,图像捕捉设备122、124和126中的一个或多个可以配置为从在车辆200前面、车辆200后面、车辆200的侧面、或其组合的环境获取图像数据。
此外,与每个图像捕捉设备122、124和/或126相关联的焦距可以是可选择的(例如,通过包括适当的镜头等),使得每个设备在相对于车辆200的期望的距离范围处获取对象的图像。例如,在一些实施例中,图像捕捉设备122、124和126可以获取离车辆几米之内的接近对象的图像。图像捕捉设备122、124和126还可以配置为获取离车辆更远的范围处(例如,25米、50米、100米、150米或更远)的对象的图像。此外,图像捕捉设备122、124和126的焦距可以被选择以使得一个图像捕捉设备(例如,图像捕捉设备122)可以获取相对靠近车辆(例如,在10米内或20米内的)对象的图像,而其它图像捕捉设备(例如,图像捕捉设备124和126)可以获取离车辆200较远的(例如,大于20米、50米、100米、150米等的)对象的图像。
根据一些实施例,一个或多个图像捕捉设备122、124和126的FOV可以具有广角。例如,具有140度的FOV可能是有利的,尤其是对于可以被用于捕捉车辆200附近的区域的图像的图像捕捉设备122、124和126。例如,图像捕捉设备122可以被用来捕捉车辆200的右侧或左侧的区域的图像,并且在这种实施例中,可能期望图像捕捉设备122具有宽FOV(例如,至少140度)。
与每个图像捕捉设备122、124和126相关联的FOV可以取决于各自的焦距。例如,随着焦距增加,对应的视场减小。
图像捕捉设备122、124和126可以配置为具有任何合适的视场。在一个特定示例中,图像捕捉设备122可以具有46度的水平FOV,图像捕捉设备124可以具有23度的水平FOV,并且图像捕捉设备126可以具有在23度和46度之间的水平FOV。在另一实例中,图像捕捉设备122可以具有52度的水平FOV,图像捕捉设备124可以具有26度的水平FOV,并且图像捕捉设备126可以具有在26度和52度之间的水平FOV。在一些实施例中,图像捕捉设备122的FOV与图像捕捉设备124和/或图像捕捉设备126的FOV的比率可以从1.5到2.0变化。在其它实施例中,该比率可以在1.25与2.25之间变化。
系统100可以配置为使得图像捕捉设备122的视场至少部分地或完全地与图像捕捉设备124和/或图像捕捉设备126的视场重叠。在一些实施例中,系统100可以配置为使得图像捕捉设备124和126的视场例如落入(例如,窄于)图像捕捉设备122的视场并且与图像捕捉设备122的视场共享共同的中心。在其它实施例中,图像捕捉设备122、124和126可以捕捉相邻的FOV,或者可以在它们FOV中具有部分重叠。在一些实施例中,图像捕捉设备122、124和126的视场可以对齐,以使得较窄FOV图像捕捉设备124和/或126的中心可以位于较宽FOV设备122的视场的下半部分中。
图2F是根据所公开的实施例的示例车辆控制系统的图示性表示。如图2F所指示的,车辆200可以包括油门调节系统220、制动系统230和操纵系统240。系统100可以经过一个或多个数据链路(例如,任何用于传输数据的有线和/或无线链路)向油门调节系统220、制动系统230和操纵系统240中的一个或多个提供输入(例如,控制信号)。例如,基于对由图像捕捉设备122、124和/或126获取的图像的分析,系统100可以向油门调节系统220、制动系统230和操纵系统240中的一个或多个提供控制信号以导航车辆200(例如,通过引起加速、操纵、车道变换等)。此外,系统100可以从油门调节系统220、制动系统230和操纵系统240中的一个或多个接收指示车辆200的运行条件(例如,速度、车辆200是否正在制动和/或操纵等)的输入。以下结合图4至图7提供进一步的细节。
如图3A所示,车辆200还可以包括用于与车辆200的驾驶员或乘客进行交互的用户界面170。例如,车辆应用中的用户界面170可以包括触摸屏320、旋钮330、按钮340和麦克风350。车辆200的驾驶员或乘客还可以使用手柄(例如,位于车辆200的操纵杆上或附近,包括例如操纵信号手柄)、按钮(例如,位于车辆200的方向盘上)等与系统100交互。在一些实施例中,麦克风350可以位于与后视镜310相邻。类似地,在一些实施例中,图像捕捉设备122可以位于靠近后视镜310。在一些实施例中,用户界面170还可以包括一个或多个扬声器360(例如,车辆音频系统的扬声器)。例如,系统100可以经由扬声器360提供各种通知(例如,警报)。
图3B至图3D是根据所公开的实施例的配置为位于后视镜(例如,后视镜310)后面并与车辆风挡相对的示例相机安装370的例示。如图3B所示,相机安装370可以包括图像捕捉设备122、124和126。图像捕捉设备124和126可以位于遮光板380的后面,其中遮光板380可以相对于车辆风挡齐平(flush)并且包括薄膜和/或防反射材料的合成物。例如,遮光板380可被放置为使得该板相对于具有匹配斜面的车辆的风挡对齐。在一些实施例中,图像捕捉设备122、124和126的每个可以位于遮光板380的后面,例如在图3D中所描绘的。所公开的实施例不限于图像捕捉设备122、124和126、相机安装370和遮光板380的任何特定配置。图3C是图3B所示的相机安装370从前面视角的例示。
如受益于本公开的本领域技术人员将理解的,可以对前述所公开的实施例做出许多变型和/或修改。例如,并非所有组件对于系统100的操作是必要的。此外,任何组件可以位于系统100的任何适当的部件中并且组件可以被重新布置成各种配置同时提供所公开的实施例的功能。因此,前述配置是示例性的,并且不管上述讨论的配置如何,系统100都可以提供广阔范围的功能以分析车辆200的周围并响应于该分析而导航车辆200。
如在下面更详细讨论的并且根据各种所公开的实施例,系统100可以提供各种关于自主驾驶和/或驾驶员辅助技术的特征。例如,系统100可以分析图像数据、位置数据(例如,GPS位置信息)、地图数据、速度数据和/或来自包含在车辆200中的传感器的数据。系统100可以从例如图像获取单元120、位置传感器130以及其它传感器收集数据用于分析。此外,系统100可以分析所收集的数据以确定车辆200是否应该采取某个动作,然后无需人工干预而自动采取所确定的动作。例如,当车辆200无需人工干预而导航时,系统100可以自动地控制车辆200的制动、加速、和/或操纵(例如,通过向油门调节系统220、制动系统230和操纵系统240中的一个或多个发送控制信号)。此外,系统100可以分析所收集的数据,并基于对所收集的数据的分析向车辆乘员发出警告和/或警报。下面提供关于系统100提供的各种实施例的额外的细节。
如上所讨论的,系统100可以提供使用多相机系统的驾驶辅助功能。多相机系统可以使用面向车辆的前方的一个或多个相机。在其它实施例中,多相机系统可以包括面向车辆的侧方或面向车辆的后方的一个或多个相机。在一个实施例中,例如系统100可以使用双相机成像系统,其中,第一相机和第二相机(例如,图像捕捉设备122和124)可以位于车辆(例如,车辆200)的前面和/或侧面处。
第一相机可以具有大于、小于、或部分重叠于第二相机的视场的视场。此外,第一相机可以连接到第一图像处理器以执行对由第一相机提供的图像的单目图像分析,并且第二相机可以连接到第二图像处理器以执行对由第二相机提供的图像的单目图像分析。第一和第二图像处理器的输出(例如,处理后的信息)可以被组合。在一些实施例中,第二图像处理器可以从第一相机和第二相机两者接收图像以执行立体分析。在另一实施例中,系统100可以使用三相机成像系统,其中每个相机具有不同的视场。因此,这种系统可以基于从位于车辆的前方和侧方的变化距离处的对象得到的信息做出决定。对单目图像分析的参考可以参考基于从单个视点(例如,从单个相机)捕捉的图像执行图像分析的实例。立体图像分析可以参考基于利用图像捕捉参数的一个或多个变化而捕捉的两个或多个图像执行图像分析的实例。例如,捕捉到的适用于执行立体图像分析的图像可以包括以下捕捉图像:从两个或多个不同的位置、从不同的视场、使用不同的焦距、与视差信息一起等捕捉的图像。
例如,在一个实施例中,系统100可以使用图像捕捉设备122、124和126实现三相机配置。在这种配置中,图像捕捉设备122可以提供窄视场(例如,34度或从约20度至45度的范围选择的其它值等),图像捕捉设备124可以提供宽视场(例如,150度或从约100度至约180度的范围选择的其它值),并且图像捕捉设备126可以提供中间的视场(例如,46度或从约35度至约60度的范围选择的其它值)。在一些实施例中,图像捕捉设备126可以作为主相机或基本相机。图像捕捉设备122、124和126可以位于后视镜310的后面并且基本上并排(例如,相距6厘米)。此外,在一些实施例中,如以上所讨论的,图像捕捉设备122、124和126中的一个或多个可以被安装在与车辆200的风挡齐平的遮光板380的后面。这种遮挡可以作用以减少任何来自车内的反射对图像捕捉设备122、124和126的影响。
在另一实施例中,如以上结合图3B和3C所讨论的,宽视场相机(例如,上述示例中的图像捕捉设备124)可以被安装得低于窄视场相机和主视场相机(例如,上述的示例中的图像捕捉设备122和126)。这种配置可以提供来自宽视场相机的自由视线。为减少反射,相机可以被安装得靠近车辆200的风挡,并且在相机上可以包括偏振器以衰减(damp)反射光。
三相机系统可以提供某些性能特性。例如,一些实施例可以包括通过一个相机基于来自另一相机的检测结果来验证对象的检测的能力。在上面讨论的三相机配置中,处理单元110可以包括例如三个处理设备(例如,三个如以上所讨论的EyeQ系列处理器芯片),其中每个处理设备专用于处理由图像捕捉设备122、124和126中的一个或多个捕捉的图像。
在三相机系统中,第一处理设备可以从主相机和窄视场相机两者接收图像,并且执行对窄FOV相机的视觉处理,例如以检测其它车辆、行人、车道标记、交通标志、交通灯以及其它道路对象。另外,第一处理设备可以计算来自主相机和窄相机的图像之间的像素的视差,并且创建车辆200的环境的3D重建。然后第一处理设备可以组合3D重建与3D地图数据、或组合3D重建与基于来自另一相机的信息计算出的3D信息。
第二处理设备可以从主相机接收图像,并执行视觉处理以检测其它车辆、行人、车道标记、交通标志、交通灯和其它道路对象。另外,第二处理设备可以计算相机位移,并且基于该位移计算连续图像之间的像素的视差,并创建场景的3D重建(例如,运动恢复结构(structure from motion))。第二处理设备可以将基于3D重建的运动恢复结构发送到第一处理设备以与立体3D图像进行组合。
第三处理设备可以从宽FOV相机接收图像,并处理该图像以检测车辆、行人、车道标记、交通标志、交通灯和其它道路对象。第三处理设备还可以执行额外的处理指令来分析图像,以识别图像中移动的对象,诸如正改变车道的车辆、行人等。
在一些实施例中,使得基于图像的信息的流被独立地捕捉和处理可以提供用于在系统中提供冗余的机会。这种冗余可以包括例如使用第一图像捕捉设备和从该设备处理的图像来验证和/或补充通过从至少第二图像捕捉设备捕捉和处理图像信息而获得的信息。
在一些实施例中,系统100将两个图像捕捉设备(例如,图像捕捉设备122和124)用在为车辆200提供导航辅助中,并使用第三图像捕捉设备(例如,图像捕捉设备126)来提供冗余并验证对从其它两个图像捕捉设备接收到的数据的分析。例如,在这种配置中,图像捕捉设备122和124可以提供用于通过系统100进行立体分析的图像以导航车辆200,而图像捕捉设备126可以提供用于通过系统100进行单目分析的图像以提供对基于从图像捕捉设备122和/或图像捕捉设备124捕捉的图像而获得的信息的冗余和验证。即,图像捕捉设备126(和对应的处理设备)可以被视为提供用于提供对从图像捕捉设备122和124得到的分析的检查的冗余子系统(例如,以提供自动紧急制动(AEB)系统)。此外,在一些实施例中,可基于从一个或多个传感器接收的信息(例如,雷达、激光雷达、声学传感器,从车辆外部的一个或多个收发器接收的信息等)来补充接收到的数据的冗余和验证。
本领域的技术人员将认识到,上述相机配置、相机放置、相机数量、相机位置等仅为示例。在不脱离所公开的实施例的范围下,这些组件和关于整个系统描述的其它组件可以被组装并且在各种不同的配置中使用。关于使用多相机系统以提供驾驶员辅助和/或自主车辆功能的进一步的细节如下。
图4是存储器140和/或存储器150的示例性功能性框图,其可以被存储/用指令编程以用于执行与本公开实施例一致的一个或多个操作。虽然下面指代存储器140,但是本领域技术人员将认识到指令可以被存储在存储器140和/或存储器150中。
如图4所示,存储器140可以存储单目图像分析模块402、立体图像分析模块404、速度和加速度模块406以及导航响应模块408。所公开的实施例不限于存储器140的任何特定配置。此外,应用处理器180和/或图像处理器190可以执行在被包含在存储器140中的任何模块402、404、406和408中所存储的指令。本领域的技术人员将理解,在下面的讨论中,对处理单元110的参考可以单独地或统一地指代应用处理器180和图像处理器190。因此,任何以下处理的步骤可以由一个或多个处理设备来执行。
在一个实施例中,单目图像分析模块402可以存储指令(诸如计算机视觉软件),该指令在由处理单元110执行时,执行对由图像捕捉设备122、124和126的一个获取的一组图像的单目图像分析。在一些实施例中,处理单元110可以将来自一组图像的信息与额外的传感信息(例如,来自雷达、激光雷达等的信息)组合以执行单目图像分析。如以下结合图5A至图5D所描述的,单目图像分析模块402可以包括用于在该组图像内检测一组特征的指令,所述特征诸如车道标记、车辆、行人、道路标志、高速公路出口坡道、交通灯、危险对象以及任何其它与车辆的环境相关联的特征。基于该分析,系统100(例如,经由处理单元110)可以引起车辆200中的一个或多个导航响应,诸如操纵、车道变换、加速度的改变等,如以下结合导航响应模块408所讨论的。
在一个实施例中,立体图像分析模块404可以存储指令(诸如,计算机视觉软件),该指令在由处理单元110执行时,执行对由从任意图像捕捉设备122、124和126中选择的图像捕捉设备的组合而获取的第一组和第二组图像的立体图像分析。在一些实施例中,处理单元110可以将来自第一组和第二组图像的信息与额外的传感信息(例如,来自雷达的信息)组合以执行立体图像分析。例如,立体图像分析模块404可以包括用于基于由图像捕捉设备124获取的第一组图像和由图像捕捉设备126获取的第二组图像执行立体图像分析的指令。如下文结合图6所描述的,立体图像分析模块404可以包括用于检测第一组和第二组图像内的一组特征的指令,所述特征诸如车道标记、车辆、行人、道路标志、高速公路出口坡道、交通灯、危险对象等。基于该分析,处理单元110可以引起车辆200中的一个或多个导航响应,诸如操纵、车道变换、加速度的改变等,如以下结合导航响应模块408所讨论的。此外,在一些实施例中,立体图像分析模块404可实施与经训练的系统(诸如神经网络或深度神经网络)或未经训练的系统相关联的技术,诸如一种系统,其可以被配置为使用计算机视觉算法来检测和/或标记从其中捕捉和处理传感信息的环境中的对象。在一个实施例中,立体图像分析模块404和/或其他图像处理模块可以被配置为使用经训练和未训练的系统的组合。
在一个实施例中,速度和加速度模块406可以存储被配置为对从车辆200中配置为引起车辆200的速度和/或加速度的改变的一个或多个计算和机电设备收到的数据进行分析的软件。例如,处理单元110可以执行与速度和加速度模块406相关联的指令,以基于从单目图像分析模块402和/或立体图像分析模块404的执行而得到的数据来计算车辆200的目标速度。这种数据可以包括例如目标位置、速度和/或加速度、车辆200相对于附近车辆、行人或道路对象的位置和/或速度、车辆200相对于道路的车道标记等的位置信息等。此外,处理单元110可以基于传感输入(例如,来自雷达的信息)和来自车辆200的其它系统、诸如油门调节系统220、制动系统230和/或操纵系统240的输入来计算车辆200的目标速度。基于计算的目标速度,处理单元110可以向车辆200的油门调节系统220、制动系统230和/或操纵系统的240传输电子信号,例如通过物理地压下制动器或松开车辆200的加速器,来触发速度和/或加速度的变化。
在一个实施例中,导航响应模块408可以存储可由处理单元110执行以基于从单目图像分析模块402和/或立体声图像分析模块404的执行而得到的数据来确定期望的导航响应的软件。这种数据可以包括与附近的车辆、行人和道路对象相关联的位置和速度信息、车辆200的目标位置信息等。另外,在一些实施例中,导航响应可以(部分地或完全地)基于地图数据、车辆200的预定位置、和/或车辆200与从单目图像分析模块402和/或立体声图像分析模块404的执行检测到的一个或多个对象之间的相对速度或相对加速度。导航响应模块408还可以基于传感输入(例如,来自雷达的信息)和来自车辆200的其它系统、诸如车辆200的油门调节系统220、制动系统230和操纵系统240的输入确定期望的导航响应。基于期望的导航响应,处理单元110可以向车辆200的油门调节系统220、制动系统230和操纵系统240传输电子信号以触发期望的导航响应,例如通过转动车辆200的方向盘以实现预定角度的旋转。在一些实施例中,处理单元110可以使用导航响应模块408的输出(例如,期望的导航响应)作为对速度和加速度模块406的执行的输入,用于计算车辆200的速度的改变。
此外,本文公开的任何模块(例如,模块402、404和406)可以实现与经训练的系统(诸如神经网络或深度神经网络)或未经训练的系统相关联的技术。
图5A是示出根据所公开的实施例的用于基于单目图像分析引起一个或多个导航响应的示例过程500A的流程图。在步骤510,处理单元110可以经由在处理单元110和图像获取单元120之间的数据接口128接收多个图像。例如,包含在图像获取单元120中的相机(诸如具有视场202的图像捕捉设备122)可以捕捉车辆200的前方(例如,或者车辆的侧方或后方)区域的多个图像并经过数据连接(例如,数字、有线、USB、无线、蓝牙等)将它们传输到处理单元110。在步骤520,处理单元110可以执行单目图像分析模块402来分析该多个图像,如以下结合图5B至5D进一步详细描述的。通过执行该分析,处理单元110可以在该组图像内检测一组特征,诸如车道标记、车辆、行人、道路标志、高速公路出口坡道、交通灯等。
在步骤520,处理单元110还可以执行单目图像分析模块402来检测各种道路危险,诸如例如卡车轮胎的部件、倒下的道路标志、松散货物、小动物等。道路危险可能在结构、形状、大小和颜色上变化,这可能使这种危险的检测更加困难。在一些实施例中,处理单元110可以执行单目图像分析模块402来对该多个图像执行多帧分析以检测道路危险。例如,处理单元110可以估计连续图像帧之间的相机运动,并计算帧之间的像素中的视差来构建道路的3D地图。然后,处理单元110可以使用该3D地图来检测路面、以及存在于路面上的危险。
在步骤530,处理单元110可以执行导航响应模块408以基于在步骤520中执行的分析和如以上结合图4描述的技术引起一个或多个导航响应。导航响应可以包括例如操纵、车道变换、加速度变化等。在一些实施例中,处理单元110可以使用从速度和加速度模块406的执行得到的数据来引起一个或多个导航响应。此外,多个导航响应可能同时地、按照顺序地或以其任意组合而发生。例如,处理单元110可以通过例如按照顺序地向车辆200的操纵系统240和油门调节系统220传输控制信号,使得车辆200变换一个车道然后加速。可替代地,处理单元110可以通过例如同时向车辆200的制动系统230和操纵系统240传输控制信号,使得车辆200制动同时变换车道。
图5B是示出根据所公开的实施例的用于在一组图像中检测一个或多个的车辆和/或行人的示例过程500B的流程图。处理单元110可以执行单目图像分析模块402来实现过程500B。在步骤540,处理单元110可以确定表示可能的车辆和/或行人的一组候选对象。例如,处理单元110可以扫描一个或多个图像,将该图像与一个或多个预定模式比较,并且在每个图像内识别可能包含感兴趣的对象(例如,车辆、行人或其部分)的可能的位置。预定模式可以以实现高“伪命中”率和低“漏掉”率的这种方式来设计。例如,处理单元110可以将低的相似性的阈值用在预定模式以将候选对象识别为可能的车辆或行人。这样做可以允许处理单元110减少漏掉(例如,未识别出)表示车辆或行人的候选对象的可能性。
在步骤542,处理单元110可以基于分类标准过滤该组候选对象以排除某些候选(例如,不相关或较不相关的对象)。这种标准可以从与存储在数据库(例如,存储在存储器140中的数据库)中的对象类型相关联的各种属性得到。属性可以包括对象形状、尺寸、纹理、位置(例如,相对于车辆200)等。因此,处理单元110可以使用一组或多组标准来从该组候选对象中拒绝伪候选。
在步骤544,处理单元110可以分析多帧图像,以确定在该组候选对象中的对象是否表示车辆和/或行人。例如,处理单元110可以跨连续帧来跟踪检测到的候选对象并累积与检测到的对象相关联的逐帧数据(例如,尺寸、相对于车辆200的位置等)。此外,处理单元110可以估计检测到的对象的参数并将该对象的逐帧位置数据与预测的位置比较。
在步骤546,处理单元110可以对于检测到的对象构建一组测量。这种测量可以包括例如与检测到的对象相关联的位置、速度和加速度值(相对于车辆200)。在一些实施例中,处理单元110可以基于使用一系列基于时间的观察的、诸如卡尔曼滤波器或线性二次估计(LQE)的估计技术和/或基于对于不同对象类型(例如,汽车、卡车、行人、自行车、道路标志等)可用的建模数据,来构建该测量。卡尔曼滤波器可以基于对象的比例的测量,其中该比例测量与要碰撞的时间(例如,车辆200到达对象的时间量)成比例。因此,通过执行步骤540至546,处理单元110可以识别在该组捕捉图像内出现的车辆和行人,并得到与该车辆和行人相关联的信息(例如,位置、速度、大小)。基于该识别和所得到的信息,处理单元110可以引起车辆200中的一个或多个导航响应,如以上结合图5A所描述的。
在步骤548,处理单元110可以执行对一个或多个图像的光流分析,以减少检测到“伪命中”和漏掉表示车辆或行人的候选对象的可能性。光流分析可以指,例如在一个或多个图像中分析相对于车辆200的、与其它车辆和行人相关联的并且区别于路面运动的运动模式。处理单元110可以通过跨越在不同时间捕捉到的多个图像帧观察对象的不同位置,来计算候选对象的运动。处理单元110可以使用该位置和时间值作为对用于计算候选对象的运动的数学模型的输入。因此,光流分析可以提供检测车辆200附近的车辆和行人的另一种方法。处理单元110可以结合步骤540至546执行光流分析,以提供检测车辆和行人的冗余,并提高系统100的可靠性。
图5C是示出根据所公开的实施例的用于在一组图像中检测道路标记和/或车道几何信息的示例过程500C的流程图。处理单元110可以执行单目图像分析模块402来实现处理500C。在步骤550,处理单元110可以通过扫描一个或多个图像来检测一组对象。为了检测车道标记、车道几何信息以及其它相关的道路标记的区段,处理单元110可以过滤该组对象以排除那些被确定为不相关的(例如,小坑洼、小石块等)。在步骤552,处理单元110可以将在步骤550中检测到的属于相同的道路标记或车道标记的区段分组在一起。基于该分组,处理单元110可以建立表示所检测到的区段的模型,诸如数学模型。
在步骤554,处理单元110可以构建与所检测的区段相关联的一组测量。在一些实施例中,处理单元110可以创建所检测的区段从图像平面到现实世界平面上的投影。该投影可以使用具有与诸如所检测的道路的位置、斜率、曲率和曲率导数的物理属性对应的系数的三次多项式来表征。在产生该投影中,处理单元110可以考虑路面的变化、以及与车辆200相关联的俯仰(pitch)和滚转(roll)速率。此外,处理单元110可以通过分析出现在路面上的位置和运动线索来对道路标高进行建模。此外,处理单元110可以通过跟踪一个或多个图像中的一组特征点来估计与车辆200相关联的俯仰和滚转速率。
在步骤556,处理单元110可以通过例如跨连续图像帧跟踪所检测到的区段并累积与检测到的区段相关联的逐帧数据来执行多帧分析。由于处理单元110执行多帧分析,在步骤554中构建的该组测量可以变得更可靠并且与越来越高的置信水平相关联。因此,通过执行步骤550、552、554和556,处理单元110可以识别在该组捕捉图像中出现的道路标记并得到车道几何信息。基于该识别和所得到的信息,处理单元110可以引起车辆200中的一个或多个导航响应,如以上结合图5A所描述的。
在步骤558,处理单元110可以考虑额外的信息源,以进一步建立车辆200的在其周围的环境中的安全模型。处理单元110可以使用该安全模型来定义系统100可以在其中以安全的方式执行车辆200的自主控制的环境。为建立该安全模型,在一些实施例中,处理单元110可以考虑其它车辆的位置和运动、所检测的路缘和路障、和/或从地图数据(诸如来自地图数据库160的数据)提取的一般道路形状描述。通过考虑额外的信息源,处理单元110可以提供用于检测道路标记和车道几何结构的冗余,并增加系统100的可靠性。
图5D是示出了根据所公开的实施例的用于在一组图像中检测交通灯的示例过程500D的流程图。处理单元110可以执行单目图像分析模块402来实现处理500D。在步骤560,处理单元110可以扫描该组图像,并识别出现在图像中的可能包含交通灯的位置处的对象。例如,处理单元110可以过滤所识别的对象来构造一组候选对象,排除不可能对应于交通灯的那些对象。过滤可以基于与交通灯相关联的诸如形状、尺寸、纹理、位置(例如,相对于车辆200)等的各种属性来进行。这种属性可以基于交通灯和交通控制信号的多个示例并存储在数据库中。在一些实施例中,处理单元110可以对反映可能的交通灯的该组候选对象执行多帧分析。例如,处理单元110可以跨连续图像帧跟踪候选对象,估计候选对象的现实世界位置,并过滤掉那些移动的对象(其不可能是交通灯)。在一些实施例中,处理单元110可以对候选对象执行颜色分析,并识别出现在可能的交通灯内的所检测到的颜色的相对位置。
在步骤562,处理单元110可以分析交叉口的几何形状。该分析可以基于以下的任意组合:(i)在车辆200的任一侧检测到的车道的数量、(ii)在道路上检测到的标记(如箭头标记)、和(iii)从地图数据(例如,来自地图数据库160的数据)提取的交叉口的描述。处理单元110可以使用从单目分析模块402的执行得到的信息进行分析。此外,处理单元110可以确定在步骤560中检测到的交通灯和在车辆200附近出现的车道之间的对应性。
在步骤564,随着车辆200接近交叉口,处理单元110可以更新与所分析的交叉口几何形状和所检测到的交通灯相关联的置信度水平。例如,被估计为出现在交叉口处的交通灯的数量与实际出现在交叉口处的交通灯的数量比较可能影响置信度水平。因此,基于该置信度水平,处理单元110可以将控制委托给车辆200的驾驶员以便改进安全条件。通过执行步骤560、562和564,处理单元110可以识别出现在该组捕捉图像内的交通灯,并分析交叉口几何形状信息。基于该识别和分析,处理单元110可以引起车辆200中一个或多个导航响应,如以上结合图5A所描述的。
图5E是示出了根据所公开的实施例的用于基于车辆路径引起车辆中的一个或多个导航响应的示例过程500E的流程图。在步骤570,处理单元110可以构建与车辆200相关联的初始车辆路径。车辆路径可以使用以坐标(x,z)表达的一组点来表示,并且该组点中两个点之间的距离d
在步骤572,处理单元110可以更新在步骤570构建的车辆路径。处理单元110可以使用更高的分辨率来重建在步骤570构建的车辆路径,以使得表示车辆路径的该组点中两个点之间的距离d
在步骤574,处理单元110可以基于在步骤572构建的更新的车辆路径来确定前视点(look-ahead point)(以坐标表达为(x
在步骤576,处理单元110可以基于在步骤574中确定的前视点来确定航向误差和横摆角速率命令。处理单元110可以通过计算前视点的反正切,例如arctan(x
图5F是示出了根据所公开的实施例的用于确定前方车辆是否正在改变车道的示例过程500F的流程图。在步骤580,处理单元110可以确定与前方车辆(例如,在车辆200前方行驶的车辆)相关联的导航信息。例如,处理单元110可以使用以上结合图5A和图5B所描述的技术来确定前方车辆的位置、速度(例如,方向和速度)和/或加速度。处理单元110还可以使用以上结合图5E所描述的技术来确定一个或多个道路多项式、前视点(与车辆200相关联)和/或追踪轨迹(snail trail)(例如,描述前方车辆所采取的路径的一组点)。
在步骤582,处理单元110可以分析在步骤580中确定的导航信息。在一个实施例中,处理单元110可以计算追踪轨迹和道路多项式之间的距离(例如,沿着该轨迹)。如果沿着该轨迹的这个距离的变化(variance)超过预定的阈值(例如,在直路上0.1至0.2米,在适度弯曲道路上0.3至0.4米,以及在急转弯道路上0.5至0.6米),则处理单元110可以确定前方车辆很可能正在改变车道。在检测到多个车辆在车辆200前方行驶的情形中,处理单元110可以比较与每个车辆相关联的追踪轨迹。基于该比较,处理单元110可以确定追踪轨迹与其它车辆的追踪轨迹不匹配的车辆很可能正在改变车道。处理单元110可以额外地将(与前方车辆相关联的)追踪轨迹的曲率与前方车辆正在其中行驶的路段的期望曲率相比较。该期望曲率可以从地图数据(例如,来自地图数据库160的数据)、从道路多项式、从其它车辆的追踪轨迹、从关于道路现有知识等提取。如果追踪轨迹的曲率和路段的期望曲率的差异超过预定的阈值,则处理单元110可以确定前方车辆很可能正在改变车道。
在另一个实施例中,处理单元110可以在特定时间段(例如,0.5至1.5秒)将前方车辆的瞬时位置与(与车辆200相关联的)前视点相比较。如果前方车辆的瞬时位置与前视点之间的距离在该特定时间段期间变化,并且变化的累积总和超过预定阈值(例如,直路上0.3至0.4米,适度弯曲道路上0.7至0.8米,以及急转弯道路上1.3至1.7米),则处理单元110可以确定前方车辆很可能正在改变车道。在另一实施例中,处理单元110可以通过将沿着追踪轨迹行驶的横向距离与该追踪路径的期望曲率相比较,来分析该追踪轨迹的几何形状。期望曲率半径可以根据公式确定:(δ
在步骤584,处理单元110可以基于在步骤582进行的分析确定前方车辆200是否正在改变车道。例如,处理单元110可以基于在步骤582执行的各个分析的加权平均来做出该确定。在这种方案下,例如,由处理单元110基于特定类型的分析做出的前方车辆很可能正在改变车道的决定可以被分配值“1”(以及“0”用来表示前方车辆不太可能正在改变车道的确定)。在步骤582中执行的不同分析可以被分配不同的权重,并且所公开的实施例不限于分析和权重的任何特定组合。
图6是示出了根据所公开的实施例的用于基于立体图像分析引起一个或多个导航响应的示例过程600的流程图。在步骤610,处理单元110可以经由数据接口128接收第一和第二多个图像。例如,被包含在图像获取单元120的相机(诸如具有视场202和204的图像捕捉设备122和124)可以捕捉在车辆200前方的区域的第一和第二多个图像,并经过数字连接(例如,USB、无线、蓝牙等)将它们传输到处理单元110。在一些实施例中,处理单元110可以经由两个或多个数据接口接收该第一和第二多个图像。所公开的实施例不限于任何特定的数据接口配置或协议。
在步骤620,处理单元110可以执行立体图像分析模块404来执行对第一和第二多个图像的立体图像分析,以创建在车辆前方的道路的3D地图并检测图像内的特征,诸如车道标记、车辆、行人、道路标志、高速公路出口坡道、交通灯、道路危险等。立体图像分析可以以类似于以上结合图5A-图5D描述的步骤的方式来执行。例如,处理单元110可以执行立体图像分析模块404以在第一和第二多个图像内检测候选对象(例如,车辆、行人、道路标志、交通灯、道路危险等),基于各种标准过滤掉候选对象的子集,并对剩余的候选对象执行多帧分析、构建测量、并确定置信度水平。在执行上述步骤中,处理单元110可以考虑来自第一和第二多个图像二者的信息,而不是来自单独一组图像的信息。例如,处理单元110可以分析出现在第一和第二多个图像二者中的候选对象的像素级数据(或来自捕捉图像的两个流中的其它数据子集)的差异。作为另一示例,处理单元110可以通过观察候选对象在多个图像的一个中出现而未在另一个中出现,或相对于可能相对于出现在两个图像流中的对象而存在的其它差异,来估计候选对象(例如,相对于车辆200)的位置和/或速度。例如,可以基于与出现在图像流的一个或两者中的对象相关联的轨迹、位置、移动特性等特征,来确定相对于车辆200的位置、速度和/或加速度。
在步骤630中,处理单元110可以执行导航响应模块408,以基于在步骤620中执行的分析和如以上结合图4所描述的技术而引起车辆200中的一个或多个导航响应。导航响应可以包括例如操纵、车道变换、加速度的改变、速度的改变、制动等。在一些实施例中,处理单元110可以使用从速度和加速度模块406的执行得到的数据来引起该一个或多个导航响应。此外,多个导航响应可以同时地、按照顺序地、或以其任意组合而发生。
图7是示出了根据所公开的实施例的用于基于三组图像的分析来引起一个或多个导航响应的示例过程700的流程图。在步骤710中,处理单元110可以经由数据接口128接收第一、第二和第三多个图像。例如,被包含在图像获取单元120的相机(诸如具有视场202、204和206的图像捕捉设备122、124和126)可以捕捉在车辆200前方和/或侧方的区域的第一、第二和第三多个图像,并且经过数字连接(例如,USB、无线、蓝牙等)将它们传输到处理单元110。在一些实施例中,处理单元110可以经由三个或更多数据接口接收第一、第二和第三多个图像。例如,图像捕捉设备122、124、126的每个可以具有用于向处理单元110传送数据的相关联的数据接口。所公开的实施例不限于任何特定的数据接口配置或协议。
在步骤720,处理单元110可以分析该第一、第二和第三多个图像以检测图像内的特征,诸如车道标记、车辆、行人、道路标志、高速公路出口坡道、交通灯、道路危险等。该分析可以以类似于以上结合图5A-图5D和图6所描述的步骤的方式来执行。例如,处理单元110可以对第一、第二和第三多个图像的每个执行单目图像分析(例如,经由单目图像分析模块402的执行以及基于以上结合图5A-图5D所描述的步骤)。可替代地,处理单元110可对第一和第二多个图像、第二和第三多个图像、和/或第一和第三多个图像执行立体图像分析(例如,经由立体图像分析模块404的执行以及基于以上结合图6所描述的步骤)。对应于第一、第二和/或第三多个图像的分析的处理后的信息可以进行组合。在一些实施例中,处理单元110可以执行单目和立体图像分析的组合。例如,处理单元110可以对第一多个图像执行单目图像分析(例如,经由单目图像分析模块402的执行)并且对第二和第三多个图像执行立体图像分析(例如,经由立体图像分析模块404的执行)。图像捕捉设备122、124和126—包括它们各自的位置和视场202、204和206—的配置可以影响对第一、第二和第三多个图像进行的分析的类型。所公开的实施例不限于图像捕捉设备122、124和126的特定配置或对第一、第二和第三多个图像进行的分析的类型。
在一些实施例中,处理单元110可以基于在步骤710和720所获取和分析的图像对系统100执行测试。这种测试可以提供对于图像获取设备122、124和126的某些配置的系统100的整体性能的指示符。例如,处理单元110可以确定“伪命中”(例如,系统100不正确地确定车辆或行人的存在的情况)和“漏掉”的比例。
在步骤730,处理单元110可以基于从第一、第二和第三多个图像中的两个得到的信息引起车辆200中的一个或多个导航响应。对第一、第二和第三多个图像中的两个的选择可以取决于各种因素,诸如例如在多个图像的每个中检测到的对象的数量、类型和大小。处理单元110还可以基于图像质量和分辨率、图像中反映的有效视场、捕捉的帧的数量、实际出现在帧中的一个或多个感兴趣的对象的程度(例如,其中出现有对象的帧的百分比、出现在每个这种帧中的对象的比例)等进行选择。
在一些实施例中,处理单元110可以通过确定从一个图像源得到的信息与从其它图像源得到的信息的相一致的程度,选择从第一、第二和第三多个图像中的两个得到的信息。例如,处理单元110可以将从图像捕捉设备122、124和126的每个得到的处理后的信息组合(无论通过单目分析、立体分析、还是两者的任意组合),并确定在从图像捕捉设备122、124和126的每个捕捉到的图像之间相一致的视觉指示符(例如,车道标记、检测到的车辆及其位置和/或路径、检测到的交通灯等)。处理单元110还可以排除在捕捉到的图像之间不一致的信息(例如,正改变车道的车辆、指示车辆太靠近车辆200的车道模型等)。因此,处理单元110可以基于相一致和不一致的信息的确定,来选择从第一、第二和第三多个图像的两个得到的信息。
导航响应可以包括例如操纵、车道变换、制动、加速度的改变等。处理单元110可以基于在步骤720所执行的分析和如以上结合图4所描述的技术引起一个或多个导航响应。处理单元110还可以使用从速度和加速度模块406的执行得到的数据引起一个或多个导航响应。在一些实施例中,处理单元110可以基于在车辆200与在第一、第二和第三多个图像的任一者内检测到的对象之间的相对位置、相对速度和/或相对加速度来引起一个或多个导航响应。多个导航响应可以同时地、按顺序地或以其任意组合而发生。
对捕捉图像的分析可允许用于自主车辆导航的稀疏地图模型的生成和使用。另外,对捕捉图像的分析可以允许使用所识别的车道标记来定位自主车辆。下面将参考图8至图28讨论基于一个或多个对捕捉图像的特定分析检测特定特征的实施例以及使用稀疏地图模型导航自主车辆的实施例。
在一些实施例中,所公开的系统和方法可以使用稀疏地图进行自主车辆导航。特别地,稀疏地图可以用于沿着路段的自主车辆导航。例如,稀疏地图可以提供足够的信息用于导航自主车辆,而无需存储和/或更新大量数据。如下文进一步详细讨论的,自主车辆可以使用稀疏地图基于一个或多个存储的轨迹来导航一个或多个道路。
在一些实施例中,所公开的系统和方法可以生成用于自主车辆导航的稀疏地图。例如,稀疏地图可以提供足够的信息用于导航,而不需要过多的数据存储或数据传输速率。如下文进一步详细讨论的,车辆(可以是自主车辆)可以使用稀疏地图来导航一个或多个道路。例如,在一些实施例中,稀疏地图可以包括与道路相关的数据以及沿着道路的潜在地标,所述数据和地标可以足够用于车辆导航,而且表现出较小的数据覆盖区(footprint)。例如,与包括详细地图信息(诸如沿道路收集的图像数据)的数字地图相比,下文详述的稀疏数据地图可能需要显著更少的存储空间和数据传输带宽。
例如,稀疏数据地图可以存储沿着道路的优选车辆路径的三维多项式表示,而不是存储路段的详细表示。这些路径可能需要非常少的数据存储空间。此外,在所描述的稀疏数据图中,地标可以被识别并包括在稀疏地图道路模型中以帮助导航。这些地标可以以适合于实现车辆导航的任何间距定位,但是在一些情况下,这样的地标不需要被识别并且以高密度和短间距包括在模型中。相反,在一些情况下,可以基于间隔至少50米、至少100米、至少500米、至少1千米或至少2千米的地标进行导航。如将在其他部分中更详细地讨论的,在车辆沿着车行道行驶时,可以基于由配备有各种传感器和设备(诸如图像捕捉设备、全球定位系统传感器、运动传感器等)的车辆收集或测量的数据来生成稀疏地图。在一些情况下,可以基于沿着特定车行道的一个或多个车辆的多个行程(drive)期间收集的数据来生成稀疏地图。使用一个或多个车辆的多个行程生成稀疏地图可以称为稀疏地图的“众包(crowdsourcing)”。
与所公开的实施例一致,自主车辆系统可以使用稀疏地图进行导航。例如,所公开的系统和方法可以分发用于生成自主车辆的道路导航模型的稀疏地图,并且可以使用稀疏地图和/或生成的道路导航模型沿着路段导航自主车辆。符合本公开的稀疏地图可以包括一个或多个三维轮廓(contour),其可以表示自主车辆在其沿着相关联的路段移动时可以穿行的预定轨迹。
符合本公开的稀疏地图还可以包括表示一个或多个道路特征的数据。这样的道路特征可以包括识别的地标、道路签名简档(profile)以及在导航车辆中有用的任何其他道路相关的特征。符合本公开的稀疏地图可以基于稀疏地图中包括的相对少量的数据实现车辆的自主导航。例如,所公开的稀疏地图的实施例可以需要相对较少的存储空间(以及当稀疏地图的部分被传输到车辆时相对较小的带宽),而不是包括道路的详细表示(诸如道路边缘、道路曲率、与路段相关联的图像,或详述与路段相关联的其他物理特征的数据),但是其仍然可以充分为自主车辆导航作准备。在一些实施例中,通过存储需要少量数据但仍能进行自主导航的道路相关的元素的表示,可以实现下文进一步详述的所公开的稀疏地图的小数据覆盖区。
例如,所公开的稀疏地图可以存储车辆可沿着道路跟随的一个或多个轨迹的多项式表示,而不是存储道路的各个方面的详细表示。因此,使用所公开的稀疏地图,而不是存储(或必须转移)关于道路的物理性质的细节以使得能够沿着道路导航,车辆可以通过将其行驶的路径与沿着特定路段的轨迹(例如,多项式样条(spline))对齐来沿着特定的路段导航,而在某些情况下不必解释道路的物理方面。以这种方式,可以主要基于存储的轨迹(例如,多项式样条)来导航车辆,所存储的轨迹可以需要比涉及存储车行道图像、道路参数、道路布局等的方法少得多的存储空间。
除了存储的沿着路段的轨迹的多项式表示之外,所公开的稀疏地图还可以包括可以表示道路特征的小数据对象。在一些实施例中,小数据对象可以包括数字签名,该数字签名是从沿着路段行驶的车辆上的传感器(例如,相机或其他传感器,诸如悬架传感器)获得的数字图像(或数字信号)中导出的。相对于传感器获取的信号,数字签名可以具有减小的尺寸。在一些实施例中,可以创建数字签名以与分类器功能兼容,该分类器功能被配置为从传感器获取的信号中检测和识别道路特征,例如,在后续行程期间。在一些实施例中,可以创建数字签名,使得数字签名具有尽可能小的覆盖区,同时保持基于由在后续时间沿着相同路段行驶的车辆上的相机捕捉的道路特征的图像(或传感器生成的数字信号,如果存储的签名不是基于图像和/或包括其他数据)而将道路特征与存储的签名相关或匹配的能力。
在一些实施例中,数据对象的大小可以进一步与道路特征的唯一性相关联。例如,对于可由车辆上的相机检测到的道路特征,以及其中车辆上的相机系统耦合到分类器,该分类器能够区分对应于与特定类型的道路特征相关联的道路特征的图像数据,例如,道路标志,并且在这种道路标志在该区域中是局部唯一的(例如,附近没有相同的道路标志或相同类型的道路标志)情况下,其可足以存储指示道路特征的类型及其位置的数据。
如下文将进一步详细讨论的,道路特征(例如,沿着路段的地标)可以存储为小数据对象,该小数据对象可以以相对较少的字节表示道路特征,同时提供足够的信息用于识别和使用用于导航的这种特征。在一个示例中,道路标志可以被识别为车辆的导航可基于的辨识的地标。道路标志的表示可以存储在稀疏地图中,以包括例如指示地标(例如,停止标志)类型的几个字节的数据和指示地标的位置(例如,坐标)的几个字节的数据。基于地标的这种数据光(data-light)表示(例如,使用足够用于基于地标来定位、识别和导航的表示)的导航可以提供与稀疏地图相关联的期望水平的导航功能,而不会显著增加与稀疏地图相关联的数据开销。地标(和其他道路特征)的这种精简表示可以利用包括在这种车辆上的传感器和处理器,所述传感器和处理器被配置为检测、识别和/或分类某些道路特征。
例如,当标志或甚至特定类型的标志在给定区域中是局部唯一的(例如,当没有其他标志或没有相同类型的其他标志时),稀疏地图可以使用指示地标的类型的数据(标志或特定类型的标志),并且在导航(例如,自主导航)期间,当自主车辆上的相机捕捉包括标志(或特定类型的标志)的区域的图像时,处理器可以处理该图像,检测该标志(如果确实存在于图像中),将图像分类为标志(或作为特定类型的标志),并将图像的位置与存储在稀疏地图中的标志的位置相关联。
在一些实施例中,稀疏地图可包括沿着路段延伸的路面特征的至少一个线表示和与路段相关联的多个地标。在某些方面,稀疏地图可以经由“众包”,例如,通过对一个或多个车辆穿行路段时而获取的多个图像的图像分析生成。
图8示出了稀疏地图800,一个或多个车辆(例如,车辆200(可以是自主车辆))可以访问该稀疏地图800以提供自主车辆导航。稀疏地图800可以存储在诸如存储器140或150的存储器中。这样的存储器设备可以包括任何类型的非暂时性存储设备或计算机可读介质。例如,在一些实施例中,存储器140或150可以包括硬盘驱动器、光盘、闪存、基于磁的存储器设备、基于光学的存储器设备等。在一些实施例中,稀疏地图800可以存储在数据库中(例如,地图数据库160),该数据库可以存储在存储器140或150,或其他类型的存储设备中。
在一些实施例中,稀疏地图800可以存储在车辆200上提供的存储设备或非暂时性计算机可读介质上(例如,包括在车辆200上的导航系统中的存储设备)。在车辆200上提供的处理器(例如,处理单元110)可以访问存储在车辆200上提供的存储设备或计算机可读介质中的稀疏地图800,以便在车辆穿行路段时生成用于引导自主车辆200的导航指示。
然而,不需要相对于车辆本地存储稀疏地图800,在一些实施例中,稀疏地图800可以存储在远程服务器上提供的存储设备或计算机可读介质上,该远程服务器与车辆200或与车辆200相关联的设备通信。在车辆200上提供的处理器(例如,处理单元110)可以从远程服务器接收包括在稀疏地图800中的数据,并且可以执行用于引导车辆200的自动驾驶的数据。在这样的实施例中,远程服务器可以存储所有稀疏地图800或仅存储其中一部分。因此,车辆200上的和/或一个或多个额外车辆上的存储设备或计算机可读介质可以存储稀疏地图800的(多个)剩余部分。
此外,在这样的实施例中,可以使稀疏地图800可被穿行各种路段的多个车辆(例如,数十、数百、数千或数百万辆车辆等)访问。还应注意,稀疏地图800可包括多个子地图。例如,在一些实施例中,稀疏地图800可以包括可以在导航车辆中使用的数百、数千、数百万或更多个子地图。这种子地图可以被称为局部地图,并且沿着车行道行驶的车辆可以访问与车辆正在行驶的位置相关的任何数量的局部地图。稀疏地图800的局部地图区段可以与作为稀疏地图800的数据库的索引的全球导航卫星系统(GNSS)密钥一起存储。因此,虽然用于在本系统中导航主车辆的转向角的计算可以在不依赖于主车辆的GNSS位置、道路特征或地标的情况下被执行,这种GNSS信息可以用于检索相关的局部地图。
在下文(例如,关于图19)更详细地描述数据的收集和稀疏地图800的生成。然而,通常,可以基于从一个或多个车辆在其沿着车行道行驶时收集的数据来生成稀疏地图800。例如,使用一个或多个车辆上的传感器(例如,相机、速度计、GPS、加速度计等),可以记录一个或多个车辆沿着车行道行驶的轨迹,并且可以基于所收集的一个或多个车辆行驶的轨迹来确定用于车辆沿着车行道进行后续行程的优选轨迹的多项式表示。类似地,由一个或多个车辆收集的数据可以帮助识别沿着特定车行道的潜在地标。从穿行车辆收集的数据还可以用于识别道路简档信息,诸如道路宽度简档、道路平整度简档、交通线间距简档、道路状况等。使用所收集的信息,可以生成和分发稀疏地图800(例如,用于本地存储或经由动态数据传输),以用于导航一个或多个自主车辆。然而,在一些实施例中,地图生成可能不会在初始生成地图时结束。如下文将更详细讨论的,可以基于在车辆继续穿行稀疏地图800中包括的车行道时从这些车辆收集的数据,连续地或周期性地更新稀疏地图800。
记录在稀疏地图800中的数据可以包括基于全球定位系统(GPS)数据的位置信息。例如,位置信息可以包括在稀疏地图800中,以用于各种地图元素,包括例如,地标位置、道路简档位置等。稀疏地图800中包括的地图元素的位置可以使用从穿行车行道的车辆中收集的GPS数据而获得。例如,通过识别的地标的车辆可以使用与车辆相关联的GPS位置信息和对所识别的地标相对于车辆的位置的确定(例如,基于对从车辆上的一个或多个摄像头中收集的数据的图像分析)来确定所识别的地标的位置。当额外车辆通过所识别的地标的位置时,可以重复对识别的地标(或稀疏地图800中包括的任何其他特征)的这种位置确定。可以使用额外位置确定的一些或全部来相对于所识别的地标细化存储在稀疏地图800中的位置信息。例如,在一些实施例中,可以将相对于存储在稀疏地图800中的特定特征的多个位置测量一起平均。然而,任何其他数学运算也可用于基于多个确定的地图元素的位置来细化存储的地图元素的位置。
所公开的实施例的稀疏地图可以使用相对少量的存储数据实现车辆的自主导航。在一些实施例中,稀疏地图800可具有每千米道路不到2MB(兆字节)、每千米道路不到1MB、每千米道路不到500kB(千字节)、或每千米道路不到100kB的数据密度(例如,包括表示目标轨迹、地标和任何其他存储的道路特征的数据)。在一些实施例中,稀疏地图800的数据密度可以是每千米道路不到10kB,或甚至是每千米道路不到2kB(例如,每千米1.6kB),或者每千米道路不超过10kB,或者每千米道路不超过20kB。在一些实施例中,可以使用具有总共4GB或更少数据的稀疏地图来自主地导航美国的大多数(如果不是全部)车行道。这些数据密度值可以表示整个稀疏地图800上的平均值、稀疏地图800内的局部地图上的平均值,和/或稀疏地图800内的特定路段上的平均值。
如所指出的,稀疏地图800可以包括用于引导沿着路段的自动驾驶或导航的多个目标轨迹810的表示。这样的目标轨迹可以存储为三维样条。可以基于沿着特定路段车辆先前穿行的两个或更多个重建轨迹来确定存储在稀疏地图800中的目标轨迹,例如,如关于图29所讨论的。路段可以与单个目标轨迹或多个目标轨迹相关联。例如,在双车道道路上,可以存储第一目标轨迹以表示沿着第一方向上的道路行驶的预期路径,并且可以存储第二目标轨迹以表示沿着另一个方向(例如,与第一方向相反)上的道路行驶的预期行驶路径。可以相对于特定路段存储额外的目标轨迹。例如,在多车道道路上,可以存储一个或多个目标轨迹,其表示与多车道道路相关联的一个或多个车道中的车辆的预期行驶路径。在一些实施例中,多车道道路的每个车道可以与其自己的目标轨迹相关联。在其他实施例中,存储的目标轨迹可以比存在于多车道道路上的车道少。在这种情况下,导航多车道道路的车辆可以使用任何存储的目标轨迹,以通过考虑从存储目标轨迹的车道的车道偏移量来引导其导航(例如,如果车辆是在三车道高速公路的最左侧车道行驶,并且仅针对高速公路的中间车道存储目标轨迹,车辆可以通过考虑当生成导航指令时的中间车道与最左侧的车道之间的车道偏移量来使用中间车道的目标轨迹进行导航)。
在一些实施例中,目标轨迹可以表示车辆行驶时车辆应该采取的理想路径。目标轨迹可以位于例如行驶车道的近似中心处。在其他情况下,目标轨迹可以位于相对于路段的其他位置。例如,目标轨迹可以近似地与道路的中心、道路的边缘或车道的边缘等一致。在这种情况下,基于目标轨迹的导航可以包括确定的、相对于目标轨迹的位置要保持的偏移量。此外,在一些实施例中,确定的、相对于目标轨迹的位置要保持的偏移量可以基于车辆的类型而不同(例如,包括两个车轴的乘用车可以具有与包括沿着目标轨迹的至少一部分的多于两个轴卡车不同的偏移)。
稀疏地图800还可以包括与与特定路段、局部地图等相关联的多个预定地标820相关的数据。如下文更详细地讨论的,这些地标可以用在自主车辆的导航中。例如,在一些实施例中,地标可用于确定车辆相对于存储的目标轨迹的当前位置。利用该位置信息,自主车辆能够调整前进方向以匹配在所确定的位置处的目标轨迹的方向。
可以以任何合适的间隔识别多个地标820并将其存储在稀疏地图800中。在一些实施例中,可以以相对高的密度(例如,每隔几米或更多)存储地标。然而,在一些实施例中,可以采用明显更大的地标间隔值。例如,在稀疏地图800中,识别的(或辨识的)地标可以由10米、20米、50米、100米、1千米或2千米间隔开。在某些情况下,所识别的地标可以位于相隔甚至超过2千米的距离处。
在地标之间,并且因此在对车辆位置相对于目标轨迹的确定之间,车辆可以基于航位推算进行导航,其中车辆使用传感器来确定其自我运动并估计其相对于目标轨迹的位置。因为在通过航位推算进行导航期间可能累积错误,故相对于目标轨迹的位置确定可能随时间变得越发不准确。车辆可以使用在稀疏地图800(及其已知定位)中发生的地标来消除位置确定中的航位推算引起的误差。以这种方式,包括在稀疏地图800中的所识别的地标可以用作导航锚,根据该导航锚可以确定车辆相对于目标轨迹的精确位置。因为在位置定位中一定量的误差是可以接受的,故识别的地标不一定总是对自主车辆是有效的。相反,即使基于如上所述的10米、20米、50米、100米、500米、1千米、2千米或更多的地标间距,合适的导航也是可能的。在一些实施例中,每1km(千米)道路1个已识别的地标的密度可足以将纵向位置确定精度保持在1m(米)内。因此,并非沿着路段出现的每个潜在地标都需要存储在稀疏地图800中。
此外,在一些实施例中,车道标记可用于在地标间隔期间进行车辆的定位。通过在地标间隔期间使用车道标记,可以最小化通过航位推算进行导航期间的累积。特别地,下文参考图35讨论这种定位。
除了目标轨迹和识别的地标之外,稀疏地图800可以包括与各种其他道路特征有关的信息。例如,图9A示出了可以存储在稀疏地图800中的沿着特定路段的曲线的表示。在一些实施例中,道路的单个车道可以通过道路的左侧和右侧的三维多项式描述来建模。表示单个车道的左侧和右侧的这种多项式在图9A中示出。无论道路可能具有多少车道,可以以类似于图9A中所示的方式使用多项式来表示该道路。例如,可以由类似于图9A中所示的多项式表示多车道道路的左侧和右侧,并且还可以使用诸如图9A中所示的多项式来表示包括在多车道道路上的中间车道标记(例如,表示车道边界的虚线标记、表示在不同方向上行驶的车道之间的边界等实线黄线)。
如图9A所示,可以使用多项式(例如,一阶、二阶、三阶或任何合适阶多项式)来表示车道900。为了说明,车道900示为二维的车道,而多项式示为二维多项式。如图9A所示,车道900包括左侧910和右侧920。在一些实施例中,可以使用多于一个多项式来表示道路或车道边界的各侧的位置。例如,左侧910和右侧920中的每个可以由任何合适长度的多个多项式表示。在一些情况下,多项式可以具有约100m的长度,但也可以使用大于或小于100m的其他长度。另外,多项式可以彼此重叠,以便在主车辆沿着车行道行驶时基于随后遇到的多项式来促进导航中的无缝过渡。例如,左侧910和右侧920中的每个可以由多个三阶多项式表示,这些多项式被分成长度约为100米的段(第一预定范围的示例),并且彼此重叠约50米。表示左侧910和右侧920的多项式可以具有或不具有相同的阶。例如,在一些实施例中,一些多项式可以是二阶多项式、一些可以是三阶多项式、并且一些可以是四阶多项式。
在图9A所示的示例中,车道900的左侧910由两组三阶多项式表示。第一组包括多项式段911、912和913。第二组包括多项式段914、915和916。这两个组虽然基本上彼此平行,但是遵循它们各自的道路侧的位置。多项式段911、912、913、914、915和916具有约100米的长度并且与该系列中的相邻段重叠约50米。然而,如前所述,还可以使用不同长度和不同重叠量的多项式。例如,多项式可以具有500米、1千米或更长的长度,而重叠量可以在0到50米、50米到100米,或者大于100米的范围内变化。另外,虽然图9A被示为表示在2D空间中延伸的多项式(例如,在纸的表面上),但是应当理解,这些多项式可以表示在三维中延伸的曲线(例如,包括高度分量)以表示除了XY曲率之外的路段中的高程变化。在图9A所示的示例中,车道900的右侧920进一步由具有多项式段921、922和923的第一组以及具有多项式段924、925和926的第二组表示。
返回到稀疏地图800的目标轨迹,图9B示出了表示沿着特定路段行驶的车辆的目标轨迹的三维多项式。目标轨迹不仅表示主车辆应沿特定路段行驶的X-Y路径,还表示主车辆沿路段行驶时将经历的高度变化。因此,稀疏地图800中的每个目标轨迹可以由一个或多个三维多项式表示,如图9B中所示的三维多项式950。稀疏地图800可以包括多个轨迹(例如,数百万或数十亿或更多个,以表示沿着遍布全世界的车行道的各种路段的车辆的轨迹)。在一些实施例中,每个目标轨迹可以对应于连接三维多项式段的样条。
关于存储在稀疏地图800中的多项式曲线的数据覆盖区,在一些实施例中,每个三次多项式可以由四个参数表示,每个参数需要四个字节的数据。可以用三次多项式获得合适的表示,每100米需要约192字节的数据。对于行驶近似100km/hr(千米每小时)的主车辆,这可以转化为近似每小时200kB的数据使用/传输要求。
稀疏地图800可以使用几何描述符和元数据的组合来描述车道网络。可以通过如上所述的多项式或样条来描述几何形状。元数据可以描述车道的数量、特殊特征(诸如汽车停泊车道)及可能的其他稀疏标签。这些指标的总覆盖区可以忽略不计。
因此,根据本公开的实施例的稀疏地图可以包括沿着路段延伸的路面特征的至少一个线表示,每个线表示表示沿着与路面特征基本对应的路段的路径。在一些实施例中,如上所述,路面特征的至少一个线表示可包括样条、多项式表示或曲线。此外,在一些实施例中,路面特征可包括道路边缘或车道标记中的至少一个。并且,如下文关于“众包”所讨论的,可以通过对一个或多个车辆穿行路段时而获取的多个图像的图像分析来识别路面特征。
如前所述,稀疏地图800可以包括与路段相关联的多个预定地标。并非存储地标的实际图像并且例如依赖于基于捕捉图像和存储图像的图像识别分析,可以使用比存储的实际图像所需的更少的数据来表示和识别稀疏地图800中的每个地标。表示地标的数据可能仍包括用于描述或识别沿着道路的地标的足够信息。存储描述地标特性的数据而不是存储地标的实际图像可以减小稀疏地图800的尺寸。
图10示出了可以在稀疏地图800中表示的地标类型的示例。地标可以包括沿着路段的任何可见和可识别的对象。可以选择地标使得它们是固定的并且相对于它们的位置和/或内容不会经常改变。当车辆穿行特定路段时,包括在稀疏地图800中的地标可用于确定车辆200相对于目标轨迹的位置。地标的示例可以包括交通标志、方向标志、一般标志(例如,矩形标志)、路边固定装置(例如,灯柱、反光镜等),以及任何其他合适的类别。在一些实施例中,道路上的车道标记还可以作为地标被包括在稀疏地图800中。
图10中所示的地标的示例包括交通标志、方向标志、路边固定装置和一般标志。交通标志可以包括例如,限速标志(例如,限速标志1000)、让路标志(例如,让路标志1005)、路线编号标志(例如,路线编号标志1010)、交通灯标志(例如,交通灯标志1015)、停止标志(例如,停止标志1020)。方向标志可以包括包含指示到不同地方的一个或多个方向的一个或多个箭头的标志。例如,方向标志可包括具有用于将车辆引导到不同道路或地点的箭头的高速公路标志1025、具有指示车辆离开道路的箭头的出口标志1030等。因此,多个地标中的至少一个可包括道路标志。
一般标志可能与交通无关。例如,一般标志可包括用于广告的广告牌,或邻近两个国家、州、县、城市或城镇之间的边界的欢迎牌。图10示出了一般标志1040(“Joe’sRestaurant(乔的餐厅)”)。虽然一般标志1040可以具有矩形形状,如图10所示,但是一般标志1040也可以具有其他形状,诸如正方形、圆形、三角形等。
地标也可能包括路边固定装置。路边固定装置可以是不是标志的对象,并且可以与交通或方向无关。例如,路边固定装置可包括灯柱(例如灯柱1035),电线柱、交通灯柱等。
地标还可以包括可专门设计用于自主车辆导航系统的信标。例如,这种信标可以包括以预定间隔放置的独立结构,以帮助导航主车辆。这种信标还可以包括添加到现有道路标志的视觉/图形信息(例如,图标、徽章、条形码等),所述信息可以由沿着路段行驶的车辆识别或辨识。这种信标还可以包括电子组件。在这样的实施例中,电子信标(例如,RFID标签等)可用于将非视觉信息传输到主车辆。这种信息可以包括,例如,主车辆可以在确定其沿着目标轨迹的位置时使用的地标标识和/或地标位置信息。
在一些实施例中,稀疏地图800中包括的地标可以由预定大小的数据对象表示。表示地标的数据可包括用于识别特定地标的任何合适的参数。例如,在一些实施例中,存储在稀疏地图800中的地标可以包括诸如以下的参数:地标的物理尺寸(例如,用以支持基于已知尺寸/比例估计到地标的距离)、到先前地标的距离、横向偏移、高度、类型代码(例如,地标类型——什么类型的方向标志、交通标志等)、GPS坐标(例如,用以支持全局定位),以及任何其他合适的参数。每个参数可以与数据大小相关联。例如,可以使用8个字节的数据来存储地标大小。可以使用12个字节的数据来指定到先前地标的距离、横向偏移和高度。与诸如方向标志或交通标志之类的地标相关联的类型代码可能需要约2个字节的数据。对于一般标志,可以使用50个字节的数据存储来存储能够识别一般标志的图像签名。地标GPS位置可以与16个字节的数据存储相关联。每个参数的这些数据大小仅为示例,也可以使用其他的数据大小。
以这种方式在稀疏地图800中表示地标可以提供用于有效地表示数据库中的地标的高效方案。在一些实施例中,标志可以被称为语义标志和非语义标志。语义标志可以包括具有标准化含义的任何类别的标志(例如,限速标志、警告标志、方向标志等)。非语义标志可以包括与标准化含义无关联的任何标志(例如,一般广告标志、识别商业机构的标志等)。例如,每个语义标志可以用38个字节的数据表示(例如,8个字节用于大小;12个字节用于到前一个地标的距离、横向偏移和高度;2个字节用于类型代码;16个字节用于GPS坐标)。稀疏地图800可以使用标签系统来表示地标类型。在一些情况下,每个交通标志或方向标志可以与其自己的标签相关联,所述标签可以作为地标标识的一部分存储在数据库中。例如,数据库可以包括约1000个不同的标签来表示各种交通标志,并且包括近似约10000个不同的标签来表示方向标志。当然,可以使用任何合适数量的标签,并且可以根据需要创建额外的标签。在一些实施例中,通用标志可以使用少于约100个字节来表示(例如,大约86个字节,包括8个字节用于大小;12个字节用于到先前地标的距离、横向偏移和高度;50个字节用于图像签名;以及16个字节用于GPS坐标)。
因此,对于不需要图像签名的语义道路标志,即使在每50米大约1个的相对高的地标密度下,对稀疏地图800的数据密度影响可近似约为每千米760字节(例如,每千米20个地标×每个地标38个字节=760个字节)。即使对于包括图像签名组件的通用标志,数据密度影响大约为1.72kB/km(例如,每千米20个地标×每个地标86个字节=1,720个字节)。对于语义道路标志,这相当于对于行驶100千米/小时的车辆每小时约76kB的数据使用。对于通用标志,这相当于对于行驶100千米/小时的车辆每小时约170kB。
在一些实施例中,一般矩形对象(诸如矩形标志)可以在稀疏地图800中由不超过100字节的数据表示。稀疏地图800中的一般矩形对象(例如,一般标志1040)的表示可以包括与一般矩形对象相关联的压缩图像签名(例如,压缩图像签名1045)。该压缩图像签名可以被用来,例如帮助识别通用标志,例如作为识别的地标。这样的压缩图像签名(例如,从表示对象的实际图像数据导出的图像信息)可以避免存储对象的实际图像的需要或者对实际图像执行比较图像分析以识别地标的需要。
参考图10,稀疏地图800可以包括或存储与通用标志1040相关联的压缩图像签名1045,而不是通用标志1040的实际图像。例如,在图像捕捉设备(例如,图像捕捉设备122、124或126)捕捉一般标志1040的图像后,处理器(例如,图像处理器190或可以处理在车上或相对于主车辆在远处处理图像的任何其他处理器)可以执行图像分析,以提取/创建压缩图像签名1045,该压缩图像签名1045包括与一般标志1040相关联的唯一签名或图案。在一个实施例中,压缩图像签名1045可包括形状、颜色图案、亮度图案或可从一般标志1040的图像中提取的任何其他特征,以用于描述一般标志1040。
例如,在图10中,压缩图像签名1045中示出的圆圈、三角形和星形可以表示不同颜色的区域。由圆圈、三角形和星形表示的图案可以存储在稀疏地图800中,例如,在指定为包括图像签名的50个字节内。值得注意的是,圆形、三角形和星形不一定旨在指示这些形状被存储为图像签名的一部分。相反,这些形状旨在概念上表示具有可辨别的色差、文本区域、图形形状或可与通用标志相关联的特性的其他变化的可识别区域。这种压缩图像签名可用来识别以一般标志的形式的地标。例如,基于所存储的压缩图像签名与所捕捉的图像数据(例如使用自主车辆上的相机)的比较,压缩图像签名可以被用来执行相同或不同的分析。
因此,可以通过对一个或多个车辆穿行路段时而获取的多个图像的图像分析来识别多个地标。如下文关于“众包”所解释的,在一些实施例中,用于识别多个地标的图像分析可以包括当其中确实出现地标的图像与其中未出现地标的图像的比率超过阈值时接受潜在地标。此外,在一些实施例中,用于识别多个地标的图像分析可以包括当其中未出现地标的图像与其中出现地标的图像的比率超过阈值时拒绝潜在地标。
返回到主车辆可用于导航特定路段的目标轨迹,图11A示出了在建立或维持稀疏地图800的过程期间捕捉的多项式表示轨迹。可以基于沿着相同路段车辆先前穿行的两个或更多个重建轨迹来确定包括在稀疏地图800中的目标轨迹的多项式表示。在一些实施例中,稀疏地图800中包括的目标轨迹的多项式表示可以是沿着相同路段车辆先前穿行的两个或更多个重建轨迹的集合。在一些实施例中,包括在稀疏地图800中的目标轨迹的多项式表示可以是沿着相同路段车辆先前穿行的两个或更多个重建轨迹的平均值。其他数学运算也可以用于基于从沿着路段穿行的车辆收集的重建轨迹来构建沿着道路路径的目标轨迹。
如图11A所示,路段1100可以在不同时间由多个车辆200行驶。每个车辆200可以收集与车辆沿着路段行驶的路径有关的数据。可以基于相机数据、加速计信息、速度传感器信息,和/或GPS信息,以及其他潜在来源来确定特定车辆行驶的路径。这样的数据可以用于重建沿着路段行驶的车辆的轨迹,并且基于这些重建轨迹,可以确定特定路段的目标轨迹(或多个目标轨迹)。当车辆沿着路段行驶时,这样的目标轨迹可以表示(例如,由自主导航系统引导的)主车辆的优选路径。
在图11A所示的示例中,可以基于从在第一时间段(例如,第1天)穿行路段1100的第一车辆接收的数据来确定第一重建轨迹1101,可以从在第二时间段(例如,第2天)穿行路段1100的第二车辆获得第二重建轨迹1102,以及可以从在第三时间段(例如,第3天)穿行路段1100的第三车辆获得第三重建轨迹1103。每个轨迹1101、1102和1103可以由多项式表示,诸如三维多项式。应当注意,在一些实施例中,任何重建轨迹可以装配在穿行路段1100的车辆上。
另外或替代地,可以基于从穿行路段1100的车辆接收的信息,在服务器侧确定这样的重建轨迹。例如,在一些实施例中,车辆200可以将数据传输到与其沿着路段1100的运动(例如,转向角、航向、时间、位置、速度、感测到的道路几何形状,和/或感测到的地标等)有关的一个或多个服务器。服务器可以基于所接收的数据重建车辆200的轨迹。服务器还可以基于第一、第二和第三轨迹1101、1102和1103生成用于引导自主车辆的导航的目标轨迹,该自主车辆将在稍后的时间沿着相同的路段1100行驶。而在一些实施例中,目标轨迹可以是与路段的单个先前穿行相关联,可以基于穿行相同路段的车辆的两个或更多个重建轨迹来确定包括在稀疏地图800中的每个目标轨迹。在图11A中,目标轨迹由1110表示。在一些实施例中,可以基于第一、第二和第三轨迹1101、1102和1103的平均值生成目标轨迹1110。在一些实施例中,包括在稀疏地图800中的目标轨迹1110可以是两个或更多个重建轨迹的聚合(例如,加权组合)。下文参考图29进一步讨论对齐行程数据以构造轨迹。
图11B和11C进一步示出了与地理区域1111内存在的路段相关联的目标轨迹的概念。如图11B所示,地理区域1111内的第一路段1120可包括多车道道路,其包括指定用于车辆沿第一方向行驶的两个车道1122,以及指定用于沿与第一方向相反的第二方向行驶的两个额外车道1124。车道1122和车道1124可以由双黄线1123分开。地理区域1111还可以包括与路段1120相交的分支路段1130。路段1130可以包括双车道道路,每个车道被指定用于不同的行驶方向。地理区域1111还可以包括其他道路特征,诸如停止线1132、停止标志1134、限速标志1136和危险标志1138。
如图11C所示,稀疏地图800可以包括局部地图1140,其包括用于辅助地理区域1111内的车辆的自主导航的道路模型。例如,局部地图1140可以包括地理区域1111内的与路段1120和/或1130相关联的一个或多个车道的目标轨迹。例如,局部地图1140可以包括自主车辆在穿行车道1122时可以访问或依赖的目标轨迹1141和/或1142。类似地,局部地图1140可以包括自主车辆在穿行车道1124时可以访问或依赖于的目标轨迹1143和/或1144。此外,局部地图1140可以包括自主车辆在穿越路段1130时可以访问或依赖的目标轨迹1145和/或1146。目标轨迹1147表示当从车道1120(并且具体地,涉及与车道1120的最右边车道相关联的目标轨迹1141)过渡到路段1130(并且具体地,涉及与路段1130的第一侧相关联的目标轨迹1145)时自主车辆应当遵循的优选路径。类似地,目标轨迹1148表示当从道路1130(并且具体地,涉及目标轨迹1146)过渡到路段1124的一部分(并且具体地,如图所示,涉及与车道1124的左车道相关联的目标轨迹1143)时自主车辆应当遵循的优选路径。
稀疏地图800还可以包括与地理区域1111相关联的其他道路相关的特征的表示。例如,稀疏地图800还可以包括在地理区域1111中识别的一个或多个地标的表示。这样的地标可以包括与停止线1132相关联的第一地标1150、与停止标志1134相关联的第二地标1152、与限速标志1154相关联的第三地标,以及与危险标志1138相关联的第四地标1156。这样的地标可以用于例如辅助自主车辆确定其相对于任何所示目标轨迹的当前位置,使得车辆可以调整其航向以匹配在所确定的定位处的目标轨迹的方向。下文参考图26进一步讨论使用来自稀疏地图的地标进行导航。
在一些实施例中,稀疏地图800还可以包括道路签名简档。这种道路签名简档可以与至少一个与道路相关联的参数中的任何可辨别/可测量的变化相关联。例如,在某些情况下,这种简档可能与路面信息的变化相关联,诸如特定路段的表面平整度的变化、特定路段上的道路宽度的变化、沿着特定路段绘制的虚线间的距离的变化、沿着特定路段的道路曲率的变化等。图11D示出了道路签名简档1160的示例。虽然简档1160可以表示上述任何参数或其他参数,在一个示例中,简档1160可以表示路面平整度的测量,所述路面平整度的测量,例如通过监测一个或多个提供指示车辆行驶特定路段时的悬架位移量的输出的传感器而获得。
替代地或同时地,简档1160可以表示道路宽度的变化,如基于经由在特定路段上行驶的车辆上的相机获得的图像数据而确定的。例如,在确定自主车辆相对于特定目标轨迹的特定位置时,这种简档可能是有用的。也就是说,当其穿行路段时,自主车辆可以测量与关联于路段的一个或多个参数相关联的简档。如果测量的简档可以与预定的简档相关/匹配,该简档绘制相对于沿着路段的位置的参数变化,则可以使用测量的和预定的简档(例如,通过覆盖测量的和预定的简档的相应部分),以便确定沿着路段的当前位置,并因此确定相对于路段的目标轨迹的当前位置。
在一些实施例中,稀疏地图800可以包括基于与自主车辆的用户、环境条件和/或与驾驶相关的其他参数相关联的不同特性的不同轨迹。例如,在一些实施例中,可以基于不同的用户偏好和/或简档来生成不同的轨迹。包括这样的不同轨迹的稀疏地图800可以被提供给不同用户的不同自主车辆。例如,一些用户可能更愿意避开收费公路,而其他用户可能更愿意采用最短或最快的路线,而无论路线上是否有收费公路。所公开的系统可以基于这种不同的用户偏好或简档生成具有不同轨迹的不同稀疏地图。作为另一个示例,一些用户可能更愿意在快速移动的车道中行驶,而其他用户可能更愿意始终在中央车道中保持位置。
基于不同的环境条件,诸如白天和黑夜、雪、雨、雾等,不同的轨迹可以被生成并被包括在稀疏地图800中。在不同的环境条件下驾驶的自主车辆可配备有基于这种不同环境条件生成的稀疏地图800。在一些实施例中,在自主车辆上提供的相机可以检测环境条件,并且可以将这样的信息提供回生成并提供稀疏地图的服务器。例如,服务器可以生成或更新已经生成的稀疏地图800,以包括在检测到的环境条件下对于自动驾驶可能更合适或更安全的轨迹。在自主车辆沿着道路行驶时,可以动态地执行基于环境条件对稀疏地图800的更新。
与驾驶有关的其他不同参数也可以用作生成并向不同自主车辆提供不同稀疏地图的基础。例如,当自主车辆高速行驶时,转弯可能更紧急。与特定车道(而不是道路)相关联的轨迹可以包括在稀疏地图800中,使得当车辆遵循特定轨迹时,自主车辆可以保持在特定车道内。当由自主车辆上的相机捕捉的图像指示车辆已经漂移到车道外(例如,越过车道标记)时,可以在车辆内触发动作以根据特定轨迹将车辆带回指定的车道。
在一些实施例中,所公开的系统和方法可以生成用于自主车辆导航的稀疏。例如,所公开的系统和方法可以使用众包数据以用于生成一个或多个自主车辆可以用来沿着道路系统导航的稀疏数据。如本文所使用的,“众包”意味着从不同时间在路段上行驶的各种车辆(例如,自主车辆)接收数据,并且这些数据用于生成和/或更新道路模型。该模型又可以被传输到稍后沿着路段行驶的车辆或其他车辆,以用于辅助自主车辆导航。道路模型可以包括多个目标轨迹,所述目标轨迹表示自主车辆在穿行路段时应该遵循的优选轨迹。目标轨迹可以与从穿行路段的车辆收集的重建的实际轨迹相同,其可以从车辆被传输到服务器。在一些实施例中,目标轨迹可以与一个或多个车辆在穿行路段时先前所采用的实际轨迹不同。可以基于实际轨迹(例如,通过平均或任何其他合适的操作)生成目标轨迹。下文参考图29讨论用于生成目标轨迹的众包数据的对齐的示例。
车辆可以上传到服务器的车辆轨迹数据可以与车辆的实际重建轨迹对应,或者可以对应于推荐轨迹,所述推荐轨迹可以基于或与车辆的实际重建轨迹相关,但是可以不同于实际重建轨迹。例如,车辆可以修改它们的实际的重建轨迹并向服务器提交(例如,推荐)修改的实际轨迹。道路模型可以使用推荐的、修改的轨迹作为用于其他车辆的自主导航的目标轨迹。
除了轨迹信息之外,有可能用在构建稀疏数据地图800的其他信息可以包括与潜在地标候选有关的信息。例如,通过信息的众包,所公开的系统和方法可以识别环境中的潜在地标并且细化地标位置。地标可以由自主车辆的导航系统使用,以沿着目标轨迹确定和/或调整车辆的位置。
当车辆沿着道路行驶时车辆可以生成的重建轨迹可以通过任何合适的方法获得。在一些实施例中,可以通过使用例如自我运动估计(例如,相机的并且因此车辆的车身的三维平移和三维旋转)将车辆的运动段拼接在一起来建立重建轨迹。可以基于对一个或多个图像捕捉设备捕捉的图像以及来自其他传感器或设备(诸如惯性传感器和速度传感器)的信息的分析来确定旋转和平移估计。例如,惯性传感器可包括加速计或其他合适的传感器,其配置成测量车身的平移和/或旋转的变化。车辆可包括测量车辆速度的速度传感器。
在一些实施例中,可以基于对捕捉图像的光流分析来估计相机(以及因此车身)的自我运动。图像序列的光流分析识别来自图像序列的像素的移动,并且基于所识别的移动,确定车辆的运动。自我运动可以随时间和沿着路段而被集成,以重建与车辆已经遵循的路段相关联的轨迹。
在不同时间沿着路段的多个行程中由多个车辆收集的数据(例如,重建轨迹)可以用于包括在构建稀疏数据地图800中的道路模型(例如,包括目标轨迹等)。在不同时间沿着路段的多个行程中由多个车辆手机的数据还可以被平均以增加模型的准确度。在一些实施例中,可以从在不同时间行驶通过公共路段的多个车辆接收关于道路几何形状和/或地标的数据。可以组合从不同车辆接收的这种数据,以生成道路模型和/或更新道路模型。
沿着路段的重建轨迹(以及目标轨迹)的几何形状可以由三维空间中的曲线表示,该曲线可以是连接三维多项式的样条。可以根据对安装在车辆上的相机捕捉的视频流或多个图像的分析来确定重建轨迹曲线。在一些实施例中,在每个帧或图像中识别位置,该位置在车辆的当前位置前方几米处。该位置是车辆预期在预定时间段内行驶到的位置。可以逐帧重复该操作,并且同时,车辆可以计算相机的自我运动(旋转和平移)。在每个帧或图像处,车辆在依附于相机的参考系中生成用于期望路径的短程模型。可以将短程模型拼接在一起,以在某个坐标系中获得道路的三维模型,该坐标系可以是任意或预定的坐标系。然后可以通过样条来拟合道路的三维模型,该样条可以包括或连接一个或多个合适阶数的多项式。
为了在每个帧处得出短程道路模型,可以使用一个或多个检测模块。例如,可以使用自下而上车道检测模块。当车道标记绘制在道路上时,自下而上车道检测模块可能是有用的。该模块可以寻找在图像中的边缘,并将它们组装在一起以形成车道标记。第二模块可以与自下而上车道检测模块一起使用。第二模块是端到端深度神经网络,其可以被训练为根据输入图像预测正确的短程路径。在两个模块中,道路模型可以在图像坐标系中被检测并被变换为可以虚拟地依附于相机的三维空间。
尽管重建轨迹建模方法可能引入由于长时间下的自我运动的集成而导致的误差累积,这可能包括噪声分量,但是这样的误差可能是无关紧要的,因为所生成的模型可以提供足够的精确度用于在局部尺度下的导航。此外,可以通过使用外部信息源(例如卫星图像或大地测量)来消除综合误差。例如,所公开的系统和方法可以使用GNSS接收器来消除累积的误差。然而,GNSS定位信号可能并不总是可用且准确的。所公开的系统和方法可以弱地取决于GNSS定位的可用性和准确性来启用操纵应用。在这种系统中,GNSS信号的使用可能是有限的。例如,在一些实施例中,所公开的系统可以仅将GNSS信号用于数据库索引目的。
在一些实施例中,可以与自主车辆导航操纵应用相关的范围尺度(例如,局部尺度)可以是约50米、100米、200米、300米等。可以使用这样的距离,因为几何道路模型主要用于两个目的:计划前方轨迹和在道路模型上定位车辆。在一些实施例中,当控制算法根据位于前方1.3秒(或任何其他时间,如1.5秒、1.7秒、2秒等)的目标操纵车辆时,计划任务可以在前方40米(或前方任何其他合适距离,例如20米、30米、50米)的典型范围内使用模型。根据称为“尾部对齐”的方法(在另一部分中更详细描述),定位化任务在汽车后方60米的典型范围内(或任何其他合适的距离,例如50米、100米、150米等)使用道路模型。所公开的系统和方法可以生成在特定范围(例如100米)内具有足够精度的几何模型,使得计划的轨迹不会偏离超过例如距离车道中心30cm的距离。
如上所述,可以根据检测短程段并将它们缝合在一起来构造三维道路模型。拼接可以通过使用由相机捕捉的视频和/或图像、来自惯性传感器的反映车辆运动的数据,以及主车辆速度信号计算六度自我运动模型来实现。累积误差可能在某些局部范围尺度(诸如约100米)上足够小。所有这些都可以在特定路段的单个行程中完成。
在一些实施例中,可以使用多个行程来平均所得到的模型,并进一步提高其精度。相同汽车可以多次行驶相同路线,或者多辆汽车可以将他们收集的模型数据发送到中央服务器。在任何情况下,可以执行匹配过程来识别重叠模型并且能够进行平均,以便生成目标轨迹。一旦满足收敛标准,构造的模型(例如,包括目标轨迹)可以用于操纵。后续行程可用于进一步的模型改进并以便于适应基础设施变化。
如果多个汽车连接到中央服务器,则在所述多个汽车之间共享驾驶体验(例如感测数据)变得可行。每个车辆客户端可以存储通用道路模型的部分副本,该道路模型可以与其当前位置相关。车辆和服务器之间的双向更新过程可以由车辆和服务器执行。上述小覆盖区概念使得所公开的系统和方法能够使用非常小的带宽来执行双向更新。
还可以确定与潜在地标有关的信息并将其转发到中央服务器。例如,所公开的系统和方法可以基于包括地标的一个或多个图像来确定潜在地标的一个或多个物理属性。物理属性可以包括地标的物理尺寸(例如,高度、宽度)、从车辆到地标的距离、地标到先前地标之间的距离、地标的横向位置(例如,地标相对于行驶车道的位置)、地标的GPS坐标、地标的类型,地标上文本的识别等。例如,车辆可以分析由相机捕捉的一个或多个图像以检测潜在地标(诸如限速标志)。
车辆可以基于对一个或多个图像的分析来确定从车辆到地标的距离。在一些实施例中,可以基于使用合适的图像分析方法(诸如缩放方法和/或光流方法)对地标的图像的分析来确定距离。在一些实施例中,所公开的系统和方法可以被配置为确定潜在地标的类型或分类。在车辆确定某个潜在地标对应于存储在稀疏地图中的预定类型或分类的情况下,车辆向服务器传达地标的类型或分类的指示及其位置可能就足够了。服务器可以存储这样的指示。稍后,其他车辆可以捕捉地标的图像、处理图像(例如,使用分类器),以及将处理图像的结果与存储在服务器中的关于地标类型的指示进行比较。可以存在各种类型的地标,并且不同类型的地标可以与要上载并且存储到服务器的不同类型的数据相关联,车辆上的不同处理可以检测地标并将关于地标的信息传送到服务器,并且车辆上的系统可以从服务器接收地标数据并使用地标数据以用于识别自主导航中的地标。
在一些实施例中,在路段上行驶的多个自主车辆可以与服务器通信。车辆(或客户端)可以在任意坐标系中生成描述其行程(例如,通过自我运动集成)的曲线。车辆可以检测地标并将它们定位在同一帧中。车辆可以将曲线和地标上载到服务器。服务器可以从多个行程中的车辆收集数据,并生成统一的道路模型。例如,如下文参考图19所讨论的,服务器可以使用上载的曲线和地标生成具有统一道路模型的稀疏地图。
服务器还可以将模型分发给客户端(例如,车辆)。例如,如下文参考图24所讨论的,服务器可以将稀疏地图分发给一个或多个车辆。当从车辆接收新数据时,服务器可以连续地或周期性地更新模型。例如,服务器可以处理新数据,以评估数据是否包括在服务器上应触发更新或创建新数据的信息。服务器可以将更新的模型或更新分发给车辆,以用于提供自主车辆导航。
服务器可以使用一个或多个标准来确定从车辆接收的新数据是否应触发对模型的更新或触发新数据的创建。例如,当新数据指示在特定位置处先前识别的地标不再存在或被另一地标替换时,服务器可确定新数据应触发对模型的更新。作为另一示例,当新数据指示路段已被关闭时,以及当已经通过从其他车辆接收的数据证实了这一点时,服务器可以确定新数据应触发对模型的更新。
服务器可以将更新的模型(或模型的更新部分)分发到在路段上行驶的一个或多个车辆,所述路段与对模型的更新相关联。服务器还可以将更新的模型分发给即将在该路段上行驶的车辆,或者其计划行程包括该路段的车辆,模型的更新与该路段相关联。例如,当自主车辆在到达与更新相关联的路段之前沿着另一个路段行驶时,服务器可以在车辆到达该路段之前将更新或更新的模型分发给自主车辆。
在一些实施例中,远程服务器可以从多个客户端(例如,沿着公共路段行驶的车辆)收集轨迹和地标。服务器可以使用地标匹配曲线,并基于从多个车辆收集的轨迹创建平均道路模型。服务器还可以计算道路图和路段的每个节点或结合处的最可能路径。例如,如下文关于图29所讨论的,远程服务器可以对齐轨迹以从收集的轨迹生成众包稀疏地图。
服务器可以平均从沿着公共路段行驶的多个车辆接收的地标属性,诸如由多个车辆测量的一个地标到另一个地标间的距离(例如,沿着路段的前一个),以确定弧长参数并且支持沿着路径的定位和每个客户端车辆的速度校准。服务器可以平均由沿着公共路段行驶的多个车辆测量的并且识别的相同地标的地标的物理尺寸。平均物理尺寸可用于支持距离估计,诸如从车辆到地标的距离。服务器可以对由沿着公共路段行驶的多个车辆测量的并且识别的相同地标的地标的横向位置(例如,从车辆行驶到该地标的车道的位置)进行平均。平均横向位置可用于支持车道分配。服务器可以平均由沿着相同路段行驶的多个车辆测量的并且识别的相同地标的地标的GPS坐标。地标的平均GPS坐标可用于支持道路模型中的地标的全球定位或定位。
在一些实施例中,服务器可以基于从车辆接收的数据识别模型变化,诸如构造、绕路、新标志,标记的移除等。服务器可以在从车辆接收新数据时连续地或周期性地或即时地更新模型。服务器可以将对模型的更新或更新的模型分发给车辆,以用于提供自主导航。例如,如下文进一步讨论的,服务器可以使用众包数据来过滤掉由车辆检测到的“重影(ghost)”地标。
在一些实施例中,服务器可以在自动驾驶期间分析驾驶员干预。服务器可以分析在干预发生的时间和位置处从车辆接收的数据,和/或在干预发生之前接收的数据。服务器可以识别引起或与干预密切相关的数据的某些部分,例如,指示临时车道关闭设置的数据、指示道路中的行人的数据。服务器可以基于所识别的数据来更新模型。例如,服务器可以修改存储在模型中的一个或多个轨迹。
图12是使用众包来生成稀疏地图(以及使用众包稀疏地图来分发和导航)的系统的示意图。图12示出了包括一个或多个车道的路段1200。多个车辆1205、1210、1215、1220和1225可以同时或在不同时间在路段1200上行驶(尽管在图12中示为同时出现在路段1200上)。车辆1205、1210、1215、1220和1225中的至少一个可以是自主车辆。为了简化本示例,假设所有车辆1205、1210、1215、1220和1225都是自主车辆。
每个车辆可以类似于在其他实施例中公开的车辆(例如,车辆200),并且可以包括在其他实施例中公开的车辆中包括的或与其相关联的部件或设备。每个车辆可以配备有图像捕捉设备或相机(例如,图像捕捉设备122或相机122)。每个车辆可以通过无线通信路径1235经由一个或多个网络(例如,通过蜂窝网络和/或因特网等)与远程服务器1230通信,如虚线所示。每个车辆可以将数据传输到服务器1230并从服务器1230接收数据。例如,服务器1230可以在不同时间从在路段1200上行驶的多个车辆收集数据,并且可以处理所收集的数据以生成自主车辆道路导航模型,或对模型的更新。服务器1230可以将自主车辆道路导航模型或对模型的更新传输到向服务器1230发送数据的车辆。服务器1230可以将自主车辆道路导航模型或对模型的更新传输到之后时间在路段1200上行驶的其他车辆。
当车辆1205、1210、1215、1220和1225在路段1200上行驶时,车辆1205、1210、1215、1220和1225收集(例如,检测,感测或测量)的导航信息可以被传输到服务器1230。在一些实施例中,导航信息可以与公共路段1200相关联。导航信息可以包括当每个车辆1205、1210、1215、1220和1225在路段1200上行驶时与这些车辆中的每个相关联的轨迹。在一些实施例中,可以基于由车辆1205上提供的各种传感器和设备感测的数据来重建轨迹。例如,可以基于加速度计数据、速度数据、地标数据、道路几何形状或简档数据、车辆定位数据,以及自我运动数据中的至少一个来重建轨迹。在一些实施例中,可以基于来自惯性传感器(诸如加速度计)的数据,以及由速度传感器感测的车辆1205的速度来重建轨迹。另外,在一些实施例中,可以基于感测到的相机的自我运动来确定轨迹(例如,通过车辆1205、1210、1215、1220和1225中的每个上的处理器),该自我运动可以指示三维平移和/或三维旋转(或旋转运动)。可以通过分析由相机捕捉的一个或多个图像来确定相机(以及因此车身)的自我运动。
在一些实施例中,车辆1205的轨迹可以由在车辆1205上提供的处理器确定并被传输到服务器1230。在其他实施例中,服务器1230可以接收由车辆1205中提供的各种传感器和设备感测的数据,并基于从车辆1205接收的数据来确定轨迹。
在一些实施例中,从车辆1205、1210、1215、1220和1225传输到服务器1230的导航信息可包括关于路面、道路几何形状或道路简档的数据。路段1200的几何形状可包括车道结构和/或地标。车道结构可以包括路段1200的车道总数、车道类型(例如,单向车道、双向车道、行驶车道、超车车道等)、车道上的标记、车道宽度等。在一些实施例中,导航信息可以包括车道分配,例如,车辆行驶在多个车道中的哪个车道。例如,车道分配可以与指示车辆行驶在从左或右起第三条车道上的数值“3”相关联。作为另一示例,车道分配可以与指示车辆正在中心车道上行驶的文本值“中心车道”相关联。
服务器1230可以将导航信息存储在非暂时性计算机可读介质上,诸如硬盘驱动、光盘、磁带、存储器等。服务器1230可以基于从多个车辆1205、1210、1215、1220和1225接收的导航信息,来生成(例如,通过包括在服务器1230中的处理器)用于公共路段1200的自主车辆道路导航模型的至少一部分,并且可以将该模型存储为稀疏地图的一部分。服务器1230可以基于从不同时间在路段的车道上行驶的多个车辆(例如,1205、1210、1215、1220和1225)接收的众包数据(例如,导航信息)来确定与每个车道相关联的轨迹。服务器1230可以基于根据众包源导航数据确定的多个轨迹来生成自主车辆道路导航模型或模型的一部分(例如,更新部分)。如下文关于图24更详细地解释的,服务器1230可以将模型或模型的更新部分传输到在路段1200上行驶的自主车辆1205、1210、1215、1220和1225中的一个,或传输到多个或者之后时间在路段上行驶的自主车辆,以用于更新在车辆的导航系统中提供的现有自主车辆道路导航模型。如下文参考图26更详细地解释的,自主车辆道路导航模型可以由自主车辆用于沿着公共路段1200的自主导航。
如上所述,自主车辆道路导航模型可以包括在稀疏地图中(例如,图8中绘制的稀疏地图800)。稀疏地图800可以包括与道路几何形状和/或沿着道路的地标相关的数据的稀疏记录,其可以提供足够信息用于引导自主车辆的自主导航,还不需要过多的数据存储。在一些实施例中,自主车辆道路导航模型可以与稀疏地图800分开存储,并且可以在执行模型以用于导航时使用来自稀疏地图800的地图数据。在一些实施例中,自主车辆道路导航模型可以使用包括在稀疏地图800中的地图数据来确定沿着路段1200的目标轨迹,以用于引导自主车辆1205、1210、1215、1220和1225或之后沿着路段1200行驶的其他车辆的自主导航。例如,当由包括在车辆1205的导航系统中的处理器执行自主车辆道路导航模型时,该模型可以使得处理器将基于从车辆1205接收的导航信息确定的轨迹与包括在稀疏地图800中的预定轨迹进行比较,以验证和/或校正车辆1205的当前行驶路线。
在自主车辆道路导航模型中,道路特征或目标轨迹的几何形状可以由三维空间中的曲线编码。在一个实施例中,曲线可以是包括一个或多个连接三维多项式的三维样条。如本领域技术人员将理解的,样条可以是由一系列多项式分段定义的数值函数,以用于拟合数据。用于拟合道路的三维几何数据的样条可以包括线性样条(一阶)、二次样条(二阶)、三次样条(三阶)或任何其他样条(其他阶数),或其组合。样条可以包括连接(例如,拟合)道路的三维几何数据的数据点的不同阶的一个或多个三维多项式。在一些实施例中,自主车辆道路导航模型可包括对应于沿公共路段(例如,路段1200)或路段1200的车道的目标轨迹的三维样条。
如上所述,包括在稀疏地图中的自主车辆道路导航模型可以包括其他信息,诸如沿着路段1200的至少一个地标的标识。地标可以在安装在车辆1205、1210、1215、1220和1225中的每个上的相机(例如,相机122)的视野内可见。在一些实施例中,相机122可以捕捉地标的图像。在车辆1205上提供的处理器(例如,处理器180、190或处理单元110)可以处理地标的图像,以提取地标的识别信息。地标标识信息(而不是地标的实际图像)可以存储在稀疏地图800中。地标标识信息可能需要比实际图像少得多的存储空间。其他传感器或系统(例如,GPS系统)还可以提供地标的某些识别信息(例如,地标的位置)。地标可以包括交通标志,箭头标记、车道标记、虚线车道标记、交通灯、停车线、方向标志(例如,带有指示方向的箭头的高速公路出口标志、具有指向不同方向或地方的箭头的高速公路标志)、地标信标,或路灯柱中的至少一个。地标信标指的是沿着路段安装的设备(例如,RFID设备),其将信号传输或反射到安装在车辆上的接收器,使得当车辆经过设备时,由车辆接收的信标和设备的位置(例如,根据设备的GPS定位确定的)可以用作要包括在自主车辆道路导航模型和/或稀疏地图800中的地标。
至少一个地标的标识可以包括至少一个地标的位置。可以基于使用与多个车辆1205、1210、1215、1220和1225相关联的传感器系统(例如,全球定位系统、基于惯性的定位系统、地标信标等)执行的位置测量来确定地标的位置。在一些实施例中,可以通过多个行程来通过对在不同车辆1205、1210、1215、1220和1225上的传感器系统检测、收集或接收的位置测量值进行平均来确定地标的位置。例如,车辆1205、1210、1215、1220和1225可以将位置测量数据发送到服务器1230,该服务器1230可以平均位置测量值并使用平均位置测量值作为地标的位置。可以通过在后续驾驶中从车辆接收的测量值来连续地细化地标的位置。
地标的标识可以包括地标的尺寸。在车辆(例如,1205)上提供的处理器可以基于对图像的分析来估计地标的物理尺寸。服务器1230可以通过不同行程从不同车辆接收相同地标的物理尺寸的多个估计。服务器1230可以对不同的估计进行平均来达到地标的物理尺寸,并将该地标尺寸存储在道路模型中。物理尺寸估计可用于进一步确定或估计从车辆到地标的距离。可以基于车辆的当前速度和基于图像中出现的地标相对于相机的扩展焦点的位置的扩展比例来估计到地标的距离。例如,到地标的距离可以通过Z=V*dt*R/D来估计,其中V是车辆的速度,R是图像从时间t1处的地标到扩展焦点的距离,以及D是从t1到t2图像中地标的距离变化。dt表示(t2-t1)。例如,到地标的距离可以通过Z=V*dt*R/D来估计,其中V是车辆的速度,R是图像中地标与扩展焦点之间的距离,dt是时间间隔,D是沿着极线地标的图像位移。等效于上述公式的其他公式,诸如Z=V*ω/Δω,可用于估计到地标的距离。此处,V是车速,ω是图像长度(类似于对象宽度),Δω是以时间为单位的图像长度的变化。
当已知地标的物理尺寸时,还可以基于以下公式确定到地标的距离:Z=f*W/ω,其中f是焦距,W是地标的尺寸(例如,高度或宽度),ω是地标离开图像时的像素数。根据上面的公式,可以使用ΔZ=f*W*Δω/ω
对于未知规格的地标,可以通过跟踪连续帧之间的地标上的特征点来估计到地标的距离。例如,可以在两个或更多个图像帧之间跟踪出现在限速标志上的某些特征。基于这些跟踪的特征,可以生成每个特征点的距离分布。可以从距离分布中提取距离估计。例如,出现在距离分布中的最频繁距离可以用作距离估计。作为另一示例,距离分布的平均值可被用作距离估计。
图13示出了由多个三维样条1301、1302和1303表示的示例自主车辆道路导航模型。图13中示出的曲线1301、1302和1303仅用于说明目的。每个样条可以包括连接多个数据点1310的一个或多个三维多项式。每个多项式可以是一阶多项式、二阶多项式、三阶多项式,或具有不同阶数的任何合适多项式的组合。每个数据点1310可以与从车辆1205、1210、1215、1220和1225接收的导航信息相关联。在一些实施例中,每个数据点1310可以与关于地标的数据(例如,地标的尺寸、位置和标识信息)和/或道路签名简档(例如,道路几何形状、道路平整度简档、道路曲率简档、道路宽度简档)相关联。在一些实施例中,一些数据点1310可以与关于地标的数据相关联,而其他数据点可以与关于道路签名简档的数据相关联。
图14示出了从五个单独的行程接收的原始定位数据1410(例如,GPS数据)。如果一个行程与另一行程是由分开的车辆在相同时间穿行、由相同车辆在分开的时间穿行,或者由分开的车辆在分开的时间穿行,这里的一个行程与另一行程是分开的。为了考虑位置数据1410中的误差以及同一车道内车辆的不同位置(例如,一个车辆可以比另一车辆更靠近车道的左侧),服务器1230可以使用一个或多个统计技术来生成地图骨架1420,以确定原始定位数据1410中的变化是否表示实际偏差或统计误差。骨架1420内的每个路径可以链接回形成路径的原始数据1410。例如,骨架1420内A与B之间的路径链接到来自行程2、3、4和5的原始数据1410,而不是来自行程1的原始数据。骨架1420可能不够详细以用于导航车辆(例如,与上述样条不同,因为它与同一条道路上的多个车道相结合),但可以提供有用的拓扑信息,并可用于定义交叉点。
图15示出一个示例,由该示例可以为地图骨架的区段(例如,骨架1420内的区段A到B)内的稀疏地图生成额外细节。如图15所示,数据(例如,自我运动数据、道路标记数据等)可以显示为沿着行程的位置S(或S
图16示出了用于稀疏地图的对齐的地标数据的示例。在图16的示例中,地标1610包括道路标志。图16的示例进一步描绘了来自多个行程1601、1603、1605、1607、1609、1611和1613的数据。在图16的示例中,来自行程1613的数据由“重影”地标组成,并且服务器1230可以如此识别它,因为行程1601、1603、1605、1607、1609和1611都不包括行程1613中所识别的地标附近的地标的标识。因此,服务器1230当其中确实出现地标的图像与其中未出现地标的图像的比率超过阈值可以接受潜在地标,和/或当其中未出现地标的图像与其中出现地标的图像的比率超过阈值时可以拒绝潜在地标。
图17描绘了用于生成行程数据的系统1700,其可以用于众包稀疏地图。如图17所示,系统1700可以包括相机1701和定位设备1703(例如,GPS定位器)。相机1701和定位设备1703可以安装在车辆(例如,车辆1205、1210、1215、1220和1225中的一个)上。相机1701可以产生多种类型的多个数据,例如,自我运动数据、交通标志数据、道路数据等。相机数据和位置数据可以被分段为行程段1705。例如,行程段1705可以各自具有来自小于1km的驾驶的相机数据和位置数据。
在一些实施例中,系统1700可以移除行程段1705中的冗余。例如,如果地标出现在来自相机1701的多个图像中,则系统1700可以剥离冗余数据,使得行程段1705仅包含任何与地标有关的元数据的位置的一个副本。作为另一示例,如果车道标记出现在来自相机1701的多个图像中,则系统1700可以剥离冗余数据,使得行程段1705仅包含任何与车道标记有关的位置和元数据的位置的一个副本。
系统1700还包括服务器(例如,服务器1230)。服务器1230可以从车辆接收行程段1705并将行程段1705重新组合成单个行程1707。这样的布置可以允许在车辆与服务器之间传输数据时减少带宽要求,同时还允许服务器存储与整个行程有关的数据。
图18描绘了图17的系统1700,其进一步被配置用于众包稀疏地图。如图17所示,系统1700包括车辆1810,其使用例如相机(其产生例如自我运动数据、交通标志数据、道路数据等)和定位设备(例如,GPS定位器)。如图17所示,车辆1810将收集的数据分段为多个行程段(在图18中描绘为“DS1 1”、“DS2 1”、“DSN 1”)。然后,服务器1230接收行程段并从接收的段重建行程(在图18中描绘为“行程1”)。
如图18中进一步描绘的,系统1700还从其他车辆接收数据。例如,车辆1820还使用例如相机(其产生例如自我运动数据、交通标志数据、道路数据等)和定位设备(例如,GPS定位器)来捕捉行程数据。类似于车辆1810、车辆1820将收集的数据分段为多个行程段(在图18中描绘为“DS1 2”、“DS2 2”、“DSN 2”)。然后,服务器1230接收行程段并从接收的段重建行程(在图18中描绘为“行程2”)。可以使用任何数量的额外车辆。例如,图18还包括捕捉行程数据的“CAR N”,将其分段为多个行程段(在图18中描绘为“DS1 N”、“DS2 N”、“DSN N”),并将其发送到服务器1230,以用于重建成行程(在图18中描绘为“行程N”)。
如图18所示,服务器1230可以使用从多个车辆(例如,“CAR 1”(也标记为车辆1810)、“CAR 2”(也标记为车辆1820),和“CAR N”)收集的重建行程(例如,“行程1”、“行程2”和“行程N”)来构建稀疏地图(描绘为“MAP”)。
图19是示出用于生成用于沿着路段的自主车辆导航的稀疏地图的示例处理1900的流程图。处理1900可以由服务器1230中包括的一个或多个处理设备执行。
处理1900可以包括接收在一个或多个车辆穿行路段时获取的多个图像(步骤1905)。服务器1230可以从包括在车辆1205、1210、1215、1220和1225中的一个或多个内的相机接收图像。例如,当车辆1205沿着路段1200行驶时,相机122可以捕捉车辆1205周围的环境的一个或多个图像。在一些实施例中,服务器1230还可以接收已经由车辆1205上的处理器移除了冗余的精简图像数据,如上文参考图17所讨论的。
处理1900可以进一步包括基于多个图像识别沿着路段延伸的路面特征的至少一个线表示(步骤1910)。每个线表示可以表示沿着与路面特征基本对应的路段的路径。例如,服务器1230可以分析从相机122接收的环境图像以识别道路边缘或车道标记,并确定沿着与道路边缘或车道标记相关联的路段1200的行驶轨迹。在一些实施例中,轨迹(或线表示)可包括样条、多项式表示或曲线。服务器1230可基于在步骤1905处接收的相机自我运动(例如,三维平移和/或三维旋转运动)来确定车辆1205的行驶轨迹。
处理1900还可以包括基于多个图像来识别与路段相关联的多个地标(步骤1910)。例如,服务器1230可以分析从相机122接收的环境图像以识别一个或多个地标,诸如沿着路段1200的道路标志。服务器1230可以使用对一个或多个车辆穿行路段时获取的多个图像的分析来识别地标。为了实现众包,分析可以包括关于接受和拒绝与路段相关联的可能地标的规则。例如,分析可以包括当其中确实出现地标的图像与未出现地标的图像的比率超过阈值时接受潜在地标,和/或当其中地标没有出现的图像与其中确实出现地标的图像的比率超过阈值时拒绝潜在地标。
处理1900可以包括由服务器1230执行的其他操作或步骤。例如,导航信息可以包括用于车辆沿着路段行驶的目标轨迹,并且处理1900可以包括由服务器1230聚类与在路段上行驶的多个车辆相关的车辆轨迹,并基于聚类的车辆轨迹确定目标轨迹,如下文进一步详细讨论的。聚类车辆轨迹可以包括由服务器1230基于车辆的绝对航向或车辆的车道分配中的至少一个,将与在路段上行驶的车辆相关的多个轨迹聚类成多个群集。生成目标轨迹可以包括由服务器1230对聚类轨迹进行平均。
作为另一示例,处理1900可以包括对齐在步骤1905中接收的数据,如下文参考图29进一步详细讨论的。如上所述,由服务器1230执行的其他过程或步骤也可以包括在处理1900中。
所公开的系统和方法可以包括其他特征。例如,所公开的系统可以使用局部坐标而不是全局坐标。对于自动驾驶,一些系统可以在世界坐标中呈现数据。例如,可以使用地球表面上的经度和纬度坐标。为了使用地图进行操纵,主车辆可以确定其相对于地图的位置和方向。在车上使用GPS设备似乎很自然,以便将车辆定位在地图上,并且以便找到主体参考系与世界参考系(例如,北、东和下)之间的旋转变换。一旦主体参考系与地图参考系对齐,则可以在主体参考系中表达期望的路线,并且可以计算或生成操纵命令。
然而,该策略的一个可能问题是当前的GPS技术通常不能以足够的准确性和可用性提供主体定位和位置。为了克服这个问题,可以使用其世界坐标已知的地标来构造非常详细的地图(称为高清或HD地图),所述地标包含不同种类的地标。因此,配备有传感器的车辆可以在其自己的参考系中检测和定位地标。一旦找到车辆与地标之间的相对位置,就可以从HD地图确定地标的世界坐标,并且车辆可以使用它们来计算其自己的定位和位置。
然而,该方法可以使用全局世界坐标系作为中介,从而建立地图与主体参考帧之间的对齐。即,可以使用地标以便补偿车辆上的GPS设备的限制。地标与HD地图一起可以使得在全局坐标中能够计算精确的车辆位置,因此解决了地图-主体对齐问题。
在所公开的系统和方法中,代替使用世界的一个全局地图,而可以使用许多的地图片或局部地图进行自主导航。每片地图或每个局部地图可以定义它自己的坐标系。这些坐标系可以是任意的。车辆在局部地图中的坐标可能不需要指示车辆在地球表面上的位置。此外,可能不要求局部地图在大尺度上是准确的,这意味着可能没有可以在全球世界坐标系中嵌入局部地图的刚性变换。
这种世界表示有两个主要处理,一个涉及地图的生成,而另一个涉及使用它们。关于地图生成,可以通过众包来创建和维护这种类型的表示。可能不需要应用复杂的调查设备,因为HD地图的使用是有限的,因此众包变得可行。关于使用,可以采用将局部地图与主体参考系对齐而不经过标准世界坐标系的有效方法。因此,至少在大多数情况和环境中,可能不需要对全球坐标中的车辆定位和位置进行精确估计。此外,局部地图的存储器覆盖区可以保持非常小。
地图生成的基本原理是自我运动的集成。车辆可以感测相机在空间中的运动(3D平移和3D旋转)。车辆或服务器可以通过随时间的自我运动的集成来重建车辆的轨迹,并且该集成的路径可以用作道路几何形状的模型。该处理可以与近距离车道标记的感测相结合,然后重建的路线可以反映车辆应遵循的路径,而不是车辆确实遵循的特定路径。换言之,可以基于与近距离车道标记相关的感测数据来修改重建的路线或轨迹,并且可以将修改的重建轨迹用作推荐轨迹或目标轨迹,其可以保存在道路模型中或者稀疏地图中,以供导航同一路段的其他车辆使用。
在一些实施例中,地图坐标系可以是任意的。相机参考帧可以在任意时间选择,并将用作地图原点。可以在该特定所选帧的坐标系中表示相机的集成轨迹。地图中路线坐标的值可能不直接表示地球上的定位。
集成路径可能累积错误。这可能是由于自我运动的感测可能不是绝对准确的。累积误差的结果是局部地图可能发散,并且局部地图可能不被视为全局地图的局部副本。局部地图块的尺寸越大,则与地球上“真实”几何体的偏差越大。
局部地图的任意性和散度可能不是集成方法的结果,可以应用该集成方法以便以众包的方式(例如,通过沿着道路行驶的车辆)来构建地图。然而,车辆可以成功地使用局部地图进行操纵。
地图可能会在长距离上发散。由于该地图用于计划车辆附近的轨迹,因此发散的影响可能是可以接受的。在任何时间实例,系统(例如,服务器1230或车辆1205)可以重复对齐过程,并且使用地图来预测前方约1.3秒(或任何其他秒,诸如1.5秒、1.0秒、1.8秒等)的道路定位(在相机坐标系中)。只要该距离上的累积误差足够小,则可以使用为自动驾驶提供的操纵命令。
在一些实施例中,局部地图可以聚焦在局部区域上,并且可以不覆盖太大的区域。这意味着在自动驾驶中使用局部地图进行操纵的车辆可能在某个点到达地图的末端,并且可能必须切换到地图的另一个局部片或区段。可以通过彼此重叠的局部地图来启用切换。一旦车辆进入两个地图公共的区域,系统(例如,服务器1230或车辆1205)可以继续基于第一局部地图(正在使用的地图)生成操纵命令,但同时系统可以将车辆定位在与第一局部地图重叠的另一地图(或第二局部地图)上。换言之,系统可以同时将相机的当前坐标系与第一地图的坐标系以及第二地图的坐标系对齐。当建立新的对齐时,系统可以切换到另一个地图并在那里计划车辆轨迹。
所公开的系统可以包括附加特征,其中一个特征涉及系统对齐车辆和地图的坐标系的方式。如上所述,假设车辆可以测量其与地标的相对位置,则可以使用地标进行对齐。这在自动驾驶中是有用的,但有时可能会导致对大量地标的需求,并因此导致大量的内存覆盖区。因此,所公开的系统可以使用解决该问题的对齐过程。在该对齐过程中,系统可以使用稀疏地标和自我速度的集成来计算沿着道路的车辆位置的1D估计器。系统可以使用轨迹本身的形状,以使用在其他部分中以下详细讨论的尾部对齐方法来计算对齐的旋转部分。因此,车辆可以在驾驶“尾部”的同时重建其自己的轨迹,并且计算围绕其沿着道路的假定位置的旋转,以使尾部与地图对齐。这种对齐过程不同于下文参考图29讨论的众包数据的对齐。
在所公开的系统和方法中,仍然可以使用GPS设备。全局坐标可用于索引存储轨迹和/或地标的数据库。可以将相关的局部地图片和车辆附近的相关地标存储在存储器中,并使用全球GPS坐标从存储器中检索。然而,在一些实施例中,全局坐标可能不用于路径规划,并且可能不准确。在一个示例中,可能限制使用全局坐标的进行信息的索引。
在“尾部对齐”不能很好地起作用的情况下,系统可以使用更多数量的地标来计算车辆的位置。这可能是一种罕见的情况,因此对内存覆盖区的影响可能是适中的。道路交叉点就是这种情况的示例。
所公开的系统和方法可以使用语义地标(例如,交通标志),因为它们可以从场景中可靠地检测并且与存储在道路模型或稀疏地图中的地标匹配。在一些情况下,所公开的系统也可以使用非语义地标(例如,通用标志),并且在这种情况下,非语义地标可以附加到外观签名,如上所述。系统可以使用学习方法进行遵循“相同或不同”识别范例的签名的生成,。
例如,给定沿着它们具有GPS坐标的许多行程,所公开的系统可以产生底层道路结构交叉点和路段,如上面关于图14所讨论的。假设道路彼此足够远以便能够使用GPS区分它们。在一些实施例中,可能仅需要粗粒度图。为了生成底层道路结构图,可以将空间划分为给定分辨率的网格(例如,50米乘50米)。每个行程都可以看作是网格站点的有序列表。系统可以对属于行程的每个网格站点着色,以产生合并行程的图像。着色网格点可以表示为合并行程上的节点。从一个节点经过到另一个节点的行程可以表示为链接。系统可以填充图像中的小孔,以避免区分车道并校正GPS误差。系统可以使用合适的细化算法(例如,名为“Zhang-Suen”细化算法的算法)来获得图像的骨架。该骨架可以表示底层道路结构,并且可以使用掩模(例如,连接到至少三个其他点的点)找到交汇点。找到交汇点后,这些区段可能是连接它们的骨架部分。为了将行程匹配回骨架,系统可以使用隐马尔可夫模型(HiddenMarkov Model)。每个GPS点可以与网格站点相关联,其概率与其距该站点的距离相反。使用合适的算法(例如,名为“维特比(Viterbi)”算法的算法)将GPS点与网格点站点匹配,而不允许连续的GPS点与非相邻的网格站点匹配。
可以使用多种方法将行程映射回地图。例如,第一种方案可以包括在细化处理期间保持跟踪。第二种方案可以使用邻近匹配。第三种方案可以使用隐马尔可夫模型。隐马尔可夫模型为每个观察假定潜在隐藏状态,并为给定状态的给定观察分配概率,并为给定的先前状态的状态分配概率。在给定观察列表的情况下,可以使用维特比算法来找到最可能的状态。
所公开的系统和方法可以包括附加特征。例如,所公开的系统和方法可以检测高速公路入口/出口。可以使用GPS数据将相同区域中的多个行程合并到相同的坐标系。系统可以使用视觉特征点进行映射和定位。
在一些实施例中,通用视觉特征可以用作地标,以用于记录移动车辆在一个行程(定位阶段)中,相对于在先前行程中(映射阶段)穿行相同路段的车辆生成的地图的位置和方向的目的。这些车辆可以配备对车辆周围环境和GPS接收器进行成像的校准的相机。车辆可以与维护最新地图的中央服务器(例如,服务器1230)通信,该最新地图包括连接到其他重要几何和语义信息的这些视觉地标(例如,车道结构、道路标志的类型和位置、道路标记的类型和位置、由物理障碍物的位置描绘的附近可驾驶地面区域的形状、当由人类驾驶员控制的先前驱动的车辆路径的形状等)。在映射和定位阶段,可以在中央服务器与道路每段长度的车辆之间通信的数据总量很小。
在映射阶段,所公开的系统(例如,自主车辆和/或一个或多个服务器)可以检测特征点(FP)。特征点可以包括用于跟踪诸如地标的相关对象的一个或多个点。例如,包括停止标志的角的八个点可以是特征点。公开的系统可以进一步计算与FP相关联的描述符(例如,使用来自加速区段测试(FAST)检测器、二进制鲁棒不变可伸缩关键点(BRISK)检测器、二元稳健独立基本特征(BRIEF)检测器,和/或定向的FAST和旋转BRIEF(ORB)检测器或使用利用训练库训练的检测器/描述符对的特征)。系统可以使用特征点在图像平面中的运动来跟踪其中它们出现的帧之间的特征点,并且通过使用例如,描述符空间中的欧几里德(Euclidean)或汉明(Hamming)距离来匹配相关联的描述符。系统可以使用跟踪的FP来估计相机运动和其上FP被检测和跟踪的对象的世界位置。例如,跟踪的FP可以用于估计车辆的运动和/或最初在其上检测到FP的地标的位置。
该系统可以进一步将FP分类为将可能在未来行程中检测到与否的FP(例如,在瞬时移动的对象、停放的汽车和阴影纹理上检测到的FP将可能不会在未来的行程中重新出现)。该分类可以被称为再现性分类(RC),并且可以是围绕检测到的FP的金字塔区域中的光的强度、跟踪的FP在图像平面中的运动,和/或成功检测和跟踪的视点范围的函数。在一些实施例中,车辆可以向服务器1230发送与FP相关联的描述符、相对于FP的车辆的估计的3D位置,以及在检测/跟踪FP的时间处的瞬时车辆GPS坐标。
在映射阶段期间,当映射车辆与中央服务器之间的通信带宽有限时,当地图中存在FP或其他语义地标时(诸如道路标志和车道结构)有限以及不足以用于定位目的时,车辆可以以高频率向服务器发送FP。并且,尽管映射阶段中的车辆通常可以以低空间频率向服务器发送FP,但是FP可以在服务器中聚集。还可以由服务器执行对复现的FP的检测,并且服务器可以存储该复现的FP的集合和/或忽略不再复现的FP。至少在某些情况下,地标的视觉外观可能对一天中的时间或捕捉它们的季节是敏感的。因此,为了增加FP的再现性概率,接收的FP可由服务器分箱为时刻箱、季节箱等。在一些实施例中,车辆还可以向服务器发送与FP相关联的其他语义和几何信息(例如,车道形状、道路平面的结构、障碍物的3D位置、映射剪辑瞬时坐标系统中的自由空间、在到停车位的设置行程中的由人类驾驶员驾驶的路径等)。
在定位阶段,服务器可以将包含以FP位置和描述符形式的地标的地图发送到一个或多个车辆。在一组当前连续帧内,特征点(FP)可以近乎实时地被车辆检测和跟踪。跟踪的FP可用于估计相机运动和/或相关联的对象(诸如地标)的位置。可以搜索检测到的FP描述符来匹配FP列表,该FP列表包括在地图中并且具有在距车辆的当前GPS读数的估计的有限GPS不确定半径内的GPS坐标。可以通过搜索当前的所有对并且映射使描述符空间中的欧几里德或汉明距离最小化的FP来完成匹配。使用FP匹配及其当前和地图位置,车辆可以在瞬时车辆位置与局部地图坐标系之间旋转和/或平移。
所公开的系统和方法可以包括用于训练再现性分类器的方法。可以在以下方案之一中执行训练,以便增加标记成本和得到的分类器准确度。
在第一种方案中,可以收集包括由具有匹配的瞬时车辆GPS位置的车辆相机记录的大量剪辑的数据库。该数据库可以包括行程的代表性样本(关于各种属性:例如,时刻、季节、天气条件、车行道类型)。从以类似的GPS位置和航向的不同行程的帧中提取的特征点(FP)可以在GPS不确定半径内潜在匹配。不匹配的FP可以被标记为不可再现的,而匹配的FP可以被标记为可再现的。鉴于其在图像金字塔中的出现、其相对于车辆的瞬时位置以及成功跟踪其的视点位置范围,然后可以训练分类器来预测FP的再现性标签。
在第二种方案中,从第一种方案中描述的剪辑数据库中提取的FP对也可以由负责注释剪辑之间的FP匹配的人标记。
在第三种方案中,使用光检测和测距(LIDAR)测量来增强具有精确的车辆位置、车辆定向和图像像素深度的第一种方案的数据库的数据库可以用于精确地匹配不同行程中的世界位置。然后可以在与不同视点和驾驶时间的这些世界点对应的图像区域处计算特征点描述符。然后可以训练分类器来预测描述符位于其匹配的描述符中的描述符空间中的平均距离。在这种情况下,可以通过可能具有低描述符距离来测量再现性。
与所公开的实施例一致,系统可以基于观察到的穿行公共路段的车辆的轨迹(例如,其可以对应于车辆转发到服务器的轨迹信息)来生成自主车辆道路导航模型。然而,观察到的轨迹可能不对应于穿行路段的车辆所采用的实际轨迹。而是,在某些情况下,可以相对于由车辆确定的实际重建轨迹来修改上传到服务器的轨迹。例如,在重建实际采用的轨迹的同时,车辆系统可以使用传感器信息(例如,由相机提供的图像的分析)来确定其自身的轨迹可能不是路段的优选轨迹。例如,车辆可基于来自车载相机的图像数据确定其未在车道的中心驾驶或者其越过车道边界达确定的时间段。在这种情况下,尤其,可以基于从传感器输出导出的信息来对车辆的重建轨迹(穿行的实际路径)进行细化。然后可以将精细轨迹而不是实际轨迹上载到服务器,以有可能用于构建或更新稀疏数据图800。
然后,在一些实施例中,包括在车辆(例如,车辆1205)中的处理器可以基于来自一个或多个传感器的输出来确定车辆1205的实际轨迹。例如,基于对从相机122输出的图像的分析,处理器可以识别沿着路段1200的地标。地标可以包括交通标志(例如,限速标志)、方向标志(例如,指向不同路线或地方的高速公路方向标志,以及一般标志(例如,与唯一签名相关联的矩形商业标志,诸如颜色图案)。可以将所识别的地标与存储在稀疏地图800中的地标进行比较。当找到匹配时,存储在稀疏地图800中的地标的定位可以用作所识别的地标的定位。所识别的地标的定位可以用于确定车辆1205沿目标轨迹的定位。在一些实施例中,处理器还可以基于GPS单元1710输出的GPS信号确定车辆1205的位置。
处理器还可以确定用于传输到服务器1230的目标轨迹。目标轨迹可以与由处理器基于传感器输出确定的实际轨迹相同。尽管,在一些实施例中,目标轨迹可以与基于传感器输出确定的实际轨迹不同。例如,目标轨迹可以包括对实际轨迹的一个或多个修改。
在一个示例中,如果来自相机122的数据包括路障,诸如在改变车道(例如,当车道由于构造或前方事故而暂时移位时)的车辆1250前方100米处的临时车道移位路障,处理器可以从图像中检测临时车道移位路障,并根据临时车道移位选择与存储在道路模型或稀疏地图中的目标轨迹对应的车道不同的车道。车辆的实际轨迹可以反映这种车道变化。然而,如果车道移位是临时的并且可以在接下来的例如10、15或30分钟内清除,车辆1205因此可以修改车辆1205已经采用的实际轨迹(即,车道的换档),以反映目标轨迹应该与车辆1205所采用的实际轨迹不同。例如,系统可以识别穿行的路径不同于路段的优选轨迹。因此,系统可以在将轨迹信息上载到服务器之前调整重建轨迹。
在其他实施例中,可以通过一个或多个推荐的轨迹细化(例如,要对重建轨迹的至少一部分进行的平移的大小和方向)来上载实际重建轨迹信息。在一些实施例中,处理器1715可以将修改的实际轨迹传输到服务器1230。服务器1230可以基于所接收的信息生成或更新目标轨迹,并且可以将目标轨迹传输到之后在相同的路段上行驶的其他自主车辆,如下文参考图24进一步详细讨论。
作为另一示例,环境图像可以包括对象,诸如突然出现在路段1200中的行人。处理器可以检测行人,并且车辆1205可以改变车道以避免与行人的碰撞。基于感测数据重建的实际轨迹车辆1205可以包括车道的改变。然而,行人可能很快就会离开车行道。所以,车辆1205可以修改实际轨迹(或确定推荐的修改),以反映目标轨迹应该与所采用的实际轨迹不同(因为行人的出现是不应该在目标轨迹确定中考虑的临时条件)。在一些实施例中,当实际轨迹被修改时,车辆可以向服务器传输指示与预定轨迹的临时偏差的数据。数据可以指示偏差的原因,或者服务器可以分析数据以确定偏差的原因。知道原因可能是有用的。例如,当偏差是由于驾驶员注意到刚发生的事故,并且响应操纵车轮来避免碰撞时,服务器可以基于偏差的原因来计划对与路段相关联的模型或特定轨迹进行更加适度的调整。作为另一示例,当偏差的原因是行人过马路,服务器可以确定将来不需要改变轨迹。
作为另一示例,环境图像可以包括车道标记,该车道标记指示车辆1205行驶在车道稍外面,可能在人类驾驶员的控制下。处理器可以从捕捉的图像中检测车道标记,并且可以修改车辆1205的实际轨迹以考虑车道的偏离。例如,可以对重建轨迹应用平移,使得其落入观察到的车道的中心。
所公开的系统和方法可以实现具有低覆盖区模型的自主车辆导航(例如,操纵控制),其可以由自主车辆自身收集而无需昂贵的测量设备的帮助。为了支持自主导航(例如,操纵应用),道路模型可以包括具有道路几何形状、其车道结构和地标的稀疏地图,其可以用于确定沿着包括在该模型中的轨迹的车辆的定位或位置。如上所述,稀疏地图的生成可以由远程服务器执行,该远程服务器与在道路上行驶的车辆通信并且从车辆接收数据。数据可以包括感测数据、基于感测数据重建的轨迹,和/或可以表示修改的重建轨迹的推荐轨迹。如下所述,服务器可以将模型传输回之后在道路上行驶的车辆或其他车辆以帮助自主导航。
图20示出了服务器1230的框图。服务器1230可以包括通信单元2005,其可以包括硬件组件(例如,通信控制电路、交换机和天线)和软件组件(例如,通信协议、计算机代码)两者。例如,通信单元2005可以包括至少一个网络接口。服务器1230可以通过通信单元2005与车辆1205、1210、1215、1220和1225通信。例如,服务器1230可以通过通信单元2005接收从车辆1205、1210、1215、1220和1225传输的导航信息。服务器1230可以通过通信单元2005将自主车辆道路导航模型分发给一个或多个自主车辆。
服务器1230可以包括至少一个非暂时性存储介质2010,诸如硬盘驱动器、光盘、磁带等。存储设备1410可以被配置为存储数据,诸如从车辆1205、1210、1215、1220和1225接收的导航信息和/或服务器1230基于导航信息生成的自主车辆道路导航模型。存储设备2010可以被配置为存储任何其他信息,诸如稀疏地图(例如,上面关于图8讨论的稀疏地图800)。
除了存储设备2010之外或代替存储设备2010,服务器1230可以包括存储器2015。存储器2015可以与存储器140或150类似或不同。存储器2015可以是非暂时性存储器,诸如闪存、随机存取存储器等。存储器2015可以被配置为存储数据,诸如计算机代码或可由处理器(例如,处理器2020)执行的指令、地图数据(例如,稀疏地图800的数据)、自主车辆道路导航模型,和/或从车辆1205、1210、1215、1220和1225接收的导航信息。
服务器1230可以包括至少一个处理设备2020,其被配置为执行存储在存储器2015中的计算机代码或指令以执行各种功能。例如,处理设备2020可以分析从车辆1205、1210、1215、1220和1225接收的导航信息,并基于该分析生成自主车辆道路导航模型。处理设备2020可以控制通信单元1405联将自主车辆道路导航模型分发给一个或多个自主车辆(例如,车辆1205、1210、1215、1220和1225中的一个或多个,或者之后在路段1200上行驶的任何车辆)。处理设备2020可以与处理器180、190或处理单元110类似或不同。
图21示出了存储器2015的框图,其可以存储计算机代码或指令,该计算机代码或指令用于执行用于生成用在自主车辆导航中的道路导航模型的一个或多个操作。如图21所示,存储器2015可以存储用于执行用于处理车辆导航信息的操作的一个或多个模块。例如,存储器2015可以包括模型生成模块2105和模型分发模块2110。处理器2020可以执行存储在存储器2015中包括的模块2105和2110中的任何模块中的指令。
模型生成模块2105可以存储指令,当由处理器2020执行该指令时,所述指令可以基于从车辆1205、1210、1215、1220和1225接收的导航信息生成用于公共路段(例如,路段1200)的自主车辆道路导航模型的至少一部分。例如,在生成自主车辆道路导航模型时,处理器2020可以将沿着公共路段1200的车辆轨迹聚类到不同的群集中。处理器2020可以基于不同聚类中的每个的聚类车辆轨迹来确定沿着公共路段1200的目标轨迹。这样的操作可以包括在每个群集中找到群集车辆轨迹的均值或平均轨迹(例如,通过平均表示群集车辆轨迹的数据)。在一些实施例中,目标轨迹可以与公共路段1200的单个车道相关联。
自主车辆道路导航模型可以包括多个目标轨迹,每个目标轨迹与公共路段1200的单独车道相关联。在一些实施例中,目标轨迹可以与公共路段1200,而不是与路段1200的单个车道相关联。目标轨迹可以由三维样条表示。在一些实施例中,样条可以定义为小于10千字节/千米、小于20千字节/千米、小于100千字节/千米、小于1兆字节/千米,或任何其它合适的每千米的存储大小。然后,模型分发模块2110可以将所生成的模型分发给一个或多个车辆,例如,如下文参考图24所讨论的。
道路模型和/或稀疏地图可以存储与路段相关联的轨迹。这些轨迹可以被称为目标轨迹,其被提供给自主车辆以用于自主导航。可以从多个车辆接收目标轨迹,或者可以基于从多个车辆接收的实际轨迹或推荐轨迹(具有一些修改的实际轨迹)来生成目标轨迹。可以用从其他车辆接收的新轨迹连续更新(例如,平均)包括在道路模型或稀疏地图中的目标轨迹。
在路段上行驶的车辆可以通过各种传感器收集数据。数据可以包括地标、道路签名简档、车辆运动(例如,加速度计数据、速度数据)、车辆位置(例如,GPS数据),并且可以重建实际轨迹本身,或者将数据传输到服务器,这将重建车辆的实际轨迹。在一些实施例中,车辆可以将轨迹(例如,任意参考系中的曲线)、地标数据和沿着行驶路径的车道分配有关的数据传输到服务器1230。在多个行程处沿着相同路段行驶的各种车辆可以有不同的轨迹。服务器1230可以通过聚类处理从通过车辆接收的轨迹识别与每个车道相关联的路线或轨迹。
图22示出了对与车辆1205、1210、1215、1220和1225相关联的车辆轨迹进行聚类以用于确定公共路段(例如,路段1200)的目标轨迹的处理。从聚类处理确定的目标轨迹或多个目标轨迹可以包括在自主车辆道路导航模型或稀疏地图800中。在一些实施例中,沿着路段1200行驶的车辆1205、1210、1215、1220和1225可以包括在自主车辆道路导航模型或稀疏地图800中。在一些实施例中,服务器1230可以基于从车辆1205、1210、1215、1220和1225接收的地标、道路几何形状,以及车辆运动信息来生成轨迹。为生成自主车辆道路在导航模型,服务器1230可以将车辆轨迹1600聚类成多个群集2205、2210、2215、2220、2225和2230,如图22所示。
可以使用各种标准来执行聚类。在一些实施例中,群集中的所有行程可以相对于沿着路段1200的绝对航向相似。可以从车辆1205、1210、1215、1220和1225接收的GPS信号获得绝对航向。在一些实施例中,绝对航向可以使用航位推算来获得。如本领域技术人员将理解的,航位推测可以用于通过使用先前确定的位置、估计的速度等来确定当前位置并因此确定车辆1205、1210、1215、1220和1225的航向。绝对航向可用于识别沿车行道的路线。
在一些实施例中,群集中的所有行程可以相对于沿着路段1200上的行程的车道分配(例如,在交叉点之前和之后的相同车道中)是类似的。通过车道分配聚类的轨迹可以用于识别沿着车行道的车道。在一些实施例中,两个标准(例如,绝对航向和车道分配)均可用于聚类。
在每个群集2205、2210、2215、2220、2225和2230中,可以对轨迹进行平均来获得与特定群集相关联的目标轨迹。例如,可以平均来自与相同车道群集相关联的多个行程的轨迹。平均轨迹可以是与特定车道相关联的目标轨迹。为了平均轨迹的群集,服务器1230可以选择任意轨迹C0的参考系。对于所有其他轨迹(C1,...,Cn),服务器1230可以找到将Ci映射到C0的刚性变换,其中i=1、2、...、n,其中n是正整数,对应于群集中包含的轨迹总数。服务器1230可以计算C0参考系中的均值曲线或轨迹。
在一些实施例中,地标可以定义不同行程之间的弧长匹配,其可以用于轨迹与车道的对齐。在一些实施例中,在交叉点之前和之后的车道标记可以用于轨迹与车道的对齐。
为了从轨迹组装车道,服务器1230可以选择任意车道的参考系。服务器1230可以将部分重叠的车道映射到所选择的参考系。服务器1230可以继续映射,直到所有车道都在相同的参考系中。彼此相邻的车道可以对齐,好像它们是相同的车道,然后它们可以横向移位。
沿着路段辨识的地标可以首先在车道级别,然后在交叉点级别被映射到公共参考系。例如,多个行程中的多个车辆可以多次识别相同的地标。关于在不同行程中接收的相同地标的数据可能略有不同。这些数据可以被平均并映射到相同的参考系,例如C0参考系。附加地或替代地,可以计算在多个行程中接收的相同地标的数据的方差。
在一些实施例中,路段120的每个车道可以与目标轨迹和某些地标相关联。目标轨迹或多个这样的目标轨迹可以包括在自主车辆道路导航模型中,其可以稍后由沿着相同路段1200行驶的其他自主车辆使用。当车辆沿着路段1200行驶时,由车辆1205、1210、1215、1220和1225识别的地标可以与目标轨迹相关联地记录。可以利用从后续行程中的其他车辆接收的新数据连续地或周期性地更新目标轨迹和地标的数据。
对于自主车辆的定位,所公开的系统和方法可以使用扩展卡尔曼(ExtendedKalman)滤波器。可以基于三维位置数据和/或三维定向数据、通过自我运动的集成对预测车辆当前定位前方的未来定位来确定车辆的定位。可以通过对地标的图像观察来校正或调整车辆的定位。例如,当车辆检测到由相机捕捉的图像内的地标时,可以将地标与存储在道路模型或稀疏地图800内的已知地标进行比较。已知地标可以具有沿着存储在道路模型和/或稀疏地图800中的目标轨迹的已知定位(例如,GPS数据)。基于当前速度和地标的图像,可以估计从车辆到地标的距离。可以基于到地标的距离和地标的已知定位(存储在道路模型或稀疏地图800中)来调整沿着目标轨迹的车辆位置。可以假定存储在道路模型和/或稀疏地图800中的地标的位置/定位数据(例如,来自多个行程的平均值)是准确的。
在一些实施例中,所公开的系统可以形成闭环子系统,其中对车辆六自由度定位的估计(例如,三维位置数据加上三维定向数据)可以用于导航(例如,操纵自主车辆的轮子)自主车辆到达期望的点(例如,在存储的位置前方1.3秒)。反过来,从操纵和实际导航测量的数据可用于估计六自由度定位。
在一些实施例中,沿着道路的柱,诸如灯柱和电力线或电缆线柱可以用作用于定位车辆的地标。其他地标(诸如交通标志、交通信号灯、道路上的箭头、停车线以及沿着路段的对象的静态特征或签名)也可以用作用于定位车辆的地标。当柱用于定位时,可以使用柱的x观察(即,来自车辆的视角),而不是y观察(即,到柱的距离),因为柱的底部可能被遮挡,并且有时它们不在道路平面上。
图23示出了用于车辆的导航系统,其可以用于使用众包稀疏地图的自主导航。为了说明,车辆被称为车辆1205。图23中所示的车辆可以是本文公开的任何其他车辆,包括例如车辆1210、1215、1220和1225,以及其他实施例中所示的车辆200。如图12所示,车辆1205可以与服务器1230通信。车辆1205可以包括图像捕捉设备122(例如,相机122)。车辆1205可以包括导航系统2300,该导航系统2300配置用于为车辆1205提供在道路(例如,路段1200)上行驶的导航引导。车辆1205还可以包括其他传感器,诸如速度传感器2320和加速度计2325。速度传感器2320可以配置成检测车辆1205的速度。加速度计2325可以配置成检测车辆1205的加速度或减速度。图23中所示的车辆1205可以是自主车辆,并且导航系统2300可以用于提供用于自动驾驶的导航引导。替代地,车辆1205也可以是非自主的人控车辆,并且导航系统2300仍可用于提供导航引导。
导航系统2300可以包括通信单元2305,该通信单元2305被配置为通过通信路径1235与服务器1230通信。导航系统2300还可以包括GPS单元2310,该GPS单元2310被配置为接收和处理GPS信号。导航系统2300还可以包括至少一个处理器2315,该处理器2315被配置为处理数据,诸如GPS信号、来自稀疏地图800的地图数据(其可以存储在车辆1205上提供的存储设备上和/或从服务器1230接收)、由道路简档传感器2330感测的道路几何形状、由相机122捕捉的图像,和/或从服务器1230接收的自主车辆道路导航模型。道路简档传感器2330可包括用于测量不同类型的道路简档(道路平整度、道路宽度、道路高度、道路曲线等)的不同类型的设备。例如,道路简档传感器2330可以包括测量车辆2305的悬架的运动以导出道路平整度简档的设备。在一些实施例中,道路简档传感器2330可包括雷达传感器以测量从车辆1205到道路侧的距离(例如,道路侧的障碍物),从而测量道路的宽度。在一些实施例中,道路简档传感器2330可包括配置用于测量道路的上下高度的设备。在一些实施例中,道路简档传感器2330可包括配置成测量道路曲率的设备。例如,相机(例如,相机122或另一相机)可用于捕捉显示道路曲率的道路图像。车辆1205可以使用这样的图像来检测道路曲率。
至少一个处理器2315可以被编程为从相机122接收与车辆1205相关联的至少一个环境图像。至少一个处理器2315可以分析至少一个环境图像,以确定与车辆1205相关的导航信息。导航信息可以包括与车辆1205沿着路段1200的行驶相关的轨迹。至少一个处理器2315可以基于相机122的运动(并且因此车辆的运动)来确定轨迹,诸如三维平移和三维旋转运动。在一些实施例中,至少一个处理器2315可以基于对由相机122获取的多个图像的分析来确定相机122的平移和旋转运动。在一些实施例中,导航信息可以包括车道分配信息(例如,其中车道车辆1205沿着路段1200行驶)。从车辆1205传输到服务器1230的导航信息可以由服务器1230用于生成和/或更新自主车辆道路导航模型,其可以从服务器1230传输回到车辆1205,以用于为车辆1205提供自主导航引导。
至少一个处理器2315还可以被编程为将导航信息从车辆1205传输到服务器1230。在一些实施例中,导航信息可以与道路信息一起传输到服务器1230。道路定位信息可以包括由GPS单元2310接收的GPS信号、地标信息、道路几何形状、车道信息等中的至少一个。至少一个处理器2315可以从服务器1230接收自主车辆道路导航模型或模型的一部分。从服务器1230接收的自主车辆道路导航模型可以包括基于从车辆1205传输到服务器1230的导航信息的至少一个更新。从服务器1230传输到车辆1205的模型部分可以包括模型的更新部分。至少一个处理器2315可以基于所接收的自主车辆道路导航模型或模型的更新部分,引起至少一个车辆1205的导航操控(例如,诸如转弯、制动、加速、超过另一车辆等的操纵)。
至少一个处理器2315可以被配置为与包括在车辆1205中的各种传感器和组件进行通信,包括通信单元1705、GPS单元2315、相机122、速度传感器2320、加速计2325和道路简档传感器2330。至少一个处理器2315可以从各种传感器和组件收集信息或数据,并通过通信单元2305将信息或数据传输到服务器1230。替代地或附加地,车辆1205的各种传感器或组件还可以与服务器1230进行通信并将由传感器或组件收集的数据或信息传输到服务器1230。
在一些实施例中,车辆1205、1210、1215、1220和1225可以彼此通信,并且可以彼此共享导航信息,使得车辆1205、1210、1215、1220和1225中的至少一个可以使用众包(例如,基于其他车辆共享的信息)来生成自主车辆道路导航模型。在一些实施例中,车辆1205、1210、1215、1220和1225可以彼此共享导航信息,并且每个车辆可以更新其自己的车辆中提供的自主车辆道路导航模型。在一些实施例中,车辆1205、1210、1215、1220和1225中的至少一个(例如,车辆1205)可以用作中枢车辆。中枢车辆(例如,车辆1205)的至少一个处理器2315可以执行由服务器1230执行的一些或全部功能。例如,中枢车辆的至少一个处理器2315可以与其他车辆通信并接收来自其他车辆的导航信息。中枢车辆的至少一个处理器2315可以基于从其他车辆接收的共享信息,来生成自主车辆道路导航模型或对模型的更新。中枢车辆的至少一个处理器2315可以将自主车辆道路导航模型或对模型的更新传输到其他车辆,以用于提供自主导航引导。
图24是示出用于生成用于自主车辆导航的道路导航模型的示例性处理2400的流程图。处理2400可以由服务器1230或包括在中枢车辆中的处理器2315执行。在一些实施例中,处理2400可以用于聚合车辆导航信息,以提供自主车辆道路导航模型或对模型的更新。
处理2400可以包括由服务器从多个车辆接收导航信息(步骤2405)。例如,服务器1230可以从车辆1205、1210、1215、1220和1225接收导航信息。来自沿着公共路段的多个车辆(例如,1205、1210、1215、1220和1225的车辆行驶)的导航信息可以与该公共路段(例如,路段1200)相关联。
处理2400还可以包括由服务器存储与公共路段相关联的导航信息(步骤2410)。例如,服务器1230可以将导航信息存储在存储设备2010和/或存储器2015中。
处理2400可以进一步包括由服务器基于来自多个车辆的导航信息来生成用于公共路段的自主车辆道路导航模型的至少一部分(步骤2415)。用于公共路的自主车辆道路导航模型可以包括沿着公共路段延伸的路面特征的至少一个线表示,并且每个线表示可以表示沿着与路面特征基本对应的公共路段路径。例如,路面特征可以包括道路边缘或车道标记。此外,可以通过对多个车辆穿行公共路段时获取的多个图像的图像分析来识别路面特征。例如,服务器1230可以基于从在公共路段1200上行驶的车辆1205、1210、1215、1220和1225接收的导航信息,来生成用于公共路段1200的自主车辆道路导航模型的至少一部分。
在一些实施例中,自主车辆道路导航模型可以被配置为叠加在地图、图像或卫星图像上。例如,模型可以叠加在由诸如
在一些实施例中,生成自主车辆道路导航模型的至少一部分可以包括基于对多个图像的图像分析来识别与公共路段相关联的多个地标。在某些方面,该分析可以包括当其中确实出现地标的图像与其中未出现地标的图像的比率超过阈值时接受潜在地标,和/或当其中未出现地标的图像与其中确实出现地标的图像的比率超过阈值时拒绝潜在地标。例如,如果潜在地标出现在来自车辆1210的数据中而不是在来自车辆1205、1215、1220和1225的数据中,则系统可确定1:5的比率是低于用于接受潜在地标的阈值。作为另一示例,如果潜在地标出现在来自车辆1205、1215、1220和1225的数据中而不是在来自车辆1210的数据中,则系统可确定4:5的比率是高于接受潜在地标的阈值。
处理2400可以进一步包括由服务器将自主车辆道路导航模型分发给一个或多个自主车辆,以用于沿着公共路段自主地导航一个或多个自主车辆(步骤2420)。例如,服务器1230可以将自主车辆道路导航模型或模型的一部分(例如,更新)分发到车辆1205、1210、1215、1220和1225,或者稍后在路段1200上行驶的任何其他车辆,以供沿着路段1200自主导航车辆使用。
处理2400可以包括额外的操作或步骤。例如,生成自主车辆道路导航模型可以包括将沿着路段1200从车辆1205、1210、1215、1220和1225接收的车辆轨迹聚类成多个群集,和/或将从车辆1205、1210、1215接收的数据对齐。如下文参考图29进一步详细讨论的那样,处理2400可以包括通过平均每个群集中的聚类车辆轨迹来确定沿着公共路段1200的目标轨迹。处理2400还可以包括将目标轨迹与公共路段1200的单个车道相关联。处理2400可以包括确定用以表示自主车辆道路导航模型中的目标轨迹的三维样条。
如上所述,服务器1230可以将生成的道路导航模型分发给一个或多个车辆。如上文详细描述的,道路导航模型可以包括在稀疏地图中。根据本公开的实施例,一个或多个车辆可以被配置为使用分布式稀疏地图进行自主导航。
图25是存储器140和/或150的示例性功能框图,其可以被存储/用指令编程,以用于执行与所公开的实施例一致的一个或多个操作。尽管以下涉及存储器140,但本领域技术人员将认识到指令可以存储在存储器140和/或150中。
如图25所示,存储器140可以存储稀疏地图模块2502、图像分析模块2504、路面特征模块2506和导航响应模块2508。所公开的实施例不限于存储器140的任何特定配置。此外,应用处理器180和/或图像处理器190可以执行存储在模块2502、2504、2506和2508中的任何模块中的指令,所述模块包括在存储器140中。本领域技术人员将理解以下对处理单元110的讨论中的附图标记可以单独地或共同地指代应用处理器180和图像处理器190。因此,任何以下处理的步骤可以由一个或多个处理设备执行。
在一个实施例中,稀疏地图模块2502可以存储指令,当由处理单元110执行时,接收(并且在一些实施例中,存储)由服务器1230分发的稀疏地图。稀疏地图模块2502可以在一个通信中接收整个稀疏地图,或可以接收稀疏地图的子部分,该子部分对应于车辆正在其中操作的区域。
在一个实施例中,图像分析模块2504可以存储指令(诸如计算机视觉软件),当由处理单元110执行时,该指令执行对图像捕捉设备122、124和126之一获取的一个或多个图像的分析。如下文进一步详细描述中,图像分析模块2504可以分析一个或多个图像,以确定车辆的当前位置。
在一个实施例中,路面特征模块2506可以存储指令,当由处理单元110执行时,所述指令识别由稀疏地图模块2502和/或由图像捕捉设备122、124和126之一获取的一个或多个图像中接收的稀疏地图中的路面特征。
在一个实施例中,导航响应模块2508可以存储可由处理单元110执行的软件,以基于从稀疏地图模块2502、图像分析模块2504和/或路面特征模块2506的执行导出的数据来确定期望的导航响应。
此外,本文公开的任何模块(例如,模块2502、2504和2506)可以实现与经训练的系统(诸如神经网络或深度神经网络)或未经训练的系统相关联的技术。
图26是示出用于沿着路段自主地导航车辆的示例性处理2600的流程图。处理2600可以由导航系统2300中包括的处理器2315执行。
处理2600可以包括接收稀疏地图模型(步骤2605)。例如,处理器2315可以从服务器1230接收稀疏地图。在一些实施例中,稀疏地图模型可以包括沿着路段延伸的路面特征的至少一个线表示,并且每个线表示可以表示沿着与路面特征基本对应的路段的路径。例如,道路特征可以包括道路边缘或车道标记。
处理2600可以进一步包括从相机接收代表车辆环境的至少一个图像(步骤2610)。例如,处理器2315可以从相机122接收至少一个图像。相机122可以捕捉车辆1205沿着路段1200行驶时车辆1205周围的环境的一个或多个图像。
处理2600还可以包括分析稀疏地图模型和从相机接收的至少一个图像(步骤2615)。例如,对稀疏地图模型和从相机接收的至少一个图像的分析可以包括确定车辆相对于沿着路段延伸的路面特征的至少一个线表示的纵向位置的当前位置。在一些实施例中,该确定可以基于至少一个图像中的至少一个识别的地标的标识。在一些实施例中,处理2600可以进一步包括基于车辆相对于纵向位置的预期位置和车辆相对于纵向位置的当前位置来确定估计的偏移。
处理2600可以进一步包括基于对稀疏地图模型和从相机接收的至少一个图像的分析来确定车辆的自主导航响应(步骤2620)。在处理器2315确定估计的偏移的实施例中,自主导航响应可以进一步基于估计的偏移。例如,如果处理器2315确定车辆从至少一个线表示向左偏移1米,则处理器2315可以使车辆向右移位(例如,通过改变车轮的方向)。作为另一示例,如果处理器2315确定所识别的地标偏离期望位置,则处理器2315可以使车辆移位以便将所识别的地标移向其预期位置。因此,在一些实施例中,处理2600可以进一步包括基于自主导航响应来调整车辆的操纵系统。
如上所述,众包稀疏地图的生成可以使用来自沿着公共路段的多个行程的数据。可以对齐该数据以便生成相干稀疏地图。如上面关于图14所讨论的,生成地图骨架可能不足以构造用于导航的样条。因此,本公开的实施例可以允许对齐从多个行程众包的数据。
图27示出了存储器2015的框图,其可以存储用于执行一个或多个操作的计算机代码或指令,所述操作用于生成用于自主车辆导航的道路导航模型。如图21所示,存储器2015可以存储用于执行用于处理车辆导航信息的操作的一个或多个模块。例如,存储器2015可以包括行程数据接收模块2705和纵向对齐模块2710。处理器2020可以执行存储在存储器2015中包括的模块2705和2710中的任何模块中的指令。
行程数据接收模块2705可以存储指令,当由处理器2020执行时,该指令可以控制通信设备2005从一个或多个车辆(例如,1205、1210、1215、1220和1225)接收行程数据。
纵向对齐模块2710可以存储指令,当由处理器2020执行时,对齐当数据基于从车辆1205、1210、1215、1220和1225接收的导航信息与公共路段(例如,路段1200)相关时使用行程数据接收模块2705接收的数据。例如,纵向对齐模块2710可以沿着片段对齐数据,这可以允许更容易地优化对齐必需的误差校正。在一些实施例中,纵向对齐模块2710可以进一步用置信度得分对每个片段对齐进行评分。
图28A示出了来自四个不同行程的原始定位数据的示例。在图28A的示例中,来自第一行程的原始数据被描绘为一系列星,来自第二行程的原始数据被描绘为一系列填充的正方形,来自第三行程的原始数据被描绘为一系列空心方块,第四个行程的原始数据被描述为一系列空心圆。如本领域技术人员将认识到的,形状仅仅是数据本身的说明,其可以存储为一系列坐标,无论是局部的还是全局的。
如在图28A中可以看到的,行程可以沿着相同的道路出现在不同的车道中(由线1200表示)。此外,图28A描绘了行程数据可以包括由于位置测量(例如,GPS)中的误差引起的差异,并且可能由于系统误差而存在丢失的数据点。最后,图28A还描绘了每个行程可以沿着道路在区段内的不同点处开始和结束。
图28B示出了来自五个不同行程的原始定位数据的另一示例。在图28B的示例中,来自第一行程的原始数据被描绘为一系列填充方块,来自第二行程的原始数据被描绘为一系列空心方块,来自第三行程的原始数据被描绘作为一系列空心圆,来自第四行程的原始数据被描绘为一系列星,而来自第五行程的原始数据被描绘为一系列三角形。如本领域技术人员将认识到的,形状仅仅是数据本身的说明,其可以存储为一系列坐标,无论是局部的还是全局的。
图28B示出了如图28A所示的行程数据的相似属性。图28B进一步描绘了可以通过跟踪第五行程远离其他行程的运动来检测交叉点。例如,图28B中的示例数据可以表明出口坡道存在于道路的右侧(由线1200表示)。图28B还描绘了如果数据在道路新的部分上开始,则可以检测到添加的车道。例如,图28B中的示例数据中的第四行程可以建议在检测到的出口坡道之后不久将第四车道添加到道路。
图28C示出了具有目标轨迹的原始定位数据的示例。例如,第一行程数据(由三角形表示)和第二行程数据(由空心方块表示)具有相关联的目标轨迹2810。类似地,第三行程数据(由空心圆圈表示)具有相关联的目标轨迹2820,并且第四行程数据(由填充方块表示)具有相关联的目标轨迹2830。
在一些实施例中,可以重建行程数据,使得一个目标轨迹与每个行程车道相关联,如图28C所示。如果执行行程数据的片段的适当对齐,则可以从一个或多个简单的平滑线模型生成这样的目标轨迹。下面讨论的处理2900是片段的适当对齐的一个示例。
图29是示出用于确定沿着路段延伸的路面特征的线表示的示例性处理2900的流程图。路面特征的线表示可以被配置在自主车辆导航中使用,例如,使用上图26的处理2600。处理2900可以由包括在中枢车辆中的服务器1230或处理器2315执行。
处理2900可以包括由服务器接收包括与路面特征相关联的位置信息的第一组行程数据(步骤2905)。可以基于对路段的图像的分析来确定位置信息,并且路面特征可以包括道路边缘或车道标记。
处理2900可以进一步包括由服务器接收包括与路面特征相关联的位置信息的第二组行程数据(步骤2910)。与步骤2905一样,可以基于对路段的图像的分析来确定位置信息,并且路面特征可以包括道路边缘或车道标记。步骤2905和2910可以在同时执行,或者在步骤2905和步骤2910之间可能存在时间经过,这取决于何时收集第一组行程数据和第二组行程数据。
处理2900还可以包括将第一组行程数据分段为第一行程片段,以及将第二组行程数据分段为第二行程片段(步骤2915)。片段可以由数据大小或行程长度定义。定义片段的所述大小或长度可以预定义为一个或多个值,或者可以用神经网络或其他机器技术来更新。例如,片段的长度可以预设为总是1km,或者当沿着道路以大于30千米/小时的速度行驶时可以预设为1km,并且当以不小于30千米/小时沿着道路行驶时可以预设为0.8km。替代地或同时地,机器学习分析可以基于诸如驾驶条件、驾驶速度等的多个因变量来优化片段的大小或长度。此外,在一些实施例中,路径可以由数据大小和行程长度来定义。
在一些实施例中,第一组数据和第二组数据可以包括位置信息,并且可以与多个地标相关联。在这样的实施例中,处理2900可以进一步包括基于一个或多个阈值确定是否接受或拒绝该组数据内的地标,如上文参考图19所述。
处理2900可以包括将第一组行程数据与相应片段内的第二组行程数据纵向对齐(步骤2920)。例如,纵向对齐可以包括选择第一组数据或第二组数据作为参考数据组,然后移位和/或弹性拉伸另一组数据以对齐组内的片段。在一些实施例中,对齐多组数据可以进一步包括对齐包括在两个集合中并与片段相关联的GPS数据。例如,可以调整具有集合的片段之间的连接,以更紧密地与GPS数据对齐。然而,在这样的实施例中,必须限制调整以防止GPS数据的限制破坏对齐。例如,GPS数据不是三维的,因此,当投影到道路的三维表示上时,可能产生不自然的扭曲和斜坡。
处理2900可以进一步包括基于第一和第二行程片段中纵向对齐的第一和第二行程数据来确定路面特征的线表示(步骤2925)。例如,可以使用对齐数据上的平滑线模型来构造线表示。在一些实施例中,确定线表示可以包括基于作为第一组行程数据或第二组行程数据中的至少一个的一部分获取的GPS数据,将线表示与全局坐标对齐。例如,第一组数据和/或第二组数据可以用局部坐标表示;然而,使用平滑线模型要求两组具有相同的坐标轴。因此,在某些方面,可以调整第一组数据和/或第二组数据以具有彼此相同的坐标轴。
在一些实施例中,确定线表示可以包括确定和应用一组平均变换。例如,每个平均变换可以基于来自跨越顺序片段的第一组行程数据的链接数据和来自跨越顺序片段的第二组行程数据的链接数据确定的变换。
处理2900可以包括额外的操作或步骤。例如,处理2900可以进一步包括将路面特征的线表示覆盖在至少一个地理图像上。例如,地理图像可以是卫星图像。作为另一示例,处理2900可以进一步包括基于所确定的线表示和纵向对齐来滤除出现错误的地标信息和/或行程数据。这种过滤在概念上可以类似于基于一个或多个阈值可能拒绝的地标,如上文参考图19所述。
除了众包地标和线表示以便生成稀疏地图之外,所公开的系统和方法也可以众包路面信息。因此,道路状况可以与用于自主车辆的导航的稀疏地图一起存储和/或存储在稀疏地图内。
图30是存储器140和/或150的示例性功能框图,其可以被存储/用指令编程,以用于执行与所公开的实施例一致的一个或多个操作。尽管以下涉及存储器140,但是本领域技术人员将认识到指令可以存储在存储器140和/或150中。
如图30所示,存储器140可以存储图像接收模块3002、路面特征模块3004、定位确定模块3006和导航响应模块3008。所公开的实施例不限于存储器140的任何特定配置。此外,应用处理器180和/或图像处理器190可以执行存储在模块3002、3004、3006和3008中的任何模块中的指令,所述模块包括在存储器140中。本领域技术人员将理解以下对处理单元110的讨论中的附图标记可以单独地或共同地指代应用处理器180和图像处理器190。因此,任何以下过程的步骤可以由一个或多个处理设备执行。
在一个实施例中,图像接收模块3002可以存储指令,当由处理单元110执行时,所述指令接收(并且在一些实施例中,存储)由图像捕捉设备122、124和126之一获取的图像。
在一个实施例中,路面特征模块3004可以存储指令(诸如计算机视觉软件),当由处理单元110执行时,所述指令执行对图像捕捉设备122、124和126之一获取的一个或多个图像的分析,并识别路面特征。例如,路面特征可包括道路边缘或车道标记。
在一个实施例中,定位确定模块3006可以存储指令(诸如GPS软件或视觉测距软件),其在由处理单元110执行时接收与车辆有关的定位信息。例如,定位确定模块3006可以接收包括车辆位置的GPS数据和/或自我运动数据。在一些实施例中,定位确定模块3006可以使用所接收的信息计算一个或多个定位。例如,定位确定模块3006可以接收由图像捕捉设备122、124和126之一获取的一个或多个图像,并使用图像的分析来确定车辆的定位。
在一个实施例中,导航响应模块3008可以存储可由处理单元110执行的软件,以基于从图像接收模块3002、路面特征模块3004和/或定位确定模块3006的执行导出的数据来确定期望的导航响应。
此外,本文公开的任何模块(例如,模块3002、3004和3006)可以实现与经训练的系统(诸如神经网络或深度神经网络)或未经训练的系统相关联的技术。
图31是示出用于收集路段的路面信息的示例性处理3100的流程图。处理3100可以由导航系统2300中包括的处理器2315执行。
处理3100可以包括从相机接收代表路段的一部分的至少一个图像(步骤3105)。例如,处理器2315可以从相机122接收至少一个图像。相机122可以捕捉车辆1205沿着路段1200行驶时车辆1205周围的环境的一个或多个图像。
处理3100可以进一步包括在所述至少一个图像中沿着所述路段的所述部分识别至少一个路面特征(步骤3010)。例如,至少一个路面特征可以包括道路边缘或者可以包括车道标记。
处理3100还可以包括根据车辆的局部坐标系确定与路面特征相关联的多个位置(步骤3115)。例如,处理器2315可以使用自动运动数据和/或GPS数据来确定多个位置。
处理3100还可以包括将确定的多个位置从车辆传输到服务器(步骤3120)。例如,所确定的定位可以被配置为使得能够由服务器确定沿着路段延伸的路面特征的线表示,如上文参考图29所描述的。在一些实施例中,线表示可以表示沿着与路面特征基本对应的路段的路径。
处理3100可以包括额外的操作或步骤。例如,处理3100可以进一步包括从服务器接收线表示。在该示例中,处理器2315可以接收线表示作为接收的稀疏地图的一部分,例如,根据图24的处理2400和/或图26的处理2600。作为另一示例,处理2900可以进一步包括:在至少一个地理图像上覆盖路面特征的线表示。例如,地理图像可以是卫星图像。
如上面关于地标的众包所解释的,在一些实施例中,服务器可以实现用于决定接受还是拒绝从车辆接收的可能的路面特征的选择标准。例如,当其中确实出现路面特征的定位集与其中未出现路面特征的定位集的比率超过阈值,服务器可以接受路面特征,和/或当其中未出现路面特征的定位集与其中确实出现路面特征的定位集的比率超过阈值时,服务器拒绝可能的路面特征。
在一些实施例中,所公开的系统和方法可以使用稀疏地图进行自主车辆导航。特别地,稀疏地图可以用于沿着路段的自主车辆导航。例如,稀疏地图可以提供足够用于导航自主车辆的信息,而无需存储和/或更新大量数据。如下文进一步详细讨论的,自主车辆可以使用稀疏地图基于一个或多个存储的轨迹来导航一个或多个道路。
如上所述,自动驾驶车辆可以基于地标之间的航位推算来导航。然而,在导航期间通过航位推算可能累积误差,因此相对于目标轨迹的位置确定可能随时间变得越发不准确。如下文所解释的,车道标记可以用于在地标间隔期间车辆的定位,这可以最小化航位推算在导航期间的误差的累积。
例如,样条可以表示为以下公式1所示:
公式1
在公式1的示例中,B(u)是表示样条的曲线,b
公式2
在公式2的示例中,
在一些实施例中,可以使用以下公式3来确定表示车辆的路径的局部曲线:
H
公式3
在公式3的示例中,f是相机的焦距,B
H′(u)=y
公式4
基于公式1,公式4中的B′
公式5
例如,公式5可以通过基于牛顿-拉普森(Newton-Raphson)的求解器求解。在某些方面,求解器可以运行五个或更少的步骤。为了求解x,在一些实施例中,可以使用以下公式6:
公式6
在一些实施例中,可以使用轨迹的导数。例如,导数可以由以下公式7给出:
公式7
在公式7的示例中,X
为了求解公式7,在一些实施例中,可以使用以下公式8:
公式8
为了求解公式8,在一些实施例中,可以使用隐式微分来获得以下公式9和10:
公式9和10
使用公式9和10,可以获得轨迹的导数。然后,在一些实施例中,扩展卡尔曼滤波器可用于定位车道测量。通过定位车道测量,如上所述,车道标记可以用于通过航位推算在航行期间最小化误差的累积。车道标记的使用在下文参考图32-35进一步详细描述。
图32是存储器140和/或150的示例性功能框图,其可以被存储/用指令编程,以用于执行与所公开的实施例一致的一个或多个操作。尽管以下涉及存储器140,但是本领域技术人员将认识到指令可以存储在存储器140和/或150中。
如图32所示,存储器140可以存储位置确定模块3202、图像分析模块3204、距离确定模块3206和偏移确定模块3208。所公开的实施例不限于存储器140的任何特定配置。应用处理器180和/或图像处理器190可以执行存储在模块3202、3204、3206和3208中的任何模块中的指令,所述模块包括在存储器140中。本领域技术人员将理解,在以下对处理单元110的讨论中的附图标记可以单独地或共同地指代应用处理器180和图像处理器190。因此,任何以下过程的步骤可以由一个或多个处理设备执行。
在一个实施例中,位置确定模块3202可以存储指令(诸如GPS软件或视觉测距软件),其在由处理单元110执行时接收与车辆有关的定位信息。例如,位置确定模块3202可以接收包括车辆位置的GPS数据和/或自动运动数据。在一些实施例中,位置确定模块3202可以使用所接收的信息来计算一个或多个定位。例如,位置确定模块3202可以接收由图像捕捉设备122、124和126之一获取的一个或多个图像,并使用图像的分析来确定车辆的定位。
位置确定模块3202还可以使用其他导航传感器来确定车辆的位置。例如,速度传感器或加速度计可以向位置确定模块3202发送信息,以用于计算车辆的位置。
在一个实施例中,图像分析模块3204可以存储指令(诸如计算机视觉软件),当由处理单元110执行时,该指令执行对图像捕捉设备122、124和126之一获取的一个或多个图像的分析。在下面进一步详细描述中,图像分析模块3204可以分析一个或多个图像,以识别至少一个车道标记。
在一个实施例中,距离确定模块3206可以存储指令,当由处理单元110执行时,所述指令执行对图像捕捉设备122、124和126之一获取的一个或多个图像的分析,并确定从车辆到由图像分析模块3204识别的车道标记的距离。
在一个实施例中,偏移确定模块3208可以存储可由处理单元110执行的软件,以确定车辆与道路模型轨迹的估计偏移。例如,偏移确定模块3208可以使用由距离确定模块3206确定的距离来计算估计的偏移。然后基于从位置确定模块3202、图像分析模块3204、距离确定模块3206和/或偏移确定模块3208的执行导出的数据,可以确定期望的导航响应。
此外,本文公开的任何模块(例如,模块3202、3204和3206)可以实现与经训练的系统(诸如神经网络或深度神经网络)或未经训练的系统相关联的技术。
图33A示出了在不使用车道标记的情况下通过航位推算导航的车辆的示例。在图33A的示例中,车辆沿轨迹3310导航,但不使用车道标记(例如,标记3320A或3320B)进行导航。
图33B示出了在350m之后的图33A的示例。如图33B所示,由于航位推算误差累积,车辆的轨迹3310未完全与车道标记(例如,标记3320A或3320B)对齐。
图33C示出了1km之后的图33A和33B的示例。如图33C所示,地标的预期位置3330A未与地标的实际位置3330B对齐。尽管车辆现在可以使用地标来校正在1km的过程中累积的航位推算误差,但是本公开的系统和方法可以允许使用车道标记来最小化地标之间的航位推算误差累积。
图34A示出了通过具有车道标记的航位推算导航的车辆的示例。在图34A的示例中,车辆沿着轨迹3410导航并且还识别车道标记(例如,标记3420A和3420B)以定位和用于导航。
图34B示出了350m之后的图34A的示例。如图34B所示,车辆的轨迹3410基本上与车道标记(例如,标记3420A和3420B)对齐,因为车辆已使用所识别的车道标记校正航位推测误差。
图34C示出了1km之后的图34A和34B的示例。如图34C所示,地标的预期位置3430A基本上与地标的实际位置3430B对齐。因此,在遇到地标时,图34C中的车辆可以进行比图33C的车辆小得多的校正。下面讨论的图35的处理3500是车辆可以使用车道标记进行导航的示例性处理,如图34A-34C所示。
图35是示出用于校正导航路段的车辆的位置的示例性处理3500的流程图。处理3500可以由导航系统2300中包括的处理器2315执行。
处理3500可以包括基于至少一个导航传感器的输出确定车辆沿预定道路模型轨迹的测量位置(步骤3505)。例如,预定道路模型轨迹可以与路段相关联,并且在一些实施例中,预定道路模型轨迹可以包括沿着路段的目标轨迹的三维多项式表示。至少一个导航传感器可以例如包括速度传感器或加速度计。
处理3500可以进一步包括从图像捕捉设备接收表示车辆环境的至少一个图像(步骤3510)。例如,处理器2315可以从相机122接收至少一个图像。相机122可以捕捉车辆1205沿着路段1200行驶时车辆1205周围的环境的一个或多个图像。
处理3500还可以包括分析至少一个图像以识别至少一个车道标记。至少一个车道标记可以与沿着路段的行驶车道相关联。处理3500可以进一步包括基于至少一个图像确定从车辆到至少一个车道标记的距离。例如,可以使用各种用于计算图像中的对象的距离的已知算法。
处理3500可以包括基于测量的车辆位置和确定的距离来确定车辆与预定道路模型轨迹的估计偏移。在一些实施例中,确定估计的偏移可以进一步包括基于到至少一个车道标记的距离,来确定车辆是否在将与所述至少一个车道标记相交的轨迹上。替代地或同时地,在一些实施例中,确定估计的偏移可以进一步包括基于到所述至少一个车道标记的距离,来确定车辆是否在所述至少一个车道标记的预定阈值内。
处理3500可以进一步包括基于估计的偏移确定车辆的自主操纵动作来校正车辆的位置。例如,在实施例中,其中估计的偏移包括确定车辆是否在将与至少一个车道标记相交的轨迹上和/或车辆是否在至少一个车道标记的预定阈值内,处理器2315可以确定自主操纵动作来防止车辆轨迹与至少一个车道标记的交叉和/或使车辆与车道标记之间的距离低于预定阈值。
在一些实施例中,确定自主操纵动作还可包括求解预定道路模型轨迹的至少一个导数。例如,可以使用上面讨论的扩展卡尔曼滤波器来计算轨迹的导数。
处理3500可以包括额外的操作或步骤。例如,处理3500可以进一步包括基于自主操纵动作调整车辆的操纵系统。
已经出于说明的目的呈现了前面的描述。其并非详尽无遗,并且不限于所公开的精确形式或实施例。考虑到所公开实施例的说明书和实践,修改和调整对于本领域技术人员而言将是显而易见的。另外,尽管所公开的实施例的各方面被描述为存储在存储器中,但是本领域技术人员将理解,这些方面也可以存储在其他类型的计算机可读介质上,诸如辅助存储设备,例如,硬盘或CD ROM,或其他形式的RAM或ROM、USB介质、DVD、蓝光、4K超高清蓝光或其他光驱介质。
基于书面描述和公开的方法的计算机程序在有经验的开发者的技能范围内。可以使用本领域技术人员已知的任何技术来创建各种程序或程序模块,或者可以结合现有软件来设计各种程序或程序模块。例如,程序部分或程序模块可以在.Net Framework、.NetCompact Framework(以及相关语言,如Visual Basic、C等)、Java、C++、Objective-C、HTML、HTML/AJAX组合、XML或包含Java小程序的HTML中设计或通过它们设计。
此外,虽然本文已经描述了说明性实施例,但是具有等效的元件、修改、省略、组合(例如,跨各种实施例的方面)、调整和/或改变的任何和所有实施例的范围,如本领域技术人员基于本公开的技术将理解的。权利要求中的限制将基于权利要求中采用的语言广泛地解释,并且不限于本说明书中或在申请的审查期间描述的示例。这些示例应被解释为非排他性的。此外,可以以任何方式修改所公开方法的步骤,包括通过重新排序步骤和/或插入或删除步骤。因此,其意图是说明书和示例仅被认为是说明性的,真正的范围和精神由所附权利要求及其等同物的全部范围表示。
- 用于自主车辆导航的众包和分发稀疏地图以及车道测量
- 用于自主车辆导航的众包和分发稀疏地图以及车道测量