以下小节包含部分在OpenDrive中对道路进行建模的示范应用案例。
许多道路都有一个路拱,例如用于提供一个排水坡度从而让水能从路面上流入水沟中。图50展示了一个拥有路拱的两车道路的样本定义。

线性路拱拥有以下属性:
XML结构用于描述路拱,中的元素可被使用。使用OpenDRIVE结构对道路形状进行建模,形状元素必须在处于正
t
t
t方向的道路的右侧开始。这意味着元素将会以负
t
t
t值的形式开始。
XML示例,
<lateralProfile>
<shape s="0.0000000000000000e+00"
t="-4.0000000000000000e+00"
a="0.0000000000000000e+00"
b="0.0000000000000000e+00"
c="0.0000000000000000e+00"
d="0.0000000000000000e+00"/>
<shape s="0.0000000000000000e+00"
t="-3.0000000000000000e+00"
a="0.0000000000000000e+00"
b="1.4999999999999999e-01"
c="0.0000000000000000e+00"
d="0.0000000000000000e+00"/>
<shape s="0.0000000000000000e+00"
t="0.0000000000000000e+00"
a="4.5000000000000001e-01"
b="-1.0000000000000001e-01"
c="0.0000000000000000e+00"
d="0.0000000000000000e+00"/>
<shape s="0.0000000000000000e+00"
t="4.0000000000000000e+00"
a="5.0000000000000003e-02"
b="0.0000000000000000e+00"
c="0.0000000000000000e+00"
d="0.0000000000000000e+00"/>
lateralProfile>
在OpenDRIVE中,所有道路都包含了车道。每条道路必须拥有至少一条宽度大于0的车道,并且每条道路的车道数量不受限制。需要使用中心车道对OpenDRIVE中的车道进行定义和描述。中心车道没有宽度,并被用作车道编号的参考,自身的车道编号为0。对其它车道的编号以中心车道为出发点:车道编号向右呈降序,也就是朝负 t t t方向;向左呈升序,也就是朝正 t t t方向。图51展示了一条道路的中心车道,该车道拥有多条交通车道以及不同的行驶方向。在这个示例中,根据靠左行车以及靠右行车的交通模式,中心车道将道路类型中定义的行驶方向分隔开来。由于并未使用车道偏移,因此中心车道等同于道路参考线。

图52展示了拥有相同行驶方向车道的道路(即单行道)的中心车道。

在OpenDRIVE中,车道用元素里的元素来表示。

以下规则适用于车道的使用:
元素用于中心车道。元素的@type属性对双向车道进行详细说明。XML示例,
<lanes>
<laneSection s="0.0">
<left>
<lane id="2" type="border" level="false">
<link>
link>
<width sOffset="0.0" a="1.0" b="0.0" c="0.0" d="0.0"/>
lane>
<lane id="1" type="driving" level="false">
<link>
link>
<width sOffset="0.0" a="4.0" b="0.0" c="0.0" d="0.0"/>
lane>
left>
<center>
<lane id="0" type="none" level="false">
<link>
link>
lane>
center>
<right>
<lane id="-1" type="driving" level="false">
<link>
link>
<width sOffset="0.0" a="4.0" b="0.0" c="0.0" d="0.0"/>
lane>
<lane id="-2" type="border" level="false">
<link>
link>
<width sOffset="0.0" a="1.0" b="0.0" c="0.0" d="0.0"/>
lane>
right>
laneSection>
lanes>
相关内容:在车道段中进行车道分组。
为了能够便利地在OpenDRIVE道路描述中进行查找,一个车道段内的车道可分为左、中和右车道,车道在该组中用元素来描述。由于车道编号朝负
t
t
t方向呈降序且朝正
t
t
t方向呈升序,应用可从ID属性中给出的车道编号中得知车道的方向(除非@type是双向的)。

在OpenDRIVE中,车道组用元素内的、和元素来表示。ID属性用嵌套在、和元素里的元素来定义。

以下规则适用于车道分组:
或元素。元素。元素。相关内容:车道段、车道。
车道可被分成多个段。每个车道段包含车道的一个固定编号。如图56所示,每次车道编号的变更都随之产生一个新车道段的需求。车道段的定义将沿道路参考线按升序来进行。图56中,路段被分割成不同的车道段。若车道编号改变,则需要定义一个新的车道段。

为了能更轻易地在复杂道路上对车道段进行使用,可仅使用@singleSide属性对道路的一侧进行定义。图57展示了这一原理。

在OpenDRIVE中 ,车道段用元素里的元素来表示。
t_road_lanes_laneSection
车道可被分成多个段,每个车道段都包含一个车道的固定编号。每一次的车道编号变更都将需要定义一个新的车道段。
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| s | t_grEqZero | m | [0;∞[ | 起始位置的s坐标 |
| singleSide | t_bool | - | true; false | 车道段元素仅对一侧有效(左、中或右),这将取决于子元素。 |
t_road_lanes_laneSection_center
为了能够便利地在OpenDRIVE的道路描述中进行查找,一个车道段内的车道可分为左、中和右车道。每个车道段均必须包含一个元素和至少一个或元素。
t_road_lanes_laneSection_center_lane
车道元素被包括在左/中/右元素中。车道元素必须使用降序ID从左到右展示车道。
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| id | integer | - | [-∞;∞[ | 车道的ID |
t_road_lanes_laneSection_left
为了能够便利地在OpenDRIVE的道路描述中进行查找,一个车道段内的车道可分为左、中和右车道。每个车道段均必须包含一个元素和至少一个或元素。
t_road_lanes_laneSection_left_lane
车道元素被包括在左/中/右元素中。车道元素必须使用降序ID从左到右展示车道。
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| id | integer | - | [-∞;∞[ | 车道的ID |
t_road_lanes_laneSection_right
为了能够便利地在OpenDRIVE的道路描述中进行查找,一个车道段内的车道可分为左、中和右车道。每个车道段均必须包含一个元素和至少一个或元素。
t_road_lanes_laneSection_right_lane
车道元素被包括在左/中/右元素中。车道元素必须使用降序ID从左到右展示车道。
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| id | integer | - | [-∞;∞[ | 车道的ID |
以下规则适用于车道段:
相关内容:车道、车道段内的车道分组、道路参考线。
车道偏移可用于将中心车道从道路参考线上位移,以便能够更轻松地在道路上对车道的局部横向位移进行建模(比如对左转车道进行建模)。根据用于车道偏移的插值,车道偏移和形状定义两者的组合可导致不一致性。若线性插值被用于定义沿参考线的道路形状,那么它也应被用于偏移定义,以便两者的定义能被一致地组合使用。图58展示了中心车道偏离道路参考线而产生的偏移。

在OpenDRIVE中,车道偏移用元素内的元素来表示。
t_road_lanes_laneOffset
车道偏移可用于将中心车道从道路参考线上位移。
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| s | t_grEqZero | m | [0;∞[ | s s s坐标的起始位置 |
| a | double | m | ]-∞;∞[ | 多项式参数a, 在@s(ds=0)处偏移 |
| b | double | 1 | ]-∞;∞[ | 多项式参数b |
| c | double | 1/m | ]-∞;∞[ | 多项式参数 c |
| d | double | 1/m^2 | ]-∞;∞[ | 多项式参数 d |
计算方式。利用以下三阶多项式函数来计算给定点的偏移:
o
f
f
s
e
t
(
d
s
)
=
a
+
b
⋅
d
s
+
c
⋅
d
s
2
+
d
⋅
d
s
3
offset(ds) = a + b \cdot ds + c \cdot ds^2 + d \cdot ds^3
offset(ds)=a+b⋅ds+c⋅ds2+d⋅ds3
其中,offset是在给定点处的横向偏移,a,b,c,d是系数,ds是新的道路偏移元素起始处和给定位置之间沿道路参考线产生的距离。每当新的元素出现,ds则清零。偏移值的绝对位置计算方式如下:
s
=
s
s
t
a
r
t
+
d
s
s = s_{start} + ds
s=sstart+ds
其中s是参考线坐标系统中的绝对位置,
s
s
t
a
r
t
s_{start}
sstart是参考线坐标系统中元素的起始位置。每一次的多项式函数变更都需要一个新的车道偏移元素。XML示例,
<lanes>
<laneOffset s="25.0" a="0.0" b="0.0" c="3.9e-03" d="-5.2e-05"/>
<laneOffset s="75.0" a="3.25" b="0.0" c="0.0" d="0.0"/>
…
<\lanes>
该示例在Ex_Simple-LaneOffset.xodr中可见。以下规则适用于车道偏移:
相关内容:车道边界、形状定义、车道。
车道的连接信息被存储在OpenDRIVE中以便进行车道查找,并将借助于每条车道的前驱以及后继信息来对连接进行描述。车道和交叉口均可作为车道的前驱和后继部分。车道可连接至相同或不同道路上的其它车道上。

在OpenDRIVE中,车道连接用元素里的元素来表示。和元素在元素内得到定义。

属性
t_road_lanes_laneSection_lcr_lane_link
前面的和后置车道信息为有着相同参考线的车道之间的连接提供了车道在前面的以及后置车道段中的ID。只有在车道在一个路口结束或不具有物理连接时,这一元素才可被删除。
t_road_lanes_laneSection_lcr_lane_link_predecessorSuccessor
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| id | integer | - | [-∞;∞[ | 前驱/后继连接的车道ID |
以下规则适用于车道连接:
元素。相关内容:道路连接、交叉口、车道。
车道属性描述了车道的用途以及形状。每个车道段都定义了一条车道属性,该属性也可能在该车道段中有变化。如果没有特意为车道段定义一条属性,应用便可采用默认属性。

车道属性的示例是车道宽度、车道边界和限速。以下规则适用于车道属性:
车道的宽度是沿
t
t
t坐标而定义的。车道的宽度有可能在车道段内产生变化。车道宽度与车道边界元素在相同的车道组内互相排斥。若宽度以及车道边界元素在OpenDRIVE文件中同时供车道段使用,那么应用必须使用元素提供的信息。在OpenDRIVE中,车道宽度由元素中的元素来描述。
属性
t_road_lanes_laneSection_lr_lane_width
车道的宽度必须在每个车道段里至少被定义一次。中心车道不能有宽度,也就意味着不能对中心车道使用元素。车道的宽度都必须保持有效,直到一个新的宽度元素被定义或车道段结束。
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| s | t_grEqZero | m | [0;∞[ | 要相对于前驱元素的位置的起始位置的s坐标 |
| a | double | m | ]-∞;∞[ | 多项式参数a,在@s(ds=0)处偏移 |
| b | double | 1 | ]-∞;∞[ | 多项式参数b |
| c | double | 1/m | ]-∞;∞[ | 多项式参数c |
| d | double | 1/m² | ]-∞;∞[ | 多项式参数d |
计算方式,利用以下三阶多项式函数来计算给定点的宽度:
W
i
d
t
h
(
d
s
)
=
a
+
b
⋅
d
s
+
c
⋅
d
s
2
+
d
⋅
d
s
3
Width(ds) = a + b \cdot ds + c \cdot ds^2 + d \cdot ds^3
Width(ds)=a+b⋅ds+c⋅ds2+d⋅ds3
其中,width是给定点处的宽度,a,b,c,d是系数,ds是新的道路宽度元素起始处和给定位置之间沿道路参考线产生的距离。每当新的元素出现,ds则清零。宽度值的绝对位置计算方式如下:
s
=
s
s
e
c
t
i
o
n
+
o
f
f
s
e
t
s
t
a
r
t
+
d
s
s = s_{section} + offset_{start} + ds
s=ssection+offsetstart+ds
其中,s是参考线坐标系统里的绝对位置,
s
s
e
c
t
i
o
n
s_{section}
ssection是轨迹坐标系里前面的车道段元素的起始位置,
o
f
f
s
e
t
s
t
a
r
t
offset_{start}
offsetstart是相对于前面的车道段的元素的偏移。
图62:每个车道段的车道宽度改变也代表了起始于不同偏移位置正s方向的车道宽度中的改变。

XML示例,参见样本文件Ex_Lane-Width.xodr。
规则,以下规则适用于车道宽度:
元素。元素。相关内容:车道段、车道段内的车道分组、超高程、形状定义。
车道边界是用来描述车道宽度的另一种方法,它并不会直接定义宽度,而是在独立于其内部边界参数的情况下,对车道的外部界限进行定义。根据上述情况,内车道也被定义为车道,该车道虽然与当前被定义的车道有着相同ID符号,但内车道的ID绝对值要更小。相比较对宽度进行详细说明而言,此类定义要更加地便利。尤其是在道路数据是源自于自动测量结果的情况下,该方式可以避免多个车道段被创建。车道宽度与车道边界元素在相同的车道组内互相排斥。若宽度以及车道边界元素在OpenDRIVE文件中同时供车道段使用,那么应用必须使用元素提供的信息。在OpenDRIVE中,车道边界用元素中的元素来表示。
属性,
t_road_lanes_laneSection_lr_lane_border
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| soffset | t_grEqZero | m | [0;∞[ | 元素起始位置的s坐标,相对于前面的元素的位置 |
| a | double | m | ]-∞;∞[ | 多项式参数a,在@s(ds=0)处偏移 |
| b | double | 1 | ]-∞;∞[ | 多项式参数b |
| c | double | 1/m | ]-∞;∞[ | 多项式参数c |
| d | double | 1/m² | ]-∞;∞[ | 多项式参数d |
计算方式,利用以下三阶多项式函数来计算给定点的边界位置:
t
b
o
r
d
e
r
(
d
s
)
=
a
+
b
⋅
d
s
+
c
⋅
d
s
2
+
d
⋅
d
s
3
t_{border}(ds) = a + b \cdot ds + c \cdot ds^2 + d \cdot ds^3
tborder(ds)=a+b⋅ds+c⋅ds2+d⋅ds3
其中,
t
b
o
r
d
e
r
t_{border}
tborder是给定ds位置的边界的t位置,
a
,
b
,
c
,
d
a,b,c,d
a,b,c,d是系数,
d
s
ds
ds是元素起始处和给定位置之间沿道路参考线产生的距离。每当新的元素出现,ds则清零。边界偏移值的绝对位置计算方式如下:
s
=
s
s
e
c
t
i
o
n
+
o
f
f
s
e
t
s
t
a
r
t
+
d
s
s = s_{section} + offset_{start} + ds
s=ssection+offsetstart+ds
其中,s是参考线坐标系统中的绝对位置,
s
s
e
c
t
i
o
n
s_{section}
ssection是轨迹坐标系中前驱车道段元素,
o
f
f
s
e
t
s
t
a
r
t
offset_{start}
offsetstart是相对于前驱车道段元素的元素的偏移。图63展示了在给定范围内具有变化边界形状的车道的这一惯例:

XML示例,参见样本文件Ex_Lane-Border.xodr。以下规则适用于车道边界:
相关内容:车道段、车道段内车道分组。
每条车道都会被定义一个类型。车道类型定义了车道的主要用途及与其相对应的交通规则。可用的车道类型有:
关于车道类型的使用,请见图64到图68。





在OpenDRIVE中,车道类型用元素内属性@type元素来表示。属性,
t_road_lanes_laneSection_lr_lane
车道元素被包括在左/中/右元素中。车道元素应按降序ID从左到右展示车道。
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| type | e_laneType | - | - | 车道类型。关于值请见UML模型。 |
| level | t_bool | - | - | "真"将车道保持在水平,也就是说不要采用超高程;"假"对此车道采用超高程(为默认设置,若属性水平缺失时也可用) |
以下规则适用于车道类型:可通过使用新的车道段根据需要多次地更改车道类型。相关内容:车道。
除OpenCRG之外,OpenDRIVE提供了一个用于存储车道材质信息(即表面、摩擦属性及粗糙程度)的元素。若未对材质进行定义,那么应用可采用默认值。在OpenDRIVE中,车道材质用元素内的元素来表示。属性,
t_road_lanes_laneSection_lr_lane_material
该属性存储了关于车道材质的信息。直到新的元素得到定义,每个元素都将保持有效。若有多个元素得到定义,它们必须按升序被排列。
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| soffset | t_grEqZero | m | [0;∞[ | 起始位置的s坐标,相对于前面的元素的位置 |
| surface | string | - | - | 根据应用而定的表面材质代码 |
| friction | t_grEqZero | - | [0;∞[ | 摩擦力系数 |
| roughness | t_grEqZero | - | [0;∞[ | 粗糙程度,例如形容声音以及运动系统 |
规则,以下规则适用于车道材质:
相关内容:车道、车道段、在车道段内车道分组。
可对车道上允许的最大行驶速度进行定义,该车道限速随即将覆盖道路限速。

在OpenDRIVE中,车道速度用元素内的元素来表示。属性,
t_road_lanes_laneSection_lr_lane_speed
该属性定义了给定车道上允许的最大行驶速度。直到新的元素得到定义,每个元素都在s坐标的增长方向中继续有效。
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| soffset | t_grEqZero | m | [0;∞[ | 起始位置的s坐标,相对于前面的元素的位置 |
| max | t_grEqZero | m/s | [0;∞[ | 最大允许速度 |
| unit | e_unitSpeed | - | - | max属性的单位。关于值请参见UML模型。 |
XML示例:
<lane id="-1" type="driving" level="false">
<link>
<successor id="-3"/>
link>
<width sOffset="0.0" a="2.0" b="0.0" c="0.0" d="0.0"/>
<speed sOffset="0.0" max="80.0" unit="km/h"/>
<height sOffset="0.0" inner="0.12" outer="0.12"/>
lane>
规则,以下规则适用于车道限速:
相关内容:车道、标志、道路类型的限速。
车道可局限于特定的道路使用者,例如卡车或公共汽车。这类限制可在道路标识描述的限制之上另外在OpenDRIVE中得到定义。

OpenDRIVE在元素内提供了元素,以便描述车道使用规则。属性,
t_road_lanes_laneSection_lr_lane_access
该属性定义了针对特定道路使用者类型的车道使用限制。每个元素在s坐标的增长方向中都是有效的,直到新的元素得到定义。若多个元素得到定义,那它们必须按升序得到排列。
| 名称 | 类型 | 单位 | 值 | 描述 |
|---|---|---|---|---|
| soffset | t_grEqZero | m | [0;∞[ | 起始位置的s坐标,相对于前驱元素的位置 |
| rule | e_road_lanes_laneSection_lr_lane_access_rule | - | - | 详细说明了在@restriction属性中指定的参与者是否可以使用已知车道 |
| restriction | e_accessRestrictionType | - | - | 限制所针对参与者的标识符。关于值,请参见UML模型 |
XML示例,
<lane id="2" type="driving" level="false">
<link>
<successor id="2"/>
link>
<width sOffset="0.0" a="2.0" b="0.0" c="0.0" d="0.0"/>
<access sOffset="0.0" rule="allow" restriction="bus"/>
lane>
规则,以下规则适用于车道使用规则:
元素存在,则也没有使用限制。元素里出现否定值,那么所有其它车辆仍被允许使用车道。元素里出现允许值,那么所有其它车辆则被禁止使用车道。相关内容:车道、车道段。