目录
12 标志
如图95所示,标志是指交通标志、交通灯以及为控制和规范道路交通所设的路标。
标志具备不同的功能和属性:
- 标志用于控制交通行为,例如限速和转弯限制。除此之外,它们还用于警示道路交通路上的危险情况。
- 它们可以是静态或动态的,例如停车标识这样的静态标志并不会改变其传递信息。而例如交通灯等动态标志可在仿真过程中改变其传递信息,它们的状态均可在OpenSCENARIO中得到定义。
必须根据特定的道路对标志进行放置,并通过使用s和t坐标相对于道路参考线对标志的位置进行描述。标志的放置方式必须能够清晰显示出标志所属哪条道路或车道以及它们的生效点。此外,必须要避免模糊的诠释。每个国家的交通规则都有所不同,由此属性@country将用于详细说明标志的所属国。在OpenDRIVE中放置标志时,应考虑各国不同的法律和交通规则。规则生效的年份用于标明法律的更改情况。标志的高度和宽度不是必须存在的,但为能恰当地描述标志,建议使用高度和宽度。若路标没有与交通绑定,则不能将它定义为标志,此类路标只会被定义为物体。带有属性@type和@subtype的标志只有与@country和@countryRevision相结合时才具有唯一性。
在OpenDRIVE中,标志用<road>
元素里的<signals>
元素来表示。
属性,t_road_signals
。<signals>
元素是包含所有沿路标志的容器。t_road_signals_signal
。该属性用于提供沿道路标志的信息,它由一个主元素和一个可选车道有效性元素所组成。标志的标签是<signal>
。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
s | t_grEqZero | m | [0;∞[ | s坐标 |
t | double | m | ]-∞;∞[ | t坐标 |
id | string | - | - | 标志在OpenDRIVE文件中的唯一性ID |
name | string | - | - | 标志的名称;可被任意选择。 |
dynamic | t_yesNo | - | yes, no | 标明了标志是动态还是静态的。示例:交通灯是动态的。 |
orientation | e_orientation | - | +, -, none | +在正s方向有效,-在负s方向有效,none在两个方向有效。 |
zOffset | double | m | ]-∞;∞[ | 从道路到标志底部边缘产生的z偏移;同时也是物体的垂直间隙;且相对于参考线。 |
country | e_countryCode | - | - | 道路的国家代码,见ISO 3166-1, alpha-2代码。 |
countryRevision | string | - | - | - |
type | string | - | -1, none | 根据国家代码而定的类型标识符或"-1" / “none”。参见其他另外文件。 |
subtype | string | - | - | 根据国家代码而定的子类型标识符或"-1" / “none” |
value | double | - | - | 标志的值;若值已被给定,则必须搭配单位来使用。 |
unit | e_unit | - | - | @value的单位 |
height | t_grEqZero | m | [0;∞[ | 标志的高度,从标志底部边缘开始测量 |
width | t_grEqZero | m | [0;∞[ | 标志的宽度 |
text | string | - | - | 与标志相关的附加文本,如关于城市边界的文本为"City\nBadAibling" |
hOffset | double | rad | ]-∞;∞[ | 标志的偏航角偏移(若方向等同于"“或”-“,则相对于@orientation);若方向等同于"none”,标志的偏航角偏移则相对于参考线 |
pitch | double | rad | ]-∞;∞[ | 标志的俯仰角度,相对于惯性系(xy平面) |
roll | double | rad | ]-∞;∞[ | 标志在采用俯仰角后的横滚角角度,相对于惯性系(x´´y´´平面) |
XML示例,
<signals>
<signal>
s="3981.4158159146"
t="-14.0503"
id="5000162"
name="Vorschriftzeichen"
dynamic="no"
orientation="+"
zOffset="3.8835"
country="DE"
countryRevision="2017"
type="274"
subtype="100"
value="100"
unit="km/h"
height="0.77"
width="0.77"
hOffset="0.0"
<signal/>
</signals>
规则,以下规则适用于标志:
- 标志必须有具体的类型和子类型。
- 若已有标志存在,标志必须优先于其它交通规则得到使用。
- 必须使用@country属性添加国家代码来指代各国特定的规则。
- 可使用属性@countryRevision来说明交通规则的生效年份。
- 标志可对单一方向或两个方向有效。
- 标志可为动态或静态。
相关内容:道路、标志放置、控制器。
12.1 针对标志的车道有效性
标志默认为对一条道路上的所有车道均有效。借助车道有效性,则可以将标志的有效性限定于某特定车道。标志在图98中以路标的形状出现,并规定了不同车道的限速。
在OpenDRIVE中,车道有效性用<signal>
元素里的<validity>
元素来表示。规则,以下规则适用于有效性元素:一个标志可对一条或多条车道有效。相关内容:标志、标志依赖、标志放置。
12.2 标志依赖
标志依赖指的是一个标志对另外一个标志输出的控制。例如,当交通灯变红时,警示灯可以自动开启。
关于依赖类型的规则在应用中得到定义,并不存储在OpenDRIVE中。在OpenDRIVE中,标志依赖用 <signal>
元素里的<dependency>
元素来表示。属性,t_road_signals_signal_dependency
。标志依赖指的是一个标志控制着另外一个标志的输出。一个标志可有多个依赖元素。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
id | string | - | - | 被控制标志的ID |
type | string | - | - | 依赖类型;根据应用而定的自由文本 |
XML示例,
<signals>
<signal
s="50.0"
t="-4.0" id="1"
name="SpeedLimit60"
dynamic="no" orientation="+"
zOffset="1.90"
type="274"
country="DE"
countryRevision="2013"
subtype="56"
value="60.0"
unit="km/h"
hOffset="0.0 "
pitch="0.0"
roll="0.0"
height="0.61"
width="0.61">
<dependency id="2" />
</signal>
<signal
s="50.0"
t="-4.0"
id="2"
name="LorriesOnly"
dynamic="no"
orientation="+"
zOffset="1.56"
type="1048"
country="DE"
countryRevision="2013"
subtype="12"
hOffset="0.0"
pitch="0.0"
roll="0.0"
height="0.33"
width="0.60">
</signal>
</signals>
规则,以下规则适用于依赖元素:
- 一个标志可有多个依赖。
- OpenDRIVE中并不具体定义依赖的类型,但可在应用中对其进行设置。
相关内容:标志与物体之间的链、控制器、标志。
12.3 标志与物体之间的链接
通过OpenDRIVE可以将标志与物体或另一标志连接起来。对标志和物体的引用将在元素中(而非上位<signals>
元素中)得到定义,这仅对特定标志有效。连接的类型将根据应用而定,OpenDRIVE并不对其进行定义。关于依赖类型的规则将在应用中得到定义,其并不存储在OpenDRIVE中。在OpenDRIVE中,标志依赖用<signal>
元素里的<dependency>
元素来表示。图98中展示了另一示例。该示例中,限速被描述为路标物体的同时,其也作为标志被引用。在OpenDRIVE中,标志引用用<signal>
元素里的<reference>
元素来表示。属性,t_road_signals_signal_reference
。该属性提供将标志与一系列其它元素(如物体和标志)连接起来的方法。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
elementType | e_road_signals_signal_reference_elementType | - | object, signal | 被连接元素的类型,关于值请参见UML模型。 |
elementId | string | - | - | 被控制标志的ID |
type | string | - | - | 依赖类型;根据应用而定的自由文本。 |
XML示例,请参见文件Ex_Crosswalk.xodr
。规则,以下规则适用于标志引用元素:一个标志可与物体或另一标志进行连接。相关内容:物体、标志。
12.4 标志放置
标志应被放置在使其有效的道路旁,从而使应用可以识别到标志的有效性。该位置被称为标志的逻辑位置。标志的s位置描述了道路上标志生效的位置。在某些情况下,标志的物理位置和逻辑位置是不同的(如图100所示)。OpenDRIVE提供了互相排斥的、用于描述标志物理偏差的两种可行方式。标志的放置对其内容并不产生影响。
- 标志可可被置于由参考线坐标系描述的另一物理位置上。物理位置偏离了逻辑位置的标志用
<signal>
元素里的<positionRoad>
元素来表示。这意味着特定道路的ID与道路的s和t坐标将一同被引用,比如停车标志和停车线的不同位置。 - 标志可被置于由惯性坐标系描述的另一物理位置上。当标志的物理位置偏离了逻辑位置,并且通过惯性坐标系来对其进行放置时,此类标志可用
<signal>
元素里的<positionRoad>
元素来表示。当标志不被置于道路旁而是放置在道路另一侧、或者交叉口上方时,惯性坐标系便会得以使用。
属性,t_road_signals_signal_positionInertial
。该属性描述了在物理位置与逻辑位置有偏差时,物理位置参考点在惯性坐标上的位置。它定义了惯性位置。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
x | double | m | ]-∞;∞[ | x坐标 |
y | double | m | ]-∞;∞[ | y坐标 |
z | double | m | ]-∞;∞[ | z坐标 |
hdg | double | rad | ]-∞;∞[ | 相对于惯性系的标志偏航角 |
pitch | double | rad | ]-∞;∞[ | 标志在采用偏航角后的俯仰角度,相对于惯性系(x’y’平面) |
roll | double | rad | ]-∞;∞[ | 标志在采用偏航角和俯仰角后的横滚角度,相对于惯性系(x’’y’’平面) |
t_road_signals_signal_positionRoad
该属性描述了在物理位置偏离了逻辑位置时,物理位置参考点的道路坐标。它定义了道路上的位置。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
roadId | string | - | - | 被引用道路的唯一性ID |
s | t_grEqZero | m | [0;∞[ | s坐标 |
t | double | m | ]-∞;∞[ | t坐标 |
zOffset | double | m | ]-∞;∞[ | 从道路水平到标志底部边缘产生的z偏移 |
hOffset | double | rad | ]-∞;∞[ | 标志的偏航角偏移(相对于@orientation) |
pitch | double | rad | ]-∞;∞[ | 标志采用hOffset后的俯仰角度,相对于惯性系(x’y’平面) |
roll | double | rad | ]-∞;∞[ | 标志采用hOffset后的横滚角度,相对于惯性系(x’’y’’平面) |
XML示例,UC_LHT-Complex-TrafficLights.xodr
。规则,以下规则适用于标志放置:
- 标志应在被放置在为其有效的道路旁。
- 标志的物理位置可偏离其逻辑位置。
相关内容:标志、标志及区域有效性。
12.5 标志信息的复用
通过对标志的内容进行引用,可在OpenDRIVE中对标志之间的标志信息进行复制。这一快捷选项避免了放置多个类型和内容相同的标志时可能会产生的冲突。若标志已包含复制内容,则必须特别说明该标志适用于道路的哪个方向。标志可同时对多条道路有效,这情况通常发生在交叉口。标志引用可用于将物理标志以逻辑的方式附加在多条道路上(如交通灯)。与<signal>
元素相对应,车道有效性可用于对含有复制内容的标志进行补充,由此能够从标志的有效性范围内包括或排除一些特定车道。置于通往交叉口的一条来路上的限速标志作为含有复制内容的标志的一个示例,该标志对交叉口内每条连接道路均有效。连接道路上的标志会引用和复制标志内容,从而确保所有标志都遵循同样的限速规则。在OpenDRIVE中,出于复用标志信息目的而对另一标志进行的引用用<signal>
元素里的<signalReference>
元素来表示。
属性,t_road_signals_signalReference
。该属性引用了来自多条道路的相同标志。被引用的标志需要一个唯一的ID。<signalReference>
元素由一个主元素和一个可选的车道有效性元素组成。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
x | double | m | ]-∞;∞[ | x坐标 |
y | double | m | ]-∞;∞[ | y坐标 |
id | string | - | - | 引用标志在数据库中的唯一性ID |
orientation | e_orientation | - | +, -, none | +在正s方向有效,-在负s方向有效,none在两个方向均有效 |
规则,以下规则适用于复用标志信息用途:
- 可为每个
<signalReference>
元素添加一个车道有效性元素。 - 标志引用只能为标志所用。
- 对于复用其它标志内容的标志,必须特别规定标志有效的方向。
相关内容:车道有效性、标志、标志放置。
12.6 控制器
控制器为一个或多个动态标志提供相同的状态,是标志组行为的包裹容器。控制器用于对高速公路上的动态速度以及交通灯切换相位进行控制。与标志依赖不同,控制器作为高级元素并不依赖于其它标志。控制器的附加内容(如交通灯相位)存储在OpenDRIVE文件之外。
在OpenDRIVE中,控制器用<OpenDRIVE>
元素里的<controller>
元素来表示。被引用标志的ID存储在 <controller>
元素的<control>
元素中。
属性,t_controller
。控制器为一个或多个动态标志提供相同状态,它是标志组行为的包裹容器。控制器用于对高速公路上的动态速度以及交通灯切换相位进行控制。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
id | string | - | - | 数据库中的唯一性ID |
name | string | - | - | 控制器的名称;可自由选择。 |
sequence | nonNegativeInteger | - | [0;∞[ | 根据其它配有相同逻辑水平控制器得出的该控制器的序列号(优先) |
t_controller_control
,该属性提供了被相应控制器控制的单一标志信息。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
SignalId | string | - | - | 被控制标志的ID |
type | string | - | - | 控制类型;根据应用而定的自由文本 |
XML示例,UC_Simple-X-Junction-TrafficLights.xodr
。规则,以下规则适用于控制器:控制器必须对一个或多个标志有效。相关内容:标志依赖、针对交叉口的控制器、标志。
13 铁路
除了道路,OpenDRIVE还可对轨道交通系统(即电车以及轻轨电车)进行建模。OpenDRIVE不能用于复杂的轨道网络和轨道标志,它只描述道路与轨道相交之处的轨道网络。在OpenDRIVE中,铁路用<road>
元素里的<railroad>
元素来表示。
规则,以下规则适用于铁路:每条铁路都需要一条道路。相关内容:铁轨、转辙器、车站。
13.1 铁轨
在OpenDRIVE中,对铁轨的描述向来是针对铺设着一对铁轨的道路而进行的,因此无法脱离道路来对铁轨进行定义。无论涉及的是一列电车,或共享无轨道交通的空间,亦或是分离无轨道交通,均需要定义一条单独的道路。通过@type属性,根据每条车道来定义铁轨。由于轨道交通与道路交通有所不同,以下建议适用于铁轨建模:图106展示了对道路和铁路使用参考线的区别。
在OpenDRIVE中,铁轨用<lane>
元素里的@type属性来表示。铁路的值为电车和铁轨。规则,以下规则适用于铁路:
- 参考线必须在铁轨对的中心。
- 每条道路只有一列电车异或一条铁轨车道。
- 车道的宽度必须至少是有轨车辆的宽度。
相关内容:铁路、转辙器。
13.2 转辙器
有轨车辆使用转辙器来改变它们的轨道。与交叉口相反,转辙器只能将车辆往两个方向引导。以下介绍了两种不同类型的转辙器:
- 动态转辙器将铁轨拆分成指向两个方向的两条轨道。动态转辙器可在仿真过程中被改变。
- 静态转辙器将铁轨拆分成指向两个方向的两条轨道。静态转辙器在仿真过程中不能被改变。
转辙器可被放置在主轨道任意位置上。图107展示了两个搭档转辙器(12和32)。A边轨道(2)连接两条主轨道(1和3)。
在OpenDRIVE中,转辙器用<railroad>
元素里的<switch>
元素来表示。属性,t_road_railroad_switch
。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
name | string | - | - | 转辙器的唯一性名称 |
id | string | - | - | 转辙器的唯一性ID;最好为整数,请见uint32_t |
position | e_road_railroad_switch_position | - | - | 转辙器是可操作的(动态),或处在静态位置。关于值请看UML模型 |
XML示例,
<railroad>
<switch name="ExampleSwitch12" id="12" position="dynamic">
<mainTrack id="1" s="1.0000000000000000e+01" dir="+"/>
<sideTrack id="2" s="0.0000000000000000e+00" dir="+"/>
<partner name="ExampleSwitch32" id="32"/>
</switch>
</railroad>
规则,以下规则适用于转辙器:转辙器可为动态或静态。相关内容:铁轨、主轨道、次轨道、搭档转辙器。
13.2.1 主轨道
主轨道代表轨道交通的主要线路。主轨道与次轨道有相同的属性。两种轨道类型将作为一个便捷函数来执行,以简化对轨道进入以及离开转辙器过程的建模。请参见图107。在OpenDRIVE中,主轨道用<switch>
元素里的<mainTrack>
元素来表示。属性,t_road_railroad_switch_mainTrack
。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
id | string | - | - | 主轨道的唯一性ID,即<road> 元素。必须与包含此<railroad> 元素的父级一致。 |
s | t_grEqZero | m | [0;∞[ | 转辙器的s坐标,即主轨道与次轨道的交点。 |
position | e_element | - | +, - | 方向,相对于s方向,位于主轨道上,目的则是为通过转辙器进入次轨道时指引方向 |
规则,以下规则适用于主轨道:主轨道不能用于连接两个转辙器。相关内容:次轨道、搭档转辙器。
13.2.2 次轨道
次轨道连接了置于主轨上的两个转辙器,次轨与主轨有相同的属性。两种轨道类型将被作为一个便捷函数来执行,以简化对轨道驶入以及驶出转辙器过程的建模。请参见图107。在OpenDRIVE中,次轨道用<switch>
元素里的<sideTrack>
元素来表示。属性,t_road_railroad_switch_sideTrack
。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
id | string | - | - | 次轨道的唯一性ID,即<road> 元素 |
s | t_grEqZero | m | [0;∞[ | 次轨上转辙器的s坐标 |
position | e_elementDir | - | +, - | 方向,相对于s方向,位于主轨道上,为通过转辙器进入次轨道后指引方向 |
规则,以下规则适用于次轨道:次轨道只能用于连接两个转辙器。相关内容:主轨道、搭档转辙器。
13.2.3 搭档转辙器
出于方便使用的考虑,两个转辙器可被声明为搭档转辙器。它描述了两个被一条次轨连接的转辙器之间的关系。这两个转辙器的设置需保持连贯一致。参见图107,此处的12和32为搭档转辙器。在OpenDRIVE中,搭档转辙器用<switch>
元素里的<partner>
元素来表示。属性,t_road_railroad_switch_partner
。该属性标识了用于在进入次轨之后,又将从次轨上转离的转辙器。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
name | string | - | - | 搭档转辙器的唯一性名称 |
id | string | - | - | 搭档转辙器的唯一性ID |
规则,以下规则适用于搭档转辙器:
- 搭档转辙器必须用于对一条次轨道连接两个转辙器这个情况进行标识。
- 单个转辙器并不拥有搭档转辙器。
相关内容:主轨道、搭档转辙器。
13.3 车站
电车等有轨车辆需要车站以供人们上下车。每个车站都必须至少有一个站台,站台可进一步地被分成几个段,它决定了车站的物理延展部分。<station>
元素也可用于公车站。图108展示了车站的两个场景:
- 在第一个场景中,一个站台被道路1和3引用,指向不同的行驶方向。该站台只由一个段组成。
- 在第二个场景中,站台1只被道路3引用。站台2则被道路1和2引用。站台2被分为两个段。
在OpenDRIVE中,车站用<OpenDRIVE>
元素里的<station>
元素来表示。
属性,t_station
。该属性定义了电车和铁路应用及车辆环境的车站,可引用多条轨道,因此它将在与交叉口的同层级中得到定义。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
name | string | - | - | 车站的唯一性名称 |
id | string | - | - | 数据库中的唯一性ID |
type | e_station_type | - | small, medium, large | 车站类型;根据应用而定的自由文本,例如:small, medium, large |
XML示例,Ex_Railway-station.xodr
。规则,以下规则适用于车站:
- 一个
<station>
元素后面必须跟随着至少一个<platform>
元素。 - 可通过@type属性对车站的类型进行进一步规定。该值被存储在使用的应用内。
相关内容:站台、段、铁路。
13.3.1 站台
一个车站必须包含至少一个站台,而站台必须被一条或多条铁轨引用。请参见图108。在OpenDRIVE中,铁路用<station>
元素里的<platform>
元素来表示。属性,t_station_platform
。每个车站元素必须包含至少一个站台元素。而每个站台元素必须包含至少一个对有效轨道段的引用。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
name | string | - | - | 站台名称;可自由选择。 |
id | string | - | - | 数据库中的唯一性ID |
规则,以下规则适用于站台:
- 每个车站都必须有至少一个站台。
- 一个站台必须包含至少一个段。
相关内容:车站、段。
13.3.2 段
站台可进一步地被分成段,这对沿相同站台往两个不同方向运行的铁轨来说大有用处。一个站台必须包含至少一个段。在OpenDRIVE中,铁路用<platform>
元素里的<segment>
元素来表示。属性,t_station_platform_segment
。每个站台元素在一个或多个轨道段上有效。必须对<segment>
元素进行详细说明。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
roadId | string | - | - | 伴随站台的<road> 元素(轨道)的唯一性ID |
sStart | t_grEqZero | m | [0;∞[ | 有邻接站台的<road> 元素的最小s坐标 |
sEnd | t_grEqZero | m | [0;∞[ | 有邻接站台的<road> 元素的最大s坐标 |
side | e_station_platform_segment_side | - | left, right | 从sStart到sEnd时,轨道靠近站台的一边。关于值请看UML模型 |
规则,以下规则适用于段:每个站台都必须有至少一个段。相关内容:车站、站台。
14 插图目录
略
15 表格目录
略