CN117677972A - 用于路段绘制的系统和方法 - Google Patents

用于路段绘制的系统和方法 Download PDF

Info

Publication number
CN117677972A
CN117677972A CN202180094883.5A CN202180094883A CN117677972A CN 117677972 A CN117677972 A CN 117677972A CN 202180094883 A CN202180094883 A CN 202180094883A CN 117677972 A CN117677972 A CN 117677972A
Authority
CN
China
Prior art keywords
vehicle
road
image
data
lane
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180094883.5A
Other languages
English (en)
Inventor
A·费伦茨
O·扎凯
R·弗伦克尔-莱维
R·乌尔巴赫
Y·赖斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mobileye Vision Technologies Ltd
Original Assignee
Mobileye Vision Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mobileye Vision Technologies Ltd filed Critical Mobileye Vision Technologies Ltd
Publication of CN117677972A publication Critical patent/CN117677972A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/38Electronic maps specially adapted for navigation; Updating thereof
    • G01C21/3804Creation or updating of map data
    • G01C21/3807Creation or updating of map data characterised by the type of data
    • G01C21/3815Road data
    • G01C21/3819Road shape data, e.g. outline of a route
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/38Electronic maps specially adapted for navigation; Updating thereof
    • G01C21/3804Creation or updating of map data
    • G01C21/3807Creation or updating of map data characterised by the type of data
    • G01C21/3811Point data, e.g. Point of Interest [POI]
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/38Electronic maps specially adapted for navigation; Updating thereof
    • G01C21/3804Creation or updating of map data
    • G01C21/3833Creation or updating of map data characterised by the source of data
    • G01C21/3848Data obtained from both position sensors and additional sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • G06T7/248Analysis of motion using feature-based methods, e.g. the tracking of corners or segments involving reference images or patches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/292Multi-camera tracking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/588Recognition of the road, e.g. of lane markings; Recognition of the vehicle driving pattern in relation to the road
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/70Labelling scene content, e.g. deriving syntactic or semantic representations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/2628Alteration of picture size, shape, position or orientation, e.g. zooming, rotation, rolling, perspective, translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20221Image fusion; Image merging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30181Earth observation
    • G06T2207/30184Infrastructure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle
    • G06T2207/30256Lane; Road marking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Remote Sensing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Automation & Control Theory (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Traffic Control Systems (AREA)
  • Image Analysis (AREA)

Abstract

一种用于自动绘制路段的系统可以包括:至少一个处理器,被编程为:从安装在车辆上的至少一个相机接收当车辆穿过路段时获取的多个图像;将多个图像中的每个图像转换成对应的俯视图图像以提供多个俯视图图像;聚合多个俯视图图像以提供路段的聚合的俯视图图像;分析聚合的俯视图图像以识别与路段相关联的至少一个道路特征;自动注释相对于聚合的俯视图图像的至少一个道路特征;以及将包括注释的至少一个道路特征的聚合的俯视图图像输出到至少一个存储器。

Description

用于路段绘制的系统和方法
相关申请的交叉引用
本申请要求于2020年12月30日提交的美国临时申请No.63/132,260的优先权权益,该申请的全部内容通过引用并入本文。
技术领域
本公开总体上涉及自主车辆导航。
背景技术
随着技术的不断进步,能够在行车道上导航的全自主车辆的目标即将到来。自主车辆可能需要考虑多种因素,并基于这些因素做出适当的决策,以便安全且准确地到达预定目的地。例如,自主车辆可能需要处理和解释视觉信息(例如,从相机捕获的信息),并且还可能使用从其它来源(例如,从GPS设备、速度传感器、加速度计、悬架传感器等)获得的信息。同时,为了导航到目的地,自主车辆可能还需要识别其在特定行车道内的地点(例如,多车道道路内的特定车道)、与其它车辆并排导航、避开障碍物和行人、遵守交通信号和标志,并在适当的交叉路口或交汇处从一条道路行驶到另一条道路。利用和解释自主车辆在车辆行驶至其目的地时收集的大量信息带来了众多设计挑战。自主车辆可能需要分析、访问和/或存储的大量数据(例如,捕获的图像数据、地图数据、GPS数据、传感器数据等)带来了挑战,这些挑战实际上可能限制甚至不利地影响自主导航。此外,如果自主车辆依赖传统的绘制技术进行导航,那么存储和更新地图所需的大量数据会带来艰巨的挑战。
发明内容
在实施例中,一种用于自动绘制路段的系统可以包括:至少一个处理器,被编程为:从安装在车辆上的至少一个相机接收当车辆穿过路段时获取的多个图像;将所述多个图像中的每个图像转换成对应的俯视图图像以提供多个俯视图图像;聚合所述多个俯视图图像以提供路段的聚合的俯视图图像;分析聚合的俯视图图像以识别与路段相关联的至少一个道路特征;相对于聚合的俯视图图像自动注释至少一个道路特征;以及将包括注释的至少一个道路特征的聚合的俯视图图像输出到至少一个存储器。
与其它公开的实施例一致,非暂态计算机可读存储介质可以存储程序指令,该程序指令由至少一个处理设备执行并且执行本文描述的任何方法。
前面的一般描述和下面的详细描述仅是示例性和解释性的,而不是对权利要求的限制。
附图说明
并入本公开并构成本公开的一部分的附图图示了各种公开的实施例。在附图中:
图1是与所公开的实施例一致的示例性系统的示意图。
图2A是包括与所公开的实施例一致的系统的示例性车辆的示意性侧视图。
图2B是与所公开的实施例一致的图2A中所示的车辆和系统的示意性俯视图。
图2C是包括与所公开的实施例一致的系统的车辆的另一个实施例的示意性俯视图。
图2D是包括与所公开的实施例一致的系统的车辆的又一个实施例的示意性俯视图。
图2E是包括与所公开的实施例一致的系统的车辆的又一个实施例的示意性俯视图。
图2F是与所公开的实施例一致的示例性车辆控制系统的示意图。
图3A是与所公开的实施例一致的包括后视镜和用于车辆成像系统的用户接口的车辆的内部的示意图。
图3B是与所公开的实施例一致的被配置为定位在后视镜后面并抵靠车辆挡风玻璃的相机支架的示例的图示。
图3C是与所公开的实施例一致的图3B中所示的相机支架从不同视角的图示。
图3D是与所公开的实施例一致的被配置为定位在后视镜后面并抵靠车辆挡风玻璃的相机支架的示例的图示。
图4是与所公开的实施例一致的被配置为存储用于执行一个或多个操作的指令的存储器的示例性框图。
图5A是示出与所公开的实施例一致的用于基于单眼图像分析引起一个或多个导航响应的示例性处理的流程图。
图5B是示出与所公开的实施例一致的用于检测一组图像中的一个或多个车辆和/或行人的示例性处理的流程图。
图5C是示出与所公开的实施例一致的用于检测一组图像中的道路标记和/或车道几何信息的示例性处理的流程图。
图5D是示出与所公开的实施例一致的用于检测一组图像中的交通灯的示例性处理的流程图。
图5E是示出与所公开的实施例一致的用于基于车辆路径引起一个或多个导航响应的示例性处理的流程图。
图5F是示出与所公开的实施例一致的用于确定前行车辆是否正在变换车道的示例性处理的流程图。
图6是示出与所公开的实施例一致的用于基于立体图像分析引起一个或多个导航响应的示例性处理的流程图。
图7是示出与所公开的实施例一致的用于基于对三组图像的分析来引起一个或多个导航响应的示例性处理的流程图。
图8示出了与所公开的实施例一致的用于提供自主车辆导航的稀疏地图。
图9A图示了与所公开的实施例一致的路段的一部分的多项式表示。
图9B图示了与所公开的实施例一致的表示包括在稀疏地图中、针对特定路段的车辆的目标轨迹的三维空间中的曲线。
图10图示了与所公开的实施例一致的可以被包括在稀疏地图中的示例地标。
图11A示出了与所公开的实施例一致的轨迹的多项式表示。
图11B和图11C示出了与所公开的实施例一致的沿着多车道道路的目标轨迹。
图11D示出了与所公开的实施例一致的示例道路签名轮廓。
图12是与所公开的实施例一致的使用从多个车辆接收的众包数据进行自主车辆导航的系统的示意图。
图13图示了与所公开的实施例一致的由多个三维样条表示的示例自主车辆道路导航模型。
图14示出了与所公开的实施例一致的通过组合来自许多驾驶路线(drives)的地点信息而生成的地图骨架。
图15示出了与所公开的实施例一致的具有示例标志作为地标的两条驾驶路线的纵向对齐的示例。
图16示出了与所公开的实施例一致的具有示例标志作为地标的许多驾驶路线的纵向对齐的示例。
图17是与所公开的实施例一致的用于使用相机、车辆和服务器生成驾驶数据的系统的示意图。
图18是与所公开的实施例一致的用于众包稀疏地图的系统的示意图。
图19是示出与所公开的实施例一致的用于生成用于沿着路段的自主车辆导航的稀疏地图的示例性处理的流程图。
图20图示了与所公开的实施例一致的服务器的框图。
图21图示了与所公开的实施例一致的存储器的框图。
图22图示了与所公开的实施例一致的对与车辆相关联的车辆轨迹进行聚类的过程。
图23图示了与所公开的实施例一致的可以用于自主导航的车辆导航系统。
图24A、图24B、图24C和图24D图示了与所公开的实施例一致的可以被检测到的示例性车道标记。
图24E示出了与所公开的实施例一致的示例性绘制的车道标记。
图24F示出了与所公开的实施例一致的与检测车道标记相关联的示例性异常。
图25A示出了与所公开的实施例一致的用于基于绘制的车道标记进行导航的车辆周围环境的示例性图像。
图25B图示了与所公开的实施例一致的基于道路导航模型中绘制的车道标记的车辆的横向定位校正。
图26A是示出与所公开的实施例一致的用于绘制在自主车辆导航中使用的车道标记的示例性处理的流程图。
图26B是示出与所公开的实施例一致的用于使用绘制的车道标记沿着路段自主导航主车辆的示例性处理的流程图。
图27是与所公开的实施例一致的用于生成聚合的俯视图图像的示例车辆的示意性侧视图。
图28A和图28B图示了与所公开的实施例一致的示例图像变换。
图29A是可以用于生成与所公开的实施例一致的变形图像的示例捕获图像的图示。
图29B是与所公开的实施例一致的可以基于捕获的图像生成的示例变形图像的图示。
图30是用于确定3D特征点地点的运动结构(structure from motion)技术的透视图。
图31A表示根据示例性公开的实施例的用于生成聚合的俯视图图像的重叠、变形的俯视图图像。
图31B表示根据示例性公开的实施例的聚合的俯视图图像。
具体实施方式
以下详细描述参考附图。在可能的情况下,在附图和以下描述中使用相同的附图标记来指代相同或相似的部分。虽然本文描述了几个说明性实施例,但修改、改编和其它实施方式是可能的。例如,可以对附图中所示的组件进行替换、添加或修改,并且可以通过对所公开的方法的替换、重新排序、移除或添加步骤来修改本文描述的说明性方法。因此,以下详细描述不限于所公开的实施例和示例。而是,适当的范围由所附权利要求限定。
自主车辆概述
如本公开全文所使用的,术语“自主车辆”是指能够在没有驾驶员输入的情况下实现至少一个导航改变的车辆。“导航改变”是指车辆的转向、制动或加速中的一项或多项的改变。要实现自主,车辆不必是全自动的(例如,在没有驾驶员或驾驶员输入的情况下完全操作)。而是,自主车辆包括能够在某些时间段期间在驾驶员控制下操作并且在其它时间段期间无需驾驶员控制来操作的车辆。自主车辆还可以包括仅控制车辆导航的一些方面,诸如转向(例如,以在车道限制之间维持车辆路线)的车辆,但可以将其它方面留给驾驶员(例如,制动)。在一些情况下,自主车辆可以处理车辆的制动、速度控制和/或转向的一些或所有方面。
由于人类驾驶员通常依靠视觉提示和观察来控制车辆,因此交通基础设施也相应地建立,其中车道标线(markings)、交通标志和交通灯都是为了向驾驶员提供视觉信息而设计。鉴于交通基础设施的这些设计特性,自主车辆可以包括相机和分析从车辆环境捕获的视觉信息的处理单元。视觉信息可以包括例如驾驶员和其它障碍物(例如,其它车辆、行人、碎片等)可观察到的交通基础设施的组成部分(例如,车道标线、交通标志、交通灯等)。另外,自主车辆还可以使用存储的信息,诸如提供车辆导航时环境模型的信息。例如,车辆可以使用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、Bluetooth Smart、802.15.4、ZigBee等)。这种传输可以包括从主车辆到一个或多个远程服务器的通信。这种传输还可以包括主车辆和主车辆环境中的一个或多个目标车辆之间的通信(单向或双向)(例如,以根据主车辆环境中的目标车辆或与主车辆环境中的目标车辆一起促进协调主车辆的导航),甚至向传输车辆附近的未指定接收者进行广播传输。
应用处理器180和图像处理器190都可以包括各种类型的处理设备。例如,应用处理器180和图像处理器190中的任一个或两者可以包括微处理器、预处理器(诸如图像预处理器)、图形处理单元(GPU)、中央处理单元(CPU)、支持电路、数字信号处理器、集成电路、存储器或任何其它类型的适合运行应用以及图像处理和分析的设备。在一些实施例中,应用处理器180和/或图像处理器190可以包括任何类型的单核或多核处理器、移动设备微控制器、中央处理单元等。可以使用各种处理设备,包括例如可从诸如等制造商获得的处理器,或者可从诸如/>等制造商获得的GPU,并且可以包括各种体系架构(例如,x86处理器、/>等)。
在一些实施例中,应用处理器180和/或图像处理器190可以包括可从获得的EyeQ系列处理器芯片中的任何一个。这些处理器设计均包含多个具有本地存储器和指令集的处理单元。这样的处理器可以包括用于从多个图像传感器接收图像数据的视频输入并且还可以包括视频输出能力。在一个示例中,/>使用以332Mhz操作的90纳米微米技术。/>体系架构由两个浮点超线程32位RISC CPU(/>内核)、五个视觉计算引擎(VCE)、三个向量微码处理器/>Denali 64位移动DDR控制器、128位内部Sonics互联、双16位视频输入和18位视频输出控制器、16通道DMA和几个外设组成。MIPS34K CPU管理五个VCE、三个VMPTM和DMA,第二个MIPS34K CPU和多通道DMA以及其它外设。五个VCE、三个/>和MIPS34K CPU可以执行多功能捆绑应用所需的密集视觉计算。在另一个示例中,作为第三代处理器并且比/>强大六倍的/>可以用在所公开的实施例中。在其它示例中,/>和/或/>可以用在所公开的实施例中。当然,任何更新的或未来的EyeQ处理设备也可以与所公开的实施例一起使用。
本文公开的任何处理设备都可以被配置为执行某些功能。配置处理设备(诸如任何所描述的EyeQ处理器或其它控制器或微处理器)以执行某些功能可以包括对计算机可执行指令进行编程并使这些指令可供处理设备在处理设备的操作期间执行。在一些实施例中,配置处理设备可以包括利用体系架构指令直接对处理设备进行编程。例如,诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等的处理设备可以使用例如一种或多种硬件描述语言(HDL)来配置。
在其它实施例中,配置处理设备可以包括将可执行指令存储在处理设备在操作期间可访问的存储器上。例如,处理设备可以在操作期间访问存储器以获得并执行所存储的指令。在任一情况下,被配置为执行本文所公开的感测、图像分析和/或导航功能的处理设备表示控制主车辆的多个基于硬件的组件的基于专用硬件的系统。
虽然图1描绘了包括在处理单元110中的两个单独的处理设备,但是可以使用更多或更少的处理设备。例如,在一些实施例中,单个处理设备可以用于完成应用处理器180和图像处理器190的任务。在其它实施例中,这些任务可以由多于两个处理设备来执行。此外,在一些实施例中,系统100可以包括一个或多个处理单元110而不包括其它组件,诸如图像获取单元120。
处理单元110可以包括各种类型的设备。例如,处理单元110可以包括各种设备,诸如控制器、图像预处理器、中央处理单元(CPU)、图形处理单元(GPU)、支持电路、数字信号处理器、集成电路、存储器或任何其它类型的图像处理和分析设备。图像预处理器可以包括用于捕获、数字化和处理来自图像传感器的图像的视频处理器。CPU可以包括任意数量的微控制器或微处理器。GPU还可以包括任意数量的微控制器或微处理器。支持电路可以是本领域众所周知的任何数量的电路,包括高速缓存、电源、时钟和输入输出电路。存储器可以存储软件,该软件在被处理器执行时,控制系统的操作。存储器可以包括数据库和图像处理软件。存储器可以包括任意数量的随机存取存储器、只读存储器、闪存、盘驱动器、光学存储装置、带存储装置、可移动存储装置和其它类型的存储装置。在一种情况下,存储器可以与处理单元110分离。在另一种情况下,存储器可以集成到处理单元110中。
每个存储器140、150可以包括软件指令,该软件指令在由处理器(例如,应用处理器180和/或图像处理器190)执行时,可以控制系统100的各个方面的操作。这些存储器单元可以包括各种数据库和图像处理软件,以及经过训练的系统,诸如例如神经网络或深度神经网络。存储器单元可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、盘驱动器、光学存储装置、带存储装置、可移动存储装置和/或任何其它类型的存储装置。在一些实施例中,存储器单元140、150可以与应用处理器180和/或图像处理器190分离。在其它实施例中,这些存储器单元可以集成到应用处理器180和/或图像处理器190中。
位置传感器130可以包括适合于确定与系统100的至少一个组件相关联的地点的任何类型的设备。在一些实施例中,位置传感器130可以包括GPS接收器。这样的接收器可以通过处理全球定位系统卫星广播的信号来确定用户位置和速度。可以使来自位置传感器130的位置信息对应用处理器180和/或图像处理器190可用。
在一些实施例中,系统100可以包括组件,诸如用于测量车辆200的速度的速度传感器(例如,转速计、速度计)和/或用于测量车辆200的加速度的加速度计(单轴或多轴)。
用户接口170可以包括适合于向系统100的一个或多个用户提供信息或者从系统100的一个或多个用户接收输入的任何设备。在一些实施例中,用户接口170可以包括用户输入设备,包括例如触摸屏、麦克风、键盘、指针设备、滚轮、相机、旋钮、按钮等。利用这样的输入设备,用户可以能够通过键入指令或信息、提供语音命令、使用按钮、指针或眼睛跟踪能力在屏幕上选择菜单选项,或者通过用于将信息传送到系统100的任何其它合适的技术,向系统100提供信息输入或命令。
用户接口170可以配备有一个或多个处理设备,其被配置为向用户提供信息和从用户接收信息,并且处理该信息以供例如应用处理器180使用。在一些实施例中,这样的处理设备可以执行用于辨识和跟踪眼睛移动、接收和解释语音命令、辨识和解释在触摸屏上做出的触摸和/或手势、响应键盘输入或菜单选择等的指令。在一些实施例中,用户接口170可以包括显示器、扬声器、触觉设备和/或用于向用户提供输出信息的任何其它设备。
地图数据库160可以包括用于存储对系统100有用的地图数据的任何类型的数据库。在一些实施例中,地图数据库160可以包括与各种项目在参考坐标系中的位置相关的数据,这些项目包括道路、水特征、地理特征、商业、兴趣点、餐馆、加油站等。地图数据库160不仅可以存储这些项目的地点,还可以存储与这些项目相关的描述符,包括例如与任何存储的特征相关联的名称。在一些实施例中,地图数据库160可以在物理上与系统100的其它组件一起定位。替代地或附加地,地图数据库160或其一部分可以相对于系统100的其它组件(例如,处理单元110)远程定位。在这样的实施例中,来自地图数据库160的信息可以通过到网络的有线或无线数据连接(例如,通过蜂窝网络和/或互联网等)下载。在一些情况下,地图数据库160可以存储稀疏数据模型,其包括主车辆的某些道路特征(例如,车道标线)或目标轨迹的多项式表示。下面参考图8-图19讨论生成这样的地图的系统和方法。
图像捕获设备122、124和126均可以包括适合于从环境捕获至少一个图像的任何类型的设备。此外,可以使用任意数量的图像捕获设备来获取图像以输入到图像处理器。一些实施例可以仅包括单个图像捕获设备,而其它实施例可以包括两个、三个、或者甚至四个或更多个图像捕获设备。下面将参考图2B-图2E进一步描述图像捕获设备122、124和126。
系统100或其各种组件可以并入到各种不同的平台中。在一些实施例中,系统100可以被包括在车辆200上,如图2A中所示。例如,车辆200可以配备有处理单元110和系统100的任何其它组件,如上面相对于图1所描述的。虽然在一些实施例中,车辆200可以仅配备有单个图像捕获设备(例如,相机),但在其它实施例中,诸如结合图2B-图2E讨论的那些实施例,可以使用多个图像捕获设备。例如,如图2A中所示,车辆200的图像捕获设备122和124中的任一个可以是ADAS(高级驾驶员辅助系统)成像装置的一部分。
包括在车辆200上作为图像获取单元120的一部分的图像捕获设备可以定位在任何合适的地点。在一些实施例中,如图2A-图2E和图3A-图3C中所示,图像捕获设备122可以位于后视镜附近。该位置可以提供与车辆200的驾驶员的视线类似的视线,这可以帮助确定驾驶员可见和不可见的东西。图像捕获设备122可以定位在后视镜附近的任何地点,但是将图像捕获设备122放置在镜子的驾驶员侧可以进一步帮助获得表示驾驶员的视野和/或视线的图像。
还可以使用图像获取单元120的图像捕获设备的其它地点。例如,图像捕获设备124可以位于车辆200的保险杠上或保险杠中。这样的地点可能特别适合于具有宽视场的图像捕获设备。位于保险杠的图像捕获设备的视线可能与驾驶员的视线不同,因此,保险杠图像捕获设备和驾驶员可能并不总是看到相同的对象。图像捕获设备(例如,图像捕获设备122、124和126)也可以位于其它地点。例如,图像捕获设备可以位于车辆200的一个或两个侧镜上或其中、车辆200的车顶上、车辆200的引擎盖上、车辆200的后备箱上、车辆的侧面上200,安装在车辆200的任何窗户上、定位在车辆200的任何窗户后面或定位在车辆200的任何窗户前面,以及安装在车辆200的前面和/或后面的灯特征中或附近,等等。
除了图像捕获设备之外,车辆200还可以包括系统100的各种其它组件。例如,处理单元110可以被包括在车辆200上,与车辆的发动机控制单元(ECU)或者集成或者分离。车辆200还可以配备有位置传感器130,诸如GPS接收器,并且还可以包括地图数据库160和存储器单元140和150。
如之前所讨论的,无线收发器172可以通过一个或多个网络(例如,蜂窝网络、互联网等)接收数据。例如,无线收发器172可以将系统100收集的数据上传到一个或多个服务器,并且从该一个或多个服务器下载数据。经由无线收发器172,系统100可以接收例如对存储在地图数据库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可以与6mm透镜或12mm透镜相关联。在一些实施例中,图像捕获设备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像素或更大的分辨率。
卷帘快门的使用可能导致不同行中的像素在不同时间被曝光和捕获,这可能导致捕获的图像帧中的倾斜和其它图像伪影。另一方面,当图像捕获设备122被配置为利用全局或同步快门操作时,所有像素可以在共同曝光时段期间被曝光相同的时间量。因此,从采用全局快门的系统收集的帧中的图像数据表示特定时间的整个FOV(诸如FOV 202)的快照。相比之下,在卷帘快门应用中,帧中的每一行都会被曝光,并且数据在不同时间被捕获。因此,移动对象在具有卷帘快门的图像捕获设备中可能显得失真。下面将更详细地描述这种现象。
第二图像捕获设备124和第三图像捕获设备126可以是任何类型的图像捕获设备。与第一图像捕获设备122类似,图像捕获设备124和126中的每一个可以包括光轴。在一个实施例中,图像捕获设备124和126中的每一个可以包括具有全局快门的Aptina M9V024 WVGA传感器。替代地,图像捕获设备124和126中的每一个可以包括卷帘快门。与图像捕获设备122类似,图像捕获设备124和126可以被配置为包括各种透镜和光学元件。在一些实施例中,与图像捕获设备124和126相关联的透镜可以提供与与图像捕获设备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用于立体分析的附加视差信息。横向位移的差可以由dx表示,如图2C和2D中所示。在一些实施例中,图像捕获设备122、124和126之间可能存在前后位移(例如,距离位移)。例如,图像捕获设备122可以位于图像捕获设备124和/或图像捕获设备126后面0.5至2米或更多处。这种类型的位移可以使得图像捕获设备之一能够覆盖(一个或多个)其它图像捕获设备的潜在盲点。
图像捕获设备122可以具有任何合适的分辨率能力(例如,与图像传感器相关联的像素的数量),并且与图像捕获设备122相关联的(一个或多个)图像传感器的分辨率可以比与图像捕获设备124和126相关联的(一个或多个)图像传感器的分辨率更高、更低或相同。在一些实施例中,与图像捕获设备122和/或图像捕获设备124和126相关联的(一个或多个)图像传感器可以具有640x480、1024x768、1280x960的分辨率或任何其它合适的分辨率。
帧速率(例如,图像捕获设备在继续捕获与下一图像帧相关联的像素数据之前获取一个图像帧的一组像素数据的速率)可以是可控的。与图像捕获设备122相关联的帧速率可以比与图像捕获设备124和126相关联的帧速率更高、更低或相同。与图像捕获设备122、124和126相关联的帧速率可以取决于可以影响帧速率的定时的多种因素。例如,图像捕获设备122、124和126中的一个或多个可以包括在获取与图像捕获设备122、124和/或126中的图像传感器的一个或多个像素相关联的图像数据之前或之后施加的可选择的像素延迟时段。通常,可以根据设备的时钟速率(例如,每个时钟周期一个像素)获取与每个像素对应的图像数据。另外,在包括卷帘快门的实施例中,图像捕获设备122、124和126中的一个或多个可以包括在获取与图像捕获设备122、124和/或126中的图像传感器的像素行相关联的图像数据之前或之后施加的可选择的水平消隐时段。此外,图像捕获设备122、124和/或126中的一个或多个可以包括在获取与图像捕获设备122、124和126的图像帧相关联的图像数据之前或之后施加的可选择的垂直消隐时段。
这些定时控制可以实现与图像捕获设备122、124和126相关联的帧速率的同步,即使每个的线扫描速率不同。另外,如下面将更详细讨论的,除了其它因素(例如,图像传感器分辨率、最大线扫描速率等)之外,这些可选择的定时控制可以实现从图像捕获设备122的FOV与图像捕获设备124和126的一个或多个FOV重叠的区域的图像捕捉的同步,即使图像捕获设备122的视场与图像捕获设备124和126的视场不同。
图像捕获设备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还可以被配置为获取距车辆更远的范围(例如,25m、50m、100m、150m或更远)处的对象的图像。此外,可以选择图像捕获设备122、124和126的焦距,使得一个图像捕获设备(例如,图像捕获设备122)可以获取距离车辆相对近(例如,在10m内或在20m内)的对象的图像。,而其它图像捕获设备(例如,图像捕获设备124和126)可以获取距车辆200更远(例如,大于20m、50m、100m、150m等)的对象的图像。
根据一些实施例,一个或多个图像捕获设备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的视场共享公共中心。在其它实施例中,图像捕获设备122、124和126可以捕获相邻的FOV或者可以在它们的FOV中具有部分重叠。在一些实施例中,图像捕获设备122、124和126的视场可以对齐,使得较窄FOV图像捕获设备124和/或126的中心可以位于更宽FOV设备122的视场的下半部分中。
图2F是与所公开的实施例一致的示例性车辆控制系统的示意图。如图2F中所示,车辆200可以包括油门调节(throttling)系统220、制动系统230和转向系统240。系统100可以通过一个或多个数据链路(例如,任何有线和/或无线链路或用于传输数据的链路)向油门调节系统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可以提供窄视场(例如,34度,或从约20度到45度等的范围中选择的其它值),图像捕获设备124可以提供宽视场(例如,150度或从约100度至约180度的范围中选择的其它值),并且图像捕获设备126可以提供中间视场(例如,46度或从约35至约60度的范围中选择的其它值)。在一些实施例中,图像捕获设备126可以充当主相机或主要相机。图像捕获设备122、124和126可以定位在后视镜310后面并且基本上并排定位(例如,间隔6cm)。此外,在一些实施例中,如上所述,图像捕获设备122、124和126中的一个或多个可以安装在与车辆200的挡风玻璃齐平的防眩罩380后面。这种屏蔽可以起到最小化来自汽车内部的任何反射对图像捕获设备122、124和126的影响的作用。
在另一个实施例中,如上面结合图3B和图3C所讨论的,宽视场相机(例如,以上示例中的图像捕获设备124)可以安装得低于窄视场相机和主视场相机(例如,以上示例中的图像设备122和126)。这种配置可以提供来自宽视场相机的自由视线。为了减少反射,相机可以靠近车辆200的挡风玻璃安装,并且可以包括相机上的偏振器以阻尼反射光。
三相机系统可以提供某些性能特性。例如,一些实施例可以包括基于来自另一个相机的检测结果来验证一个相机对对象的检测的能力。在上述三相机配置中,处理单元110可以包括例如三个处理设备(例如,三个EyeQ系列处理器芯片,如上所述),其中每个处理设备专用于处理由图像捕获设备122、124和126中的一个或多个捕获的图像。
在三相机系统中,第一处理设备可以接收来自主相机和窄视场相机两者的图像,并对窄FOV相机执行视觉处理,以例如检测其它车辆、行人、车道标记、交通标志、交通灯和其它道路对象。此外,第一处理设备可以计算来自主相机和窄相机的图像之间的像素视差并且创建车辆200的环境的3D重建。第一处理设备然后可以将3D重建与3D地图数据或与基于来自另一个相机的信息计算的3D信息组合。
第二处理设备可以接收来自主相机的图像并执行视觉处理以检测其它车辆、行人、车道标记、交通标志、交通灯和其它道路对象。另外,第二处理设备可以计算相机位移,并且基于该位移计算连续图像之间的像素视差并创建场景的3D重建(例如,运动结构)。第二处理设备可以将来自基于运动结构的3D重建发送到第一处理设备以与立体3D图像组合。
第三处理设备可以接收来自宽FOV相机的图像并处理该图像以检测车辆、行人、车道标记、交通标志、交通灯和其它道路对象。第三处理设备还可以执行附加的处理指令来分析图像以识别图像中移动的对象,诸如改变车道的车辆、行人等。
在一些实施例中,独立地捕获和处理基于图像的信息流可以提供在系统中提供冗余的机会。这种冗余可以包括例如使用第一图像捕获设备和从该设备处理的图像来验证和/或补充通过捕获和处理来自至少第二图像捕获设备的图像信息而获得的信息。
在一些实施例中,系统100可以使用两个图像捕获设备(例如,图像捕获设备122和124)来为车辆200提供导航辅助,并且使用第三图像捕获设备(例如,图像捕获设备126)来提供冗余和验证从其它两个图像捕获设备接收到的数据的分析。例如,在这样的配置中,图像捕获设备122和124可以提供用于导航车辆200的系统100进行立体分析的图像,而图像捕获设备126可以提供用于系统100的单眼分析的图像,以提供基于从图像捕获设备122和/或图像捕获设备124捕获的图像获得的信息的冗余和验证。即,图像捕获设备126(以及对应的处理设备)可以被认为提供冗余子系统,用于提供对从图像捕获设备122和124导出的分析的检查(例如,以提供自动紧急制动(AEB)系统)。此外,在一些实施例中,可以基于从一个或多个传感器(例如,雷达、激光雷达、声学传感器、从车辆外部的一个或多个收发器接收到的信息等)接收到的信息来补充接收到的数据的冗余和验证。
本领域技术人员将认识到,上述相机配置、相机放置、相机数量、相机地点等仅是示例。这些组件和相对于整个系统描述的其它组件可以以各种不同的配置来组装和使用,而不脱离所公开的实施例的范围。关于使用多相机系统来提供驾驶员辅助和/或自主车辆功能的进一步细节如下。
图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可以包括用于检测该组图像内的一组特征的指令,该组特征诸如车道标线、车辆、行人、道路标志、高速公路出口坡道、交通灯、危险对象以及与车辆环境相关联的任何其它特征。基于该分析,系统100(例如,经由处理单元110)可以引起车辆200中的一个或多个导航响应,诸如转弯、车道变换、加速度改变等,如下面结合导航响应模块408所讨论的。
在一个实施例中,立体图像分析模块404可以存储指令(诸如计算机视觉软件),当由处理单元110执行时,该指令对由选自图像捕获设备122、124和126中的任何一个的图像捕获设备的组合获取的第一组图像和第二组图像执行立体图像分析。在一些实施例中,处理单元110可以将来自第一组图像和第二组图像的信息与附加的传感信息(例如,来自雷达的信息)组合以执行立体图像分析。例如,立体图像分析模块404可以包括用于基于由图像捕获设备124获取的第一组图像和由图像捕获设备126获取的第二组图像来执行立体图像分析的指令。如下面结合图6所描述的,立体图像分析模块404可以包括用于检测第一组图像和第二组图像内的一组特征的指令,该组特征诸如车道标线、车辆、行人、道路标记、高速公路出口坡道、交通灯、危险对象等。基于分析,处理单元110可以引起车辆200中的一个或多个导航响应,诸如转弯、车道变换、加速度改变等,如下面结合导航响应模块408所讨论的。此外,在一些实施例中,立体图像分析模块404可以实现与经过训练的系统(诸如神经网络或深度神经网络)或未经训练的系统(诸如可以被配置为使用计算机视觉算法来检测和/或标记环境中的对象,从中捕获和处理传感信息)相关联的技术。在一个实施例中,立体图像分析模块404和/或其它图像处理模块可以被配置为使用经过训练和未经训练的系统的组合。
在一个实施例中,速度和加速度模块406可以存储被配置为分析从车辆200中的一个或多个计算和机电设备接收到的数据的软件,所述计算和机电装置被配置为引起车辆200的速度和/或加速度的变化。例如,处理单元110可以执行与速度和加速度模块406相关联的指令,以基于从单眼图像分析模块402和/或立体图像分析模块404的执行导出的数据来计算车辆200的目标速度。这样的数据可以包括例如目标位置、速度和/或加速度、车辆200相对于附近车辆、行人或道路对象的位置和/或速度、车辆200相对于道路的车道标线的位置信息,等等。另外,处理单元110可以基于传感输入(例如,来自雷达的信息)和来自车辆200的其它系统(诸如车辆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。处理单元110可以执行单眼图像分析模块402以在步骤520处分析多个图像,如下面结合图5B-图5D进一步详细描述的。通过执行分析,处理单元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可以扫描一个或多个图像、将图像与一个或多个预定模式进行比较,并且识别每个图像内可能包含关注的对象(例如,车辆、行人或其部分)的可能地点。预定模式可以以实现高“错误命中”率和低“未命中”率的方式设计。例如,处理单元110可以使用与预定模式的相似度的低阈值来将候选对象识别为可能的车辆或行人。这样做可以允许处理单元110降低未命中(例如,未识别)表示车辆或行人的候选对象的概率。
在步骤542处,处理单元110可以基于分类标准过滤该组候选对象以排除某些候选者(例如,不相关或不太相关的对象)。这样的标准可以从与存储在数据库(例如,存储在存储器140中的数据库)中的对象类型相关联的各种属性导出。属性可以包括对象形状、维度、纹理、(例如,相对于车辆200的)位置等。因此,处理单元110可以使用一组或多组标准拒绝该组候选对象中的错误候选者。
在步骤544处,处理单元110可以分析多个图像帧以确定该组候选对象中的对象是否表示车辆和/或行人。例如,处理单元110可以跨连续帧跟踪检测到的候选对象并且累积与检测到的对象相关联的逐帧数据(例如,尺寸、相对于车辆200的位置等)。另外,处理单元110可以估计检测到的对象的参数并将对象的逐帧位置数据与预测位置进行比较。
在步骤546处,处理单元110可以构建针对检测到的对象的一组测量。这样的测量可以包括例如与检测到的对象相关联的位置、速度和加速度值(相对于车辆200)。在一些实施例中,处理单元110可以基于使用一系列基于时间的观测(诸如卡尔曼滤波器或线性二次估计(LQE))的估计技术和/或基于针对不同对象类型(例如,汽车、卡车、行人、自行车、道路标志等)的可用建模数据构建测量。卡尔曼滤波器可以基于对象尺度的测量,其中尺度测量与碰撞时间(例如,车辆200到达对象的时间量)成比例。因此,通过执行步骤540-546,处理单元110可以识别出现在该组捕获到的图像内的车辆和行人并且导出与车辆和行人相关联的信息(例如,位置、速度、尺寸)。基于该识别和导出的信息,处理单元110可以在车辆200中引起一个或多个导航响应,如上面结合图5A所描述的。
在步骤548处,处理单元110可以执行一个或多个图像的光流分析,以降低检测到“错误命中”和未命中表示车辆或行人的候选对象的概率。光流分析可以指,例如,分析与其它车辆和行人相关联的一个或多个图像中相对于车辆200,并且与道路表面运动不同的运动模式。处理单元110可以通过观察在不同时间捕获的多个图像帧上的对象的不同位置来计算候选对象的运动。处理单元110可以使用位置和时间值作为数学模型的输入来计算候选对象的运动。因此,光流分析可以提供检测车辆200附近的车辆和行人的另一种方法。处理单元110可以结合步骤540-546执行光流分析,以提供用于检测车辆和行人的冗余并增加系统100的可靠性。
图5C是示出与所公开的实施例一致的用于检测一组图像中的道路标记和/或车道几何信息的示例性处理500C的流程图。处理单元110可以执行单眼图像分析模块402以实现过程500C。在步骤550处,处理单元110可以通过扫描一个或多个图像来检测一组对象。为了检测车道标线、车道几何信息和其它相关道路标记的片段,处理单元110可以过滤该组对象以排除那些被确定为不相关的对象(例如,小坑洼、小岩石等)。在步骤552处,处理单元110可以将在步骤550中检测到的属于相同道路标记或车道标记的片段分组在一起。基于分组,处理单元110可以开发模型来表示检测到的片段,诸如数学模型。
在步骤554处,处理单元110可以构建与检测到的片段相关联的一组测量。在一些实施例中,处理单元110可以创建检测到的片段从图像平面到真实世界平面的投影。可以使用具有与物理属性(诸如检测到的道路的位置、坡度、曲率和曲率导数)对应的系数的3次多项式来表征投影。在生成投影时,处理单元110可以考虑道路表面的变化以及与车辆200相关联的俯仰速率和侧倾速率。另外,处理单元110可以通过分析道路表面上存在的位置和运动线索来对道路高程(elevation)进行建模。此外,处理单元110可以通过跟踪一个或多个图像中的一组特征点来估计与车辆200相关联的俯仰速率和侧倾速率。
在步骤556处,处理单元110可以通过例如跨连续图像帧跟踪检测到的片段并且累积与检测到的片段相关联的逐帧数据来执行多帧分析。当处理单元110执行多帧分析时,在步骤554构建的该组测量可以变得更加可靠并且与越来越高的置信水平相关联。因此,通过执行步骤550、552、554和556,处理单元110可以识别出现在该组捕获到的图像内的道路标记并且导出车道几何信息。基于该识别和导出的信息,处理单元110可以在车辆200中引起一个或多个导航响应,如上面结合图5A所描述的。
在步骤558处,处理单元110可以考虑附加的信息源以进一步开发车辆200在其周围环境中的安全模型。处理单元110可以使用安全模型来定义系统100可以以安全方式执行车辆200的自主控制的环境。为了开发安全模型,在一些实施例中,处理单元110可以考虑其它车辆的位置和运动、检测到的道路边缘和障碍物、和/或从地图数据(诸如来自地图数据库160的数据)提取的一般道路形状描述。通过考虑附加的信息源,处理单元110可以提供用于检测道路标记和车道几何形状的冗余并增加系统100的可靠性。
图5D是示出与所公开的实施例一致的用于检测一组图像中的交通灯的示例性处理500D的流程图。处理单元110可以执行单眼图像分析模块402以实现过程500D。在步骤560处,处理单元110可以扫描该组图像并识别出现在图像中可能包含交通灯的地点处的对象。例如,处理单元110可以过滤识别出的对象以构建一组候选对象,从而排除不太可能与交通灯对应的那些对象。过滤可以基于与交通灯相关联的各种属性,诸如形状、维度、纹理、(例如,相对于车辆200的)位置等来完成。这样的属性可以基于交通灯和交通控制信号的多个示例并且被存储在数据库中。在一些实施例中,处理单元110可以对反映可能的交通灯的该组候选对象执行多帧分析。例如,处理单元110可以跨连续图像帧跟踪候选对象、估计候选对象的真实世界位置,并且过滤掉那些正在移动的对象(其不太可能是交通灯)。在一些实施例中,处理单元110可以对候选对象执行颜色分析并且识别出现在可能的交通灯内部的检测到的颜色的相对位置。
在步骤562处,处理单元110可以分析路口的几何形状。该分析可以基于以下各项的任意组合:(i)在车辆200的任一侧检测到的车道数量,(ii)在道路上检测到的标线(诸如箭头标记),以及(iii)从地图数据(诸如来自地图数据库160的数据)提取出的路口的描述。处理单元110可以使用从单眼分析模块402的执行导出的信息来进行分析。另外,处理单元110可以确定在步骤560处检测到的交通灯与出现在车辆200附近的车道之间的对应关系。
当车辆200接近路口时,在步骤564处,处理单元110可以更新与分析的路口几何形状和检测到的交通灯相关联的置信水平。例如,与实际出现在路口的数量相比,估计出现在路口的交通灯数量可能会影响置信水平。因此,基于置信水平,处理单元110可以将控制委托给车辆200的驾驶员,以便改善安全状况。通过执行步骤560、562和564,处理单元110可以识别出现在该组捕获到的图像内的交通灯并分析路口几何信息。基于识别和分析,处理单元110可以在车辆200中引起一个或多个导航响应,如上面结合图5A所描述的。
图5E是示出与所公开的实施例一致的用于基于车辆路径在车辆200中引起一个或多个导航响应的示例性处理500E的流程图。在步骤570处,处理单元110可以构建与车辆200相关联的初始车辆路径。车辆路径可以使用以坐标(x,z)表示的一组点来表示,并且该组点中的两点之间的距离di可以落入1至5米的范围内。在一个实施例中,处理单元110可以使用两个多项式(诸如左道路多项式和右道路多项式)构建初始车辆路径。处理单元110可以计算两个多项式之间的几何中点,并且如果有的话,那么将结果车辆路径中包括的每个点偏移预定偏移量(例如,智能车道偏移量)(零偏移量可以对应于在车道的中间行驶)。该偏移可以沿着垂直于车辆路径中任意两点之间的片段的方向。在另一个实施例中,处理单元110可以使用一个多项式和估计车道宽度来将车辆路径的每个点偏移估计车道宽度的一半加上预定偏移量(例如,智能车道偏移量)。
在步骤572处,处理单元110可以更新在步骤570构建的车辆路径。处理单元110可以使用更高的分辨率重建在步骤570处构建的车辆路径,使得表示车辆路径的该组点中的两点之间的距离dk小于上述距离di。例如,距离dk可以落在0.1至0.3米的范围内。处理单元110可以使用抛物线样条算法来重建车辆路径,这可以产生与车辆路径的总长度对应的累积距离向量S(即,基于表示车辆路径的该组点)。
在步骤574处,处理单元110可以基于在步骤572处构建的更新后的车辆路径来确定前视(look-ahead)点(以坐标表达为(xl,zl))。处理单元110可以从累积距离向量S提取前视点,并且前视点可以与前视距离和前视时间相关联。可以具有范围从10米到20米的下限的前视距离可以被计算为车辆200的速度和前视时间的乘积。例如,随着车辆200的速度减小,前视距离也可以减小(例如,直到其达到下限)。范围可以从0.5到1.5秒的前视时间可以与与引起车辆200中的导航响应相关联的一个或多个控制环路(诸如航向误差跟踪控制环路)的增益成反比。例如,航向误差跟踪控制环路的增益可以取决于偏航率环路、转向致动器环路、汽车横向动力学等的带宽。因此,航向误差跟踪控制环路的增益越高,前视时间越低。
在步骤576处,处理单元110可以基于在步骤574处确定的前视点来确定航向误差和偏航率命令。处理单元110可以通过计算前视点的反正切(例如,arctan(xl/zl))来确定航向误差。处理单元110可以将偏航率命令确定为航向误差和高级控制增益的乘积。如果前视距离不在下限,那么高级控制增益可以等于:(2/前视时间)。否则,高级控制增益可以等于:(2*车辆200的速度/前视距离)。
图5F是示出与所公开的实施例一致的用于确定前行车辆是否正在改变车道的示例性处理500F的流程图。在步骤580处,处理单元110可以确定与前行车辆(例如,在车辆200前方行驶的车辆)相关联的导航信息。例如,处理单元110可以使用上面结合图5A和图5B描述的技术来确定前行车辆的位置、速度(例如,方向和速度)和/或加速度。处理单元110还可以使用上面结合图5E描述的技术来确定一个或多个道路多项式、前视点(与车辆200相关联)和/或蜗牛轨迹(例如,描述前行车辆所采取的路径的一组点)。
在步骤582处,处理单元110可以分析在步骤580处确定的导航信息。在一个实施例中,处理单元110可以计算蜗牛轨迹和道路多项式(例如,沿着轨迹)之间的距离。如果沿着轨迹的该距离的方差超过预定阈值(例如,在直线道路上为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可以通过将沿着轨迹行进的横向距离与蜗牛轨迹的预期曲率进行比较来分析蜗牛轨迹的几何形状。预期曲率半径可以根据计算确定:(δz 2x 2)/2/(δx),其中δx表示横向行驶距离,δz表示纵向行驶距离。如果横向行驶距离和预期曲率之间的差超过预定阈值(例如,500至700米),那么处理单元110可以确定前行车辆可能正在改变车道。在另一个实施例中,处理单元110可以分析前行车辆的位置。如果前行车辆的位置遮挡了道路多项式(例如,前行车辆覆盖在道路多项式之上),那么处理单元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与在第一、第二和第三多个图像中的任一个内检测到的对象之间的相对位置、相对速度和/或相对加速度来引起一个或多个导航响应。多个导航响应可以同时、按顺序或其任意组合发生。
用于自主车辆导航的稀疏道路模型
在一些实施例中,所公开的系统和方法可以使用稀疏地图来进行自主车辆导航。特别地,稀疏地图可以用于沿着路段的自主车辆导航。例如,稀疏地图可以提供用于导航自主车辆的足够信息,而无需存储和/或更新大量数据。如下面进一步详细讨论的,自主车辆可以使用稀疏地图基于一条或多条存储的轨迹来导航一条或多条道路。
用于自主车辆导航的稀疏地图
在一些实施例中,所公开的系统和方法可以生成用于自主车辆导航的稀疏地图。例如,稀疏地图可以提供足够的导航信息,而不需要过多的数据存储或数据传输速率。如下面进一步详细讨论的,车辆(其可以是自主车辆)可以使用稀疏地图来导航一条或多条道路。例如,在一些实施例中,稀疏地图可以包括与道路和沿着道路的潜在地标相关的数据,其可能足以用于车辆导航,但也展现出小的数据占用空间。例如,与包括详细地图信息(诸如沿着道路收集的图像数据)的数字地图相比,下面详细描述的稀疏数据地图可能需要显著更少的存储空间和数据传输带宽。
例如,稀疏数据地图可以存储沿着道路的优选车辆路径的三维多项式表示,而不是存储路段的详细表示。这些路径可能需要很少的数据存储空间。此外,在所描述的稀疏数据地图中,可以识别地标并将其包括在稀疏地图道路模型中以帮助导航。这些地标可以位于适合实现车辆导航的任何间距处,但在一些情况下,不需要以高密度和短间距识别此类地标并将其包含在模型中。而是,在一些情况下,基于间隔开至少50米、至少100米、至少500米、至少1公里或至少2公里的地标进行导航是可能的。如将在其它部分中更详细讨论的,稀疏地图可以基于由配备有各种传感器和设备(诸如图像捕获设备、全球定位系统传感器、运动传感器等)的车辆在车辆沿着行车道行驶时收集或测量的数据来生成。在一些情况下,稀疏地图可以基于在一个或多个车辆沿着特定行车道的多次驾驶期间收集的数据来生成。使用一个或多个车辆的多次驾驶来生成稀疏地图可以被称为“众包”稀疏地图。
与所公开的实施例一致,自主车辆系统可以使用稀疏地图进行导航。例如,所公开的系统和方法可以分发稀疏地图以生成自主车辆的道路导航模型,并且可以使用稀疏地图和/或生成的道路导航模型沿着路段导航自主车辆。与本公开一致的稀疏地图可以包括一个或多个三维轮廓,其可以表示自主车辆在沿着相关联路段移动时可以经过的预定轨迹。
与本公开一致的稀疏地图还可以包括表示一个或多个道路特征的数据。这样的道路特征可以包括辨识出的地标、道路签名轮廓、以及在车辆导航中有用的任何其它道路相关特征。与本公开一致的稀疏地图可以基于稀疏地图中包括的相对少量的数据来实现车辆的自主导航。例如,所公开的稀疏地图实施例可能需要相对较少的存储空间(以及当稀疏地图的部分传输到车辆时,相对小的带宽),而不包括道路的详细表示,诸如道路边缘、道路曲率、与路段相关联的图像、或详细说明与路段相关联的其它物理特征的数据,但仍然可以充分提供自主车辆导航。下面进一步详细讨论的所公开的稀疏地图的小数据占用空间可以在一些实施例中通过存储需要少量数据但仍然实现自主导航的道路相关元素的表示来实现。
例如,所公开的稀疏地图可以存储车辆可以沿着道路遵循的一条或多条轨迹的多项式表示,而不是存储道路的各个方面的详细表示。因此,不是使用所公开的稀疏地图来存储(或必须传输)关于道路的物理性质的细节以使得能够沿着道路导航,而是可以沿着特定路段导航车辆,在一些情况下,不必解释道路的物理方面,而是通过将其行进路径与沿着特定路段的轨迹(例如,多项式样条)对齐。以这种方式,可以主要基于所存储的轨迹(例如,多项式样条)来导航车辆,与涉及行车道图像、道路参数、道路布局等的存储的方法相比,这可能需要少得多的存储空间。
除了所存储的沿着路段的轨迹的多项式表示之外,所公开的稀疏地图还可以包括可以表示道路特征的小数据对象。在一些实施例中,小数据对象可以包括数字签名,其源自由沿着该路段行驶的车辆的车载传感器(例如,相机或其它传感器,诸如悬架传感器)获得的数字图像(或数字信号)。数字签名相对于传感器获取的信号可以具有减小的尺寸。在一些实施例中,数字签名可以被创建为与分类器功能兼容,该分类器功能被配置为从例如在后续驾驶期间由传感器获取的信号检测并识别道路特征。在一些实施例中,可以创建数字签名,使得数字签名具有尽可能小的占用空间,同时保留基于后续时间由沿着同一路段行驶的车辆的车载相机捕获的道路特征的图像(或者如果所存储的签名不是基于图像和/或包括其它数据,那么由传感器生成的数字信号)将道路特征与存储的签名相关或匹配的能力。
在一些实施例中,数据对象的尺寸还可以与道路特征的唯一性相关联。例如,对于可由车辆上的车载相机检测到的道路特征,并且其中车辆上的车载相机系统耦合到能够将与该道路特征对应的图像数据区分为与特定类型的道路特征(例如,道路标志)相关联的分类器,并且其中这样的道路标志在该区域中是局部唯一的(例如,附近没有相同的道路标志或相同类型的道路标志),存储指示道路特征类型及其地点的数据可能就足够。
如下面将进一步详细讨论的,道路特征(例如,沿着路段的地标)可以被存储为可以用相对较少的字节表示道路特征的小数据对象,同时提供用于辨识和使用这样的特征进行导航的足够信息。在一个示例中,道路标志可以被识别为车辆导航可以基于的辨识出的地标。道路标志的表示可以存储在稀疏地图中以包括例如指示地标类型(例如,停止标志)的几个字节的数据和指示地标的地点(例如,坐标)的几个字节的数据。基于地标的这种数据光(data-light)表示的导航(例如,使用足以基于地标进行定位、辨识和导航的表示)可以提供与稀疏地图相关联的期望水平的导航功能,而不显著增加与稀疏地图相关联的数据开销。地标(和其它道路特征)的这种精简表示可以利用包括在此类车辆上的被配置为检测、识别和/或分类某些道路特征的传感器和处理器。
例如,当标志或者甚至特定类型的标志在给定区域中是局部唯一的时(例如,当没有其它标志或者没有相同类型的其它标志时),稀疏地图可以使用指示地标的类型(标志或特定类型的标志)的数据,并且在导航(例如,自主导航)期间,当自主车辆上的车载相机捕获包含标志(或特定类型的标志)的区域的图像时,处理器可以处理图像、检测标志(如果确实存在于图像中)、将图像分类为标志(或特定类型的标志),并使图像的地点与如存储在稀疏地图中的标志的地点关联。
生成稀疏地图
在一些实施例中,稀疏地图可以包括沿着路段延伸的道路表面特征的至少一个线表示以及与路段相关联的多个地标。在某些方面,稀疏地图可以例如通过对在一个或多个车辆穿过路段时获取的多个图像进行图像分析经由“众包”来生成。
图8示出了一个或多个车辆(例如,车辆200(其可以是自主车辆))可以访问以提供自主车辆导航的稀疏地图800。稀疏地图800可以存储在存储器中,诸如存储器140或150。这样的存储器设备可以包括任何类型的非暂态存储设备或计算机可读介质。例如,在一些实施例中,存储器140或150可以包括硬盘驱动器、光盘、闪存、基于磁的存储器设备、基于光的存储器设备等。在一些实施例中,稀疏地图800可以存储在数据库(例如,地图数据库160)中,该数据库可以存储在存储器140或150或其它类型的存储设备中。
在一些实施例中,稀疏地图800可以存储在车辆200上车载提供的存储设备或非暂态计算机可读介质(例如,包括在车辆200上车载的导航系统中的存储设备)上。车辆200上提供的处理器(例如,处理单元110)可以访问存储在车辆200上车载提供的存储设备或计算机可读介质中的稀疏地图800,以便生成用于在车辆穿过路段时引导自主车辆200的导航指令。
但是,稀疏地图800不需要相对于车辆本地存储。在一些实施例中,稀疏地图800可以存储在与车辆200或与车辆200相关联的设备通信的远程服务器上提供的存储设备或计算机可读介质上。车辆200上提供的处理器(例如,处理单元110)可以从远程服务器接收稀疏地图800中包括的数据,并且可以执行用于指导车辆200的自主驾驶的数据。在这样的实施例中,远程服务器可以存储稀疏地图800的全部或仅其一部分。因此,车辆200上和/或一个或多个附加车辆上车载提供的存储设备或计算机可读介质可以存储稀疏地图800的(一个或多个)剩余部分。
此外,在这样的实施例中,可以使得稀疏地图800可供穿过各个路段的多个车辆(例如,数十、数百、数千或数百万车辆等)访问。还应当注意的是,稀疏地图800可以包括多个子地图。例如,在一些实施例中,稀疏地图800可以包括可以用于导航车辆的数百、数千、数百万或更多的子地图。这样的子地图可以被称为本地地图,并且沿着行车道行驶的车辆可以访问与车辆正在行驶的地点相关的任意数量的本地地图。稀疏地图800的本地地图部分可以与全球导航卫星系统(GNSS)密钥一起存储作为稀疏地图800的数据库的索引。因此,虽然可以在不依赖于主车辆的GNSS位置、道路特征或地标的情况下执行本系统中用于导航主车辆的转向角的计算,但是这样的GNSS信息可以用于检索相关本地地图。
一般而言,稀疏地图800可以基于从一个或多个车辆沿着行车道行驶时收集的数据来生成。例如,使用一个或多个车辆上的车载传感器(例如,相机、速度计、GPS、加速度计等),可以记录一个或多个车辆沿着行车道行驶的轨迹,并且可以基于收集到的由一个或多个车辆行驶的轨迹来确定沿着行车道进行后续行程的车辆的优选轨迹的多项式表示。类似地,由一个或多个车辆收集的数据可以帮助识别沿着特定行车道的潜在地标。从行驶车辆收集的数据还可以用于识别道路轮廓信息,诸如道路宽度轮廓、道路粗糙度轮廓、交通线间距轮廓、道路状况等。使用收集到的信息,可以生成并分发稀疏地图800(例如,用于本地存储或经由实时数据传输)用于导航一个或多个自主车辆。但是,在一些实施例中,地图生成可能不会在地图初始生成时结束。如下面将更详细讨论的,稀疏地图800可以基于当车辆继续穿过稀疏地图800中包括的行车道时从这些车辆收集的数据来连续地或周期性地更新。
稀疏地图800中记录的数据可以包括基于全球定位系统(GPS)数据的位置信息。例如,稀疏地图800中可以包括各种地图元素的地点信息,包括例如地标地点、道路轮廓地点等。稀疏地图800中包括的地图元素的地点可以使用从穿过行车道的车辆收集的GPS数据来获得。例如,经过识别出的地标的车辆可以使用与车辆相关联的GPS位置信息以及识别出的地标相对于车辆的地点的确定来确定识别出的地标的地点(例如,基于从车辆上车载的一个或多个相机收集到的数据的图像分析)。当另外的车辆经过识别出的地标的地点时,可以重复识别出的地标(或稀疏地图800中包括的任何其它特征)的这种地点确定。附加地点确定中的一些或全部可以用于细化存储在稀疏地图800中的相对于识别出的地标的地点信息。例如,在一些实施例中,可以对稀疏地图800中存储的相对于特定特征的多个位置测量结果一起进行平均。但是,也可以使用任何其它数学运算来基于地图元素的多个确定的地点来细化地图元素的存储地点。
所公开的实施例的稀疏地图可以使用相对少量的存储数据来实现车辆的自主导航。在一些实施例中,稀疏地图800可以具有小于每公里道路2MB、小于每公里道路1MB、小于每公里道路500kB,或小于每公里道路100kB的数据密度(例如,包括表示目标轨迹、地标和任何其它存储的道路特征的数据)。在一些实施例中,稀疏地图800的数据密度可以小于每公里道路10kB或甚至小于每公里道路2kB(例如,每公里1.6kB),或不超过每公里道路10kB,或不超过每公里道路20kB。在一些实施例中,美国的大多数(如果不是全部)行车道可以使用具有总共4GB或更少数据的稀疏地图来自主导航。这些数据密度值可以表示整个稀疏地图800上、稀疏地图800内的局部地图上、和/或稀疏地图800内的特定路段上的平均值。
如所指出的,稀疏地图800可以包括用于沿着路段引导自主驾驶或导航的多个目标轨迹810的表示。这样的目标轨迹可以被存储为三维样条。例如,存储在稀疏地图800中的目标轨迹可以基于车辆先前沿着特定路段行驶的两个或更多个重建的轨迹来确定。路段可以与单个目标轨迹或多个目标轨迹相关联。例如,在双车道道路上,可以存储第一目标轨迹以表示在第一方向上沿着道路行驶的预期路径,并且可以存储第二目标轨迹以表示在另一个方向(例如,与第一方向相反)上沿着道路行驶的预期路径。可以针对特定路段存储附加目标轨迹。例如,在多车道道路上,可以存储表示车辆在与多车道道路相关联的一个或多个车道中的预期行驶路径的一个或多个目标轨迹。在一些实施例中,多车道道路的每条车道可以与其自己的目标轨迹相关联。在其它实施例中,存储的目标轨迹可能比多车道道路上存在的车道少。在这种情况下,在多车道道路上导航的车辆可以使用任何存储的目标轨迹来通过考虑与存储了目标轨迹的车道的车道偏移量来引导其导航(例如,如果车辆在三车道高速公路的最左侧车道中行驶,并且仅存储高速公路中间车道的目标轨迹时,车辆可以通过考虑生成导航指令时在中间车道和最左车道之间的车道偏移量来使用中间车道的目标轨迹进行导航)。
在一些实施例中,目标轨迹可以表示车辆行驶时应采取的理想路径。目标轨迹可以位于例如行驶车道的近似中心处。在其它情况下,目标轨迹可以位于相对于路段的其它位置。例如,目标轨迹可以与道路的中心、道路的边缘或车道的边缘等大致重合。在这种情况下,基于目标轨迹的导航可以包括所确定的要相对于目标轨迹的地点维持的偏移量。此外,在一些实施例中,所确定的要相对于目标轨迹的地点维持的偏移量可以基于车辆的类型而不同(例如,包括两个车轴的客车沿着目标轨迹的至少一部分可以具有与包括不止两个车轴的卡车不同的偏移量)。
稀疏地图800还可以包括与与特定路段、本地地图等相关联的多个预定地标820相关的数据。如下文更详细讨论的,这些地标可以用于自主车辆的导航。例如,在一些实施例中,地标可以用于确定车辆相对于存储的目标轨迹的当前位置。利用该位置信息,自主车辆可以能够调整前进方向以匹配所确定地点处的目标轨迹的方向。
多个地标820可以被识别并以任何合适的间隔存储在稀疏地图800中。在一些实施例中,地标可以以相对高的密度存储(例如,每隔几米或更多)。但是,在一些实施例中,可以采用显著更大的地标间距值。例如,在稀疏地图800中,识别出的(或辨识出的)地标可以间隔10米、20米、50米、100米、1公里或2公里。在一些情况下,识别出的地标之间的距离甚至可能超过2公里。
在地标之间,并且因此在相对于目标轨迹的车辆位置的确定之间,车辆可以基于航位推算进行导航,其中车辆使用传感器来确定其自身运动并估计其相对于目标轨迹的位置。由于误差可能在航位推算导航期间累积,因此随着时间的推移,相对于目标轨迹的位置确定可能变得越来越不准确。车辆可以使用稀疏地图800中出现的地标(及其已知位置)来消除位置确定中航位推算引起的误差。以这种方式,包括在稀疏地图800中的识别出的地标可以用作导航锚,根据该导航锚可以确定车辆相对于目标轨迹的准确位置。由于位置定位中一定量的误差是可以接受的,因此识别出的地标并不总是可供自主车辆使用。相反,合适的导航甚至可以基于如上所述的10米、20米、50米、100米、500米、1公里、2公里或更大的地标间距。在一些实施例中,每1km道路1个识别出的地标的密度可能足以将纵向位置确定准确度维持在1m以内。因此,并非沿着路段出现的每个潜在地标都需要存储在稀疏地图800中。
此外,在一些实施例中,车道标线可以用于在地标间距期间定位车辆。通过在地标间距期间使用车道标线,可以最小化航位推算导航期间的累积。
除了目标轨迹和识别出的地标之外,稀疏地图800还可以包括与各种其它道路特征相关的信息。例如,图9A图示了沿着可以存储在稀疏地图800中的特定路段的曲线的表示。在一些实施例中,道路的单个车道可以通过道路左侧和右侧的三维多项式描述来建模。表示单个车道左侧和右侧的此类多项式如图9A中所示。无论道路可以具有多少条车道,都可以以类似于图9A中所示的方式使用多项式来表示道路。例如,多车道道路的左侧和右侧可以由类似于图9A中所示的多项式来表示,并且多车道道路上包括的中间车道标线(例如,表示车道边界的虚线标线、表示沿着不同方向行进的车道之间的边界的黄实线等)也可以使用诸如图9A中所示的多项式来表示。
如图9A中所示,车道900可以使用多项式(例如,一阶多项式、二阶多项式、三阶多项式或任何合适阶多项式)来表示。为了说明起见,车道900被示出为二维车道并且多项式被示出为二维多项式。如图9A中所示,车道900包括左侧910和右侧920。在一些实施例中,可以使用多于一个多项式来表示道路或车道边界的每一侧的地点。例如,左侧910和右侧920中的每一个可以由任何合适长度的多个多项式来表示。在一些情况下,多项式可以具有大约100m的长度,但是也可以使用大于或小于100m的其它长度。另外,多项式可以彼此重叠,以促进当主车辆沿着行车道行驶时基于随后遇到的多项式进行导航时的无缝转换。例如,左侧910和右侧920中的每一个可以由被分成大约100米长度的段(第一预定范围的示例)并且彼此重叠大约50米的多个三阶多项式来表示。表示左侧910和右侧920的多项式可以具有或可以不具有相同的阶数。例如,在一些实施例中,一些多项式可以是二阶多项式,一些可以是三阶多项式,一些可以是四阶多项式。
在图9A中所示的示例中,车道900的左侧910由两组三阶多项式表示。第一组包括多项式段911、912和913。第二组包括多项式段914、915和916。两组虽然基本上彼此平行,但遵循其各自道路两侧的地点。多项式段911、912、913、914、915和916具有大约100米的长度并且与系列中的相邻段重叠大约50米。但是,如前所述,也可以使用不同长度和不同重叠量的多项式。例如,多项式可以具有500m、1km或更长的长度,并且重叠量可以从0到50m、50m到100m、或大于100m变化。另外,虽然图9A被示出为表示在2D空间中延伸的多项式(例如,在纸的表面上),但是应该理解的是,这些多项式可以表示在三个维度上延伸的曲线(例如,包括高度分量)以除XY曲率之外,还表示路段中的高程变化。在图9A中所示的示例中,车道900的右侧920还由具有多项式段921、922和923的第一组和具有多项式段924、925和926的第二组来表示。
返回到稀疏地图800的目标轨迹,图9B示出了表示沿着特定路段行驶的车辆的目标轨迹的三维多项式。目标轨迹不仅表示主车辆应该沿着特定路段行驶的X-Y路径,还表示主车辆沿着该路段行驶时将经历的高程变化。因此,稀疏地图800中的每个目标轨迹可以由一个或多个三维多项式表示,如图9B中所示的三维多项式950。稀疏地图800可以包括多个轨迹(例如,数百万或数十亿或更多以表示沿着全世界行车道的各个路段的车辆的轨迹)。在一些实施例中,每个目标轨迹可以对应于连接三维多项式段的样条。
关于存储在稀疏地图800中的多项式曲线的数据占用空间,在一些实施例中,每个三次多项式可以由四个参数表示,每个参数需要四个字节的数据。合适的表示可以通过三次多项式获得,每100m需要大约192字节的数据。对于以大约100公里/小时行驶的主车辆来说,这可能意味着每小时大约200kB的数据使用/传输要求。
稀疏地图800可以使用几何描述符和元数据的组合来描述车道网络。几何形状可以通过如上所述的多项式或样条来描述。元数据可以描述车道数量、特殊特性(诸如拼车车道)以及可能的其它稀疏标签。这些指示符的总占用空间可以忽略不计。
因此,根据本公开的实施例的稀疏地图可以包括沿着路段延伸的道路表面特征的至少一个线表示,每个线表示表示沿着与道路表面特征基本上对应的路段的路径。在一些实施例中,如上所述,道路表面特征的至少一个线表示可以包括样条、多项式表示或曲线。此外,在一些实施例中,道路表面特征可以包括道路边缘或车道标线中的至少一个。此外,如下面关于“众包”所讨论的,可以通过对当一个或多个车辆穿过路段时获取的多个图像进行图像分析来识别道路表面特征。
如前所述,稀疏地图800可以包括与路段相关联的多个预定地标。稀疏地图800中的每个地标可以使用比存储的实际图像所需的更少的数据来表示和辨识,而不是存储地标的实际图像并且依赖于例如基于捕获的图像和存储的图像的图像识别分析。表示地标的数据仍可以包括用于描述或识别沿着道路的地标的足够信息。存储描述地标特性的数据,而不是地标的实际图像,可以减少稀疏地图800的尺寸。
图10图示了可以在稀疏地图800中表示的地标类型的示例。地标可以包括沿着路段的任何可见且可识别的对象。地标可以被选择为使得它们是固定的并且相对于它们的地点和/或内容不经常改变。当车辆穿过特定路段时,稀疏地图800中包括的地标可以用于确定车辆200相对于目标轨迹的地点。地标的示例可以包括交通标志、方向标志、一般标志(例如,矩形标志)、路边固定装置(例如,灯柱、反射器等)以及任何其它合适的类别。在一些实施例中,道路上的车道标记也可以作为地标被包括在稀疏地图800中。
图10中所示的地标示例包括交通标志、方向标志、路边固定装置和一般标志。交通标志可以包括例如限速标志(例如,限速标志1000)、让行标志(例如,让行标志1005)、路线编号标志(例如,路线编号标志1010)、交通灯标志(例如,交通灯标志1015)、停止标志(例如,停止标志1020)。方向标志可以包括这样的标志,该标志包括指示到不同地点的一个或多个方向的一个或多个箭头。例如,方向标志可以包括具有用于将车辆引导至不同道路或地点的箭头的高速公路标志1025、具有将车辆引导离开道路的箭头的出口标志1030等。因此,多个地标中的至少一个可以包括道路标志。
一般标志可能与交通无关。例如,一般标志可以包括用于广告的广告牌,或者邻近两个国家、州、县、城市或城镇之间边界的欢迎板。图10示出了一般标志1040(“Joe'sRestaurant”)。虽然一般标志1040可以具有矩形形状,如图10中所示,但是一般标志1040可以具有其它形状,诸如正方形、圆形、三角形等。
地标还可以包括路边固定装置。路边固定装置可以是非标志的对象,并且可能与交通或方向无关。例如,路边固定装置可以包括灯柱(例如,灯柱1035)、电线柱、交通灯柱等。
地标还可以包括可以专门设计用于自主车辆导航系统的信标。例如,这样的信标可以包括以预定间隔放置以帮助导航主车辆的独立结构。这样的信标还可以包括添加到现有道路标志(例如,图标、徽标、条形码等)的视觉/图形信息,其可以由沿着路段行驶的车辆识别或辨识。这样的信标还可以包括电子组件。在此类实施例中,电子信标(例如,RFID标签等)可以用于将非视觉信息传输到主车辆。这样的信息可以包括例如主车辆可以用来确定其沿着目标轨迹的位置的地标标识和/或地标地点信息。
在一些实施例中,稀疏地图800中包括的地标可以由预定尺寸的数据对象来表示。表示地标的数据可以包括用于识别特定地标的任何合适的参数。例如,在一些实施例中,存储在稀疏地图800中的地标可以包括参数,诸如地标的物理尺寸(例如,以支持基于已知尺寸/比例来估计到地标的距离)、到先前地标的距离、横向偏移、高度、类型代码(例如,地标类型——什么类型的方向标志、交通标志等)、GPS坐标(例如,以支持全球定位)以及任何其它合适的参数。每个参数可以与数据尺寸相关联。例如,可以使用8字节的数据来存储地标尺寸。到先前地标的距离、横向偏移和高度可以使用12字节的数据来指定。与诸如方向标志或交通标志之类的地标相关联的类型代码可能需要大约2字节的数据。对于一般标志,可以使用50字节的数据存储来存储能够识别一般标志的图像签名。地标GPS位置可以与16字节的数据存储相关联。每个参数的这些数据尺寸仅是示例,并且也可以使用其它数据尺寸。
以这种方式表示稀疏地图800中的地标可以提供用于高效地表示数据库中的地标的精简解决方案。在一些实施例中,标志可以被称为语义标志和非语义标志。语义标志可以包括存在标准化含义的任何类别的标志(例如,限速标志、警告标志、方向标志等)。非语义标志可以包括与标准化含义不相关联的任何标志(例如,一般广告标志、标识商业机构的标志等)。例如,每个语义标志可以用38字节的数据来表示(例如,8字节用于尺寸;12字节用于到先前地标的距离、横向偏移和高度;2字节用于类型代码;16字节用于GPS坐标)。稀疏地图800可以使用标签系统来表示地标类型。在一些情况下,每个交通标志或方向标志可以与其自己的标签相关联,该标签可以作为地标标识的一部分存储在数据库中。例如,数据库可以包括大约1000个不同标签来表示各种交通标志以及大约10000个不同标签来表示方向标志。当然,可以使用任何合适数量的标签,并且可以根据需要创建附加标签。在一些实施例中,通用标志可以使用小于约100字节来表示(例如,约86字节,包括8字节用于尺寸;12字节用于到先前地标的距离、横向偏移和高度;50字节用于图像签名;以及16字节用于GPS坐标)。
因此,对于不需要图像签名的语义道路标志,即使在每50m约1个的相对较高的地标密度下,对稀疏地图800的数据密度影响也可能约为每公里760字节(例如,每公里20个地标x每个地标38字节=760字节)。即使对于包括图像签名组件的通用标志,数据密度影响约为每公里1.72kB(例如,每公里20个地标x每个地标86字节=1,720字节)。对于语义道路标志,这相当于每小时行驶100公里的车辆每小时使用约76kB的数据。对于通用标志,这相当于每小时行驶100公里的车辆每小时使用约170kB。
在一些实施例中,大体上矩形的对象(诸如矩形标志)可以在稀疏地图800中由不超过100字节的数据来表示。稀疏地图800中的大体矩形对象(例如,一般标志1040)的表示可以包括与大体矩形对象相关联的压缩图像签名(例如,压缩图像签名1045)。该压缩图像签名可以用于例如帮助识别通用标志,例如作为辨识出的地标。这种压缩的图像签名(例如,从表示对象的实际图像数据导出的图像信息)可以避免存储对象的实际图像的需要或对实际图像执行比较图像分析以便辨识地标的需要。
参考图10,稀疏地图800可以包括或存储与一般标志1040相关联的压缩图像签名1045,而不是一般标志1040的实际图像。例如,在图像捕获设备(例如,图像捕获设备122、124或126)捕获一般标志1040的图像之后,处理器(例如,图像处理器190或能够处理图像的车载或相对于主车辆远程定位的任何其它处理器)可以执行图像分析以提取/创建压缩图像签名1045,其包括与一般标志1040相关联的独特签名或图案。在一个实施例中,压缩图像签名1045可以包括形状、颜色图案、亮度图案、或者可以从一般标志1040的图像中提取的用于描述一般标志1040的任何其它特征。
例如,在图10中,压缩图像签名1045中所示的圆形、三角形和星形可以表示不同颜色的区域。由圆形、三角形和星形表示的图案可以被存储在稀疏地图800中,例如被指定为包括图像签名的50个字节内。值得注意的是,圆形、三角形和星形不一定意味着指示这些形状被存储为图像签名的一部分。而是,这些形状旨在概念性地表示具有可辨认色差的可辨识区域、文本区域、图形形状或可能与通用标志相关联的特性的其它变化。这种压缩图像签名可以用于识别一般标志形式的地标。例如,压缩图像签名可以用于基于存储的压缩图像签名与例如使用自主车辆上的车载相机捕获的图像数据的比较来执行相同与不同的分析。
因此,可以通过对当一个或多个车辆穿过路段时获取的多个图像进行图像分析来识别多个地标。如下面关于“众包”所解释的,在一些实施例中,识别多个地标的图像分析可以包括当确实出现地标的图像与未出现地标的图像的比率超过阈值时接受潜在的地标。此外,在一些实施例中,识别多个地标的图像分析可以包括当未出现地标的图像与确实出现地标的图像的比率超过阈值时拒绝潜在的地标。
返回到主车辆可以用来导航特定路段的目标轨迹,图11A示出了在构建或维护稀疏地图800的过程期间捕获的多项式表示轨迹。稀疏地图800中包括的目标轨迹的多项式表示可以基于车辆沿着相同路段的先前行驶的两个或更多个重构轨迹来确定。在一些实施例中,稀疏地图800中包括的目标轨迹的多项式表示可以是车辆沿着相同路段的先前行驶的两个或更多个重建轨迹的聚合。在一些实施例中,稀疏地图800中包括的目标轨迹的多项式表示可以是车辆沿着相同路段的先前行驶的两个或更多个重构轨迹的平均值。还可以使用其它数学运算来基于从沿着路段行驶的车辆收集到的重建轨迹来构建沿着道路路径的目标轨迹。
如图11A中所示,路段1100可以由多个车辆200在不同时间行驶。每个车辆200可以收集与车辆沿着路段采用的路径相关的数据。特定车辆行驶的路径可以基于相机数据、加速度计信息、速度传感器信息和/或GPS信息以及其它潜在来源来确定。这样的数据可以用于重建沿着路段行驶的车辆的轨迹,并且基于这些重建的轨迹,可以为特定路段确定目标轨迹(或多个目标轨迹)。这样的目标轨迹可以表示当车辆沿着路段行驶时主车辆的优选路径(例如,由自主导航系统引导)。
在图11A中所示的示例中,第一重建轨迹1101可以基于在第一时间段(例如,第一天)从穿过路段1100的第一车辆接收的数据来确定,第二重建轨迹1102可以从在第二时间段(例如,第2天)穿过路段1100的第二车辆获得,并且第三重建轨迹1103可以从在第三时间段(例如,第3天)穿过路段1100的第三车辆获得。每个轨迹1101、1102和1103可以由多项式表示,诸如三维多项式。应当注意的是,在一些实施例中,任何重建轨迹可以被组装在穿过路段1100的车辆上。
附加地或替代地,这样的重建轨迹可以基于从穿过路段1100的车辆接收的信息在服务器侧确定。例如,在一些实施例中,车辆200可以向一个或多个服务器传输与其沿着路段1100的运动相关的数据(例如,转向角、航向、时间、位置、速度、感测到的道路几何形状和/或感测到的地标等等)。服务器可以基于接收到的数据重建车辆200的轨迹。服务器还可以基于第一、第二和第三轨迹1101、1102和1103生成用于引导以后将沿着相同路段1100行驶的自主车辆的导航的目标轨迹。虽然目标轨迹可以与路段的单个先前穿越相关联,但在一些实施例中,稀疏地图800中包括的每个目标轨迹可以基于穿过相同路段的车辆的两个或更多个重建轨迹来确定。在图11A中,目标轨迹由1110表示。在一些实施例中,目标轨迹1110可以基于第一、第二和第三轨迹1101、1102、1103的平均值来生成。在一些实施例中,稀疏地图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相关联的第三地标1156以及与危险标志1138相关联的第四地标1156。这样的地标可以用于例如辅助自主车辆确定其相对于任何所示的目标轨迹的当前地点,使得车辆可以调整其航向以匹配在所确定的地点处的目标轨迹的方向。
在一些实施例中,稀疏地图800还可以包括道路签名轮廓。这样的道路签名轮廓可以与与道路相关联的至少一个参数的任何可辨认/可测量的变化相关联。例如,在一些情况下,这样的轮廓可以与道路表面信息的变化相关联,诸如特定路段的表面粗糙度的变化、特定路段上的道路宽度的变化、沿着特定路段绘制的虚线之间的距离的变化、沿着特定路段的道路曲率的变化等。图11D示出了道路签名轮廓1160的示例。虽然轮廓1160可以表示上述参数中的任何一个或其它参数,但在一个示例中,轮廓1160可以表示例如当车辆在特定路段上行驶时通过监测提供指示悬架位移量的输出的一个或多个传感器而获得的道路表面粗糙度的测量值。
替代地或同时地,轮廓1160可以表示如基于经由在特定路段上行驶的车辆上的车载相机获得的图像数据所确定的道路宽度的变化。例如,这样的轮廓可以用于确定自主车辆相对于特定目标轨迹的特定地点。即,当自主车辆穿过路段时,其可以测量与与该路段相关联的一个或多个参数相关联的轮廓。如果测量的轮廓可以与绘制相对于沿着路段的位置的参数变化的预定轮廓相关/匹配,那么可以使用测量的和预定的轮廓(例如,通过覆盖测量的和预定的轮廓的对应部分)以便确定沿着路段的当前位置,并且因此确定相对于路段的目标轨迹的当前位置。
在一些实施例中,稀疏地图800可以包括基于与自主车辆的用户相关联的不同特性、环境状况和/或与驾驶相关的其它参数的不同轨迹。例如,在一些实施例中,可以基于不同的用户偏好和/或简档来生成不同的轨迹。包括这样的不同轨迹的稀疏地图800可以被提供给不同用户的不同自主车辆。例如,一些用户可能偏好避开收费公路,而另一些用户可能偏好采取最短或最快的路线,无论路线上是否有收费公路。所公开的系统可以基于这种不同的用户偏好或简档来生成具有不同轨迹的不同稀疏地图。作为另一个示例,一些用户可能偏好在快速移动的车道上行驶,而其它用户可能偏好始终维持在中央车道中的位置。
可以基于不同的环境条件(诸如白天和黑夜、雪、雨、雾等)生成不同的轨迹并将其包括在稀疏地图800中。可以向在不同环境条件下行驶的自主车辆提供基于这样的不同环境条件生成的稀疏地图800。在一些实施例中,设在自主车辆上的相机可以检测环境条件,并且可以将这样的信息提供回生成和提供稀疏地图的服务器。例如,服务器可以生成或更新已经生成的稀疏地图800以包括在检测到的环境条件下对于自主驾驶可能更适合或更安全的轨迹。当自主车辆沿着道路行驶时,可以动态地执行基于环境条件的稀疏地图800的更新。
与驾驶相关的其它不同参数也可以用作生成不同稀疏地图并向不同自主车辆提供不同稀疏地图的基础。例如,当自主车辆高速行驶时,转弯可能会更紧。与特定车道而不是道路相关联的轨迹可以被包括在稀疏地图800中,使得自主车辆可以在车辆遵循特定轨迹时维持在特定车道内。当自主车辆上的车载相机捕获到的图像指示车辆已偏离车道(例如,越过车道标记)时,可以在车辆内触发动作,以根据特定轨迹将车辆带回指定车道。
众包稀疏地图
在一些实施例中,所公开的系统和方法可以生成用于自主车辆导航的稀疏地图。例如,所公开的系统和方法可以使用众包数据来生成稀疏地图,一个或多个自主车辆可以使用该稀疏地图来沿着道路系统进行导航。如本文所使用的,“众包”是指从不同时间在路段上行驶的各种车辆(例如,自主车辆)接收数据,并且这样的数据用于生成和/或更新道路模型。该模型又可以被传输到以后沿着该路段行驶的该车辆或其它车辆,以辅助自主车辆导航。道路模型可以包括表示自主车辆在穿过路段时应遵循的优选轨迹的多个目标轨迹。目标轨迹可以与从穿过路段的车辆收集的重建的实际轨迹相同,其可以从车辆传输到服务器。在一些实施例中,目标轨迹可以与一个或多个车辆先前在穿过路段时所采取的实际轨迹不同。目标轨迹可以基于实际轨迹来生成(例如,通过求平均或任何其它合适的运算)。
车辆可以上传到服务器的车辆轨迹数据可以对应于车辆的实际重建轨迹或者可以对应于推荐轨迹,推荐轨迹可以基于车辆的实际重建轨迹或与车辆的实际重建轨迹相关,但可以与实际重建轨迹不同。例如,车辆可以修改其实际的、重建的轨迹并向服务器提交(例如,推荐)修改后的实际轨迹。道路模型可以使用推荐的、修改后的轨迹作为其它车辆自主导航的目标轨迹。
除了轨迹信息之外,在构建稀疏数据地图800中可能使用的其它信息可以包括与潜在地标候选相关的信息。例如,通过信息的众包,所公开的系统和方法可以识别环境中的潜在地标并细化地标位置。自主车辆的导航系统可以使用地标来确定和/或调整车辆沿着目标轨迹的位置。
车辆沿着道路行驶时可以生成的重建轨迹可以通过任何合适的方法来获得。在一些实施例中,可以通过使用例如自我运动估计(例如,相机的三维平移和三维旋转,以及因此车辆的车身)将车辆的运动片段拼接在一起来开发重建轨迹。旋转和平移估计可以基于对由一个或多个图像捕获设备捕获的图像的分析以及来自其它传感器或设备(诸如惯性传感器和速度传感器)的信息来确定。例如,惯性传感器可以包括加速度计或被配置为测量车身的平移和/或旋转的变化的其它合适的传感器。车辆可以包括测量车辆速度的速度传感器。
在一些实施例中,可以基于捕获的图像的光流分析来估计相机(以及因此车身)的自我运动。图像序列的光流分析从图像序列中识别像素的移动,并且基于识别出的移动来确定车辆的运动。自我运动可以随时间并沿着路段进行积分,以重建与车辆所遵循的路段相关联的轨迹。
多个车辆在不同时间沿着路段多次驾驶收集到的数据(例如,重建轨迹)可以用于构建包括在稀疏数据地图800中的道路模型(例如,包括目标轨迹等)。还可以对不同时间沿着路段多次驾驶的多个车辆收集的数据进行平均,以提高模型的准确性。在一些实施例中,可以从在不同时间行驶通过公共路段的多个车辆接收关于道路几何形状和/或地标的数据。从不同车辆接收的此类数据可以被组合以生成道路模型和/或更新道路模型。
沿着路段的重建轨迹(以及目标轨迹)的几何形状可以由三维空间中的曲线来表示,该曲线可以是连接三维多项式的样条。重建的轨迹曲线可以通过对安装在车辆上的相机捕获的视频流或多个图像的分析来确定。在一些实施例中,在每个帧或图像中识别出车辆当前位置前方几米的地点。该地点是车辆预计在预定时间段内行驶到的地点。该操作可以逐帧重复,同时,车辆可以计算相机的自我运动(旋转和平移)。在每一帧或图像中,车辆在附接到相机的参考系中生成期望路径的短程模型。短程模型可以被拼接在一起以获得某个坐标系中的道路的三维模型,该坐标系可以是任意的或预定的坐标系。然后可以通过样条来拟合道路的三维模型,该样条可以包括或连接合适阶数的一个或多个多项式。
为了得出每一帧的短程道路模型,可以使用一个或多个检测模块。例如,可以使用自下而上的车道检测模块。当在道路上画车道标记时,自下而上的车道检测模块可能是有用的。该模块可以寻找图像中的边缘并将它们组装在一起以形成车道标记。第二模块可以与自下而上的车道检测模块一起使用。第二模块是端到端深度神经网络,可以训练它从输入图像预测正确的短程路径。在这两个模块中,可以在图像坐标系中检测道路模型并将其变换成可以虚拟地附接到相机的三维空间。
虽然重建轨迹建模方法可能会由于长时间内自我运动的积分而引入误差累积(其可能包括噪声分量),但这样的误差可能是无关紧要的,因为生成的模型可以为在局部标度上的导航提供足够的准确度。此外,可以通过使用外部信息源(诸如卫星图像或大地测量)来消除积分误差。例如,所公开的系统和方法可以使用GNSS接收器来消除累积的误差。但是,GNSS定位信号可能并不总是可用且准确。所公开的系统和方法可以实现弱依赖于GNSS定位的可用性和准确性的转向应用。在此类系统中,GNSS信号的使用可能受到限制。例如,在一些实施例中,所公开的系统可以仅将GNSS信号用于数据库索引目的。
在一些实施例中,可能与自主车辆导航转向应用相关的范围标度(例如,局部标度)可以是50米、100米、200米、300米等的量级。可以使用这样的距离,因为几何道路模型主要用于两个目的:规划前方轨迹和在道路模型上定位车辆。在一些实施例中,当控制算法根据位于1.3秒(或任何其它时间,诸如1.5秒、1.7秒、2秒等)之前的目标点操纵车辆时,规划任务可以在前方40米(或前方任何其它合适的距离,诸如20米、30米、50米)的典型范围内使用模型。定位任务根据另一部分中更详细描述的称为“尾部对齐”的方法使用汽车后方60米(或任何其它合适的距离,诸如50米、100米、150米等)的典型范围内的道路模型。所公开的系统和方法可以生成在特定范围(诸如100米)上具有足够准确度的几何模型,使得规划轨迹将不会偏离车道中心超过例如30cm。
如上所述,可以通过检测短程部分并将它们缝合在一起来构建三维道路模型。可以通过使用由相机捕获的视频和/或图像、来自反映车辆运动的惯性传感器的数据以及主车辆速度信号来计算六度自我运动模型来实现拼接。累积误差在某些局部范围标度(诸如100米的量级)上可能足够小。所有这些都可以在特定路段上的单次驾驶中完成。
在一些实施例中,可以使用多次驾驶来平均所得到的模型,并且进一步提高其准确性。同一辆汽车可能会多次行驶相同的路线,或多辆汽车可能会将其收集到的模型数据发送到中央服务器。在任何情况下,可以执行匹配过程来识别重叠模型并实现求平均以便生成目标轨迹。一旦满足收敛标准,所构建的模型(例如,包括目标轨迹)就可以用于操纵。后续驾驶可以用于进一步的模型改进以便适应基础设施的变化。
如果多辆汽车连接到中央服务器,那么在多辆汽车之间共享驾驶体验(诸如感测数据)就变得可行。每个车辆客户端可以存储可能与其当前位置相关的通用道路模型的部分副本。车辆和服务器之间的双向更新过程可以由车辆和服务器执行。上述讨论的小占用空间概念使得所公开的系统和方法能够使用非常小的带宽来执行双向更新。
还可以确定与潜在地标相关的信息并将其转发到中央服务器。例如,所公开的系统和方法可以基于包括地标的一个或多个图像来确定潜在地标的一种或多种物理属性。物理属性可以包括地标的物理尺寸(例如,高度、宽度)、从车辆到地标的距离、地标到先前地标之间的距离、地标的横向位置(例如,地标相对于行驶车道的位置)、地标的GPS坐标、地标的类型、地标上的文本识别等。例如,车辆可以分析由相机捕获的一个或多个图像以检测潜在的地标,诸如限速标志。
车辆可以基于一个或多个图像的分析来确定从车辆到地标的距离。在一些实施例中,可以基于使用合适的图像分析方法(诸如缩放方法和/或光流方法)对地标的图像进行分析来确定距离。在一些实施例中,所公开的系统和方法可以被配置为确定潜在地标的类型或分类。如果车辆确定某个潜在地标对应于稀疏地图中存储的预定类型或分类,那么车辆将地标的类型或分类的指示及其地点传送给服务器可能就足够。服务器可以存储这样的指示。以后,其它车辆可以捕获地标的图像、处理该图像(例如,使用分类器),并将处理图像的结果与存储在服务器中的关于地标类型的指示进行比较。可以存在各种类型的地标,并且不同类型的地标可以与要上传到服务器并存储在服务器中的不同类型的数据相关联,车辆上的不同处理可以检测地标并将关于地标的信息传送到服务器,并且车辆车载系统可以从服务器接收地标数据,并在自主导航中使用地标数据来识别地标。
在一些实施例中,在路段上行驶的多个自主车辆可以与服务器通信。车辆(或客户端)可以在任意坐标系中生成描述其驾驶的曲线(例如,通过自我运动积分)。车辆可以检测地标并将在同一帧中定位它们。车辆可以将曲线和地标上传到服务器。服务器可以从车辆的多次驾驶收集数据,并生成统一的道路模型。例如,如下面参考图19所讨论的,服务器可以使用上传的曲线和地标生成具有统一道路模型的稀疏地图。
服务器还可以将模型分发给客户端(例如,车辆)。例如,服务器可以将稀疏地图分发给一个或多个车辆。当从车辆接收到新数据时,服务器可以连续地或周期性地更新模型。例如,服务器可以处理新数据以评估该数据是否包括应当触发服务器上的新数据的更新或创建的信息。服务器可以将更新后的模型或更新分发到车辆以提供自主车辆导航。
服务器可以使用一个或多个标准来确定从车辆接收的新数据是否应该触发模型的更新或触发新数据的创建。例如,当新数据指示先前辨识出的特定地点处的地标不再存在或者被另一个地标取代时,服务器可以确定新数据应该触发对模型的更新。作为另一个示例,当新数据指示路段已经被封闭时,并且当这已被从其它车辆接收到的数据证实时,服务器可以确定新数据应该触发对模型的更新。
服务器可以将更新后的模型(或模型的更新后的部分)分发给在与模型的更新相关联的路段上正在行驶的一个或多个车辆。服务器还可以将更新后的模型分发给即将在该路段上行驶的车辆,或者其计划行程包括与模型的更新相关联的路段的车辆。例如,当自主车辆在到达与更新相关联的路段之前沿着另一个路段行驶时,服务器可以在车辆到达该路段之前将更新或更新后的模型分发给该自主车辆。
在一些实施例中,远程服务器可以从多个客户端(例如,沿着公共路段行驶的车辆)收集轨迹和地标。服务器可以使用地标来匹配曲线并基于从多个车辆收集的轨迹来创建平均道路模型。服务器还可以计算道路图以及路段的每个节点或交汇处的最可能路径。例如,远程服务器可以对齐轨迹以从收集的轨迹生成众包的稀疏地图。
服务器可以对从沿着公共路段行驶的多个车辆接收的地标属性,诸如由多个车辆测量的一个地标到另一个地标(例如,沿着路段的前一个地标)之间的距离进行平均,以确定弧度长度参数并支持每个客户端车辆沿着路径的定位和速度校准。服务器可以对由沿着公共路段行驶并辨识出同一地标的多个车辆测量的地标的物理维度进行平均。平均物理维度可以用于支持距离估计,诸如从车辆到地标的距离。服务器可以对由沿着公共路段行驶并辨识出同一地标的多个车辆测量的地标的横向位置(例如,从车辆行驶的车道到地标的位置)进行平均。平均横向位置可以用于支持车道分配。服务器可以对沿着同一路段行驶并辨识出同一地标的多个车辆测量的地标的GPS坐标进行平均。平均的GPS坐标可以用于支持道路模型中地标的全局定位或定位技术。
在一些实施例中,服务器可以基于从车辆接收的数据来识别模型变化,诸如构造、绕道、新标志、标志的移除等。服务器可以在从车辆接收新数据时连续地或周期性地或即时地更新模型。服务器可以将模型的更新或更新后的模型分发给车辆以提供自主导航。例如,如下面进一步讨论的,服务器可以使用众包数据来过滤掉车辆检测到的“幽灵”地标。
在一些实施例中,服务器可以分析自动驾驶期间的驾驶员干预。服务器可以分析在干预发生的时间和地点从车辆接收的数据和/或在干预发生的时间之前接收的数据。服务器可以识别引起干预或与干预密切相关的数据的某些部分,例如指示临时车道封闭设置的数据、指示道路中的行人的数据。服务器可以基于识别出的数据来更新模型。例如,服务器可以修改模型中存储的一个或多个轨迹。
图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相关联。导航信息可以包括当每个车辆在路段1200上行驶时与每个车辆1205、1210、1215、1220和1225相关联的轨迹。在一些实施例中,轨迹可以基于由车辆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可以对不同的估计进行平均以得到地标的物理尺寸,并将该地标尺寸存储在道路模型中。物理尺寸估计可以用于进一步确定或估计从车辆到地标的距离。可以基于车辆的当前速度和基于出现在图像中的地标相对于相机的扩展焦点的位置的扩展比例来估计到地标的距离。例如,到地标的距离可以通过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的变化可以使用ΔZ=f*W*Δω/ω2+f*ΔW/ω来计算,其中ΔW通过求平均值衰减到零,并且其中Δω是表示图像中边界框准确度的像素数。可以通过对服务器侧的多个观察进行平均来计算估计地标的物理尺寸的值。所得距离估计误差可能非常小。使用上述等式时可能出现两个误差源,即ΔW和Δω。它们对距离误差的贡献由ΔZ=f*W*Δω/ω2+f*ΔW/ω给出。但是,通过求平均,ΔW衰减到零;因此ΔZ由Δω决定(例如,图像中边界框的不准确性)。
对于未知维度的地标,可以通过跟踪连续帧之间的地标上的特征点来估计到地标的距离。例如,可以在两个或更多个图像帧之间跟踪出现在限速标志上的某些特征。基于这些跟踪的特征,可以生成每个特征点的距离分布。距离估计可以从距离分布中提取。例如,可以使用距离分布中最频繁出现的距离作为距离估计。作为另一个示例,距离分布的平均值可以用作距离估计。
图13图示了由多个三维样条1301、1302和1303表示的示例自主车辆道路导航模型。图13中所示的曲线1301、1302和1303仅用于说明目的。每个样条可以包括连接多个数据点1310的一个或多个三维多项式。每个多项式可以是一阶多项式、二阶多项式、三阶多项式或具有不同阶数的任何合适多项式的组合。每个数据点1310可以与从车辆1205、1210、1215、1220和1225接收的导航信息相关联。在一些实施例中,每个数据点1310可以与与地标(例如,地标的尺寸、地点和标识信息)和/或道路签名轮廓(例如,道路几何形状、道路粗糙度轮廓、道路曲率轮廓、道路宽度轮廓)相关的数据相关联。在一些实施例中,一些数据点1310可以与与地标相关的数据相关联,而其它数据点可以与与道路签名轮廓相关的数据相关联。
图14图示了从五个单独的驾驶接收的原始地点数据1410(例如,GPS数据)。如果一次驾驶由不同的车辆同时、由同一车辆在不同的时间、或者由不同的车辆在不同的时间穿过,那么该次驾驶可以与另一次驾驶不同。为了考虑地点数据1410中的误差以及同一车道内车辆的不同地点(例如,一个车辆可能比另一个车辆行驶得更靠近车道的左侧),服务器1230可以使用一个或多个统计技术生成地图骨架1420来确定原始地点数据1410中的变化是否表示实际偏差或统计误差。骨架1420内的每条路径可以链接回形成该路径的原始数据1410。例如,骨架1420内A和B之间的路径链接到来自驾驶2、3、4和5但不来自驾驶1的原始数据1410。骨架1420可能不够详细用来导航车辆(例如,因为与上述样条不同,它组合了来自同一道路上的多个车道的驾驶),但可以提供有用的拓扑信息并且可以用于定义交叉路口。
图15图示了可以为地图骨架的段内的稀疏地图(例如,骨架1420内的段A至B)生成附加细节的示例。如图15中所描绘的,数据(例如,自我运动数据、道路标线数据等)可以被示出为沿着驾驶的位置S(或S1或S2)的函数。服务器1230可以通过识别驾驶1510的地标1501、1503和1505与驾驶1520的地标1507和1509之间的唯一匹配来识别稀疏地图的地标。这样的匹配算法可以导致地标1511、1513和1515的标识。但是,本领域技术人员将认识到,可以使用其它匹配算法。例如,可以使用概率优化来代替唯一匹配或与唯一匹配相结合。服务器1230可以纵向对齐驾驶以对齐匹配的地标。例如,服务器1230可以选择一个驾驶(例如,驾驶1520)作为参考驾驶,然后移动和/或弹性拉伸(一个或多个)其它驾驶(例如,驾驶1510)以进行对齐。
图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包括车辆1810,其使用例如相机(其产生例如自我运动数据、交通标志数据、道路数据等)和定位设备(例如,GPS定位器)捕获驾驶数据。如图17中所示,车辆1810将收集到的数据分段为驾驶段(在图18中描绘为“DS1 1”、“DS2 1”、“DSN 1”)。服务器1230然后接收驾驶段并根据接收到的段重建驾驶(在图18中描绘为“驾驶1”)。
如图18中进一步所绘出的,系统1700还接收来自附加车辆的数据。例如,车辆1820还使用例如相机(其产生例如自我运动数据、交通标志数据、道路数据等)和定位设备(例如,GPS定位器)来捕获驾驶数据。与车辆1810类似,车辆1820将收集到的数据分段成驾驶段(在图18中描绘为“DS1 2”、“DS2 2”、“DSN 2”)。服务器1230然后接收驾驶段并根据接收到的段重建驾驶(在图18中描绘为“驾驶2”)。可以使用任意数量的附加车辆。例如,图18还包括“CAR N”,其捕获驾驶数据、将其分段成驾驶段(在图18中描绘为“DS1 N”、“DS2 N”、“DSNN”),并将其发送到服务器1230以用于重建为驾驶(在图18中描绘为“驾驶N”)。
如图18中所绘出的,服务器1230可以使用从多个车辆(例如,“CAR 1”(也标记为车辆1810)、“CAR 2”(也标记为车辆1820)和“CAR N”)收集到的重建驾驶(例如,“驾驶1”、“驾驶2”和“驾驶N”)来构建稀疏地图(被描绘为“MAP”)。。
图19是示出用于生成用于沿着路段的自主车辆导航的稀疏地图的示例处理1900的流程图。处理1900可以由包括在服务器1230中的一个或多个处理设备来执行。
处理1900可以包括接收当一个或多个车辆穿过路段时获取的多个图像(步骤1905)。服务器1230可以从包括在车辆1205、1210、1215、1220和1225中的一个或多个内的相机接收图像。例如,当车辆1205沿着路段1200行驶时,相机122可以捕获车辆1205周围环境的一个或多个图像。在一些实施例中,服务器1230还可以接收已经由车辆1205上的处理器去除冗余的精简图像数据,如上面关于图17所讨论的。
处理1900还可以包括基于多个图像识别沿着路段延伸的道路表面特征的至少一个线表示(步骤1910)。每个线表示可以表示沿着基本上对应于道路表面特征的路段的路径。例如,服务器1230可以分析从相机122接收的环境图像以识别道路边缘或车道标线并确定沿着与道路边缘或车道标线相关联的路段1200的行驶轨迹。在一些实施例中,轨迹(或线表示)可以包括样条、多项式表示或曲线。服务器1230可以基于在步骤1905处接收到的相机自我运动(例如,三维平移和/或三维旋转运动)来确定车辆1205的行驶轨迹。
处理1900还可以包括基于多个图像识别与路段相关联的多个地标(步骤1910)。例如,服务器1230可以分析从相机122接收的环境图像以识别一个或多个地标,诸如沿着路段1200的道路标志。服务器1230可以使用对当一个或多个车辆穿过路段时获取的多个图像的分析来识别地标。为了实现众包,分析可以包括关于接受和拒绝与路段相关联的可能地标的规则。例如,分析可以包括当其中地标确实出现的图像与未出现地标的图像的比率超过阈值时接受潜在地标和/或当其中地标未出现的图像与确实出现地标的图像的比率超过阈值时拒绝潜在地标。
处理1900可以包括由服务器1230执行的其它操作或步骤。例如,导航信息可以包括车辆沿着路段行驶的目标轨迹,并且处理1900可以包括由服务器1230对与在路段上行驶的多个车辆相关的车辆轨迹进行聚类,并且基于该聚类的车辆轨迹来确定目标轨迹,如下面进一步详细讨论的。对车辆轨迹进行聚类可以包括由服务器1230基于车辆的绝对航向或车辆的车道分配中的至少一个将与在路段上行驶的车辆相关的多个轨迹聚类成多个聚类。生成目标轨迹可以包括由服务器1230对聚类轨迹进行平均。作为进一步的示例,处理1900可以包括对齐在步骤1905中接收到的数据。如上所述,由服务器1230执行的其它处理或步骤也可以包括在处理1900中。
所公开的系统和方法可以包括其它特征。例如,所公开的系统可以使用局部坐标,而不是全局坐标。对于自动驾驶,一些系统可能会以世界坐标呈现数据。例如,可以使用地球表面上的经度和纬度坐标。为了使用地图进行操纵,主车辆可以确定其相对于地图的位置和朝向。使用车载GPS设备似乎很自然,以便在地图上定位车辆并找到车身参考系和世界参考系(例如,北、东和下)之间的旋转变换。一旦车身参考系与地图参考系对齐,那么可以在车身参考系中表达期望路线并且可以计算或生成操纵命令。
所公开的系统和方法可以实现具有低占用面积模型的自主车辆导航(例如,操纵控制),这些模型可以由自主车辆本身收集,而不需要昂贵的勘测装备的帮助。为了支持自主导航(例如,操纵应用),道路模型可以包括稀疏地图,该稀疏地图具有道路的几何形状、其车道结构以及可以用于确定车辆沿着模型中包括的轨迹的地点或位置的地标。如上所讨论的,稀疏地图的生成可以由远程服务器执行,该远程服务器与在道路上行驶的车辆通信并且从车辆接收数据。数据可以包括感测数据、基于感测数据重建的轨迹、和/或可以表示修改后的重建轨迹的推荐轨迹。如下面所讨论的,服务器可以将模型传输回车辆或以后在道路上行驶的其它车辆以帮助自主导航。
图20图示了服务器1230的框图。服务器1230可以包括通信单元2005,通信单元2005可以包括硬件组件(例如,通信控制电路、开关和天线)和软件组件(例如,通信协议、计算机代码)。例如,通信单元2005可以包括至少一个网络接口。服务器1230可以通过通信单元2005与车辆1205、1210、1215、1220和1225通信。例如,服务器1230可以通过通信单元2005接收从车辆1205、1210、1215、1220和1225传输的导航信息。服务器1230可以通过通信单元2005将自主车辆道路导航模型分发给一个或多个自主车辆。
服务器1230可以包括至少一个非暂态存储介质2010,诸如硬盘驱动器、光盘、带等。存储设备1410可以被配置为存储数据,诸如从车辆1205、1210、1215、1220和1225接收的导航信息和/或服务器1230基于导航信息生成的自主车辆道路导航模型。存储设备2010可以被配置为存储任何其它信息,诸如稀疏地图(例如,上面参考图8讨论的稀疏地图800)。
除了存储设备2010之外或者代替存储设备2010,服务器1230可以包括存储器2015。存储器2015可以与存储器140或150相似或不同。存储器2015可以是非暂态存储器,诸如闪存、随机存取存储器等。存储器2015可以被配置为存储数据,诸如可由处理器(例如,处理器2020)执行的计算机代码或指令、地图数据(例如,稀疏地图800的数据)、自主车辆道路导航模型和/或从车辆1205、1210、1215、1220和1225接收的导航信息。
服务器1230可以包括至少一个处理设备2020,其被配置为执行存储在存储器2015中的计算机代码或指令以执行各种功能。例如,处理设备2020可以分析从车辆1205、1210、1215、1220和1225接收的导航信息,并且基于该分析生成自主车辆道路导航模型。处理设备2020可以控制通信单元1405将自主车辆道路导航模型分发给一个或多个自主车辆(例如,车辆1205、1210、1215、1220和1225中的一个或多个或者以后在路段1200上行驶的任何车辆)。处理设备2020可以与处理器180、190或处理单元110类似或不同。
图21图示了存储器2015的框图,存储器2015可以存储用于执行一个或多个操作以生成用于自主车辆导航的道路导航模型的计算机代码或指令。如图21中所示,存储器2015可以存储用于执行处理车辆导航信息的操作的一个或多个模块。例如,存储器2015可以包括模型生成模块2105和模型分发模块2110。处理器2020可以执行存储在存储器2015中包括的模块2105和2110中的任何一个中的指令。
模型生成模块2105可以存储指令,该指令在由处理器2020执行时,可以基于从车辆1205、1210、1215、1220和1225接收到的导航信息来生成公共路段(例如,路段1200)的自主车辆道路导航模型的至少一部分。例如,在生成自主车辆道路导航模型时,处理器2020可以将沿着公共路段1200的车辆轨迹聚类成不同的聚类。处理器2020可以基于每个不同聚类的聚类车辆轨迹来确定沿着公共路段1200的目标轨迹。这样的操作可以包括找到每个聚类中的聚类车辆轨迹的平均轨迹(例如,通过对表示聚类车辆轨迹的数据进行平均)。在一些实施例中,目标轨迹可以与公共路段1200的单个车道相关联。
道路模型和/或稀疏地图可以存储与路段相关联的轨迹。这些轨迹可以被称为目标轨迹,其被提供给自主车辆用于自主导航。目标轨迹可以从多个车辆接收,或者可以基于从多个车辆接收的实际轨迹或推荐轨迹(经过一些修改的实际轨迹)生成。道路模型或稀疏地图中包括的目标轨迹可以用从其它车辆接收到的新轨迹来连续更新(例如,求平均)。
在路段上行驶的车辆可以通过各种传感器收集数据。数据可以包括地标、道路签名轮廓、车辆运动(例如,加速度计数据、速度数据)、车辆位置(例如,GPS数据),并且可以重建实际轨迹本身,或者将数据传输到服务器,这将重建车辆的实际轨迹。在一些实施例中,车辆可以将与轨迹(例如,任意参考系中的曲线)、地标数据和沿着行驶路径的车道分配相关的数据传输到服务器1230。在多次驾驶下沿着同一路段行驶的各种车辆可以具有不同的轨迹。服务器1230可以通过聚类处理从从车辆接收的轨迹中识别与每个车道相关联的路线或轨迹。
图22图示了对与车辆1205、1210、1215、1220和1225相关联的车辆轨迹进行聚类以确定公共路段(例如,路段1200)的目标轨迹的处理。从聚类处理确定的目标轨迹或多个目标轨迹可以被包括在自主车辆道路导航模型或稀疏地图800中。在一些实施例中,沿着路段1200行驶的车辆1205、1210、1215、1220和1225可以将多个轨迹2200传输到服务器1230。在一些实施例中,服务器1230可以基于地标、道路几何形状和从车辆1205、1210、1215、1220和1225接收的车辆运动信息来生成轨迹。为了生成自主车辆道路导航模型,服务器1230可以将车辆轨迹1600聚类成多个聚类2205、2210、2215、2220、2225和2230,如图22中所示。
可以使用各种标准来执行聚类。在一些实施例中,聚类中的所有驾驶关于沿着路段1200的绝对航向可以是相似的。绝对航向可以从车辆1205、1210、1215、1220和1225接收的GPS信号获得。在一些实施例中,可以使用航位推算来获得绝对航向。如本领域技术人员将理解的,航位推算可以用于通过使用先前确定的位置、估计速度等来确定当前位置并因此确定车辆1205、1210、1215、1220和1225的航向。通过绝对航向聚类的轨迹对于识别沿着行车道的路线可能是有用的。
在一些实施例中,聚类中的所有驾驶关于沿着路段1200上的驾驶的车道分配(例如,在路口之前和之后的相同车道中)可以是相似的。按车道分配聚类的轨迹可以对识别沿着行车道的车道是有用的。在一些实施例中,两个标准(例如,绝对航向和车道分配)可以用于聚类。
在每个聚类2205、2210、2215、2220、2225和2230中,轨迹可以被平均以获得与特定聚类相关联的目标轨迹。例如,可以对来自与同一车道聚类相关联的多次驾驶的轨迹进行平均。平均轨迹可以是与特定车道相关联的目标轨迹。为了对轨迹聚类进行平均,服务器1230可以选择任意轨迹C0的参考系。对于所有其它轨迹(C1,…,Cn),服务器1230可以找到将Ci映射到C0的刚性变换,其中i=1,2,…,n,其中n是正整数,对应于包含在聚类中的轨迹的总数。服务器1230可以计算C0参考系中的平均曲线或轨迹。
在一些实施例中,地标可以限定不同驾驶之间匹配的弧长,其可以用于轨迹与车道的对齐。在一些实施例中,路口之前和之后的车道标记可以用于将轨迹与车道对齐。
为了根据轨迹组装车道,服务器1230可以选择任意车道的参考系。服务器1230可以将部分重叠的车道映射到所选择的参考帧。服务器1230可以继续映射直到所有车道都处于相同的参考系中。彼此相邻的车道可以被对齐,就好像它们是相同车道一样,然后它们可以横向移动。
沿着路段辨识出的地标可以首先在车道级别、然后在路口级别映射到公共参考系。例如,相同的地标可能被多个车辆在多次驾驶中多次辨识出。在不同驾驶中接收到的关于同一地标的数据可能略有不同。这样的数据可以被平均并映射到相同的参考帧,诸如C0参考帧。附加地或替代地,可以计算在多次驾驶中接收的同一地标的数据的方差。
在一些实施例中,路段120的每条车道可以与目标轨迹和某些地标相关联。目标轨迹或多个这样的目标轨迹可以被包括在自主车辆道路导航模型中,该模型可以以后被沿着相同路段1200行驶的其它自主车辆使用。当车辆沿着路段1200行驶时由车辆1205、1210、1215、1220和1225识别出的地标可以与目标轨迹相关联地记录。目标轨迹和地标的数据可以用在后续驾驶中从其它车辆接收的新数据来连续地或周期性地更新。
为了自主车辆的定位,所公开的系统和方法可以使用扩展卡尔曼滤波器。车辆的地点可以基于三维位置数据和/或三维朝向数据、通过积分自我运动对车辆当前地点之前的未来地点的预测来确定。车辆的定位可以通过地标的图像观察来校正或调整。例如,当车辆检测到由相机捕获的图像内的地标时,可以将该地标与存储在道路模型或稀疏地图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,其被配置用于为车辆1205提供在道路(例如,路段1200)上行驶的导航引导。车辆1205还可以包括其它传感器,诸如速度传感器2320和加速度计2325。速度传感器2320可以被配置为检测车辆1205的速度。加速度计2325可以被配置为检测车辆1205的加速或减速。图23中所示的车辆1205可以是自主车辆,并且导航系统2300可以用于为自动驾驶提供导航引导。替代地,车辆1205也可以是非自主的、人类控制的车辆,并且导航系统2300仍可以用于提供导航引导。
导航系统2300可以包括被配置为通过通信路径1235与服务器1230通信的通信单元2305。导航系统2300还可以包括被配置为接收和处理GPS信号的GPS单元2310。导航系统2300还可以包括至少一个处理器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可以被配置为检测给定路段中的车道标记。路段可以包括道路上用于引导行车道上的车辆交通的任何标记。例如,车道标记可以是划定行驶车道边缘的连续线或虚线。车道标记还可以包括双线,诸如双实线、双虚线或实线和虚线的组合,指示例如是否允许在相邻车道中穿过。车道标记还可以包括高速公路入口标线和指示例如出口坡道的减速车道的出口标线或指示车道仅转弯或车道正在结束的虚线。标线还可以指示工作区、临时车道变换、通过交叉路口的行驶路径、中间带、专用车道(例如,自行车车道、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可以捕获和/或记录表示虚线标记样本的点(例如,每隔一个、每三个、每五个等)或者以预定义间距(例如,每米、每五米、每10米等)的虚线标记。也可以检测类似车道标记的角点,诸如显示车道用于出口坡道的标线、特定车道正在结束的标线,或其它可能具有可检测角点的各种车道标记。还可以检测由双虚线或连续线和虚线的组合组成的车道标记的角点。
在一些实施例中,上传到服务器以生成绘制车道标记的点可以表示除了检测到的边缘点或角点之外的其它点。图24C图示了可以表示给定车道标记的中心线的一系列点。例如,连续车道2410可以由沿着车道标记的中心线2440的中心线点2441来表示。在一些实施例中,车辆200可以被配置为使用各种图像识别技术来检测这些中心点,诸如卷积神经网络(CNN)、尺度不变特征变换(SIFT)、定向梯度直方图(HOG)特征或其它技术。替代地,车辆200可以检测其它点,诸如图24A中所示的边缘点2411,并且可以例如通过检测沿着每个边缘的点并确定边缘点之间的中点来计算中心线点2441。类似地,虚线车道标记2420可以由沿着车道标记的中心线2450的中心线点2451来表示。中心线点可以位于虚线的边缘处,如图24C中所示,或者位于沿着中心线的各个其它地点处。例如,每个虚线可以由虚线几何中心的单个点来表示。这些点还可以沿着中心线以预定间隔(例如,每米、5米、10米等)间隔开。中心线点2451可以由车辆200直接检测到,或者可以基于其它检测到的参考点(诸如角点2421)来计算,如图24B中所示。使用与上述类似的技术,中心线还可以用于表示其它车道标记类型,诸如双线。
在一些实施例中,车辆200可以识别表示其它特征的点,诸如两个相交车道标记之间的顶点。图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可以以上述各种方法来计算,例如,基于穿过相同路段的车辆的两个或更多个重建轨迹的聚合(例如,加权组合)。
在一些实施例中,可以针对所有车辆类型以及针对所有道路、车辆和/或环境条件同等地生成目标轨迹。但是,在其它实施例中,在生成目标轨迹时也可以考虑各种其它因素或变量。可以针对不同类型的车辆(例如,私家车、轻型卡车和全挂车)生成不同的目标轨迹。例如,与较大的半挂卡车相比,可以为小型私家车生成具有相对更紧的转弯半径的目标轨迹。在一些实施例中,还可以考虑道路、车辆和环境条件。例如,可以针对不同的道路状况(例如,潮湿、下雪、结冰、干燥等)、车辆状况(例如,轮胎状况或估计的轮胎状况、制动状况或估计的制动状况、剩余燃料量等)或环境因素(例如,一天中的时间、能见度、天气等)生成不同的目标轨迹。目标轨迹还可以取决于特定路段的一个或多个方面或特征(例如,速度限制、转弯频率和尺寸、等级等)。在一些实施例中,还可以使用各种用户设置来确定目标轨迹,诸如设置的驾驶模式(例如,期望的驾驶激进度、经济模式等)。
稀疏地图还可以包括表示沿着路段的车道标记的绘制的车道标记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来捕获。图像2500可以包括至少一个车道标记2510的图像,如图25A中所示。图像2500还可以包括用于如上所述的导航的一个或多个地标2521,诸如道路标志。还示出了图25A中所示的一些元素,诸如未出现在捕获到的图像2500中但被车辆200检测到和/或确定的元素2511、2530和2520用于参考。
使用上面关于图24A-图24D和图24F描述的各种技术,车辆可以分析图像2500以识别车道标记2510。可以检测与图像中车道标记的特征对应的各个点2511。例如,点2511可以对应于车道标记的边缘、车道标记的角、车道标记的中点、两个相交车道标记之间的顶点、或各种其它特征或地点。点2511可以被检测为对应于存储在从服务器接收到的导航模型中的点的地点。例如,如果接收到包含表示绘制的车道标记的中心线的点的稀疏地图,那么还可以基于车道标记2510的中心线来检测点2511。
车辆还可以确定由元素2520表示并且沿着目标轨迹定位的纵向位置。纵向位置2520可以从图像2500确定,例如通过检测图像2500内的地标2521并将测量的地点与存储在道路模型或稀疏地图800中的已知地标地点进行比较。然后可以基于到地标的距离和地标的已知地点来确定车辆沿着目标轨迹的地点。纵向位置2520还可以根据除了用于确定车道标记的位置的图像之外的图像来确定。例如,纵向位置2520可以通过检测来自图像获取单元120内的其它相机的与图像2500同时或几乎同时拍摄的图像中的地标来确定。在一些情况下,车辆可能不靠近用于确定纵向位置2520的任何地标或其它参考点。在这种情况下,车辆可以基于航位推算进行导航,并且因此可以使用传感器来确定其自身运动并估计相对于目标轨迹的纵向位置2520。车辆还可以确定距离2530,该距离2530表示车辆与在(一个或多个)捕获的图像中观察到的车道标记2510之间的实际距离。在确定距离2530时可以考虑相机角度、车辆速度、车辆宽度或各种其它因素。
图25B图示了基于道路导航模型中绘制的车道标记的车辆的横向定位校正。如上所述,车辆200可以使用由车辆200捕获的一个或多个图像来确定车辆200和车道标记2510之间的距离2530。车辆200还可以访问道路导航模型,诸如稀疏地图800,其可以包括绘制的车道标记2550和目标轨迹2555。绘制的车道标记2550可以使用上述技术来建模,例如使用由多个车辆捕获的众包地点标识符。目标轨迹2555还可以使用先前描述的各种技术来生成。车辆200还可以确定或估计沿着目标轨迹2555的纵向位置2520,如上面参考图25A所述。车辆200然后可以基于目标轨迹2555和与纵向位置2520对应的绘制的车道标记2550之间的横向距离来确定预期距离2540。车辆200的横向定位可以通过将使用(一个或多个)捕获的图像测量的实际距离2530与来自模型的预期距离2540进行比较来校正或调整。
图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,车辆1205、1210、1215、1220和1225可以使用该模型进行导航。自主车辆道路导航模型可以经由一个或多个网络(例如,通过蜂窝网络和/或互联网等)、通过无线通信路径1235来分发,如图12中所示。
在一些实施例中,可以使用从多个车辆接收的数据来绘制车道标记,诸如通过众包技术,如上面参考图24E所描述的。例如,处理2600A可以包括从第一主车辆接收第一通信,包括与检测到的车道标记相关联的地点标识符,以及从第二主车辆接收第二通信,包括与检测到的车道标记相关联的附加地点标识符。例如,第二通信可以从在相同路段上行驶的后续车辆接收,或者从沿着相同路段的后续行程中的相同车辆接收。处理2600A还可以包括基于在第一通信中接收到的地点标识符以及基于在第二通信中接收到的附加地点标识符来细化对与检测到的车道标记相关联的至少一个位置的确定。这可以包括使用多个地点标识符的平均值和/或过滤掉可能不反映车道标记的真实世界位置的“幽灵”标识符。
图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中所示,沿着目标轨迹2555的纵向位置2520可以在步骤2622中确定。使用稀疏地图800,车辆200可以确定到与纵向位置2520对应的绘制车道标记2550的预期距离2540。
在步骤2624处,处理2600B可以包括分析至少一个图像以识别至少一个车道标记。例如,车辆200可以使用各种图像识别技术或算法来识别图像内的车道标记,如上所述。例如,可以通过图像2500的图像分析来检测车道标记2510,如图25A中所示。
在步骤2625处,处理2600B可以包括基于对至少一个图像的分析来确定到至少一个车道标记的实际横向距离。例如,车辆可以确定距离2530,如图25A中所示,其表示车辆与车道标记2510之间的实际距离。在确定距离2530时可以考虑相机角度、车辆速度、车辆宽度、相机相对于车辆的位置或各种其它因素。
在步骤2626处,处理2600B可以包括基于到至少一个车道标记的预期横向距离和所确定的到至少一个车道标记的实际横向距离之间的差异来确定主车辆的自主转向动作。例如,如上面参考图25B所描述的,车辆200可以将实际距离2530与预期距离2540进行比较。实际距离和预期距离之间的差异可以指示车辆的实际位置和车辆要遵循的目标轨迹之间的误差(及其大小)。因此,车辆可以基于该差异来确定自主转向动作或其它自主动作。例如,如果实际距离2530小于预期距离2540,如图25B中所示,那么车辆可以确定自主转向动作以引导车辆向左远离车道标记2510。因此,可以校正车辆相对于目标轨迹的位置。处理2600B可以用于例如改进车辆在地标之间的导航。
道路俯视图
用于车辆的导航系统以及包括机器视觉/图像分析组件的许多其它系统越来越依赖经训练的神经网络来执行各种基于对象和场景辨识的任务。为了执行这些任务,经训练的神经网络需要进行训练。例如,在训练阶段,神经网络可以接收地面实况图像流作为输入,包括神经网络在操作期间预期遇到的对象类型和情况的表示。通过使用奖励函数,神经网络可以因正确识别图像中表示的对象/场景而获得奖励。类似地,神经网络可能会因错误的对象或场景识别而受到惩罚。以这种方式,神经网络可以学习辨识某些对象、场景等,即使是在一个或多个方面与训练数据集中所表示的那些不同的情况下。
使用经训练的神经网络的一个挑战是训练数据集的生成。与较小的数据集或对象/场景表示的多样性很少的数据集相比,大型且多样化的数据集对于训练神经网络可能更有效。但是,生成大型且多样化的训练数据集是一个成本高昂、复杂且耗时的处理。例如,当前用于生成用于机器视觉应用的神经网络训练数据的方法可以包括编译表示网络预期经历的对象/场景类型的一大组样本图像。但是,为了在训练阶段因正确或错误地识别图像中表示的某些特征而奖励或惩罚网络,需要对图像进行注释。具体而言,必须在训练数据集的图像中识别关注的特征并进行标记或注释。通过这样的识别和注释,可以根据地面实况注释图像来评估训练期间的网络性能。
生成包含在训练数据集中的带注释图像的传统方法涉及使用人类注释者来审查和注释每个图像。例如,如果关注识别各种场景中的车道标线或车辆,那么人类注释者可以审查数千个或更多表示各种场景和环境以及各种条件下的车道标线和车辆的图像。对于每个图像,人类注释者识别关注的对象,并在图像或与图像相关联的掩模上标记识别关注的对象的注释。使用人类注释者来生成训练数据集昂贵且耗时。该处理通常会导致注释错误,从而阻碍训练处理。而且,使用人类注释者生成训练数据集缺乏灵活性,因为对要注释的对象类别、某些对象的特性等进行期望的更改或添加可能需要为先前生成的数据集生成一整套新的注释。该处理可能特别乏味,因为在一些情况下,图像流可能表示相同的车道标线或相同的对象。但是,必须为每个单独的图像生成注释,这意味着人类注释者通常必须从头开始重复重新创建他或她可能应用于前一图像(或先前100个图像)的相同注释。这可能导致训练数据集图像的注释出现错误和/或不一致。
因此,需要能够以更低的成本、更高的准确性、更少的时间和/或更大的灵活性自动生成带注释的训练数据集的系统。目前公开的系统试图解决这一需求。例如,所公开的系统可以接收由相机(例如,安装在车辆上的相机)获取的多个帧视图图像。帧视图图像是指表示获取相机的视场的图像(与将在下面详细讨论的基于模拟视点生成的图像不同)。基于接收到的帧视图图像,系统可以生成覆盖整个路段的单个聚合俯视图图像(来自模拟的俯视视点)。与包括沿着成像路段的各个位置处特征的深度相关变化(这随着帧视图表示中距获取相机的距离增加,可能使准确注释变得困难或不可能)的帧视图图像不同,路段的各个方面,诸如车道、车道标线、道路表面等,都可以用相似的视角来表示。这可以显著促进注释处理。
为了生成聚合俯视图图像,所公开的系统可以将每个帧视图图像变形为对应的俯视图图像。然后可以聚合生成的俯视图图像以形成单个聚合俯视图图像。可以相对于聚合的俯视图图像(例如,使用经训练的神经网络等)自动识别和注释各种道路特征(车道标线、可行驶路径等)。替代地,可以在帧视图图像中自动识别和注释各种道路特征。然后,作为帧视图图像变形以形成聚合俯视图图像的一部分,帧视图注释也可以被变形并包括在聚合的俯视图图像中。
聚合的俯视图图像可以用于神经网络(例如,被设计为基于路段的卫星视图来预测道路模型的某些方面的神经网络)的训练。替代地,聚合的俯视图图像可以用于一个或多个地图生成处理中,以生成路段的详细、准确的地图以供在各种应用中使用。此外,聚合的俯视图图像可以被转换成一系列帧视图图像(例如,与从中生成聚合的俯视图图像的原始帧视图图像对应的一组图像)。值得注意的是,与聚合的俯视图图像相关联的注释可以被维护并包括在新生成的帧视图图像中。以这种方式,可以快速、高效且准确地(并自动)生成一组带注释的帧视图图像,以用于训练一个或多个神经网络。
所公开的实施例可以包括用于自动绘制路段的系统。绘制可以广泛地指与路段相关联的特征的识别和/或一个或多个道路特征或对象(例如,车道标线、可行驶路径、标志、交通灯等)相对于路段的地点的识别。系统可以包括至少一个处理器(例如,处理器180),其被编程为从安装在车辆上的至少一个相机接收当车辆穿过路段时获取的多个图像;将多个图像中的每个图像转换成对应的俯视图图像以提供多个俯视图图像;聚合多个俯视图图像以提供路段的聚合的俯视图图像;分析聚合的俯视图图像以识别与路段相关联的至少一个道路特征;相对于聚合的俯视图图像自动注释至少一个道路特征;以及将包括带注释的至少一个道路特征的聚合的俯视图图像输出到至少一个存储器。
在所公开的系统和方法中,中央服务器可以被配置为从一个或多个车辆接收图像,车辆可以包括自主车辆。例如,车辆200(或车辆1205、1210、1215、1220或1225)可以使用上面讨论的各种无线通信方法将图像和其它数据上传到服务器1230。
获取的图像可以从任何合适的相机接收。在一些示例中,所获取的图像可以从安装在车辆(诸如车辆200)上的相机(诸如安装在车辆上的相机122、124和/或126)接收。虽然从单个相机获取的图像可能足以生成聚合的俯视图图像,但在一些情况下,由至少一个处理器接收的图像可以由多个相机获取。图像可以由车辆上的车载图像传感器捕获。例如,如上所述,可以使用车辆200的图像获取单元120(例如,通过图像捕获设备122)来捕获图像。图像传感器可以包括任何合适类型的图像捕获设备,诸如如上所述的具有全局快门的Aptina M9V024 WVGA传感器,或者任何其它形式的图像传感器。
相机可以包括具有向车辆前方延伸的视场的一个或多个相机(例如,前向相机)、具有延伸至车辆一侧的视场的一个或多个相机(例如,侧向相机),和/或具有延伸至车辆后部的视场的一个或多个相机(例如,后向相机)。由可用相机获取的帧视图图像可以被转换成对应的俯视图图像,然后可以将其拼接在一起以生成聚合的俯视图图像。为了使相机可以获取表示车辆周围环境的图像,例如,安装在车辆上的相机可以具有远离车辆突出的光轴。此外,由安装在车辆上的每个相机获取的帧视图图像将具有与相应相机的地点一致的视点。每个帧视图图像还将包括相对于相应相机视点并且取决于相应相机的焦距和其它特性的透视特性。
所获取的帧视图图像中的每一个可以被转换成对应的俯视图图像。这样的转换可以包括使图像变形以模拟与用于捕获图像的相机不同的视图或透视图。例如,图像可以被变形以模拟“俯视图”,其可以相对于用于捕获图像的实际相机而升高。该模拟视图可以消除可能存在于所获取的图像中的某些透视效果,并且因此可以允许基于转换的俯视图图像改进对车道标记和其它特征的检测。例如,与原始图像相比,变形视图中的道路特征可能看起来更大,这可能使它们更容易检测到。此外,变形视图可以标准化车道标记的几何形状,使得它们更容易被检测到。例如,基于俯视图图像,可以以比在捕获的图像中检测到的车道标记更高的置信水平来检测车道标记或其它道路特征的几何形状。如下面将讨论的,这些益处还可以扩展到基于各个俯视图图像生成的聚合的俯视图图像。
图27示意性地表示图像获取和转换处理的示例。例如,当车辆2700沿着路段导航时,可以通过相机2720获取图像流(例如,以每秒18帧或任何其它合适的帧捕获速率)。在一些情况下,捕获的图像可以传输到外部服务器进行处理。如上所述,服务器可以将每个接收到的图像从表示沿着光轴2722的相机视图的帧视图图像转换成来自模拟视点的俯视图图像。例如,所获取的帧视图图像可以相对于相对于相机2720升高的模拟视点2730变形。模拟视点可以与任何合适的光轴相关联。在一些实施例中,模拟视点与基本垂直于路段表面的光轴2734相关联。用于生成对应于所获取的帧视图图像的俯视图图像的模拟视点可以相对于至少一个相机2720的实际高度升高。例如,在一些情况下,模拟视点相对于相机的实际高度被升高至少十米。在其它情况下,模拟视点相对于相机的实际高度被升高十米到二十米之间。
多个俯视图图像中的每一个可以通过将由至少一个相机捕获的图像从至少一个相机(例如,相机2720)的视点变形到相对于至少一个相机升高并且沿着垂直于路段表面的线(例如,光轴2734)引导的模拟相机视点(例如,2730)来生成。在一些实施例中,模拟俯视图图像可以由服务器在接收到来自车辆的图像之后生成。在其它实施例中,模拟的俯视图图像可以由车辆上的处理设备生成,并且生成的俯视图图像可以被传输到服务器。因此,服务器可以从一个或多个车辆接收多个变形图像,其可以用于生成聚合的俯视图图像。
车辆2700可以包括处理单元2710,处理单元2710被配置为处理由图像捕获设备2720捕获的图像并将它们传输到服务器(诸如服务器1230),用于生成自动注释的聚合俯视图图像。处理单元2710可以包括各种类型的设备。例如,处理单元2710可以包括控制器、图像预处理器、中央处理单元(CPU)、图形处理单元(GPU)、支持电路、数字信号处理器、集成电路、存储器、或用于图像处理和分析的任何其它类型的设备。图像预处理器可以包括用于捕获、数字化和处理来自图像传感器的图像的视频处理器。CPU可以包括任意数量的微控制器或微处理器。GPU还可以包括任意数量的微控制器或微处理器。在一些实施例中,处理单元2710可以对应于上面详细描述的处理单元110。车辆2700可以包括无线收发器(图27中未示出),诸如上述无线收发器172,用于将图像和其它信息传输到中央服务器。
与所公开的实施例一致,可以基于捕获的图像来生成变形图像。如本文所使用的,“变形图像”可以指已经被数字操纵以扭曲图像内出现的特征的地点的图像。例如,原始图像中的各种特征的位置可以被重新绘制以出现在变形图像中的不同地点。生成的变形图像可以从相对于相机的实际位置升高的模拟视点模拟车辆2700的环境中的特征的视图。例如,变形图像可以模拟从位于图像捕获设备272 0上方的视点2730拍摄的图像。基于视点2730变形的图像可以模拟由假想的相机,例如,无人机或其它高架对象上的相机(如图27中无人机的虚线轮廓所示的)在该地点拍摄的图像。因此,视点2730在本文中也可以被称为“模拟俯视图”。但是,应该理解的是,模拟视点2730纯粹是假设的并且实际上没有从升高地点捕获图像。而是,原始图像由安装在车辆2700上的一个或多个图像捕获设备2720捕获并且被变形以模拟视点2730。变形图像可以由服务器(诸如服务器1230)的处理器生成,或者可以由车辆2700例如使用处理单元2710生成。
模拟视点2730可以模拟相机2720上方的各种高度。在一些实施例中,模拟视点2730可以相对于可以基于图像变形进行模拟的相机2720升高一米、两米、五米、十米、15米、20米或任何其它高度。在一些实施例中,变形图像可以基于垂直于路段表面的模拟相机光轴。如本文所使用的,“光轴”可以指假想线,沿着该假想线在光学系统中存在某种程度的旋转对称性。光轴可以表示穿过透镜的曲率中心的假想线。例如,图像捕获设备2720可以具有光轴2722,如图27中所示。模拟视点2730可以具有相对于光轴2722旋转(例如,旋转90度)的模拟光轴2734。可以生成变形图像以模拟在由相机2720获取的图像中表示的特征如果在从具有模拟光轴2734的模拟视点2730捕获的图像中表示的话将如何出现。因此,对所获取的帧视图图像执行的图像变形的程度和类型可以取决于视点2730的模拟高度和模拟光轴2734。
可以使用各种变换算法和技术来生成变形图像。例如,可以使用一种或多种变换算法对来自原始图像的像素进行平移、缩放和/或旋转以形成变形图像。这样的变换可以包括普罗克拉斯特变换、仿射变换、透视变换、双线性变换、多项式变换、弹性变形、薄板样条技术、贝叶斯方法、网格变形技术或任何其它变换。在一些实施例中,可以使用一种或多种变换技术的组合。
图28A和图28B图示了与所公开的实施例一致的示例图像变换。如图28A中所示,原始帧视图图像2810可以包括各种像素2802、2804和2806。例如,像素可以对应于车辆2700的环境中的特征,诸如图像中表示的特征的边缘或点。为了说明的目的,原始图像2810可以与以x坐标和y坐标表示的坐标系相关联。例如,像素2802可以具有位置(x,y),如图所示。
原始图像2810可以被变换以生成变形图像2820,如图28B中所示。原始图像2810覆盖在变形图像2820上以供参考。原始图像中的各个点可以被变换以形成变形图像2820。例如,像素2802在变形图像2820中可以具有新位置(x',y'),其可以与原始位置(x,y)显著不同,如图28B中所示。通过示例的方式提供原始图像2810相对于变形图像2820的形状。可以实现各种其它类型或程度的变换来模仿模拟视点2730和模拟光轴2734。
图29A和图29B提供了用于将帧视图图像转换成来自模拟视点的俯视图图像的变形处理的概念表示。例如,图像2910可以从安装在车辆2700上的相机2720获取。图像2910构成沿着光轴2722从相机2720的视点获取的帧视图图像。图像2910表示各种特征,诸如车道标线2912和目标车辆2900。图29A中表示的路段包括弯道2914,但是由于图像2910相对于相机2720的视点的透视、相关联的焦距等,车道标线看起来在弯道处会聚。
帧视图图像2910可以变形以生成对应的俯视图图像2920。可以使用上述任何图像变形技术来生成变形。变形图像2920可以表示车辆环境中的类似特征,如帧视图图像2910中所示。但是,这些特征是从相对于相机2720提升的模拟自上而下视角显示的。变形的俯视图图像2920将车道标线2912示出为不会聚,而是平行延伸。类似地,在弯道2914处,不是所有车道标线汇聚在一起,而是将每个车道标线单独示出为平行延伸穿过弯道。
与所获取的帧视图图像对应的俯视图图像可以被聚合(例如,拼接在一起)以提供路段的聚合的俯视图图像。可以使用各种技术来聚合生成的俯视图图像。在一个示例中,特征点(例如,与特征相关联的任何唯一可识别点,诸如标志的角、车道标线的角等)可以跨多个俯视图图像相关。并且,结合相机沿着路段移动时跟踪的自我运动(即,安装到移动主车辆的相机的自我运动),特征点可以沿着网格或适合建模路段的其它结构定位。在确定了特征点地点后,俯视图图像可以相对于路段以及相对于彼此以适当的朝向和间距定位。为了聚合俯视图图像,如下面更详细讨论的,可以选择性地从俯视图图像中绘制像素以填充聚合的俯视图图像。
因此,多个俯视图图像的聚合可以包括识别和关联相对于多个俯视图图像的多个特征点,以及基于相关的特征点和基于车辆的跟踪的自我运动确定多个俯视图图像的相对对齐。多个俯视图图像的聚合还可以包括确定多个特征点中的每个特征点相对于路段的位置。例如,可以使用运动结构计算来确定多个特征点中的每个特征点的位置。
例如,可以基于一个或多个传感器的输出来确定穿过路段的车辆的自我运动。例如,主车辆可以配备有被配置为确定主车辆的地点的地点传感器。在一些实施例中,地点传感器可以包括GPS接收器(其可以对应于上述位置传感器130)。其它类型的传感器,诸如加速度计、速度传感器、指南针、惯性运动检测器等,可以用于跟踪主车辆的运动。
跨多个图像的特征点的跟踪,特别是当与车辆的自我运动的知识相结合时,可以使得能够确定与获取的帧视图图像、转换的俯视图图像等中表示的各种特征相关联的3D深度信息。例如,基于相对于所获取的图像的运动结构计算,可以确定与道路标志3010相关联的3D地点3012,如图30中所示。3D地点3012可以包括指示从主车辆3020到道路标志3010的距离的深度信息。例如,主车辆3020的导航系统可以确定表示到3D点3012的距离的深度d。深度d可以以各种方式确定或估计。在一些实施例中,这可以包括基于使用相机3022捕获的多个图像的运动结构(SfM)技术。例如,相机3022可以在不同时间捕获示出道路标志3010的第一图像和第二图像。这可以包括分析连续捕获的图像、以特定时间间隔捕获的图像等。系统可以确定图像内道路标志3010的表示的位置变化,其可以与相机3022的位置变化相关(例如,使用地点传感器3024确定的车辆3020的自我运动)。基于该相关性,可以估计道路标志3010的三维地点,从而得到深度d。在一些实施例中,这可以包括应用诸如Lukas-Kanade跟踪器算法之类的匹配算法来关联图像之间的特征并生成3D点。在一些实施例中,经训练的机器学习模型可以用于确定深度d。例如,图像的训练集或图像组连同深度数据可以被输入到机器学习模型中。经训练的机器学习模型可以被配置为基于包括在不同位置捕获的道路标志3010的两个或更多个图像来确定深度d。
在一些实施例中,相机3022在图像之间的位置变化可以基于与每个图像相关联的GPS数据。例如,位置传感器3024可以确定当捕获第一图像时的GPS地点和当捕获第二图像时的GPS地点,并且这些地点之间的距离可以用于确定3D点3012。在一些实施例中,可以使用主车辆3020的自我运动来代替GPS地点或作为GPS地点的附加。例如,当捕获第一图像时可以确定GPS地点。然后,系统可以跟踪主车辆3024从捕获第一图像的地点到捕获下一个图像的地点的自我运动。因此,可以单独基于自我运动或者结合附加GPS信息来确定第二图像的地点。由于GPS定位的准确度相对低(例如,10m准确度、5m准确度等),因此使用自我运动可以帮助细化实际相机位置并提高深度d的准确度。
虽然可以使用运动结构技术来确定深度d,如上所述,但是可以使用各种其它技术。在一些实施例中,深度d可以基于来自除相机3022之外的传感器的数据来确定。例如,主车辆3020可以包括LIDAR传感器、LED接近传感器、超声波传感器、激光测距仪或可以指示深度d的其它传感器。用于确定3D点的该处理可以应用于主车辆3020的环境内的各种其它对象或特征。
在一些实施例中,3D点3012可以基于三维真实世界坐标来表示。例如,坐标系可以基于主车辆3020来定义,并且3D点3012可以被表示为X、Y和Z坐标。可以使用各种其它坐标系,诸如基于稀疏地图的坐标系、基于特定路段的坐标系、全局坐标系(例如,纬度/经度/高程)或定义真实世界位置的任何其它数据。X、Y和Z坐标可以基于LIDAR或其它传感器、或各种其它技术使用上述运动结构技术来确定。
了解特征点位置可以帮助将转换后的俯视图图像拼接在一起。与特征点位置相关联的3D信息还可以用于表示可能具有在路段的道路表面上方延伸的高程的某些特征(例如,人行道、灯柱、杆、交通标志、交通灯等)。
根据所公开的实施例,图像分割处理可以用于识别在获取的帧视图图像、转换的俯视图图像或两者中表示的各种对象或特征。可以使用一个或多个经训练的神经网络来执行图像分割处理,该经训练的神经网络被配置为对诸如车辆、车道标线、行人、道路表面、交通灯、交通标志等特征进行识别/分类。在图像分割处理期间,神经网络可以被供应一个或多个帧视图图像、俯视图图像等,并且对于特定图像中的每个像素,网络可以指示该像素是否是辨识出的对象的一部分(例如,汽车/非汽车;道路表面/非道路表面;行人/非行人;等等)。
分割的图像信息可以用于生成聚合的俯视图图像。具体而言,在拼接处理期间,某些类型的对象可以被识别并从生成的聚合俯视图图像中省略。例如,如图31A中所示,由于主车辆的自我运动和安装在主车辆上的相机的帧捕获率,第一俯视图图像3110可以在重叠区域3130中与第二俯视图图像3120重叠。重叠量可以随着主车辆的较高帧捕获率和/或较慢速度而增加—即,沿着捕获的帧视图图像的路段的较高密度可以导致对应的转换后的俯视图图像之间的较大重叠区域。虽然图31A中示出了两个重叠的俯视图图像,但在一些情况下,三个、四个、五个或更多个俯视图图像可以在公共重叠区域中彼此重叠。
当生成聚合的俯视图图像时,系统可以选择性地用来自重叠区域3130的像素来填充聚合的俯视图图像。例如,在聚合的俯视图图像的对应于重叠区域3130的区域中,系统可以用仅来自俯视图图像3110、仅来自俯视图图像3120的像素、或使用从两个俯视图图像中选择性获得的像素的混合来填充聚合的俯视图图像的区域。
使用像素的混合可以使得系统能够从聚合的俯视图图像中选择性地省略在帧视图图像和对应的俯视图图像中表示的某些特征或对象。例如,如图31A中所示,在第一时间t1,在已转换成俯视图3110的帧视图图像中捕获车辆3150。在后面的时间t2,捕获转换成俯视图图像3120的帧视图图像。但是,后面,车辆3150移动到新位置3152,使得其不被表示为被转换成俯视图3120的捕获的帧视图图像的一部分。因此,在重叠区域3130中,系统可以使用来自俯视图图像3110的包括车辆3150的表示的一组像素。系统还可以使用来自俯视图图像3120的不包括车辆3150的表示的一组像素。因此,当将俯视图图像拼接在一起以形成聚合的俯视图图像时,所公开的系统可以从聚合的俯视图图像中省略来自俯视图图像3110的包括车辆3150的表示的那些像素。替代地,系统可以将来自重叠区域3130中的俯视图图像3120的不包括车辆3150的表示的像素包括在聚合的俯视图图像中。所得聚合的俯视图图像如图31B中所示。虽然聚合的俯视图图像包括从俯视图图像3110和3120绘制的车道标线3140和道路表面3106的俯视图,但是图31B的聚合的俯视图图像不包括车辆3150的表示。这种能力对于生成不受车辆和其它瞬态或移动对象遮挡的路段的整洁地面实况表示特别有用。实际上,在存在足够的重叠区域的情况下,可以生成聚合的俯视图图像以仅表示某些类别的对象,同时省略其它类别的对象或特征。
因此,在聚合多个俯视图图像的处理中,可以使用图像分割处理,其中对多个俯视图图像中表示的对象进行识别和分类。此外,多个俯视图图像的聚合可以包括从聚合的俯视图图像中省略来自经由图像分割处理确定的表示车辆的至少一部分的多个俯视图图像中的一个或多个的像素。附加地或替代地,多个俯视图图像的聚合可以包括从聚合的俯视图图像中省略来自被确定为表示移动对象的至少一部分的多个俯视图图像中的一个或多个的像素。
此外,在多个俯视图图像中的第一俯视图图像和第二俯视图图像至少部分地在重叠区域中重叠的情况下,多个俯视图图像的聚合可以包括将来自第一俯视图图像中位于重叠区域中的至少一些像素和来自第二俯视图图像中位于重叠区域中的至少一些像素合并到聚合的俯视图图像中(例如,混合来自第一和第二俯视图图像的像素)。来自多于两个(例如,三个或更多个)俯视图图像的像素可以被混合以形成聚合的俯视图图像的至少一部分。例如,在多个俯视图图像中的第一俯视图图像、第二俯视图图像和第三俯视图图像至少部分地在重叠区域中重叠的情况下,多个俯视图图像的聚合可以包括将来自第一俯视图图像中位于重叠区域中的至少一些像素、来自第二俯视图图像中位于重叠区域中的至少一些像素,以及来自第三俯视图图像中位于重叠区域中的至少一些像素合并到聚合的俯视图图像中。
将获取的帧视图图像转换成俯视图图像可以有利于道路特征、对象等的自动注释。例如,在获取的帧视图图像中,诸如图29A,网络(或人类)可能难以或不可能准确识别和注释紧邻相机附近区域之外的道路特征(例如,在图29A的前景中)。远处的道路特征,诸如与图29A的背景中的弯道相关联的那些道路特征,可能无法识别和准确地注释。另一方面,在至少一个车辆穿过路段并收集一系列帧视图图像的情况下,这些帧视图图像可以被转换成对应的一系列俯视图图像,类似于图29B的图像,其更清楚地表示道路特征,而没有帧视图角度的困难。一旦俯视图图像被拼接在一起以形成聚合的俯视图图像,诸如图31B的图像,聚合的俯视图图像就可以被自动注释。俯视图可以使自动注释处理变得更加容易和更加准确。此外,基于帧视图图像难以注释的某些特征(诸如不连续车道标线、可行驶路径、部分标记的出口或合并车道等)可能相对于聚合的俯视图图像明显更容易注释。此外,聚合的俯视图图像的自动注释可以包括整个路段的连续注释——这是帧视图图像无法实现的。
因此,在一些实施例中,可以分析聚合的俯视图图像以识别与路段相关联的至少一个道路特征。经训练的神经网络可以相对于聚合的俯视图图像自动注释至少一个道路特征。可以自动识别和注释各种类型的特征。例如,至少一个注释的道路特征可以包括路段的表面、车道标线或道路边缘。在一些情况下,注释的特征作为路段的一部分是不可见的(这使得人类准确注释它们变得具有挑战性)。例如,自动注释的特征可以包括与路段的各个部分相关联的可行驶路径,诸如合并车道、出口车道、交叉路口、人行横道等。自动注释的道路特征可以包括连接两个或更多个的不连续的车道标线(例如,虚线车道标线、在出口/合流车道结束并在出口/合流车道的另一侧再次开始的车道标线等)的虚拟车道标线。自动注释的特征还可以包括投影在道路表面上方的对象,诸如交通灯、杆、交通标志、树、建筑物等。
虽然已经相对于聚合的俯视图图像描述了所公开的系统的自动注释能力,但是应当注意的是,也可以采用其它注释技术。例如,在一些实施例中,可以自动注释各个俯视图图像,并且可以将那些注释聚合在一起作为所描述的拼接处理的一部分。在其它实施例中,可以针对各个帧视图图像自动生成注释。这些注释可以作为对应俯视图图像的形成的一部分而变形。然后可以通过将带注释的俯视图图像拼接在一起来生成带注释的聚合的俯视图图像。
如所指示的,聚合的俯视图图像可以允许更容易或更准确地检测车辆2700的环境内的特征。因此,当基于所描述的聚合的俯视图图像时,自动注释可能更准确。在一些实施例中,这可能是由于与原始帧视图图像相比,由于所执行的变换,特征在变形图像中占据了更多空间。例如,远处的对象或特征可能会变形,在变形图像中显得更大,类似于如果它们由俯视相机捕获时可能出现的样子。
在一些实施例中,聚合的俯视图图像中的特征的表示可以包括比原始帧视图图像中的特征的表示更多的图像像素,这可以使得特征更容易检测和/或注释。可以使用各种算法来生成与变形图像相关联的附加像素。此类算法可以包括被配置为增加图像中的像素分辨率的放大算法、最近邻插值、双线性插值、双三次插值、sinc或lanczos重采样、框采样、傅里叶变换方法、边缘定向插值、高质量缩放(“hqx”)、接缝雕刻和/或向量提取等。在一些实施例中,机器学习模型,包括基于深度卷积神经网络的模型(诸如waifu2x、NeuralEnhance、Topaz A.I.Gigapixel等)可以用于增加图像分辨率。这样的算法可以应用于整个变形图像或者可以应用于某些区域,这取决于在该区域中执行的变换的程度和类型。还可以应用各种降噪算法来平滑放大的图像或图像的部分。因此,在变形图像中以更高分辨率表示的特征可以更容易检测到,并且因此可以提高生成稀疏地图的准确度或效率。
带注释的聚合的俯视图图像可以被输出到至少一个存储器以供以后在各种处理中使用。例如,在一些情况下,带注释的聚合的俯视图图像可以被分割并变换成保留来自聚合的俯视图图像的注释的多个帧视图图像。在这种情况下,系统的至少一个处理器(例如,与服务器相关联的一个或多个处理设备)可以被编程为将聚合的俯视图图像转换成一系列帧视图图像,每个帧视图图像包括至少一个道路特征的至少一部分的表示。值得注意的是,聚合的俯视图图像中表示的至少一个道路特征的注释被转换成一系列帧视图图像中的每一个。然后可以将具有自动生成的注释的帧视图图像合并到数据集中以训练一个或多个神经网络。
聚合的俯视图图像还可以用于其它应用。例如,在一些情况下,系统的至少一个处理器可以被编程为基于存储到至少一个存储器的聚合的俯视图图像来生成至少一个导航地图。在一些情况下,至少一个处理器可以被编程为将聚合的俯视图图像与基于在路段的较早穿越期间从多个车辆收集到的轨迹生成的可驾驶路径重叠。可行驶路径可以被表示为3D样条并且可以从存储的稀疏地图中检索。聚合的俯视图图像还可以填充有地标和其它特征,如上面讨论稀疏地图生成和使用稀疏地图导航的部分中所描述的。
此外,虽然主要基于单个车辆和安装在车辆上的一个或多个相机描述了上述示例,但是当前公开的系统可以结合多个车辆使用。例如,获取的用于生成聚合的俯视图图像的多个帧视图图像在一些情况下可以是从包括在多个不同车辆上的相机众包的。当多个不同车辆中的每一个穿过路段时,与这些车辆相关联的相机均可以获取一系列帧视图图像。通过对齐来自多个车辆的驾驶(或者基于收集到的与不同车辆中的每一个相关联的自我运动来关联驾驶),可以关联从来自多个车辆的不同相机获取的帧视图图像。以这种方式,俯视图图像可以从相关的帧视图图像生成,使得聚合的俯视图图像可以基于由多个不同车辆获取的众包图像。
前面的描述是为了说明的目的而给出。它不是详尽的并且不限于所公开的精确形式或实施例。通过考虑说明书和所公开的实施例的实践,修改和适配对于本领域技术人员来说将是显而易见的。另外,虽然所公开的实施例的各方面被描述为存储在存储器中,但是本领域技术人员将认识到,这些方面还可以存储在其它类型的计算机可读介质上,诸如辅助存储设备,例如硬盘或CD ROM或其它形式的RAM或ROM、USB介质、DVD、蓝光、4K超高清蓝光或其它光驱介质。
基于书面描述和所公开的方法的计算机程序在有经验的开发人员的技术范围内。可以使用本领域技术人员已知的任何技术来创建各种程序或程序模块,或者可以结合现有软件来设计各种程序或程序模块。例如,程序段或程序模块可以在.Net Framework、.NetCompact Framework(以及相关语言,诸如Visual Basic、C等)、Java、C++、Objective-C、HTML、HTML/AJAX组合、XML或带有包括的Java小程序的HTML中设计或借助于它们。
此外,虽然本文已经描述了说明性实施例,但本领域技术人员基于本公开将认识到的具有等同元件、修改、省略、组合(例如,跨各个实施例的方面)、适配和/或更改的任何和所有实施例的范围。权利要求中的限制应基于权利要求中所使用的语言来广义地解释,并且不限于本说明书中或在申请的审查期间描述的示例。这些示例应被解释为非排他性的。此外,所公开的方法的步骤可以以任何方式修改,包括通过重新排序步骤和/或插入或删除步骤。因此,说明书和示例仅被认为是说明性的,真正的范围和精神由所附权利要求及其等同形式的完整范围指示。

Claims (39)

1.一种用于自动绘制路段的系统,所述系统包括:
至少一个处理器,被编程为:
从安装在车辆上的至少一个相机接收当所述车辆穿过路段时获取的多个图像;
将所述多个图像中的每个图像转换成对应的俯视图图像以提供多个俯视图图像;
聚合所述多个俯视图图像以提供所述路段的聚合的俯视图图像;
分析所述聚合的俯视图图像以识别与所述路段相关联的至少一个道路特征;
相对于所述聚合的俯视图图像自动注释所述至少一个道路特征;以及
将包括注释的所述至少一个道路特征的所述聚合的俯视图图像输出到至少一个存储器。
2.如权利要求1所述的系统,其中所述至少一个相机具有远离所述车辆突出的光轴。
3.如权利要求1所述的系统,其中所述多个俯视图图像中的每个俯视图图像基于相对于所述至少一个相机的实际高度升高的模拟视点而生成。
4.如权利要求3所述的系统,其中所述模拟视点相对于所述相机的所述实际高度升高至少十米。
5.如权利要求3所述的系统,其中所述模拟视点相对于所述相机的所述实际高度升高十米至二十米之间。
6.如权利要求3所述的系统,其中与所述模拟视点相关联的光轴垂直于与所述路段相关联的道路表面。
7.如权利要求1所述的系统,其中所述多个俯视图图像中的每个俯视图图像通过将由所述至少一个相机从所述至少一个相机的视点捕获的图像变形到相对于所述至少一个相机升高并沿着垂直于路段表面的线引导的模拟相机视点来生成。
8.如权利要求1所述的系统,其中所述至少一个相机包括相对于车辆的前向相机。
9.如权利要求1所述的系统,其中所述至少一个相机包括相对于车辆的侧面相机。
10.如权利要求1所述的系统,其中所述至少一个相机包括相对于车辆的后向相机。
11.如权利要求1所述的系统,其中所述多个俯视图图像的聚合包括:识别并关联相对于所述多个俯视图图像的多个特征点,以及基于关联的特征点并且基于所述车辆的所跟踪的自我运动确定所述多个俯视图图像的相对对齐。
12.如权利要求11所述的系统,其中所述多个俯视图图像的聚合包括确定所述多个特征点中的每个特征点相对于路段的位置。
13.如权利要求12所述的系统,其中使用来自运动计算的结构来确定所述多个特征点中的每个特征点的位置。
14.如权利要求1所述的系统,其中所述多个俯视图图像的聚合包括图像分割过程,其中对所述多个俯视图图像中表示的对象进行识别和分类。
15.如权利要求14所述的系统,其中所述多个俯视图图像的聚合包括从所述聚合的俯视图图像中省略来自所述多个俯视图图像中的一个或多个俯视图图像的经由所述图像分割过程被确定为表示车辆的至少一部分的像素。
16.如权利要求1所述的系统,其中所述多个俯视图图像的聚合包括从所述聚合的俯视图图像中省略来自所述多个俯视图图像中的一个或多个俯视图图像的被确定为表示移动对象的至少一部分的像素。
17.如权利要求1所述的系统,其中所述多个俯视图图像中的第一俯视图图像和第二俯视图图像至少部分地在重叠区域中重叠,并且其中所述多个俯视图图像的聚合包括将来自第一俯视图图像的驻留在所述重叠区域中的至少一些像素和来自第二俯视图图像的驻留在所述重叠区域中的至少一些像素合并到所述聚合的俯视图图像中。
18.如权利要求1所述的系统,其中所述多个俯视图图像中的第一俯视图图像、第二俯视图图像和第三俯视图图像至少部分地在重叠区域中重叠,并且其中所述多个俯视图图像的聚合包括将来自第一俯视图图像的驻留在重叠区域中的至少一些像素、来自第二俯视图图像的驻留在重叠区域中的至少一些像素,以及来自第三俯视图图像的驻留在重叠区域中的至少一些像素合并到所述聚合的俯视图图像中。
19.如权利要求1所述的系统,其中所述至少一个道路特征的自动注释由经过训练的神经网络执行。
20.如权利要求1所述的系统,其中所述至少一个道路特征包括道路表面。
21.如权利要求1所述的系统,其中所述至少一个道路特征包括车道标记。
22.如权利要求1所述的系统,其中所述至少一个道路特征包括道路边缘。
23.如权利要求1所述的系统,其中所述至少一个道路特征包括可行驶路径。
24.如权利要求23所述的系统,其中所述可行驶路径与合并车道相关联。
25.如权利要求23所述的系统,其中所述可行驶路径与出口车道相关联。
26.如权利要求23所述的系统,其中所述可行驶路径与交叉路口相关联。
27.如权利要求23所述的系统,其中所述可行驶路径与人行横道相关联。
28.如权利要求1所述的系统,其中所述至少一个道路特征包括连接两个或更多个不连续车道标记的虚拟车道标记。
29.如权利要求1所述的系统,其中所述至少一个道路特征包括交通灯。
30.如权利要求1所述的系统,其中所述至少一个道路特征包括杆。
31.如权利要求1所述的系统,其中所述至少一个道路特征包括交通标志。
32.如权利要求1所述的系统,其中所述至少一个道路特征包括树。
33.如权利要求1所述的系统,其中所述至少一个道路特征包括建筑物。
34.如权利要求1所述的系统,其中所述至少一个处理器还被编程为将所述聚合的俯视图图像转换成一系列帧视图图像,每个帧视图图像包括所述至少一个道路特征的至少一部分的表示,并且其中所述聚合的俯视图图像中表示的所述至少一个道路特征的注释被变换成所述一系列帧视图图像中的每个帧视图图像。
35.如权利要求1所述的系统,其中所述至少一个处理器还被编程为基于存储到所述至少一个存储器的所述聚合的俯视图图像来生成至少一个导航地图。
36.如权利要求1所述的系统,其中所述至少一个处理器还被编程为将所述聚合的俯视图图像与基于在路段的早期穿越期间从多个车辆收集的轨迹生成的可行驶路径重叠。
37.如权利要求35所述的系统,其中所述可行驶路径被表示为3D样条。
38.如权利要求1所述的系统,其中所述多个图像是由包括在多个不同车辆上的相机在所述多个不同车辆中的每个车辆穿过路段时获取的。
39.如权利要求37所述的系统,其中所述多个图像基于收集到的与所述不同车辆中的每个车辆相关联的自我运动来对齐。
CN202180094883.5A 2020-12-30 2021-12-30 用于路段绘制的系统和方法 Pending CN117677972A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063132260P 2020-12-30 2020-12-30
US63/132,260 2020-12-30
PCT/US2021/065713 WO2022147274A1 (en) 2020-12-30 2021-12-30 Systems and methods for road segment mapping

Publications (1)

Publication Number Publication Date
CN117677972A true CN117677972A (zh) 2024-03-08

Family

ID=82261107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180094883.5A Pending CN117677972A (zh) 2020-12-30 2021-12-30 用于路段绘制的系统和方法

Country Status (4)

Country Link
US (1) US20230341239A1 (zh)
EP (1) EP4272157A1 (zh)
CN (1) CN117677972A (zh)
WO (1) WO2022147274A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102022126322A1 (de) * 2022-10-11 2024-04-11 Valeo Schalter Und Sensoren Gmbh Verfahren zum Betreiben eines Fahrerassistenzsystems für ein Kraftfahrzeug, Fahrerassistenzsystem für ein Kraftfahrzeug sowie Kraftfahrzeug mit einem Fahrerassistenzsystem

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9538144B2 (en) * 2012-05-02 2017-01-03 GM Global Technology Operations LLC Full speed lane sensing using multiple cameras
US20170300763A1 (en) * 2016-04-19 2017-10-19 GM Global Technology Operations LLC Road feature detection using a vehicle camera system
DE102017214225B3 (de) * 2017-08-15 2018-11-22 Volkswagen Aktiengesellschaft Verfahren zum Betreiben eines Fahrerassistenzsystems eines Kraftfahrzeugs sowie Kraftfahrzeug
US11373067B2 (en) * 2018-08-10 2022-06-28 Nec Corporation Parametric top-view representation of scenes
JP7147464B2 (ja) * 2018-10-24 2022-10-05 トヨタ自動車株式会社 画像選択装置及び画像選択方法
CN112654836A (zh) * 2019-02-04 2021-04-13 御眼视觉技术有限公司 用于车辆导航的系统和方法
US10992860B2 (en) * 2019-03-29 2021-04-27 Nio Usa, Inc. Dynamic seam adjustment of image overlap zones from multi-camera source images
DE112020002697T5 (de) * 2019-05-30 2022-03-17 Mobileye Vision Technologies Ltd. Modellerstellung einer fahrzeugumgebung mit kameras

Also Published As

Publication number Publication date
US20230341239A1 (en) 2023-10-26
WO2022147274A1 (en) 2022-07-07
EP4272157A1 (en) 2023-11-08

Similar Documents

Publication Publication Date Title
US11263771B2 (en) Determining lane position of a partially obscured target vehicle
EP3818339B1 (en) Systems and methods for vehicle navigation
CN109643367B (zh) 用于自主车辆导航的众包和分发稀疏地图以及车道测量的方法、系统和可读介质
JP2022535351A (ja) 車両ナビゲーションのためのシステム及び方法
CN112204349A (zh) 用于车辆导航的系统和方法
CN113348338A (zh) 车道建图和导航
CN114514411A (zh) 用于交通工具导航的系统和方法
CN114402377A (zh) 用于监测交通车道拥塞的系统和方法
US20210381849A1 (en) Map management using an electronic horizon
US11680801B2 (en) Navigation based on partially occluded pedestrians
CN116539052A (zh) 用于车辆导航的系统、方法和装置
CN113924462A (zh) 用于确定物体尺寸的导航系统和方法
CN116783455A (zh) 用于检测打开的门的系统和方法
CN117387614A (zh) 用于动态道路几何形状建模与导航的系统和方法
CN117355871A (zh) 多帧图像分割
JP2023539868A (ja) マップベースの現実世界モデル化のシステム及び方法
CN117651668A (zh) 用于监测车道标记质量的系统和方法
CN115735168A (zh) 用于对交通工具进行导航的控制回路
US20230341239A1 (en) Systems and methods for road segment mapping
CN116734848A (zh) 关于行人和确定交通工具自由空间的交通工具导航
WO2024015564A1 (en) Registration of traffic signs' feature vectors in remote server

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination