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

用于车辆导航的系统和方法

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


用于车辆导航的系统和方法

本申请是申请日为2020年12月31日,申请号为202080098146.8(国际申请号为PCT/US2020/067753),发明名称为“用于车辆导航的系统和方法”的发明专利申请的分案申请。

技术领域

本公开一般涉及自主车辆导航。

背景技术

随着技术的不断进步,能够在道路上导航的完全自主车辆的目标即将到来。自主车辆可能需要考虑各种因素,并基于这些因素做出适当的决策,以安全且准确地到达意图目的地。例如,自主车辆可能需要处理和解释视觉信息(例如,从相机捕获的信息),并且还可能使用从其他源(例如,从GPS单元、速率(speed)传感器、加速度计、悬架(suspension)传感器等)获得的信息。同时,为了导航到目的地,自主车辆可能还需要识别其在特定道路内的位置(例如,多车道道路内的特定车道)、在其他车辆旁边导航、避开障碍物和行人、观察交通信号和标志、并在适当的交叉路口或立体交叉道处从一条道路行驶到另一条道路。当车辆行驶到其目的地时,利用和解释由自主车辆收集的海量信息引起了众多设计挑战。自主车辆可能需要分析、访问和/或存储的庞大数量的数据(例如,捕获的图像数据、地图数据、GPS数据、传感器数据等)引起了事实上可能限制或者甚至不利影响自主导航的挑战。此外,如果自主车辆依赖于传统的绘图(mapping)技术来导航,那么存储和更新地图所需的庞大数量的数据会引起令人生畏的挑战。

发明内容

与本公开一致的实施例提供用于自主车辆导航的系统和方法。公开的实施例可以使用相机来提供自主车辆导航特征。例如,与公开的实施例一致,公开的系统可以包括监视车辆的环境的一个、两个或更多相机。公开的系统可以基于例如由一个或多个相机捕获的图像的分析来提供导航响应。

在实施例中,一种用于主车辆的导航系统,包括至少一个处理器,该至少一个处理器被编程为确定主车辆的自我运动的至少一个指示符。该至少一个处理器还可以被编程为从与主车辆相关联的LIDAR系统并基于LIDAR系统的视场的第一LIDAR扫描接收第一点云,第一点云包括对象的至少一部分的第一表示。该至少一个处理器还可以被编程为从与主车辆相关联的LIDAR系统并基于LIDAR系统的视场的第一LIDAR扫描接收第一点云,该第一点云包括对象的至少一部分的第一表示。该至少一个处理器还可以被编程为从LIDAR系统并且基于LIDAR系统的视场的第二LIDAR扫描接收第二点云,该第二点云包括对象的至少一部分的第二表示。该至少一个处理器还可以被编程为基于主车辆的自我运动的至少一个指示符、以及基于包括对象的至少一部分的第一表示的第一点云与包括对象的至少一部分的第二表示的第二点云的比较,来确定对象的速度。

在实施例中,一种用于检测主车辆的环境中的对象的方法可以包括确定主车辆的自我运动的至少一个指示符。该方法还可以包括从与主车辆相关联的LIDAR系统并基于LIDAR系统的视场的第一LIDAR扫描接收第一点云,该第一点云包括对象的至少一部分的第一表示。该方法还可以包括从LIDAR系统并且基于LIDAR系统的视场的第二LIDAR扫描接收第二点云,该第二点云包括对象的至少一部分的第二表示。该方法还可以包括基于主车辆的自我运动的至少一个指示符、以及基于包括对象的至少一部分的第一表示的第一点云与包括对象的至少一部分的第二表示的第二点云的比较,来确定对象的速度。

在实施例中,一种用于主车辆的导航系统可以包括至少一个处理器,该至少一个处理器被编程为从位于相对于车辆的远处的实体接收与车辆要穿越的至少一个道路段相关联的稀疏地图。稀疏地图可以包括多个绘图(map)的导航地标和至少一个目标轨迹。多个绘图的导航地标和至少一个目标轨迹二者可以基于从先前沿着至少一个道路段行驶的多个车辆收集的驾驶信息来生成。至少一个处理器还可以被编程为从车辆车载的激光检测和测距(lidar)系统接收点云信息。点云信息可以表示到车辆的环境中的各种对象的距离。该至少一个处理器还可以被编程为将接收的点云信息与稀疏地图中的多个绘图的导航地标中的至少一个绘图的导航地标进行比较,以提供车辆相对于至少一个目标轨迹的、基于激光检测和测距的定位。该至少一个处理器还可以被编程为基于车辆相对于至少一个目标轨迹的、基于激光检测和测距的定位来确定车辆的至少一个导航动作。至少一个处理器还可以被编程为引起车辆采取至少一个导航动作。

在实施例中,一种用于控制主车辆的导航系统的方法可以包括从位于相对于车辆的远处的实体接收与车辆要穿越的至少一个道路段相关联的稀疏地图。稀疏地图可以包括多个绘图的导航地标和至少一个目标轨迹。多个绘图的导航地标和至少一个目标轨迹二者可以基于从先前沿着至少一个道路段行驶的多个车辆收集的驾驶信息来生成。该方法还可以包括从车辆车载的激光检测和测距(lidar)系统接收点云信息。点云信息表示到车辆的环境中的各种对象的距离。该方法还可以包括将接收的点云信息与稀疏地图中的多个绘图的导航地标中的至少一个绘图的导航地标进行比较,以提供车辆相对于至少一个目标轨迹的、基于激光检测和测距的定位。该方法还可以包括基于车辆相对于至少一个目标轨迹的、基于激光检测和测距的定位来确定车辆的至少一个导航动作。该方法还可以包括引起车辆采取至少一个导航动作。

在实施例中,一种用于主车辆的导航系统可以包括至少一个处理器,该至少一个处理器被编程为从主车辆车载的相机接收表示主车辆的环境的至少一个捕获的图像。该至少一个处理器还可以被编程为从主车辆车载的LIDAR系统接收点云信息。该点云信息可以表示到主车辆的环境中的各种对象的距离。该至少一个处理器还可以被编程为将点云信息与至少一个捕获的图像相关,以提供至少一个捕获的图像的一个或多个区域的每个像素的深度信息。该至少一个处理器还可以被编程为基于至少一个捕获的图像的一个或多个区域的每个像素的深度信息来确定主车辆的至少一个导航动作,并引起主车辆采取至少一个导航动作。

在实施例中,一种用于确定主车辆的导航动作的方法可以包括从主车辆车载的LIDAR系统接收点云信息。点云信息可以表示到主车辆的环境中的多个对象的距离。该方法还可以包括将点云信息与至少一个捕获的图像相关,以提供至少一个捕获的图像的一个或多个区域的每个像素的深度信息。该方法还可以包括基于至少一个捕获的图像的一个或多个区域的每个像素的深度信息来确定主车辆的至少一个导航动作,并引起主车辆采取至少一个导航动作。

在实施例中,一种用于主车辆的导航系统可以包括至少一个处理器,该至少一个处理器被编程为从主车辆车载的相机接收表示主车辆的环境的至少一个捕获的图像。相机可以相对于主车辆定位在第一位置处。该至少一个处理器还可以被编程为从主车辆车载的光检测和测距(LIDAR)系统接收点云信息。该点云信息可以表示到主车辆的环境中的各种对象的距离。LIDAR系统可以相对于主车辆定位在第二位置处,并且第二位置可以不同于第一位置。相机的视场可以至少部分地与LIDAR系统的视场重叠,以提供共享的视场区域。该至少一个处理器还可以被编程为分析至少一个捕获的图像和接收的点云信息以检测共享的视场区域中的一个或多个对象。检测的一个或多个对象可以仅在至少一个捕获的图像或接收的点云信息中的一个中被表示。该至少一个处理器还可以被编程为确定相机的第一位置和LIDAR系统的第二位置之间的有利点差异是否考虑了一个或多个检测的对象仅在至少一个捕获的图像或接收的点云信息中的一个中被表示。该至少一个处理器可以被编程为:如果有利点差异未考虑一个或多个检测的对象仅在至少一个捕获的图像或接收的点云信息中的一个中被表示,则引起采取至少一个补救动作。该至少一个处理器可以被编程为:如果有利点差异确实考虑了一个或多个检测的对象仅在至少一个捕获的图像或接收的点云信息中的一个中被表示,则基于一个或多个检测的对象来确定主车辆要采取的至少一个导航动作,并且引起主车辆采取至少一个导航动作。

在实施例中,一种用于确定主车辆的导航动作的方法可以包括从主车辆车载的相机接收表示主车辆的环境的至少一个捕获的图像。相机可以相对于主车辆定位在第一位置处。该方法还可以包括从主车辆车载的光检测和测距(LIDAR)系统接收点云信息。该点云信息可以表示到主车辆的环境中的各种对象的距离。LIDAR系统可以相对于主车辆定位在第二位置处,并且第二位置可以不同于第一位置。相机的视场可以至少部分地与LIDAR系统的视场重叠,以提供共享的视场区域。该方法还可以包括分析至少一个捕获的图像和接收的点云信息,以检测共享的视场区域中的一个或多个对象。检测的一个或多个对象可以仅在至少一个捕获的图像或接收的点云信息中的一个中被表示。该方法还可以包括确定相机的第一位置和LIDAR系统的第二位置之间的有利点差异是否考虑了一个或多个检测的对象仅在至少一个捕获的图像或接收的点云信息中的一个中被表示。该方法还可以包括:如果有利点差异未考虑一个或多个检测的对象仅在至少一个捕获的图像或接收的点云信息中的一个中被表示,则引起采取至少一个补救动作。该方法还可以包括:如果有利点差异确实考虑了一个或多个检测的对象仅在至少一个捕获的图像或接收的点云信息中的一个中被表示,则基于一个或多个检测的对象确定要由主车辆采取的至少一个导航动作,并且引起主车辆采取至少一个导航动作。

在实施例中,一种用于主车辆的导航系统可以包括至少一个处理器,该至少一个处理器被编程为从主车辆车载的中心相机接收包括主车辆的环境的至少一部分的表示的至少一个捕获的中心图像,从主车辆车载的左环绕相机接收包括主车辆的环境的至少一部分的表示的至少一个捕获的左环绕图像,并且从主车辆车载的右环绕相机接收包括主车辆的环境的至少一部分的表示的至少一个捕获的右环绕图像。中心相机的视场可以至少部分地与左环绕相机的视场和右环绕相机的视场两者重叠。该至少一个处理器还可以被编程为将至少一个捕获的中心图像、至少一个捕获的左环绕图像和至少一个捕获的右环绕图像提供给分析模块,该分析模块被配置为基于至少一个捕获的中心图像、至少一个捕获的左环绕图像和至少一个捕获的右环绕图像的分析来生成关于至少一个捕获的中心图像的输出。生成的输出包括捕获的中心图像的至少一个区域的每个像素的深度信息。该至少一个处理器还可以被编程为基于包括捕获的中心图像的至少一个区域的每个像素的深度信息的生成的输出,引起主车辆的至少一个导航动作。

在实施例中,一种用于确定主车辆的导航动作的方法可以包括从主车辆车载的中心相机接收包括主车辆的环境的至少一部分的表示的至少一个捕获的中心图像,从主车辆车载的左环绕相机接收包括主车辆的环境的至少一部分的表示的至少一个捕获的左环绕图像,并且从主车辆车载的右环绕相机接收包括主车辆的环境的至少一部分的表示的至少一个捕获的右环绕图像。中心相机的视场至少部分地与左环绕相机的视场和右环绕相机的视场两者重叠。该方法还可以包括将至少一个捕获的中心图像、至少一个捕获的左环绕图像和至少一个捕获的右环绕图像提供给分析模块,该分析模块被配置为基于至少一个捕获的中心图像、至少一个捕获的左环绕图像和至少一个捕获的右环绕图像的分析来生成关于至少一个捕获的中心图像的输出。生成的输出包括捕获的中心图像的至少一个区域的每个像素的深度信息。该方法还可以包括基于包括捕获的中心图像的至少一个区域的每个像素的深度信息的生成的输出,引起主车辆的至少一个导航动作。

在实施例中,一种用于主车辆的导航系统可以包括至少一个处理器,该至少一个处理器被编程为:从主车辆车载的中心相机接收包括主车辆的环境的至少一部分的表示的至少一个捕获的中心图像,从主车辆车载的左环绕相机接收包括主车辆的环境的至少一部分的表示的至少一个捕获的左环绕图像,并且从主车辆车载的右环绕相机接收包括主车辆的环境的至少一部分的表示的至少一个捕获的右环绕图像,其中,中心相机的视场至少部分地与左环绕相机的视场和右环绕相机的视场两者重叠;将至少一个捕获的中心图像、至少一个捕获的左环绕图像和至少一个捕获的右环绕图像提供给分析模块,分析模块被配置为基于至少一个捕获的中心图像、至少一个捕获的左环绕图像和至少一个捕获的右环绕图像的分析来生成关于至少一个捕获的中心图像的输出,其中,生成的输出包括捕获的中心图像的至少一个区域的每个像素的深度信息;以及基于包括捕获的中心图像的至少一个区域的每个像素的深度信息的生成的输出,引起主车辆的至少一个导航动作。分析模块包括基于训练数据而被训练的至少一个经训练的模型,训练数据包括由具有至少部分重叠的场的相机捕获的多个图像和与多个图像中的至少一些图像对应的光检测和测距LIDAR点云信息的组合。

与其他公开的实施例一致的非暂时性计算机可读存储介质可以存储程序指令,该程序指令由至少一个处理设备执行并且执行本文描述的任何方法。

前述一般描述和以下详细描述仅是示例性和解释性的,而不是对权利要求的限制。

附图说明

结合在本公开中并构成本公开的一部分的附图示出了各种公开的实施例。在附图中:

图1是与公开的实施例一致的示例性系统的图解表示。

图2A是与公开的实施例一致的、包括系统的示例性车辆的图解侧视图表示。

图2B是与公开的实施例一致的、图2A中示出的车辆和系统的图解顶视图表示。

图2C是与公开的实施例一致的、包括系统的车辆的另一个实施例的图解顶视图表示。

图2D是与公开的实施例一致的、包括系统的车辆的又一实施例的图解顶视图表示。

图2E是与公开的实施例一致的、包括系统的车辆的又一实施例的图解顶视图表示。

图2F是与公开的实施例一致的示例性车辆控制系统的图解表示。

图3A是与公开的实施例一致的、包括用于车辆成像系统的用户接口和后视镜的车辆的内部的图解表示。

图3B是与公开的实施例一致的、被配置为定位在后视镜后面并抵靠车辆风挡的相机底座的示例的图示。

图3C是与公开的实施例一致的、来自不同视角的图3B中示出的相机底座的图示。

图3D是与公开的实施例一致的、被配置为定位在后视镜后面并抵靠车辆风挡的相机底座的示例的图示。

图4是与公开的实施例一致的、被配置为存储用于执行一个或多个操作的指令的存储器的示例性框图。

图5A是示出了与公开的实施例一致的、用于基于单目图像分析引起一个或多个导航响应的示例性过程的流程图。

图5B是示出了与公开的实施例一致的、用于检测图像的集合中的一个或多个车辆和/行人的示例性过程的流程图。

图5C是示出了与公开的实施例一致的、用于检测图像的集合中的道路标记和/或车道几何结构信息的示例性过程的流程图。

图5D是示出了与公开的实施例一致的、用于检测图像的集合中的交通灯的示例性过程的流程图。

图5E是示出了与公开的实施例一致的、用于基于车辆路径引起一个或多个导航响应的示例性过程的流程图。

图5F是示出了与公开的实施例一致的、用于确定居前(leading)车辆是否正在改变车道的示例性过程的流程图。

图6是示出了与公开的实施例一致的、用于基于立体图像分析引起一个或多个导航响应的示例性过程的流程图。

图7是示出了与公开的实施例一致的、用于基于对三个图像的集合的分析引起一个或多个导航响应的示例性过程的流程图。

图8示出了与公开的实施例一致的用于提供自主车辆导航的稀疏地图。

图9A示出了与公开的实施例一致的道路段的一部分的多项式表示。

图9B示出了与公开的实施例一致的、稀疏地图中包括的、针对特定道路段的、表示车辆的目标轨迹的三维空间中的曲线。

图10示出了与公开的实施例一致的、可以包括在稀疏地图中的示例地标。

图11A示出了与公开的实施例一致的轨迹的多项式表示。

图11B和图11C示出了与公开的实施例一致的沿着多车道道路的目标轨迹。

图11D示出了与公开的实施例一致的示例道路签名(signature)简档(profile)。

图12是与公开的实施例一致的、使用从多个车辆接收的众包(crowd sourcing)数据的、用于自主车辆导航的系统的示意性图示。

图13示出了与公开的实施例一致的、由多个三维样条表示的示例自主车辆道路导航模型。

图14示出了与公开的实施例一致的、从组合来自许多驾驶的位置信息生成的地图骨架。

图15示出了与公开的实施例一致的、具有作为地标的示例标志的两个驾驶的纵向对准的示例。

图16示出了与公开的实施例一致的、具有作为地标的示例标志的许多驾驶的纵向对准的示例。

图17是与公开的实施例一致的、用于使用相机、车辆和服务器生成驾驶数据的系统的示意性图示。

图18是与公开的实施例一致的、用于众包稀疏地图的系统的示意性图示。

图19是示出了与公开的实施例一致的、用于生成用于沿道路段的自主车辆导航的稀疏地图的示例性过程的流程图。

图20示出了与公开的实施例一致的服务器的框图。

图21示出了与公开的实施例一致的存储器的框图。

图22示出了与公开的实施例一致的、对与车辆相关联的车辆轨迹进行聚类的过程。

图23示出了与公开的实施例一致的、可以用于自主导航的、车辆的导航系统。

图24A、图24B、图24C和图24D示出了与公开的实施例一致的、可以检测的示例性车道标记。

图24E示出了与公开的实施例一致的示例性绘图的车道标记。

图24F示出了与公开的实施例一致的、与检测车道标记相关联的示例性异常。

图25A示出了与公开的实施例一致的、用于基于绘图的车道标记的导航的车辆周围环境的示例性图像。

图25B示出了与公开的实施例一致的道路导航模型中基于绘图的车道标记的车辆的横向定位校正。

图25C和图25D提供了用于使用包括在稀疏地图中的绘图的特征沿着目标轨迹定位主车辆的定位技术的概念表示。

图26A是示出了与公开的实施例一致的、用于绘图车道标记以用于自主车辆导航的示例性过程的流程图。

图26B是示出了与公开的实施例一致的、用于使用绘图的车道标记沿着道路段自主导航主车辆的示例性过程的流程图。

图27示出了与公开的实施例一致的、用于确定对象的速度的示例性系统。

图28示出了与公开的实施例一致的示例性服务器。

图29示出了与公开的实施例一致的示例性车辆。

图30A示出了与公开的实施例一致的、与导航系统相关联的视场中的示例性对象。

图30B示出了与公开的实施例一致的、与导航系统相关联的视场中的示例性对象。

图31是示出了与公开的实施例一致的用于确定对象的速度(velocity)的示例性过程的流程图。

图32示出了与公开的实施例一致的、用于确定主车辆的导航动作的示例性系统。

图33示出了与公开的实施例一致的示例性服务器。

图34示出了与公开的实施例一致的示例性车辆。

图35A示出了与公开的实施例一致的示例性道路段。

图35B示出了与公开的实施例一致的、与示例性道路段相关联的示例性稀疏地图。

图35C示出了与公开的实施例一致的示例性道路段。

图36是示出了与公开的实施例一致的、用于确定主车辆的导航动作的示例性过程的流程图。

图37示出了与公开的实施例一致的示例性车辆。

图38是示出了与公开的实施例一致的、用于确定主车辆的导航动作的示例性过程的流程图。

图39A和图39B示出了与公开的实施例一致的示例性点云信息和图像。

图40示出了与公开的实施例一致的示例性车辆。

图41是示出了与公开的实施例一致的、用于确定主车辆的导航动作的示例性过程的流程图。

图42示出了与公开的实施例一致的示例性环境中的主车辆。

图43示出了与公开的实施例一致的示例性车辆。

图44示出了与公开的实施例一致的示例性车辆。

图45是示出了与公开的实施例一致的用于确定主车辆的导航动作的示例性过程的流程图。

具体实施方式

以下详细描述参考附图。在任何可能的情况下,在附图和以下描述中使用相同的附图标记来指代相同或相似的部分。虽然本文描述了几个说明性实施例,但是修改、调整和其他实施方式是可能的。例如,可以对附图中所示出的组件进行替换、添加或修改,并且可以通过对公开的方法进行替换、重新排序、移除或添加步骤来修改本文描述的说明性方法。因此,以下详细描述不限于公开的实施例和示例。相反,适当的范围由所附权利要求限定。

自主车辆概述

如贯穿本公开所使用的,术语“自主车辆”指代能够在没有驾驶员输入的情况下实现至少一个导航改变的车辆。“导航改变”指代车辆的转向、制动或加速中的一个或多个的改变。要变得自主,车辆不需要完全自动(例如,在没有驾驶员或没有驾驶员输入的情况的完全操作)。更确切地,自主车辆包括在某些时间段期间可以在驾驶员控制下操作而在其他时间段期间无需驾驶员控制的那些车辆。自主车辆还可以包括下述车辆:其仅控制车辆导航的一些方面,诸如转向(例如,以在车辆车道约束之间保持车辆航线(course)),但可以将其他方面(例如,制动)留给驾驶员。在一些情况下,自主车辆可以处理车辆的制动、速率控制和/或转向的一些或所有方面。

由于人类驾驶员典型地依赖于视觉提示和观察来控制车辆,因此相应地建立了运输基础设施,其中,车道标记、交通标志和交通灯都被设计为向驾驶员提供视觉信息。鉴于运输基础设施的这些设计特性,自主车辆可以包括相机和分析从车辆的环境捕获的视觉信息的处理单元。视觉信息可以包括例如可由驾驶员观察的运输基础设施的组件(例如,车道标记、交通标志、交通灯等)和其他障碍物(例如,其他车辆、行人、碎片等)。此外,自主车辆还可以使用存储的信息,诸如在导航时提供车辆的环境的模型的信息。例如,车辆可以使用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处理器或其他控制器或微处理器中的任何)以执行某些功能可以包括对计算机可执行指令的编程并使这些指令可用于处理设备,以在处理设备的操作期间执行。在一些实施例中,配置处理设备可以包括使用架构指令直接对处理设备进行编程。例如,可以使用例如一种或多种硬件描述语言(HDL)来配置诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等的处理设备。

在其他实施例中,配置处理设备可以包括将可执行指令存储在处理设备在操作期间可访问的存储器上。例如,处理设备可以在操作期间访问存储器以获得和执行存储的指令。在任一情况下,被配置为执行本文公开的感测、图像分析和/或导航功能的处理设备表示控制主车辆的多个基于硬件的组件的专用的基于硬件的系统。

尽管图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使用。在一些实施例中,这样的处理设备可以执行用于辨识(recognize)以及追踪眼睛移动、接收和解释语音命令、辨识和解释在触摸屏上进行的触摸和/或手势、对键盘输入或菜单选择作出响应等的指令。在一些实施例中,用户接口170可以包括显示器、扬声器、触觉设备和/或用于向用户提供输出信息的任何其他设备。

地图数据库160可以包括用于存储对系统100有用的地图数据的任何类型的数据库。在一些实施例中,地图数据库160可以包括与各种项目在参考坐标系中的定位相关的数据,各种项目包括道路、水特征、地理特征、企业、感兴趣的点、餐厅、加油站等。地图数据库160不仅可以存储这样的项目的位置,还可以存储与这些项目相关的描述符(包括例如与任何存储的特征相关联的名称)。在一些实施例中,地图数据库160可以物理地与系统100的其他组件位于一起。可替代或附加地,地图数据库160或其一部分可以位于相对于系统100的其他组件(例如,处理单元110)的远处。在这样的实施例中,来自地图数据库160的信息可以通过到网络的有线或无线数据连接(例如,通过蜂窝网络和/或互联网等)被下载。在一些情况下,地图数据库160可以存储稀疏数据模型,包括某些道路特征(例如,车道标记)或主车辆的目标轨迹的多项式表示。下面参考图8至图19讨论生成这样的地图的系统和方法。

图像捕获设备122、124和126可以各自包括适合于从环境捕获至少一个图像的任何类型的设备。此外,可以使用任何数量的图像捕获设备来获取图像以输入到图像处理器。一些实施例可以仅包括单个图像捕获设备,而其他实施例可以包括两个、三个或者甚至四个或更多个图像捕获设备。图像捕获设备122、124和126将如下参照图2B-图2E进一步描述。

系统100或其各种组件可以结合到各种不同的平台中。在一些实施例中,系统100可以包括在车辆200上,如图2A所示。例如,车辆200可以配备有处理单元110和系统100的任何其他组件,如上文相对于图1所描述的。虽然在一些实施例中车辆200可以仅配备单个图像捕获设备(例如,相机),但在诸如结合图2B-图2E所讨论的那些的其他实施例中,可以使用多个图像捕获设备。例如,如图2A所示,车辆200的图像捕获设备122和124中的任一图像捕获设备可以是ADAS(高级驾驶员辅助系统)成像套机(set)的一部分。

作为图像获取单元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的窗户中的任何窗户的前面,以及安装在车辆200的前面和/或后面的灯型(light figure)中或附近等。

除了图像捕获设备之外,车辆200可以包括系统100的各种其他组件。例如,处理单元110可以与车辆的引擎控制单元(ECU)集成或分开而被包括在车辆200上。车辆200还可以配备诸如GPS接收器的定位传感器130,并且还可以包括地图数据库160和存储器单元140和150。

如前所述,无线收发器172可以通过一个或多个网络(例如,蜂窝网络、互联网等)和/或接收数据。例如,无线收发器172可以将系统100收集的数据上传到一个或多个服务器,并从一个或多个服务器下载数据。系统100可以经由无线收发器172接收例如对存储在地图数据库160、存储器140和/或存储器150中的数据的周期性或按需更新。类似地,无线收发器172可以向一个或多个服务器上传来自系统100的任何数据(例如,由图像获取单元120捕获的图像、由定位传感器130或其他传感器、车辆控制系统等接收的数据)和/或由处理单元110处理的任何数据。

系统100可以基于隐私水平设置将数据上传到服务器(例如,上传到云)。例如,系统100可以实现隐私水平设置以调控或限制发送到服务器的、可唯一地识别车辆和/或车辆的驾驶员/所有者的数据的类型(包括元数据)。这样的设置可以由用户经由例如无线收发器172来设置、通过出厂默认设置或通过由无线收发器172接收的数据来初始化。

在一些实施例中,系统100可以根据“高”隐私水平上传数据,并且在设置了设置下,系统100可以传输数据(例如,与路线相关的位置信息、捕获的图像等),而无需关于该特定车辆和/或驾驶员/所有者的任何细节。例如,当根据“高”隐私设置上传数据时,系统100可能不包括车辆识别号(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可以提供1280x960像素的分辨率并且可以包括滚动快门。图像捕获设备122可以包括各种光学元件。在一些实施例中,可以包括一个或多个透镜,例如,来为图像捕获设备提供期望的焦距和视场。在一些实施例中,图像捕获设备122可以与6毫米透镜或12毫米透镜相关联。在一些实施例中,图像捕获设备122可以被配置为捕获具有期望的视场(FOV)202的图像,如图2D所示。例如,图像捕获设备122可以被配置为具有通常的FOV,诸如在40度到56度的范围内(包括46度FOV、50度FOV、52度FOV或更大)。可替代地,图像捕获设备122可以被配置为具有23至40度范围中的窄FOV,诸如28度FOV或36度FOV。此外,图像捕获设备122可以被配置为具有100至180度范围中的宽FOV。在一些实施例中,图像捕获设备122可以包括广角保险杠相机或具有高达180度FOV的相机。在一些实施例中,图像捕获设备122可以是具有大约2:1的纵横比(例如,HxV=3800x1900像素)和大约100度水平FOV的7.2M像素图像捕获设备。这样的图像捕获设备可以用来代替三个图像捕获设备配置。由于显著的透镜畸变,在图像捕获设备使用径向对称透镜的实施方式中,这样的图像捕获设备的垂直FOV可能显著小于50度。例如,这样的透镜可能不是径向对称的,这将允许大于50度的垂直FOV和100度水平FOV。

第一图像捕获设备122可以获取与和车辆200相关联的场景相关的多个第一图像。可以获取多个第一图像中的每个作为一系列图像扫描线,其可以使用滚动快门来捕获。每个扫描线可以包括多个像素。

第一图像捕获设备122可以具有与第一系列图像扫描线中的每个的获取相关联的扫描速率。扫描速率可以指图像传感器可以获取与包括在特定扫描线中的每个像素相关联的图像数据的速率。

图像捕获设备122、124和126可以包含任何合适类型和数量的图像传感器,例如包括CCD传感器或CMOS传感器。在一个实施例中,可以与滚动快门一起采用CMOS图像传感器,使得行中的每个像素一次被读取一个,并且基于逐行进行对行的扫描,直到整个图像帧已经被捕获。在一些实施例中,可以从相对于帧的顶部到底部顺序地捕获行。

在一些实施例中,本文公开的一个或多个图像捕获设备(例如,图像捕获设备122、124和126)可以构成高分辨率成像器,并且可以具有大于5M像素、7M像素、10M像素、或更大的分辨率。

滚动快门的使用可能导致不同行中的像素在不同时间处被曝光和捕获,这可能引起捕获的图像帧中的歪斜(skew)和其他图像伪影。另一方面,当图像捕获设备122被配置为使用全局或同步快门操作时,所有像素可以在相同的时间量内和在共同的曝光时段期间被曝光。结果,从采用全局快门的系统收集的帧中的图像数据表示在特定时间处整个FOV(诸如FOV 202)的快照。相比之下,在滚动快门应用中,帧中的每个行在不同的时间处被曝光,并且数据在不同的时间处被捕获。因此,移动对象在具有滚动快门的图像捕获设备中可能出现失真。该现象将在下面更详细地描述。

第二图像捕获设备124和第三图像捕获设备126可以是任何类型的图像捕获设备。与第一图像捕获设备122一样,图像捕获设备124和126中的每个可以包括光轴。在一个实施例中,图像捕获设备124和126中的每个可以包括具有全局快门的Aptina M9V024 WVGA传感器。可替代地,图像捕获设备124和126中的每个可以包括滚动快门。与图像捕获设备122一样,图像捕获设备124和126可以被配置为包括各种透镜和光学元件。在一些实施例中,与图像捕获设备124和126相关联的透镜可以提供与和图像捕获设备122相关联的FOV(诸如FOV202)相同或比和图像捕获设备122相关联的FOV(诸如FOV 202)更窄的FOV(诸如FOV 204和206)。例如,图像捕获设备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相关联的图像传感器可以具有640x 480、1024x768、1280x 960的分辨率或任何其他合适的分辨率。

帧速率(例如,图像捕获设备在继续捕获与下一个图像帧相关联的像素数据之前获取一个图像帧的像素数据的集合的速率)可以是可控的。与图像捕获设备122相关联的帧速率可以更高、更低、或者和与图像捕获设备124和126相关联的帧速率相同。与图像捕获设备122、124和126相关联的帧速率可以取决于可能影响帧速率的定时的各种因素。例如,图像捕获设备122、124和126中的一个或多个可以包括在获取与图像捕获设备122、124和/或126中的图像传感器的一个或多个像素相关联的图像数据之前或之后施加的可选择的像素延迟时段。通常,可以根据设备的时钟速率来获取与每个像素对应的图像数据(例如,每个时钟周期一个像素)。另外,在包括滚动快门的实施例中,图像捕获设备122、124和126中的一个或多个可以包括在获取与图像捕获设备122、124和/或126中图像传感器的像素的行相关联的图像数据之前或之后施加的可选择的水平消隐(blanking)时段。此外,图像捕获设备122、124和/或126中的一个或多个可以包括在获取与图像捕获设备122、124和126的图像帧相关联的图像数据之前或之后施加的可选择的垂直消隐时段。

这些定时控制可以使得与图像捕获设备122、124和126相关联的帧速率能够同步,即使在每个的线扫描速率不同的情况下。此外,如下文将更详细讨论的,即使在图像捕获设备122的视场不同于图像捕获设备124和126的FOV的情况下,这些可选择的定时控制以及其他因素(例如,图像传感器分辨率、最大线扫描速率等)也可以使得能够从图像捕获设备122的FOV与图像捕获设备124和126的一个或多个FOV重叠的区域捕获的图像同步。

图像捕获设备122、124和126中的帧速率定时可以取决于相关联的图像传感器的分辨率。例如,假设两个设备的线扫描速率相似,如果一个设备包括具有640x 480的分辨率的图像传感器,而另一个设备包括具有1280x 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中的每个图像捕获设备相关联的视场可以取决于相应的焦距。例如,随着焦距的增加,对应的视场减小。

图像捕获设备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可以通过一个或多个数据链路(例如,任何有线和/或无线链路或用于传输数据的链路)向节流(throttling)系统220、制动系统230和转向系统240中的一个或多个提供输入(例如,控制信号)。例如,基于对由图像捕获设备122、124和/或126获取的图像的分析,系统100可以向节流系统220、制动系统230和转向系统240中的一个或多个提供控制信号以导航车辆200(例如,通过引起加速、转弯、车道转换等)。此外,系统100可以从节流系统220、制动系统230和转向系统24中的一个或多个接收指示车辆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可以与车辆风挡齐平并且包括薄膜和/或抗反射材料的成分。例如,眩光屏蔽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可以提供窄视场(例如,从大约20度到45度的范围中选择的34度或其他值等),图像捕获设备124可以提供宽视场(例如,从大约100度到大约180度的范围中选择的150度或其他值),并且图像捕获设备126可以提供中间视场(例如,从大约35度到大约60度的范围中选择的46度或其他值)。在一些实施例中,图像捕获设备126可以用作主相机或主要相机。图像捕获设备122、124和126可以定位在后视镜310后面并且基本上并排定位(例如,相隔6厘米)。此外,在一些实施例中,如上所述,图像捕获设备122、124和126中的一个或多个可以安装在与车辆200的风挡齐平的眩光屏蔽380后面。这样的屏蔽可以起作用以最小化来自小汽车内部的任何反射在图像捕获设备122、124和126上的影响。

在另一个实施例中,如上面结合图3B和图3C所讨论的,宽视场相机(例如,上述示例中的图像捕获设备124)可以安装得低于窄视场和主视场相机(例如,上述示例中的图像设备122和126)。这种配置可以提供来自宽视场相机的自由视线。为了减少反射,相机可以安装得靠近车辆200的风挡,并且可以在相机上包括偏振器以衰减反射光。

三相机系统可以提供一定性能特性。例如,一些实施例可以包括基于来自另一个相机的检测结果来验证一个相机对对象的检测的能力。在上面讨论的三相机配置中,处理单元110可以包括例如三个处理设备(例如,三个EyeQ系列处理器芯片,如上所述),其中,每个处理设备专门处理由图像捕获设备122、124和126中的一个或多个捕获的图像。

在三相机系统中,第一处理设备可以从主相机和窄视场相机两者接收图像,并对窄FOV相机执行视觉处理以例如检测其他车辆、行人、车道标记、交通标志、交通灯和其他道路对象。此外,第一处理设备可以计算来自主相机和窄相机的图像之间的像素视差(disparity),并创建车辆200的环境的3D重建。然后,第一处理设备可以将3D重建与3D地图数据或者与基于来自另一个相机的信息而计算的3D信息组合。

第二处理设备可以从主相机接收图像并执行视觉处理以检测其他车辆、行人、车道标记、交通标志、交通灯和其他道路对象。此外,第二处理设备可以计算相机位移,并且基于位移来计算连续图像之间的像素视差,并创建场景的3D重建(例如,运动恢复结构)。第二处理设备可以向第一处理设备发送基于运动恢复结构的3D重建以与立体3D图像组合。

第三处理设备可以从宽FOV相机接收图像并处理图像以检测车辆、行人、车道标记、交通标志、交通灯和其他道路对象。第三处理设备还可以执行另外的处理指令来分析图像以识别图像中移动的对象,诸如改变车道的车辆、行人等。

在一些实施例中,具有独立地捕获和处理的、基于图像的信息的流可以提供用于在系统中提供冗余的机会。这样的冗余可以包括例如使用第一图像捕获设备和从该设备处理的图像,来验证和/或补充通过从至少第二图像捕获设备捕获和处理图像信息而获得的信息。

在一些实施例中,系统100可以将两个图像捕获设备(例如,图像捕获设备122和124)用在为车辆200提供导航辅助,并使用第三图像捕获设备(例如,图像捕获设备126)来提供冗余并验证从另外两个图像捕获设备接收的数据的分析。例如,在这样的配置中,图像捕获设备122和124可以提供用于由系统100进行立体分析的图像以用于导航车辆200,而图像捕获设备126可以提供用于由系统100进行单目分析的图像,以提供对基于从图像捕获设备122和/或图像捕获设备124捕获的图像而获得的信息的冗余和验证。也就是说,图像捕获设备126(和对应的处理设备)可以被认为提供冗余子系统,以用于提供对从图像捕获设备122和124导出的分析的检查(例如,以提供自动紧急制动(AEB)系统)。此外,在一些实施例中,可以基于从一个或多个传感器(例如,雷达、激光雷达(lidar)、声学传感器、从车辆外部的一个或多个收发器接收的信息等)接收的信息来补充接收的数据的冗余和验证。

本领域技术人员将认识到,上述相机配置、相机放置、相机数量、相机位置等仅是示例。在不脱离公开的实施例的范围的情况下,这些组件和相对于整体系统描述的其他组件可以以各种不同的配置来装配和使用。以下是关于使用多相机系统提供驾驶员辅助和/或自主车辆功能的进一步的细节。

图4是存储器140和/或150的示例性功能框图,存储器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可以包括用于检测图像的集合内的特征的集合(诸如车道标记、车辆、行人、道路标志、高速公路出口匝道、交通灯、危险对象和与车辆的环境相关联的任何其他特征)的指令。如下文结合导航响应模块408所讨论的,基于该分析,系统100(例如,经由处理单元110)可以在车辆200中引起一个或多个导航响应,诸如转弯、车道转换、加速度改变等。

在一个实施例中,立体图像分析模块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的其他系统(诸如车辆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传输它们。如下面结合图5B-图5D进一步详细描述的,处理单元110可以在步骤520执行单目图像分析模块402以分析多个图像。通过执行分析,处理单元110可以检测图像的集合内的特征的集合,诸如车道标记、车辆、行人、道路标志、高速公路出口匝道、交通灯等。

处理单元110还可以在步骤520执行单目图像分析模块402以检测各种道路危险,诸如像卡车轮胎的部分、掉落的道路标志、未捆扎的货物、小型动物等。道路危险可以在结构、形状、大小和颜色上进行变化,这可能使这样的危险的检测更具挑战性。在一些实施例中,处理单元110可以执行单目图像分析模块402以对多个图像执行多帧分析以检测道路危险。例如,处理单元110可以估计连续图像帧之间的相机运动并且计算帧之间的像素视差以构建道路的3D地图。处理单元110然后可以使用3D地图来检测道路表面,以及存在于道路表面上的危险。

在步骤530,处理单元110可以执行导航响应模块408,以基于在步骤520执行的分析和以上结合图4描述的技术在车辆200中引起一个或多个导航响应。导航响应可以包括例如转弯、车道转换、加速度改变等。在一些实施例中,处理单元110可以使用从执行速度和加速度模块406导出的数据来引起一个或多个导航响应。此外,多个导航响应可以同时、顺序或以其任何组合发生。例如,处理单元110可以通过例如顺序地向车辆200的转向系统240和节流系统220传输控制信号来使车辆200转换到一个车道上,然后加速。可替代地,处理单元110可以通过例如同时向车辆200的制动系统230和转向系统240传输控制信号来使车辆200在转换车道的同时制动。

图5B是示出了与公开的实施例一致的、用于检测图像的集合中的一个或多个车辆和/行人的示例性过程500B的流程图。处理单元110可以执行单目图像分析模块402以实现过程500B。在步骤540,处理单元110可以确定表示可能的车辆和/或行人的候选对象的集合。例如,处理单元110可以扫描一个或多个图像,将图像与一个或多个预定模式(pattern)进行比较,并在每个图像内识别可能包含感兴趣的对象(例如,车辆、行人或其部分)的可能位置。可以以这样的方式设计预定模式以实现高“误命中”率和低“未命中”率。例如,处理单元110可以使用与预定模式的相似度的低阈值来将候选对象识别为可能的车辆或行人。这样做可以允许处理单元110降低未命中(例如,未识别)表示车辆或行人的候选对象的概率。

在步骤542,处理单元110可以基于分类准则来过滤候选对象的集合以排除一定候选(例如,不相关或不太相关的对象)。这样的准则可以从与存储在数据库(例如,存储在存储器140中的数据库)中的对象类型相关联的各种属性中导出。属性可以包括对象形状、尺寸、纹理、定位(例如,相对于车辆200)等。因此,处理单元110可以使用准则的一个或多个集合来拒绝来自候选对象的集合的错误候选。

在步骤544,处理单元110可以分析图像的多个帧以确定候选对象的集合中的对象是否表示车辆和/或行人。例如,处理单元110可以跨连续帧追踪检测的候选对象并累积与检测的对象相关联的逐帧数据(例如,相对于车辆200的定位、大小等)。此外,处理单元110可以估计检测的对象的参数并将对象的逐帧定位数据与预测定位进行比较。

在步骤546,处理单元110可以为检测的对象构建测量的集合。这样的测量可以包括例如与检测的对象相关联的定位、速度和加速度值(相对于车辆200)。在一些实施例中,处理单元110可以基于使用一系列基于时间的观察的估计技术(诸如卡尔曼滤波器或线性二次估计(LQE))和/或基于用于不同对象类型(例如,小汽车、卡车、行人、自行车、道路标志等)的可用建模数据来构建测量。卡尔曼滤波器可以基于对对象标度(scale)的测量,其中标度测量与到碰撞的时间(例如,车辆200到达对象的时间量)成比例。因此,通过执行步骤540-546,处理单元110可以识别出现在捕获的图像的集合内的车辆和行人,并导出与车辆和行人相关联的信息(例如,定位、速率、大小)。如以上结合图5A所描述的,基于识别和导出的信息,处理单元110可以在车辆200中引起一个或多个导航响应。

在步骤548,处理单元110可以对一个或多个图像执行光流分析,以降低检测“误命中”和未命中表示车辆或行人的候选对象的概率。光流分析可以指代例如分析与其他车辆或行人相关联的、相对于一个或多个图像中的车辆200的运动模式,该运动模式与道路表面运动不同。处理单元110可以通过跨多个图像帧观察对象的不同定位来计算候选对象的运动,所述多个图像帧在不同的时间处被捕获。处理单元110可以使用定位和时间值作为数学模型的输入,以用于计算候选对象的运动。因此,光流分析可以提供检测车辆200附近的车辆和行人的另一种方法。处理单元110可以结合步骤540-546执行光流分析以提供用于检测车辆和行人的冗余并增加系统100的可靠性。

图5C是示出了与公开的实施例一致的、用于检测图像的集合中的道路标记和/或车道几何结构信息的示例性过程500C的流程图。处理单元110可以执行单目图像分析模块402以实现过程500C。在步骤550,处理单元110可以通过扫描一个或多个图像来检测对象的集合。为了检测车道标记的段(segment)、车道几何结构信息和其他相关道路标记,处理单元110可以过滤对象的集合以排除被确定为不相关的那些对象(例如,小坑洼、小岩石等)。在步骤552,处理单元110可以将在步骤550中检测的、属于相同道路标记或车道标记的段分组在一起。基于分组,处理单元110可以开发模型来表示检测的段,诸如数学模型的模型。

在步骤554,处理单元110可以构建与检测的段相关联的测量的集合。在一些实施例中,处理单元110可以创建检测的段从图像平面到真实世界平面的投影。可以使用具有对应于物理属性(诸如检测的道路的定位、坡度、曲率和曲率导数)的系数的3次多项式来表征投影。在生成投影时,处理单元110可以考虑道路表面的改变,以及与车辆200相关联的俯仰和滚转率。此外,处理单元110可以通过分析道路表面上存在的定位和运动提示来对道路高度(elevation)进行建模。此外,处理单元110可以通过追踪一个或多个图像中的特征点的集合来估计与车辆200相关联的俯仰和滚转率。

在步骤556,处理单元110可以通过例如跨连续图像帧追踪检测的段并累积与检测的段相关联的逐帧数据来执行多帧分析。随着处理单元110执行多帧分析,在步骤554构建的测量的集合可能变得更加可靠并且与越来越高的置信水平相关联。因此,通过执行步骤550、552、554和556,处理单元110可以识别出现在捕获的图像的集合内的道路标记并且导出车道几何结构信息。如以上结合图5A所描述的,基于识别和导出的信息,处理单元110可以在车辆200中引起一个或多个导航响应。

在步骤558,处理单元110可以考虑另外的信息源以进一步开发在车辆200周围的情境中的车辆200的安全模型。处理单元110可以使用安全模型来定义系统100可以以安全方式执行车辆200的自主控制的情境。为了开发安全模型,在一些实施例中,处理单元110可以考虑其他车辆的定位和运动、检测的道路边缘和障碍、和/或从地图数据(诸如来自地图数据库160的数据)中提取的一般道路形状描述。通过考虑另外的信息源,处理单元110可以为检测道路标记和车道几何结构提供冗余并增加系统100的可靠性。

图5D是示出了与公开的实施例一致的、用于检测图像的集合中的交通灯的示例性过程500D的流程图。处理单元110可以执行单目图像分析模块402以实现过程500D。在步骤560,处理单元110可以扫描图像的集合并识别出现在图像中可能包含交通灯的位置处的对象。例如,处理单元110可以过滤识别的对象以构建候选对象的集合,从而排除不太可能对应于交通灯的那些对象。过滤可以基于与交通灯相关联的各种属性(诸如形状、尺寸、纹理、定位(例如,相对于车辆200)等)来进行。这样的属性可以基于交通灯和交通控制信号的多个示例并被存储在数据库中。在一些实施例中,处理单元110可以对反映可能的交通灯的候选对象的集合执行多帧分析。例如,处理单元110可以跨连续图像帧追踪候选对象,估计候选对象的真实世界定位,并过滤掉正在移动的那些对象(其不太可能是交通灯)。在一些实施例中,处理单元110可以对候选对象执行颜色分析,并且识别出现在可能的交通灯内部的检测的颜色的相关定位。

在步骤562,处理单元110可以分析岔道口(junction)的几何结构。该分析可以基于以下各项的任何组合:(i)在车辆200的任一侧面检测的车道数量,(ii)在道路上检测的标记(例如箭头标记),以及(iii)从地图数据(诸如来自地图数据库160的数据)提取的岔道口的描述。处理单元110可以使用从执行单目分析模块402中导出的信息来实行分析。此外,处理单元110可以确定在步骤560检测的交通灯和出现在车辆200附近的车道之间的对应性。

随着车辆200接近岔道口,在步骤564,处理单元110可以更新与分析的岔道口几何结构和检测的交通灯相关联的置信水平。例如,与实际出现在岔道口处的数量相比,被估计为出现在岔道口处的交通灯的数量可能影响置信水平。因此,基于置信水平,处理单元110可以将控制委派(delegate)给车辆200的驾驶员以便改进安全状况。通过执行步骤560、562和564,处理单元110可以识别出现在捕获的图像的集合内的交通灯并且分析岔道口几何结构信息。如以上结合图5A所描述的,基于识别和分析,处理单元110可以在车辆200中引起一个或多个导航响应。

图5E是示出了与公开的实施例一致的、用于基于车辆路径在车辆200中引起一个或多个导航响应的示例性过程500E的流程图。在步骤570,处理单元110可以构建与车辆200相关联的初始车辆路径。可以使用以坐标(x,z)表达的点的集合来表示车辆路径,并且点的集合中的两个点之间的距离d

在步骤572,处理单元110可以更新在步骤570构建的车辆路径。处理单元110可以使用更高分辨率重建在步骤570构建的车辆路径,使得表示车辆路径的点的集合中的两个点之间的距离d

在步骤574,处理单元110可以基于在步骤572构建的更新的车辆路径来确定前瞻(look-ahead)点(以坐标(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与在第一多个图像、第二多个图像和第三多个图像中的任何图像内检测到的对象之间的相对定位、相对速度和/或相对加速度来引起一个或多个导航响应。多个导航响应可以同时、顺序或以其任何组合发生。

自主车辆导航的稀疏道路模型

在一些实施例中,公开的系统和方法可以使用用于自主车辆导航的稀疏地图。特别地,稀疏地图可以用于沿道路段的自主车辆导航。例如,稀疏地图可以提供足够的信息以供导航自主车辆,而无需存储和/或更新大量数据。如下文进一步详细讨论的,自主车辆可以使用稀疏地图以基于一个或多个存储的轨迹来导航一个或多个道路。

用于自主车辆导航的稀疏地图

在一些实施例中,公开的系统和方法可以生成用于自主车辆导航的稀疏地图。例如,稀疏地图可以为导航提供足够的信息,而不要求过多的数据存储或数据传送速率。如下文进一步详细讨论的,车辆(可以是自主车辆)可以使用稀疏地图来导航一个或多个道路。例如,在一些实施例中,稀疏地图可以包括与道路和沿道路的潜在地标相关的数据,该数据可能足以用于车辆导航,而且还展现出小的数据占位(footprint)。例如,与包括详细地图信息(诸如沿道路收集的图像数据)的数字地图相比,下文详细描述的稀疏数据地图可能要求显著更少的存储空间和数据传送带宽。

例如,稀疏数据地图可以存储沿道路的优选车辆路径的三维多项式表示,而不是存储道路段的详细表示。这些路径可能要求非常少的数据存储空间。此外,在所描述的稀疏数据地图中,地标可以被识别并被包括在稀疏地图道路模型中以帮助导航。这些地标可以位于适合于实现车辆导航的任何间隔处,但在某些情况下,这样的地标不需要以高密度和短间隔被识别并被包括在模型中。更确切地,在某些情况下,基于间隔开至少50米、至少100米、至少500米、至少1公里或至少2公里的地标进行导航是可能的。如将在其他部分中更详细讨论的,可以基于配备有各种传感器和设备(诸如图像捕获设备、全球定位系统传感器、运动传感器等)的车辆在车辆沿道路行驶时收集或测量的数据来生成稀疏地图。在一些情况下,可以基于在一个或多个车辆沿着特定道路的多个驾驶期间收集的数据来生成稀疏地图。使用一个或多个车辆的多个驾驶生成稀疏地图可以称为“众包”稀疏地图。

与公开的实施例一致,自主车辆系统可以使用用于导航的稀疏地图。例如,公开的系统和方法可以分发用于为自主车辆生成道路导航模型的稀疏地图,并且可以使用稀疏地图和/或生成的道路导航模型沿道路段导航自主车辆。与本公开一致的稀疏地图可以包括可以表示自主车辆在它们沿着相关联的道路段移动时可以穿越的预定轨迹的一个或多个三维轮廓(contour)。

与本公开一致的稀疏地图还可以包括表示一个或多个道路特征的数据。这样的道路特征可以包括辨识的地标、道路签名简档以及在车辆导航中有用的任何其他与道路相关的特征。与本公开一致的稀疏地图可以基于包括在稀疏地图中的相对少量的数据来使得能够进行车辆的自主导航。例如,不是包括道路的详细表示(诸如道路边缘、道路曲率、与道路段相关联的图像、或详述与道路段相关联的其他物理特征的数据),而是稀疏地图的公开的实施例可能要求相对少的存储空间(并且当稀疏地图的部分传送到车辆时,带宽相对较小),但仍可能充分地提供自主车辆导航。在一些实施例中,可以通过存储要求少量数据但仍能够实现自主导航的与道路相关的元素的表示,来实现下文进一步详细讨论的公开的稀疏地图的小数据占位。

例如,公开的稀疏地图可以存储车辆可能沿道路遵循的一个或多个轨迹的多项式表示,而不是存储道路的各个方面的详细表示。因此,不是存储(或必须传送)关于道路的物理性质的细节以使得能够进行沿道路的导航,而是使用公开的稀疏地图,车辆可以沿特定道路段导航,在某些情况下,无需解释道路的物理方面,反而通过将其行驶路径与沿特定道路段的轨迹(例如,多项式样条)对准。以此方式,车辆可以主要基于存储的轨迹(例如,多项式样条)来导航,存储的轨迹可能要求比涉及存储道路图像、道路参数、道路布局等的方法少得多的存储空间。

除了存储的沿道路段的轨迹的多项式表示之外,公开的稀疏地图还可以包括可以表示道路特征的小数据对象。在一些实施例中,小数据对象可以包括数字签名,数字签名从由沿道路段行驶的车辆车载的传感器(例如,相机或其他传感器,诸如悬架传感器)获得的数字图像(或数字信号)导出的。相对于由传感器获取的信号,数字签名可以具有减小的大小。在一些实施例中,可以创建数字签名以与分类器功能兼容,分类器功能被配置为例如在随后的驾驶期间从传感器获取的信号中检测和识别道路特征。在一些实施例中,可以创建数字签名,使得数字签名具有尽可能小的占位,同时保留基于在随后时间处由沿相同道路段行驶的车辆车载的相机捕获的、道路特征的图像(或者由传感器生成的数字信号,如果存储的签名不是基于图像和/或包括其他数据)来将道路特征与存储的签名进行相关或匹配的能力。

在一些实施例中,数据对象的大小还可以与道路特征的唯一性相关联。例如,对于可由车辆车载的相机检测的道路特征,并且其中车辆车载的相机系统耦合到分类器,该分类器能够将对应于该道路特征的图像数据区分为与例如道路标志的特定类型的道路特征相关联,并且其中这样的道路标志在该区域中是本地唯一的(例如,附近没有相同的道路标志或相同类型的道路标志),则存储指示道路特征的类型及其位置的数据可能是足够的。

如下文将进一步详细讨论的,道路特征(例如,沿道路段的地标)可以存储为小数据对象,小数据对象可以以相对较少的字节表示道路特征,同时提供用于辨识和使用用于导航的这样的特征的足够的信息。在一个示例中,可以将道路标志识别为车辆导航可以基于的、辨识的地标。可以将道路标志的表示存储在稀疏地图中以包括例如指示地标类型(例如,停止标志)的几个字节的数据以及指示地标的位置(例如,坐标)的几个字节的数据。基于地标的这样的轻数据(data-light)表示进行导航(例如,使用足以基于地标进行定位、辨识和导航的表示)可以提供与稀疏地图相关联的期望水平的导航功能,而无需显著增加与稀疏地图相关联的数据开销。地标(和其他道路特征)的这种精简表示可以利用这样的车辆车载地包括的、被配置为检测、识别和/或分类某些道路特征的传感器和处理器。

例如,当标志或甚至特定类型的标志在给定区域中是本地唯一的(例如,当没有其他标志或没有相同类型的其他标志时),稀疏地图可以使用指示地标的类型(标志或特定类型的标志)的数据,并且在导航(例如,自主导航)期间,当自主车辆车载的相机捕获包括标志(或特定类型的标志)的区域的图像时,处理器可以处理图像、检测标志(如果确实存在于图像中)、将图像分类为标志(或分类为特定类型的标志)、并将图像的位置与存储在稀疏地图中的标志的位置进行相关。

稀疏地图可以包括沿道路段识别的对象的任何合适表示。在某些情况下,对象可以被称为语义对象或非语义对象。语义对象可以包括例如与预定类型分类相关联的对象。这种类型分类可以在减少描述在环境中辨识的语义对象所要求的数据量中有用,这在收获(harvest)阶段(例如,减少与用于从多个收获车辆到服务器传送驾驶信息的带宽相关联的成本)以及在导航阶段期间(例如,减少地图数据可以加速地图瓦片(tile)从服务器到导航车辆的传送,并且还能够减少与用于这样的传送的带宽相关的成本)二者可以是有益的。可以将语义对象分类类型指派给预期沿道路遇到的任何类型的对象或特征。

语义对象还可以划分为两个或更多个逻辑分组。例如,在一些情况下,一个分组的语义对象类型可以与预定尺寸相关联。这样的语义对象可以包括某些速率限制标志、让行标志、合并标志、停止标志、交通灯、道路上的方向箭头、井盖、或可能与标准化大小相关联的任何其他类型的对象。这样的语义对象供应的一个好处是可能需要很少的数据来表示/完全定义对象。例如,如果速率限制大小的标准化大小已知,那么收获车辆可能只需要识别(通过对捕获的图像的分析)速率限制标志(辨识的类型)的存在连同对检测的速率限制标志的定位(例如,标志的中心或标志的某一拐角的、捕获的图像中的2D定位(或者可替代地,真实世界坐标中的3D定位))的指示,来针对服务器侧的地图生成提供足够的信息。在将2D图像定位传输给服务器的情况下,也可以传输与检测到标志的捕获的图像相关联的定位,因此服务器可以确定标志的真实世界定位(例如,通过使用来自一个或多个收获车辆的多个捕获的图像的运动中的结构技术)。即使使用该有限的信息(只要求几个字节来定义每个检测的对象),服务器也可以基于从一个或多个收获车辆接收的类型分类(表示速率限制标志)连同针对检测的标志的定位信息来构建包括完全表示的速率限制标志的地图。

语义对象还可以包括与某些标准化特性不相关联的其他辨识的对象或特征类型。这样的对象或特征可以包括坑洼、沥青缝、灯杆、非标准化标志、路缘、树木、树枝或具有一个或多个可变特性(例如,可变尺寸)的任何其他类型的辨识的对象类型。在这样的情况下,除了向服务器传输对检测的对象或特征类型(例如,坑洞、杆等)的指示和针对检测的对象或特征的定位信息之外,收获车辆还可以传输对对象或特征的大小的指示。大小可以以2D图像尺寸(例如,用边界框或一个或多个尺寸值)或真实世界尺寸(基于LIDAR或RADAR(雷达)系统输出、基于经训练的神经网络输出等、通过运动中的结构计算来确定)表达。

非语义对象或特征可以包括任何可检测的对象或特征,该对象或特征落在辨识的类别或类型之外,但仍然可以在地图生成中提供有价值的信息。在某些情况下,这样的非语义特征可能包括建筑物的检测的拐角或建筑物的检测的窗户的拐角、道路附近的唯一的石头或对象、道路路肩中的混凝土飞溅物、或任何其他可检测的对象或特征。在检测这样的对象或特征时,一个或多个收获车辆可以向地图生成服务器传输与检测的对象/特征相关联的一个或多个点(2D图像点或3D真实世界点)的位置。此外,可以针对包括检测的对象或特征的捕获图像的区域生成压缩或简化的图像段(例如,图像散列)。该图像散列可以基于预定的图像处理算法来计算,并且可以针对检测的非语义对象或特征形成有效签名。这样的签名对于相对于包括非语义特征或对象的稀疏地图的导航可能是有用的,因为穿越道路的车辆可以应用与用于生成图像散列的算法类似的算法,以便确认/校验绘图的非语义特征或对象在捕获的图像中的存在。使用这种技术,非语义特征可以添加到稀疏地图的丰富性(例如,以增强它们在导航中的有用性),而无需增加显著的数据开销。

如上所述,目标轨迹可以存储在稀疏地图中。这些目标轨迹(例如,3D样条)可以表示用于道路的每个可用车道、通过岔道口的每个有效路径、用于合并和出口等的优选或推荐路径。除了目标轨迹之外,其他道路特征也可以被检测、收获和以代表性样条的形式结合到稀疏地图中。这样的特征可以包括例如道路边缘、车道标记、路缘、护栏或沿道路或道路段延伸的任何其他对象或特征。

生成稀疏地图

在一些实施例中,稀疏地图可以包括沿道路段延伸的道路表面特征的至少一个线表示以及与该道路段相关联的多个地标。在某些方面,稀疏地图可以经由“众包”来生成,例如,通过对随着一个或多个车辆穿越道路段而获取的多个图像的图像分析。

图8示出了一个或多个车辆(例如,车辆200(其可以是自主车辆))可以访问以提供自主车辆导航的稀疏地图800。稀疏地图800可以存储在诸如存储器140或150的存储器中。这样的存储器设备可以包括任何类型的非暂时性存储设备或计算机可读介质。例如,在一些实施例中,存储器140或150可以包括硬盘驱动器、光盘、闪存、基于磁的存储器设备、基于光学的存储器设备等。在一些实施例中,稀疏地图800可以存储在可能存储在存储器140或150或其他类型的存储设备中的数据库中(例如,地图数据库160)。

在一些实施例中,稀疏地图800可以存储在车辆200车载地提供的存储设备或非暂时性计算机可读介质上(例如,车载于车辆200的导航系统中包括的存储设备)。车辆200上提供的处理器(例如,处理单元110)可以访问存储在车辆200车载地提供的存储设备或计算机可读介质中的稀疏地图800,以便生成用于在车辆穿越道路段时引导自主车辆200的导航指令。

然而,不需要关于车辆本地存储稀疏地图800。在一些实施例中,稀疏地图800可以存储在与车辆200或同车辆200相关联的设备通信的远程服务器上提供的存储设备或计算机可读介质上。在车辆200上提供的处理器(例如,处理单元110)可以从远程服务器接收包括在稀疏地图800中的数据,并且可以执行用于引导车辆200的自主驾驶的数据。在这样的实施例中,远程服务器可以存储所有稀疏地图800或仅其中一部分。因此,车辆200车载地提供的和/或一个或多个另外的车辆车载地提供的存储设备或计算机可读介质可以存储稀疏地图800的剩余部分。

此外,在这样的实施例中,可以使得稀疏地图800对穿越各种道路段的多个车辆(例如,数十、数百、数千或数百万的车辆等)可访问。还应该注意,稀疏地图800可以包括多个子地图。例如,在一些实施例中,稀疏地图800可以包括可以用于导航车辆的、数百、数千、数百万或更多的子地图(例如,地图瓦片)。这样的子地图可以被称为局部地图或地图瓦片,并且沿着道路行驶的车辆可以访问与车辆正在行驶的位置相关的任何数量的局部地图。稀疏地图800的局部地图部分可以与全球导航卫星系统(GNSS)密钥一起存储作为对稀疏地图800的数据库的索引。因此,虽然在本系统中用于导航主车辆的转向角的计算可以是在不依赖于主车辆的GNSS定位、道路特征或地标的情况下执行,但这样的GNSS信息可以用于检索相关的局部地图。

通常,稀疏地图800可以基于在一个或多个车辆沿道路行驶时从一个或多个车辆收集的数据(例如,驾驶信息)生成。例如,使用一个或多个车辆上的传感器(例如,相机、速率计、GPS、加速度计等),可以记录一个或多个车辆沿道路行驶的轨迹,以及可以基于一个或多个车辆行驶的、收集的轨迹来确定用于沿道路进行后续行程的车辆的优选轨迹的多项式表示。类似地,由一个或多个车辆收集的数据可以帮助识别沿特定道路的潜在地标。从穿越的车辆收集的数据也可以用于识别道路简档信息,诸如道路宽度简档、道路粗糙度简档、交通线间隔简档、道路状况等。使用收集的信息,可以生成和分发(例如,用于本地存储或经由即时(on-the-fly)数据传输)稀疏地图800,以用于导航一个或多个自主车辆。然而,在一些实施例中,地图生成可能不在地图的初始生成时结束。如下文将更详细讨论的,可以随着这些车辆持续穿越稀疏地图800中包括的道路,基于从车辆收集的数据持续或周期性更新稀疏地图800。

稀疏地图800中记录的数据可以包括基于全球定位系统(GPS)数据的定位信息。例如,在稀疏地图800中针对各种地图元素可以包括位置信息,包括例如地标位置、道路简档位置等。可以使用从穿越道路的车辆收集的GPS数据来获得稀疏地图800中包括的针对地图元素的位置。例如,经过识别的地标的车辆可以使用与车辆相关联的GPS定位信息以及对识别的地标相对于车辆的位置的确定(例如,基于对从车辆车载的一个或多个相机收集的数据的图像分析)来确定识别的地标的位置。当另外的车辆经过识别的地标的位置时,可以重复对识别的地标(或稀疏地图800中包括的任何其他特征)的这样的位置确定。一些或所有另外的位置确定可以用于细化存储在稀疏地图800中的、相对于识别的地标的位置信息。例如,在一些实施例中,相对于存储在稀疏地图800中的特定特征的多个定位测量可以一起被平均。然而,任何其他数学运算也可以用于基于针对地图元素的多个确定的位置来细化地图元素的存储的位置。

在特定示例中,收获车辆可以穿越特定道路段。每个收获车辆捕获其相应环境的图像。可以以任何合适的帧捕获速率(例如,9Hz等)收集图像。每个收获车辆上的图像分析处理器分析捕获的图像以检测语义和/或非语义特征/对象的存在。在高水平处,收获车辆向绘图服务器传输对语义和/或非语义对象/特征的检测的指示连同与这些对象/特征相关联的定位。更详细地,类型指示符、尺寸指示符等可以与定位信息一起传输。定位信息可以包括用于使绘图服务器能够将检测的对象/特征聚合成在导航中有用的稀疏地图的任何合适的信息。在一些情况下,定位信息可以包括检测到语义或非语义特征/对象的捕获的图像中的一个或多个2D图像定位(例如,X-Y像素位置)。这样的图像定位可能对应于拐角、特征/对象的中心等。在这种情景下,为了帮助绘图服务器重建驾驶信息并对准来自多个收获车辆的驾驶信息,每个收获车辆还可以向服务器提供其中捕获每个图像的位置(例如,GPS位置)。

在其他情况下,收获车辆可以向服务器提供与检测的对象/特征相关联的一个或多个3D真实世界点。这样的3D点可以是相对于预定原点的(诸如驾驶段的原点),并且可以通过任何合适的技术来确定。在某些情况下,运动中的结构技术可以用于确定检测的对象/特征的3D真实世界定位。例如,可以在两个或更多捕获的图像中检测诸如特定速率限制标志的一定对象。在捕获的图像之间使用诸如收获车辆的已知自我运动(速率、轨迹、GPS定位等)的信息连同在捕获的图像中的速率限制标志的观测的改变(X-Y像素位置的改变、大小的改变等),与速率限制标志相关联的一个或多个点的真实世界定位可以被确定并被传递给绘图服务器。这样的方法是可选的,因为它要求收获车辆系统的部分上的更多计算。公开的实施例的稀疏地图可以使用相对少量的存储的数据使得能够进行车辆的自主导航。在一些实施例中,稀疏地图800可以具有每公里道路小于2MB、每公里道路小于1MB、每公里道路小于500kB、或每公里道路小于100kB的数据密度(例如,包括表示目标轨迹、地标和任何其他存储的道路特征的数据)。在一些实施例中,稀疏地图800的数据密度可以小于每公里道路10kB或者甚至小于每公里道路2kB(例如,每公里1.6kB),或者每公里道路不多于10kB、或每公里道路不多于20kB。在一些实施例中,美国的大多数(如果不是全部)道路可以使用具有总共4GB或更少数据的稀疏地图来自主导航。这些数据密度值可以表示整个稀疏地图800上、稀疏地图800内的局部地图上和/或稀疏地图800内的特定道路段上的平均值。

如所指出的,稀疏地图800可以包括用于引导自主驾驶或沿着道路段的导航的多个目标轨迹810的表示。这样的目标轨迹可以存储为三维样条。例如,存储在稀疏地图800中的目标轨迹可以基于车辆沿特定道路段的先前穿越的两个或更多个重建的轨迹来确定。道路段可以与单个目标轨迹或多个目标轨迹相关联。例如,在双车道道路上,可以存储第一目标轨迹以表示在第一方向沿道路行驶的期望路径,并且可以存储第二目标轨迹以表示在另一个方向(例如,与第一方向相反)沿道路行驶的期望路径。可以关于特定道路段存储另外的目标轨迹。例如,在多车道道路上,可以存储表示与多车道道路相关联的一个或多个车道中的车辆的行驶的期望路径的一个或多个目标轨迹。在一些实施例中,多车道道路的每个车道可以与其自身的目标轨迹相关联。在其他实施例中,存储的目标轨迹可能比多车道道路上存在的车道更少。在这样的情况下,导航多车道道路的车辆可以使用任何存储的目标轨迹,通过考虑从存储目标轨迹的车道的车道偏移量来引导其导航(例如,如果车辆正行驶在三车道高速公路的最左边车道,并且仅针对高速公路的中间车道存储了目标轨迹,则车辆可以通过在生成导航指令时考虑中间车道和最左车道之间的车道偏移量,使用中间车道的目标轨迹进行导航)。

在一些实施例中,目标轨迹可以表示车辆在车辆行驶时应该采取的理想路径。例如,目标轨迹可以位于行驶的车道的大致中心处。在其他情况下,目标轨迹可能位于相对于道路段的其他位置。例如,目标轨迹可能与道路中心、道路边缘或车道边缘等大致重合。在这样的情况下,基于目标轨迹的导航可以包括保持相对于目标轨迹的位置确定的偏移量。此外,在一些实施例中,相对于目标轨迹的位置要保持的确定的偏移量可以基于车辆的类型而不同(例如,包括两个车轴的乘用车可能具有与沿目标轨迹的至少一部分的、包括多于两个车轴的卡车的不同的偏移)。

稀疏地图800还可以包括与和特定道路段、局部地图等相关联的多个预定地标820相关的数据。如下文更详细讨论的,这些地标可以用于自主车辆的导航。例如,在一些实施例中,地标可以用于确定车辆相对于存储的目标轨迹的当前定位。使用该定位信息,自主车辆可能能够调整走向方向以匹配确定位置处的目标轨迹的方向。

多个地标820可以被识别并以任何合适的间隔存储在稀疏地图800中。在一些实施例中,可以以相对高的密度(例如,每几米或更多)存储地标。然而,在一些实施例中,可以采用显著更大的地标间隔值。例如,在稀疏地图800中,识别的(或辨识的)的地标可以间隔开10米、20米、50米、100米、1公里或2公里。在某些情况下,识别的地标可能位于相距甚至多于2公里的距离处。

在地标之间以及因此在相对于目标轨迹的确定的车辆定位之间,车辆可以基于航迹推算(dead reckoning)进行导航,其中车辆使用传感器来确定其自我运动并估计其相对于目标轨迹的定位。因为在导航期间通过航迹推算可以累积误差,所以随着时间的推移,相对于目标轨迹的定位确定可能变得越来越不准确。车辆可以使用在稀疏地图800中出现的地标(以及它们的已知位置)来移除航迹推算引起的定位确定误差。以这种方式,稀疏地图800中包括的识别的地标可以用作从其可以确定车辆相对于目标轨迹的准确定位的导航锚。因为在定位位置中一定量的误差是可以可接受的,所以识别的地标不需要总是对自主车辆可用。反而,即使基于如上所述的10米、20米、50米、100米、500米、1公里、2公里或更多的地标间隔,合适的导航也是可能的。在一些实施例中,每1公里道路1个识别的地标的密度可能足以将纵向定位确定准确度维持在1米以内。因此,并非沿道路段出现的每个潜在地标都需要存储在稀疏地图800中。

此外,在一些实施例中,车道标记可以用于在地标间隔期间对车辆进行定位。通过在地标间隔期间使用车道标记,可以最小化在导航期间通过航迹推算的误差累积。

除了目标轨迹和识别的地标之外,稀疏地图800可以包括与各种其他道路特征相关的信息。例如,图9A示出了可以存储在稀疏地图800中的沿特定道路段的曲线的表示。在一些实施例中,道路的单个车道可以通过道路左侧和右侧的三维多项式描述来建模。在图9A中示出表示单个车道的左侧和右侧的这样的多项式。不管道路可能有多少个车道,都可以使用多项式以类似于图9A所示的方式来表示道路。例如,多车道道路的左侧和右侧可以由与图9A所示的多项式类似的多项式来表示,并且包括在多车道道路上的中间车道标记(例如,表示车道边界的虚线标记、表示沿不同方向行驶的车道之间的边界的黄色实线等)也可以使用诸如图9A所示的多项式来表示。

如图9A所示,可以使用多项式(例如,一阶、二阶、三阶或任何合适阶的多项式)来表示车道900。为了说明,车道900被示为二维车道并且多项式被示为二维多项式。如图9A所描绘的,车道900包括左侧910和右侧920。在一些实施例中,可以使用多于一个多项式来表示道路或车道边界的每一侧的位置。例如,左侧910和右侧920中的每个可以由任何合适长度的多个多项式来表示。在一些情况下,多项式可以具有大约100米的长度,尽管也可以使用大于或小于100米的其他长度。此外,多项式可以相互重叠,以便在主车辆沿道路行驶时基于随后遇到的多项式促进导航中的无缝过渡。例如,左侧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空间中延伸的多项式(例如,在纸的表面上),但要理解,这些多项式可以表示在三个维度上延伸的曲线(例如,包括高度分量),以除了X-Y曲率之外还表示道路段的高度改变。在图9A所示的示例中,车道900的右侧920进一步由具有多项式段921、922和923的第一分组和具有多项式段924、925和926的第二分组表示。

返回到稀疏地图800的目标轨迹,图9B示出了表示沿特定道路段行驶的车辆的目标轨迹的三维多项式。目标轨迹不仅表示主车辆应该沿着特定道路段行驶的X-Y路径,还表示主车辆在沿道路段行驶时将经历的高度改变。因此,稀疏地图800中的每个目标轨迹可以由像图9B所示的三维多项式950的一个或多个三维多项式表示。稀疏地图800可以包括多个轨迹(例如,数百万或数十亿或更多以表示沿着沿贯穿世界的道路的各种道路段的车辆的轨迹)。在一些实施例中,每个目标轨迹可以对应于连接三维多项式段的样条。

关于存储在稀疏地图800中的多项式曲线的数据占位,在一些实施例中,每个三次多项式可以由四个参数表示,每个参数要求四个字节的数据。可以使用每100米要求大约192个字节的数据的三次多项式获得合适的表示。对于以大约100公里/小时行驶的主车辆,这可以转化为每小时大约200kB的数据使用/传送要求。

稀疏地图800可以使用几何结构描述符和元数据的组合来描述车道网络。几何结构可以通过如上所述的多项式或样条来描述。元数据可以描述车道的数量、特殊特性(诸如拼车(car pool)车道)以及可能的其他稀疏标签。这样的指示符的总占位可以是可忽略的。

因此,根据本公开的实施例的稀疏地图可以包括沿道路段延伸的道路表面特征的至少一个线表示,每个线表示表示了沿着基本上与道路表面特征对应的道路段的路径。在一些实施例中,如上所述,道路表面特征的至少一个线表示可以包括样条、多项式表示或曲线。此外,在一些实施例中,道路表面特征可以包括道路边缘或车道标记中的至少一个。此外,如以下关于“众包”所讨论的,可以通过对随着一个或多个车辆穿越道路段而获取的多个图像的图像分析来识别道路表面特征。

如前所述,稀疏地图800可以包括与道路段相关联的多个预定地标。不是存储地标的实际图像并且依赖于例如基于捕获的图像和存储的图像的图像识别分析,而是可以使用比存储的实际图像将要求的更少的数据来表示和辨识稀疏地图800中的每个地标。表示地标的数据可能仍然包括用于描述或识别沿道路的地标的足够信息。存储描述地标的特性的数据而不是地标的实际图像,可以减小稀疏地图800的大小。

图10示出了可以在稀疏地图800中表示的地标类型的示例。地标可以包括沿道路段的任何可见和可识别的对象。可以选择地标,使得它们是固定的并且关于它们的位置和/或内容不经常改变。当车辆穿越特定道路段时,稀疏地图800中包括的地标可以用于确定车辆200关于目标轨迹的位置。地标的示例可以包括交通标志、方向标志、一般标志(例如,矩形标志)、道路边固定装置(例如,灯柱、反射器等)、以及任何其他合适的类别。在一些实施例中,道路上的车道标记也可以作为地标被包括在稀疏地图800中。

图10中所示的地标的示例包括交通标志、方向标志、道路边固定装置和一般标志。交通标志可以包括例如速率限制标志(例如,速率限制标志1000)、让行标志(例如,让行标志1005)、路线编号标志(例如,路线编号标志1010)、交通灯标志(例如,交通灯标志1015)、停止标志(例如,停止标志1020)。方向标志可以包括包含一个或多个箭头的标志,一个或多个箭头指示到不同地方的一个或多个方向。例如,方向标志可以包括具有用于将车辆导向到不同道路或地方的箭头的高速公路标志1025、具有将车辆导向离开道路的箭头的出口标志1030等。因此,多个地标中的至少一个可以包括道路标志。

一般标志可能与交通无关。例如,一般标志可能包括用于广告的广告牌,或与两国、州、县、城市或城镇边境相邻的欢迎牌。图10示出了一般标志1040(“乔的餐馆”)。尽管一般标志1040可以具有如图10所示的矩形形状,但一般标志1040可以具有其他形状,诸如正方形、圆形、三角形等。

地标还可能包括路边固定装置。路边固定装置可能为不是标志的对象,并且可能与交通或方向不相关。例如,路边固定装置可以包括灯柱(例如,灯柱1035)、电力线杆、交通灯杆等。

地标还可以包括可以专门设计为用于自主车辆导航系统的信标(beacon)。例如,这样的信标可以包括以预定间距放置的独立结构以帮助导航主车辆。这样的信标还可以包括添加到现有道路标志(例如,图标、徽标、条形码等)的、可以被沿道路段行驶的车辆识别或辨识的视觉/图形信息。这样的信标还可以包括电子组件。在这样的实施例中,电子信标(例如,RFID标签等)可以用于向主车辆传输非视觉信息。这样的信息可以包括例如主车辆在确定其沿目标轨迹的定位时可以使用的地标识别和/或地标位置信息。

在一些实施例中,稀疏地图800中包括的地标可以由预定大小的数据对象表示。表示地标的数据可以包括用于识别特定地标的任何合适的参数。例如,在一些实施例中,存储在稀疏地图800中的地标可以包括诸如地标的物理大小(例如,以支持基于已知大小/标度估计到地标的距离)、到先前地标的距离、横向偏移、高度、类型代码(例如,地标类型—什么类型的方向标志、交通标志等)、GPS坐标(例如,支持全球定位)的参数、以及任何其他合适的参数。每个参数可以与数据大小相关联。例如,可以使用8个字节的数据来存储地标大小。可以使用12个字节的数据来指定到前一个地标的距离、横向偏移和高度。与诸如方向标志或交通标志的地标相关联的类型代码可能要求大约2个字节的数据。对于一般标志,可以使用50字节的数据存储来存储使得能够识别一般标志的图像签名。地标GPS位置可以与16字节的数据存储相关联。每个参数的这些数据大小仅是示例,并且也可以使用其他数据大小。以这种方式表示稀疏地图800中的地标可以供应用于有效地表示数据库中的地标的精简解决方案。在一些实施例中,对象可以被称为标准语义对象或非标准语义对象。标准语义对象可以包括具有特性的标准化集合的任何类的对象(例如,具有已知尺寸或其他特性的速率限制标志、警告标志、方向标志、交通灯等)。非标准语义对象可以包括不与特性的标准化集合相关联的任何对象(例如,可能具有可变尺寸的一般广告标志、识别商业机构的标志、坑洼、树木等)。每个非标准语义对象可以用38个字节的数据表示(例如,针对大小的8个字节;针对到先前地标的距离、横向偏移和高度的12个字节;针对类型代码的2个字节;以及针对定位坐标的16个字节)。标准语义对象甚至可以使用甚至更少的数据来表示,因为绘图服务器可能不需要大小信息来完全表示稀疏地图中的对象。

稀疏地图800可以使用标签系统来表示地标类型。在一些情况下,每个交通标志或方向标志都可以与其自己的标签相关联,该标签可以作为地标识别的部分存储在数据库中。例如,数据库可以包括量级在大约1000个不同的标签来表示各种交通标志,以及量级在大约10000个不同的标签来表示方向标志。当然,可以使用任何合适数量的标签,并且可以根据需要创建另外的标签。在一些实施例中,通用标志可以使用少于大约100个字节(例如,大约86个字节,包括针对大小的8个字节;针对到先前地标的距离、横向偏移和高度的12个字节;针对图像签名的50个字节;以及针对GPS坐标的16个字节)来表示。

因此,对于不要求图像签名的语义道路标志,即使在大约每50米1个的相对高的地标密度下,对稀疏地图800的数据密度影响,也可能是每公里大约760字节(例如,每公里20个地标x每个地标38字节=760字节)的量级。即使对于包括图像签名组件的一般标志,数据密度影响也大约为每公里1.72kB(例如,每公里20个地标x每个地标86字节=1720字节)。对于语义道路标志,这等同于针对以100公里/小时行驶的车辆的大约每小时76kB的数据使用。对于一般标志,这等同于针对以100公里/小时行驶的车辆的大约每小时170kB。应当注意,在一些环境(例如,城市环境)中,可能有可用于包含在稀疏地图中的检测的对象的高得多的密度(每米可能多于一个)。在一些实施例中,诸如矩形标志的通常为矩形的对象可以在稀疏地图800中由不多于100个字节的数据来表示。稀疏地图800中的一般矩形对象(例如,一般标志1040)的表示可以包括与一般矩形对象相关联的简缩(condensed)图像签名或图像散列(例如,简缩图像签名1045)。该简缩图像签名/图像散列可以使用任何合适的图像散列算法来确定,并且可以用于例如帮助将通用标志识别为例如辨识的地标。这样的简缩的图像签名(例如,从表示对象的实际图像数据中导出的图像信息)可以避免需要存储对象的实际图像或需要对实际图像执行比较图像分析以辨识地标。

参照图10,稀疏地图800可以包括或存储与一般标志1040相关联的简缩图像签名1045,而不是一般标志1040的实际图像。例如,在图像捕获设备(例如,图像捕获设备122、124或126)捕获一般标志1040的图像之后,处理器(例如,图像处理器190、或者主车辆上的或相对于主车辆位于远处的、可以处理图像的任何其他处理器)可以执行图像分析以提取/创建包括与一般标志1040相关联的唯一签名或模式的、简缩图像签名1045。在一个实施例中,简缩图像签名1045可以包括形状、颜色模式、亮度模式、或可以从一般标志1040的图像中提取以用于描述一般标志1040的任何其他特征。

例如,在图10中,简缩图像签名1045中所示的圆形、三角形和星形可以表示不同颜色的区域。由圆形、三角形和星形表示的模式可以存储在稀疏地图800中,例如,在被指定为包括图像签名的50个字节内。值得注意的是,圆形、三角形和星形不一定意味着指示这样的形状被存储为图像签名的一部分。反而,这些形状意味着在概念上表示具有可辨别的(discernible)颜色差异的可辨识区域、文本区域、图形形状、或可能与通用标志相关联的特性的其他变化。这样的简缩的图像签名可以用来识别一般标志的形式的地标。例如,简缩图像签名可以用于基于存储的简缩图像签名与例如使用自主车辆车载的相机捕获的图像数据的比较来执行相同-不同分析。

因此,可以通过对随着一个或多个车辆穿越道路段而获取的多个图像的图像分析来识别多个地标。如以下关于“众包”所解释的,在一些实施例中,识别多个地标的图像分析可以包括当确实出现地标的图像与没有出现地标的图像的比率超过阈值时,接受潜在地标。此外,在一些实施例中,识别多个地标的图像分析可以包括当没有出现地标的图像与确实出现地标的图像的比率超过阈值时,拒绝潜在地标。

返回到主车辆可以用于导航特定道路段的目标轨迹,图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可以是两个或更多重建的轨迹的聚合(例如,加权组合)。

在绘图服务器处,服务器可以从穿越道路段的多个收获车辆接收特定道路段的实际轨迹。为了针对沿道路段的每个有效路径(例如,每个车道、每个驾驶方向、通过岔道口的每个路径等)生成目标轨迹,可以对准接收的实际轨迹。对准过程可以包括使用沿道路段识别的检测的对象/特征连同那些检测的对象/特征的收获定位,来将实际的收获的轨迹彼此相关。一旦对准,可以基于聚合的、相关的/对准的实际轨迹来确定每个可用车道等的平均值或“最佳拟合”目标轨迹。

图11B和图11C进一步说明了与存在于地理区域1111内的道路段相关联的目标轨迹的概念。如图11B所示,地理区域1111内的第一道路段1120可以包括多车道道路,其包括指定用于在第一方向上行驶的车辆的两个车道1122和指定用于在与第一方向相反的第二方向上行驶的车辆的另外的两个车道1124。车道1122和车道1124可以由双黄线1123分开。地理区域1111还可以包括与道路段1120相交的分支道路段1130。道路段1130可以包括两车道道路,每个车道被指定用于不同的行驶方向。地理区域1111还可以包括其他道路特征,诸如停止线1132、停止标志1134、速率限制标志1136和危险标志1138。

如图11C所示,稀疏地图800可以包括局部地图1140,局部地图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。例如,这样的地标可以用于辅助自主车辆确定其相对于任何示出的目标轨迹的当前位置,使得车辆可以调整其走向以匹配确定的位置处的目标轨迹的方向。

在一些实施例中,稀疏地图800还可以包括道路签名简档。这样的道路签名简档可以与和道路相关联的至少一个参数的任何可辨别/可测量的变化相关联。例如,在一些情况下,这样的简档可能与道路表面信息的变化(诸如特定道路段的表面粗糙度的变化、特定道路段上道路宽度的变化、沿特定道路段绘画的虚线之间的距离的变化、沿特定道路段的道路曲率的变化等)相关联。图11D示出了道路签名简档1160的示例。虽然简档1160可以表示上述参数中的任何参数或其他参数,但在一个示例中,简档1160可以表示道路表面粗糙度的测量,例如通过在车辆行驶特定道路段时监视提供指示悬架位移量的输出的一个或多个传感器来获得的。

可替代地或同时地,简档1160可以表示如基于经由行驶特定道路段的车辆车载的相机获得的图像数据所确定的、道路宽度的变化。例如,这样的简档在确定自主车辆相对于特定目标轨迹的特定位置时可能是有用的。也就是说,当它穿越道路段时,自主车辆可以测量与和道路段相关联的一个或多个参数相关联的简档。如果测量的简档可以与绘制相对于沿道路段的定位的参数变化的预定简档相关/匹配,则可以使用测量的和预定的简档(例如,通过叠加测量的和预定的简档的对应部分),以确定沿道路段的当前定位,并因此确定相对于道路段的目标轨迹的当前定位。

在一些实施例中,稀疏地图800可以包括基于与自主车辆的用户、环境状况和/或与驾驶相关的其他参数相关联的不同特性的不同轨迹。例如,在一些实施例中,可以基于不同的用户偏好和/或简档来生成不同的轨迹。可以将包括这样的不同轨迹的稀疏地图800提供给不同用户的不同自主车辆。例如,一些用户可能偏好避开收费道路,而另一些用户可能偏好采取最短或最快的路线,而不管路线上是否有收费道路。公开的系统可以基于这样的不同的用户偏好或简档生成具有不同轨迹的不同稀疏地图。作为另一个示例,一些用户可能偏好在快速移动的车道上行驶,而其他用户可能偏好始终保持在中央车道中的定位。

基于不同的环境状况(诸如白天和黑夜、雪、雨、雾等),不同的轨迹可以被生成并被包括在稀疏地图800中。可以为在不同环境状况下驾驶的自主车辆提供基于这样的不同的环境状况生成的稀疏地图800。在一些实施例中,自主车辆上提供的相机可以检测环境状况,并且可以将这样的信息提供回生成和提供稀疏地图的服务器。例如,服务器可以生成或更新已经生成的稀疏地图800,以包括在检测的环境状况下可能更适合或更安全地用于自主驾驶的轨迹。当自主车辆沿着道路行驶时,可以动态地执行基于环境状况的稀疏地图800的更新。

与驾驶相关的其他不同参数也可以用作生成不同稀疏地图并将不同稀疏地图提供给不同自主车辆的基础。例如,当自主车辆以高速率行驶时,转弯可能更收紧。与特定车道而不是道路相关联的轨迹可以被包括在稀疏地图800中,使得自主车辆可以在车辆遵循特定轨迹时保持在特定车道内。当自主车辆车载的相机捕获的图像指示车辆已经漂移到车道外部(例如,超出(cross)车道标记)时,可以在车辆内触发动作,以根据特定轨迹将车辆带回指定车道。

众包稀疏地图

公开的稀疏地图可以通过众包的力量有效地(和被动地)生成。例如,配备有相机(例如,作为当今车辆上的OEM设备通常包括的简单、低分辨率相机)和适当的图像分析处理器的任何私人或商用车辆都可以用作收获车辆。不要求特殊设备(例如,高清晰度成像和/或定位系统)。作为公开的众包技术的结果,生成的稀疏地图可能极其准确,并且可能包括极其细化的定位信息(使导航误差能够限制为10厘米或更小),而不要求任何专用成像或感测设备作为地图生成过程的输入。众包还可以使得对生成的地图能够进行快速得多(且廉价)的更新,因为新的驾驶信息可以从最少配备为还用作收获车辆的私人或商用车辆穿越的任何道路、持续可用于绘图服务器系统。不需要配备有高清晰度成像和绘图传感器的指定车辆。因此,可以避免与建立这样的专用车辆相关联的费用。此外,可以使对当前公开的稀疏地图的更新比依赖于专门的、专用的绘图车辆的系统快速得多(由于它们的费用和特殊设备典型地受限于与已经可用于执行公开的收获技术的私人或商用车辆的数量相比低得多的数量的专用车辆的车队)。

通过众包生成的公开的稀疏地图可能极其准确,因为它们可以基于来自多个(数十个、数百个、数百万个等)收获车辆的许多输入而生成,这些收获车辆已经沿着特定道路段收集了驾驶信息。例如,沿着特定道路段驾驶的每个收获车辆可以记录其实际轨迹,并且可以确定相对于沿着道路段的检测的对象/特征的定位信息。该信息从多个收获车辆向服务器传递。聚合实际轨迹来为沿道路段的每个有效驾驶路径生成细化的目标轨迹。此外,还可以聚合从多个收获车辆收集的、针对沿道路段(语义或非语义)的检测的对象/特征中的每个的定位信息。因此,每个检测的对象/特征的绘图的定位可以构成每个检测的对象/特征的数百、数千或数百万个单独确定的定位的平均值。这样的技术可以为检测的对象/特征产出极其准确的绘图的定位。

在一些实施例中,公开的系统和方法可以生成用于自主车辆导航的稀疏地图。例如,公开的系统和方法可以使用众包数据来生成一个或多个自主车辆可以用于沿着道路的系统导航的稀疏地图。如本文所用,“众包”意味着在不同时间处从在道路段上行驶的各种车辆(例如,自主车辆)接收数据,并且这样的数据用于生成和/或更新包括稀疏地图瓦片的道路模型。模型或其任何稀疏地图瓦片可以转而被传输给稍后沿道路段行驶的车辆或其他车辆,以协助自主车辆导航。道路模型可以包括表示自主车辆在它们穿越道路段时应该遵循的优选轨迹的多个目标轨迹。目标轨迹可以与从穿越道路段的车辆收集的重建的实际轨迹相同,其可以从车辆向服务器传输。在一些实施例中,目标轨迹可以不同于一个或多个车辆先前在穿越道路段时采取的实际轨迹。可以基于实际轨迹生成(例如,通过平均或任何其他合适的运算)目标轨迹。

车辆可以上传到服务器的车辆轨迹数据可以与车辆的实际重建的轨迹对应,或者可以对应于推荐轨迹,推荐轨迹可以基于车辆的实际重建的轨迹或与车辆的实际重建的轨迹相关,但可以不同于实际重建的轨迹。例如,车辆可以修改它们的实际重建的轨迹并向服务器提交(例如,推荐)修改的实际轨迹。道路模型可以使用推荐的、修改的轨迹作为其他车辆的自主导航的目标轨迹。

除了轨迹信息之外,在建立稀疏数据地图800中潜在使用的其他信息可以包括与潜在的地标候选相关的信息。例如,通过信息的众包,公开的系统和方法可以识别环境中的潜在地标并细化地标定位。自主车辆的导航系统可以使用地标来确定和/或调整车辆沿目标轨迹的定位。

可以通过任何合适的方法获得在车辆沿道路行驶时车辆可以生成的重建的轨迹。在一些实施例中,可以通过使用例如自我运动估计(例如,相机(以及因此车辆的车身)的三维平移和三维旋转)将车辆的移动的段缝合在一起来开发重建的轨迹。旋转和平移估计可以基于由一个或多个图像捕获设备捕获的图像的分析连同来自其他传感器或设备(诸如惯性传感器和速率传感器)的信息来确定。例如,惯性传感器可以包括加速度计或被配置为测量车身的平移和/或旋转的改变的其他合适的传感器。车辆可以包括测量车辆的速率的速率传感器。

在一些实施例中,可以基于捕获的图像的光流分析来估计相机(以及因此车身)的自我运动。图像序列的光流分析从图像序列中识别像素的移动,并基于识别的移动确定车辆的运动。自我运动可以随着时间和沿着路段被整合以重建与车辆已经遵循的道路段相关联的轨迹。

由多个车辆在不同时间在沿道路段的多个驾驶中收集的数据(例如,重建的轨迹)可以用于构建包括在稀疏数据地图800中的道路模型(例如,包括目标轨迹等)。由多个车辆在不同时间在沿道路段的多个驾驶中收集的数据也可以被平均以提高模型的准确度。在一些实施例中,关于道路几何结构和/或地标的数据可以从在不同时间行驶通过共同道路段的多个车辆接收。可以组合从不同车辆接收这样的数据以生成道路模型和/或更新道路模型。

沿道路段的重建的轨迹(以及目标轨迹)的几何结构可以由三维空间中的曲线表示,该曲线可以是连接三维多项式的样条。可以从由安装在车辆上的相机捕获的视频流或多个图像的分析来确定重建的轨迹曲线。在一些实施例中,在每个帧或图像中识别出车辆当前定位前几米的位置。该位置是预期车辆在预定时间段内行驶到的地点。该操作可以逐帧重复,并且同时,车辆可以计算相机的自我运动(旋转和平移)。在每个帧或图像处,车辆在附接到相机的参考系中生成期望的路径的短程模型。可以将短程模型缝合在一起以获得道路在一些坐标系(frame)中的三维模型,该坐标系可以是任意或预定的坐标系。然后可以通过样条拟合道路的三维模型,样条可以包括或连接一个或多个合适的阶的多项式。

为了在每个帧处推断短程道路模型,可以使用一个或多个检测模块。例如,可以使用自下而上的车道检测模块。当在道路上画制车道标记时,自下而上的车道检测模块可能有用。该模块可能在图像中寻找边缘并将它们装配在一起以形成车道标记。第二模块可以与自下而上的车道检测模块一起使用。第二模块是可以被训练以从输入图像中预测正确的短程路径的端到端的深度神经网络。在两个模块中,道路模型可以在图像坐标系中被检测并被变换为可以虚拟附接到相机的三维空间。

尽管重建的轨迹建模方法可能由于长时间段内自我运动的整合而引入可能包括噪声分量的误差累积,但这样的误差可能是不重要的,因为生成的模型可以在局部标度上为导航提供足够的准确度。此外,可以通过使用外部信息源(诸如卫星图像或大地测量)来消除整合的误差。例如,公开的系统和方法可以使用GNSS接收器来消除累积误差。然而,GNSS定位信号可能不总是可用和准确的。公开的系统和方法可以使得能够进行弱取决于GNSS定位的可用性和准确度的转向应用。在这样的系统中,GNSS信号的使用可能受限。例如,在一些实施例中,公开的系统可以将GNSS信号仅用于数据库索引目的。

在一些实施例中,可能与自主车辆导航转向(steer)应用相关的范围标度(例如,局部标度)可以是50米、100米、200米、300米的量级上等。可以使用这样的距离,因为几何结构道路模型主要用于两个目的:规划道路模型上的车辆前方的轨迹和在道路模型上定位车辆。在一些实施例中,当控制算法根据位于前方1.3秒(或任何其他时间,诸如1.5秒、1.7秒、2秒等)的目标点将车辆转向时,规划任务可以在前方40米的典型范围(或前方任何其他合适的距离,诸如20米、30米、50米)上使用模型。根据在另一部分更详细地描述的被称为“尾部对准”的方法,定位任务在汽车后方60米的典型范围上(或任何其他合适的距离,诸如50米、100米、150米等)使用道路模型。公开的系统和方法可以生成几何结构模型,该几何机构模型在诸如100米的特定范围上具有足够的准确度,使得规划的轨迹将不偏离车道中心多于例如30厘米。

如上所述,可以从检测短程路段(section)并将它们缝合在一起来构建三维道路模型。可以通过使用由相机捕获的视频和/或图像、来自反映车辆运动的惯性传感器的数据、以及主车辆速度信号计算六度自我运动模型来使得能够进行缝合。累积误差在某些局部范围标度上可能足够小,诸如100米的量级上。所有这些都可以在特定道路段上的单个驾驶中完成。

在一些实施例中,可以使用多个驾驶来平均产生的模型,并进一步提高其准确度。相同汽车可能多次行驶相同的路线,或者多个汽车可能向中央服务器发送其收集的模型数据。在任何情况下,可以执行匹配过程以识别重叠模型并使得能够进行平均以生成目标轨迹。一旦满足收敛准则,构建的模型(例如,包括目标轨迹)可以用于转向。随后的驾驶可以用于进一步的模型改进,以适应基础设施改变。

如果将多个汽车连接到中央服务器,则在多个汽车之间共享驾驶经验(诸如,感测的数据)变得可行。每个车辆客户端可以存储可能与其当前定位相关的普遍道路模型的部分副本。车辆和服务器之间的双向更新过程可以由车辆和服务器执行。上面讨论的小占位概念使公开的系统和方法能够使用非常小的带宽来执行双向更新。

与潜在地标相关的信息也可以被确定并被转发到中央服务器。例如,公开的系统和方法可以基于包括地标的一个或多个图像来确定潜在地标的一个或多个物理属性。物理属性可以包括地标的物理大小(例如,高度、宽度)、从车辆到地标的距离、该地标与先前地标之间的距离、地标的横向定位(例如,相对于行驶的车道的地标的定位)、地标的GPS坐标、地标的类型、地标上的文本的识别等。例如,车辆可以分析由相机捕获的一个或多个图像以检测潜在地标,诸如速率限制标志。

车辆可以基于一个或多个图像的分析来确定从车辆到地标的距离或与地标相关联的定位(例如,沿道路段的任何语义或非语义对象或特征)。在一些实施例中,可以基于使用合适的图像分析方法(例如缩放方法和/或光流方法)对地标的图像的分析来确定距离。如前所述,对象/特征的定位可以包括与对象/特征相关联的一个或多个点的2D图像定位(例如,一个或多个捕获的图像中的X-Y像素定位),或者可以包括一个或多个点的3D真实世界定位(例如,通过运动中的结构/光流技术、LIDAR或RADAR信息等确定)。在一些实施例中,公开的系统和方法可以被配置为确定潜在地标的类型或分类。在车辆确定某个潜在地标对应于存储在稀疏地图中的预定类型或分类的情况下,车辆向服务器传送地标的类型或分类的指示以及其位置可能就足够的。服务器可以存储这样的指示。在稍后的时间,在导航期间,导航车辆可以捕获包括地标的表示的图像,处理图像(例如,使用分类器),并比较结果地标,以确认绘图的地标的检测,并使用绘图的地标来相对于稀疏地图定位导航车辆。

在一些实施例中,在道路段上行驶的多个自主车辆可以与服务器通信。车辆(或客户端)可以在任意坐标系中生成描述其驾驶(例如,通过自我运动整合)的曲线。车辆可以检测地标并将它们定位在相同帧中。车辆可以将曲线和地标上传到服务器。服务器可以从车辆通过多个驾驶收集数据,并生成统一的道路模型。例如,如下面关于图19所讨论的,服务器可以使用上传的曲线和地标生成具有统一道路模型的稀疏地图。

服务器还可以将模型分发给客户端(例如,车辆)。例如,服务器可以将稀疏地图分发给一个或多个车辆。服务器在从车辆接收新数据时,可以连续或周期性更新模型。例如,服务器可以处理新数据以评估数据是否包括应该触发更新或在服务器上创建新数据的信息。服务器可以将更新的模型或更新分发给车辆,以用于提供自主车辆导航。

服务器可以使用一个或多个准则,用于确定从车辆接收的新数据是否应该触发对模型的更新或触发新数据的创建。例如,当新数据指示特定位置处的先前辨识的地标不再存在或被另一个地标替换时,服务器可以确定新数据应该触发对模型的更新。作为另一个示例,当新数据指示道路段已经关闭,并且当这已经被从其他车辆接收的数据证实时,服务器可以确定新数据应该触发对模型的更新。

服务器可以将更新的模型(或模型的更新部分)分发给正在道路段(对模型的更新与该道路段相关联)上正行驶的一个或多个车辆。服务器还可以将更新的模型分发给即将在道路段上行驶的车辆,或者其规划行程包括与对模型的更新相关联的道路段的车辆。例如,当自主车辆在到达与更新相关联的道路段之前沿着另一个道路段正在行驶时,服务器可以在车辆到达道路段之前将更新或更新的模型分发给自主车辆。

在一些实施例中,远程服务器可以从多个客户端(例如,沿着共同道路段行驶的车辆)收集轨迹和地标。服务器可以使用地标来匹配曲线,并基于从多个车辆收集的轨迹来创建平均道路模型。服务器还可以计算路段的每个节点或岔道口处的最可能路径和道路图形。例如,远程服务器可以对准轨迹以从收集的轨迹生成众包稀疏地图。

服务器可以对从沿共同道路段行驶的多个车辆接收的地标属性(诸如由多个车辆测量的一个地标与另一个地标(例如,沿道路段的先前地标)之间的距离)进行平均,以确定弧长参数,并支持沿路径的定位和每个客户端车辆的速率校准。服务器可以对沿共同道路段行驶并辨识了相同的地标的多个车辆所测量的地标的物理尺寸进行平均。平均物理尺寸可以用于支持距离估计,诸如从车辆到地标的距离。服务器可以对沿共同道路段行驶并辨识了相同的地标的多个车辆所测量的地标的横向定位(例如,从车辆正在行驶的车道到地标的定位)。平均横向定位可以用于支持车道指派。服务器可以对沿相同道路段行驶并辨识了相同的地标的多个车辆所测量的地标的GPS坐标进行平均。地标的平均GPS坐标可以用于支持地标在道路模型中的全球定位(localization)或定位(positioning)。

在一些实施例中,服务器可以基于从车辆接收的数据来识别模型改变,诸如构建物、临时绕行道路(detour)、新标志、标志的移除等。服务器可以在从车辆接收新数据时持续或周期性或即时更新模型。服务器可以将对模型的更新或更新的模型分发给车辆以用于提供自主导航。例如,如下文进一步讨论的,服务器可以使用众包数据来过滤掉车辆检测的“幻影”地标。

在一些实施例中,服务器可以在自主驾驶期间分析驾驶员干预。服务器可以分析在干预发生的时间和位置处从车辆接收的数据、和/或在干预发生的时间之前接收的数据。服务器可以识别导致干预或与干预密切相关的数据的某些部分,例如,指示临时车道关闭设置的数据、指示道路中的行人的数据。服务器可以基于识别的数据来更新模型。例如,服务器可以修改存储在模型中的一个或多个轨迹。

图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可以基于多个轨迹(多个轨迹基于众包导航数据来确定)来生成自主车辆道路导航模型或该模型的部分(例如,更新的部分)。服务器1230可以向在道路段1200上行驶的自主车辆1205、1210、1215、1220和1225中的一个或多个或在稍后时间在道路段上行驶的任何其他自主车辆传输模型或模型的更新部分,以用于更新在车辆的导航系统中提供的现有自主车辆道路导航模型。自主车辆道路导航模型可以由自主车辆在沿共同道路段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可以对不同的估计进行平均以达成地标的物理大小,并将该地标大小存储在道路模型中。物理大小估计可以用于进一步确定或估计从车辆到地标的距离。可以基于车辆的当前速率、以及基于出现在图像中的地标相对于相机的延伸焦点(focus of expansion)的定位的延伸标度来估计到地标的距离。例如,到地标的距离可以通过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的变化是否表示实际散度(divergence)或统计误差。骨架1420内的每个路径可以链接回形成该路径的原始数据1410。例如,骨架1420内A和B之间的路径链接到来自驾驶2、3、4和5但不是来自驾驶1的原始数据1410。骨架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可以接受潜在地标,和/或当未出现地标的图像与确实出现地标的图像的比率超过阈值时,服务器1230可以拒绝潜在地标。

图17描绘了用于生成可以用于众包稀疏地图的驾驶数据的系统1700。如图17所描绘的,系统1700可以包括相机1701和定位设备1703(例如,GPS定位器)。相机1701和定位设备1703可以安装在车辆(例如,车辆1205、1210、1215、1220和1225中的一个)上。相机1701可以产生多个类型的多个数据,例如,自我运动数据、交通标志数据、道路数据等。相机数据和位置数据可以被分割成驾驶段1705。例如,驾驶段1705可以各自具有来自少于1公里的驾驶的相机数据和位置数据。

在一些实施例中,系统1700可以移除驾驶段1705中的冗余。例如,如果地标出现在来自相机1701的多个图像中,则系统1700可以剥除冗余数据,使得驾驶段1705仅包含地标的位置或者与地标相关的任何元数据的一个副本。作为进一步的示例,如果车道标记出现在来自相机1701的多个图像中,则系统1700可以剥除冗余数据,使得驾驶段1705仅包含车道标记的位置或者与车道标记相关的任何元数据的一个副本。

系统1700还包括服务器(例如,服务器1230)。服务器1230可以从车辆接收驾驶段1705并且将驾驶段1705重新组合成单个驾驶1707。这样的布置可以允许在车辆和服务器之间传送数据时减少带宽要求,同时还允许服务器存储与整个驾驶相关的数据。

图18描绘了还被配置为用于众包稀疏地图的图17的系统1700。如同在图17,系统1700包括使用例如相机(其产生例如自我运动数据、交通标志数据、道路数据等)和定位设备(例如GPS定位器)来捕获驾驶数据的车辆1810。如同图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还包括捕获驾驶数据的“汽车N”、将数据分割成驾驶段(在图18中被描绘为“DS1 N”、“DS2 N”、“DSNN”)、并将其发送给服务器1230以用于重建为驾驶(在图18中描绘为“驾驶N”)。

如图18所描绘的,服务器1230可以使用从多个车辆(例如,“汽车1”(也被打上车辆1810的标签)、“汽车2”(也被打上车辆1820的标签)和“汽车N”)收集的重建的驾驶(例如,“驾驶1”、“驾驶2”和“驾驶N”)来构建稀疏地图(描绘为“地图”)。

图19是示出用于为沿道路段的自主车辆导航生成稀疏地图的示例过程1900的流程图。过程1900可以由包括在服务器1230中的一个或多个处理设备来执行。

过程1900可以包括接收在一个或多个车辆穿越道路段时获取的多个图像(步骤1905)。服务器1230可以从包括在车辆1205、1210、1215、1220和1225中的一个或多个内的相机接收图像。例如,相机122可以在车辆1205沿着道路段1200行驶时捕获车辆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中接收的数据。由服务器1230执行的如上所述的其他过程或步骤也可以包括在过程1900中。

公开的系统和方法可以包括其他特征。例如,公开的系统可以使用局部坐标,而不是全局坐标。对于自主驾驶,一些系统可能以世界坐标呈现数据。例如,可以使用地球表面上的经度和纬度坐标。为了使用地图用于转向,主车辆可以确定其相对于地图的定位和朝向。使用车载GPS设备似乎是自然的,以便在地图上定位车辆,并以便找到车身(body)参考系和世界参考系(例如,北、东和下)之间的旋转变换。一旦车身参考系与地图参考系对准,则可以在车身参考系中表达期望路线并且可以计算或生成转向命令。

公开的系统和方法可以使得能够使用低占位模型进行自主车辆导航(例如,转向控制),低占位模型可以由自主车辆本身收集,而无需借助于昂贵的测量(surveying)设备。为了支持自主导航(例如,转向应用),道路模型可以包括具有道路的几何结构、其车道结构和地标的稀疏地图,其可以用于确定车辆沿着包括在模型中的轨迹的位置或定位。如上所述,稀疏地图的生成可以由与在道路上行驶的车辆通信并从车辆接收数据的远程服务器来执行。数据可以包括感测数据、基于感测数据重建的轨迹、和/或可以表示修改的重建轨迹的推荐轨迹。如下所述,服务器可以将模型传输回车辆或稍后在道路上行驶的其他车辆以帮助自主导航。

图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可以包括被配置为执行存储在存储器2015中的计算机代码或指令以执行各种功能的至少一个处理设备2020。例如,处理设备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的目标轨迹。这样的操作可以包括在每个聚类中找到聚类的车辆轨迹的均值(mean)或平均(average)轨迹(例如,通过对表示聚类的车辆轨迹的数据进行平均)。在一些实施例中,目标轨迹可以与共同道路段1200的单个车道相关联。

道路模型和/或稀疏地图可以存储与道路段相关联的轨迹。这些轨迹可以称为目标轨迹,目标轨迹被提供给自主车辆以进行自主导航。可以从多个车辆接收、或者可以基于从多个车辆接收的实际轨迹或推荐轨迹(具有一些修改的实际轨迹)生成目标轨迹。稀疏地图或道路模型中包括的目标轨迹可以使用从其他车辆接收的新轨迹持续更新(例如,平均)。

在道路段上行驶的车辆可以通过各种传感器收集数据。数据可能包括地标、道路特征简档、车辆运动(例如,加速度计数据、速率数据)、车辆定位(例如,GPS数据),并且可以自己重建实际轨迹或者将数据传输给将重建车辆的实际轨迹的服务器。在一些实施例中,车辆可以向服务器1230传输与轨迹(例如,任意参考系中的曲线)相关的数据、地标数据和沿着行驶路径的车道指派。在多个驾驶沿着相同道路段行驶的各种车辆可以具有不同的轨迹。服务器1230可以通过聚类过程从自车辆接收的轨迹识别与每个车道相关联的路线或轨迹。

图22示出了对与车辆1205、1210、1215、1220和1225相关联的车辆轨迹进行聚类以用于确定共同道路段(例如,道路段1200)的目标轨迹的过程。从聚类过程确定的目标轨迹或多个目标轨迹可以包括在自主车辆道路导航模型或稀疏地图800中。在一些实施例中,沿道路段1200行驶的车辆1205、1210、1215、1220和1225可以向服务器1230传输多个轨迹2200。在一些实施例中,服务器1230可以基于从车辆1205、1210、1215、1220和1225接收的地标、道路几何结构和车辆运动信息来生成轨迹。如图22所示,为了生成自主车辆道路导航模型,服务器1230可以将车辆轨迹1600聚类成多个聚类2205、2210、2215、2220、2225和2230。

可以使用各种准则来执行聚类。在一些实施例中,聚类中的所有驾驶在关于沿道路段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行驶的其他自主车辆使用。当车辆1205、1210、1215、1220和1225沿道路段1200行驶时由车辆识别的地标可以与目标轨迹相关联地记录。目标轨迹和地标的数据可以在后续驾驶中使用从其他车辆接收的新数据持续或周期性更新。

对于自主车辆的定位,公开的系统和方法可以使用扩展卡尔曼滤波器。车辆的位置可以基于三维定位数据和/或三维朝向数据来确定,通过整合自我运动来预测车辆的当前位置前的未来位置。车辆的定位可以通过地标的图像观测来校正或调整。例如,当车辆在由相机捕获的图像内检测到地标时,可以将该地标与存储在道路模型或稀疏地图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可以包括被配置为通过通信路径1235与服务器1230通信的通信单元2305。导航系统2300还可以包括被配置为接收和处理GPS信号的GPS单元2310。导航系统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)可以用作枢纽(hub)车辆。枢纽车辆(例如车辆1205)的至少一个处理器2315可以执行由服务器1230执行的一些或全部功能。例如,枢纽车辆的至少一个处理器2315可以与其他车辆通信并从其他车辆接收导航信息。枢纽车辆的至少一个处理器2315可以基于从其他车辆接收的共享信息来生成自主车辆道路导航模型或对模型的更新。中枢车辆的至少一个处理器2315可以向其他车辆传输自主车辆道路导航模型或对模型的更新,以提供自主导航引导。

基于稀疏地图的导航

如前所述,包括稀疏地图800的自主车辆道路导航模型可以包括多个绘图的车道标记和与道路段相关联的多个绘图的对象/特征。如下文更详细讨论的,这些绘图的车道标记、对象和特征可以在自主车辆导航时使用。例如,在一些实施例中,绘图的对象和特征可以用于相对于地图(例如,相对于绘图的目标轨迹)定位主车辆。绘图的车道标记可以用于(例如,作为检查)确定相对于规划或目标轨迹的横向定位和/或朝向。利用该定位信息,自主车辆可能能够调整走向方向以匹配确定的定位处的目标轨迹的方向。

车辆200可以被配置为检测给定道路段中的车道标记。道路段可以包括道路上用于引导道路上的车辆交通的任何标记。例如,车道标记可以是划定(demark)行驶的车道的边缘的连续线或虚线。车道标记还可以包括例如指示在相邻车道中是否允许超车的双线,诸如双连续线、双虚线、或连续线和虚线的组合。车道标记还可以包括例如指示出口匝道的减速车道或指示车道仅转弯或车道正在结束的虚线的高速公路(freeway)入口和出口标记。标记还可以指示工作区、临时车道转换、通过交叉路口的行驶路径、中间带、特殊目的车道(例如,自行车车道、HOV车道等)或其他杂项标记(例如,人行横道、减速带、铁路交叉口、停止线等)。

车辆200可以使用诸如包括在图像获取单元120中的图像捕获设备122和124的相机,来捕获周围车道标记的图像。车辆200可以分析图像以基于在一个或多个捕获的图像内识别的特征来检测与车道标记相关联的点位置。这些点位置可以上传到服务器以表示稀疏地图800中的车道标记。取决于相机的定位和视场,可以从单个图像针对车辆两侧同时检测车道标记。在其他实施例中,可以使用不同的相机在车辆的多侧捕获图像。不是上传车道标记的实际图像,而是可以将标记作为样条或一系列点存储在稀疏地图800中,从而减小稀疏地图800的大小和/或必须由车辆远程上传的数据。

图24A-图24D示出了可由车辆200检测以表示特定车道标记的示例性点位置。与上述地标类似,车辆200可以使用各种图像辨识算法或软件来识别捕获的图像内的点位置。例如,车辆200可以辨识与特定车道标记相关联的一系列边缘点、拐角点或各种其他点位置。图24A示出了可以被车辆200检测的连续车道标记2410。车道标记2410可以表示由连续的白线表示的道路的外部边缘。如图24A所示,车辆200可以被配置为检测沿车道标记的多个边缘位置点2411。可以收集位置点2411来以足以在稀疏地图中创建绘图的车道标记的任何间距来表示车道标记。例如,车道标记可以由检测的边缘的每米一个点、检测的边缘的每五米一个点或以其他合适的间隔表示。在一些实施例中,间隔可以通过其他因素(诸如像基于其中车辆200对检测的点的位置具有最高置信排名的点)确定,而不是以设置的间距确定。虽然图24A示出了车道标记2410的内边缘上的边缘位置点,但点可以在线的外部边缘上或沿着两个边缘收集。此外,虽然图24A中示出了单线,但可以为双连续线检测相似的边缘点。例如,可以沿着连续线之一或两者的边缘检测点2411。

车辆200还可以取决于车道标记的类型或形状不同地表示车道标记。图24B示出了可以被车辆200检测的示例性虚线车道标记2420。不是如图24A所示地识别边缘点,而是车辆可以检测表示车道虚线拐角的一系列拐角点2421以定义虚线的完整边界。尽管图24B示出了给定虚线标记的每个拐角被定位,但车辆200可以检测或上传图中所示的点的子集。例如,车辆200可以检测给定虚线标记的居前边缘或居前拐角,或者可以检测车道内部最靠近的两个拐角点。此外,不是每个虚线标记都可以被捕获,例如,车辆200可以捕获和/或记录表示虚线标记的样本(例如,每隔一个、每隔三个、每隔五个等)的点或以预定义的间隔(例如,每米、每5米、每10米等)捕获和/或记录表示虚线标记的点。也可以针对类似的车道标记(诸如示出车道用于出口匝道的标记、特定车道正在结束的标记或可能具有可检测的拐角点的其他各种车道标记)检测拐角点。还可以针对由双虚线或连续线与虚线的组合构成的车道标记检测拐角点。

在一些实施例中,上传到服务器以生成绘图的车道标记的点可以表示除了检测的边缘点或拐角点之外的其他点。图24C示出了可以表示给定车道标记的中心线的一系列点。例如,连续车道2410可以由沿着车道标记的中心线2440的中心线点2441表示。在一些实施例中,车辆200可以被配置为使用各种图像辨识技术(诸如卷积神经网络(CNN)、标度不变特征变换(SIFT)、定向梯度直方图(HOG)特征或其他技术)检测这些中心点。可替代地,车辆200可以检测诸如图24A中所示的边缘点2411的其他点,并且可以例如通过检测沿每个边缘的点并确定边缘点之间的中点来计算中心线点2441。类似地,虚线车道标记2420可以由沿着车道标记的中心线2450的中心线点2451表示。中心线点可以如图24C所示位于虚线的边缘处,或位于沿中心线的各种其他位置处。例如,每个虚线可以由虚线的几何结构中心的单个点表示。点也可以沿着中心线以预定间距(例如,每米、5米、10米等)间隔开。中心线点2451可以由车辆200直接检测,或者可以基于其他检测的参考点(诸如,如图24B所示的拐角点2421)来计算。也可以使用与上述类似的技术将中心线用于表示其他车道标记类型,诸如双线。

在一些实施例中,车辆200可以识别表示其他特征的点,诸如两个相交车道标记之间的顶点(vertex)。图24D示出了表示两个车道标记2460和2465之间的交叉路口的示例性点。车辆200可以计算表示两个车道标记之间的交叉路口的顶点2466。例如,车道标记2460或2465中的一个可以表示火车交叉区域或道路段中的其他交叉区域。虽然车道标记2460和2465被示为相互垂直交叉,但是可以检测各种其他配置。例如,车道标记2460和2465可以以其他角度交叉,或者车道标记中的一个或两者可以终止于顶点2466处。类似的技术也可以应用于虚线或其他车道标记类型之间的相交点。除了顶点2466之外,还可以检测各种其他点2467,从而提供关于车道标记2460和2465的朝向的进一步信息。

车辆200可以将真实世界坐标与车道标记的每个检测的点相关联。例如,可以生成包括每个点的坐标的位置标识符,以上传到服务器用于对车道标记进行绘图。位置标识符还可以包括关于点的其他识别信息,包括该点是否表示拐角点、边缘点、中心点等。因此车辆200可以被配置为基于图像的分析来确定每个点的真实世界定位。例如,车辆200可以检测诸如上述的各种地标的图像中的其他特征,以定位车道标记的真实世界定位。这可能涉及确定图像中车道标记相对于检测的地标的位置或基于检测的地标确定车辆的定位,然后确定从车辆(或车辆的目标轨迹)到车道标记的距离。当地标不可用时,可以相对于基于航迹推算确定的车辆的定位来确定车道标记点的位置。包括在位置标识符中的真实世界坐标可以表示为绝对坐标(例如,纬度/经度坐标),或者可以是相对于其他特征的(诸如基于沿目标轨迹的纵向定位和距目标轨迹的横向距离)。然后可以向服务器上传位置标识符,以用于在导航模型(诸如稀疏地图800)中生成绘图的车道标记。在一些实施例中,服务器可以构建表示道路段的车道标记的样条。可替代地,车辆200可以生成样条并将其上传给服务器以记录在导航模型中。

图24E示出了包括绘图的车道标记的、用于对应的道路段的示例性导航模型或稀疏地图。稀疏地图可以包括车辆沿道路段遵循的目标轨迹2475。如上所述,目标轨迹2475可以表示车辆在其行驶对应的道路段时采用的理想路径,或者目标轨迹2475可以位于道路上的其他地方(例如,道路的中心线等)。目标轨迹2475可以用上述各种方法、例如基于穿越相同道路段的车辆的两个或更多重建轨迹的聚合(例如,加权的组合)来计算。

在一些实施例中,可以为所有车辆类型和所有道路、车辆和/或环境状况等同地生成目标轨迹。然而,在其他实施例中,也可以在生成目标轨迹时考虑各种其他因素或变量。可以为不同类型的车辆(例如,私人汽车、轻型卡车和满载拖车)生成不同的目标轨迹。例如,与较大的半拖车卡车相比,可以为小型私人汽车生成具有相对更收紧的转弯半径的目标轨迹。在一些实施例中,也可以考虑道路、车辆和环境状况。例如,可以针对不同的道路状况(例如,潮湿、下雪、结冰、干燥等)、车辆状况(例如,轮胎状况或估计的轮胎状况、制动器状况或估计的制动器状况、剩余燃料量等)或环境因素(例如,一天中的时间、可见度、天气等)生成不同的目标轨迹。目标轨迹还可以取决于特定道路段的一个或多个方面或特征(例如,速率限制、转弯的频率和大小、坡度等)。在一些实施例中,还可以使用各种用户设置来确定目标轨迹,诸如设置的驾驶模式(例如,期望的驾驶进取性(aggressiveness)、经济性模式等)。

稀疏地图还可以包括表示沿道路段的车道标记的绘图的车道标记2470和2480。绘图的车道标记可以由多个位置标识符2471和2481表示。如上所述,位置标识符可以包括与检测的车道标记相关联的点的真实世界坐标中的位置。类似于模型中的目标轨迹,车道标记也可以包括高度数据,并且可以表示为三维空间中的曲线。例如,曲线可以是连接合适阶数的三维多项式的样条,可以基于位置标识符计算曲线。绘图的车道标记还可以包括关于车道标记的其他信息或元数据,诸如车道标记类型的标识符(例如,在具有相同行驶方向的两个车道之间、在沿相反行驶方向的两个车道之间、车道的边缘等)和/或车道标记的其他特性(例如,连续、虚线、单线、双线、黄色、白色等)。在一些实施例中,绘图的车道标记可以在模型内例如使用众包技术持续更新。相同车辆可以在行驶相同道道路段的多个时机期间上传位置标识符,或者可以从在不同时间行驶该道路段的多个车辆(诸如1205、1210、1215、1220和1225)中选择数据。然后可以基于从车辆接收并存储在系统中的后续位置标识符来更新或细化稀疏地图800。随着绘图的车道标记被更新和细化,更新的道路导航模型和/或稀疏地图可以分发给多个自主车辆。

在稀疏地图中生成绘图的车道标记还可以包括基于图像中或实际车道标记本身中的异常来检测和/或减轻误差。图24F示出了与检测车道标记2490相关联的示例性异常2495。例如,来自遮挡相机对车道标记的视野的对象、透镜上的碎片等的异常2495可能出现在由车辆200捕获的图像中。在一些实例中,异常可能是由于车道标记本身造成的,车道标记可能例如被道路上的泥土、碎屑、水、雪或其他材料部分覆盖,或被损坏或磨损。异常2495可导致车辆200检测误差点2491。稀疏地图800可以提供正确的绘图的车道标记并排除误差。在一些实施例中,车辆200可以例如通过检测图像中的异常2495、或者通过基于在异常之前和之后检测的车道标记点而识别误差,来检测误差点2491。基于检测到异常,车辆可以省略点2491或者可以将其调整为与其他检测的点一致。在其他实施例中,例如,通过基于在相同行程期间上传的其他点或基于来自沿着相同道路段的先前行程的数据的聚合确定该点在预期阈值之外,可以在点已经被上传之后校正误差。

导航模型和/或稀疏地图中的绘图的车道标记也可以用于穿越对应的道路的自主车辆的导航。例如,沿目标轨迹导航的车辆可以周期性地使用稀疏地图中的绘图的车道标记来将其自身与目标轨迹对准。如上所述,车辆可以基于航迹推算(其中,车辆使用传感器来确定其自我运动并估计其相对于目标轨迹的定位)在地标之间导航。误差可能随着时间累积,并且车辆相对于目标轨迹的定位确定可能变得越来越不准确。因此,车辆可以使用出现在稀疏地图800中的车道标记(及其已知位置)来减少航迹推算引起的定位确定中的误差。以这种方式,稀疏地图800中包括的识别的车道标记可以用作从其可以确定车辆相对于目标轨迹的准确定位的导航锚。

图25A示出了可以用于基于绘图的车道标记进行导航的车辆周围环境的示例性图像2500。图像2500可以例如由车辆200通过包括在图像获取单元120中的图像捕获设备122和124来捕获。如图25A所示,图像2500可以包括至少一个车道标记2510的图像。图像2500还可以包括用于如上所述导航的一个或多个地标2521,诸如道路标志。诸如未出现在捕获的图像2500中但被车辆200检测和/或确定的元素2511、2530和2520的、图25A中示出的一些元素也被示出,以供参考。

使用上面关于图24A-图24D和图24F描述的各种技术,车辆可以分析图像2500以识别车道标记2510。可以检测与图像中的车道标记的特征相对应的各种点2511。例如,点2511可以对应于车道标记的边缘、车道标记的拐角、车道标记的中点、两个相交车道标记之间的顶点或各种其他特征或位置。可以检测点2511以对应于存储在从服务器接收的导航模型中的点的位置。例如,如果接收到包含表示绘图的车道标记的中心线的点的稀疏地图,则还可以基于车道标记2510的中心线来检测点2511。

车辆还可以确定由元素2520表示并且沿着目标轨迹定位的纵向定位。可以例如通过检测图像2500内的地标2521并将测量的位置与存储在道路模型或稀疏地图800中的已知地标位置进行比较,从图像2500确定纵向定位2520。然后可以基于到地标的距离和地标的已知位置来确定车辆沿目标轨迹的位置。也可以从除了用于确定车道标记的定位的图像之外的图像来确定纵向定位2520。例如,可以通过检测来自图像获取单元120内的其他相机的图像(该图像与图像2500同时或近乎同时拍摄)中的地标来确定纵向定位2520。在一些实例中,车辆可能不在用于确定纵向定位2520的任何地标或其他参考点附近。在这样的实例中,车辆可以基于航迹推算来进行导航,因此可以使用传感器来确定其自我运动并估计相对于目标轨迹的纵向定位2520。车辆还可以确定表示车辆与在捕获的图像中观察的车道标记2510之间的实际距离的距离2530。在确定距离2530时可以考虑相机角度、车辆速率、车辆宽度或各种其他因素。

图25B示出了基于道路导航模型中的绘图的车道标记的、车辆的横向定位校正。如上所述,车辆200可以使用车辆200捕获的一个或多个图像来确定车辆200和车道标记2510之间的距离2530。车辆200还可以访问诸如稀疏地图800的道路导航模型,其可以包括绘图的车道标记2550和目标轨迹2555。可以使用例如使用由多个车辆捕获的众包位置标识符的上述技术来对绘图的车道标记2550建模。也可以使用先前描述的各种技术来生成目标轨迹2555。车辆200还可以确定或估计沿目标轨迹2555的纵向定位2520,如上面关于图25A所描述的。车辆200然后可以基于目标轨迹2555和对应于纵向定位2520的绘图的车道标记2550之间的横向距离来确定预期距离2540。可以通过将使用捕获的图像测量的实际距离2530与来自模型的预期距离2540进行比较来校正或调整车辆200的横向定位。

图25C和图25D提供了与用于在导航期间基于稀疏地图中绘图的地标/对象/特征来定位主车辆的另一示例相关联的图示。图25C概念性地表示从沿道路段2560导航的车辆捕获的一系列图像。在该示例中,道路段2560包括由道路边缘2561和2562以及中心车道标记2563描画的两车道分开的高速公路的径直部分。如图所示,主车辆正在沿着与绘图的目标轨迹2565相关联的车道2564导航。因此,在理想情形下(并且没有诸如道路中存在目标车辆或对象等的影响者),在主车辆沿道路段2560的车道2564导航时,主车辆应该密切追踪绘图的目标轨迹2565。实际上,在主车辆沿绘图的目标轨迹2565导航时,主车辆可能经历漂移。为了有效和安全的导航,该漂移应保持在可接受的限制内(例如,距目标轨迹2565的横向位移+/-10厘米或任何其他合适的阈值)。为了周期性地考虑漂移并进行任何需要的航线校正以确保主车辆遵循目标轨迹2565,公开的导航系统可以能够使用包括在稀疏地图中的一个或多个绘图的特征/对象沿目标轨迹2565定位主车辆(例如,确定主车辆相对于目标轨迹2565的横向和纵向定位)。

作为简单的示例,图25C示出了当主车辆沿着道路段2560导航时可能出现在五个不同的顺序捕获的图像中的速率限制标志2566。例如,在第一时间t

可以利用诸如标志2566的对象的图像空间表示中的这些改变来确定主车辆沿目标轨迹的局部(localized)定位。例如,如在本公开中所描述的,任何可检测的对象或特征(诸如像标志2566的语义特征,或者可检测的非语义特征),可以由先前穿越道路段(例如,道路段2560)的一个或多个收获车辆识别。绘图服务器可以从多个车辆收集收获的驾驶信息,将该信息聚合并相关,并生成稀疏地图(例如,包括道路段2560的车道2564的目标轨迹2565)。稀疏地图还可以存储标志2566的位置(连同类型信息等)。在导航期间(例如,在进入道路段2560之前),可以向主车辆供应包括路段2560的稀疏地图的地图瓦片(tile)。为了在道路段2560的车道2564中导航,主车辆可以遵循绘图的目标轨迹2565。

主车辆可以使用标志2566的绘图的表示来相对于目标轨迹对其自身进行定位。例如,如图25D所示,主车辆上的相机将捕获主车辆的环境的图像2570,并且该捕获的图像2570可以包括具有一定大小和一定X-Y图像位置的标志2566的图像表示。该大小和X-Y图像位置可以用于确定主车辆相对于目标轨迹2565的定位。例如,基于包括标志2566的表示的稀疏地图,主车辆的导航处理器可以确定:响应于主车辆沿目标轨迹2565行驶,标志2566的表示应出现在捕获的图像中,使得标志2566的中心将沿着线2567(在图像空间中)移动。如果捕获的图像(例如图像2570)示出中心(或其他参考点)从线2567(例如,预期的图像空间轨迹)位移,则主车辆导航系统可以确定在捕获的图像的时间处,其不位于目标轨迹2565上。然而,从图像中,导航处理器可以确定适当的导航校正以将主车辆返回到目标轨迹2565。例如,如果分析示出标志2566的图像位置在图像中向线2567上的预期图像空间位置的左边位移了距离2572,则导航处理器可以引起主车辆的走向改变(例如,改变车轮的转向角)以使主车辆向左移动了距离2573。以这种方式,每个捕获的图像都可以用作反馈循环过程的一部分,使得可以最小化标志2566的观察的图像定位和预期的图像轨迹2567之间的差异,以确保主车辆几乎没有偏差地持续沿着目标轨迹2565。当然,可用的绘图的对象越多,可以采用的描述的定位技术越频繁,这可以减少或消除漂移引起的与目标轨迹2565的偏差。

上述过程可以对检测主车辆相对于目标轨迹的横向朝向或位移有用。主车辆相对于目标轨迹2565的定位还可以包括确定目标车辆沿目标轨迹的纵向位置。例如,捕获的图像2570包括作为具有一定图像大小(例如,2D X-Y像素区域)的标志2566的表示。随着其行驶通过沿着线2567的图像空间(例如,随着标志的大小逐渐增加,如图25C所示),可以将该大小与绘图的标志2566的预期图像大小进行比较。基于图像2570中的标志2566的图像大小,以及基于相对于绘图的目标轨迹2565的、图像空间中的预期大小进展,主车辆可以确定其相对于目标轨迹2565的纵向定位(在捕获图像2570的时间)。如上所述,与相对于目标轨迹2565的任何横向位移耦合的该纵向定位,当主车辆沿道路2560导航时,允许主车辆相对于目标轨迹2565的完全定位。

图25C和图25D仅提供了使用单个绘图的对象和单个目标轨迹的公开的定位技术的一个示例。在其他示例中,可能有更多的目标轨迹(例如,多车道高速公路、城市街道、复杂岔道口等的每个可行车道的一个目标轨迹),并且可能有更多的绘图可用于定位。例如,表示城市环境的稀疏地图每米可能包括许多可用于定位的对象。

图26A是示出了与公开的实施例一致的、用于对车道标记进行绘图以用于自主车辆导航的示例性过程2600A的流程图。在步骤2610,过程2600A可以包括接收与检测的车道标记相关联的两个或更多位置标识符。例如,步骤2610可以由服务器1230或与该服务器相关联的一个或多个处理器执行。如上面关于图24E所描述的,位置标识符可以包括与检测的车道标记相关联的点在真实世界坐标中的位置。在一些实施例中,位置标识符还可以包含其他数据,诸如关于道路段或车道标记的附加信息。在步骤2610期间还可接收附加数据,诸如加速度计数据、速率数据、地标数据、道路几何结构或简档数据、车辆定位数据、自我运动数据或上述各种其他形式的数据。位置标识符可以由诸如车辆1205、1210、1215、1220和1225的车辆基于车辆捕获的图像来生成。例如,可以基于从与主车辆相关联的相机获取表示主车辆的环境的至少一个图像、分析至少一个图像以检测主车辆的环境中的车道标记、以及分析至少一个图像以确定检测的车道标记相对于与主车辆相关联的位置的定位,来确定标识符。如上所述,车道标记可以包括各种不同的标记类型,并且位置标识符可以与关于车道标记的各种点对应。例如,在检测的车道标记是标记车道边界的虚线的部分的情况下,点可以对应于车道标记的检测的拐角。在检测的车道标记是标记车道边界的连续线的部分的情况下,点可以以如上所述的各种间隔对应于车道标记的检测的边缘。在一些实施例中,如图24C所示,点可以对应于检测的车道标记的中心线,或者如图24D所示,点可以对应于两个相交车道标记之间的顶点以及与相交车道标记相关联的至少一个两个其他点。

在步骤2612,过程2600A可以包括将检测的车道标记与对应的道路段相关联。例如,服务器1230可以分析在步骤2610期间接收的真实世界坐标或其他信息,并将坐标或其他信息与存储在自主车辆道路导航模型中的位置信息进行比较。服务器1230可以确定与其中检测到车道标记的真实世界道路段对应的、模型中的道路段。

在步骤2614,过程2600A可以包括基于与检测的车道标记相关联的两个或更多位置标识符来更新关于对应的道路段的自主车辆道路导航模型。例如,自主道路导航模型可以是稀疏地图800,并且服务器1230可以更新稀疏地图,以在模型中包括或调整绘图的车道标记。服务器1230可以基于上面关于图24E描述的各种方法或过程来更新模型。在一些实施例中,更新自主车辆道路导航模型可以包括存储检测的车道标记的真实世界坐标中的定位的一个或多个指示符。如图24E所示,自主车辆道路导航模型还可以包括车辆沿对应的道路段遵循的至少一个目标轨迹。

在步骤2616,过程2600A可以包括将更新的自主车辆道路导航模型分发给多个自主车辆。例如,服务器1230可以将更新的自主车辆道路导航模型分发给可以使用模型进行导航的车辆1205、1210、1215、1220和1225。如图12所示,自主车辆道路导航模型可以通过无线通信路径1235经由一个或多个网络(例如,通过蜂窝网络和/或互联网等)分发。

在一些实施例中,如上文关于图24E所描述的,可以诸如通过众包技术使用从多个车辆接收的数据来对车道标记进行绘图。例如,过程2600A可以包括从第一主车辆接收包括与检测的车道标记相关联的位置标识符的第一通信,以及从第二主车辆接收包括与检测的车道标记相关联的附加的位置标识符的第二通信。例如,可以从在相同道路段上行驶的后续车辆接收第二通信,或者从沿着相同道路段的后续行程上的相同车辆接收第二通信。过程2600A还可以包括基于在第一通信中接收的位置标识符以及基于在第二通信中接收的附加的位置标识符来细化(refine)对与检测的车道标记相关联的至少一个定位的确定。这可以包括使用多个位置标识符的平均值和/或过滤掉可能不反映车道标记的真实世界定位的“幻影”标识符。

图26B是示出用于使用绘图的车道标记沿道路段自主导航主车辆的示例性过程2600B的流程图。过程2600B可以例如由自主车辆200的处理单元110执行。在步骤2620,过程2600B可以包括从基于服务器的系统接收自主车辆道路导航模型。在一些实施例中,自主车辆道路导航模型可以包括主车辆沿道路段的目标轨迹、以及与和道路段相关联的一个或多个车道标记相关联的位置标识符。例如,车辆200可以接收稀疏地图800或使用过程2600A开发的另一个道路导航模型。在一些实施例中,例如,如图9B所示,目标轨迹可以表示为三维样条。如上面关于图24A-图24F所描述的,位置标识符可以包括与车道标记相关联的点的真实世界坐标中的位置(例如,虚线车道标记的拐角点、连续车道标记的边缘点、两个相交车道标记之间的顶点以及与交叉车道标记相关联的其他点、与车道标记相关联的中心线等)。

在步骤2621,过程2600B可以包括接收表示车辆的环境的至少一个图像。可以诸如通过包括在图像获取单元120中的图像捕获设备122和124,从车辆的图像捕获设备接收图像。图像可以包括类似于上述图像2500的一个或多个车道标记的图像。

在步骤2622,过程2600B可以包括确定主车辆沿目标轨迹的纵向定位。如上面关于图25A所描述的,这可以基于捕获的图像中的其他信息(例如,地标等)或通过检测的地标之间的车辆航迹推算。

在步骤2623,过程2600B可以包括基于主车辆沿目标轨迹的确定的纵向定位以及基于与至少一个车道标记相关联的两个或更多位置标识符,来确定到车道标记的预期横向距离。例如,车辆200可以使用稀疏地图800来确定到车道标记的预期横向距离。如图25B所示,可以在步骤2622中确定沿着目标轨迹2555的纵向定位2520。使用稀疏地图800,车辆200可以确定到对应于纵向定位2520的绘图的车道标记2550的预期距离2540。

在步骤2624,过程2600B可以包括分析至少一个图像以识别至少一个车道标记。例如,车辆200可以使用各种图像辨识技术或算法来识别图像内的车道标记,如上所述。例如,如图25A所示,车道标记2510可以通过图像2500的图像分析来检测。

在步骤2625,过程2600B可以包括基于对至少一个图像的分析确定到至少一个车道标记的实际横向距离。例如,车辆可以如图25所示地确定表示车辆和车道标记2510之间的实际距离的距离2530。在确定距离2530中,可以考虑相机角度、车辆速率、车辆宽度、相机相对于车辆的定位或各种其他因素。

在步骤2626,过程2600B可以包括基于到至少一个车道标记的预期横向距离和到至少一个车道标记的确定的实际横向距离之间的差异,来确定主车辆的自主转向动作。例如,如上面关于图25B所描述,车辆200可以将实际距离2530与预期距离2540进行比较。实际距离和预期距离之间的差异可以指示车辆的实际定位和车辆要遵循的目标轨迹之间的误差(及其量值)。因此,车辆可以基于该差异确定自主转向动作或其他自主动作。例如,如图25B所示,如果实际距离2530小于预期距离2540,则车辆可以确定自主转向动作以将车辆导向左边,远离车道标记2510。因此,可以校正车辆相对于目标轨迹的定位。例如,可以使用过程2600B来改进车辆在地标之间的导航。

过程2600A和2600B仅提供可以用于使用公开的稀疏地图导航主车辆的技术的示例。在其他示例中,也可以采用与相对于图25C和图25D所描述的过程一致的过程。

LIDAR输出的自我运动校正

如本公开的其他地方所述,车辆或驾驶员可以沿着环境中的道路段导航车辆。车辆可以收集与道路相关的各种类型的信息。例如,车辆可以配备有LIDAR系统以从来自其环境中的一个或多个对象收集LIDAR反射和/或配备有一个或多个相机以从环境中捕获图像。由于主车辆自身的移动,非移动对象(例如,灯杆)可能在LIDAR系统的视场中移动,其可能作为移动对象出现在收集的数据中(例如,基于对象对激光发射的反射而生成的点云),即使对象本身不移动。因此,在某些实例中,在复杂、杂乱的场景中,可能难以检测小对象和缓慢移动的对象。此外,传统的LIDAR系统可能将较小的对象误识别为移动对象。类似地,传统的LIDAR系统可能将与主车辆一起移动的移动对象(例如,目标车辆)误识别为非移动对象。因此,可能期望减少或消除将非移动对象误识别为移动对象(反之亦然)的可能性。本公开描述了可以跨两个或更多帧相关LIDAR点并移除由主车辆的自我运动引起的深度效应的系统和方法。在移除了由自我运动造成的效应之后,静态对象(例如,非移动背景对象)可能不示出速度(即,其速度等于零),并且移动对象可以被识别为具有包括大于零的速度的点的对象。

例如,本公开提供了可以确定主车辆的自我运动的至少一个指示符的系统。主车辆的自我运动可以指主车辆关于非移动参考点或对象的任何环境位移。例如,如本公开的其他地方所描述的,可以基于捕获的图像的光流分析来估计相机(以及因此车身)的自我运动。图像序列的光流分析从图像序列中识别像素的移动,并基于识别的移动来确定车辆的运动。系统还可以被配置为从与主车辆相关联的LIDAR系统、并且基于LIDAR系统的视场的第一LIDAR扫描、接收在例如第一时间点处的第一点云。第一点云可以包括对象的至少一部分的第一表示。该系统还可以被配置为从LIDAR系统、并且基于LIDAR系统的视场的第二LIDAR扫描,接收在例如第二时间点处的第二点云。第二点云可以包括对象的至少一部分的第二表示。该系统还可以基于主车辆的自我运动的至少一个指示符、以及基于包括对象的至少一部分的第一表示的第一点云与包括对象的至少一部分的第二表示的第二点云的比较,来确定对象的速度。

图27示出了与公开的实施例一致的、用于检测主车辆的环境中的一个或多个对象的示例性系统2700。如图27所示,系统2700可以包括服务器2710、一个或多个车辆2720(例如,车辆2720a、车辆2720b、...、车辆2720n)、网络2730和数据库2740。

车辆2720可以从其环境收集信息并且将收集的信息经由例如网络2730向服务器2710传输。例如,车辆2720可以包括一个或多个传感器,一个或多个传感器被配置为从其环境收集数据和信息。车辆2720可以向服务器2710传输数据和信息(或从其导出的数据)。作为示例,车辆2720可以包括被配置为捕获其环境的一个或多个图像的图像传感器(例如,相机)。作为另一示例,车辆2720可以包括LIDAR系统,LIDAR系统被配置为在车辆2720周围的360度视场内或从360度视场的任何子段(例如,每个表示小于360度的一个或多个FOV)采集(gather)LIDAR反射信息。在一些实施例中,车辆2720可以包括LIDAR系统和一个或多个相机。

服务器2710可以处理从一个或多个车辆2720接收的数据和/或信息。例如,服务器2710可以从车辆2720接收与对象相关的信息(例如,对象的位置)。服务器2710可以更新地图以将对象添加到地图中(或从地图中移除对象)。在一些实施例中,服务器2710可以向一个或多个车辆2720传输更新的地图(或其至少一部分)。

尽管图27示出了一个服务器2710,但是本领域技术人员将理解系统300可以包括单独地或以组合执行本申请中公开的服务器2710的功能的一个或多个服务器2710。例如,服务器2710可以构成包括执行本文公开的功能的两个或更多服务器的云服务器分组。术语“云服务器”是指经由网络(诸如互联网)提供服务的计算机平台。在该示例配置中,服务器2710可以使用可能不对应于单独硬件的虚拟机。例如,计算和/或存储能力可以通过从诸如数据中心或分布式计算环境的可扩张(scalable)存储库分配适当部分的计算/存储力来实现。在一个示例中,服务器2710可以使用定制的硬连线逻辑、一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)、固件和/或程序逻辑(其与计算机系统组合地使服务器2710成为专用机器)来实现本文所述的方法。

网络2730可以被配置为促进系统2700的组件之间的通信。网络2730可以包括有线和无线通信网络,例如局域网(LAN)、广域网(WAN)、计算机网络、无线网络、电信网络等或它们的组合。

数据库2740可以被配置为存储针对系统2700的一个或多个组件的信息和数据。例如,数据库2740可以存储针对服务器2710的数据(例如,地图数据)。一个或多个车辆2720可以例如经由网络2730获得存储在数据库2740中的地图数据。

图28是与公开的实施例一致的示例性服务器2710的框图。如图28所示,服务器2710可以包括至少一个处理器(例如,处理器2801)、存储器2802、至少一个存储设备(例如,存储设备2803)、通信端口2804和I/O设备2805。

处理器2801可以被配置为执行本公开中描述的服务器2710的一个或多个功能。处理器2801可以包括微处理器、预处理器(诸如图像预处理器)、图形处理单元(GPU)、中央处理单元(CPU)、支持电路、数字信号处理器、集成电路、存储器或适合于运行应用或执行计算任务的任何其他类型的设备。在一些实施例中,处理器2801可以包括任何类型的单核或多核处理器、移动设备微控制器、中央处理单元等。可以使用各种处理设备,包括例如可从诸如

服务器2710还可以包括可以存储针对服务器2710的各种组件的指令的存储器2802。例如,存储器2802可以存储指令,当由处理器2801执行时,所述指令可以被配置为使处理器2801执行本文所述的一个或多个功能。存储器2802可以包括任意数量的随机存取存储器、只读存储器、闪存、磁盘驱动器、光存储、磁带存储、可移动存储和其他类型的存储。在一个实例中,存储器2802可以与处理器2801分开。在另一个实例中,存储器2802可以集成到处理器2801中。

存储设备2803可以被配置为存储针对服务器2710的一个或多个组件的各种数据和信息。例如,存储设备2803可以存储地图数据。服务器2710可以基于从一个或多个车辆2720接收的数据和/或信息更新地图数据。服务器2710还可以将更新的地图数据存储到存储设备2803中。存储设备2803可以包括一个或多个硬盘驱动器、磁带、一个或多个固态驱动器、任何适合写入和读取数据的设备等,或其组合。

通信端口2804可以被配置为促进经由网络2730的、服务器2710和系统2700的一个或多个组件之间的数据通信。例如,通信端口2804可以被配置为经由一个或多个公共或私人网络(包括互联网、内联网、WAN(广域网)、MAN(城域网)、符合IEEE 802.11a/b/g/n标准的无线网络、租用线路等)从系统100的一个或多个组件接收数据和向系统100的一个或多个组件传输数据。

I/O设备2805可以被配置为从服务器2710的用户接收输入,并且服务器2710的一个或多个组件可以响应于接收的输入执行一个或多个功能。在一些实施例中,I/O设备2805可以包括显示在触摸屏上的接口。I/O设备2805还可以被配置为向用户输出信息和/或数据。例如,I/O设备2805可以包括被配置为显示地图数据的显示器。

图29是与公开的实施例一致的示例性车辆2720的框图。如图29所示,车辆2720可以包括至少一个处理器(例如,处理器2901)、存储器2902、至少一个存储设备(例如,存储设备2903)、通信端口2904、I/O设备2905、一个或多个传感器2906、LIDAR系统2907和导航系统2908。

处理器2901可以被配置为执行本公开中描述的车辆2720的一个或多个功能。处理器2901可以包括微处理器、预处理器(诸如图像预处理器)、图形处理单元(GPU)、中央处理单元(CPU)、支持电路、数字信号处理器、集成电路、存储器或适合于运行应用或执行计算任务的任何其他类型的设备。在一些实施例中,处理器2901可以包括任何类型的单核或多核处理器、移动设备微控制器、中央处理单元等。可以使用各种处理设备,包括例如可从诸如

车辆2720还可以包括存储器2902,其可以存储用于服务器2710的各种组件的指令。例如,存储器2902可以存储指令,当由处理器2901执行时,所述指令可以被配置为使处理器2901执行本文所述的一个或多个功能。存储器2902可以包括任意数量的随机存取存储器、只读存储器、闪存、磁盘驱动器、光存储、磁带存储、可移动存储和其他类型的存储。在一个实例中,存储器2902可以与处理器2901分开。在另一个实例中,存储器2902可以集成到处理器2901中。在一些实施例中,存储器2902可以包括用于执行一个或多个计算任务的软件,以及经训练的系统,诸如神经网络或深度神经网络。

存储设备2903可以被配置为存储针对车辆2720的一个或多个组件的各种数据和信息。存储设备2903可以包括一个或多个硬盘驱动器、磁带、一个或多个固态驱动器、适合于写入和读取数据的任何设备等,或其组合。

通信端口2904可以被配置为促进经由网络2730的、车辆2720和系统2700的一个或多个组件之间的数据通信。例如,通信端口2904可以被配置为经由一个或多个公共或私人网络(包括互联网、内联网、WAN(广域网)、MAN(城域网)、符合IEEE 802.11a/b/g/n标准的无线网络、租用线路等)从服务器2710接收数据和向服务器2710传输数据。

I/O设备2905可以被配置为从服务器2710的用户接收输入,并且服务器2710的一个或多个组件可以响应于接收的输入执行一个或多个功能。在一些实施例中,I/O设备2905可以包括显示在触摸屏上的接口。I/O设备2905还可以被配置为向用户输出信息和/或数据。例如,I/O设备2905可以包括被配置为显示地图的显示器。在一些实施例中,车辆2720可以经由例如网络2730从服务器2710接收地图(或其至少一部分)的数据。

传感器2906可以被配置为收集与车辆2720和/或车辆2720的环境相关的信息。传感器2906可以包括图像传感器(例如相机)、定位设备(例如全球定位系统(GPS)设备)、加速度计、陀螺仪传感器、速率计等中的一个或多个或其组合。例如,车辆2720可以包括被配置为捕获其环境的一个或多个图像(其可以包括对象(或其至少一部分)的表示)的图像传感器(例如,相机)。作为另一个示例,车辆2720可以包括被配置为在一时间段内收集与车辆2720的定位相关联的定位数据的GPS设备。

LIDAR系统2907可以包括一个或多个LIDAR单元。在一些实施例中,一个或多个LIDAR单元可以定位在车辆2720的车顶上。这样的单元可以包括旋转单元,旋转单元被配置为在车辆2720周围的360度视场内或从360度视场的任何子段(例如,每个表示小于360度的一个或多个FOV)采集LIDAR反射信息。在一些实施例中,LIDAR单元可以定位在车辆2720的前方位置处(例如,前灯附近、前格栅中、雾灯附近、前保险杠中或任何其他合适的位置处)。在一些情况下,安装在车辆2720前方部分的一个或多个LIDAR单元可以从车辆2720前方环境中的视场收集反射信息。LIDAR系统2907收集的数据可以提供给处理器2901。可替代地或附加地,可以经由网络2730向服务器2710和/或数据库2740传输数据。

在车辆2720上可以包括任何合适类型的LIDAR单元。在一些情况下,LIDAR系统2907可以包括其中使用单个激光脉冲照明整个LIDAR视场(FOV)的、一个或多个闪光LIDAR单元(例如,3D闪光LIDAR),以及包括像素的行和列以记录返回的光强度和飞行时间/深度信息的传感器。这样的闪光系统可以每秒多次照明场景并收集LIDAR“图像”。也可以采用扫描LIDAR单元。这样的扫描LIDAR单元可以依赖于用于将激光波束分散到特定的FOV上的一个或多个技术。在某些情况下,扫描LIDAR单元可以包括扫描镜,该扫描镜将激光波束朝着FOV内的对象偏转和导向。扫描镜可以旋转贯穿完整的360度,或者可以沿着单个轴或多个轴旋转小于360度,以将激光朝着预定的FOV导向。在一些情况下,LIDAR单元可以扫描一个水平线。在其他情况下,LIDAR单元可以扫描FOV内的多个水平线,从而有效地每秒对特定FOV进行多次光栅化。

LIDAR系统2907中的LIDAR单元可以包括任何合适的激光源。在一些实施例中,LIDAR单元可以采用连续激光。在其他情况下,LIDAR单元可能依赖于脉冲激光发射。此外,可以采用任何合适的激光波长。在一些情况下,可以使用大约600纳米至大约1000纳米之间的波长。

LIDAR系统2907中的LIDAR单元还可以包括任何合适类型的传感器并提供任何合适类型的输出。在某些情况下,LIDAR单元的传感器可以包括固态光电检测器,诸如一个或多个光电二极管或光电倍增管。传感器还可以包括包含任意数量的像素的一个或多个CMOS或CCD设备。这些传感器可能对从LIDAR FOV内的场景反射的激光敏感。传感器可以使得能够进行来自LIDAR单元的各种类型的输出。在一些情况下,LIDAR单元可以输出表示在每个传感器处或在特定传感器的每个像素或子组件处收集的反射激光的飞行时间信息和原始光强度值。附加或可替代地,LIDAR单元可以输出点云(例如,3D点云),其可以包括关于收集的每个点的光强度和深度/距离信息。LIDAR单元还可以输出表示光反射幅度和到视场内的点的距离的各种类型的深度图(depth map)。LIDAR单元可以通过记下来自LIDAR光源的光最初朝着FOV投射的时间并记录入射激光被LIDAR单元中的传感器接收的时间,来提供关于FOV内特定点的深度或距离信息。时间差可以表示飞行时间,其可以与入射激光从激光源行进(travel)到反射对象并返回到LIDAR单元的往返行程距离直接相关。监视与LIDAR FOV的单独激光光斑或小段相关联的飞行时间信息可以为FOV内的多个点提供准确的距离信息(例如,映射到FOV内对象的甚至非常小的特征)。在某些情况下,LIDAR单元可以输出更复杂的信息,诸如将一个或多个激光反射与从其获取激光反射的对象的类型相关的分类信息。

导航系统2908可以被配置为辅助车辆2720的驾驶员操作车辆2720。例如,导航系统2908可以在对象(例如,另一个车辆)距车辆2720的车身预定距离内时生成警报。作为另一个示例,导航系统2908可以包括被配置为如本公开其他地方所述地控制车辆2720的移动的自主车辆导航系统。在一些实施例中,导航系统2908可以包括高级驾驶员辅助系统(ADAS)系统。

图31是示出与公开的实施例一致的示例性过程3100的流程图。还提及图30A和图30B,图30A和图30B是与公开的实施例一致的导航系统相关联的视场中的示例性对象的示意性图示。虽然下面使用车辆2720作为示例来描述过程3100,但是本领域技术人员将理解服务器2710也可以被配置为执行过程3100的一个或多个步骤。

在步骤3101,车辆2720的处理器2901可以确定主车辆(即,车辆2720)的自我运动的至少一个指示符。主车辆的自我运动可以指主车辆相对于非移动参考点或对象的任何环境位移。主车辆的自我运动的指示符可以包括指示主车辆相对于非移动参考点或对象(例如,建筑物、道路段的边线、电线杆、灯杆、树木等)移动的任何信息。

例如,车辆2720可以包括被配置为从其环境中捕获多个图像的车载相机。处理器2901可以被配置为接收多个图像并且基于多个图像的分析来确定车辆是否关于刚性结构移动(即,车辆的自我运动的指示符)。作为示例,车辆2720的相机可以捕获图30A中所示的图像3000A,然后捕获图30B中所示的图像3000B。处理器2901可以接收并分析图像3000A和3000B以确定车辆关于非移动对象(例如,对象3002、灯杆)正在向前移动。作为示例,处理器2901可以确定在图像3000B中出现的对象3002的大小可能大于在图像3000A中的对象3002的大小。处理器2901还可以确定车辆2720正朝着对象3002移动。可替代地或附加地,可以基于地图信息的分析来确定主车辆的自我运动的至少一个指示符。例如,处理器2901可以确定车辆2720在地图上的第一定位并确定车辆2720在地图上的第二定位,并将第一定位与第二定位进行比较。处理器2901还可以基于比较(例如,第一定位不同于第二定位)来确定主车辆的自我运动的至少一个指示符。可替代地或附加地,可以基于主车辆的走向方向来确定主车辆的自我运动的至少一个指示符。例如,车辆2720可以包括被配置为确定车辆2720的走向方向的传感器(例如,罗盘)。处理器2901可以确定走向方向是否随时间改变,如果是,则处理器2901可以确定主车辆正在移动(即,主车辆的自我运动的一个指示符)。可替代地或附加地,可以基于对来自速率计(例如,指示主车辆的里程随时间的改变)、加速度计(例如,检测主车辆的加速度)和GPS设备(例如,基于随时间接收的GPS信号检测主车辆的定位的改变)中的一个或多个的输出的分析,来确定主车辆的自我运动的至少一个指示符。可替代地或附加地,可以基于随时间收集的一系列点云来确定主车辆的自我运动的至少一个指示符。例如,LIDAR系统2907可以生成在第一时间点处收集的第一点云,其可以包括非移动项目(例如,灯杆)的第一点云表示。LIDAR系统2907可以生成在第一时间点之后的第二时间点处收集的第二点云,其还可以包括相同的非移动对象的第二点云表示。处理器2901可以基于第一点云表示和第二点云表示的差异(例如,指示主车辆从第一时间点到第二时间点朝着灯杆移动)来确定主车辆的自我运动的至少一个指示符。可替代地或附加地,可以基于点云和图像的组合来确定主车辆的自我运动的至少一个指示符。例如,处理器2901可以获得在第一时间点处捕获的第一点云和第一图像,以及在第二时间处捕获的第二点云和第二图像。处理器2901还可以基于第一和第二点云之间的差异以及第一和第二图像之间的差异来确定主车辆的自我运动的至少一个指示符。

在步骤3102,处理器2901可以从与主车辆相关联的LIDAR系统(例如,LIDAR系统2907)并且基于LIDAR系统的视场的第一LIDAR扫描接收第一点云。第一点云可以包括LIDAR系统的视场内的对象的至少一部分的第一表示。在一些实施例中,可以在第一时间点处收集第一点云。

如本公开的其他地方,LIDAR系统2907可以包括被配置为将激光(例如,连续激光或脉冲激光发射)发射到LIDAR系统2907的视场中的激光源。LIDAR系统2907可以包括被配置为检测来自视场中的一个或多个对象的激光的反射的一个或多个传感器。LIDAR系统2907可以生成包括关于由传感器收集的每个点的光强度和深度/距离信息的点云(例如,3D点云)。

LIDAR系统2907可以生成第一点云,该第一点云包括LIDAR系统2907在第一时间点处检测到多个激光反射的所处的、LIDAR系统2907的视场中的多个位置的三维坐标的。LIDAR系统2907还可以向处理器2901传输生成的第一点云以供进一步处理。第一点云可以包括在LIDAR系统2907的视场内的对象的至少一部分的第一表示。点云中包括的对象的至少一部分的表示是指与LIDAR系统2907的一个或多个传感器检测的对象的至少一部分的激光反射相关的信息的集合(collection)。

在一些实施例中,LIDAR系统2907还可以向处理器2901输出表示光反射幅度和到视场内的点的距离的各种类型的深度图。

在步骤3103,处理器2901可以从LIDAR系统2907并且基于LIDAR系统2907的视场的第二LIDAR扫描接收第二点云,第二点云包括对象的至少一部分的第二表示。第二点云可以包括在LIDAR系统2907的视场内的对象的至少一部分的第二表示。在一些实施例中,可以在第二时间点处收集第二点云。第二时间点可以发生在第一时间点之后。

在一些实施例中,第二点云可以包括由LIDAR系统2907检测的多个激光反射所处于的、LIDAR系统2907的视场中的多个位置的三维坐标。

在步骤3104,处理器2901可以基于主车辆的自我运动的至少一个指示符、并基于第一点云(其可以包括对象的至少一部分的第一表示)和第二点云(其可以包括对象的至少一部分的第二表示)的比较来确定对象的速度。在一些实施例中,确定主车辆的速度可以包括确定对象的速率和/或对象的方向。

在一些实施例中,处理器2901可以基于第一点云和第二点云之间的至少一个实际点云差异来确定对象的速度。两个点云之间的实际点云差异是指两个点云的数据的差异。如本公开的其他地方所述,点云是关于由LIDAR系统2907的传感器收集的每个点的光强度和深度/距离信息的集合。处理器2901可以从第二点云数据中减去第一点云的数据以确定实际点云差异。

在一些实施例中,处理器2901还可以确定由于主车辆的自我运动而导致的第一点云和第二点云之间的预期点云差异。如上所述,当主车辆移动时,对象可能在LIDAR系统2907的视场中移动。例如,如果主车辆移动,则在LIDAR系统2907的视场中的非移动对象的位置可能改变。处理器2901可以基于主车辆的速度和/或方向(其可以如本公开的其他地方所描述的那样确定)来确定第一点云和第二点云之间的预期点云差异。预期点云差异是指第一点云(其可以是在第一时间点处测量的测量数据集合)与在第二时间点处的预期点云(其可以基于第一点云以及主车辆的确定的自我运动(例如,主车辆的速度和/或方向)来计算)之间的差异。例如,处理器2901可以基于主车辆的速度和方向和第一点云、基于对象3002(或其至少一部分)的位置从第一时间点到第二时间点相对于LIDAR系统2907的视场的改变,来确定预期点云差异。作为示例,当主车辆正在直行移动时,可以预期对象3002的位置(在图像3000A和图像3000B中示出)朝着LIDAR系统2907的视场中的上面和右面转换。处理器2901可以基于主车辆的速度和/或方向以及对象3001在第一点云中的位置来确定与对象3002的位置改变相关的预期点云差异。可替代地或附加地,处理器2901可以确定相对于第一点云中对象3002的第一点云表示的、出现在第二时间点处的预期第二点云(其可以是与测量的第二点云相比的计算的数据集合)中的对象3002(或其至少一部分)的大小的预期改变。例如,与在第一时间点处第一点云中出现的对象3002的大小相比,在第二时间点处预期第二点云中出现的对象3002的大小可能增加。处理器2901还可以基于对象3002(或其至少一部分)的大小的预期改变来确定预期点云差异。处理器2901还可以基于实际点云差异和预期点云差异的比较来确定对象的速度。例如,如果处理器2901确定实际点云和预期点云之间没有差异(或实际点云和预期点云之间的差异小于阈值),则处理器2901可以确定对象3002的速度等于零(即,对象3002没在移动)。作为另一个示例,如上所述,处理器2901可以基于主车辆的速度和/或方向,来确定预期第二点云(其可以是基于第一点云和主车辆的速度和/或方向的、在第二时间点处计算的点云)中对象3001的点云表示相对于第一点云中对象3001的第一点云表示的大小改变。作为另一个示例,类似于对上述对象3002的速度的确定,处理器2901可以基于与对象3001相关的实际点云差异和预期点云差异的比较来确定对象3001(移动的车辆)的速度。处理器2901还可以确定与对象3001相关的实际点云差异和预期点云差异可以指示对象3001的速度不为零。

在一些实施例中,处理器2901可以基于主车辆的自我运动的至少一个指示符和两个图像的比较来确定主车辆的速度。例如,车辆2720的相机可以在第一时间点处捕获图30A中所示的图像3000A,并且然后在第二时间点处捕获图30B中所示的图像3000B。图像3000A可以包括对象3002的至少一部分(以及对象3001的至少一部分)的第一图像表示,并且图像3000B可以包括对象3002的至少一部分(以及对象3001的至少一部分)的第二图像表示。处理器2901可以基于图像3000A和图像3000B的比较(和/或主车辆的自我运动的至少一个指示符,以及基于第一点云和第二点云的比较)来确定对象3002的速度。在一些实施例中,类似于对上述对象3002的速度的确定,处理器2901可以基于图像3000A和图像3000B的比较来确定对象3001的速度,其中,图像3000A和图像3000B中的每个可以包括对象3001的图像表示。

在一些实施例中,处理器2901可以基于实际图像差异与预期图像差异之间的比较来确定对象的速度。两个图像之间的实际图像差异是指两个图像的数据的差异。由相机捕获的图像可以包括具有与相机的视场中的点对应的光强度(或其他类型的信息)的像素。处理器2901可以从第二图像的像素数据中减去第一图像的像素数据以确定实际图像差异。例如,处理器2901可以通过例如从第二图像中减去第一图像来确定图像3000A和图像3000B之间的至少一个实际图像差异。

处理器2901还可以基于主车辆的自我运动的至少一个指示符(例如,如本公开其他地方所述确定的主车辆的速度和/或方向),来确定第一图像(其是在第一时间点处的测量数据的集合)与预期第二图像(其可以是在第二时间点处的计算的数据的集合)之间的预期图像差异。例如,当主车辆移动时,对象可能在主车辆的车载相机的视场中移动。处理器2901可以基于主车辆的自我运动的至少一个指示符来计算图像3000A(其可以在第一时间点处捕获)和第二时间点处的预期图像(其可以基于主车辆的自我运动来计算)之间的差异。例如,处理器2901可以基于主车辆的速度和方向、基于对象3002(或其至少一部分)的位置相对于相机的视场(例如,图像3000A的视野)的改变来确定预期图像差异。作为示例,如图30A和图30B所示,预期对象3002(即,在相机的视场右侧处的非移动对象)的位置在主车辆直行移动时朝着相机的视场中的上面和右面转换。处理器2901可以基于主车辆的速度和/或方向以及图像3000A中对象3001的位置来确定与对象3002的位置的改变相关的预期图像差异。可替代地或附加地,处理器2901可以基于在第二时间点处的预期图像中的对象3002的图像表示相对于图像3000A中对象3002的第一图像表示的大小改变来确定预期图像差异(例如,与出现在图像3000A中的大小相比,出现在图像3000B中的大小的预期增加)。处理器2901还可以基于实际图像差异与预期图像差异的比较来确定对象的速度。例如,如果处理器2901确定实际图像与预期图像之间没有差异(或实际图像与预期图像之间的差异小于阈值),则处理器2901可以确定对象3002的速度等于零(即,对象3002没在移动)。作为另一个示例,处理器2901可以基于主车辆的速度和/或方向来确定图像3000B中的对象3001的第二图像表示相对于图像3000A中的对象3001的第一图像表示的预期大小改变。作为另一示例,类似于对上述对象3002的速度的确定,处理器2901可以基于与对象3001相关的实际图像差异与预期图像差异的比较来确定对象3001(移动车辆)的速度。

在一些实施例中,处理器2901可以基于实际点云差异与预期点云差异的比较以及实际图像差异与预期图像差异的比较来确定对象的速度。例如,处理器2901可以基于实际点云差异与预期点云差异(如本公开的其他地方所述)确定对象的第一初步速度,并基于实际图像差异与预期图像差异的比较(如本公开其他地方所述)确定对象的第二初步速度。处理器2901还可以基于第一初步速度和第二初步速度确定对象的速度。例如,处理器2901可以将第一初步速度和第二初步速度的平均速度确定为对象的速度。作为另一个示例,在确定对象的速度时,处理器2901可以将第一权重指派给实际点云差异与预期点云差异的比较结果(例如,第一初步速度),并且将第二权重指派给实际图像差异与预期图像差异的比较的结果(例如,第二初步速度)。处理器2901还可以基于例如基于第一权重乘以第一初步速度的乘积以及第二权重乘以第二初步速度的乘积的总和的加权平均,来确定对象的速度。在一些实施例中,第一权重和第二权重可以不同。可替代地,第一权重和第二权重可以相等。

在一些实施例中,处理器2901可以基于对象的速度来确定对象是否正在移动。例如,处理器2901可以确定图30A和图30B中所示的对象3001的速度不为零(这可以基于如本公开其他地方描述的一个或多个步骤来确定),并且确定对象3001正在移动。

在一些实施例中,处理器2901可以基于对象的速度来确定主车辆的至少一个导航动作。例如,处理器2901可以基于确定的速度(其可以包括速率和方向)来确定对象正在朝着主车辆移动。处理器2901还可以确定主车辆的至少一个导航动作。例如,处理器2901可以确定主车辆的导航动作(包括例如加速主车辆、制动主车辆或使主车辆转弯中的至少一个),以避免与对象碰撞。处理器2901还可以指示导航系统2908实施至少一个导航动作。

在一些实施例中,处理器2901可以基于对象的速度来确定是否更新地图(或引起对地图的更新)。例如,处理器2901可以基于对象3002的速度确定对象3002是非移动对象,并且确定不更新地图。另一方面,假设处理器2901基于对象3002的速度确定对象3002是移动对象,处理器2901可以通过从地图中移除对象3002来更新存储在本地存储设备中的地图(如果地图中包括对象3002)。可替代地或附加地,处理器2901可以向服务器2710传输对象3002(例如,作为移动对象)的信息,该服务器2710可以基于接收的信息来更新地图。

在一些实施例中,处理器2901可以基于对象的速度来确定对象的位置。例如,处理器2901可以确定图30A和图30B中所示的对象3002的速度为零并且确定对象3002的位置。处理器2901还可以经由例如网络2730向服务器2710传输对象3002的位置(例如,对象3002的GPS坐标和/或相对于已知对象的位置)。服务器2710可以被配置为基于接收的对象3002的位置来更新地图。例如,服务器2710可以将对象3002的位置添加到地图,或基于接收的对象3002的位置来在地图中修改对象3002的位置。作为另一个示例,处理器2901可以确定对象的速度不为零(即,对象至少在检测的时段期间正在移动)并确定对象的一个或多个位置。处理器2901还可以向服务器2710传输对象的位置,该服务器2710可以基于接收的对象的位置来修改地图。例如,地图可能先前指示对象是非移动对象(例如,道路标志)。服务器2710可以向服务器2710接收指示对象的位置改变了的对象的位置。服务器2710可以通过例如修改对象的位置或从地图中移除对象来更新地图。在一些实施例中,服务器2710可以从多个车辆2720接收对象的位置信息。服务器2710可以基于从多个车辆2720接收的位置信息来更新地图。例如,服务器2710可以被配置为仅当从多个车辆2720接收的、指示对象正在移动的位置信息的百分比等于或大于阈值时更新地图。

LIDAR稀疏地图定位

本公开提供了用于基于主车辆车载的LIDAR系统捕获的LIDAR数据来确定主车辆的定位的系统和方法。在一个实施例中,系统可以分析由LIDAR系统捕获的LIDAR数据,以识别与主车辆的环境中的道路段相关联的地标。系统还可以确定识别的地标是否与系统从服务器接收的稀疏地图中的地标(其在本文中也称为绘图的地标)相匹配。如本公开的其他地方所述,稀疏地图可以由服务器基于由多个车辆收集的数据生成。该系统还可以通过例如将由LIDAR系统捕获的LIDAR数据中的地标的表示与稀疏地图中的绘图的地标进行比较来确定主车辆的定位。

图32示出了与公开的实施例一致的、用于基于由多个车辆收集的信息生成稀疏地图的示例性系统3200。如图32所示,系统3200可以包括服务器3210、一个或多个车辆3220(例如,车辆3220a、车辆3220b、......、车辆3220n)、网络3230和数据库3240。

车辆3220可以从其环境中收集信息并经由例如网络3230向服务器3210传输收集的信息。在一个示例中,车辆3220可以包括被配置为从其环境中收集数据和信息的一个或多个传感器(例如,相机、速率计、GPS设备、加速度计等)。车辆3220可以向服务器3210传输数据和信息(或从其导出的数据)。作为示例,车辆3220可以包括被配置为捕获其环境的一个或多个图像的图像传感器(例如,相机)。可替代地或附加地,车辆3220可以包括被配置为在车辆3220周围的360度视场内或从360度视场的任何子段(例如,每个表示小于360度的一个或多个FOV)采集LIDAR反射信息的LIDAR系统。可替代地或附加地,车载传感器(例如,GPS设备、成像传感器等)可以记录与车辆3220沿着一个或多个道路段的轨迹相关的数据。车辆3220还可以被配置为经由网络3230将收集的数据/信息传输给服务器3210。

服务器3210可以处理从一个或多个车辆3220接收的数据/信息。例如,如本公开其他地方所述,服务器3210可以基于接收的数据/信息来生成或更新地图(例如,稀疏地图)。在一个示例中,服务器3210可以被配置为从车辆3220接收与和道路段相关联的地标相关的数据(例如,地标的位置、类型、大小、形状、语义属性(如果有的话)等)。服务器3210可以基于从车辆3220接收的信息来更新地图以添加或修改地标。作为另一个示例,服务器3210可以被配置为从车辆3220接收与车辆3220沿着道路段的轨迹相关的数据。服务器3210还可以被配置为通过基于接收的数据更新与道路段相关联的目标轨迹来更新稀疏地图。服务器3210还可以被配置为向一个或多个车辆(例如,车辆3220、车辆3400等)传输一个或多个稀疏地图的地图数据。

在一些实施例中,稀疏地图可以包括与一个或多个道路段相关联的一个或多个目标轨迹。例如,稀疏地图可以包括一个或多个目标轨迹,每个目标轨迹在稀疏地图中可以由类似于上面描述和图9B所示的三维样条950的三维样条表示。

在一些实施例中,稀疏地图可以包括与和道路段相关联的地标相关的信息。例如,如上所述,主车辆(例如,图32中所示的车辆3220)车载的LIDAR系统可以从其在车辆的环境中的视场中捕获反射信息。反射信息可以包括与视场中的地标的反射相关的信息。车辆3220可以向服务器3210传输捕获的LIDAR数据,服务器3210可以分析LIDAR数据并识别LIDAR数据(例如,以点云信息的形式)中的地标。服务器3210还可以被配置为在稀疏地图中的点云信息中包括识别的地标的表示。可替代地或附加地,服务器3210可以基于点云信息来确定地标的大小、形状和/或位置,并且将地标的大小、形状和/或位置包括在稀疏地图中。

在一些实施例中,在稀疏地图中可以由一个点位置表示地标。可替代地,在稀疏地图中可以由多个点位置表示地标。例如,地标可以是固定在具有沿两个相反方向的车道的道路段上的桥的一侧的、速率限制标志。在稀疏地图中可以由两个点位置表示地标,每个点位置可以与道路段的方向中的一个相关联。可替代地或附加地,在稀疏地图中可以由对象类型分类表示地标。例如,可包括存在标准化含义的任何类的标志(例如,速率限制标志、警告标志、方向标志等)的、语义标志(即地标)在稀疏地图中可以由对象类型分类(例如,停止标志、速率限制标志等)表示。可替代地或附加地,在稀疏地图中可以由一个或多个对象描述符表示地标。例如,可包括与标准化含义不相关联的任何标志(例如,一般广告标志、识别商业机构的标志等)的、非语义标志在稀疏地图中可以由一个或多个对象描述符(例如,广告标志的内容)表示。

在一些实施例中,稀疏地图可以包括与地标相关的LIDAR数据和/或图像数据。例如,如上所述,车辆(例如,车辆3220)可以向服务器3210传输可以包括LIDAR数据和/或图像数据中的地标的表示的、LIDAR数据和/或图像数据。服务器3210可以分析数据并识别LIDAR数据(例如,以点云信息的形式)和/或图像数据(例如,以一个或多个图像的形式)中的地标。服务器3210还可以将相关的LIDAR和/或图像数据与识别的图像相关联,并将相关的LIDAR和/或图像数据包括在稀疏地图中。例如,服务器3210可以将从目标轨迹(例如,图35B中所示的目标轨迹3531)中的点捕获的一个或多个图像和/或点云信息中的地标的表示包括到稀疏地图(例如,稀疏地图3500)中。

尽管图32示出了一个服务器3210,但是本领域技术人员将理解系统3200可以包括单独或以组合地执行本申请中公开的服务器3210的功能的一个或多个服务器3210。例如,服务器3210可以构成包括执行本文公开的功能的两个或更多服务器的云服务器分组。术语“云服务器”是指经由网络(诸如互联网)提供服务的计算机平台。在该示例配置中,服务器3210可以使用可能不对应于单独硬件的虚拟机。例如,计算和/或存储能力可以通过从诸如数据中心或分布式计算环境的可扩张存储库分配适当部分的计算/存储力来实现。在一个示例中,服务器3210可以使用定制的硬连线逻辑、一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)、固件和/或程序逻辑(其与计算机系统组合地使服务器3210成为专用机器)来实现本文所述的方法。

网络3230可以被配置为促进系统3200的组件之间的通信。网络3230可以包括有线和无线通信网络,例如局域网(LAN)、广域网(WAN)、计算机网络、无线网络、电信网络等或它们的组合。

数据库3240可以被配置为存储系统3200的一个或多个组件的信息和数据。例如,数据库3240可以存储服务器3210的数据(例如,地图数据)。一个或多个车辆3220可以例如经由网络3230获得存储在数据库3240中的地图数据。

图33示出了与公开的实施例一致的示例性服务器3210。如图28所示,服务器2710可以包括至少一个处理器(例如,处理器2801)、存储器2802、至少一个存储设备(例如,存储设备2803)、通信端口2804和I/O设备2805。

处理器3301可以被配置为执行本公开中描述的服务器3210的一个或多个功能。处理器3301可以包括微处理器、预处理器(诸如图像预处理器)、图形处理单元(GPU)、中央处理单元(CPU)、支持电路、数字信号处理器、集成电路、存储器或适合于运行应用或执行计算任务的任何其他类型的设备。在一些实施例中,处理器3301可以包括任何类型的单核或多核处理器、移动设备微控制器、中央处理单元等。可以使用各种处理设备,包括例如可从诸如

服务器3210还可以包括可以存储用于服务器3210的各种组件的指令的存储器3302。例如,存储器3302可以存储指令,当由处理器3301执行时,所述指令可以被配置为使处理器3301执行本文所述的一个或多个功能。存储器3302可以包括任意数量的随机存取存储器、只读存储器、闪存、磁盘驱动器、光存储、磁带存储、可移动存储和其他类型的存储。在一个实例中,存储器3302可以与处理器3301分开。在另一个实例中,存储器3302可以集成到处理器3301中。

存储设备3303可以被配置为存储用于服务器3210的一个或多个组件的各种数据和信息。例如,存储设备3303可以存储地图数据。服务器3210可以基于从一个或多个车辆3220接收的数据和/或信息更新地图数据。服务器3210还可以将更新的地图数据存储到存储设备3303中。存储设备3303可以包括一个或多个硬盘驱动器、磁带、一个或多个固态驱动器、适合于写入和读取数据的任何设备等,或其组合。

通信端口3304可以被配置为促进经由网络3230的、服务器3210和系统3200的一个或多个组件之间的数据通信。例如,通信端口3304可以被配置为经由一个或多个公共或私人网络(包括互联网、内联网、WAN(广域网)、MAN(城域网)、符合IEEE 802.11a/b/g/n标准的无线网络、租用线路等)从系统100的一个或多个组件接收数据以及向系统100的一个或多个组件传输数据。

I/O设备3305可以被配置为从服务器3210的用户接收输入,并且服务器3210的一个或多个组件可以响应于接收的输入执行一个或多个功能。在一些实施例中,I/O设备3305可以包括显示在触摸屏上的接口。I/O设备3305还可以被配置为向用户输出信息和/或数据。例如,I/O设备3305可以包括被配置为显示地图数据的显示器。

图34示出了与公开的实施例一致的示例性车辆3400。如图34所示,车辆3400可以包括至少一个处理器(例如,处理器3401)、存储器3402、至少一个存储设备(例如,存储设备3403)、通信端口3404、I/O设备3405、一个或多个传感器3406、LIDAR系统3407和导航系统3408。在一些实施例中,一个或多个车辆3220可以使用车辆3400的一个或多个组件来实现。

处理器3401可以被编程为执行本公开中描述的车辆3400的一个或多个功能。处理器3401可以包括微处理器、预处理器(诸如图像预处理器)、图形处理单元(GPU)、中央处理单元(CPU)、支持电路、数字信号处理器、集成电路、存储器或适合于运行应用或执行计算任务的任何其他类型的设备。在一些实施例中,处理器3401可以包括任何类型的单核或多核处理器、移动设备微控制器、中央处理单元等。可以使用各种处理设备,包括例如可从诸如

车辆3400还可以包括可以存储用于车辆3400的各种组件的指令的存储器3402。例如,存储器3402可以存储指令,当由处理器3401执行时,所述指令可以被配置为使处理器3401执行本文所述的处理器3401的一个或多个功能。存储器3402可以包括任意数量的随机存取存储器、只读存储器、闪存、磁盘驱动器、光存储、磁带存储、可移动存储和其他类型的存储。在一个实例中,存储器3402可以与处理器3401分开。在另一个实例中,存储器3402可以集成到处理器3401中。在一些实施例中,存储器3402可以包括用于执行一个或多个计算任务的软件,以及经训练的系统,诸如神经网络或深度神经网络。

存储设备3403可以被配置为存储车辆3400的一个或多个组件的各种数据和信息。存储设备3403可以包括一个或多个硬盘驱动器、磁带、一个或多个固态驱动器、适合于写入和读取数据的任何设备等,或其组合。例如,存储设备3403可以被配置为存储一个或多个地图的数据。作为示例,存储设备3403可以存储稀疏地图的数据,其可以包括与道路段相关联的一个或多个地标以及与道路段相关联的一个或多个目标轨迹。

通信端口3404可以被配置为促进经由网络3230的、车辆3400和系统3200的一个或多个组件之间的数据通信。例如,通信端口3404可以被配置为经由一个或多个公共或私人网络(包括互联网、内联网、WAN(广域网)、MAN(城域网)、符合IEEE 802.11a/b/g/n标准的无线网络、租用线路等)从服务器3210接收数据以及向服务器3210传输数据。

I/O设备3405可以被配置为从服务器3210的用户接收输入,并且服务器3210的一个或多个组件可以响应于接收的输入执行一个或多个功能。在一些实施例中,I/O设备3405可以包括显示在触摸屏上的接口。I/O设备3405还可以被配置为向用户输出信息和/或数据。例如,I/O设备3405可以包括被配置为显示地图的显示器。在一些实施例中,车辆3400可以经由例如网络3230从服务器3210接收地图(或其至少一部分)的数据。

传感器3406可以被配置为收集与车辆3400和/或车辆3400的环境相关的信息。传感器3406可以包括图像传感器(例如相机)、定位设备(例如全球定位系统(GPS)设备)、加速度计、陀螺仪传感器、速率计等中的一个或多个或其组合。例如,车辆3400可以包括被配置为捕获其环境的一个或多个图像(其可以包括地标(或其至少一部分)的表示)的图像传感器(例如,相机)。作为另一个示例,车辆3400可以包括被配置为在一时间段内收集与车辆3400的定位相关联的定位数据的GPS设备。

LIDAR系统3407可以包括一个或多个LIDAR单元。在一些实施例中,一个或多个LIDAR单元可以定位在车辆3400的车顶上。这样的单元可以包括旋转单元,旋转单元被配置为在车辆3400周围的360度视场内或从360度视场的任何子段(例如,每个表示小于360度的一个或多个FOV)采集LIDAR反射信息。在一些实施例中,LIDAR单元可以定位在车辆3400的前方位置处(例如,前灯附近、前格栅中、雾灯附近、前保险杠中或任何其他合适的位置处)。在一些情况下,安装在车辆3400前方部分的一个或多个LIDAR单元可以从车辆3400前方的环境中的视场收集反射信息。LIDAR系统3407收集的数据可以提供给处理器3401。可替代地或附加地,可以经由网络3230向服务器3210和/或数据库3240传输数据。

车辆3400上可以包括任何合适类型的LIDAR单元。在一些情况下,LIDAR系统3407可以包括其中使用单个激光脉冲照明整个LIDAR视场(FOV)的、一个或多个闪光LIDAR单元(例如,3D闪光LIDAR),以及包含像素的行和列以记录返回的光强度和飞行时间/深度信息的传感器。这样的闪光系统可以每秒多次照明场景并收集LIDAR“图像”。也可以采用扫描LIDAR单元。这样的扫描LIDAR单元可以依赖于用于将激光波束分散到特定的FOV上的一个或多个技术。在某些情况下,扫描LIDAR单元可以包括扫描镜,该扫描镜将激光波束朝着FOV内的对象偏转和导向。扫描镜可以旋转贯穿完整的360度,或者可以沿着单个轴或多个轴旋转小于360度,以将激光朝着预定的FOV导向。在一些情况下,LIDAR单元可以扫描一个水平线。在其他情况下,LIDAR单元可以扫描FOV内的多个水平线,从而有效地每秒对特定FOV进行多次光栅化。

LIDAR系统3407中的LIDAR单元可以包括任何合适的激光源。在一些实施例中,LIDAR单元可以采用连续激光。在其他情况下,LIDAR单元可能使用脉冲激光发射。此外,可以采用任何合适的激光波长。在一些情况下,可以使用大约600纳米至大约1000纳米之间的波长。

LIDAR系统3407中的LIDAR单元还可以包括任何合适类型的传感器并提供任何合适类型的输出。在某些情况下,LIDAR单元的传感器可以包括固态光电检测器,诸如一个或多个光电二极管或光电倍增管。传感器还可以包括包含任意数量的像素的一个或多个CMOS或CCD设备。这些传感器可能对从LIDAR FOV内的场景反射的激光敏感。传感器可以使得能够进行来自LIDAR单元的各种类型的输出。在一些情况下,LIDAR单元可以输出表示在每个传感器处或在特定传感器的每个像素或子组件处收集的反射激光的飞行时间信息和原始光强度值。附加地或可替代地,LIDAR单元可以输出点云(例如,3D点云),其可以包括关于每个收集的点的光强度和深度/距离信息。LIDAR单元还可以输出表示光反射幅度和到视场内的点的距离的各种类型的深度图。LIDAR单元可以通过记下来自LIDAR光源的光最初朝着FOV投射的时间并记录入射激光被LIDAR单元中的传感器接收的时间,来提供关于FOV内特定点的深度或距离信息。时间差可以表示飞行时间,其可以与入射激光从激光源行进到反射对象并返回到LIDAR单元的往返行程距离直接相关。监视与LIDAR FOV的单独激光光斑或小段相关联的飞行时间信息可以为FOV内的多个点提供准确的距离信息(例如,映射到FOV内对象的甚至非常小的特征)。在某些情况下,LIDAR单元可以输出更复杂的信息,诸如将一个或多个激光反射与从其获取激光反射的对象的类型相关的分类信息。

导航系统3408可以被配置为辅助车辆3400的驾驶员操作车辆3400。例如,导航系统3408可以确定车辆3400当前正从目标轨迹偏离并向驾驶员生成指示从目标轨迹偏离的通知,通知可以显示在显示器上(例如,显示基于车辆3400的当前定位和走向方向确定的估计的行进路径和目标轨迹)。可替代地,如本公开中的其他地方所述,导航系统3408可以包括被配置为控制车辆3400的移动的自主车辆导航系统。例如,导航系统3408可以在车辆3400穿越道路段时实施由处理器3401确定的导航动作(例如,车辆的转向、制动或加速中的一个或多个)。在一些实施例中,导航系统3408可以包括高级驾驶员辅助系统(ADAS)系统。在一些实施例中,导航系统3408可以访问存储在车辆3400车载地提供的存储设备或计算机可读介质中的稀疏地图,以便在车辆穿越道路段时生成用于引导车辆3400的导航指令。

图35A示出了与公开的实施例一致的示例性道路段。如图35A所示,车辆3400在车道3511中驾驶,朝着车道3512移动并且合并到车道3512。车道3512和车道3513被车道分隔器3514分开,并且车道3512中的车辆和车道3513中的车辆可以沿相反的方向移动。地标3521可以位于车道3511和车道3512的交叉路口附近,并且地标3522可以沿着车道3512定位。作为示例,地标3521可以是停止标志,而地标3522可以是速率限制标志。

车辆3400可以从例如与公开的实施例一致的服务器3210接收图35B所示的稀疏地图3500。稀疏地图3500可以包括绘图的导航地标3571和绘图的导航地标3572,它们可以分别对应于图35A中所示的地标3521和地标3522。稀疏地图3500还可以包括从车道3511合并到车道3512的车辆的目标轨迹3531、在车道3512中移动的车辆的目标轨迹3532和在车道3513中移动的车辆的目标轨迹3532。在一些实施例中,稀疏地图3500可以类似于本公开中提供的其他稀疏地图(例如,上述稀疏地图800),并且可以基于如本公开其他地方描述的各种方法(例如,上述用于生成稀疏地图800的方法)来生成。

图35C示出了与公开的实施例一致的车辆3400合并到车道3512。车辆3400可以被配置为从LIDAR系统3407(其可以车载于车辆3400)接收点云信息。点云信息可以表示到车辆3400的环境中的各种对象的距离。例如,点云信息可以包括表示到地标3521的距离3551和到地标3522的距离3552的信息。车辆3400可以被配置将接收的点云信息与稀疏地图3500中的至少一个绘图的导航地标进行比较,以提供车辆3400相对于目标轨迹3531的基于LIDAR的定位。例如,车辆3400可以基于距离3551和距离3552(其可以基于接收的点云信息来确定)来确定车辆3400相对于目标轨迹3531的当前定位。车辆3400还可以被配置为基于相对于目标轨迹3531的基于LIDAR的定位来确定车辆3400的至少一个导航动作。例如,如上所述,车辆3400可以被配置为确定其相对于目标轨迹3531的、在图35C中所示的当前定位(沿实际轨迹3541),并确定其偏离目标轨迹3531(例如,在目标轨迹3531的右侧)。车辆3400还可以确定至少一个导航动作,包括例如沿左方向转向到车辆3400可以遵循目标轨迹3531(以及一旦其已经合并到车道3512后的目标轨迹3532)的程度。车辆3400还可以使导航系统3408实施所确定的导航动作,包括例如沿左方向转向。

图36是示出了与公开的实施例的一致的、用于确定主车辆的导航动作的示例性过程3600的流程图。在步骤3601,处理器3401可以被编程为从位于相对于车辆3400的远处的实体接收与车辆3400要穿越的至少一个道路段相关联的稀疏地图。例如,处理器3401可以经由网络3230从服务器3210接收稀疏地图3500。如图35B所示,稀疏地图3500可以包括绘图的导航地标3571和绘图的导航地标3572。稀疏地图3500还可以包括从车道3511合并到车道3512的车辆的目标轨迹3531,在车道3512中移动的车辆的目标轨迹3532和在车道3513中移动的车辆的目标轨迹3532。在一些实施例中,如在本公开的其他地方描述的(例如,结合上面提供的稀疏地图800的描述),稀疏地图3500(包括绘图的导航地标3571和绘图的导航地标3572,以及目标轨迹3531、3532和3532)可以由服务器3210基于从先前沿着至少一个道路段行驶的多个车辆收集的驾驶信息来生成。

在步骤3602,处理器3401可以被编程为从车载于车辆3400的LIDAR系统3407接收点云信息。在一些实施例中,点云信息可以包括表示到车辆3400环境中的各种对象的距离的信息。如本公开的其他地方,LIDAR系统3407可以包括被配置为将激光(例如,连续激光或脉冲激光发射)发射到LIDAR系统3407的视场中的激光源。LIDAR系统3407可以包括被配置为检测来自视场中一个或多个对象的激光反射的一个或多个传感器。LIDAR系统2907可以生成包括关于传感器收集的每个点的光强度和深度/距离信息的点云(例如,3D点云)。作为示例,处理器3401可以被编程为接收表示图35C所示的到地标3521的距离3551和到地标3522的距离3552的点云信息。

在一些实施例中,处理器3401在步骤3602接收的点云信息可以包括与一定类型的对象相关的深度(或距离)信息以保持处理带宽。例如,点云信息可以包括与车辆3400的环境中的一个或多个垂直朝向的对象相关联的点云信息。与诸如车辆的水平朝向的对象相比,垂直朝向的对象可能不太可能移动。作为示例,点云信息可以包括标志柱、灯柱、道路分隔器支柱、护栏支架和树干中的至少一个。

在步骤3603,处理器3401可以被编程为将接收的点云信息与稀疏地图中的多个绘图的导航地标中的至少一个绘图的导航地标进行比较,以提供车辆3400相对于至少一个目标轨迹的基于LIDAR的定位。车辆3400的基于LIDAR的定位是指基于由LIDAR系统3407捕获的数据(并且在一些实施例中结合其他类型的数据)来确定车辆3400的定位。例如,LIDAR系统3407可以从其在车辆3400的环境中的视场收集反射信息,并且向处理器3401传输收集的LIDAR数据以供进一步处理。处理器3401可以被编程为基于LIDAR数据确定车辆3400到地标(例如,图35C中所示的地标3521)的距离。处理器3401还可以被编程为识别稀疏地图中绘图的导航地标(例如,图35B中所示的绘图的导航地标3571)在点云信息中的表示,并基于所确定的车辆3400到地标3521的距离(例如,图35C中所示的距离3551)来确定车辆3400相对于目标轨迹(例如,图35C中所示的目标轨迹3531)的定位。

在一些实施例中,处理器3401可以被编程为基于点云信息中表示的绘图的导航地标的一个或多个方面,来提供车辆3400相对于目标轨迹的基于LIDAR的定位。例如,处理器3401可以被编程为识别绘图的导航地标(例如,图35B中所示的绘图的导航地标3571)在点云信息中的表示。处理器3401还可以被编程为确定绘图的导航地标的一个或多个方面。例如,处理器3401可以确定由LIDAR系统3407捕获的点云信息中的绘图的导航地标的表示在LIDAR扫描帧内的大小或二维位置中的至少一个。处理器3401还可以被编程为基于稀疏地图(其可能包括地标的大小、位置和/或形状)确定的绘图的导航地标的预期特性集合。绘图的导航地标的预期特性是指将以从目标轨迹上的点查看的点云信息中表示的、绘图的导航地标的特性。例如,处理器3401可以确定目标轨迹3531(图35C中所示)上可能潜在地对应于车辆3400的当前定位的点,并确定从目标轨迹3531上的那个点查看的、绘图的导航地标3571的预期特性集合(例如,包括其大小和二维位置)。作为示例,如上所述,处理器3401可以基于由LIDAR系统3407捕获的点云信息来确定车辆3400到地标3521的距离。处理器3401还可以确定具有与距稀疏地图3500中的绘图的导航地标3571相同距离的、目标轨迹3531上的点。处理器3401还可以确定从目标轨迹3531上的那个点查看的、绘图的导航地标3571的预期特性集合(包括,例如地标3521的大小和/或二维位置)。处理器3401可以将点云信息中表示的绘图的导航地标的一个或多个方面(例如,出现在点云信息中的绘图的导航地标3571的大小)与基于稀疏地图确定的绘图的导航地标的预期特性集合(例如,绘图的导航地标3571的预期大小)进行比较。处理器3401还可以基于比较来确定车辆3400相对于目标轨迹(例如,图35C中所示的目标轨迹3531)的当前定位。例如,如果点云信息中出现的绘图的导航地标3571的大小与绘图的导航地标3571的预期大小之间的差异小于阈值,则处理器3401可以确定车辆3400的当前定位落在目标轨迹3531上。另一方面,如果差异大于阈值,则处理器3401可以确定车辆3400的当前定位离开目标轨迹3531。作为示例,如果出现在点云信息中的绘图的导航地标3571的大小小于绘图的导航地标3571的预期大小,则处理器3401可以确定车辆3400的当前定位在目标轨迹3531的右侧(如图35C所示),因为车辆3400与目标轨迹3531中的预期定位相比更远离地标3521。

在一些实施例中,处理器3401可以被编程为基于从车辆3400的环境中检测的两个或更多地标,来提供车辆3400相对于目标轨迹的基于LIDAR的定位。例如,处理器3401可以被编程为识别两个绘图的导航地标在点云信息中的表示。处理器3401还可以被编程为基于点云信息确定与车辆3400相关联的参考点与绘图的导航地标3571和绘图的导航地标3522中的每一个之间的相对距离。在一些实施例中,参考点可以位于车载于车辆3400的LIDAR系统3407(例如,LIDAR系统3407可以安装在车辆3400的顶部)上。处理器3401还可以被编程为基于与车辆3400相关联的参考点和每个绘图的导航地标之间的相对距离(例如,到绘图的导航地标3571的距离3551以及到绘图的导航地标3572的距离3552),来确定车辆3400相对于目标轨迹(例如,图35C中所示的目标轨迹3531)的当前定位。

在一些实施例中,处理器3401可以使用经训练的神经网络来识别两个绘图的导航地标在点云信息中的表示。可以经由网络3230或本地存储从服务器3210获得经训练的神经网络。经训练的神经网络可以使用多个训练样本而被训练。

在一些实施例中,处理器3401可以被编程为基于两个或更多LIDAR扫描来提供车辆3400相对于目标轨迹的基于LIDAR的定位。例如,LIDAR系统3407可以在第一时间段期间的第一LIDAR扫描(并且在本文中称为第一LIDAR扫描点云)中捕获LIDAR数据,并且在第二时间段期间的第二LIDAR扫描(并且在本文中称为第二LIDAR扫描点云)中捕获LIDAR数据。处理器3401可以被编程为识别绘图的导航地标在第一LIDAR扫描点云中的表示,并且基于第一LIDAR扫描点云确定与车辆3400相关联的参考点(例如,来自LIDAR系统3407)和绘图的导航地标之间的第一相对距离。处理器3401还可以被编程为识别绘图的导航地标在第二LIDAR扫描点云中的表示,并且基于第二扫描点云确定与车辆3400相关联的参考点和绘图的导航地标之间的第二相对距离。处理器3401还可以基于第一和第二相对距离来确定车辆3400相对于目标轨迹的当前定位。例如,处理器3401可以基于根据三角测量(即,通过从已知点形成与车辆3400的三角形来确定点的位置)在两个LIDAR扫描中获得的两个相对距离,来确定车辆3400相对于目标轨迹的定位。

在一些实施例中,在基于两个或更多LIDAR扫描确定车辆3400相对于目标轨迹的基于LIDAR的定位时,处理器3401可以被编程为考虑在与获取第一LIDAR扫描点云相关联的第一时间和与获取第二LIDAR扫描点云相关联的第二时间之间的车辆3400的自我运动。如本公开的其他地方所述,主车辆的自我运动可以指代主车辆关于非移动参考点或对象的任何环境位移。例如,如本公开中其他地方所述,可以基于对车载于车辆3400的相机捕获的图像的光流分析(或本公开中描述的其他方法)来估计车身的自我运动。处理器3401可以被编程为在确定车辆3400的定位时减去第一时间和第二时间之间的自我运动。

在一些实施例中,处理器3401可以被编程为基于图像数据提供车辆3400相对于目标轨迹的基于图像的定位。例如,处理器3401可以被编程为从车载于车辆3400的相机接收包括车辆3400的环境的至少一部分的表示的至少一个捕获的图像。处理器3401还可以被编程为识别一个或多个绘图的导航地标的至少一个捕获的图像(例如,包括地标3522的图像)中的表示。处理器3401还可以被编程为基于稀疏地图3500以及基于至少一个捕获的图像(其可以包括地标3522)中的表示来确定车辆3400相对于目标轨迹(例如,目标轨迹3531)的定位,以提供基于图像的定位。例如,如本公开的其他地方所述,稀疏地图可以包括从目标轨迹3531中的点捕获的地标(例如,地标3522)的图像表示。处理器3401可以将稀疏地图3500中的地标3522的图像表示与由车载于车辆3400的相机捕获的图像中的地标3522的图像表示进行比较,以确定车辆3400相对于目标轨迹3531的定位。作为示例,如果由车载于车辆3400的相机捕获的图像中的地标3522的图像表示看起来比在稀疏地图3500中的地标3522的图像表示更大,则处理器3401可以确定车辆3400在目标轨迹3531的右侧(如图35C所示)。

在一些实施例中,处理器3401可以被编程为根据基于LIDAR的定位和基于图像的定位来确定车辆3400的定位。例如,处理器3401可以被编程为基于LIDAR数据的基于LIDAR的定位,并且基于图像数据确定基于图像的定位,如本公开的其他地方所描述。处理器3401还可以被编程为基于从基于LIDAR的定位获得的定位和从基于图像的定位获得的定位、通过例如确定两个定位之间的平均定位来确定车辆3400的定位。在一些实施例中,处理器3401可以被编程为对基于LIDAR的定位和基于图像的定位中的每一个应用权重以确定两个加权的定位。处理器3401还可被编程为基于加权的定位来确定车辆3400的定位。应用于基于LIDAR的定位的权重和应用于基于图像的定位的权重可以相同或不同。在一些实施例中,可以基于车辆3400的一个或多个当前环境状况来调整应用于基于LIDAR的定位的权重和/或应用于基于图像的定位的权重。例如,如果车辆3400在可能影响使用LIDAR数据的对象的检测的有雾环境中,则处理器3401可以减少应用于基于LIDAR的定位的权重。作为另一个示例,如果在可能影响使用图像数据的对象的检测的夜晚,则处理器3401可以减少应用于基于图像的定位的权重。

在一些实施例中,处理器3401还可以确定与基于LIDAR的定位和基于图像的定位相关联的差异(例如,基于LIDAR数据确定的车辆3400的定位与基于图像数据确定的车辆3400的定位之间的差异)。处理器3401还可以确定两个定位之间的差异是否超过预定阈值。定位差异超过预定阈值可指示LIDAR系统3407和/或相机的潜在问题。如果差异超过预定阈值,则处理器3401可以实施至少一个补救动作。例如,处理器3401可以实现使车辆3400减速、停止车辆3400和发出系统不正常(irregular)的警告中的至少一个。在一些实施例中,处理器3401可以被编程为确定差异的原因。例如,处理器3401可以(例如,经由车载于车辆3400的天气传感器和/或从服务器3210)接收与天气状况相关的信息,并且确定正在下雪。处理器3401可以确定基于LIDAR数据确定的车辆3400的定位与基于图像数据确定的定位之间的差异可能是由雪引起的。在一些实施例中,处理器3401还可以使用在车辆3400车载的显示器上显示的警报或者经由车辆3400的扬声器的警报,向驾驶员(和/或乘客)提供确定的原因。

在步骤3604,处理器3401可以被编程为基于车辆3400相对于至少一个目标轨迹的基于LIDAR的定位来确定车辆3400的至少一个导航动作。在一个示例中,如果处理器3401基于车辆3400相对于目标轨迹3531的基于LIDAR的定位来确定预期车辆3400遵循目标轨迹3531(在图35B中示出),并且确定保持车辆3400的当前走向方向的导航动作,使得车辆3400可以继续遵循目标轨迹3531。另一方面,如果处理器3401确定车辆3400离开目标轨迹3531(如图35C所示),则处理器3401可以被编程为确定改变车辆3400的当前走向方向的导航动作,以减小车辆3400和目标轨迹3531之间的距离。例如,处理器3401可以被编程为确定将车辆3400向左方向转向的导航动作,使得可以减少车辆3400和目标轨迹3531之间的距离。

参照图36,在步骤3605,处理器3401可以被编程为引起车辆3400采取至少一个导航动作。例如,处理器3401可以引起导航系统3408实施所确定的导航动作(例如,向左方向转向车辆3400)。

基于自我运动的LIDAR-相机融合

本公开提供了用于将由主车辆车载的LIDAR系统捕获的LIDAR深度信息与车载相机的图像相关以提供图像(或其一部分)的每个像素的深度信息的系统和方法。由于相机和LIDAR系统之间可能有6个自由度,因此可能需要考虑主车辆的移动以将LIDAR深度信息与图像相关。本公开提供了确定主车辆的自我运动并随时间使用确定的自我运动来将捕获的LIDAR深度信息与捕获的图像相关的解决方案。基于添加到图像中的每个像素的深度信息,系统可以在主车辆中引起一个或多个导航响应,诸如保持或改变当前的走向方向。

图37示出了与公开的实施例一致的示例性车辆3700。可以使用车辆3700的一个或多个组件来实现公开的系统和方法。如图37所示,车辆3700可以包括至少一个处理器(例如,处理器3701)、存储器3702、至少一个存储设备(例如,存储设备3703)、通信端口3704、I/O设备3705、相机3706、LIDAR系统3707和导航系统3708。

处理器3701可以被编程为执行本公开中描述的车辆3700的一个或多个功能。处理器3701可以包括微处理器、预处理器(诸如图像预处理器)、图形处理单元(GPU)、中央处理单元(CPU)、支持电路、数字信号处理器、集成电路、存储器或适合于运行应用或执行计算任务的任何其他类型的设备。在一些实施例中,处理器3701可以包括任何类型的单核或多核处理器、移动设备微控制器、中央处理单元等。可以使用各种处理设备,包括例如可从诸如

车辆3700还可以包括可以存储用于车辆3700的各种组件的指令的存储器3702。例如,存储器3702可以存储指令,当由处理器3701执行时,所述指令可以被配置为使处理器3701执行本文所述的处理器3701的一个或多个功能。存储器3702可以包括任意数量的随机存取存储器、只读存储器、闪存、磁盘驱动器、光存储、磁带存储、可移动存储和其他类型的存储。在一个实例中,存储器3702可以与处理器3701分开。在另一个实例中,存储器3702可以集成到处理器3701中。在一些实施例中,存储器3702可以包括用于执行一个或多个计算任务的软件,以及经训练的系统,诸如神经网络或深度神经网络。

存储设备3703可以被配置为存储车辆3700的一个或多个组件的各种数据和信息。存储设备3703可以包括一个或多个硬盘驱动器、磁带、一个或多个固态驱动器、适合于写入和读取数据的任何设备等、或其组合。例如,存储设备3703可以被配置为存储一个或多个地图的数据。作为示例,存储设备3703可以存储稀疏地图的数据,其可以包括与道路段相关联的一个或多个地标和与道路段相关联的一个或多个目标轨迹。作为另一个示例,存储设备3703可以被配置为存储由相机3706捕获的图像和/或由LIDAR系统3707捕获的LIDAR数据。存储设备3703还可以存储与本公开中描述的每个像素的深度信息相关的一个或多个图像。

通信端口3704可以被配置为促进车辆3700和其他设备之间的数据通信。例如,通信端口3704可以被配置为经由一个或多个公共或私人网络(包括互联网、内联网、WAN(广域网)、MAN(城域网)、符合IEEE 802.11a/b/g/n标准的无线网络、租用线路等)从服务器(例如,本公开中描述的一个或多个服务器)接收数据和向服务器传输数据。

I/O设备3705可以被配置为从车辆3700的用户接收输入,并且车辆3700的一个或多个组件可以响应于接收的输入执行一个或多个功能。在一些实施例中,I/O设备3705可以包括显示在触摸屏上的接口。I/O设备3705还可以被配置为向用户输出信息和/或数据。例如,I/O设备3705可以包括被配置为显示地图的显示器。

相机3706可以被配置为捕获车辆3700的环境的一个或多个图像。在一些实施例中,相机3706可以包括具有全局快门的图像传感器,具有滚动快门的图像传感器等、或其组合。例如,可以与滚动快门一起采用CMOS图像传感器,使得行中的每个像素一次被读取一个,并且基于逐行进行对行的扫描,直到整个图像帧已被捕获。在一些实施例中,可以从相对于帧的顶部到底部顺序地捕获行。滚动快门的使用可能导致不同行中的像素在不同时间处被曝光和捕获,这可能引起捕获的图像帧中的歪斜和其他图像伪影。另一方面,当图像捕获设备3706被配置为使用全局或同步快门操作时,所有像素可以在共同的曝光时段期间被曝光达相同的时间量。结果,从采用全局快门的系统收集的帧中的图像数据表示在特定时间处整个FOV的快照。相比之下,在滚动快门应用中,帧中的每个行在不同的时间被曝光,并且数据在不同的时间被捕获。因此,移动对象在具有滚动快门的图像捕获设备中可能出现失真。将在本公开中其他地方更详细地描述该现象。在一些实施例中,相机3706可以包括被配置为捕获车辆3700的环境的图像的多个相机。尽管参考一个相机提供了以下描述,但是本领域技术人员将理解公开的系统和方法也可以使用两个或更多相机来实现。

LIDAR系统3707可以包括一个或多个LIDAR单元。在一些实施例中,一个或多个LIDAR单元可以定位在车辆3700的车顶上。这样的单元可以包括旋转单元,旋转单元被配置为在车辆3700周围的360度视场内或从360度视场的任何子段(例如,每个表示小于360度的一个或多个FOV)采集LIDAR反射信息。在一些实施例中,LIDAR单元可以定位在车辆3700的前方位置处(例如,前灯附近、前格栅中、雾灯附近、前保险杠中或任何其他合适的位置处)。在一些情况下,安装在车辆3700前方部分的一个或多个LIDAR单元可以从车辆3700的前方环境中的视场收集反射信息。LIDAR系统3707收集的数据可以提供给处理器3701。可替代地或附加地,可以经由网络向本公开中描述的服务器传输数据。

车辆3700上可以包括任何合适类型的LIDAR单元。在一些情况下,LIDAR系统3707可以包括其中使用单个激光脉冲照明整个LIDAR视场(FOV)的、一个或多个闪光(本文中也称为静态)LIDAR单元(例如,3D闪光LIDAR),以及包含像素的行和列以记录返回的光强度和飞行时间/深度信息的传感器。这样的闪光系统可以每秒多次照明场景并收集LIDAR“图像”。因此,对于静态LIDAR系统,LIDAR“图像”的LIDAR数据的整个集合可以具有相同的时间戳。也可以采用扫描LIDAR单元。这样的扫描LIDAR单元可以依赖于用于将激光波束分散到特定的FOV上的一个或多个技术。在某些情况下,扫描LIDAR单元可以包括扫描镜,该扫描镜将激光波束朝着FOV内的对象偏转和导向。扫描镜可以旋转贯穿完整的360度,或者可以沿着单个轴或多个轴旋转小于360度,以将激光朝着预定的FOV导向。在一些情况下,LIDAR单元可以扫描一个水平线。在其他情况下,LIDAR单元可以扫描FOV内的多个水平线,从而有效地每秒对特定FOV进行多次光栅化。在一些实施例中,对于扫描LIDAR系统,每个扫描线可以在不同时间处获取,并且因此具有不同的时间戳。

LIDAR系统3707中的LIDAR单元可以包括任何合适的激光源。在一些实施例中,LIDAR单元可以采用连续激光。在其他情况下,LIDAR单元可能使用脉冲激光发射。此外,可以采用任何合适的激光波长。在一些情况下,可以使用大约600纳米至大约1000纳米之间的波长。

LIDAR系统3707中的LIDAR单元还可以包括任何合适类型的传感器并提供任何合适类型的输出。在某些情况下,LIDAR单元的传感器可以包括固态光电检测器,诸如一个或多个光电二极管或光电倍增管。传感器还可以包括包含任意数量的像素的一个或多个CMOS或CCD设备。这些传感器可能对从LIDAR FOV内的场景反射的激光敏感。传感器可以使得能够进行来自LIDAR单元的各种类型的输出。在一些情况下,LIDAR单元可以输出表示在每个传感器处或在特定传感器的每个像素或子组件处收集的反射激光的飞行时间信息和原始光强度值。附加或可替代地,LIDAR单元可以输出点云(例如,3D点云),其可以包括关于每个收集的点的光强度和深度/距离信息。LIDAR单元还可以输出表示光反射幅度和到视场内的点的距离的各种类型的深度图。LIDAR单元可以通过记下来自LIDAR光源的光最初朝着FOV投射的时间并记录入射激光被LIDAR单元中的传感器接收的时间,来提供关于FOV内的特定点的深度或距离信息。时间差可以表示飞行时间,其可以与入射激光从激光源行进到反射对象并返回到LIDAR单元的往返行程距离直接相关。监视与LIDAR FOV的单独激光光斑或小段相关联的飞行时间信息可以为FOV内的多个点提供准确的距离信息(例如,映射到FOV内对象的甚至非常小的特征)。在某些情况下,LIDAR单元可以输出更复杂的信息,诸如将一个或多个激光反射与从其获取激光反射的对象的类型相关的分类信息。

导航系统3708可以被配置为辅助车辆3700的驾驶员操作车辆3700。例如,导航系统3708可以确定车辆3700当前正从目标轨迹偏离并向驾驶员生成指示从目标轨迹偏离的通知,通知可以显示在显示器上(例如,显示基于车辆3700的当前定位和走向方向而确定的估计的行进路径和目标轨迹)。可替代地,如本公开中的其他地方所述,导航系统3708可以包括被配置为控制车辆3700的移动的自主车辆导航系统。例如,导航系统3708可以在车辆3700穿越道路段时实施由处理器3701确定的导航动作(例如,车辆的转向、制动或加速中的一个或多个)。在一些实施例中,导航系统3708可以包括高级驾驶员辅助系统(ADAS)系统。在一些实施例中,导航系统3708可以被配置为根据一个或多个导航动作引起与车辆3700的转向系统、制动系统或驾驶系统相关联的一个或多个致动器的激活。

在一些实施例中,车辆3700还可以包括被配置为收集与车辆3700和/或车辆3700的环境相关的信息的一个或多个传感器。示例性传感器可以包括定位设备(例如全球定位系统(GPS)设备)、加速度计、陀螺仪传感器、速率计等、或其组合。例如,车辆3700可以包括被配置为在一时间段内收集与车辆3700的定位相关联的定位数据的GPS设备。

图38是示出了与公开的实施例一致的、用于确定主车辆的导航动作的示例性过程3800的流程图。还提及图39A和图39B,它们是示例性点云信息和图像的示意性图示。虽然下面使用车辆3700作为示例来描述过程3800,但是本领域技术人员将理解服务器(例如,本公开中描述的一个或多个服务器)也可以被配置为执行过程3800的一个或多个步骤。例如,车辆3700可以经由网络向服务器传输相机3706捕获的图像和LIDAR系统3707捕获的LIDAR数据。服务器可以被配置为将LIDAR数据与图像相关,以提供图像的一个或多个区域的每个像素的深度信息。服务器还可以被配置为向车辆3700传输每个像素的深度信息以进行进一步处理。

在步骤3801,处理器3701可以被编程为从相机3706接收表示车辆3700的环境的至少一个捕获的图像。例如,相机3706可以被配置为在第一时间点处(或者如果图像由滚动快门相机捕获,则在第一时间段内)捕获图39A中所示的图像3921。相机3706还可以被配置为在第一时间点之后的第二时间点处(或者如果图像由滚动快门相机捕获,则在第一时间段之后的第二时间段内)捕获图39B中所示的图像3922。

在一些实施例中,如上所述,相机3706可以包括全局快门相机(即,配备有具有全局快门的图像传感器的相机)。当相机3706被配置为使用全局或同步快门操作时,所有像素可以在共同的曝光时段期间被曝光达相同的时间量。结果,从采用的全局快门相机收集的帧中的所有像素可以具有相同的时间戳。可替代地或附加地,相机3706可以包括滚动快门相机(即,配备有具有滚动快门的图像传感器的相机)。例如,相机3706可以包括具有滚动快门的相机,使得行中的每个像素可以一次读取一个,并且基于逐行进行对行的扫描,直到整个图像帧已被捕获。在一些实施例中,可以从相对于帧的顶部到底部(或从底部到顶部)顺序地捕获行。因此,一个行的图像数据可以具有与另一行的图像数据不同的时间戳。

在一些实施例中,处理器3701可以被编程为从相机3706接收图像的每个像素的捕获时间的信息。例如,对于由全局快门相机捕获的图像,针对所有像素,捕获时间可以是相同的,并且处理器3701可以从相机3706获得捕获时间。对于滚动快门相机捕获的图像,在一些实施例中,图像的至少一些行可以具有与其他行的捕获时间不同的捕获时间。处理器3701可以从相机3706获得图像的每个行的捕获时间。

参照图38,在步骤3802,处理器3701可以被编程为从主车辆车载的LIDAR系统接收点云信息。点云信息可以表示到车辆3700的环境中的各种对象的距离。LIDAR系统3707可以从其在车辆3700的环境中的视场捕获反射信息。反射信息可以包括与视场中的各种对象的反射相关的信息。例如,如果LIDAR数据(其可以由图39A中所示的点云“图像”3911表示)由静态LIDAR系统捕获(或在第三时间段内,LIDAR数据由扫描LIDAR系统捕获),则LIDAR系统3707可以在第三时间点处捕获来自其视场中的各种对象的反射信息。如果LIDAR数据(其可以由图39B中所示的点云“图像”3912表示)由静态LIDAR系统捕获(或在第三时间段之后的第四时间段内,LIDAR数据由扫描LIDAR系统捕获),则LIDAR系统3707可以在第三时间点之后的第四时间点处捕获来自其视场中的各种对象的反射信息。

在一些实施例中,处理器3701可以被编程为从LIDAR系统3707获得接收点云信息中的每个点的捕获时间的信息。例如,针对静态LIDAR系统捕获的点云信息,对于点云信息的所有点,捕获时间可以是相同的,并且处理器3701可以从LIDAR系统3707获得捕获时间,并将获得的捕获时间用于点云信息中的所有点。对于扫描LIDAR系统捕获的点云信息,在一些实施例中,点云信息中的至少一些线的点可以具有与其他线不同的捕获时间。例如,如本公开中其他地方所述,LIDAR系统3707可以包括被配置为一次一个水平线的扫描LIDAR系统,并且由扫描LIDAR系统捕获的点云信息的每个线的点可以具有不同的捕获时间。作为另一示例,LIDAR系统3707可以包括被配置为一次扫描FOV内的多个水平线(并且在本文中被称为线的扫描分组)的扫描LIDAR系统,并且每个扫描分组的线的点可以具有与其他分组的线的捕获时间不同的捕获时间。处理器3701可以从LIDAR系统3707获得每个线的捕获时间(或每个扫描分组的线的捕获时间)。

在一些实施例中,可以基于一时间段内的LIDAR数据(例如,在多个帧上捕获的LIDAR数据)来累积点云信息。例如,LIDAR系统3707可以捕获多个帧并通过累积帧的LIDAR数据(例如,累积帧的深度信息)来生成点云信息。可替代地,处理器3701可以被编程为接收帧的LIDAR数据,并累积LIDAR数据以生成可提供密集点云的点云信息。

在一些实施例中,可以在捕获图像的相同时间点处获取点云信息。在其他实施例中,在获取捕获的图像的时间戳之前(或之后)。例如,点云“图像”3911可以在图像3921的时间戳之前(或之后)被获取。可替代地,一些点云信息在获取至少一个捕获的图像的时间戳之前被获取,并且一些点云信息在获取至少一个捕获的图像的时间戳之后被获取。例如,对于可以一次扫描一水平线的扫描LIDAR系统捕获的点云信息,一些线可能在获取捕获的图像的时间戳之前被捕获,而其他线可能在获取捕获的图像的时间戳之后被捕获。

参照图38,在步骤3803,处理器3701可被编程为将点云信息与至少一个捕获的图像相关,以提供至少一个捕获的图像的一个或多个区域的每个像素的深度信息。例如,处理器3701可以被编程为识别点云信息中与图像的区域对应的区域,并且例如通过将点的深度信息指派给图像中的对应像素,来将点云信息中的该区域的点映射到图像的该区域的对应的像素。

在一些实施例中,处理器3701可以在将深度信息与图像的像素相关之前调整点云信息中的区域和/或图像的对应区域。例如,处理器3701可以在将点云信息的深度信息与图像相关之前拉伸或收缩图像的一个或多个区域以适配点云信息的对应区域。

在一些实施例中,点云信息的捕获时间和图像的捕获时间可以不同。处理器3701可以被编程为将点云信息扭曲(warp)(或映射)到获取捕获的图像的时间戳。例如,LIDAR系统3707可以在第一捕获时间处捕获点云信息,并且点云信息可以包括第一时间戳。相机3706可以在第一捕获时间之后的第二捕获时间处捕获图像。该图像可以包括第二时间戳。处理器3701可以将点云信息的深度信息与图像相关。在一些实施例中,第一和第二时间戳可以相同或不同。

在一些实施例中,处理器3701可以选择点云信息的多个集合中的一个集合以与图像相关。例如,当没有点云信息具有与要相关的图像相同的捕获时间时,处理器3701可以选择具有与图像的捕获时间最靠近的捕获时间的点云信息,并将选择的点云信息的深度信息与图像相关,来为图像的一个或多个区域提供每个像素的深度信息。可替代地或附加地,处理器3701可以基于两个集合的点云信息确定点云信息的估计的集合,并将点云信息的估计的集合的深度信息与图像相关。例如,处理器3701可以获得在获取图像之前获取的第一集合的点云信息并获得在获取图像之后获取的第二集合的点云信息。处理器3701可以确定点云信息的估计的(或内插的)集合(例如,通过对两个集合的点云信息的深度进行平均以获得每个点处的平均深度)。处理器3701还可以将点云信息的估计的集合的深度信息与图像相关。

在一些实施例中,当第一和第二时间戳不同时,在将点云信息的深度信息与图像相关时,处理器3701可以考虑车辆3700的自我运动。在一些实例中,如果点云信息和图像是在不同时间处获取的,则将点云信息的深度信息与图像直接相关可能不准确。处理器3701可以确定在点云信息的捕获时间和图像的捕获时间之间的时间段内的自我运动,并相应地调整点云信息的深度信息。例如,处理器3701可以被编程为向表示在车辆3700的移动方向上的对象的、点云信息的深度信息添加(或减去)由车辆3700的自我运动(在点云信息的捕获时间与图像的捕获时间之间的时间段内)引起的距离或深度。在一些实施例中,处理器3701可以基于一个或多个传感器的输出表示在点云信息的捕获时间与图像的捕获时间之间的时间段内的定位改变,来确定车辆3700的自我运动。例如,车辆3700可以包括被配置为在该时间段内追踪车辆3700的定位的一个或多个传感器(例如,速率计、加速度计或GPS传感器中的至少一个)。处理器3701可以基于来自一个或多个传感器的输出来确定车辆3700在该时间段内的自我运动。可替代或附加地,处理器3701可以基于在由相机3706捕获的两个或更多图像之间观察的对象的光流来确定自我运动。例如,处理器3701可以将第一图像中的非移动对象(例如,灯杆)的位置与第二图像中的非移动对象的位置进行比较,以确定车辆3700的自我运动。在一些实施例中,处理器3701可以基于与车辆3700相关联的一个或多个传感器的输出以及由相机3706捕获的两个或更多图像之间观察的对象的光流的组合来确定自我运动。

在一些实施例中,车辆3700的自我运动可以基于如本公开中其他地方描述的一个或多个方法(例如,结合图31及其描述提供的用于确定主车辆的自我运动的一个或多个方法)来确定。

在步骤3804,处理器3701可以被编程为基于至少一个捕获图像的一个或多个区域的每个像素的深度信息来确定车辆3700的至少一个导航动作。示例性导航动作可以包括保持车辆3700的当前走向方向和速率、改变车辆3700的当前走向方向、或改变车辆3700的速率中的至少一个。例如,处理器3701可以分析至少一个捕获的图像的一个或多个区域以及至少一个捕获的图像的一个或多个区域的每个像素的深度信息,以识别预定安全距离内的对象。处理器3701还可以被配置为确定车辆3700的导航动作以使车辆3700减速或转向离开识别的对象。

在步骤3805,处理器3701可以被编程为引起车辆3700采取至少一个导航动作。例如,处理器3701可以被编程为通过引起与车辆3700的转向系统(例如,保持或改变当前走向方向)、制动系统(例如,降低当前速率)或驾驶系统(例如,加速、减速、降低当前速率)相关联的一个或多个致动器的激活,来引起车辆3700采取至少一个导航动作。

LIDAR和相机有效地(validly)检测不同的事物的LIDAR-相机融合

在某些情况下,主车辆可能配备有LIDAR系统和相机。由于相对于主车辆的物理位置的差异,LIDAR系统和相机可能具有不同的视场,并从主车辆的环境中捕获不同的场景信息。例如,LIDAR系统可能位于主车辆的车顶上,而相机可能位于风挡后面。因此,在一些实例中,LIDAR系统可以检测到相机没有捕获的对象(例如,目标车辆)(例如,该对象可能被在主车辆紧前方的车辆遮挡)。当系统试图将LIDAR系统的感测信息与相机的感测信息对准时,这些差异可能引起问题,这可能会导致将这样的信息作为潜在错误而丢弃的可能性。本公开提供了用于确定在检测LIDAR系统的感测的信息与相机的感测的信息之间的差异时主车辆可以采取的潜在动作的系统和方法。例如,如果LIDAR和/或相机检测到主车辆紧前方的车辆,则可以理解,该车辆可能遮挡只有安装较高的LIDAR系统能够检测的区域内的更前方的对象。在这样的情况下,公开的系统和方法可以使用由LIDAR系统和相机收集的信息来检测对象并确定主车辆响应于对象的检测可以采取什么动作。

图40示出了与公开的实施例一致的示例性车辆4000。公开的系统和方法可以使用车辆4000的一个或多个组件来实现。如图40所示,车辆4000可以包括至少一个处理器(例如,处理器4001)、存储器4002、至少一个存储设备(例如,存储设备4003)、通信端口4004、I/O设备4005、相机4006、LIDAR系统4007和导航系统4008。

处理器4001可以被编程为执行本公开中描述的车辆4000的一个或多个功能。处理器4001可以包括微处理器、预处理器(诸如图像预处理器)、图形处理单元(GPU)、中央处理单元(CPU)、支持电路、数字信号处理器、集成电路、存储器或适合于运行应用或执行计算任务的任何其他类型的设备。在一些实施例中,处理器4001可以包括任何类型的单核或多核处理器、移动设备微控制器、中央处理单元等。可以使用各种处理设备,包括例如可从诸如

车辆4000还可以包括可以存储用于车辆4000的各种组件的指令的存储器4002。例如,存储器4002可以存储指令,当由处理器4001执行时,所述指令可以被配置为使处理器4001执行本文所述的处理器4001的一个或多个功能。存储器4002可以包括任意数量的随机存取存储器、只读存储器、闪存、磁盘驱动器、光存储、磁带存储、可移动存储和其他类型的存储。在一个实例中,存储器4002可以与处理器4001分开。在另一个实例中,存储器4002可以集成到处理器4001中。在一些实施例中,存储器4002可以包括用于执行一个或多个计算任务的软件,以及经训练的系统,诸如神经网络或深度神经网络。

存储设备4003可以被配置为存储车辆4000的一个或多个组件的各种数据和信息。存储设备4003可以包括一个或多个硬盘驱动器、磁带、一个或多个固态驱动器、适合于写入和读取数据的任何设备等、或其组合。例如,存储设备4003可以被配置为存储一个或多个地图的数据。作为示例,存储设备4003可以存储稀疏地图的数据,其可以包括与道路段相关联的一个或多个地标和与道路段相关联的一个或多个目标轨迹。作为另一个示例,存储设备4003可以被配置为存储由相机4006捕获的图像和/或由LIDAR系统4007捕获的LIDAR数据。

通信端口4004可以被配置为促进车辆4000和其他设备之间的数据通信。例如,通信端口4004可以被配置为经由一个或多个公共或私人网络(包括互联网、内联网、WAN(广域网)、MAN(城域网)、符合IEEE 802.11a/b/g/n标准的无线网络、租用线路等)从服务器(例如,本公开中描述的一个或多个服务器)接收数据和向服务器传输数据。

I/O设备4005可以被配置为从车辆4000的用户接收输入,并且车辆4000的一个或多个组件可以响应于接收的输入来执行一个或多个功能。在一些实施例中,I/O设备4005可以包括显示在触摸屏上的接口。I/O设备4005还可以被配置为向用户输出信息和/或数据。例如,I/O设备4005可以包括被配置为显示地图的显示器。

相机4006可以被配置为捕获车辆4000的环境的一个或多个图像。相机4006可以包括适合于从环境中捕获至少一个图像的任何类型的设备。在一些实施例中,相机4006可以类似于图1中所示和上面描述的图像捕获设备122、124和126。在一些实施例中,相机4006可以包括被配置为捕获车辆4000的环境的图像的多个相机。尽管参考一个相机提供了以下描述,但是本领域技术人员将理解公开的系统和方法也可以使用两个或更多相机来实现。

相机4006可以定位在车辆4000上的任何合适的位置处。例如,相机4006可以位于车辆4000的风挡后面、车辆4000的前保险杠附近、车辆4000的后视镜附近、车辆4000的一个或两个侧视镜、车辆4000的车顶上、车辆4000的引擎盖上、车辆4000的后备箱上、车辆4000的侧面上,安装在车辆4000的任何窗户上、定位在车辆4000的任何窗户后、或定位在车辆4000的任何窗户前以及安装在车辆200的前面和/或后面的灯型中或附近等。

LIDAR系统4007可以包括一个或多个LIDAR单元。在一些实施例中,一个或多个LIDAR单元可以定位在车辆4000的车顶上。这样的单元可以包括旋转单元,旋转单元被配置为在车辆4000周围的360度视场内或从360度视场的任何子段(例如,每个表示小于360度的一个或多个FOV)采集LIDAR反射信息。LIDAR系统4007收集的数据可以提供给处理器4001。可替代地或附加地,可以经由网络向本公开中描述的服务器传输数据。

在一些实施例中,LIDAR单元可以定位在车辆4000的前方位置处(例如,前灯附近、前格栅中、雾灯附近、前保险杠中或任何其他合适的位置处)。在一些情况下,安装在车辆4000前方部分的一个或多个LIDAR单元可以从车辆4000前方环境中的视场收集反射信息。在其他实施例中,LIDAR单元可以位于其他位置。例如,LIDAR单元可以位于车辆4000的风挡后面、车辆4000的前保险杠附近、车辆4000的后视镜附近、车辆4000的侧视镜中的一个或两个、车辆4000的车顶上、车辆4000的引擎盖上、车辆4000的后备箱上、车辆4000的侧面上,安装在车辆4000的任何窗户上、定位在车辆4000的任何窗户后、或定位在车辆4000的任何窗户前,以及安装在车辆4000的前面和/或后面的灯型中或附近等。

在一些实施例中,LIDAR系统4007可以位于与相机4006的位置不同的位置。例如,相机4006可以位于车辆4000的风挡后面,并且LIDAR系统4007可以安装在车辆4000的车顶上。作为另一个示例,相机4006位于车辆4000的前保险杠附近,并且LIDAR系统4007安装在车辆4000的车顶上。作为另一个示例,相机4006位于车辆4000的风挡后面,并且LIDAR系统4007位于车辆4000的前保险杠附近。在一些实施例中,相机4006可以具有与LIDAR系统4007的FOV不同的FOV,但是相机4006的FOV可以至少部分地与LIDAR系统4007的FOV重叠,以提供共享的视场区域。

车辆4000中可以包括任何合适类型的LIDAR单元。在一些情况下,LIDAR系统4007可以包括其中使用单个激光脉冲照明整个LIDAR视场(FOV)的、一个或多个闪光(本文中也称为静态)LIDAR单元(例如,3D闪光LIDAR),以及包含像素的行和列以记录返回的光强度和飞行时间/深度信息的传感器。这样的闪光系统可以每秒多次照明场景并收集LIDAR“图像”。也可以采用扫描LIDAR单元。这样的扫描LIDAR单元可以依赖于将激光波束分散到特定的FOV上的一个或多个技术。在某些情况下,扫描LIDAR单元可以包括扫描镜,该扫描镜将激光波束朝着FOV内的对象偏转和导向。扫描镜可以旋转贯穿完整的360度,或者可以沿着单个轴或多个轴旋转小于360度,以将激光朝着预定的FOV导向。在一些情况下,LIDAR单元可以扫描一个水平线。在其他情况下,LIDAR单元可以扫描FOV内的多个水平线,从而有效地每秒对特定FOV进行多次光栅化。

LIDAR系统4007中的LIDAR单元可以包括任何合适的激光源。在一些实施例中,LIDAR单元可以采用连续激光。在其他情况下,LIDAR单元可能使用脉冲激光发射。此外,可以采用任何合适的激光波长。在一些情况下,可以使用大约600纳米至大约1000纳米之间的波长。

LIDAR系统4007中的LIDAR单元还可以包括任何合适类型的传感器并提供任何合适类型的输出。在某些情况下,LIDAR单元的传感器可以包括固态光电检测器,诸如一个或多个光电二极管或光电倍增管。传感器还可以包括包含任意数量的像素的一个或多个CMOS或CCD设备。这些传感器可能对从LIDAR FOV内的场景反射的激光敏感。传感器可以使得能够进行来自LIDAR单元的各种类型的输出。在一些情况下,LIDAR单元可以输出表示在每个传感器处或在特定传感器的每个像素或子组件处收集的反射激光的飞行时间信息和原始光强度值。附加或可替代地,LIDAR单元可以输出点云(例如,3D点云),其可以包括关于每个收集的点的光强度和深度/距离信息。LIDAR单元还可以输出表示光反射幅度和到视场内的点的距离的各种类型的深度图。LIDAR单元可以通过记下来自LIDAR光源的光最初朝着FOV投射的时间并记录入射激光被LIDAR单元中的传感器接收的时间,来提供关于FOV内特定点的深度或距离信息。时间差可以表示飞行时间,其可以与入射激光从激光源行进到反射对象并返回到LIDAR单元的往返行程距离直接相关。监视与LIDAR FOV的单独激光光斑或小段相关联的飞行时间信息可以为FOV内的多个点提供准确的距离信息(例如,映射到FOV内对象的甚至非常小的特征)。在某些情况下,LIDAR单元可以输出更复杂的信息,诸如将一个或多个激光反射与从其获取激光反射的对象的类型相关的分类信息。

导航系统4008可以被配置为辅助车辆4000的驾驶员操作车辆4000。例如,导航系统4008可以确定车辆4000当前正从目标轨迹偏离,并向驾驶员生成指示从目标轨迹偏离的通知,该通知可以显示在显示器上(例如,显示基于车辆4000的当前定位和走向方向而确定的估计的行进路径和目标轨迹)。可替代地,如本公开中的其他地方所述,导航系统4008可以包括被配置为控制车辆4000的移动的自主车辆导航系统。例如,导航系统4008可以在车辆4000穿越道路段时实施由处理器4001确定的导航动作(例如,车辆的转向、制动或加速中的一个或多个)。在一些实施例中,导航系统4008可以包括高级驾驶员辅助系统(ADAS)系统。在一些实施例中,导航系统4008可以被配置为根据一个或多个导航动作引起与车辆4000的转向系统、制动系统或驾驶系统相关联的一个或多个致动器的激活。

在一些实施例中,车辆4000还可以包括被配置为收集与车辆4000和/或车辆4000的环境相关的信息的一个或多个传感器。示例性传感器可以包括定位设备(例如全球定位系统(GPS)设备)、加速度计、陀螺仪传感器、速率计等、或其组合。例如,车辆4000可以包括被配置为在一时间段内收集与车辆4000的定位相关联的定位数据的GPS设备。

图41是示出了与公开的实施例一致的、用于确定主车辆的导航动作的示例性过程4100的流程图。还提及图42,其是车辆4000的示例性环境的示意性图示。

在步骤4101,处理器4001可以被编程为从车辆4000车载的相机4006接收表示车辆4000的环境的至少一个捕获的图像。在一些实施例中,相机4006可以被配置为类似于本公开中其他地方描述的用于捕获图像的一个或多个过程地捕获表示车辆4000的环境的一个或多个图像。

相机4006可以定位在相对于车辆4000的第一位置处。例如,相机4006可以位于车辆4000的风挡后面、车辆4000的前保险杠附近、车辆4000的后视镜附近、车辆4000的侧视镜中的一个或两个、车辆4000的车顶上、车辆4000的引擎盖上、车辆4000的后备箱上、车辆4000的侧面上,安装在车辆4000的任何窗户上、定位在车辆4000的任何窗户后、或定位在车辆4000的任何窗户前,以及安装在车辆4000的前面和/或后面的灯型中或附近等。作为示例,如图42所示,相机4006可以位于车辆4000的前保险杠附近。

在一些实施例中,相机4006可以被配置为在一时间段内捕获可以指示车辆4000相对于环境中的一个或多个对象的移动(例如,居前车辆的减速)的多个捕获的图像。

参考图41,在步骤4102,处理器4001可以被编程为从主车辆车载的LIDAR系统接收点云信息。如本公开的其他地方所述,点云信息可以表示到主车辆的环境中的各种对象的距离。LIDAR系统4007可以从其在车辆4000的环境中的视场捕获反射信息。反射信息可以包括与视场中的各种对象的反射相关的信息。在一些实施例中,点云信息可以包括多个捕获的LIDAR帧。LIDAR帧可以指代在扫描周期期间捕获的LIDAR数据。在一个示例中,典型的帧时间可能持续少于一秒。在一些实施例中,LIDAR系统4007可以具有固定的帧速率(例如,每秒10帧、每秒25帧、每秒50帧)或者帧速率可以是动态的。类似于相机4006在上述一时间段内捕获的一系列图像,处理器4001也可以使用多个捕获的LIDAR帧来确定车辆4000相对于环境中的一个或多个对象(例如,居前车辆的减速)的移动。

在一些实施例中,LIDAR系统4007可以定位在相对于车辆4000的第二位置处。例如,LIDAR系统4007可以定位在车辆4000的前方位置处(例如,前灯附近、前格栅中、雾灯附近、前保险杠中或任何其他合适的位置处)。在一些情况下,安装在车辆4000的前方部分的LIDAR系统4007可以从车辆4000前方环境中的视场收集反射信息。在其他实施例中,LIDAR系统4007可以位于其他位置。例如,LIDAR系统4007可以位于车辆4000的风挡后面、车辆4000的前保险杠附近、车辆4000的后视镜附近、车辆4000的侧视镜中的一个或两个、车辆4000的车顶上、车辆4000的引擎盖上、车辆4000的后备箱上、车辆4000的侧面上,安装在车辆4000的任何窗户上、定位在车辆4000的任何窗户后、或定位在车辆4000的任何窗户前,以及安装在车辆4000的前面和/或后面的灯型中或附近等。

在一些实施例中,第二位置(LIDAR系统4007所定位的地方)和第一位置(相机4006所定位的地方)可以不同。例如,相机4006可以位于车辆4000的风挡后面,而LIDAR系统4007可以安装在车辆4000的车顶上。作为另一个示例,相机4006可以位于车辆4000的前保险杠附近,并且LIDAR系统4007安装在车辆4000的车顶上。作为另一个示例,相机4006位于车辆4000的风挡后面,并且LIDAR系统4007位于车辆4000的前保险杠附近。在一些实施例中,相机4006可以具有与LIDAR系统4007的FOV不同的FOV,但是相机4006的FOV可以至少部分地与LIDAR系统4007的FOV重叠,以提供共享的视场区域。在一些实施例中,相机4006的视场可以至少部分地与LIDAR系统4007的视场重叠以提供共享的视场区域。作为示例,如图42所示,相机4006位于车辆4000的前保险杠附近,LIDAR系统4007安装在车辆4000的车顶上。LIDAR系统4007具有LIDAR FOV 4017,并且相机4006具有相机FOV 4016,相机FOV 4016可以至少部分地与LIDAR系统4007的视场重叠以提供共享FOV区域4018。共享FOV区域可以指代相机4006和LIDAR系统4007二者可以感测的区域,但它们的有利(vantage)点差异可能导致它们在共享FOV区域中可以检测的差异。作为示例,如图42所示,较低定位的相机4006(例如,位于车辆4000的前保险杠附近)可以仅感测一个居前车辆(例如,第一车辆4201),但较高定位的LIDAR系统4007(例如,位于车辆4000的车顶上)可以感测居前车辆(例如,第二车辆4202)之外的对象。另一方面,在另一个示例中,定位在主车辆格栅中的相机可以感测非常靠近主车辆的对象(例如,图42中所示的地上的对象4211,其中安装在主车辆的车顶上的LIDAR系统可能被主车辆的引擎盖遮挡)。作为另一个示例,LIDAR系统可以更好地查看可能被主车辆的引擎盖从捕获的相机图像中遮挡的更靠近的对象。

参照图41,在步骤4103,处理器4001可以被编程为分析至少一个捕获的图像和接收的点云信息,以检测共享的视场区域(例如,图42中所示的共享FOV区域4018)中的一个或多个对象。检测的一个或多个对象可以仅在至少一个捕获的图像或接收的点云信息中的一个中被表示。作为示例,如图42所示,处理器4001可以被编程为分析至少一个捕获的图像和接收的点云信息,并检测地上的对象4211,该对象可能在共享FOV区域4018中。然而,给定LIDAR系统4007的视野LIDAR可能被车辆4000的引擎盖遮挡,则对象4211可能会出现在至少一个捕获的图像中,但不出现在点云信息中。在一些实施例中,处理器4001在步骤4103检测的对象可以包括位于主车辆前方的目标车辆前的对象。在一个示例中,如图42所示,尽管第二车辆4202也可能出现在相机FOV 4016(和第二车辆4202)中,但第二车辆4202从相机4006的视野被第一车辆4201(即,居前车辆或目标车辆)阻挡。结果,第二车辆4202可能出现在点云信息中,但不出现一个或多个捕获的图像中。在步骤4103由处理器4001检测的对象可以包括道路中的静态对象(例如,道路上的减速带)。在一些实施例中,处理器4001在步骤4103检测的对象可以包括位于车辆4000前但足够靠近以致车辆4000的部分(例如,车辆4000的前部)从至少一个捕获的图像或点云信息遮挡一个或多个对象的对象。作为示例,如图42所示,处理器4001可以检测地上的对象4211,该对象可能被车辆4000的引擎盖阻挡并且可能仅出现在捕获的图像中。

在步骤4104,处理器4001可以被编程为确定相机4006的第一位置和LIDAR系统4007的第二位置之间的有利点差异是否考虑了仅在至少一个捕获的图像或接收的点云信息中的一个中表示一个或多个检测的对象。例如,处理器4001可以基于FOV和/或相机4006和LIDAR系统4007的位置来确定有利点差异。处理器4001还可以确定对象(在步骤4103)是否在至少一个捕获的图像或接收的点云信息中的一个中不出现,而在另一个中出现,是由于有利点的差异。

如果处理器4001确定有利点差异未考虑仅在至少一个捕获的图像或接收的点云信息中的一个中表示一个或多个检测的对象,则过程4100进行到步骤4105。在步骤4105,处理器4001可以被编程为引起采取至少一个补救动作。补救动作可以包括向车辆4000的乘客和/或驾驶员发出警告(例如,在检测到道路上的减速带之后)或在主车辆的导航中忽略一个或多个检测的对象(例如,在检测到地上的小对象后)中的至少一个。

在一些实施例中,至少一个补救动作可以包括将不同的权重应用于基于至少一个捕获的图像的分析的、基于图像的检测路径,以及基于点云信息的分析的、基于LIDAR的检测路径。在某些情况下,相机4006和LIDAR系统的检测结果的差异可能不是由于相机4006和LIDAR系统4007之间的有利点差异,而是由于其他原因。例如,检测结果的差异可能是由于某些环境状况。作为示例,LIDAR系统4007可以在太阳眩光环境(或高反射环境,或在没有路灯的夜晚时间期间的弱光状况等)中比相机4006表现更好。因此,处理器4001可以在点云信息中检测到对象,但在相机4006捕获的图像中没有检测到对象,即使该对象出现在相机4006和LIDAR系统4007两者的视野中。另一方面,相机4006可以在雾天或雨天比LIDAR系统4007表现更好。因此,处理器4001可以在图像中检测到对象,但在点云信息中没有检测到对象。如果处理器4001确定有利点差异未考虑仅在至少一个捕获的图像或接收的点云信息中的一个中表示一个或多个检测的对象,则处理器4001可以将不同的权重应用于基于至少一个捕获的图像的分析的、基于图像的检测路径,以及基于点云信息的分析的、基于LIDAR的检测路径。例如,如果处理器4001确定在点云信息中未检测到对象是由于天气状况(例如,雨天),则处理器4001可以对基于图像的检测路径应用比基于LIDAR的检测路径的权重更高的权重,这可能给出更准确的检测结果。作为另一示例,如果处理器4001确定在图像中未检测到对象是由于光照状况(例如,车辆4000在没有路灯的夜晚时间期间导航),则处理器4001可以对基于图像的检测路径应用比基于LIDAR的检测路径的权重更低的权重。

如果处理器4001确定有利点差异确实考虑了仅在至少一个捕获的图像或接收的点云信息中的一个中表示一个或多个检测的对象,则过程4100可以进行到步骤4106。在步骤4106,处理器4001可以被编程为基于一个或多个检测的对象确定车辆4000要采取的至少一个导航动作,并且在步骤4107引起车辆4000采取至少一个导航动作。如本公开的其他地方所述,由处理器确定并由车辆4000采取的导航动作可以包括保持或改变当前走向方向、增加或降低当前速率等、或它们的组合。处理器4001还可以被编程为引起车辆4000根据用于控制在本公开的其他地方描述的导航系统的一个或多个方法采取至少一个导航动作。例如,处理器4001可以被编程为通过引起与车辆4000的转向系统(例如,保持或改变当前走向方向)、制动系统(例如,降低当前速率)或驾驶系统(例如,加速、减速、降低当前速率)相关联的一个或多个致动器的激活,来引起车辆4000采取至少一个导航动作。

在一些实施例中,处理器4001可以基于检测的动作或检测的对象的移动来确定至少一个导航动作。例如,如上所述,处理器4001可以在由LIDAR系统4007捕获的点云信息中检测图42中所示的第二车辆4202(其在第一车辆4201即目标车辆前)。尽管第一车辆4201,但处理器4001可以被编程为基于检测的第二车辆4202的动作来确定导航动作。例如,尽管目标车辆未被检测到减速,但处理器4001可以被编程为基于例如点云信息的多个LIDAR帧来检测第二车辆4202的减速。处理器4001还可被编程为确定制动车辆4000的导航动作。处理器4001还可被编程为使导航系统4008制动车辆4000。

伪LIDAR

本公开提供了可以推断由一个或多个分组的相机捕获的图像的像素中的深度信息的系统和方法。例如,在一些实施例中,主车辆可以包括相机分组,该相机分组可以包括三个相机,即中心相机、左环绕相机和右环绕相机。中心相机的FOV可以至少部分地与左环绕相机的FOV和右环绕相机的FOV两者重叠。中心相机可以被配置为在中心相机的FOV中捕获至少在主车辆的环境的一部分中的一个或多个图像(在本文中也称为中心图像)。左环绕相机可以被配置为在左环绕相机的FOV中捕获至少在主车辆的环境的一部分中的一个或多个图像(在本文中也称为左环绕图像)。右环绕相机可以被配置为在右环绕相机的FOV中捕获至少在主车辆的环境的一部分中的一个或多个图像(在本文中也称为右环绕图像)。主车辆可以从中心相机接收捕获的中心图像、从左环绕相机接收捕获的左环绕图像以及从右环绕相机接收捕获的右环绕图像。主车辆还可以将接收的图像提供给分析模块,该分析模块可以被配置为基于中心图像、左环绕图像和右环绕图像的分析来生成关于中心图像的输出。在一些实施例中,生成的输出可以包括中心图像的至少一个区域的每个像素的深度信息。主车辆还可以基于包括中心图像的至少一个区域的每个像素的深度信息的生成的输出,来采取至少一个导航动作。

图43示出了与公开的实施例一致的示例性车辆4300。公开的系统和方法可以使用车辆4300的一个或多个组件来实现。如图43所示,车辆4300可以包括至少一个处理器(例如,处理器4301)、存储器4302、至少一个存储设备(例如,存储器设备4303)、通信端口4304、I/O设备4305、多个相机4306、LIDAR系统4307和导航系统4308。

处理器4301可以被编程为执行本公开中描述的车辆4300的一个或多个功能。处理器4301可以包括微处理器、预处理器(诸如图像预处理器)、图形处理单元(GPU)、中央处理单元(CPU)、支持电路、数字信号处理器、集成电路、存储器、或适合于运行应用或执行计算任务的任何其他类型的设备。在一些实施例中,处理器4301可以包括任何类型的单核或多核处理器、移动设备微控制器、中央处理单元等。可以使用各种处理设备,包括例如可从诸如

车辆4300还可以包括可以存储用于车辆4300的各种组件的指令的存储器4302。例如,存储器4302可以存储指令,当由处理器4301执行时,可以被配置为使处理器4301执行本文所述的处理器4301的一个或多个功能。存储器4302可以包括任意数量的随机存取存储器、只读存储器、闪存、磁盘驱动器、光存储、磁带存储、可移动存储和其他类型的存储。在一个实例中,存储器4302可以与处理器4301分开。在另一个实例中,存储器4302可以被集成到处理器4301中。在一些实施例中,存储器4302可以包括用于执行一个或多个计算任务的软件,以及经训练的系统,诸如神经网络(例如,经训练的深度神经网络)或深度神经网络。例如,如本公开的其他地方所述,存储器4302可以包括分析模块,分析模块由处理器4301可访问用于接收图像并生成关于图像之一的输出。

在一些实施例中,分析模块可以包括基于训练数据而被训练的至少一个经训练的模型,训练数据包括由具有至少部分重叠的场的相机捕获的多个图像以及与多个图像中的至少一些图像对应的LIDAR点云信息的组合。例如,每个训练数据集合可以包括三个图像,每个图像可以由安装在训练车辆上的相机分组(包括中心相机、左环绕相机和右环绕相机)中的一个相机捕获。中心相机的FOV可以至少部分地与左环绕相机的FOV和右环绕相机的FOV重叠。训练数据集合还可以包括由安装在相同车辆上的LIDAR系统捕获的点云信息,其可以提供与由该相机分组捕获的图像相关联的测量的深度信息。点云信息可以被视为用于训练神经网络的参考深度信息(或真实深度值)。可以将训练数据集合中的图像(和/或提取的图像特征)输入到初步的(或未训练的)神经网络中,该神经网络可以为中心图像的至少一个区域生成包括计算的每个像素的深度信息的输出。计算的每个像素的深度信息可以与点云信息的对应的深度信息进行比较,以确定神经网络是否具有满足或超过用于生成每个像素的深度信息的预定准确度水平的模型参数或权重。例如,用于训练神经网络的训练系统可以基于计算的深度信息与点云信息(被包括在训练数据集合中)中的对应的深度信息的比较来生成神经网络的准确度分数。如果准确度分数等于或超过阈值,则训练过程可以停止,并且训练系统可以将经训练的神经网络保存到本地存储设备中和/或向一个或多个车辆(例如车辆4300)传输经训练的神经网络。另一方面,如果准确度分数低于阈值,则训练系统可以调整神经网络的一个或多个参数或权重,并使用训练数据集合重复训练过程,直到达到神经网络的准确度分数等于或超过阈值(和/或已达到预定数量的训练周期)。

在一些实施例中,当训练神经网络时,可以使用分数函数(或损失)的组合,其可包括提供由网络基于训练数据集合的图像计算的深度信息的分数的光度(photometric)损失。对于合适的深度,可以最小化对应的图像块之间的外观差异,这可以在存在纹理特征的图像区域中提供指导。此外,可以使用由训练车辆的LIDAR系统收集的LIDAR点测量的投射(projection)来计算更稀疏的分数函数。可以使用车辆的计算的自我运动在场景中的一个或多个静态对象上聚合这些点。投射可以考虑在训练过程期间要由神经网络计算深度信息的图像的像素强度可以被记录的时刻与LIDAR数据也可以被记录的捕获时间之间的时间差。静态对象可以基于单目图像对象检测器来确定,以最小化假负例率(以大的假负例率为代价)。在一些实施例中,还可以训练神经网络以通过回归其自身几何误差的幅度来预测计算的深度信息的置信度分数,这可以在训练时使用LIDAR的几何标签进行优化。

在一些实施例中,车辆4300可以经由网络从服务器接收分析模块并将分析模块存储在存储器4302和/或存储设备4303中。

存储设备4303可以被配置为存储车辆4300的一个或多个组件的各种数据和信息。存储设备4303可以包括一个或多个硬盘驱动器、磁带、一个或多个固态驱动器、适合于写入和读取数据的任何设备等,或其组合。例如,存储设备4303可以被配置为存储一个或多个地图的数据。作为示例,存储设备4303可以存储稀疏地图的数据,其可以包括与道路段相关联的一个或多个地标和与道路段相关联的一个或多个目标轨迹。作为另一个示例,存储设备4303可以被配置为存储由相机4306捕获的图像和/或由LIDAR系统4307捕获的LIDAR数据。

通信端口4304可以被配置为促进车辆4300和其他设备之间的数据通信。例如,通信端口4304可以被配置为经由一个或多个公共或私人网络(包括互联网、内联网、WAN(广域网)、MAN(城域网)、符合IEEE 802.11a/b/g/n标准的无线网络、租用线路等)从服务器(例如,本公开中描述的一个或多个服务器)接收数据和向服务器传输数据。

I/O设备4305可以被配置为从车辆4300的用户接收输入,并且车辆4300的一个或多个组件可以响应于接收的输入执行一个或多个功能。在一些实施例中,I/O设备4305可以包括显示在触摸屏上的接口。I/O设备4305还可以被配置为向用户输出信息和/或数据。例如,I/O设备4305可以包括被配置为显示地图的显示器。

相机4306可以被配置为捕获车辆4300的环境的一个或多个图像。相机4306可以包括适合于从环境中捕获至少一个图像的任何类型的设备。在一些实施例中,相机4306可以类似于图1中所示和上面描述的图像捕获设备122、124和126。为了简洁起见,这里不重复详细的描述。

相机4306可以定位在车辆4300上的任何合适的位置处。例如,相机4306可以位于车辆4300的风挡后面、车辆4300的前保险杠附近、车辆4300的后视镜附近、车辆4300的侧视镜中的一个或两个、车辆4300的车顶上、车辆4300的引擎盖上、车辆4300的后备箱上、车辆4300的侧面上,安装在车辆4300的任何窗户上、定位在车辆4300的任何窗户后、或定位在车辆4300的任何窗户前,以及安装在车辆4300的前面和/或后面的灯型中或附近等。

在一些实施例中,相机4306可以包括一个或多个分组的相机。每个分组的相机可以包括三个相机,即中心相机、左环绕相机和右环绕相机。作为示例,如图44所示,车辆4300可以包括相机分组,包括中心相机4410、左环绕相机4420和右环绕相机4430。中心相机4410可以定位于车辆4300的后视镜附近和/或车辆4300的驾驶员附近。左环绕相机4420和右环绕相机4430可以定位在车辆4300的保险杠区域上或保险杠区域中。其他配置也是可能的。例如,中心相机4410、左环绕相机4420和右环绕相机4430可以定位在车辆4300的后视镜附近和/或靠近驾驶员座椅。

在一些实施例中,中心相机4410的FOV可以至少部分地与左环绕相机4420的FOV和右环绕相机4430的FOV两者重叠。作为示例,如图44所示,中心相机4410可以具有中心相机FOV 4411,左环绕相机4420可以具有左环绕FOV 4421,并且右环绕相机4430可以具有右环绕FOV 4431。中心相机FOV 4411可以与左环绕FOV 4421和右环绕FOV 4431至少部分地重叠。例如,可能存在中心相机FOV 4411和左环绕FOV 4421的重叠区域4412,以及中心相机FOV 4411和右环绕FOV 4431的重叠区域4413。在一些实施例中,中心相机4410、左环绕相机4420和右环绕相机4430中的两个或更多可以具有不同的FOV(如图44所示)。

在一些实施例中,中心相机4410、左环绕相机4420和右环绕相机4430中的两个或更多可以具有不同的焦距。在一些实施例中,可以选择具有相邻FOV之间的广范围的角重叠的中心相机4410、左环绕相机4420和右环绕相机4430的焦距,使得系统可以从中心相机4410、左环绕相机4420和右环绕相机4430捕获的图像推断深度信息。

在一些实施例中,车辆4300可以包括两个或更多分组的相机。例如,车辆4300可以包括第一分组的相机,第一分组的相机包括中心相机4410、左环绕相机4420和右环绕相机4430。车辆4300还可以包括第二分组的相机,第二分组的相机包括位于车辆4300的后视镜附近的中心相机、位于车辆4300的左后侧处的左环绕相机、以及位于车辆4300的右后侧处的右环绕相机。在一些实施例中,(两个或更多)分组的相机的FOV可以形成覆盖360度的总FOV。

在一些实施例中,相机分组可以共享至少一个相机。例如,代替上面提供的示例中的另一个中心相机,第二分组的相机可以包括(第一分组的)中心相机4410作为第二分组的相机的中心相机。作为另一示例,车辆4300可以包括三个或更多分组的相机,并且第一相机分组的右环绕相机可以用作第二相机分组的左环绕相机,并且第一相机分组的左环绕相机可以用作第三相机分组的右环绕相机。可替代地或附加地,第一相机分组的左环绕相机或右环绕相机中的至少一个可以用作除了第一相机分组之外的相机分组的中心相机。本领域技术人员将理解,相机配置的上述示例仅用于说明目的,并且其不旨在限制本公开的范围;相机和/或相机分组的其他配置也可以用于实现所公开的系统和方法。

LIDAR系统4307可以包括一个或多个LIDAR单元。在一些实施例中,一个或多个LIDAR单元可以定位在车辆4300的车顶上。这样的单元可以包括旋转单元,旋转单元被配置为在车辆4300周围的360度视场内或从360度视场的任何子段(例如,每个表示小于360度的一个或多个FOV)采集LIDAR反射信息。由LIDAR系统4307收集的数据可以提供给处理器4301。可替代地或附加地,可以经由网络向本公开中描述的服务器传输数据。

在一些实施例中,LIDAR单元可以定位在车辆4300的前方位置处(例如,前灯附近、前格栅中、雾灯附近、前保险杠中或任何其他合适的位置处)。在一些情况下,安装在车辆4300前方部分的一个或多个LIDAR单元可以从车辆4300前方环境中的视场收集反射信息。在其他实施例中,LIDAR单元可以位于其他位置。例如,LIDAR单元可以位于车辆4300的风挡后面、车辆4300的前保险杠附近、车辆4300的后视镜附近、车辆4300的侧视镜中的一个或两个、车辆4300的车顶上、车辆4300的引擎盖上、车辆4300的后备箱上、车辆4300的侧面上,安装在车辆4300的任何窗户上、定位在车辆4300的任何窗户后、或定位在车辆4300的任何窗户前,以及安装在车辆4300的前面和/或后面的灯型中或附近等。作为示例,LIDAR系统4307可以位于车辆4300的车顶上,如图44所示。

车辆4300中可以包括任何合适类型的LIDAR单元。在一些情况下,LIDAR系统4307可以包括其中使用单个激光脉冲照明整个LIDAR视场(FOV)的、一个或多个闪光(本文中也称为静态)LIDAR单元(例如,3D闪光LIDAR),以及包含像素的行和列以记录返回的光强度和飞行时间/深度信息的传感器。这样的闪光系统可以每秒多次照明场景并收集LIDAR“图像”。也可以采用扫描LIDAR单元。这样的扫描LIDAR单元可以依赖于用于将激光波束分散到特定的FOV上的一个或多个技术。在某些情况下,扫描LIDAR单元可以包括扫描镜,该扫描镜将激光波束朝着FOV内的对象偏转和导向。扫描镜可以旋转贯穿完整的360度,或者可以沿着单个轴或多个轴旋转小于360度,以将激光朝着预定的FOV导向。在一些情况下,LIDAR单元可以扫描一个水平线。在其他情况下,LIDAR单元可以扫描FOV内的多个水平线,从而有效地每秒对特定FOV进行多次光栅化。

LIDAR系统4307中的LIDAR单元可以包括任何合适的激光源。在一些实施例中,LIDAR单元可以采用连续激光。在其他情况下,LIDAR单元可能使用脉冲激光发射。此外,可以采用任何合适的激光波长。在一些情况下,可以使用大约600纳米至大约1000纳米之间的波长。

LIDAR系统4307中的LIDAR单元还可以包括任何合适类型的传感器并提供任何合适类型的输出。在某些情况下,LIDAR单元的传感器可以包括固态光电检测器,诸如一个或多个光电二极管或光电倍增管。传感器还可以包括包含任意数量的像素的一个或多个CMOS或CCD设备。这些传感器可能对从LIDAR FOV内的场景反射的激光敏感。传感器可以使得能够进行来自LIDAR单元的各种类型的输出。在一些情况下,LIDAR单元可以输出表示在每个传感器处或在特定传感器的每个像素或子组件处收集的反射激光的飞行时间信息和原始光强度值。附加或可替代地,LIDAR单元可以输出点云(例如,3D点云),其可以包括关于每个收集的点的光强度和深度/距离信息。LIDAR单元还可以输出表示光反射幅度和到视场内的点的距离的各种类型的深度图。LIDAR单元可以通过记下来自LIDAR光源的光最初朝着FOV投射的时间并记录入射激光被LIDAR单元中的传感器接收的时间,来提供关于FOV内特定点的深度或距离信息。时间差可以表示飞行时间,其可以与入射激光从激光源行进到反射对象并返回到LIDAR单元的往返行程距离直接相关。监视与LIDAR FOV的单独激光光斑或小段相关联的飞行时间信息可以为FOV内的多个点提供准确的距离信息(例如,映射到FOV内对象的甚至非常小的特征)。在某些情况下,LIDAR单元可以输出更复杂的信息,诸如将一个或多个激光反射与从其获取激光反射的对象的类型相关的分类信息。

导航系统4308可以被配置为辅助车辆4300的驾驶员操作车辆4300。例如,导航系统4308可以确定车辆4300当前正从目标轨迹偏离并向驾驶员生成指示从目标轨迹偏离的通知,通知可以显示在显示器上(例如,显示基于车辆4300的当前定位和走向方向而确定的估计的行进路径和目标轨迹)。可替代地,如本公开中的其他地方所述,导航系统4308可以包括被配置为控制车辆4300的移动的自主车辆导航系统。例如,导航系统4308可以在车辆4300穿越道路段时实施由处理器4301确定的导航动作(例如,车辆的转向、制动或加速中的一个或多个)。在一些实施例中,导航系统4308可以包括高级驾驶员辅助系统(ADAS)系统。在一些实施例中,导航系统4308可以被配置为根据一个或多个导航动作引起与车辆4300的转向系统、制动系统或驾驶系统相关联的一个或多个致动器的激活。

在一些实施例中,车辆4300还可以包括被配置为收集与车辆4300和/或车辆4300的环境相关的信息的一个或多个传感器。示例性传感器可以包括定位设备(例如全球定位系统(GPS)设备)、加速度计、陀螺仪传感器、速率计等、或其组合。例如,车辆4300可以包括被配置为在一时间段内收集与车辆4300的定位相关联的定位数据的GPS设备。

图45是示出了与公开的实施例一致的用于确定主车辆的导航动作的示例性过程4500的流程图。虽然以下过程4500的一些描述是参考图44中所示的中心相机4410、左环绕相机4420和右环绕相机4430提供的,但是本领域技术人员将理解相机4306中的一个或多个可以定位在车辆4300的其他位置。

在步骤4501,处理器4301可以被编程为从中心相机4410接收至少一个捕获的中心图像,中心图像可以包括车辆4300的环境的至少一部分的表示。处理器4301还可以被配置为从左环绕相机4420接收可以包括车辆4300的环境的至少一部分的表示的、至少一个捕获的左环绕图像。处理器4301还可以被配置为从右环绕相机4430接收可以包括车辆4300的环境的至少一部分的表示的、至少一个捕获的右环绕图像。在一些实施例中,中心相机4410的FOV可以至少部分地与左环绕相机4420的FOV和右环绕相机4430的FOV两者重叠。作为示例,如图44所示,中心相机4410可以包括中心相机FOV4411,左环绕相机4420可以包括左环绕FOV 4421,以及右环绕相机4430可以包括右环绕FOV 4431。中心相机FOV 4411可以至少部分地与左环绕FOV4421和右环绕FOV 4431重叠。例如,可以存在中心相机FOV 4411和左环绕FOV 4421的重叠区域4412,以及中心相机FOV 4411和右环绕FOV 4431的重叠区域4413。

参考图45,在步骤4502,处理器4301可以被编程为将至少一个捕获的中心图像、至少一个捕获的左环绕图像和至少一个捕获的右环绕图像提供给分析模块,分析模块被配置为基于至少一个捕获的中心图像、至少一个捕获的左环绕图像和至少一个捕获的右环绕图像的分析来生成关于至少一个捕获的中心图像的输出。生成的输出可以包括捕获的中心图像的至少一个区域的每个像素的深度信息。

在一些实施例中,分析模块可以包括至少一个经训练的模型。经训练的模型可以包括可以基于训练数据而被训练的经训练的神经网络,训练数据包括由具有至少部分重叠的场的相机捕获的多个图像以及与多个图像中的至少一些对应的LIDAR点云信息的组合。例如,训练数据集合中的每一个可以包括三个图像,每个图像可以由安装在训练车辆上的相机分组(包括中心相机、左环绕相机和右环绕相机)中的一个捕获。中心相机的FOV可以至少部分地与左环绕相机的FOV和右环绕相机的FOV重叠。训练数据集合还可以包括由安装在相同车辆上的LIDAR系统捕获的点云信息,其可以提供与由该相机分组捕获的图像相关联的测量的深度信息。点云信息可以被视为用于训练神经网络的参考深度信息(或真实深度值)。可以将训练数据集合中的图像(和/或提取的图像特征)输入到初步的(或未训练的)神经网络中,该神经网络可以针对中心图像的至少一个区域生成包括计算的每个像素的深度信息的输出。计算的每个像素的深度信息可以与点云信息的对应的深度信息进行比较,以确定神经网络是否具有满足或超过用于生成每个像素的深度信息的预定准确度水平的模型参数或权重。例如,用于训练神经网络的训练系统可以基于计算的深度信息与点云信息(被包括在训练数据集合中)中的对应的深度信息的比较来生成神经网络的准确度分数。如果准确度分数等于或超过阈值,则训练过程可以停止,并且训练系统可以将经训练的神经网络保存到本地存储设备中和/或向一个或多个车辆(例如车辆4300)传输经训练的神经网络。另一方面,如果准确度分数低于阈值,则训练系统可以调整神经网络的一个或多个参数或权重,并使用训练数据集合重复训练过程,直到达到神经网络的准确度分数等于或超过阈值(和/或已达到预定数量的训练周期)。

在一些实施例中,在将图像提供给分析模块之前,处理器4301可以基于图像和相机的参数,来生成共享图像轴的朝向和图像主轴的方向(例如,它们的图像轴的朝向和它们的主轴的方向)的合成针孔图像集合。该预处理步骤可以允许有效的扭曲(均匀图像缩放-平移)。处理器4301还可以将生成的合成针孔图像(而不是原始图像)输入到分析模块中以生成输出。

在一些实施例中,处理器4301可以将图像输入到分析模块中,分析模块可以由处理器4301运行。分析模块可以生成包括捕获的中心图像的至少一个区域的每个像素的深度信息的输出。

在一些实施例中,车辆4300可以经由网络从服务器接收分析模块并将分析模块存储在存储器4302和/或存储设备4303中。

在一些实施例中,分析模块生成的输出可以包括捕获的中心图像的至少一个区域(或所有区域)的每个像素的深度信息。在一些实施例中,捕获的中心图像的至少一个区域的每个像素的深度信息可以提供或包括捕获的中心图像中表示的一个或多个对象的深度信息。在一些情况下,一个或多个对象可能不接触地表面(例如,道路表面)。对于单目系统,可能需要地平面以通过诸如运动中的结构的过程来获得深度信息,这在本文公开的系统中可能不需要。在一些实施例中,一个或多个对象可以与目标车辆相关联(或由目标车辆携带)。

在一些实施例中,捕获的中心图像的至少一个区域的每个像素的深度信息可以提供或包括捕获的中心图像中表示的至少一个对象的表面的深度信息,并且至少一个对象的表面可以包括一个或多个其他对象的反射,因为分析模块可以至少部分地基于表面的边缘来辨识(recognize)表面,并且可以辨识反射在表面上且不指示超出表面的更远对象。

在一些实施例中,捕获的中心图像的至少一个区域的每个像素的深度信息可以提供或包括关于至少部分地从至少一个捕获的中心图像、至少一个捕获的左环绕图像或至少一个捕获的右环绕图像中的一个或多个中的视野中被至少部分遮挡的对象的深度信息,因为即使在对象从一个或多个捕获的图像中的视野被部分遮挡的情况下,分析模块也可以提供深度信息。

在一些实施例中,如上所述,车辆4300可以包括两个或更多分组的相机。例如,车辆4300可以包括第一分组的相机,该第一分组的相机包括中心相机4410、左环绕相机4420和右环绕相机4430。车辆4300还可以包括第二分组的相机,该第二分组的相机包括位于车辆4300的后视镜附近的中心相机、位于车辆4300的左后侧处的左环绕相机和位于车辆4300的右后侧处的右环绕相机。分析模块还可以被配置为基于从第二相机分组的相机接收的至少一个捕获的中心图像、至少一个捕获的左环绕图像和至少一个捕获的右环绕图像的分析,来生成关于由第二相机分组的中心相机捕获的至少一个中心图像的另一个输出,并且另一个生成的输出可以包括由第二相机分组的中心相机捕获的中心图像的至少一个区域的每个像素的深度信息。在一些实施例中,分析模块可以被配置为生成由第一相机分组和至少第二相机分组中的每个分组中的至少一个相机捕获的至少一个图像的每个像素的深度信息,以提供360度的图像生成的环绕车辆的点云。

在步骤4503,处理器4301可以被编程为基于包括捕获的中心图像的至少一个区域的每个像素的深度信息的生成的输出,来引起车辆4300的至少一个导航动作。例如,处理器4301可以分析包括捕获的中心图像的至少一个区域的每个像素的深度信息的生成的输出,并且基于生成的输出检测一个或多个对象。如本公开中其他地方所述,处理器4301还可以被配置为基于检测的对象确定车辆4300的至少一个导航动作。如本公开中其他地方所述,处理器4301还可以被配置为使车辆4300实施确定的导航动作。例如,处理器4301可以确定保持车辆4300的当前走向方向和速率、改变车辆4300的当前走向方向(例如,使车辆4300转弯)或改变车辆4300的速率(例如,加速或制动车辆4300)中的至少一个。作为示例,处理器4301可以分析生成的输出,并且基于生成的输出的分析来识别在预定安全距离内的对象。处理器4301还可以被配置为确定车辆4300的导航动作以使车辆4300减速或转向远离识别的对象。处理器4301还可以被配置为控制导航系统4308以根据一个或多个导航动作引起与车辆4300的转向系统、制动系统或驾驶系统相关联的一个或多个致动器的激活。

在一些实施例中,处理器4301可以被配置为基于捕获的中心图像的至少一个区域的每个像素的深度信息以及从LIDAR系统4307接收的点云信息的组合来确定至少一个导航动作。在一些实施例中,处理器4301可以将与在捕获的中心图像的至少一个区域的每个像素的深度信息以及从LIDAR系统4307接收的对应的点云信息两者中出现的对象相关联的深度值平均,以获得与对象相关联的平均深度值。处理器4301还可以基于与对象相关联的平均深度来确定导航动作(例如,保持当前速率和走向方向)。可替代地或附加地,处理器4301可以对从捕获的中心图像的至少一个区域的每个像素的深度信息获得的深度值以及从自LIDAR系统4307接收的点云信息获得的深度值应用不同的权重(其可以类似于上面结合步骤4104描述的过程)。处理器4301还可以被配置为基于加权的深度值确定至少一个导航动作。例如,如上所述,LIDAR系统在太阳眩光环境(或高反射环境,或在没有路灯的夜晚时间期间的弱光状况等)中可以比相机表现更好。在太阳眩光环境(或高反射环境,或在没有路灯的夜晚时间期间的弱光状况等)中,处理器4301可以对基于从LIDAR系统4307接收的点云信息而获得的深度值应用比对从捕获的中心图像的至少一个区域的每个像素的深度信息获得的深度值所应用的权重更高的权重。另一方面,相机可以在雾天或雨天比LIDAR系统表现更好,并且在这样的环境中,处理器4301对基于从LIDAR系统4307接收的点云信息而获得的深度值应用与对从捕获的中心图像的至少一个区域的每个像素的深度信息获得的深度值所应用的权重相比更低的权重。

为了说明的目的已经呈现了前述描述。它不是穷举的并且不限于公开的精确形式或实施例。根据说明书的考虑和公开实施例的实践,修改和改编对于本领域技术人员将是清晰的。另外,虽然公开的实施例的各方面被描述为存储在存储器中,但是本领域技术人员将理解这些方面也可以存储在其他类型的计算机可读介质上,诸如辅助存储设备,例如硬盘或CD ROM,或其他形式的RAM或ROM、USB介质、DVD、蓝光、4K超高清蓝光或其他光驱动介质。

基于书面描述和公开方法的计算机程序在有经验的开发人员的技能范围内。可以使用本领域技术人员已知的任何技术来创建各种程序或程序模块,或者可以结合现有软件来设计各种程序或程序模块。例如,程序段或程序模块可以在.NetFramework、.NetCompact Framework(以及相关语言,诸如VisualBasic、C等)、Java、C++、Objective-C、HTML、HTML/AJAX组合、XML或包括Java小程序的HTML中,或者以.NetFramework、.NetCompact Framework(以及相关语言,诸如VisualBasic、C等)、Java、C++、Objective-C、HTML、HTML/AJAX组合、XML或包括Java小程序的HTML的方式设计。

此外,尽管本文已经描述了说明性实施例,但是如本领域技术人员基于本公开将理解的,任何和所有实施例的范围具有等同元素、修改、省略、组合(例如,跨各种实施例的各方面的)、改编和/或变更。权利要求中的限制应基于权利要求中采用的语言进行广义解释,而不限于本说明书中或在申请的申请流程期间描述的示例。示例将被解释为非排他性的。此外,可以以任何方式修改公开的方法的步骤,包括通过重新排序步骤和/或插入或删除步骤。因此,旨在将说明书和示例仅认为是说明性的,其中真实范围和精神由所附权利要求及其等同物的完整范围所指示。

相关技术
  • 用于车辆的导航装置、其方法以及导航系统
  • 用于车辆的串联液压混合系统以及操作用于车辆的串联液压混合系统的方法
  • 一种基于多传感器的智能车辆导航系统及其导航方法
  • 用于识别车辆导航路径边界的方法和装置
  • 用于车辆的导航系统中的路线规划的方法、用于车辆的导航系统、以及具有导航系统的车辆
  • 用于车辆的导航系统和用于导航车辆的方法
技术分类

06120115919080