2、高精地图数据标准:NDS标准、OpenDRIVE标准、ADASIS标准、国内标准现状
做高精地图这些年,我最大的感触就是——标准这东西,看着枯燥,但真踩坑了才知道它有多重要。你想想看,地图数据要是各家各搞一套,那自动驾驶系统根本没法互通。今天我们就聊聊主流的几个标准,以及国内现在是个什么情况。
2.1 NDS标准:导航数据标准
NDS,全称Navigation Data Standard。说白了,它是一套给导航系统用的数据格式规范。我最早接触NDS是在2016年,当时给一家车厂做POC项目,被NDS的层级结构折腾得不轻。
NDS的核心设计理念是「数据库即产品」。它把地图数据打包成一个SQLite数据库文件。这样做的好处很明显——查询快、更新方便、还能做增量更新。
NDS的几个关键特点:
- 分层存储:数据按层级组织,从宏观到微观。比如1级存高速公路,2级存主干道,3级存支路。导航时根据当前缩放级别加载对应层级,效率很高。
- 瓦片化:地图被切成一个个瓦片,每个瓦片独立存储。我记得有一次做性能优化,发现瓦片大小控制在256KB以内时,加载速度最理想。
- 增量更新:只更新变化的部分,不用全量下载。这个在车联网场景下特别实用。
NDS目前最新版本是NDS 2.5。它引入了更多高精地图相关的元素,比如车道级导航、ADAS属性等。不过说实话,NDS在高精地图领域的使用率不如OpenDRIVE高。为什么?因为NDS更偏向导航应用,而OpenDRIVE更偏向仿真和测试。
我的建议:如果你的项目是做车载导航或路线规划,NDS是首选。但如果是做自动驾驶仿真测试,建议优先考虑OpenDRIVE。
2.2 OpenDRIVE标准:道路网络描述标准
OpenDRIVE,这是目前高精地图领域最通用的标准之一。它用XML格式来描述道路网络。我参与过的几个L4级自动驾驶项目,几乎都用OpenDRIVE作为地图交换格式。
OpenDRIVE的核心是「道路参考线」的概念。每条道路都有一条中心参考线,然后基于这条线定义车道、边界、交通标志等信息。你想想看,这种设计其实很符合人类对道路的认知——先有路,再有车道。
一个典型的OpenDRIVE文件结构大概长这样:
<OpenDRIVE>
<header>
<geoReference>+proj=utm +zone=50</geoReference>
</header>
<road id="1" length="500.0">
<planView>
<geometry s="0.0" x="0.0" y="0.0" hdg="0.0" length="500.0">
<line/>
</geometry>
</planView>
<lanes>
<laneSection s="0.0">
<left>
<lane id="-1" type="driving">
<width sOffset="0.0" a="3.5" b="0.0" c="0.0" d="0.0"/>
</lane>
</left>
</laneSection>
</lanes>
</road>
</OpenDRIVE>
这里要注意几个关键元素:
- planView:定义道路的几何形状,可以是直线、曲线、螺旋线等
- laneSection:定义车道段,每条车道有宽度、类型、偏移量等属性
- junction:定义交叉路口,连接多条道路
我曾经踩过的坑:OpenDRIVE对复杂路口(比如五岔路口、环形交叉口)的描述能力有限。有一次我们做城市道路测试,遇到一个大型环岛,用OpenDRIVE描述时发现junction的拓扑关系很难定义清楚。后来我们不得不手动补充了一些自定义属性才搞定。
OpenDRIVE目前由ASAM(Association for Standardization of Automation and Measuring Systems)组织维护。最新版本是1.8。它和OpenSCENARIO(场景描述标准)配合使用,可以完整描述自动驾驶测试场景。
2.3 ADASIS标准:ADAS地图数据接口标准
ADASIS,全称Advanced Driver Assistance Systems Interface Specification。这个标准比较特殊,它不定义地图数据怎么存,而是定义地图数据怎么从导航系统传到ADAS系统。
我最早接触ADASIS是在做ACC(自适应巡航)功能测试时。当时需要把地图数据实时传给控制单元,ADASIS v2协议帮了大忙。
ADASIS的核心概念是「电子地平线」(Electronic Horizon)。说白了,就是车辆前方道路的预测信息。系统根据当前位置和地图数据,提前计算出前方几百米甚至几公里的道路情况,然后传给ADAS系统。
ADASIS v3的主要改进:
- 支持车道级路径预测,精度更高
- 引入「路径树」概念,可以同时预测多条可能路径
- 支持动态数据更新,比如实时交通事件
ADASIS v3的数据结构大概是这样:
// ADASIS v3 消息示例
Message: PathPrediction
- version: 3.0
- timestamp: 1234567890
- vehiclePosition:
- latitude: 31.2304
- longitude: 121.4737
- heading: 45.0
- pathTree:
- path[0]:
- length: 500.0
- segments: 10
- attributes:
- speedLimit: 80
- curvature: 0.01
- slope: 2.0
- path[1]:
- length: 300.0
- segments: 6
- attributes:
- speedLimit: 60
- curvature: 0.05
- slope: 3.0
我的经验:ADASIS v3的路径树设计很巧妙。它允许系统同时预测多条可能路径,比如前方有分叉路时,系统可以同时计算直行和转弯两种情况。这样ADAS系统就能提前做好准备,不会到了路口才手忙脚乱。
2.4 国内标准现状
国内的高精地图标准,这几年发展很快。我2018年刚入行时,国内基本没有自己的标准,大家都在用OpenDRIVE。但现在情况完全不同了。
目前国内主要的标准体系有:
| 标准名称 | 发布单位 | 状态 | 主要特点 |
|---|---|---|---|
| 《智能网联汽车 高精地图数据规范》 | 中国汽车工程学会 | 已发布 | 面向L3级以上自动驾驶,包含车道级数据 |
| 《道路高精电子地图数据规范》 | 自然资源部 | 征求意见中 | 侧重测绘合规,包含地理信息保密要求 |
| 《自动驾驶地图数据交换格式》 | 中国信通院 | 已发布 | 参考OpenDRIVE,但增加了国内道路特征 |
| 《高精地图质量评估规范》 | 中国测绘学会 | 制定中 | 关注数据精度、完整性、时效性 |
国内标准有几个特点值得注意:
- 合规要求严格:国内对地理信息数据有严格的保密要求。高精地图必须经过加密处理,坐标系统也要符合国家规定。我有个朋友的公司,因为地图数据没有做偏转处理,被罚了不少钱。
- 道路特征适配:国内道路有很多特殊场景,比如复杂的立交桥、潮汐车道、可变导向车道等。这些在OpenDRIVE里没有很好的定义,国内标准做了补充。
- 动态数据支持:国内标准更强调动态数据的更新能力。比如实时施工信息、临时交通管制等,这些对自动驾驶来说很关键。
特别提醒:国内高精地图的测绘资质要求非常严格。没有甲级测绘资质的企业,不能从事高精地图的采集和制作。这个门槛把很多创业公司挡在了门外。如果你正在做相关项目,一定要先确认资质问题。
嗯,说到国内标准,我还想提一句。目前国内标准和国际标准的关系,有点像「兼容并包」。一方面,国内标准大量参考了OpenDRIVE和NDS的设计思路;另一方面,又根据国内实际情况做了很多本地化改造。我个人觉得,未来几年国内标准会越来越成熟,甚至可能反过来影响国际标准。
好了,关于高精地图数据标准,今天就聊这么多。下一章我们会深入讲讲高精地图的质量评估方法,包括精度验证、属性检查、场景覆盖度等。到时候我会分享一些实际测试中遇到的坑,希望对你有帮助。