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 曲线坐标,几何段用直线、螺旋线、圆弧、多项式等描述。
关键记忆:参考线是“骨”,车道是“肉”,道路是“器官”,交叉口是“关节”,连接关系是“韧带”,坐标系与几何是“度量衡”。
二、方法流程:一条道路的建模顺序
在工程实践中,通常按以下顺序构建一条道路:
- 确定参考线的起点位姿(x, y, h)与初始几何段。
- 沿 s 方向依次定义 geometry 段:直线、螺旋线、圆弧或参数三次多项式。
- 划分 laneSection,指定每个横断面的车道数量、宽度与类型。
- 为每条车道定义 laneLink,建立前后继关系。
- 若与其他道路相交,创建 junction,并生成连接道路与 laneLink。
- 补充标线、信号、路面属性等附属元素。
下面是一个最小化的道路几何片段示例,展示参考线与车道段的组织方式:
<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> 等元素时,就能快速定位每个字段在道路网络中的角色,为后续几何构建、拓扑校验与仿真验证打下基础。