目录
11 物体
物体指的是通过拓展、定界以及补充道路走向从而对道路产生影响的项。最常见的例子是停车位、人行横道以及交通护栏。图83展示了两种用于描述物体的边界框的方式:
- 四边形物体:定义宽度、长度以及高度
- 圆形物体: 定义半径以及高度
可使用<outline>
元素对复杂的物体进行进一步的描述。若<outline>
得到定义,它则会取代边界框。OpenDRIVE中的物体不会改变自身位置,且可以动态或静态的方式得到声明:
- 动态物体虽是静态的,但它具备一个或以上的可移动部分,例如隧道内或风车上的风扇。
- 静态物体是完全静态的且不具有任何可移动部分,例如建筑物或树木。
在OpenDRIVE 中,物体用<object>
元素中的<objects>
元素来表示。其按每个<road>
元素被定义。
属性,t_road_objects
。该属性是沿着道路上所有物体的容器。t_road_objects_object
。该属性描述了常见的、从给定道路中引用而来的三维物体。物体作为项会通过拓展、定界以及补充道路的走向而对其产生影响。最常见的例子为停车位、人行横道以及交通护栏。共有两种方式用于描述物体的边界框。
- 四边形物体:定义宽度、长度以及高度
- 圆形物体: 定义半径以及高度
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
s | t_grEqZero | m | [0;∞[ | 物体原点的s坐标 |
t | double | m | ]-∞;∞[ | 物体原点的t坐标 |
zOffset | double | m | ]-∞;∞[ | 相对于参考线高程的物体原点的z-偏移 |
type | e_objectType | - | - | 物体的类型。关于值的详情参见UML。可附加将<parkingSpace> 元素用于停车位。 |
validLength | t_grEqZero | m | [0;∞[ | 沿着s轴的物体有效性(对于点物体,值为0.0) |
orientation | e_orientation | - | +, -, none | “” = 在正s方向有效, "-"在负s-方向有效,+ “none” =在两个方向都有效+(不影响航向角/偏航角) |
subtype | string | - | yes, no | 标明了物体是静态还是动态的,默认值为"no"(静态)。动态物体无法改变其位置。 |
hdg | double | rad | ]-∞;∞[ | 相对于道路方向的物体的偏航角 |
name | string | - | - | 物体的名称;可随意选择 |
pitch | double | rad | ]-∞;∞[ | 相对于x/y平面的俯仰角 |
id | string | - | - | ID在数据库中是唯一的 |
roll | double | rad | ]-∞;∞[ | 相对于x/y平面的横滚角 |
height | double | m | ]-∞;∞[ | 物体的边界框高度;@height在局部坐标系u/v里沿z轴得到定义 |
length | double | m | [0;∞[ | 物体的边界框长度,替代@radius属性。@length在局部坐标系u/v里沿v轴得到定义 |
width | double | m | [0;∞[ | 四边形物体的边界框宽度,替代@radius属性。@width在局部坐标系u/v里沿u轴得到定义 |
radius | double | m | [0;∞[ | 圆形物体边界框的半径,代替@length和@width。@radius在局部坐标系u/v里得到定义 |
XML示例,
<objects>
<object
type="building"
name="ExampleBuilding"
id="1"
s="80.0"
t="17.0"
zOffset="0.0"
orientation="none"
length="12.15"
width="22.415"
height="11.84"
hdg="1.44"
pitch="0.0"
roll="0.00">
</object>
</objects>
规则,以下规则适用于物体:
- 物体的类型必须由@type属性给出。
- 物体可以是动态或静态的。
- 源自OpenSCENARIO的物体不能与OpenDRIVE中的物体混合。
- 必须详细说明物体有效的方向。
- 必须使用s以及t坐标来描述物体的原点位置。
- 物体的形状可以是圆形或四边形的,但两者不能并存。形状由使用的属性来定义。
相关内容:重复物体、道路、物体轮廓。
11.1 重复物体
为了避免XML代码过长,可以重复相同类型的物体。可以对重复物体的属性进行更改。此元素主要用于描述栏杆、栏杆柱以及路灯。图85展示了一个较大的四边形物体,它重复了其它物体。图86和图87展示了多个较小的重复物体,图86中展示的是四边形物体,图87中展示的是圆形物体。
在OpenDRIVE中,重复物体用<object>
元素中的<repeat>
元素来表示。属性,t_road_objects_object_repeat
。为了避免XML代码过长,相同类型的物体可以被重复。重复物体的属性必须替代原始物体的属性。如果被重复物体的属性被省略,则原始物体的属性适用。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
s | t_grEqZero | m | [0;∞[ | 起始位置的s坐标,覆盖了原始<object> 记录中的相应参数。 |
length | t_grEqZero | - | [0;∞[ | 重复区域的长度,沿参考线在s方向内 |
distance | t_grEqZero | m | [0;∞[ | 两个物体实例之间的距离。若值为零,物体则将作为连续特征处理,比如护栏、墙或其它。 |
tStart | double | m | ]-∞;∞[ | 位于@s的物体参考点的横向偏移 |
tEnd | double | m | ]-∞;∞[ | 位于@s + @length的物体参考点的横向偏移 |
heightStart | double | m | ]-∞;∞[ | 位于@s的物体高度 |
heightEnd | double | m | ]-∞;∞[ | 位于@s + @length的物体高度 |
zOffsetStart | double | m | ]-∞;∞[ | 位于@s的物体z偏移,相对于参考线的高程 |
zOffsetEnd | double | m | ]-∞;∞[ | 位于@s + @length的物体z偏移,相对于参考线的高程 |
widthStart | t_grEqZero | m | [0;∞[ | 位于@s的物体宽度 |
widthEnd | t_grEqZero | m | [0;∞[ | 位于@s + @length的物体宽度 |
lengthStart | t_grEqZero | - | - | - |
lengthEnd | t_grEqZero | - | - | - |
radiusStart | t_grEqZero | - | - | - |
radiusEnd | t_grEqZero | - | - | - |
XML示例,
<objects>
<object
type="streetLamp"
name="ExampleStreetLamp"
id="2"
s="15.00"
t="5.0"
zOffset="0.0"
orientation="none"
length="0.14"
width="1.28"
height="7.35"
hdg="0.0"
pitch="0.00"
roll="0.0000">
<repeat
s="15.0"
length="180.0"
distance="60.00"
tStart="5.0"
tEnd="5.0"
widthStart="1.28"
widthEnd="1.28"
heightStart="7.35"
heightEnd="7.35"
zOffsetStart="0.0"
zOffsetEnd="0.0"/>
</object>
</objects>
规则,以下规则适用于重复物体:
- 重复物体的参数可以不同于原始物体的参数。
- 重复物体的参数必须取代原始物体的参数。
相关内容:物体、交叉口组。
11.2 物体轮廓
物体可有一个轮廓。由于其复杂性,无法单独用四边形和圆形物体的参数来描述。因此,可使用更详细的方式对多边形或非矩形物体的轮廓进行描述。轮廓定义了一系列端点,其中包含了相对于道路参考线的物体的高度。可用例如草、混凝土、沥青或行人通道等填充物类型对被述轮廓的内部区域进行填充。物体轮廓的定义主要用于交通岛、有着不规则形状的停车位以及特殊的道路线。
在OpenDRIVE中,物体轮廓用<object>
元素内的<outlines>
元素来表示。<outlines>
元素被视作 <outline>
元素的包裹容器,该元素本身包含了用于描述例如弯路,桥梁和边界等内容的其它元素。属性,t_road_objects_object_outlines_outline
。该属性定义了一系列端点,其中包括相对于道路参考线的物体的高度。端点应按逆时针顺序在区域中列出。<outline>
元素之后必须跟随着一个或多个 <cornerRoad>
元素,或同样是一个或多个<cornerLocal>
元素。OpenDRIVE 1.4中的轮廓定义(不包含<outlines>
父级元素)应继续得到支持,但是必须弃用。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
id | nonNegativeInteger | - | [0;∞[ | 轮廓的ID,在一个物体中必须是唯一的。 |
fillType | e_outlineFillType | - | - | 类型用于填充轮廓中的区域。关于值请参见UML模型。 |
outer | t_bool | - | true, false | 该属性定义了轮廓是否是物体的外轮廓 |
closed | t_bool | - | true, false | 属性若为真,轮廓则描述了一个区域,而不是一个显性特征。 |
laneType | e_laneType | - | - | 该属性描述了轮廓的车道类型。关于值请参见UML模式。 |
XML示例,Ex_TrafficIsland-CornerRoad.xodr
。规则,以下规则适用于轮廓元素:
<outline>
元素必须伴随一个或以上的<cornerRoad>
元素或者<cornerLocal>
元素。<outline>
元素可呈现一个区域或者线条特征。- 被述轮廓的内部区域可由填充物类型进行填充。
- 轮廓可被说明为物体的内轮廓或外轮廓。可对被描述的轮廓是否被置于物体的外边界这类情况进行详细说明。
- 可使用应用处理物体车道类型的方式对轮廓进行详细说明。
<outline>
元素的所有点都必须置于边界框内。
相关内容:道路坐标系边角、局部坐标边角、物体
11.2.1 道路坐标系边角
道路坐标系边角是<outline>
中的强制性元素,它们被用于描述物体的非线性形状且与<cornerLocal>
元素互斥。道路坐标系边角通过其s-以及t-坐标描述了相对于道路参考线的物体轮廓。物体的形状可由物体在边角的高度以及相对于参考线的高度差来描述。图89展示了拥有若干端点的非线性物体,该物体由沿着参考线的s-和t-坐标来描述。道路坐标系边角有助于将物体沿着道路进行放置,比如放置混凝土障碍。
在OpenDRIVE中,道路坐标系边角用<outline>
元素中的<cornerRoad>
元素来表示。属性,t_road_objects_object_outlines_outline_cornerRoad
。该属性定义了在道路坐标内的、物体轮廓上的端点。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
s | double | m | [-∞;∞[ | 道路坐标系边角的s坐标 |
t | double | m | [-∞;∞[ | 道路坐标系边角t坐标 |
dz | double | m | [-∞;∞[ | 相对于道路参考线的道路坐标系边角的dz |
height | double | m | [-∞;∞[ | 物体在该道路坐标系边角上的高度,沿着z轴 |
id | nonNegativeInteger | - | [0;∞[ | 轮廓点的ID,在一个轮廓中必须是唯一的。 |
XML示例,Ex_TrafficIsland-cornerRoad.xodr
。规则,以下规则适用于cornerRoad元素:
- 一个
<outline>
元素中必须存在至少两个<cornerRoad>
元素。 <cornerLocal>
元素与<cornerRoad>
元素不得并排存在于同一个<outline>
元素中。
相关内容:局部坐标系边角、物体轮廓、超高程。
11.2.2 局部坐标系边角
局部坐标系边角是<outline>
中强制性的元素,它们被用来描述物体的非线性形状且与<cornerRoad>
元素互斥。局部坐标系边角描述了局部u/v坐标系中的物体轮廓。图90展示了一个非线性的物体,该物体拥有局部坐标系中描述的多个端点。局部坐标系边角有助于对道路之外的物体相对于单个点进行放置,例如建筑物或交通岛。
在OpenDRIVE中,局部坐标系边角用<outline>
元素中的<cornerLocal>
元素来表示。属性,t_road_objects_object_outlines_outline_cornerLocal
。该属性用于描述物体的复杂形状。它定义了一个处于物体轮廓上的端点,该点相对于局部u/v坐标中的物体支点。物体的支点以及方向由<object>
元素的s/t/偏航角参数给出。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
u | double | m | [-∞;∞[ | 局部坐标系边角的局部u坐标 |
v | double | m | [-∞;∞[ | 局部坐标系边角的局部v坐标 |
z | double | m | [-∞;∞[ | 局部坐标系边角的局部z坐标 |
height | double | m | [-∞;∞[ | 局部坐标系边角上的物体高度,沿z轴 |
id | nonNegativeInteger | - | [0;∞[ | 轮廓点的ID,在一个轮廓中必须是唯一的。 |
XML示例,参见应用案例文件UC_2Lane-Roundabout-3Arms.xodr
。规则,以下规则适用于cornerLocal元素:
- 一个
<outline>
元素中必须至少存在两个<cornerLocal>
元素。 - 不允许在相同的
<outline>
元素中混合使用<cornerRoad>
以及<cornerLocal>
元素。
相关内容:局部坐标系边角、物体轮廓。
11.3 物体的材质
置于道路上的物体(比如道路补丁)可由不同于它周围的道路的材质组成。因此,物体的材质可单独被定义。在OpenDRIVE中,可以对表面、粗糙度以及摩擦力进行描述。值将根据应用而定且不在OpenDRIVE中被定义。在OpenDRIVE中,物体的材质用<object>
元素中的<material>
元素来表示。属性,t_road_objects_object_material
。该属性描述了物体的材质属性,例如补丁属于道路表面的一部分,但仍不同于常规道路材质。该属性将取代在<road material>
元素中被说明的材质,且仅在父级道路物体轮廓内有效。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
surface | string | - | - | 路面材质的代码,根据应用而定。 |
friction | t_grEqZero | - | [0;∞[ | 摩擦力值,根据应用而定。 |
roughness | t_grEqZero | - | [0;∞[ | 例如声音以及运动系统的粗糙度,根据应用而定。 |
规则,以下规则适用于物体的材质:物体的材质可不同于它周围的道路。相关内容:物体。
11.4 物体的车道有效性
物体默认为对所有道路的车道有效。道路有效性只允许为特定车道渲染物体。在OpenDrive中,车道有效性用<object>
元素中的<validity>
元素来表示。规则,以下规则适用于有效性元素:
- 一个物体可以对特定车道有效。
- 一个物体可以只对一条车道有效。
相关内容:物体、物体引用。
11.5 停车位的使用规则
停车位这个物体类型与所有其它物体类型无异,均是通过使用<object>
元素内的@type=parkingSpace属性来定义的。如图91所示,停车位的轮廓由<cornerRoad>
或<cornerLocal>
元素描述。特定停车位的使用可能局限于某个群体,例如残障人士或居民,或某种车辆组(比如公交车)。更多的限制并不包含在OpenDRIVE中,它们将根据应用而定。
在OpenDRIVE中,停车位的使用规则用<object>
元素里的<parkingSpace>
元素来表示。属性,
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
access | e_road_objects_object_parkingSpace_access | - | all, car, women, handicapped, bus, truck, electric, residents | 停车位的使用定义。标有"女士" and "残疾人"的停车位属于轿车的类型。关于值,请参见UML模型。 |
restrictions | string | - | - | 自由文本;根据应用而定。 |
XML示例,Ex_Parkingspace_Rectangular.xodr Ex_Parkingspace_rhomboid.xdor
。规则,以下规则适用于parkingSpace元素:
- 对于特定停车位的使用可受限于特定人群或车辆分组。
- 可定义更多使用限制,但它们并不是OpenDRIVE的一部分。
相关内容:物体、道路坐标系边角、局部坐标系边角。
11.6 物体的标识
标识描述了所有物体的道路线,比如人行横道、停止线以及停车位。标识根据元素的边界框或通过物体的轮廓点得到定义。
在OpenDRIVE中,物体的标识用<object>
元素中的<markings>
元素来表示。<markings>
元素作为 <marking>
元素的包裹容器,它包含了更多关于标识的信息。通过引用相应轮廓点的ID,可为一个轮廓点到另一个轮廓点之间的直线定义标识。 为此,<marking>
元素内的<cornerReference>
元素将得以使用。属性,t_road_objects_object_markings
。该属性使用多种标识元素对停车位的状态进行描述。t_road_objects_object_markings_marking
。该属性详细说明了一个附加在物体边界框一边的或引用轮廓点的标识。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
side | e_sideType | - | - | 局部坐标系中的<object> 元素所描述的边界框的边。关于值请参见UML模型。 |
weight | e_roadMarkWeight | - | - | 常规的;标识的"weight粗细" 设置为bold Optical。关于值请参见UML模型。 |
width | t_grZero | m | [0;∞[ | 标识的宽度 |
color | e_roadMarkColor | - | - | 标识的颜色。关于值请参见UML模型。 |
zOffset | t_grEqZero | m | [0;∞[ | 道路上方路标的高度,即路标的厚度。 |
spaceLength | t_grEqZero | m | [0;∞[ | 可见部分之间空隙的长度。 |
lineLength | t_grZero | m | [0;∞[ | 可见部分的长度 |
startOffset | double | m | ]-∞;∞[ | 从边界框边开始(同时也是第一个标识开始的地方)u方向内的横向偏移 |
stopOffset | double | m | ]-∞;∞[ | 从边界框边结束(同时也是标识结束的地方)u方向内的横向偏移 |
t_road_objects_object_markings_marking_cornerReference
通过对已有的轮廓点进行引用,该属性详细说明了一个点。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
id | nonNegativeInteger | - | [0;∞[ | 轮廓点的索引 |
XML示例,
<objects>
<object type="crosswalk" id="10" s="10.0" t="0.0" zOffset="0.0"
orientation="none" length="10.0" width="7.0" hdg="0.0" pitch="0.0" roll="0.0">
<outlines>
<outline id="0">
<cornerRoad s="5.0" t="3.5" dz="0.0" height="4.0" id="0"/>
<cornerRoad s="8.0" t="-3.5" dz="0.0" height="4.0" id="1"/>
<cornerRoad s="12.0" t="-3.5" dz="0.0" height="4.0" id="2"/>
<cornerRoad s="15.0" t="3.5" dz="0.0" height="4.0" id="3"/>
</outline>
</outlines>
<markings>
<marking width="0.1" color="white" zOffset="0.005" spaceLength ="0.05"
lineLength ="0.2" startOffset="0.0" stopOffset="0.0">
<cornerReference id="0"/>
<cornerReference id="1"/>
</marking>
<marking width="0.1" color="white" zOffset="0.005" spaceLength ="0.05"
lineLength ="0.2" startOffset="0.0" stopOffset="0.0">
<cornerReference id="2"/>
<cornerReference id="3"/>
</marking>
</markings>
</object>
</objects>
规则,以下规则适用于物体标识元素:
- 对一个物体的标识必须其轮廓中被全部或部分定义。
- 标识的颜色必须被定义。
- 若没有使用任何轮廓,@side属性则将是必要的。
- 若使用了一个轮廓,则至少两个
<cornerReference>
元素是必要的。
相关内容:物体轮廓、物体、物体边界。
11.7 物体边界
物体可以拥有一个边界,该边界指的是已定义宽度的边框。不同的边界类型(目前有混凝土以及路缘)可供例如交通岛使用。在OpenDRIVE中,物体边界用<object>
元素中的<borders>
元素来表示。<borders>
元素被视作<border>
元素的包裹容器,该元素本身包含了更多的属性用于描述边界。属性,
t_road_objects_object_borders
物体可以拥有一个边界,它是一个被定义了宽度的边框。有不同的边界类型可供使用。t_road_objects_object_borders_border
。该属性详细说明了一条沿着若干轮廓点的边界。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
width | t_grEqZero | m | [0;∞[ | 边界宽度 |
type | e_borderType | - | - | 边界的状态。关于值请参见UML模型 |
outlineId | nonNegativeInteger | - | [0;∞[ | 用于将要使用的轮廓ID |
useCompleteOutline | t_bool | - | true, false | 为边界使用所有轮廓点。"true"作为默认使用。 |
规则,以下规则适用于物体边界:
- 若
useCompleteOutline
为真,<cornerReference>
不能被定义。 - 若
useCompleteOutline
为伪,则需要至少两个<cornerReference>
。
相关内容,物体轮廓、物体、物体标识。
11.8 物体引用
可以将一个物体连接到一条或以上道路、标志或其它物体上。此类连接代表了两个元素之间的逻辑连接。物体引用可以在多种情况下得以使用。假如一条人行横道穿过多条道路,便可以使用物体引用。在这种情况下,对人行横道的定义只针对一条道路,随即该人行横道会被其它与之相关的道路引用。车道有效性元素可用于指出物体引用对于哪条车道来说是有效的。在OpenDRIVE中,物体引用用 <objects>
元素中的<objectReference>
元素来表示。属性,t_road_objects_objectReference
。可以使用 <objectReference>
元素将一个物体与一条或以上的道路、标志或其它物体进行连接。被引用的物体需要一个唯一的ID。物体引用元素由一个主元素和一个可选的车道有效性元素组成。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
s | t_grEqZero | m | [0;∞[ | s坐标 |
t | double | m | ]-∞;∞[ | t坐标 |
id | string | - | - | 被引用物体在数据库中的ID是唯一的 |
zOffset | double | m | ]-∞;∞[ | 相对于参考线高程的z偏移 |
validLength | t_grEqZero | m | [0;∞[ | 沿s轴的物体有效性(点物体为0.0) |
orientation | e_orientation | - | +, -, none | -在负s方向有效,none在两个方向均有效。 |
相关性:车道有效性、物体。
11.9 隧道
在OpenDRIVE中,隧道是作为物体被建模的。根据定义,隧道对道路的整个横截面均有效。可对隧道的不同属性进行描述:长度、隧道是否等同于一个地下通道且有日光照射、以及光照条件。图93展示了一条对整个道路横截面有效的隧道。
在OpenDRIVE中,隧道用<objects>
元素中的<tunnel>
元素来表示。属性,t_road_objects_tunnel
。隧道在OpenDRIVE是作为物体被建模的。除非一个有着更多限制的车道有效性元素被作为子级使用,否则隧道将适用于在给定范围内的整个道路横截面。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
s | t_grEqZero | m | [0;∞[ | s坐标 |
length | t_grEqZero | m | [0;∞[ | 隧道的长度(在s方向中) |
name | string | - | - | 隧道的名称。可随意选择。 |
id | string | - | - | ID在数据库中是唯一的 |
type | e_tunnelType | - | - | 隧道的类型;关于值请参见UML模型。 |
lighting | t_zeroOne | - | [0;1] | 人造隧道光照的程度,根据应用而定。 |
daylight | t_zeroOne | - | [0;1] | 日光照进隧道的程度,根据应用而定。 |
XML示例,
<objects>
<tunnel
s="50.0"
length="100.0"
name="ExampleTunnel"
id="1"
type="standard"
lighting="0.2"
daylight="0.9" />
</objects>
规则,以下规则适用于隧道元素:
- 在使用
<laneValidity>
元素时,隧道可受限于某些车道。 - 必须对隧道的@type属性进行详细说明。
相关内容:桥梁、道路横截面、车道有效性。
11.10 桥梁
桥梁在OpenDRIVE中是作为物体被建模的。根据定义,桥梁对于一条道路完整的横截面均有效。可对桥梁的不同属性进行描述:长度以及例如混凝土、钢铁或砖头等类型。图94展示了一座对整个道路横截面有效的桥梁。
在OpenDRIVE中,桥梁用<objects>
元素中的<bridge>
元素来表示。t_road_objects_bridge
。桥梁在OpenDRIVE中是作为物体被建模的。除非一个有着更多限制的车道有效性元素被作为子级使用,否则桥梁对整个道路横截面均有效。
名称 | 类型 | 单位 | 值 | 描述 |
---|---|---|---|---|
s | t_grEqZero | m | [0;∞[ | s坐标 |
length | t_grEqZero | m | [0;∞[ | 桥梁的长度(在s方向中) |
name | string | - | - | 桥梁的名称。可随意选择。 |
id | string | - | - | ID在数据库中是唯一的 |
type | e_bridgeType | - | concrete, steel, brick, wood | 桥梁的类型;关于值请参见UML模型。 |
XML示例,
<objects>
<bridge
s="50.0 "
length="100.0"
name="ExampleBridge"
id="1"
type="concrete" />
</objects>
规则,以下规则适用于桥梁元素:
- 通过使用
<laneValidity>
元素,桥梁可限定于特定车道。 - 桥梁的@type必须被详细说明。
相关内容:桥梁、道路横截面、车道有效性。