3. 道路网络基础概念

在 OpenDRIVE 中,一条真实道路并不是直接由“路面多边形”描述的,而是通过一套层次化的抽象术语来建模:参考线(Reference Line)定义道路的骨架,车道(Lane)沿参考线横向偏移生成,若干车道组成一条道路(Road),道路之间通过交叉口(Junction)与连接关系(Link)衔接,而所有几何都建立在明确的坐标系与几何表达之上。理解这六个术语之间的层级与引用关系,是读懂和编写 .xodr 文件的第一步。

一、核心原理:从参考线到道路网络

OpenDRIVE 采用“参考线驱动”的建模思想。每条道路必须且只能有一条参考线,参考线本身是一条一维曲线,带有起点、方向与弧长参数 s。道路的几何形状、坡度、超高等属性都附着在参考线上,而车道则是参考线两侧的横向条带。

  • 参考线:道路的中心基准线,通常位于道路中央或车道分界处,用 s 坐标(沿程距离)和 t 坐标(横向偏移)构成曲线坐标系。
  • 车道:以参考线为基准,通过 laneOffset 与 laneSection 定义宽度、数量和类型,右侧车道 id 为负,左侧为正,0 号车道即参考线本身。
  • 道路:一条参考线及其所有车道、几何、标线的集合,是 OpenDRIVE 中最基本的可引用单元。
  • 交叉口:多条道路交汇的区域,内部不再有独立参考线,而是通过连接道路(Connecting Road)和车道链接实现转向。
  • 连接关系:包括道路前后继(predecessor/successor)与车道链接(laneLink),描述拓扑连通性。
  • 坐标系与几何表达:全局使用惯性坐标系(x, y, z, h, p, r),局部使用 s/t 曲线坐标,几何段用直线、螺旋线、圆弧、多项式等描述。
关键记忆:参考线是“骨”,车道是“肉”,道路是“器官”,交叉口是“关节”,连接关系是“韧带”,坐标系与几何是“度量衡”。

二、方法流程:一条道路的建模顺序

在工程实践中,通常按以下顺序构建一条道路:

  1. 确定参考线的起点位姿(x, y, h)与初始几何段。
  2. 沿 s 方向依次定义 geometry 段:直线、螺旋线、圆弧或参数三次多项式。
  3. 划分 laneSection,指定每个横断面的车道数量、宽度与类型。
  4. 为每条车道定义 laneLink,建立前后继关系。
  5. 若与其他道路相交,创建 junction,并生成连接道路与 laneLink。
  6. 补充标线、信号、路面属性等附属元素。

下面是一个最小化的道路几何片段示例,展示参考线与车道段的组织方式:

<road id="1" name="MainRoad" length="120.0" junction="-1">
  <link>
    <predecessor elementType="road" elementId="0" contactPoint="end"/>
    <successor elementType="junction" elementId="100"/>
  </link>
  <planView>
    <geometry s="0.0" x="0.0" y="0.0" hdg="0.0" length="60.0">
      <line/>
    </geometry>
    <geometry s="60.0" x="60.0" y="0.0" hdg="0.0" length="60.0">
      <arc curvature="0.02"/>
    </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>

三、案例/场景:十字交叉口的术语映射

假设一个标准十字路口,南北向道路 id=1,东西向道路 id=2。在 OpenDRIVE 中,交叉口区域由 <junction> 描述,内部包含若干连接道路(connection),每条 connection 又包含 incomingRoad、connectingRoad 与 laneLink。此时:

  • 道路 1 和道路 2 的参考线在交叉口边界处终止,不再延伸进入路口内部。
  • 路口内部的转向轨迹由连接道路的参考线表达,通常较短且曲率较大。
  • laneLink 明确“从哪条车道的哪个方向进入,到哪条车道的哪个方向出去”。
  • 信号灯、停止线、人行横道等作为交叉口附属元素挂接在对应道路或连接道路上。
交叉口内部没有独立的“道路中心线”概念,所有可行驶路径都由连接道路的参考线承载,这是初学者最容易混淆的地方。

四、术语对照与常见误区

术语 英文 核心作用 常见误区
参考线 Reference Line 道路骨架,承载 s/t 坐标 误以为参考线一定在道路正中央
车道 Lane 横向条带,定义宽度与类型 忽略 id 正负与左右侧对应关系
道路 Road 参考线+车道+几何的集合 把一条物理道路拆成多条 OpenDRIVE 道路
交叉口 Junction 多道路交汇与转向区域 在交叉口内部再建独立参考线
连接关系 Link 前后继与车道级连通 只写道路级 link,漏掉 laneLink
坐标系 Coordinate System 惯性坐标与曲线坐标 混淆 hdg 与航向角、s 与 x 的关系
复盘要点:如果仿真中出现车辆“跳变”或“无法换道”,优先检查 laneLink 是否完整、参考线方向是否一致、交叉口连接道路的 contactPoint 是否正确。这三类问题占拓扑类错误的绝大多数。

掌握上述六个术语及其引用关系后,再阅读 OpenDRIVE 规范中的 <road>、<lanes>、<junction>、<link> 等元素时,就能快速定位每个字段在道路网络中的角色,为后续几何构建、拓扑校验与仿真验证打下基础。

OpenDRIVE 道路网络基础术语关系 坐标系与几何表达 惯性坐标 (x, y, z, h, p, r) | 曲线坐标 (s, t) | 几何段:直线 / 螺旋线 / 圆弧 / 多项式 参考线 Reference Line 道路骨架 · 一维曲线 承载 s 坐标与几何 车道 Lane 横向条带 · 宽度/类型 右侧 id 负 · 左侧 id 正 道路 Road 参考线 + 车道 + 几何 最基本的可引用单元 交叉口 Junction 多道路交汇区域 内部由连接道路承载 连接关系 Link predecessor / successor laneLink 车道级连通 层级:坐标系 → 参考线 → 车道 → 道路 → 交叉口 / 连接关系 拓扑:道路前后继 + 车道链接共同决定车辆可行驶路径