Apollo进阶课程 ⑧ | 高精地图的格式规范

上周阿波君为大家详细介绍了「Apollo进阶课程⑦高精地图的采集与生产」

 

高精地图采集过程中需要用到的传感器有GPS、IMU和轮速计。

 

无论是哪种传感器都存在一定的缺陷,因此我们不能期望只使用单一一种传感器,得出准确的Pose。

 

必须各个传感器之间取长补短,才能得出一个相对比较准的Pose。

 

由此应运而生了高精地图的主要制图方案之一——激光雷达。

 

激光雷达通过扫描的激光点和GPS、IMU的一些测量数据,计算预测结果与实际结果差距的最小化,得出我们在高精地图采集过程中一个最优化的计算模型。

 

另外一种主流的制图方案,是Camera融合激光雷达:通过丰富的图像信息和准确的激光雷达数据,最终得出一个非常准确的高精地图。

 

 

Apollo目前采用的Camera融合激光雷达的方案。

 

本周阿波君将与大家分享高精地图的格式规范相关内容。

 

下面,欢迎开发者们紧随阿波君的脚步,进入进阶课程第8期。

高精地图的格式规范,即对采集到的地图如何进行一个完整的表述。

 

对此,目前最主流的通用格式规范分NDSOpenDRIVE两种。此外还有日本OMP公司的格式规范。

高精地图格式规范NDS,把数据库做了细分

 

NDS是一种非常全面的地图表述方式。

 

由于其数据库可以细分和运用了Level两种技术,NDS对地图的格式规范做得非常到位。

 

NDS有上百页格式文档,因此NDS把数据库做了细分,每个细分后的产品都能够独立更新升级。

 

其最典型表现是一个NDS不仅包括基本导航技术数据、B公司的POI数据(即地图上的一个点,地图上每一家商家店铺都可以被称之为一个POI数据点),还支持局部更新,即使是对一个国家或者省市的相关内容进行局部更新,都十分便捷。

 

为了方便用户,NDS还提供语音、经纬度等描述功能

 

NDS中另外一个非常重要的概念叫做Level(尺度),其含义类似于传统手机地图功能中的比例尺。

 

通过放大或缩小比例尺,来浏览全国或某个区域、某栋楼的地图信息。

 

分块技术作为地图领域中一项普遍通用的技术,也被应用到Level中。

 

由于地图的范围非常大,利用Level把整个地图切成一个又一个的小格子,在每个小格子中填充数据。

 

当我们在使用百度地图或高德地图时,这些小格子显而易见。

 

虽然这一规范十分重要,但是该技术目前在国内尚未普及,国外使用则相对较普遍,特别是宝马等大厂商使用较多。

 

该操作也是使NDS的地图格式规范全面到位的原因之一。

Apollo也开发了自己的OpenDRIVE格式规范

 

OpenDRIVE是目前国际上较通用的一种格式规范,由一家德国公司制定。

 

需要说明的一点是百度Apollo中也开发了自己的OpenDRIVE,与德国的OpenDRIVE有所不同。两者之间的差别,今后我们再详细讲解。

 

在运用OpenDRIVE格式规范表述道路时,会涉及Section、Lane、Junction、Tracking四个概念。

 

无论车道线变少或变多,都是从中间的灰线切分。切分之后的地图分为Section A、Section B和Section C三部分。

 

一条道路可以被切分为很多个Section。按照道路车道数量变化、道路实线和虚线的变化、道路属性的变化的原则来对道路进行切分。

 

在第二个Lane概念中,Reference Line在OpenDRIVE规范中非常重要。没有Reference Line,可以说一事无成。

 

基于Reference Line,向左表示ID向左递增,向右表示ID向右递减,它是格式规范的标准之一,同时也是固定的、不可更改的。

 

比如,Reference Line的ID为0,向左是1、2、3,向右是−1、−2、−3。

 

Junction是OpenDRIVE格式规范中的路口概念。Junction中包含虚拟路,虚拟路用来连接可通行方向,用红色虚线来表示。

 

在一张地图中,在遇到对路口的表述时,虽然说路口没有线,但我们要用虚拟线来连接道路的可通行方向连,以便无人驾驶车辆明确行进路线。

 

以上三个概念在OpenDRIVE格式规范中,是基于Reference Line条件下应用,还有基于Reference Line和偏移量条件下的应用,其中十分重要的一个概念叫做Tracking。

 

Tracking的坐标系是ST,S代表车道Reference Line起点的偏移量,T代表基于Reference Line的横向偏移量。

 

前者是纵向的,后者是横向的。此外,还有一些概念,如Heading、Pitch和Roll等,不再赘述。

OpenDRIVE里对车道线的描述都基于Reference Line

 

在OpenDRIVE里,所有对车道线的描述都基于Reference Line的偏移量。

 

比如,我们这个车道线表示的Reference Line,关于它的描述都是基于它的偏移。

 

这个车道线可以通过方程来描述,其他属性如车道线左右的坡度,也可以通过一个基于Reference Line偏移的方程来描述。

 

这种形式非常复杂,在实际操作中困难重重。

 

百度在Open Derive格式规范中对该技术进行了改进,使之对开发者更加友好,也更利于Apollo自身的表述计算,具体情况今后我们将详细地分享给大家。

 

﹏﹏﹏﹏   END  ﹏﹏﹏﹏