本文为《程序员》原创文章,未经允许不得转载,更多精彩请订阅2017年《程序员》
高精地图是无人驾驶核心技术之一,精准的地图对无人车定位、导航与控制,以及安全至关重要。 本文是“无人驾驶技术系列”第七篇,首先介绍高精地图与传统地图的区别,然后介绍其特点及制作过程。在了解高精地图基础知识后,探索其在无人驾驶场景中的应用。
我们日常使用的用于导航、查询地理信息的地图都属于传统电子地图,其主要服务对象是人类驾驶员。而与传统电子地图不同,高精度电子地图的主要服务对象是无人驾驶系统。本节讨论两者的不同。
➤
传统电子地图
如图1所示,我们日常使用的用于导航、查询地理信息的地图,如Google、百度、苹果地图等,都可以并入传统电子地图。尽管电子地图出现还不到一百年,对传统地图的研究和开发已有几千年历史,并发展出“制图学”这一门学科。在制图学的基础上,电子地图的出现极大提高了检索效率,并且能快速查找最优路径,极大方便了人们出行。
图1 传统电子地图
传统电子地图是对路网的一种抽象:都将路网抽象成有向图的形式——图的顶点代表路口,边代表路口与路口的连接。路名、地标以及道路骨架信息都可以被抽象成存储于这些有向图顶点或边中的属性。这种抽象的地图表征形式能很好地适应人类驾驶员需求,其原因在于人类生来就有很强的视觉识别及逻辑分析能力。在驾驶过程中,人类驾驶员一般都能有效判别如下信息:识别路面及路面标示线,确定自己在路面的大致位置,寻找并辨认路标等。参照辨识出的信息,结合当前GPS(一般精度在5-10米)在当前电子地图中的位置,人类驾驶员便大致知道自己在实际路网中的位置,并计划下一步如何驾驶。
正是基于人类驾驶员的这些能力,传统电子地图可被极大精简,比如一条弯曲的道路可以被精简到用只有几个点的线段来表示,只要大致轮廓符合现实路网结构,人类驾驶员即可结合驾驶信息定位自己的当前位置。
➤
高精电子地图
与传统电子地图不同,高精度电子地图的主要服务对象是无人驾驶车,或者说是机器驾驶员。和人类驾驶员不同,机器驾驶员缺乏与生俱来的视觉识别、逻辑分析能力。比如,人可以很轻松、准确地利用图像、GPS定位自己,鉴别障碍物、人、交通信号灯等,但这对当前的机器人来说都是非常困难的任务。因此,高精度电子地图是当前无人驾驶车技术中必不可少的一个组成部分。高精度电子地图包含大量行车辅助信息,其中,最重要的是对路网精确的三维表征(厘米级精度)。比如,路面的几何结构,道路标示线的位置,周边道路环境的点云模型等。有了这些高精度的三维表征,车载机器人就可以通过比对车载GPS、IMU、LiDAR或摄像头数据来精确确认自己的当前位置。此外,高精地图还包含丰富的语义信息,比如交通信号灯的位置及类型,道路标示线的类型,识别哪些路面可以行驶等。这些能极大提高车载机器人鉴别周围环境的能力。此外,高精度地图还能帮助无人车识别车辆、行人及未知障碍物。这是因为高精地图一般会过滤掉车辆、行人等活动障碍物。如果无人车在行驶过程中发现当前高精地图中没有的物体,便有很大几率是车辆、行人或障碍物。因此,高精地图可以提高无人车发现并鉴别障碍物的速度和精度。
相比服务于GPS导航系统的传统地图而言,高精地图最显著的特点是其表征路面特征的精准性。传统地图只需要做到米级精度即可实现GPS导航,但高精地图需要达到厘米级精度才能保证无人车行驶安全。
此外,高精地图还需要比传统地图有更高的实时性。由于路网每天都有变化,如整修、道路标识线磨损及重漆、交通标示改变等。这些变化需要及时反映在高精地图上以确保无人车行驶安全。实时高精地图有很高的难度,但随着越来越多载有多种传感器的无人车行驶在路网中,一旦有一辆或几辆无人车发现了路网的变化,通过与云端通信,就可以把路网更新信息告诉其他无人车,使其他无人车更加聪明和安全。
图2 高精电子地图
➤
数据特征类型
和传统地图相似,高精地图也具有分层的数据结构。如图3所示,最底层是基于红外线雷达传感器所建立的精密二维网格。一般这个二维网格的精度保证在5×5厘米左右。可以行驶的路面、路面障碍物,以及路面在激光雷达下的反光强度都被存储于相应的网格当中。无人车在行驶的过程中,通过比对其红外线雷达搜集到的数据及其内存中的高精二维网格,就能确定车辆在路面的具体位置。
图3 高精地图二维网格表征。由于网格很细,我们可以从相应的雷达反射上清楚识别出路面及路面标识线的位置。绿色区域表示不可行驶的路面
除了底层的二维网格表征外,高精地图还包含很多有关路面的语义信息。如图4所示,在二维网格参照系的基础上,高精地图一般还包含道路标识线的位置及特征信息,以及相应的车道特征。由于车载传感器可能会因为恶劣天气、障碍物,以及其他车辆的遮挡不能可靠分析车道信息,高精地图中的车道信息特征能帮助无人车更准确可靠地识别道路标识线,并理解相邻车道之间是否可以安全并道。
图4 高精地图中的车道信息
图5 高精地图中的道路标识线及路牌信息
此外,如图5所示,高精地图还会标明道路标示牌、交通信号等相对于二维网格的位置,这些信息起两方面作用:
➤
数据量估计
无人车使用的高精地图是个2D网格,数据主要由激光雷达产生,由于激光雷达的精度大约是5厘米,所以地图的最高精度可以达到每个网格5×5厘米。在如此高的精度下,如何有效管理数据是一大挑战。首先,为了尽量让地图在内存里中,我们要尽量去掉不需要的数据。一般激光雷达可覆盖方圆100米范围,假设每个反光强度可以用一个字节记录,那么每次激光雷达扫描可产生4MB数据。扫描会包括公路旁边的树木及房屋,但无人车行驶并不需要这些数据,只需记录公路表面的数据即可。假设路面的宽度为20米,就可以通过数据处理把非公路表面的数据过滤掉,这样每次扫描的数据量会下降到0.8MB。在过滤数据的基础上,还可以使用无损压缩算法,如LASzip压缩地图数据,可以达到超过10倍的压缩率。经过这些处理后,1TB硬盘就可以存下全中国超过10万公里的高精地图数据。
传统电子地图主要依靠卫星图片产生,然后由GPS定位,这种方法可以达到米级精度。而高精地图需要达到厘米级精度,仅靠卫星与GPS是不够的。因此,其生产涉及多种传感器, 由于产生的数据量庞大,通常会使用数据采集车(如图6所示)收集,然后通过线下处理把各种数据融合产生高精地图。
图6 高精地图数据采集车
➤
所需要的传感器种类
高精地图的制作是个多传感器融合的过程, 包括了以下几种:
-
陀螺仪(IMU):
一般使用6轴运动处理组件,包含了3轴加速度和3轴陀螺仪。加速度传感器是力传感器,用来检查上下左右前后哪几个面都受了多少力(包括重力),然后计算每个上的加速度。陀螺仪就是角速度检测仪,检测每个上的加速度。假设无人车以Z轴为轴心,在一秒钟转到了90度,那么它在Z轴上的角速度就是90度/秒。从加速度推算出运动距离需要经过两次积分,所以,但凡加速度测量上有任何不正确,在两次积分后,位置错误会积累然后导致位置预测错误。所以单靠陀螺仪并不能精准地预测无人车位置。
-
轮测距器(Wheel Odometer):
我们可以通过轮测距器推算出无人车的位置。汽车的前轮通常安装了轮测距器,分别会记录左轮与右轮的总转数。通过分析每个时间段里左右轮的转数,我们可以推算出车辆向前走了多远,向左右转了多少度等。可是由于在不同地面材质(比如冰面与水泥地)上转数对距离转换的偏差,随着时间推进,测量偏差会越来越大。所以单靠轮测距器并不能精准预测无人车位置。
-
GPS:
任务是确定四颗或更多卫星的位置,并计算出它与每颗卫星之间的距离,然后用这些信息使用三维空间的三边测量法推算出自己的位置。要使用距离信息进行定位,接收机还必须知道卫星的确切位置。GPS接收机储存有星历,其作用是告诉接收机每颗卫星在各个时刻的位置。在无人车复杂的动态环境,尤其在大城市中,由于各种高大建筑物的阻拦。GPS多路径反射(Multi-Path)的问题会更加明显。这样得到的GPS定位信息很容易就有几十厘米甚至几米的误差,所以单靠GPS不可以制作高精地图。
-
激光雷达(LiDAR):
光学雷达通过首先向目标物体发射一束激光,然后根据接收-反射的时间间隔来确定目标物体的实际距离。然后根据距离及激光发射的角度,通过简单的几何变化可以推导出物体的位置信息。LiDAR系统一般分为三个部分:一是激光发射器,发出波长为600nm到1000nm的激光射线;二是扫描与光学部件,主要用于收集反射点距离与该点发生的时间和水平角度(Azimuth);三是感光部件,主要检测返回光的强度。因此我们检测到的每一个点都包括了空间坐标信息以及光强度信息<i>。光强度与物体的光反射度(reflectivity) 直接相关,所以从检测到的光强度也可以对检测到的物体有初步判断。