用于自主车辆的高清晰度地图的点云数据丰富的制作方法

文档序号:20012620发布日期:2020-02-22 04:33阅读:252来源:国知局
用于自主车辆的高清晰度地图的点云数据丰富的制作方法



背景技术:

本公开内容一般涉及用于自主车辆的地图,并且更具体地涉及向自主车辆提供具有高精度和最新地图数据的高清晰度地图以用于安全导航。

自主车辆,也称为自动驾驶汽车、无人驾驶汽车、自动汽车或机器人汽车,其从源位置行驶到目的地位置,而不需要驾驶人员来控制和导航车辆。由于若干个原因,驾驶自动化是困难的。例如,自主车辆使用传感器即时做出驾驶决定,但车辆传感器无法始终观察所有事物。车辆传感器可能被角落、连绵起伏的山丘和其他车辆遮挡。车辆传感器可能没有足够早地观察某些事情以做出决定。另外,道路上可能缺少车道和标志,或者车道和标志可能被撞倒或被灌木丛隐藏,因此传感器无法检测到车道和标志。此外,对于确定车辆可能从哪里驶来、或者在紧急情况下急转弯或驶出车道、或者在存在必须通过的已经停止的障碍物时,可能不容易看到通行权的道路标志。

自主车辆可以使用地图数据来找出以上信息中的一些而不是依赖于传感器数据。然而,传统地图具有若干个缺点,使传统地图难以用于自主车辆。例如,地图未提供安全导航所需的精度水平(例如,10厘米或更小)。gps系统提供大约3米至5米的精度,但是在某些条件下,gps系统可能具有更大的误差,导致超过100米的精度。这使得精确地确定车辆的位置变得具有挑战性。

此外,传统地图由测量队绘制,测量队让驾驶员驾驶具有高分辨率传感器的特定装备的汽车在地理区域周围行驶并且进行测量。取回测量结果,以及一组地图编辑根据测量结果组装地图。该处理昂贵且耗时(例如,有可能花费几个月来完成地图)。因此,使用这样的技术组装的地图不具有新数据。例如,道路以每年大约5%至10%的频率更新/修改。但是测量汽车价格昂贵且数量有限,因此通常无法部署足够数量的测量汽车以捕获大部分这些更新。例如,测量车队可能包括一千辆汽车。即使对于美国的一个州来说,一千辆汽车将无法定期保持地图最新,以保证安全的自动驾驶。因此,维护地图的传统技术无法提供对于自主车辆的安全导航而言足够精确且最新的正确数据。



技术实现要素:

本发明的实施方式维护高清晰度(hd)地图,高清晰度(hd)地图可供自主车辆使用以在无需人工输入或在有限的人工输入的情况下安全地导航到自主车辆的目的地。自主车辆是能够感测其环境并且进行导航而无需人工输入的车辆。可以包括在自动驾驶车辆上的传感器之一是测量车辆周围环境的光检测和测距(lidar)传感器。lidar传感器执行扫描以收集包括多个扫描点的扫描仪数据。每个扫描点指定在特定方向上发射激光脉冲时由lidar传感器成像的表面的范围。

一些lidar传感器的一个缺点是由lidar传感器收集的扫描仪数据可能相对稀疏且分辨率低。例如,lidar传感器可以收集沿着每条扫描线间隔0.2度的扫描点,其中连续的扫描线间隔1度或更多。具有这些相对低分辨率的扫描仪数据使得难以将扫描仪数据用于与生成hd地图并且更通常地与导航自主车辆相关联的某些任务。例如,扫描仪数据可能不包括道路表面上的足够的扫描点以检测车辆前方道路上的重要信息(例如,车道标记),以及扫描仪数据可能不足够密集以执行对垂直结构(例如,电线杆和邮箱)的充分可靠的检测。

实施方式涉及通过增加扫描的某些部分中的点的密度来增强由lidar传感器收集的相对稀疏和低分辨率数据的处理。然后,增强的数据可以用于与自主车辆导航和hd地图生成有关的各种应用。

处理之一丰富了车辆前方地面上的点云数据。计算系统获得表示由lidar传感器在执行扫描时收集的扫描点的点云。计算系统使用点云中的3d点作为顶点来生成多个三维三角形。对3d三角形进行过滤以识别在地面上基本上平坦的3d三角形的子集。如果3d三角形的所有三个顶点都接近地表面,则3d三角形在地面上基本上是平坦的。然后,计算系统可以通过在3d三角形子集内内插3d点来在地面上生成多个附加的3d点。

内插3d点可以用于与车辆前方的道路表面有关的各种任务。在一个实施方式中,车辆还包括捕获车辆前方区域的图像的摄像装置。然后可以使用图像中的颜色为每个内插3d点分配颜色,使得3d点指定在道路表面上其各自位置处的颜色。然后,可以使用分配给3d点的颜色来生成车辆前方的车道标记的地图,其可以用于导航目的(例如,控制自主车辆以使其保持在同一车道中)或者改进hd地图数据。

另一处理丰富了垂直结构上的点云数据。计算系统接收由lidar传感器收集的扫描仪数据,并且通过连接沿相邻扫描线的具有相同位置的扫描点来生成垂直元素。对垂直元素进行过滤以识别与垂直结构对应的垂直元素的子集。例如,如果两个扫描点之间的线段的方向偏离垂直方向超过阈值角度,则车辆计算系统可以移除垂直元素。对子集中的垂直元素进行分簇以生成一个或更多个垂直簇,每个垂直簇表示lidar传感器的检测范围内的垂直结构,例如,树干、线杆、建筑物或邮箱。系统还可以在每个垂直簇内执行内插以生成表示对应的垂直结构的表面的附加点。

垂直簇可以用于与导航车辆或改进hd地图数据有关的各种任务。例如,由于沿着道路侧的垂直结构通常是静止的,因此车辆计算系统可以在两个相继的时间点处(例如,两个相继的lidar扫描)(基于对应的垂直簇中的垂直元素的位置)确定垂直结构相对于车辆的位置,并且通过比较这两个位置确定车辆移动的位置和方向的变化。

附图说明

图(fig.)1示出了根据实施方式的与多个车辆计算系统交互的hd地图系统的整体系统环境。

图2示出了根据实施方式的车辆计算系统的系统架构。

图3示出了根据实施方式的车辆计算系统的hd地图api中的各种指令层。

图4示出了根据实施方式的hd地图系统的系统架构。

图5示出了根据实施方式的hd地图的组件。

图6a至图6b示出了根据实施方式的在hd地图中限定的地理区域。

图7示出了根据实施方式的hd地图中的车道的表示。

图8a至图8b示出了根据实施方式的hd地图中的车道元素以及车道元素之间的关系。

图9是示出了根据实施方式的用于丰富从lidar扫描获得的点云的处理的流程图。

图10a至图10d示出了根据实施方式的用于基于点云中的3d点来生成一组3d三角形的处理的示例。

图11示出了根据实施方式通过过滤处理识别的3d三角形的子集的示例。

图12是示出根据实施方式的用于对3d三角形进行过滤以识别其顶点接近地面的3d三角形的子集的处理的流程图。

图13是示出根据实施方式的用于基于扫描仪数据来检测垂直结构的处理的流程图。

图14a至图14d示出了根据实施方式的基于扫描仪数据来检测垂直结构的处理的各个阶段的示例。

图15示出了计算机器的实施方式,该计算机器可以从机器可读介质读取指令并且在处理器或控制器中执行该指令。

附图仅出于示意的目的描绘了本发明的各种实施方式。本领域的技术人员可以容易地从以下讨论中认识到,可以在不脱离本文中描述的发明的原理的情况下,利用本文中示出的结构和方法的替选实施方式。

具体实施方式

概述

本发明的实施方式使用高精度维护包含最新信息的高清晰度地图。自主车辆可以使用hd地图在无需人工输入或需要有限的人工输入安全地导航到自主车辆的目的地。自主车辆是能够感测其环境并且在无需人工输入的情况下进行导航的车辆。自主车辆在本文中也可以称为“无人驾驶汽车”、“自动驾驶汽车”或“机器人汽车”。hd地图是指以非常高的精度(通常为5cm至10cm)存储数据的地图。实施方式生成包含关于自主车辆可以行驶的道路的空间几何信息的hd地图。因此,所生成的hd地图包括自主车辆在没有人为干预的情况下安全地导航所需的信息。本发明的实施方式使用自动驾驶车辆在其环境中驾驶时来自自动驾驶车辆本身的较低分辨率传感器的数据,而不是使用昂贵且耗时的绘图车队处理(包括配备有高分辨率传感器的车辆)为hd地图采集数据。车辆可能没有这些路线的先前地图数据,甚至也没有该区域的先前地图数据。本发明的实施方式提供位置即服务(laas),使得不同制造商的自主车辆各自能够访问经由本发明的这些实施方式创建的最最新地图信息。

实施方式生成并且维护高清晰度(hd)地图,该hd地图是准确的并且包括用于安全导航的最新道路状况。例如,hd地图提供自主车辆相对于道路车道的当前位置,其足够精确以允许自主车辆安全地行驶在车道上。

hd地图存储了非常大量的信息,因此在管理信息时面临挑战。例如,大地理区域的hd地图可能不适合车辆的本地存储。本发明的实施方式向自主车辆提供hd地图的必要部分,该部分允许车辆确定其在hd地图中的当前位置,确定道路相对于车辆位置的特征,基于物理约束和法律约束等确定移动车辆是否安全。物理约束的示例包括诸如墙壁的物理障碍,以及法律约束的示例包括合法允许的车道行驶方向、速度限制、让行、停靠。

本发明的实施方式通过以下方面来允许自主车辆的安全导航:提供高时延(例如,对于提供对请求的响应为10毫秒至20毫秒或更短);提供位置方面的高精度(即,10厘米内或更小的精度);通过确保更新地图以反映在合理时间帧内道路的变化来提供数据的新鲜度;以及通过最小化hd地图所需的存储来提供存储效率。

图1示出了根据实施方式的与多个车辆交互的hd地图系统的整体系统环境。hd地图系统100包括与多个车辆150交互的在线hd地图系统110。车辆150可以是自主车辆,但不是必需的。在线hd地图系统110接收由车辆的传感器捕获的传感器数据,并且组合从车辆150接收的数据以生成和维护hd地图。在线hd地图系统110将hd地图数据发送到车辆以用于驾驶车辆。在实施方式中,在线hd地图系统110被实现为分布式计算系统,例如,基于云的服务,其允许诸如车辆计算系统120的客户端对信息和服务进行请求。例如,车辆计算系统120可以请求hd地图数据以用于沿着路线驾驶,以及在线hd地图系统110提供所请求的hd地图数据。

图1和其他附图使用相同的附图标记来标识相同的元素。附图标记之后的字母(例如,“105a,”)表示该文本特指具有该特定附图标记的元素。文本中没有后续字母的附图标记(例如,“105,”)是指图中带有该附图标记的元素中的任何或所有元素(例如,文本中的“105”是指图中的附图标记“105a”和/或“105n”)。

在线hd地图系统110包括车辆接口模块160和hd地图存储器165。在线hd地图系统110使用车辆接口模块160与各种车辆150的车辆计算系统120交互。在线hd地图系统110将各种地理区域的地图信息存储在hd地图存储器165中。在线hd地图系统110可以包括除图1中所示的模块之外的其他模块,例如,如图4所示并在本文中进一步描述的各种其他模块。

在线hd地图系统110接收115由多个车辆150(例如,数百或数千辆汽车)的传感器采集的数据。车辆提供在沿着各种路线驾驶时捕获的传感器数据并且将其发送到在线hd地图系统110。在线hd地图系统110使用从车辆150接收的数据来创建和更新描述车辆150正在行驶的区域的hd地图。在线hd地图系统110基于从车辆150接收的集体信息来构建高清晰度地图,并且将hd地图信息存储在hd地图存储器165中。

在线hd地图系统110根据各个车辆150的要求将hd地图发送125到车辆150。例如,如果自主车辆需要沿着路线驾驶,则自主车辆的车辆计算系统120向在线hd地图系统110提供描述正在行驶的路线的信息。作为响应,在线hd地图系统110提供所需的hd地图以用于沿着路线驾驶。

在实施方式中,在线hd地图系统110以压缩格式将hd地图数据的部分发送到车辆,使得所传输的数据消耗较少的带宽。在线hd地图系统110从各种车辆接收描述存储在车辆的本地hd地图存储器275中的数据的信息。如果在线hd地图系统110确定车辆没有本地存储在本地hd地图存储器275中的hd地图的特定部分,则在线hd地图系统110将hd地图的该部分发送到车辆。如果在线hd地图系统110确定车辆之前确实接收到hd地图的该特定部分,但是由于车辆最近接收到数据而由在线hd地图系统110更新了对应的数据,则在线hd地图系统110发送对存储在车辆上的hd地图的该部分的更新。这允许在线hd地图系统110最小化与车辆通信的数据量,并且还使本地存储在车辆中的hd地图数据定期更新。

车辆150包括车辆传感器105、车辆控制器130和车辆计算系统120。车辆传感器105允许车辆150检测车辆的周围环境以及描述车辆的当前状态的信息,例如,描述车辆的位置和运动参数的信息。车辆传感器105包括一个或更多个摄像装置、光检测和测距(lidar)传感器、全球定位系统(gps)导航系统,惯性测量单元(imu)等。摄像装置捕获车辆周围环境的图像。lidar传感器通过用激光脉冲照射目标并且测量反射脉冲来测量到目标的距离,来测量车辆的周围环境。gps导航系统基于来自卫星的信号来确定车辆的位置。imu是电子设备,其使用加速度计和陀螺仪或其他测量仪器的组合来测量和报告车辆的运动数据,例如,速度、加速度、移动方向、速率、角速率等。

车辆控制器130控制车辆的物理移动,例如,加速度、方向改变、启动、停止等。车辆控制器130包括用于控制加速器、制动器、方向盘等的机械。车辆计算系统120连续地向车辆控制器130提供控制信号,从而使自主车辆沿着选择的路线驾驶。

车辆计算系统120执行各种任务,包括处理由传感器采集的数据以及从在线hd地图系统110接收的地图数据。车辆计算系统120还处理用于发送到在线hd地图系统110的数据。车辆计算系统的细节在图2中示出,并且结合图2进一步描述。

车辆计算系统120与在线hd地图系统110之间的交互通常经由网络(例如,经由因特网)执行。网络实现车辆计算系统120与在线hd地图系统110之间的通信。在一个实施方式中,网络使用标准通信技术和/或协议。通过网络交换的数据可以使用包括超文本标记语言(html)、可扩展标记语言(xml)等的技术和/或格式来表示。另外,可以使用传统加密技术(例如,安全套接字层(ssl)、传输层安全性(tls)、虚拟专用网络(vpn)、因特网协议安全性(ipsec)等)来加密链接中的所有或一些链接。在另一实施方式中,替代上述技术或者除了上述技术之外,实体可以使用定制和/或专用数据通信技术。

图2示出了根据实施方式的车辆计算系统的系统架构。车辆计算系统120包括感知模块210、预测模块215、计划模块220、控制模块225、本地hd地图存储器275、hd地图系统接口280和hd地图应用编程接口(api)205。车辆计算系统120的各种模块处理各种类型的数据,其包括传感器数据230、行为模型235、路线240和物理约束245。在其他实施方式中,车辆计算系统120可以具有更多或更少的模块。被描述为由特定模块实现的功能可以通过其他模块实现。

感知模块210从车辆150的传感器105接收传感器数据230。这包括由汽车的摄像装置、lidar、imu、gps导航系统等采集的数据。感知模块210使用传感器数据来确定车辆周围的对象、车辆行驶的道路的细节等。感知模块210处理传感器数据230以填充存储传感器数据的数据结构并且将该信息提供给预测模块215。

预测模块215使用被感知的对象的行为模型来解释由感知模块提供的数据,以确定对象是否正在移动或可能移动。例如,预测模块215可以确定表示道路标志的对象不太可能移动,而被识别为车辆、人等的对象正在移动或者可能移动。预测模块215使用各种类型的对象的行为模型235来确定这些对象是否可能移动。预测模块215将各种对象的预测提供给计划模块200,以计划车辆接下来需要采取的后续动作。

计划模块220接收来自预测模块215、路线240的描述车辆周围环境的信息,确定车辆目的地的以及车辆到达目的地应该采取的路径。计划模块220使用来自预测模块215的信息和路线240来计划车辆在短时间间隔内(例如,在接下来的几秒内)需要采取的一系列动作。在实施方式中,计划模块220将一系列动作指定为表示车辆接下来要驾驶通过的附近位置的一个或更多个点。计划模块220将包括由车辆采取的一系列动作的计划的细节提供给控制模块225。该计划可以确定车辆的后续动作,例如,车辆是否执行车道变化、转弯、通过提高速度来加速或减速等。

控制模块225基于从计划模块220接收的计划来确定用于发送到车辆的控制器130的控制信号。例如,如果车辆当前在点a处并且计划指定车辆接着应前往附近的点b,则控制模块225确定控制器130的控制信号,该控制信号将使车辆以安全和平顺的方式从a点到达b点,例如,从a点到b点不用采取任何急转弯或锯齿形路径。车辆从a点到b点采取的路径可能取决于车辆的当前速度和方向以及b点相对于a点的位置。例如,如果车辆的当前速度高,则与缓慢驾驶的车辆相比,车辆可以采取更宽的转弯。

控制模块225还接收物理约束245作为输入。这些约束包括特定车辆的物理能力。例如,具有特定品牌和型号的汽车可能能够安全地进行某些类型的车辆移动(例如,加速),以及具有不同品牌和型号的另一汽车可能无法安全地进行转弯。控制模块225在确定控制信号时结合这些物理约束。控制模块225将控制信号发送到车辆控制器130,该控制信号使得车辆执行使车辆按计划的那样移动的指定动作序列。每隔几秒不断重复上述步骤,使得车辆沿着为车辆计划的路线安全地行驶。

包括感知模块210、预测模块215和计划模块220的车辆计算系统120的各种模块接收地图信息以执行其各自的计算。车辆100将hd地图数据存储在本地hd地图存储器275中。车辆计算系统120的模块使用提供一组应用编程接口(api)的hd地图api205与地图数据交互,应用编程接口(api)可以由模块调用以用于访问地图信息。hd地图系统接口280允许车辆计算系统120经由网络(图中未示出)与在线hd地图系统110交互。本地hd地图存储器275以由hd地图系统110指定的格式存储地图数据。hd地图api205能够处理由hd地图系统110提供的地图数据格式。hd地图api205给车辆计算系统120提供用于与hd地图数据交互的接口。hd地图api205包括具有定位api250、地标地图api255、路线api265、3d地图api270、地图更新api285等的若干个api。

定位api250确定车辆的当前位置,例如,当车辆启动时以及当车辆沿着路线移动时。定位api250包括定位api,其确定车辆在hd地图内的精确位置。车辆计算系统120可以将该位置用作进行其他查询(例如,本文进一步描述的特征查询、可导航空间查询和占用地图查询)精确相对定位。定位api接收包括由gps提供的位置、由imu提供的车辆运动数据、lidar扫描仪数据和摄像装置图像中的一个或更多个的输入。定位api返回车辆的精确位置作为纬度坐标和经度坐标。与用作输入的gps坐标相比,定位api返回的坐标更精确,例如,定位api的输出可能具有5cm至10cm的精度范围。在一个实施方式中,车辆计算系统120调用定位api以基于lidar使用扫描仪数据(例如,以10hz的频率)周期性地确定车辆的位置。如果gps/imu数据以更高的速率(例如,60hz)可用,则车辆计算系统120可以调用定位api以在该速率下确定车辆位置。车辆计算系统120存储位置历史记录作为内部状态以提高后续定位呼叫的准确性。位置历史记录存储从汽车关闭/停止时的时间点的位置历史。定位api250包括基于hd地图生成指定车道的精确路线的定位路线api。定位路线api经由第三方地图将从源到目的地的路线作为输入,并且基于hd地图沿着输入路线生成表示为可导航车道的连接图的高精度路线。

地标地图api255提供车辆周围世界的几何和语义描述,例如,车辆当前行驶的车道的各个部分的描述。地标地图api255包括允许基于地标地图的查询的api,例如,获取车道api和获取特征api。获取车道api提供相对于车辆和获取特征api的车道信息。获取车道api接收位置(例如,使用车辆的纬度和经度指定的车辆的位置)作为输入,并且返回相对于输入位置的车道信息。获取车道api可以指定距离参数,该距离参数表示相对于检索到车道信息的输入位置的距离。获取特征api接收表示一个或更多个车道元素的信息,并且返回相对于指定车道元素的地标特征。对于每个地标,地标特征包括特定于地标类型的空间描述。

3d地图api265提供对存储在本地hd地图存储器275中的道路和道路周围的各种物理对象的空间三维(3d)表示的有效访问。3d地图api365包括获取可导航表面api和获取占用网格api。获取可导航表面api接收一个或更多个车道元素的标识符作为输入,并且返回指定的车道元素的可导航边界。获取占用网格api接收位置(例如,车辆的纬度和经度)作为输入,并且返回描述该位置附近的hd地图中道路表面以及可用的所有对象的占用的信息。描述占用的信息包括考虑在地图中占用的所有位置的分层体积网格。占用网格包括在可导航区域附近(例如,在路边和凸起处)的高分辨率的信息以及在较不重要的区域中(例如,路边以外的树木和墙壁)的相对低的分辨率的信息。获取占用网格api对于检测障碍物以及根据需要改变方向是有用的。

3d地图api还包括地图更新api,例如,下载地图更新api和上传地图更新api。下载地图更新api接收计划路线标识符作为输入,并且下载与所有计划路线相关的数据或针对特定计划路线的地图更新。上传地图更新api将由车辆计算系统120采集的数据上传到在线hd地图系统110。这允许在线hd地图系统110基于由沿着各种路线行驶的车辆的传感器观察到的地图数据的变化来使存储在在线hd地图系统110中的hd地图数据保持最新。

当车辆沿着路线行驶时,路线api270返回包括源与目的地之间的完整路线和路线的部分的路线信息。3d地图api365允许查询hd地图。路线api270包括添加计划路线api和获得计划路线api。添加计划路线api向在线hd地图系统110提供描述计划路线的信息,使得描述相关hd地图的信息可以由车辆计算系统120下载并且保持最新。添加计划路线api接收使用以纬度和经度表示的折线指定的路线以及指定在其之后可以删除路线数据的时间段的生存时间(ttl)参数作为输入。因此,添加计划路线api允许车辆指定车辆计划在不久的将来用作为自主行程的路线。添加计划路线api将路线与hd地图对准,记录该路线及其ttl值,并且确保存储在车辆计算系统120中的路线的hd地图数据是最新的。获得计划路线api返回计划路线列表,并且提供描述由路线标识符标识的路线的信息。

地图更新api285管理与用于本地hd地图存储器275和用于存储在在线hd地图系统110中的hd地图存储器165两者的地图数据的更新有关的操作。因此,车辆计算系统120中的模块调用地图更新api285以用于将数据从在线hd地图系统110下载到车辆计算系统120,以根据需要存储在本地hd地图存储器275中。地图更新api285还允许车辆计算系统120确定由车辆传感器105监测的信息是否指示由在线hd地图系统110提供的地图信息的差异,并且将数据上传到在线hd地图系统110,这可以导致在线hd地图系统110更新存储在hd地图存储器165中的提供给其他车辆150的地图数据。

图3示出了根据实施方式的车辆计算系统的hd地图api中的各种指令层。不同的车辆制造商具有不同指令以用于从车辆传感器105接收信息和用于控制车辆控制器130。此外,不同的供应商提供具有自主驾驶能力的不同计算平台,例如,对车辆传感器数据的采集和分析。用于自主车辆的计算平台的示例包括供应商例如英伟达(nvidia)、高通(qualcomm)和英特尔(intel)提供的平台。这些平台提供自主车辆制造商在自主车辆的制造中使用的功能。车辆制造商可以将任何一个或若干个计算平台用于自主车辆。在线hd地图系统110基于特定于车辆制造商的指令和特定于车辆供应商的特定平台的指令提供用于处理hd地图的库。该库提供对hd地图数据的访问,并且允许车辆与在线hd地图系统110交互。

如图3所示,在实施方式中,hd地图api被实现为包括车辆制造商适配器310、计算平台适配器320和公共hd地图api层330的库。公共hd地图api层330包括可以在多个车辆计算平台和车辆制造商中使用的通用指令。计算平台适配器320包括特定于每个计算机平台的指令。例如,公共hd地图api层330可以调用计算平台适配器320以从特定计算平台支持的传感器接收数据。车辆制造商适配器310包括特定于车辆制造商的指令。例如,公共hd地图api层330可以调用由车辆制造商适配器310提供的功能,以将特定控制指令发送到车辆控制器130。

在线hd地图系统110存储用于多个计算平台的计算平台适配器320和用于多个车辆制造商的车辆制造商适配器310。在线hd地图系统110确定用于特定自主车辆的特定车辆制造商和特定计算平台。在线hd地图系统110选择该特定车辆的用于特定车辆制造商的车辆制造商适配器310以及用于特定计算平台的计算平台适配器320。在线hd地图系统110将所选择的车辆制造商适配器310和所选择的计算平台适配器320的指令发送到该特定自主车辆的车辆计算系统120。该特定自主车辆的车辆计算系统120安装所接收的车辆制造商适配器310和计算平台适配器320。车辆计算系统120周期性地检查在线hd地图系统110是否具有对所安装的车辆制造商适配器310以及计算平台适配器320的更新。如果与安装在车辆上的版本相比可获得较新的更新,则车辆计算系统120请求并且接收最新更新并且安装该更新。

hd地图系统架构

图4示出了根据实施方式的hd地图系统110的系统架构。在线hd地图系统110包括地图创建模块410、地图更新模块420、地图数据编码模块430、负载平衡模块440、地图精度管理模块,车辆接口模块和hd地图存储器165。在线hd地图系统110的其他实施方式可以包括比图4中所示更多或更少的模块。指示为由特定模块执行的功能可以由其他模块实现。在实施方式中,在线hd地图系统110可以是包括多个处理器的分布式系统。

地图创建模块410根据从沿着各种路线驾驶的若干车辆采集的地图数据来创建地图。地图更新模块420通过从最近沿着地图信息改变的路线行驶的车辆接收较新的信息来更新先前计算的地图数据。例如,如果由于区域施工某些道路标志已经改变或者车道信息已经改变,则地图更新模块420相应地更新地图。地图数据编码模块430对地图数据进行编码以便能够有效地存储数据以及将所需的地图数据高效地发送到车辆150。负载平衡模块440平衡车辆上的负载以确保从车辆接收数据的请求均匀地分布在不同的车辆上。即使从个体车辆接收的信息可能不具有高精确性的情况下,地图精度管理模块450使用各种技术维持地图数据的高准确性。

图5示出了根据实施方式的hd地图510的组件。hd地图510包括若干地理区域的地图。地理区域的hd地图510包括地标地图(lmap)520和占用地图(omap)530。地标地图520包括描述车道的信息,其包括车道的空间位置和关于每个车道的语义信息。车道的空间位置包括高精度(例如,在或低于10cm精度)的纬度、经度和高度的几何位置。车道的语义信息包括诸如车道(例如,直行车道、左转车道、右转车道、出口车道等)方向、速度、类型的限制、交叉口向左转的限制、与其他车道的连通性等等。地标地图520可以进一步包括描述停靠线、让行线、过道的空间位置、安全可导航空间、减速带的空间位置、路障和道路标志(包括与驾驶限制相关的所有标志的空间位置和类型)的信息。在hd地图510中描述的道路标志的示例包括停靠标志、交通灯、速度限制、单向、不能进入、让行(车辆、行人、动物)等。

占用地图530包括道路以及道路周围的所有物理对象的空间三维(3d)表示。存储在占用地图530中的数据在此也称为占用网格数据。3d表示可以与指示对象存在于该位置的可能性的置信度得分相关联。占用地图530可以以多种其他方式表示。在一个实施方式中,占用地图530表示为覆盖表面的3d网格几何形状(三角形的集合)。在另一实施方式中,占用地图530表示为覆盖表面的3d点的集合。在另一实施方式中,占用地图530使用5cm至10cm分辨率的3d体积单元网格来表示。每个单元指示在该单元处是否存在表面,并且如果该表面存在,则指示该表面所指向的方向。

与地标地图520相比,占用地图530可以占用大量存储空间。例如,占用地图530可以使用1gb/英里的数据,从而产生占用4x1015字节或4千兆字节的美国(包括400万英里的道路)地图。因此,在线hd地图系统110和车辆计算系统120使用数据压缩技术来存储和传输地图数据,从而降低存储和传输成本。因此,本文公开的技术使自主车辆的自动驾驶成为可能。

在一个实施方式中,hd地图510不需要或依赖于通常包括在地图中的数据,例如,地址、道路名称、地理编码地址的能力以及计算地名或地址之间的路线的能力。车辆计算系统120或在线hd地图系统110访问其他地图系统,例如谷歌地图以获得该信息。因此,车辆计算系统120或在线hd地图系统110从诸如谷歌地图的工具接收关于路线的导航指令并且基于hd地图信息将信息转换为路线。

hd地图中的地理区域

在线hd地图系统110将大的物理区域划分为地理区域并且存储每个地理区域的表示。每个地理区域表示由几何形状(例如,矩形或正方形)界定的连续区域。在实施方式中,在线hd地图系统110与存储每个地理区域的表示所需的数据量无关地将物理区域划分为相同尺寸的地理区域。在另一实施方式中,在线hd地图系统110将物理区域划分为不同尺寸的地理区域,其中每个地理区域的尺寸是基于表示地理区域所需的信息量来确定的。例如,与表示具有少量街道的人口稀少区域的地理区域相比,表示具有大量街道的人口稠密区域的地理区域表示较小的物理区域。因此,在该实施方式中,在线hd地图系统110基于存储与hd地图相关的物理区域的各种元素所需的信息量的估计来确定地理区域的尺寸。

在实施方式中,在线hd地图系统110使用包括各种属性的数据记录或对象表示地理区域,各种属性包括地理区域的唯一标识符、地理区域的唯一名称、地理区域的边界的描述(例如,使用纬度和经度坐标的边界框)以及地标特征和占用网格数据的集合。

图6a至图6b示出了根据实施方式的在hd地图中限定的地理区域。图6a示出了方形地理区域610a。图6b示出了两个相邻的地理区域610a和610b。在线hd地图系统110以地理区域的表示存储数据,当车辆跨地理区域边界驾驶时,允许从一个地理区域平滑地过渡到另一个地理区域。

根据实施方式,如图6a和6b所示,每个地理区域具有围绕其的预定宽度的缓冲区。缓冲区包括围绕地理区域的所有四个边的冗余地图数据(在地理区域由矩形界定的情况下)。图6a示出了地理区域610a周围50米的缓冲区的边界620和地理区域610a周围100米的缓冲区的边界630。当车辆越过该缓冲区内的阈值距离时,车辆计算系统120将车辆的当前地理区域从一个地理区域切换到相邻的地理区域。例如,如图6b所示,车辆在地理区域610a中的位置650a处开始。车辆沿着路线驾驶以到达位置650b,在位置650b处车辆穿过地理区域610a的边界但是仍在缓冲区的边界620内。因此,车辆计算系统120继续使用地理区域610a作为车辆的当前地理区域。一旦车辆在位置650c处越过缓冲区的边界620,那么车辆计算系统120就将车辆的当前地理区域从地理区域610a切换到地理区域610b。缓冲区的使用阻止了车辆由于车辆沿着紧密跟踪地理区域的边界的路线行驶引起的当前地理区域的快速切换。

hd地图中的车道表示

hd地图系统100表示hd地图中的街道的车道信息。尽管这里描述的实施方式涉及街道,但是该技术适用于高速公路、小巷、大道、林荫大道或车辆可以行驶的任何其他路径。hd地图系统100使用车道作为参考系,用于路线选择和车辆的定位。由hd地图系统100表示的车道包括:明确标记的车道(例如,白色和黄色条纹车道),隐式的车道(例如,在没有线路或路障但是具有两个行驶方向的乡村道路上)以及作为车道的隐式路径(例如,车在从另一车道进入车道时转弯所做的路径)。hd地图系统100还存储关于车道的信息,例如,诸如相对于车道的道路标志和交通灯、用于障碍物检测的相对于车道的占用网格以及相对于车道的可导航空间的地标特征,因此车辆可以在车辆必须突然离开车道时的紧急情况下,有效地计划/反应。因此,hd地图系统100存储车道的网络表示,以允许车辆计划源和目的地之间的合法路径,并且添加用于实时感测和控制车辆的参考系。hd地图系统100存储信息并且提供api,其允许车辆确定车辆当前所在的车道、相对于车道几何形状的精确车辆位置以及相对于车道和相邻且连接的车道的所有相关特征/数据。

图7示出了根据实施方式的hd地图中的车道表示。图7示出了交通路口处的车辆710。hd地图系统为车辆提供对与车辆的自主驾驶相关的地图数据的访问。这包括例如与车道相关联的但可能不是与车辆最接近的特征的特征720a和720b。因此,hd地图系统100存储表示车道与特征的关系的以车道为中心的数据表示,使得车辆可以有效地提取给定车道的特征。

hd地图系统100将车道的部分表示为车道元素。车道元素指定车道的边界和各种约束,其包括车辆可以在车道元素内行驶的合法方向、车辆可在车道元素内驾驶的速度、车道元素是否仅用于左转弯或右转弯等。hd地图系统100将车道元素表示为单个车辆车道的连续几何部分。hd地图系统100存储包括以下的表示车道元素的对象或数据结构:表示车道的几何边界的信息;沿着车道的驾驶方向;在车道中驾驶的车辆限制(例如,速度限制、与包括进出车道的连接车道的关系);终止限制(例如,车道是否在停靠线结束、让行标志或减速带);以及与自主驾驶相关的道路特征的关系(例如,交通灯位置、道路标志位置等)。

由hd地图系统100表示的车道元素的示例包括高速公路上的右车道、道路上的车道、左转车道、从左转车道到另一车道的转弯、驶入坡道的的合并车道、驶出坡道的出口车道和行车道。hd地图系统100使用两个车道元素表示一个车道道路,每个方向一个车道元素。hd地图系统100类似于一个车道道路表示共享的中间转弯车道。

图8a至图8b示出了根据实施方式的hd地图中的车道元素和车道元素之间的关系。图8a示出了道路中的t汇合的示例,其示出了经由转弯车道810b连接到车道元素810c并且经由转弯车道810d连接到车道810e的车道元素810a。图8b示出了道路中的y汇合的示例,其示出了直接连接到车道810h并且经由车道810g连接到车道810i的标签810f。hd地图系统100确定从源位置到目的地位置的路线,作为可以被遍历以从源位置到达目的地位置的一系列连接的车道元素。

点云丰富

图9是示出根据实施方式的用于丰富从lidar扫描获得的点云的处理900的流程图。在一个实施方式中,处理900由车辆计算系统120的感知模块210执行。在其他实施方式中,处理900中的一些步骤或所有步骤可以通过车辆计算系统120的不同模块或通过hd地图系统中的不同设备来执行。此外,在各种其他实施方式中,处理900可以包括附加的、更少的或不同的步骤,以及图9中所示的步骤可以以不同的顺序执行。

该处理当车辆计算系统120从lidar扫描获得910点云时开始。如上所述,车辆传感器105包括光检测和测距(lidar)传感器,其通过测量到目标的距离来测量车辆150的周围环境。lidar传感器通过用激光脉冲照射车辆周围的目标并且测量所反射的脉冲来测量到目标的距离。在一些实施方式中,lidar传感器包括激光器和旋转镜,并且lidar传感器通过操作旋转镜来执行扫描,以使激光脉冲从不同的俯仰角和偏转角发射。

在一个实施方式中,lidar传感器通过沿多条扫描线在不同位置处收集多个扫描点来执行扫描。通过以相同的俯仰角发射多个激光脉冲来捕获每条扫描线。为了沿扫描线收集扫描点,lidar传感器沿扫描线水平旋转镜(即,改变偏转角而不改变俯仰角),并且在镜旋转时以规则的间隔发射和测量激光脉冲。在沿一条扫描线收集扫描点之后,lidar传感器以相同的方式沿另一条扫描线收集扫描点。在一个实施方式中,lidar传感器沿每条扫描线以每0.2度偏转收集扫描点,并且扫描线彼此间隔1俯仰度。在其他实施方式中,lidar传感器可以被配置成以不同的俯仰和/或偏转间隔收集扫描点。

在lidar扫描期间收集的数据在本文中称为扫描仪数据。扫描仪数据包括在lidar扫描期间收集的多个扫描点。可以将扫描点组织成其各自的扫描线,并且可以为每条扫描线中的扫描点分配表示沿着扫描线的扫描点的位置(即,偏转角)的索引值。每个扫描点指定lidar传感器在测量被发射以收集扫描点的激光脉冲时检测到的距离。每个扫描点指定的距离表示到由对应的激光脉冲成像的表面的范围。如果针对激光脉冲没有检测到表面(例如,如果激光脉冲没有撞击lidar传感器可检测的表面),则可以为对应的扫描点存储空值。

如本文所提到的,点云是三维空间中的一组点,其表示扫描仪数据中的扫描点的位置。点云中的3d点可以通过将由lidar传感器收集的范围值和相关的俯仰角和偏转角转换到三维坐标系(例如,笛卡尔坐标、圆柱坐标或球坐标)中来生成。

在一个实施方式中,点云包括扫描仪数据中的每个扫描点。在另一个实施方式中,车辆计算系统120可以通过对扫描仪数据进行子采样来生成点云。例如,车辆计算系统120可以沿着每条扫描线执行子采样(例如,沿着每条扫描线对每第四或第五扫描点进行采样并且丢弃剩余的扫描点)。以这种方式沿扫描线的子采样可能是有利的,因为由一些lidar传感器收集的扫描仪数据包括沿扫描线相对靠近在一起的扫描点(例如,两个相邻扫描点之间的偏转角的差值为0.2度),但是扫描线间隔相对较远(例如,两个相邻扫描线之间的俯仰角的差值为1.0度)。沿着扫描线的子采样产生点云,在该点云中扫描点沿着俯仰角和偏转角两者具有大致相同的角间距,这可以提高在三角剖分步骤920期间生成的三角形的质量。

在执行lidar扫描的同时,车辆上的摄像装置(车辆传感器105中的另一个)可以捕获车辆附近区域的图像。例如,车辆传感器105包括捕获车辆前方区域的前置摄像装置。因此,摄像装置的视场至少部分地与lidar传感器的视场交叠。如下面进一步详细所述,稍后可以使用图像对内插步骤940中生成的点应用颜色。

车辆计算系统120基于点云中的3d点来执行920三角剖分以生成一组3d三角形。在一个实施方式中,车辆计算系统120通过三角剖分处理执行920三角剖分,在三角剖分处理中系统120将点云中的3d点投影到二维平面上,执行二维分簇算法,然后将所得到的三角形投影回三维空间。该处理的示例在图10a至图10d示出。

首先参考图10a,示出了点云的示例。点云包括多个3d点1005,其被布置在其各自的扫描线1010中。图10a中示出的3d点1005表示由车载lidar传感器1015捕获的扫描仪数据(为了清楚起见,车辆本身未在图10a中示出)。在图10a所示的示例中,车辆在道路表面1020上向前行驶。矩形对象1025表示道路表面上的对象,例如,在车辆的前方和左侧驾驶的厢式货车。大多数3d点1005在道路表面1020上,但是两个3d点1005a、1005b在矩形对象1025上。

为了便于说明,图10a仅示出了车辆前方的3d点1005。在一些实现方式中,lidar传感器执行车辆周围的包含360度视图的扫描,以及点云还包括车辆的其他侧面(例如,车辆的侧面和后面)上的3d点。此外,为了便于说明,图10a仅示出了相对少量的3d点1005。在一些实现方式中,点云包括比图10a所示的示例中示出的多得多的3d点1005。例如,点云可以包括数万个或数十万个3d点。

通过将点云中的3d点投影到二维平面上以生成多个二维点开始三角剖分处理。在车辆包括摄像装置的实施方式中,3d点可以投影到与摄像装置1030的图像传感器平行的2d平面上。例如,在图10a中,2d点1005可以投影到平面1035上,平面1035平行于安装在车辆上的摄像装置1030的传感器。替选地,3d点可以投影到不同的平面上,例如,平行于道路表面1020的平面。

接下来参考图10b,其示出了通过将图10a中所示的3d点1010投影到2d平面1035而生成的2d点1040的示例。如上所述,点云可以包括图10a中未示出的附加点(例如,在车辆的侧面或后面)。类似地,投影可以产生图10b中未示出的附加的2d点(例如,与车辆侧面或后面的3d点对应)。

在平面与摄像装置的传感器平行的实施方式中,车辆计算系统120可以识别平面的区域,该区域与由摄像装置捕获的图像描绘的图像区域对应。然后,系统120可以丢弃投影到图像区域外的平面上的位置的任何2d点。例如,由图10b中的矩形1035表示的区域与由摄像装置1030捕获的图像区域对应,并且在投影产生附加的2d点的实施方式中,可以丢弃超出矩形1035的2d点。丢弃图像区域之外的点可能是有利的,因为可以使用更少的计算资源来执行三角剖分处理的剩余步骤和用于丰富点云的更广泛的处理900。此外,对于一些应用,摄像装置视野外的点不用于后面的分析(例如,基于来自摄像装置的图像数据来对点应用着色),因此丢弃这些点不会导致功能上的任何实质性损失。

在将3d点投影到平面上以生成对应的2d点之后,三角剖分处理对2d点执行三角剖分算法以生成一组2d三角形。继续先前的示例,图10c示出了通过对图10b中所示的2d点1040执行三角剖分而生成的一组2d三角形1045。如本文所提到的,三角剖分是用于生成一组二维三角形的处理,该组二维三角形的顶点由给定的一组二维点限定。在一个实施方式中,车辆计算系统120对2d点执行狄洛尼三角剖分,其以最大化三角形中所有角度的最小角度的方式生成一组2d三角形。在其他实施方式中,可以使用不同类型的三角剖分算法。

三角剖分处理通过将2d三角形映射回三维空间来生成一组三维三角形。每个3d三角形与2d三角形中的一个对应。更具体地,每个3d三角形的顶点由3d点限定,该3d点对应的2d点形成对应的2d三角形的顶点。

图10d示出了一组3d三角形1050的示例。在图10d所示的示例中,每个3d三角形1050与图10c中所示的2d三角形1045中的一个对应。例如,3d三角形1050a与图10c中的2d三角形1045a对应,因为当投影到平面1035上时,3d三角形1050a的顶点形成2d三角形1045a的顶点。

在一些实施方式中,多个摄像装置安装在车辆130上。在这种情况下,车辆计算系统130可以执行多个单独的投影以生成多组2d点。例如,车辆计算系统130识别多个平面,其中每个平面与摄像装置中的一个的图像传感器平行,然后将点云中的3d点投影到每个平面上。然后,车辆计算系统130可以对每组2d点分别执行三角剖分以生成多组2d三角形,然后通过将每组2d三角形映射回三维空间并且获取所得的每组3d三角形的并集来生成统一的一组3d三角形。然后,可以在统一的一组3d三角形上执行该处理的剩余步骤930、940。

返回参考图9,车辆计算系统120对该组3d三角形进行过滤930以识别其顶点接近lidar传感器周围的地面的3d三角形的子集。如果顶点距离地表面小于阈值距离,则认为顶点接近地面。阈值距离可以是例如10cm、20cm、50cm或一些其他距离。例如,在图10d所示的示例中,大多数3d三角形1050的所有三个顶点在地面上。然而,三个三角形1050b、1050c和1050d都具有位于矩形对象1025的表面上的至少一个顶点。因此,过滤步骤930移除这三个三角形1050b、1050c和1050d,同时在图10d中所示的剩余的3d三角形被识别为3d三角形子集的一部分。图11示出了在对图10d中所示的3d三角形1050执行过滤步骤930之后的结果。下面参照图12详细描述用于过滤930该组3d三角形的示例处理1200。

在对该组3d三角形进行过滤930之后,车辆计算系统120使用3d三角形的子集生成940内插3d点。在一个实施方式中,车辆计算系统120通过随机选择子集中的3d三角形中的一个然后使用内插公式将3d点放置在由3d三角形限定的平面上并且在3d三角形的边界内的随机位置处来生成940每个内插点。

当随机选择3d三角形中的一个时,车辆计算系统130可以根据各3d三角形的面积对3d三角形进行加权。换句话说,随机选择任何给定3d三角形的机率是该3d三角形的面积与所有3d三角形的总面积之间的比率。根据每个3d三角形的面积对其进行加权导致生成的内插3d点在三维空间中均匀分布。替选地,车辆计算系统130可以根据每个3d三角形对应的2d三角形的区域对其进行加权,这意味着随机选择任何给定的3d三角形的概率是对应的2d三角形的面积与所有2d三角形的总面积之间的比率。根据其对应的2d三角形的面积对每个2d三角形进行加权导致生成的内插点在摄像装置的视图中均匀分布,这可以在基于摄像装置图像来选择内插点的颜色时允许更高的准确性(下面进一步详细描述)。

在生成内插3d点之后,车辆计算系统120可以使用由摄像装置捕获的图像为一个或更多个内插3d点选择颜色。更具体地,车辆计算系统120选择与内插3d点对应的位置处的图像中的一个或更多个像素的颜色匹配的颜色。

在一个实施方式中,车辆计算系统120通过识别图像中描绘内插3d点的位置来选择颜色。例如,车辆计算系统120将内插3d点投影到平面上以获得2d点,然后识别图像中与2d点对应的位置。如果平面与摄像装置传感器平行,例如,在图10a至图10d中所示的示例中,那么平面上的2d点的坐标可以用于识别图像中的对应位置。

在识别图像中的对应位置之后,车辆计算系统130选择图像中该位置处的像素,并且将该像素的颜色应用于内插3d点。替选地,车辆计算系统可以选择图像中的该位置处的多个像素(例如,2×2像素、3×3像素或4×4像素的块),计算这些像素中的颜色的平均值或加权平均值,并且将平均的颜色应用于内插3d点。

在以这种方式对内插3d点着色之后,彩色的3d点可以用于识别车辆前方的道路表面上的各种标记。例如,彩色3d点可以用于识别车道标记、人行横道或停车位边界。然后,所识别的标记可以作为现有的hd地图的一部分存储在在线hd地图系统110上,或者用于生成新的hd地图,然后所得到的hd地图可以用于一个或更多个车辆150的驾驶。附加地或替选地,所识别的标记也可以由车辆150实时用于导航和转向目的,例如,将车辆保持在同一车道、切换到相邻的车道、在人行横道之前停车或进入停车位。

在一些实施方式中,生成940大量的内插3d点,其可以使用大量的计算能力并且占据大量存储空间。在这些实施方式中,生成步骤940可以由在线hd地图系统110执行,而不是在车辆计算系统120上本地执行(其可以实现为具有相对受限的计算能力和数据存储的移动计算系统)。例如,车辆计算系统120将3d三角形的子集发送到在线hd地图系统110,并且车辆计算系统120生成940内插3d点(例如,作为用于创建占用地图530的处理的一部分)。

类似地,也可以由在线hd地图系统110执行将颜色应用于每个内插3d点(其也可以使用大量的计算能力)的处理。在这种情况下,车辆计算系统120还可以发送子集中每个3d三角形的顶点的估计图像坐标(其可以例如基于与这些顶点对应的2d点来计算),这允许在线hd地图系统110更快速地识别图像中描绘每个内插3d点的位置。

图12是示出根据一个实施方式的用于对3d三角形进行过滤以识别其顶点接近地面的3d三角形的子集的处理1200的流程图。在其他实施方式中,处理1200可以包括附加的、更少的或不同的步骤,以及可以以不同的顺序执行图12中所示的步骤。

车辆计算系统120包括用于3d三角形的一个或更多个预定义过滤标准,并且移除1210不满足一个或更多个过滤标准的任何3d三角形。例如,当3d三角形的高度低于阈值高度时,可以满足过滤标准中的一个,这指示3d三角形相对接近地面。例如,可以将3d三角形的高度限定为3d三角形的质心的z坐标。作为第二示例,当3d三角形的法向矢量(即,由3d三角形的顶点限定的平面的法向矢量)与垂直方向的差异小于阈值角度时,可以满足过滤标准中的一个,这指示3d三角形与地面相对平行。

过滤标准的其他示例可以涉及移除细长三角形,其具有彼此靠近地隔开的两个顶点和相对远离其他两个顶点的第三顶点。例如,当3d三角形具有短于阈值长度的最长边时,可以满足过滤标准中的一个,以及当3d三角形具有小于阈值面积的面积时,可以满足过滤标准中的另一个。也可以基于3d三角形的对应2d三角形来限定类似的过滤标准。例如,当3d三角形具有最长边短于阈值长度的对应2d三角形时,可以满足另一个过滤标准,以及当3d三角形具有面积小于阈值面积的对应2d三角形时,可以满足又一个过滤标准。这些过滤规则具有移除表示相对大的区域(例如,跨越2米以上)的3d三角形的效果。例如,移除这样的三角形可能是有利的,因为这样的三角形不包含关于可能在该区域内的任何对象的任何数据,这意味着即使3d三角形的顶点都在平坦的表面上,但是3d三角形内的区域的一部分也可能不是平坦的。

在应用过滤标准之后,车辆计算系统1220可以将平面另外拟合1220到剩余的3d三角形的顶点。在一个实施方式中,车辆计算系统1220执行回归(例如,ransac回归)以识别剩余的3d三角形的顶点的最佳拟合的平面。假定该平面表示道路表面。在识别平面之后,车辆计算系统1220移除1230具有距离平面大于阈值距离的顶点的任何3d三角形。然后假设仍然保留的3d三角形在地面上平坦,并且这些3d三角形用于生成940内插3d点。

基于扫描仪数据的垂直结构的检测

图13是示出根据实施方式的用于基于扫描仪数据检测垂直结构的处理1300的流程图。在一个实施方式中,处理1300由车辆计算系统120的感知模块210执行。在其他实施方式中,处理1300中的一些或所有步骤可以由车辆计算系统120的不同模块或由hd地图系统中的不同设备执行。此外,在各种其他实施方式中,处理1300可以包括附加的、更少的或不同的步骤,以及可以以不同的顺序执行图13所示的步骤。图14a至图14d示出了图13中所示的处理1300的各个阶段的示例。为了便于描述,以下将结合图14a至图14d中所示的示例来描述图13中所示的处理1300。

处理1300在当车辆计算系统120接收1310由lidar传感器收集的扫描仪数据时开始。扫描仪数据包括多条扫描线,以及每条扫描线包括多个扫描点。每个扫描点指定由lidar传感器在沿着扫描线的位置(例如,偏转角)成像的表面的范围。以上关于图9的步骤910提供了对lidar传感器如何以不同的俯仰角和偏转角发射激光脉冲以收集扫描仪数据的更详细地描述。

扫描仪数据的示例在图14a中示出。如上所述,图14a中所示的扫描仪数据包括多条扫描线1405和多个扫描点1410。为了便于说明,图14a示出了相对少量的扫描线1405和扫描点1410。在其他实现方式中,扫描仪数据可以包括多得多的扫描线和扫描点(例如,数亿个扫描点)。图14a中所示的示例描绘了当车辆在道路上向前驾驶时可以从安装在车辆上的lidar传感器接收的扫描仪数据。例如,梯形区域1415表示车辆前方的道路表面的透视图,以及圆柱形对象1420和矩形对象1425分别表示沿着道路侧的垂直结构,例如,电线杆和邮箱的一部分。

在接收1310扫描仪数据之后,车辆计算系统120可以可选地预处理每条扫描线以移除可能表示噪声的扫描点。在一个实施方式中,通过将每条扫描线分成多个线段来执行预处理。每个线段包括具有类似范围的多个相邻扫描点(例如,彼此不偏离超过阈值距离或百分比的范围)。在以这种方式将扫描线分成线段之后,车辆计算系统120移除短于阈值长度的线段。阈值长度可以被限定为线段中的扫描点的数目(例如,包括少于三个扫描点的线段被移除)或者由线段中的扫描点表示的真实世界长度(例如,表示真实世界长度小于10厘米的线段被移除)。

车辆计算系统120基于扫描仪数据中的扫描点生成1320垂直元素。继续先前的示例,图14b示出了基于图14a中所示的扫描点1410生成1320的垂直元素1430。如这里所提到的,垂直元素是扫描仪数据中的一对扫描点。更具体地,沿着相邻扫描线在相同位置(即,相同的偏转角度)捕获垂直元素中的一对扫描点。垂直元素1430还可以用于限定该对扫描点之间的线段,并且如下面进一步详细描述的,可以在过滤步骤1330期间使用线段来移除某些垂直元素。

车辆计算系统120对垂直元素进行过滤1330以识别表示垂直结构的部分的垂直元素的子集。车辆计算系统120可以识别表示lidar扫描仪的检测范围(即,lidar扫描仪能够检测的最大距离)内的任何垂直结构的一部分的垂直元素。例如,车辆计算系统120可以识别表示车辆附近的垂直结构的垂直元素,例如,道路一侧的电线杆和邮箱,以及系统120还可以识别表示离车辆更远的垂直结构的垂直元素,例如,离车辆一个街区远的大型建筑物。

过滤步骤1330移除偏离垂直方向太多的任何垂直元素。在一个实施方式中,车辆计算系统通过针对每个垂直元素计算由垂直元素形成的线段与垂直方向之间的角度来移除这样的垂直元素。如果垂直元素的角度超过阈值角度(例如,5度),则假定垂直元素偏离垂直方向太多并且被移除。相反,如果垂直元素的角度不超过阈值角度,则垂直元素被包括作为垂直元素的子集的一部分。

图14c示出了在对图14b中所示的垂直元素1430执行过滤步骤1330之后保留的垂直元素的子集的示例。如图14c所示,与道路表面对应的垂直元素被移除,而与圆柱形对象1420对应的垂直元素1440a和与矩形对象1425对应的垂直元素1440b是被保留的垂直元素的子集的一部分。

车辆计算系统120对垂直元素的子集进行分簇1340以生成表示每个垂直结构的垂直簇。在一些实施方式中,车辆计算系统120基于两个分簇标准确定是否将两个相邻的垂直元素连接到同一簇中。首先,车辆计算系统120计算两个垂直元素中的每一个的总范围值(例如,通过计算由两个扫描点中的每一个指定的范围的平均值)、计算两个总范围值之间的差值以及将此差值与阈值差值进行比较。如果差值小于阈值,则两个垂直元素与lidar传感器的距离大致相同,并且满足第一分簇标准。其次,车辆计算系统120计算由两个垂直元素限定的线段之间的角度,并且将该角度与阈值角度进行比较。如果该角度小于阈值,则两个垂直元素大致彼此平行,并且满足第二分簇标准。在一个实施方式中,如果满足两个标准,则车辆计算系统120连接两个相邻的垂直元素。在另一个实施方式中,如果满足任一标准,则车辆计算系统120连接两个相邻的垂直元素。在又一个实施方式中,车辆计算系统120仅使用两个标准中的一个,或者使用标准的一些其他组合来确定是否连接两个相邻的垂直元素。

为了对垂直元素的子集进行分簇1340,车辆计算系统120针对子集中的每对相邻垂直元素评估分簇标准,并且基于分簇标准确定是否连接每对垂直元素。在图14d中示出了从图14c中所示的垂直元素1440的子集生成的簇的示例。在图14d中,车辆计算系统120已经将圆柱形对象1420的表面上的垂直元素1440a分簇成第一簇1445a,并且将矩形对象1425的表面上的垂直元素1440b分簇成第二簇1445b。

在对垂直元素的子集进行分簇1340之后,车辆计算系统120可以可选地移除小的簇(例如,包含比垂直元素的阈值数量更少的垂直元素的簇)。这在一些实现方式中可能是有利的,因为较小的簇更可能表示扫描仪数据中的噪声而不是真实世界的垂直结构。

车辆计算系统120还可以通过在对应的垂直簇上插入附加的点来生成表示一个或更多个垂直结构的表面的附加的点,从而丰富每个簇。在一个实施方式中,车辆计算系统120沿垂直簇中的线段插入点。例如,车辆计算系统120通过随机选择垂直簇内的垂直元素并且使用内插公式沿着垂直元素中的两个扫描点之间的线段在随机位置处生成内插点来插入每个点。在另一个实施方式中,车辆计算系统120执行网格拟合算法以将网格拟合到垂直簇中的扫描点并且在网格上插入点(例如,通过随机选择网格上的位置)。

车辆计算系统120可以将垂直簇用于各种不同的应用。在一个实施方式中,垂直簇用于计算自先前的lidar扫描起车辆的位置和前进方向的变化。例如,车辆计算系统120计算垂直簇相对于车辆的位置(例如,通过计算lidar扫描仪的位置与垂直簇的质心之间的矢量)。然后,车辆计算系统120可以通过将计算的相对位置与基于来自先前lidar扫描的扫描仪数据针对相同垂直簇计算的相对位置进行比较来确定车辆的位置和前进方向的变化。由于诸如电线杆和邮箱的垂直结构是静止的,因此对应的垂直簇的相对位置的变化提供车辆的位置和前进方向的变化的可靠估计。在其他实施方式中,垂直簇另外地或替选地用于其他目的。例如,车辆计算系统120可以使用簇来执行冲突避免,或者将簇发送到在线hd地图系统110以添加到占用地图530中的数据。

计算机器架构

图15是示出能够从机器可读介质读取指令并且在处理器(或控制器)中执行指令的示例机器的组件的框图。具体地,图15示出了计算机系统1500的示例形式的机器的图形表示,在计算机系统1500内可以执行用于使机器执行本文所讨论的任何一种或更多种方法的指令1524(例如,软件)。在替选的实施方式中,机器作为独立设备操作或者可以连接(例如,联网)到其他机器。在联网布置中,机器可以在服务器客户端网络环境中以服务器机器或客户端机器的能力运行,或者对等(或分布式)网络环境中作为对等机器运行。

该机器可以是服务器计算机、客户端计算机、个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、智能电话、web设备、网络路由器、交换机或网桥、或能够执行指定该机器要采取的动作的(顺序或其他)指令1524的任何机器。此外,虽然仅示出了单个机器,但是术语“机器”还应被视为包括单独或联合执行指令1524以执行本文所讨论的任何一种或更多种方法的任何机器集合。

示例计算机系统1500包括被配置成经由总线1508彼此通信的处理器1502(例如,中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)、一个或更多个专用集成电路(asic)、一个或更多个射频集成电路(rfic)或这些的任何组合)、主存储器1504和静态存储器1506。计算机系统1500还可以包括:图形显示单元1510(例如,等离子显示面板(pdp)、液晶显示器(lcd)、投影仪或阴极射线管(crt))。计算机系统1500还可以包括:还被配置成经由总线1508进行通信的字母数字输入设备1512(例如,键盘)、光标控制设备1514(例如,鼠标、轨迹球、操纵杆、运动传感器或其他指向仪器)、存储单元1516、信号发生设备1518(例如,扬声器)和网络接口设备1520。

存储单元1516包括机器可读介质1522,其上存储有体现本文描述的方法或功能中的任何一个或更多个的指令1524(例如,软件)。指令1524(例如,软件)也可以在由计算机系统1500执行期间完全或至少部分地驻留在主存储器1504内或处理器1502内(例如,在处理器的高速缓冲存储器内),主存储器1504和处理器1502也构成机器可读介质。可以经由网络接口设备1520通过网络1526发送或接收指令1524(例如,软件)。

虽然在示例实施方式中将机器可读介质1522示为单个介质,但是术语“机器可读介质”应被视为包括能够存储指令(例如,指令1524)的单个介质或多个介质(例如,集中式或分布式数据库,或者相关高速缓存和服务器)。术语“机器可读介质”还应被视为包括能够存储用于由机器执行并且使机器执行本文公开的任何一种或更多种方法的的指令(例如,指令1524)的任何介质。术语“机器可读介质”包括但不限于固态存储器、光学介质和磁介质形式的数据存储库。

附加配置考虑

已经出于说明的目的给出了本发明的实施方式的前述描述;其并非旨在穷举或将本发明限制于所公开的精确形式。相关领域的技术人员可以理解,鉴于上述公开内容,许多修改和变型是可能的。

例如,尽管本文描述的技术应用于自主车辆,但是该技术也可以应用于其他应用,例如,用于为具有驾驶员的车辆显示hd地图,用于在诸如移动电话、笔记本电脑、平板电脑或具有显示屏的任何计算设备的客户端设备的显示器上显示hd地图。这里显示的技术还可以应用于显示用于计算机模拟(例如,在计算机游戏等中)的地图。

本说明书的一些部分根据对信息的操作的算法和符号表示来描述本发明的实施方式。数据处理领域的技术人员通常使用这些算法描述和表示来有效地将其工作实质传达给本领域的其他技术人员。虽然在功能上、计算上或逻辑上描述这些操作,但是这些操作被理解为由计算机程序或等效电路、微代码等来实现。此外,已经证明,不失一般性,有时将这些操作布置称为模块是方便的。所描述的操作及其相关模块可以在软件、固件、硬件或其任何组合中实施。

本文描述的任何步骤、操作或处理可以单独地或与其他设备组合地用一个或更多个硬件或软件模块来执行或实现。在一个实施方式中,使用包括计算机可读介质的计算机程序产品来实现软件模块,该计算机可读介质包含计算机程序代码,该计算机程序代码可以由计算机处理器执行以用于执行所描述的任何或所有步骤、操作或处理。

本发明的实施方式还可以涉及用于执行本文的操作的装置。该装置可以是为了所需目的而特别构造的,并且/或者该装置可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算设备。这样的计算机程序可以存储在有形计算机可读存储介质或适于存储电子指令并且耦接至计算机系统总线的任何类型的介质中。此外,本说明书中提及的任何计算系统可以包括单个处理器,或者可以是采用多处理器设计以提升计算能力的架构。

本发明的实施方式还可以涉及在载波中包含的计算机数据信号,其中计算机数据信号包括本文所述的计算机程序产品或其他数据组合的任何实施方式。计算机数据信号是在有形介质或载波中呈现的并且在载波中被调制或以其他方式编码的产物,计算机数据信号是有形的并且根据任何合适的传输方法来传输。

最后,在说明书中使用的语言主要是出于可读性和说明目的而选择的,而并非被选择用于划定或限定本发明的主题。因此,旨在本发明的范围将不受该详细描述的限制,而是受到基于本申请的所附任何权利要求的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1