2. 高精地图数据标准:NDR、OpenDRIVE、ADASIS v2/v3 详解与对比

聊到高精地图,绕不开的就是数据标准。说白了,地图数据就像一种语言,车厂、图商、传感器供应商之间得说同一种话,不然根本没法协作。我入行那会儿,各家有各家的格式,集成一个系统简直像做翻译工作。后来行业慢慢收敛到几个主流标准上,今天我就把 NDR、OpenDRIVE、ADASIS v2/v3 这几个老面孔和新势力,掰开揉碎了讲讲。

2.1 NDR:日本的老牌标准

NDR,全称 Navigation Data Standard,是日本主导的标准。我记得最早接触它是在一个日系车项目里,当时觉得这玩意儿怎么这么「规矩」?

核心特点:

  • 强调整体性:NDR 不只是道路几何,它把交通规则、引导信息、甚至 POI 都打包在一起。你想想看,一个标准里塞这么多东西,好处是集成方便,坏处是改起来费劲。
  • 层级分明:从国家到道路,再到车道,一层层往下拆。我在项目中遇到过一个问题——NDR 对车道级的细节支持不够细,尤其是复杂路口,经常需要自己补数据。
  • 更新机制:NDR 有自己的一套差分更新逻辑,但说实话,实时性不如后来的一些标准。
我的经验: 如果你做的是日本本土市场的项目,NDR 是绕不开的。但做全球平台的话,我建议慎重考虑,它的生态相对封闭。

2.2 OpenDRIVE:欧洲的「车道级」标杆

OpenDRIVE 是目前全球用得最广的高精地图标准之一,尤其在欧洲和中国。它用 XML 描述道路,核心是「车道级」建模。

为什么它这么流行?

  • 几何描述精准:用参考线 + 三次多项式来描述车道中心线。嗯,这里要注意,它的坐标系是右手系,跟很多传感器坐标系不一样,做融合时得转一下。
  • 车道连接逻辑:每个车道都有 ID,通过 laneLink 定义前后连接关系。我曾经在一个项目中,因为车道 ID 没对齐,导致规划模块直接「跳崖」——车开到路口就不知道往哪走了。
  • 支持多种道路元素:红绿灯、路标、限速,都能用标准标签描述。

来看一个简单的 OpenDRIVE 片段,描述一段直路:

<road name="MainRoad" length="100.0" id="1" junction="-1">
  <planView>
    <geometry s="0.0" x="0.0" y="0.0" hdg="0.0" length="100.0">
      <line/>
    </geometry>
  </planView>
  <lanes>
    <laneSection s="0.0">
      <left>
        <lane id="-1" type="driving" level="false">
          <width sOffset="0.0" a="3.5" b="0.0" c="0.0" d="0.0"/>
        </lane>
      </left>
      <center>
        <lane id="0" type="none"/>
      </center>
      <right>
        <lane id="1" type="driving" level="false">
          <width sOffset="0.0" a="3.5" b="0.0" c="0.0" d="0.0"/>
        </lane>
      </right>
    </laneSection>
  </lanes>
</road>
避坑指南: 我曾经因为 OpenDRIVE 中 s 坐标(沿道路的纵向距离)和 t 坐标(横向偏移)搞混,导致定位结果偏了一个车道。记住:s 是顺着路走的,t 是垂直路面的。

2.3 ADASIS v2/v3:从「地图」到「车辆」的桥梁

ADASIS 跟前面两个不一样。它不定义地图怎么存,而是定义地图数据怎么从导航系统传到 ADAS 模块。说白了,它是一个通信协议。

ADASIS v2:

  • 基于 CAN 总线传输,带宽有限,所以数据得压缩。
  • Path Prediction 的概念,提前把前方几百米的道路几何发出去。
  • 我个人的习惯是,v2 适合做简单的 ACC 或弯道预警,但做不了复杂的自动驾驶决策。

ADASIS v3:

  • 基于以太网,带宽大了很多,可以传更丰富的数据。
  • 引入了 Horizon ProviderHorizon Consumer 的架构。地图数据被切分成一个个「地平线」片段,按需推送。
  • 支持车道级数据,甚至能传坡度、曲率变化率这些细节。

关键区别: v2 是「广播式」,不管你要不要,我都发;v3 是「订阅式」,你需要什么,我发什么。这在系统资源紧张时,差别非常大。

2.4 三大标准对比

我把它们放在一起,做个直观的对比:

维度 NDR OpenDRIVE ADASIS v2/v3
主要用途 导航 + 基础 ADAS 高精地图存储与交换 地图数据实时传输
数据粒度 道路级 车道级 v2: 道路级 / v3: 车道级
传输方式 文件 / 差分更新 文件 (XML) v2: CAN / v3: 以太网
实时性
生态 日本为主 全球主流 欧洲车厂主导
学习曲线 中等 较陡 v2 简单 / v3 中等

2.5 我的选择建议

如果你现在要选一个标准,我会这么建议:

  • 做地图存储和编辑:首选 OpenDRIVE。它的工具链最成熟,开源解析库也多。我一般用 pyodrx 做快速验证。
  • 做地图到车辆的实时传输:看你的总线。如果还是 CAN 架构,ADASIS v2 凑合用;如果上了以太网,直接上 v3,别犹豫。
  • 做日本市场:NDR 是必选项,但建议同时保留 OpenDRIVE 的转换接口,方便全球平台复用。
一个小技巧: 实际项目中,很少只用一种标准。我做过一个方案,地图后端用 OpenDRIVE 存储,通过 ADASIS v3 协议推送给多个 ECU,再在 ECU 内部转成 NDR 格式给导航模块。听着复杂,但各取所长。

好了,这一章就到这里。下一章我会讲高精地图的采集与制作流程,包括激光雷达和相机的融合建图,到时候见。