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的设计思路;另一方面,又根据国内实际情况做了很多本地化改造。我个人觉得,未来几年国内标准会越来越成熟,甚至可能反过来影响国际标准。

好了,关于高精地图数据标准,今天就聊这么多。下一章我们会深入讲讲高精地图的质量评估方法,包括精度验证、属性检查、场景覆盖度等。到时候我会分享一些实际测试中遇到的坑,希望对你有帮助。