Disclaimer
This document is the copyrighted property of ASAM e.V. In alteration to the regular license terms, ASAM allows unrestricted distribution of this standard. ยง2 (1) of ASAM’s regular license terms is therefore substituted by the following clause: "The licensor grants everyone a basic, non-exclusive and unlimited license to use the standard ASAM OpenDRIVE". |
1. Foreword
ASAM OpenDRIVE provides the exchange format specification to describe static road networks for driving simulation applications. The primary task of ASAM OpenDRIVE is the road description including objects along the road. The OpenDRIVE Specification covers the description on how to model e.g. roads, lanes, junctions. Dynamic content is not coverd by ASAM OpenDRIVE
1.1. Deliverables of the OpenDRIVE specification
The following deliverables are provided for OpenDRIVE:
-
File format specification
-
XML schemas
-
UML model
-
Sample files (UseCases and Examples)
-
Example implementations
-
Reference implementations spiral
-
Signal Base catalog for OpenDRIVE
2. Introduction
2.1. Overview
The OpenDRIVE format provides a common base for describing road networks with Extensible Markup Language (XML) syntax, with the file extension xodr. The data that is stored in an OpenDRIVE file describes the geometry of roads as well as features along the roads that influence the logics, for example, lanes and signals. The road networks that are described in the OpenDRIVE file can either be synthetic or real. The main purpose of OpenDRIVE is to provide a road network description that can be fed into simulations and to make these road network descriptions exchangeable.
The format is organized in nodes that can be extended with user defined data. This facilitates a high degree of specialization for individual applications (usually simulations) while maintaining the interoperability that is required for the exchange of data between different applications.
2.2. Normative and non-normative statements and deliverables
This specification uses a standard information structure. The following rules apply regarding normativity of sections:
-
Statements expressed as requirements, permissions, or prohibitions according to the use of modal verbs, as defined in "1.4.3 Modal verbs", are normative.
-
UML diagrams from the OpenDRIVE UML model are normative.
-
Rules for OpenDRIVE data structures in "Rules" sections are normative.
-
XML examples and use case descriptions are non-normative.
2.3. Conventions
2.3.1. Naming Conventions
In this document, the following conventions apply:
data types
are given according to IEEE standard
2.3.2. Units
Unless stated otherwise, all numeric values within this specification are in SI units, for example:
-
position/distance in [m]
-
angles in [rad]
-
time in [s]
-
speed in [m/s]
Geographic positions are stated in the unit defined by the spatial coordinate system, for example, in accordance with WGS 84 โ EPSG 4326 [1].
Some data elements allow you to explicitly state the unit of a given value. If the unit is not given or if there is no means to state the unit, SI units apply. The following units may be used in explicit assignments:
Category | Description | Identifier |
---|---|---|
distance |
meter |
m |
kilometer |
km |
|
feet |
ft |
|
land mile |
mile |
|
Speed |
meters per second |
m/s |
miles per hour |
mph |
|
kilometers per hour |
km/h |
|
Mass |
kilogram |
kg |
metric tons |
t |
|
Slope |
percent |
% |
These optional units shall be used for purposes of signage and speed indication only. They shall not be used as general units, for example, to define road geometry, etc.
2.3.3. Modal verbs
To ensure compliance with the OpenDRIVE standard, users need to be able to distinguish between mandatory requirements, recommendations, permissions, as well as possibilities and capabilities.
The following rules for using modal verbs apply:
Provision | Verbal form |
---|---|
Requirement |
shall |
Recommendation |
should |
Permission |
may |
Possibility and capability |
can |
Obligation and necessity |
must |
2.3.4. Typographic conventions
This documentation uses the following typographical conventions:
Mark-up | Definition |
---|---|
|
This format is used for code elements, such as technical names of classes and attributes, as well as attribute values. |
|
This format is used for excerpts of code that serve as an example for implementation. |
Terms |
This format is used to introduce glossary terms, new terms and to emphasize terms. |
|
This format is used for calculations and mathematical elements. |
|
This describes a tag for an element within the XML specification |
@attribute |
The "@" identifies an attribute of any OpenDRIVE element |
The OpenDRIVE structure diagrams are modeled according to the Unified Modeling Language (UML). For detailed information on UML, see Booch et al. (1997).
The context that an element takes within an association is indicated by its role. The role is given near the target of the association. For better readability, the OpenDRIVE class diagrams use a color scheme:
-
The top-level element of a diagram is marked orange. This helps finding the entry point when reading a diagram top-down.
-
Classes that are marked yellow belong to the UML package that is discussed in the chapter of the specification, where the UML diagram is given.
-
Classes that are marked blue belong to an OpenDRIVE package that is different from the package that is associated with the yellow color.
-
Classes that are marked green are classes that contain geometry information.
Mandatory and optional attributes
In the UML Model attributes are marked as mandatory and optional. In the above figure the marking of the attributes can be seen. Optional attributes have the UML specific notation [0..1], mandatory attributes do not have any notation.
2.3.5. Use of IDs
The following rules apply to the use of IDs in OpenDRIVE:
-
IDs shall be unique within a class.
-
Lane IDs shall be unique within a lane section.
-
Only defined IDs may be referenced.
2.3.6. Curvature
For curvature indications, the following convention applies:
-
Positive curvature: left curve (counter-clockwise motion)
-
Negative curvature: right curve (clockwise motion)
Curvature == 1/radius
3. Relations to other standards (preliminary)
3.1. Positioning of ASAM OpenDRIVE within ASAM activities
ASAM OpenDRIVE is part of the ASAM simulation standards that focus on simulation data for the automotive environment. Next to ASAM OpenDRIVE, ASAM Provides other standards for the simulation domain, like ASAM OpenSCENARIO and ASAM openCRG.
3.2. Relation of ASAM OpenDRIVE to OpenCRG and OpenSCENARIO
ASAM OpenDRIVE defines a storage format for the static description of road networks. In combination with ASAM OpenCRG it is possible to add very detailed road surface descriptions to the road network. ASAM OpenDRIVE and ASAM OpenCRG only contains static content. To add dynamic content ASAM OpenSCENARIO is needed. Combined all three standards provide a scenario-driven description of traffic simulation that contains static and dynamic content
3.3. Backward compatibility to earlier releases
OpenDRIVE 1.6 contains elements that were introduced in version 1.5 but are not compatible with version 1.4. To ensure compatibility with versions 1.4 and 1.5, these elements are technically defined as optional in the XML schema of version 1.6. They are marked as "Optional for backwards compatibility" in the annotations of the UML model.
3.4. References to other standards
-
XML 1.0 Schema
-
UML 2.5.1 Standard
-
ISO 3166-2 for country codes
-
ISO 8855 for right handed coordinate systems
-
ISO 8601 for time / date
-
Georeferencing (ISO DIN 19111)
4. General Architecture
4.1. File Structure
OpenDRIVE data is stored in XML files with the extension .xodr. Compressed OpenDRIVE files have the extension ".xodrz" (compression format: gzip).
The OpenDRIVE file structure conforms to XML rules; the associated schema file is referenced in the XML. The schema file for the OpenDRIVEยฎ format can be retrieved from https://www.asam.net/standards/detail/opendrive/
Elements are organized in levels. Elements with a level that is greater than zero (0) are children of the preceding level. Elements with a level of one (1) are called primary elements.
Each element can be extended with user-defined data. This data is stored in so-called user data elements.
All floating-point numbers used in OpenDRIVE are IEEE 754 double precision floating-point numbers. In order to ensure accurate representation of floating-point numbers in the XML representation, implementations SHOULD use a known correct accuracy preserving minimal floating-point printing algorithm (e.g. [Burger96], [Adams18]), or ensure that 17 significand decimal digits are always produced (e.g. using the "%.17g" ISO C printf modifier). Importing implementations should use a known correct accuracy preserving floating-point reading algorithm (e.g. [Clinger90]).
[Burger96] Robert G. Burger and R. Kent Dybvig: "Printing floating-point numbers quickly and accurately." In proceedings of ACM SIGPLAN 1996 conference on Programming Language Design and Implementation, Philadelphia, PA, USA, May 1996, pp. 108-116
[Adams18] Ulf Adams: "Ryลซ: fast float-to-string conversion." ACM SIGPLAN Notices, Vol. 53, No. 4, April 2018, pp. 270-282
[Clinger90] William D. Clinger: "How to Read Floating Point Numbers Accurately." ACM SIGPLAN Notices, Vol. 25, No. 6, June 1990, pp. 92-101
4.2. Combining Files
Multiple files can be combined with an <include> tag at the appropriate locations. Upon parsing this tag, OpenDRIVE readers shall immediately start reading the file specified as attribute of the tag. It is the userโs responsibility to make sure that contents read from an include file are consistent with the context from which the inclusion starts.
The parent tag under which the <include> tag occurs must be present in both, the parent file and the included file.
Example:
Original File
<planView>
<include file="planview.xml"/>
</planView>
Included File
<planView>
<geometry x="-0.014" y="-0.055" hdg="2.88" length="95.89" s="0.0">
<arc curvature="-0.000490572"/>
</geometry>
<geometry x="-92.10" y="26.64" hdg="2.84" length="46.65" s="95.89">
<spiral curvStart="-0.000490572" curvEnd="-0.004661241"/>
</geometry>
</planView>
4.3. Attributes used in the file
All attributes that can be used in an OpenDRIVE file are fully annotated in the UML model:
-
If units are applicable to an attribute, these are stated according to 1.4.2 Units.
-
Type: Describes the data type of an attribute. It can be either a primitive data type, for example, string, double, float, or a complex data type that refers to an object described within this specification.
-
Value: Value determines the value range of the given attribute relative to the specified type
-
4.3.1. Enclosing element
The overall enclosing element of the file is: .Attributes of the OpenDRIVE element
delimiters |
|
parent |
none |
instances |
1 |
attributes |
|
4.3.2. Header
The <header>
element is the very first element within the <OpenDRIVE> element.
delimiters |
|
|||
parent |
|
|||
instances |
1 |
|||
attributes |
||||
name |
type |
unit |
value |
description |
|
ushort |
- |
1 |
Major revision number of OpenDRIVE format |
|
ushort |
- |
6 |
Minor revision number of OpenDRIVE format; 6 for OpenDrive 1.6 |
|
string |
- |
- |
Database name |
|
string |
- |
- |
Version of this road network |
|
string |
- |
- |
Time/date of database creation according to ISO 8601 (preference: YYYY-MM-DDThh:mm:ss) |
|
double |
m |
- |
Maximum inertial y value |
|
double |
m |
- |
Minimum inertial y value |
|
double |
m |
- |
Maximum inertial x value |
|
double |
m |
- |
Minimum inertial x value |
|
string |
- |
- |
Vendor name |
4.4. General rules and assumptions
4.4.1. Traffic direction
Unless stated otherwise, all examples, figures, and descriptions in this specification assume right-hand traffic.
5. Additional Data
OpenDRIVE offers the possibility to include external data. The processing of this data depends on the application.
Additional data may be placed at any position in OpenDRIVE.
5.1. User Data
Ancillary data should be described near the element it refers to. Ancillary data contains data that are not yet described in OpenDRIVE, or data that is needed by an application for a specific reason. Examples are different road textures.
In OpenDRIVE, ancillary data is represented by <userData>
elements. They may be stored at any element in OpenDRIVE.
5.2. Including Data
OpenDRIVE allows including external files into the OpenDRIVE file. The processing of the files depends on the application.
Included data is represented by <include> elements. They may be stored at any position in OpenDRIVE
5.3. Using different layout types
OpenDRIVE offers the possibility to integrate user generated layouts for elements like road marks or signals. The design of these alternative layouts is not stored in OpenDRIVE, but in the application.
In OpenDRIVE, different layout types are represented by <set>
elements. They may be stored at any position in OpenDRIVE.
Every <set>
element may be followed by one or more <instance> element that specifies the layout.
5.4. Description of the data quality
Raw data or data from external sources that is integrated in OpenDRIVE may be of varying quality. It is possible to describe quality and accuracy of external data in OpenDRIVE.
The description of the data quality is represented by <dataQuality>
elements. They may be stored at any position in OpenDRIVE.
Measurement data derived from external sources like GPS that is integrated in OpenDRIVE may be inaccurate. The error range, given in [m], may be listed in the application.
The absolute or relative errors of road data are described by <error>
elements within the <dataQuality> element.
Some basic metadata containing information about raw data included in OpenDRIVE is described by the <rawData>
element within the <dataQuality>
element.
6. Coordinate systems
6.1. Coordinate systems overview
OpenDRIVE uses three types of coordinate systems, as shown in the below figure:
-
The inertial x/y/z coordinate system
-
The reference line s/t/h coordinate system
-
The local u/v/z coordinate system
If not indicated otherwise, the local coordinate system is located and oriented relative to the reference line coordinate system. The reference line coordinate system is located and oriented relative to the inertial coordinate system by specifying the origin, as well as the heading, roll, and pitch rotation angles of the origins with respect to each other.
6.2. Inertial coordinate systems
The inertial system is a right-handed coordinate system according to ISO 8855 with the axes pointing to the following directions (see Figure 7):
-
x ⇒ right
-
y ⇒ up
-
z ⇒ coming out of drawing plane
For geographic reference, the following convention applies:
-
x ⇒ east
-
y ⇒ north
-
z ⇒ up
Elements like objects and signals can be placed within the inertial coordinate system by applying a heading, followed by pitch, followed by roll:
Figure 7 shows the positive axes and positive directions of the corresponding angles.
heading |
around z-axis, where |
pitch |
around yโ-axis, where |
roll |
around xโโ-axis, where |
xโ/yโ/(zโ=z) denotes the coordinate system after rotating x/y/z with the heading angle around the z-axis. The coordinate system xโโ/(yโโ=yโ)/zโโ denotes the coordinate system after rotating xโ/yโ/zโ with the pitch angle around the yโ-axis. The final rotated coordinate system (xโโโ=xโโ)/yโโโ/zโโโ is obtained after rotating system xโโ/yโโ/zโโ with roll angle.
6.3. Reference line coordinate systems
The reference line coordinate system applies along the reference line of a road. It is a right-handed coordinate system. The s-direction follows the tangent of the reference line. It has to be noted that the reference line is always located within the x/y-plane defined by the inertial coordinate system. The t-direction is orthogonal to the s-direction. The right-hand system is completed by defining the up-direction h orthogonal to x-axis and y-axis. The following degrees of freedom are defined:
s |
coordinate along reference line, measured in [m] from the beginning of the road reference line, calculated in the xy-plane (that is, not taking into account the elevation profile of the road) |
t |
lateral position, positive to the left within the inertial x/y plane |
h |
orthogonal to st plane in a right-handed coordinate system |
heading |
around h-axis, where |
roll |
around sโ-axis, where |
Similar to the inertial system, the sโ/tโ/hโ and sโโโ/tโโโ/hโโโ denote the rotated systems around heading and roll angle. The reference line coordinate system can be positioned in the inertial space by providing the originโs coordinates and the orientation (heading) of the origin with respect to the inertial system, as shown in figure 11.
Superelevation causes a roll in the reference line.
For the s/t/h coordinate system no pitch is possible, the elevation of the reference line is as follows. Elevation has no effect on the length of s.
6.4. Local coordinate systems
The local system is a right-handed coordinate system according to ISO 8855 with the axes pointing to the following directions. For a non-rotated coordinate system the following applies:
u |
Forward matches s |
v |
Left matches t |
z |
Up matches h |
Elements like objects can be placed within the local coordinate system by applying a heading, followed by pitch, followed by roll:
Within the local system, the following angles are defined:
heading |
around z-axis, 0.0 = east |
pitch |
around vโ-axis, where |
roll |
around xโโ-axis, where |
Figure 14 shows the positive axes and positive directions of the corresponding angles. The local system can only be positioned in reference line space by providing the origin of the local coordinate system within the reference line system and the orientation (heading) of the local system with respect to the reference line system, as shown in figure 16.
6.5. Summary of all available coordinate systems
Inertial, reference line and local system are used in OpenDRIVE at the same time. An example for positioning and orientation of the different coordinate systems relative to each other is depicted in Figure 17.
6.6. Georeferencing in OpenDRIVE
Spatial reference systems are standardized by the European Petroleum Survey Group Geodesy (EPSG) and are defined by parameters describing the geodetic datum. A geodetic datum is a coordinate reference system for a collection of positions that are relative to an ellipsoid model of the earth.
A geodetic datum is described by a projection string according to PROJ, that is, a format for the exchange of data between two coordinate systems. This data shall be marked as CDATA, because it may contain characters that interfere with the XML syntax of an elementโs attribute.
In OpenDRIVE, the information about the geographic reference of an OpenDRIVE dataset is represented by the <geoReference> element within the <header> element. proj-strings, as shown in ???, contain all parameters that define the used spatial reference system:
For detailed information on proj-strings, see https://proj.org/usage/projections.html
There shall be no more than one definition of the projection. If the definition is missing, a local Cartesian coordinate system is assumed.
It is highly recommended to use official parameter sets for proj-strings, which can be found at https://epsg.io/. Parameters should not be changed. Some spatial reference systems, for example, UTM, have implicit false easting and northing, which are defined using the parameters +x_0 and +y_0.
If you want to apply an offset, use the <offset> element instead of changing all parameter values.
XML example:
<geoReference>
<![CDATA[+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs]]>
</geoReference>
Rules:
-
The
<offset>
should be such that the x and y coordinates of OpenDRIVE are approximately centered around (0;0). If the x and y coordinates are too large, applications using float coordinates internally might not be able to process them accurately enough due to the limited precision of IEEE 754 double precision floating point numbers
7. Geometry
Road courses can have many different shapes. There are long, straight roads on open ground, elongated curves on motorways, or narrow turns in the mountains. In order to model all these road courses in a mathematically correct way, OpenDRIVE provides a variety of geometry elements. Figure 19 shows the five possible ways to define the geometry of a roadโs reference line:
-
A straight line
-
A spiral or a clothoid that has a linearly changing curvature
-
An arc that has a constant curvature
-
Cubic polynomials
-
Parametric cubic polynomials
7.1. Road reference line
The basic element of every road in OpenDRIVE is the road reference line. All geometry elements that describe the road shape and further properties of the road are defined along the reference line. These properties include lanes and signals.
By definition, the reference line runs in s-direction, while the lateral deviation of objects from the reference line runs in t-direction.
Figure 20 shows the different parts of a road in OpenDRIVE.
-
The road reference line
-
The individual lanes of a road
-
Features like signals that are placed along the road
In OpenDRIVE, the geometry of a reference line is represented by the <geometry>
element within the <planView> element.
The <planView>
element is a mandatory element in every <road>
element.
Attributes
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position |
|
|
double |
m |
]-โ;โ[ |
Start position (x inertial) |
|
|
double |
m |
]-โ;โ[ |
Start position (y inertial) |
|
|
double |
rad |
]-โ;โ[ |
Start orientation (inertial heading) |
|
|
t_grZero |
m |
[0;โ[ |
Length of the element’s reference line |
Rules
The following rules apply to road reference lines:
-
Each road shall have a reference line.
-
There shall be only one reference line per road.
-
The reference line usually runs in the center of the road but may be laterally offset.
-
Geometry elements shall be listed in ascending order along the reference line, that is, in increasing s-position.
-
One
<geometry>
element shall contain only one element that further specifies the geometry of the road. -
If two roads are connected without a junction, the reference line of a new road shall always begin at the
<contactPoint>
of its successor or predecessor road. The reference lines may be directed in opposite directions. -
A reference line shall have no leaps
-
A reference line should have no kinks
Related topics
-
Straight line
-
Spirals
-
Arc
-
Roads
-
Lanes
7.2. Straight line
A straight line, as shown in figure 22, is the simplest geometry element. It contains no further attributes.
In OpenDRIVE, a straight line is represented by a <line>
element within the <geometry> element.
XML Example
<planView>
<geometry
s="0.0000000000000000e+00"
x="-4.7170752711170401e+01"
y="7.2847983820912710e-01"
hdg="6.5477882613167993e-01"
length="5.7280000000000000e+01">
<line/>
</geometry>
</planView>
Related topics
-
Road reference line
-
Road
7.3. Spiral
A spiral is a clothoid that describes a changing curvature of the reference line, as shown in figure 23. Spirals may be used to describe the transition from a <line> to an <arc> without causing leaps in the curvature.
A spiral is characterized by the curvature at its start position (@curvStart) and the curvature at its end position (@curvEnd). Along the arc length of the spiral (see @length of the <geometry>
element), the curvature is linear from the start to the end.
It is also possible to arrange several <line>
, <spiral>
, and <arc>
elements in a sequence in order to describe complex curvatures.
In OpenDRIVE, a spiral is represented by a <spiral> element within the <geometry> element.
Attributes
t_road_planView_geometry_spiral
attributes |
name |
type |
unit |
value |
Description |
|
double |
1/m |
]-โ;โ[ |
Curvature at the start of the element |
|
|
double |
1/m |
]-โ;โ[ |
Curvature at the end of the element |
XML Example
<geometry s="100.0" x="38.00" y="-1.81" hdg="0.33" length="30.00">
<spiral curvStart="0.0" curvEnd="0.013"/>
</geometry>
Rules
The following rules apply to spirals:
-
@curvStart and @curvEnd should not be the same.
Related topics
-
Arc
-
Reference line
-
Generating arbitrary road courses from geometry elements
-
Road
7.4. Arc
An arc, as shown in figure 24, describes a road reference line with constant curvature.
In OpenDRIVE, a spiral is represented by a <arc> element within the <geometry> element.
Attributes
t_road_planView_geometry_spiral
attributes |
name |
type |
unit |
value |
Description |
|
double |
1/m |
]-โ;โ[ |
Constant curvature throughout the element |
XML Example
<planView>
<geometry
s="3.6612031746270386e+00"
x="-4.6416930098385274e+00"
y="4.3409250448366459e+00"
hdg="5.2962250374496271e+00"
length="9.1954178989066371e+00">
<arc curvature="-1.2698412698412698e-01"/>
</geometry>
</planView>
Rules
The following rules apply to arcs:
-
The curvature should not be zero.
Related topics
-
Reference line
-
Road
7.5. Generating arbitrary road courses from geometry elements
The combination of all geometry elements available in OpenDRIVE allows for the creation of a great variety of road courses, as shown in figure 25.
To avoid leaps in the curvature, it is recommended to use spirals to combine lines with arcs and other elements with different curvatures.
XML Example
See the sample file Ex_Line-Spiral-Arc.xodr
7.6. Cubic polynom (deprecated)
Cubic polynoms may be used to generate complex road courses that are derived from measurement data. For a given sequence of measured coordinates along the reference line in the x/y-coordinate system, measurement pairs define the polynom limits of the segment.
The reference line of the road is described by a local cubic polynom. Specifying continuity conditions, for example segment continuity, tangent and/or curvature continuity, at the limits of the segment allows to merge several cubic polynom segments and to form a global cubic spline interpolation curve for the entire course of the road. As an additional advantage, routing along polynoms can be realized more efficiently than along clothoids.
7.6.1. Background information on cubic polynoms
The interpolation of a cubic polynom in the x/y-coordinate system is described with the following formula:
y(x) = a + b*x + c*x2 + d*xยณ
The polynom parameters a, b, c, d in the calculation are used to define the course of the roads. With the help of the parameters a-d, the y-coordinate can be calculated from the x-coordinate at every point in the coordinate system.
Figure 26 shows a cubic polynom in the x/y-coordinate system with the following values:
a = 20
b = 0
c = 0.0005
d = 0.0001
7.6.2. Creating roads using cubic polynoms
A cubic polynom described in the x/y-coordinate system is not suitable to describe curved segments with an arbitrary orientation, as shown in figure 27. To handle curved segments with two or more y-coordinates at a given x-coordinate, cubic polynom segments may be defined with respect to a local u/v-coordinate system. Using the local u/v-coordinate system increases flexibility in the curve definition. The following formula is used:
v(u) = a + b*u + c*u2 + d*uยณ
The orientation of the local u/v-coordinate system should be chosen in such a way that the curve is expressed as a function v(u) at increasing u-coordinates.
Usually, the u/v-coordinate system is aligned with the s/t-coordinate system at the segmentโs start position (@x,@y) and start orientation @hdg, specified in the <geometry> element. This choice results in polynom parameters a=b=0 (see figure 28). As an additional option, the local u/v-coordinate system may be rotated relative to the start point (@x,@y) by specifying a polynom parameter @b that is unequal to zero. Here, the arctan (@b) defines the start heading of the polynom curve with respect to the local u/v-coordinate system. An additional shift of the u/v-coordinate origin along the v-coordinate axis, while (@x,@y) shall be located at u=0, may be achieved by setting the polynom parameter @a unequal to zero (see figure 29). The parameter u may be varied within 0 and the projection of the end point of the curve onto the u-coordinate axis. For the given parameter u, the local coordinate v(u) defines the point on the curve in the local u/v-coordinate system.
v(u) = a + b*u + c*u2 + d*uยณ
Taking into account shift and rotation parameters @a and @b and the (@x,@y) and @hdg specified in the <geometry>
element, the final x/y-curve position at a given u-coordinate, as shown in figure 29
In OpenDRIVE, a cubic polynom is represented by a <poly3>
element within the <geometry>
element.
Attributes
t_road_planView_geometry_poly3
attributes |
name |
type |
unit |
value |
Description |
|
double |
m |
]-โ;โ[ |
Polynom parameter a |
|
|
double |
1/m |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
1/mยฒ |
]-โ;โ[ |
Polynom parameter c |
|
|
double |
1/mยณ |
]-โ;โ[ |
Polynom parameter d |
XML Example
<geometry
s="0.0000000000000000e+00"
x="-6.8858131487889267e+01"
y="4.1522491349480972e-01"
hdg="6.5004409066736524e-01"
length="2.5615689718113455e+01">
<poly3
a="0.0000000000000000e+00"
b="0.0000000000000000e+00"
c="1.4658732624442020e-02"
d="-5.7746497381565959e-04"/>
</geometry>
<geometry
s="2.5615689718113455e+01"
x="-4.8650519031141869e+01"
y="1.5778546712802767e+01"
hdg="2.9381264033570398e-01"
length="3.1394863696852912e+01">
<poly3
a="0.0000000000000000e+00"
b="0.0000000000000000e+00"
c="-1.9578575382799307e-02"
d="2.3347864348004167e-04"/>
</geometry>
Rules
The following rules apply to cubic polynoms:
-
A cubic polynom may be used to describe the course of a road for which measurement data is available
-
If the local u/v-coordinate system is aligned with the s/t-coordinate system of the start point, the polynom parameter coefficients are a=b=0.
-
The starting point (@x,@y) of the <geometry> element is located on the v-coordinate axis of the local u/v-coordinate system.
-
The polynomial parameters a and b should be 0 for a smooth reference line.
Related topics
-
Parametric cubic curve
-
Georeferencing
-
Roads
-
Generating arbitrary road courses from geometry elements
7.7. Parametric cubic curve
Parametric cubic curves are used for complex curves that are to be generated from measurement data. Parametric cubic curves are more flexible and allow a greater variety of road courses than cubic polynoms. In comparison to cubic polynoms that are defined in a x/y-coordinate system or as local u/v-coordinates, the coordinates x and y are interpolated separately by their own splines with respect to a common interpolation parameter p.
7.7.1. Generating roads using parametric cubic curves
Generating road courses with parametric cubic curves only require x- and y-coordinates. For reasons of consistency to cubic polynoms, they may be calculated simultaneously to cubic polynoms using local u- and v-coordinates.
u(p) = aU + bU*p + cU*p2 + dU*pยณ
v(p) = aV + bV*p + cV*p2 + dV*pยณ
Unless otherwise stated, the interpolation parameter p is in the range [0;1]. Alternatively, it may be given in the range [0; @length of <geometry>
]. Similar to cubic polynoms, the local coordinate system with the variables u and v may be placed and oriented arbitrarily.
To simplify representation, the local coordinate system may be aligned with the s/t-coordinate system at the start point (@x,@y) and start orientation @hdg:
-
u points in local s-direction, meaning along the reference line at the start point
-
v points in local t-direction, meaning in lateral deviation from the reference line at the start point
-
the parameters @aU, @aV and @bV shall be zero
Providing non-zero values for the parameters @aU, @aV and @bV leads to a shift and rotation of the s/t coordinates as shown Figure 26, Figure 27 and Figure 28.
After defining the points of the curve for a given parameter p, the u-values and v-values are transformed into values of the x/y-coordinate system with regard to the shifts and orientation specified by the parameters @aU, @aV, @bU, @bV, the start coordinates (@x,@y) and the start orientation @hdg.
It has to be noted that there is a non-linear relation between the interpolation parameter p and the actual length of the arc between the start point (@x,@y) in the <geometry>
element and the point (x(p),y(p)) associated with the parameter p. In general, only the startpoint and endpoint parameter p=0 and p=@length (for the option @pRange=arcLength) will coincide with the actual length of the arc.
Taking into account shift and rotation parameters @a and @b and the (@x,@y) and @hdg specified in the <geometry>
element, the final x/y-curve position at a given u-coordinate, as shown in figure 29
In OpenDRIVE, parametric cubic curves are represented by <paramPoly3>
elements within the <geometry>
element.
Attributes
t_road_planView_geometry_poly3
attributes |
name |
type |
unit |
value |
Description |
|
double |
m |
]-โ;โ[ |
Polynom parameter a |
|
|
double |
1/m |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
1/mยฒ |
]-โ;โ[ |
Polynom parameter c |
|
|
double |
1/mยณ |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
m |
]-โ;โ[ |
Polynom parameter a |
|
|
double |
1/m |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
1/mยฒ |
]-โ;โ[ |
Polynom parameter c |
|
|
double |
1/mยณ |
]-โ;โ[ |
Polynom parameter d |
|
|
e_paramPoly3_pRange |
1/mยณ |
arcLength ; normalized |
Range of parameter p. |
XML Example
<planView>
<geometry
s="0.000000000000e+00"
x="6.804539427645e+05"
y="5.422483642942e+06"
hdg="5.287405485081e+00"
length="6.565893957370e+01">
<paramPoly3
aU="0.000000000000e+00"
bU="1.000000000000e+00"
cU="-4.666602734948e-09"
dU="-2.629787927644e-08"
aV="0.000000000000e+00"
bV="1.665334536938e-16"
cV="-1.987729787588e-04"
dV="-1.317158625579e-09"
pRange="arcLength">
</paramPoly3>
</geometry>
</planView>
Rules
The following rules apply to parametric cubic curves:
-
If the local u/v-coordinate system is aligned with the s/t-coordinate system of the start point, the polynom parameter coefficients are @aU=@aV=@bV=0.
-
If @pRange="arcLength", p may be chosen in [0, @length from
<geometry>
] -
If @pRange="normalized", p may be chosen in [0, 1]
-
The polynomial parameters aU, bU and aV should be 0 for a smooth reference line.
Related topics
-
Cubic polynom
-
Georeferencing
-
Roads
-
Generating arbitrary road courses from geometry elements
8. Roads
In OpenDRIVE, the road network is represented by <road>
elements. Each road runs along one road reference line. A road shall have at least one lane with a width larger than 0.
OpenDRIVE roads may be roads in the real road network or artificial road network created for application use. Each road is described by one or more <road>
elements. One <road>
element may cover a long stretch of a road, shorter stretches between junctions, or even several roads. A new <road>
element should only start if the properties of the road cannot be described within the previous <road>
element or if a junction is required.
Related topics
-
Reference line
-
Road linkage
-
Lanes
UML Model
Attributes
attributes |
name |
type |
unit |
value |
Description |
|
string |
Name of the road. May be chosen freely. |
|||
|
t_grZero |
Total length of the reference line in the xy-plane. Change in length due to elevation is not considered |
|||
|
string |
-;[0;โ[ |
Unique ID within the database. If it represents an integer number, it should comply to uint32_t and stay within the given range. |
||
|
string |
-;-1 |
ID of the junction to which the road belongs as a connecting road (= -1 for none) |
||
|
e_trafficRule |
]-โ;โ[ |
Basic rule for using the road; RHT=right-hand traffic, LHT=left-hand traffic. When this attribute is missing, RHT is assumed. |
8.1. Properties for road sections and cross section
Some properties of roads are described based on the cross section of the road. The road cross section is the orthogonal view of the road at a given point on the road reference line. An example of a property that refers to the road cross section is superelevation. Elements that are valid for a road cross section are valid for the whole width of the road at a given point on the reference line.
Other road properties are described based on the plan view of the road. This includes lanes and road elevation. For these properties, the term road section is used. Road sections describe parts of roads and their specific properties along the s-coordinate of the road reference line. Properties that are valid for a road section may not be valid for the whole width of the road, but for specific lanes only.
That means it is possible to create sections for different properties like road type or lane sections. Sections are created by an additional element within the <road>
element, using new start s-coordinates. The length of a section is implicitly given by the difference between two given s-start positions. Sections shall be stored in ascending order of s-coordinates.
8.2. Road Linkage
For applications to navigate through a road network, roads must be linked to each other. Roads may be connected to another road or a junction. Isolated roads are not connected to other roads or junctions.
Figure 35 shows scenarios of prohibited, allowed, and recommended road linkage. It is important that the lanes and reference lines of the roads to be linked have a direct linkage to its predecessor or successor. Overlaps or leaps should be avoided but are not prohibited if the reference lines are connected properly.
Figure 36 shows the allowed scenarios for road linkage outside junctions, with two roads running in the same, opposite, or converging directions. Road linkage is not possible, if the two reference lines are not connected to each other.
In OpenDRIVE, road linkage is represented by the <link>
element within the <road>
element. The <predecessor>
and <successor>
elements are defined within the <link>
element. For virtual and regular junctions, different attribute sets shall be used for the <predecessor>
and <successor>
elements.
Attributes
t_road_link
Follows the road header if the road is linked to a successor, a predecessor, or a neighbor. Isolated roads may omit this element.
t_road_link_predecessorSuccessor
For virtual and regular junctions, different attribute sets shall be used. @contactPoint shall be used for regular junctions; @elementS and @elementDir shall be used for virtual junctions.
attributes |
name |
type |
unit |
value |
Description |
|
string |
ID of the linked element |
|||
|
e_road_link_elementType |
road ; junction |
Type of the linked element |
||
|
e_contactPoint |
start ; end |
Contact point of link on the linked element |
||
|
t_grEqZero |
m |
Alternative to contactPoint for virtual junctions. Indicates a connection within the predecessor, meaning not at the start or end of the predecessor. Shall only be used for elementType "road" |
||
|
e_elementDir |
+;- |
To be provided when elementS is used for the connection definition. Indicates the direction on the predecessor from which the road is entered. |
Rules
The following rules apply to road linkage:
-
Two roads shall only be linked directly, if the linkage is clear. If the relationship to successor or predecessor is ambiguous, junctions shall be used.
-
A road may have another road or a junction as successor or predecessor. A road may also have no successor or predecessor.
-
A road may serve as its own predecessor or successor.
Related topics
-
Reference line
-
Junctions
-
Lane linkage
8.3. Road type
The road type defines the main purpose of a road and the associated traffic rules. Example road types are motorways and rural roads. The road type is valid for the entire road cross section.
The road type may be changed as often as needed within a <road>
element. This may be done by defining different road types at given points along the reference line. One road type remains valid until another road type is defined.
In OpenDRIVE, the road type is represented by the <type>
element within the <road>
element. The road type itself is given in the @type attribute.
Attributes
t_road_type
A road type element is valid for the entire cross section of a road. It is valid until a new road type element is provided or until the road ends.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position |
|
|
e_roadType |
Country code of the road, see ISO 3166-1, alpha-2 codes. |
|||
|
e_countryCode |
Country code of the road, see ISO 3166-1, alpha-2 codes. |
Rules
The following rules apply to road types:
-
When the type of road changes, a new
<type>
element shall be created within the parent <road> element. -
Country code and state identifier may be added to the
<type>
element to specify which national traffic rules apply to this road type. The according data is stored in the application and not in OpenDRIVE. -
There shall only be ALPHA-2 country codes in use, no ALPHA-3 country codes, because only ALPHA-2 country codes support state identifiers.
-
Single lanes may have another type than the road they belong to. Road type and lane type represent different properties and are both valid if specified.
Related topics
-
Lane type
-
Properties for road sections and cross section
8.3.1. Speed limits for road types
A speed limit may be defined for a road type. When the road type changes and a speed limit exists on that road section, a new speed element is required, because road types have no globally valid speed limits. The limit shall be defined for each road type element separately.
In OpenDRIVE, the speed limit is represented by the <speed>
element within the <type>
element.
Attributes
t_road_type_speed
Defines the default maximum speed allowed in conjunction with the specified road type.
attributes |
name |
type |
unit |
value |
Description |
|
t_maxSpeed |
no limit ; undefined ; [0,โ[ |
s-coordinate of start position |
||
|
e_unitSpeed |
Unit of the attribute max. For values, see chapter "units". |
Rules
The following rules apply to speed limits:
-
A maximum speed may be defined as default value per road type element.
-
Single lanes may have different speed limits than the road they belong to. They are defined as <laneSpeed>.
-
Speed limits derived from signals shall always have preference.
Related topics
-
Road type
-
Properties for road sections and cross section
-
Signals
8.4. Methods of Elevation
There are several ways to elevate a road or parts of a road:
-
Road elevation specifies the elevation along the road reference line, that is in s direction.
-
The lateral profile, using superelevation and shape definition, specifies the elevation orthogonally to the reference line, that is in t direction.
The types of road elevation are shown in figure 39
The s length does not change with the elevation.
8.4.1. Road elevation
A road may be elevated along its reference line. Road elevation is defined per road cross section at a given position on the reference line. Elevation is specified in meters. The default elevation of a road is zero. In case georeferencing is used, the definition of zero depends on it.
In OpenDRIVE, elevation is represented by the <elevation>
element inside the <elevationProfile>
element.
Attributes
t_road_elevationProfile_elevation
Defines an elevation element at a given position on the reference line. Elements shall be defined in ascending order along the reference line. The s length does not change with the elevation.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position |
|
|
double |
m |
]-โ;โ[ |
Polynom parameter a |
|
|
double |
1 |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
1/m |
]-โ;โ[ |
Polynom parameter c |
|
|
double |
1/mยฒ |
]-โ;โ[ |
Polynom parameter d |
Calculation
Road elevation is calculated with the following polynomial function of the third order:
elev(ds) = a + b*ds + c*dsยฒ + d*dsยณ
where
|
is the elevation (inertial z) at a given position |
|
are the coefficients |
|
is the distance along the reference line between the start of a new elevation element and the given position. |
ds
restarts at zero for each element. The absolute position of an elevation value is calculated as follows:
s = sstart + ds
where
|
is the absolute position in the reference line coordinate system |
|
is the start position of the element in the reference line coordinate system |
Rules
The following rules apply to road elevation:
-
Roads shall be elevated along their reference line.
-
Road elevation may be defined in combination with superelevation and road shape or standalone.
-
Elevation elements shall be defined in ascending order. Because the elevation can go up and down, the elements shall be linked to the respective position on the reference line.
-
The definition of road elevation remains valid until the next element of this type is defined.
Related topics
-
Superelevation
-
Shape definition
8.4.2. Superelevation
Superelevation is part of the lateral profile and describes the cross slope of the road. It may be used, for example, to incline the road to the inner side so that vehicles can drive through them more easily. For superelevated roads, the t axis of a road is not parallel to the underlying terrain, as shown in figure 40. For this reason, a lateral profile is defined for the entire road cross section. Superelevation does not change the actual width of a lane, but it affects the projected width. The default value for superelevation is zero.
Mathematically, superelevation is defined as the roll angle of the road cross section around the reference line. That means, superelevation has positive values for roads falling to the right side and negative values for roads falling to the left side.
In the example in figure 40, the reference line is parallel to the y axis, to simplify the given example.
In OpenDRIVE, superelevation is represented by the <superelevation>
element within the <lateralProfile>
element.
Attributes
t_road_lateralProfile_superelevation
Defined as the road sectionโs roll angle around the s-axis. Elements must be defined in ascending order along the reference line. The parameters of an element are valid until the next element starts or the road reference line ends. Per default, the superelevation of a road is zero.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position |
|
|
double |
rad |
]-โ;โ[ |
Polynom parameter a, superelevation at @s (ds=0) |
|
|
double |
rad/m |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
rad/mยฒ |
]-โ;โ[ |
Polynom parameter c |
|
|
double |
rad/mยณ |
]-โ;โ[ |
Polynom parameter d |
Calculation
Superelevation is calculated using the following polynomial function of the third order:
sElev (ds) = a + b*ds + c*ds2 + d*ds3
where
|
is the superelevation at a given position |
|
are the coefficients |
|
is the distance along the reference line between the start of a superelevation element and the given position. |
ds
restarts at zero for each element. The absolute position of a superelevation value is calculated as follows:
s = sstart + ds
where
|
is the absolute position in the reference line coordinate system |
|
is the start position of the element in the reference line coordinate system |
Rules
The following rules apply to superelevation:
-
When superelevation is defined, it shall apply to the entire road cross section.
-
Single lanes of a road may be excluded from superelevation using the @level attribute.
-
Road elevation may be defined in combination with superelevation.
Related topics
-
Excluding lanes from road elevation
-
Road elevation
-
Shape definition
8.4.3. Shape definition
Some lateral road shapes are too complex to be described by superelevation alone. Shapes describe the elevation of a roadโs cross section at a given point on the reference line in a more detailed way. That means, there may be several shape definitions at one s-coordinate that have different t-values, thereby describing the curvy shape of the road.
If shapes are used without superelevation, the actual width of a lane might be changed due to its curvilinear shape. The projected width with respect to the planview is not affected.
If shapes are combined with superelevation as shown in figure 41, the projected width with respect to the superelevated state does not change, but the projected width with respect to the planview is affected.Between shape profiles, at specific s-coordinates, the road shape is interpolated linearly. Combining shapes with non-linear lane offsets should be avoided.
The defined t range must at least cover the maximum t-expansion of the entire <road>
element, as shown in the figure 42.
In figure 41 is shown how to calculate the height information between two lateral profiles. In figure 41 The lateral profile at sR1 has five polynomial definition, while the lateral profile at sR2 has three polynomial definitions. To calculate a point between two lateral profiles, interpolate linear between those two profiles, use the formulas shown in figure 41.
Typical use cases are curved road surfaces on high-speed test tracks and crossfalls. The default value for shape is zero.
Attributes
t_road_lateralProfile_shape
Defined as the road sectionโs surface relative to the reference plane. There may be several shape definitions at one s-position that have different t-values, thereby describing the curvy shape of the road.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position |
|
|
double |
m |
]-โ;โ[ |
t-coordinate of start position |
|
|
double |
m |
]-โ;โ[ |
Polynom parameter a, relative height at @t (dt=0) |
|
|
double |
1 |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
1/m |
]-โ;โ[ |
Polynom parameter c |
|
|
double |
1/mยฒ |
]-โ;โ[ |
Polynom parameter d |
Calculation
The shape of the lateral profile is calculated with the following polynomial function:
hShape (ds)= a + b*dt + c*dt2 + d*dt3
where
|
is the height above the reference plane at a given position |
|
are the coefficients |
|
is the distance perpendicular to the reference line between the start of a shape element and the given position |
dt
restarts at zero for each element. The absolute position of a shape value is calculated as follows:
t = tstart + dt
where
|
is the absolute position in the reference line coordinate system |
|
is the start position of the element in the reference line coordinate system |
Rules
The following rules apply to shapes:
-
Shapes may be defined in combination with superelevation and road elevation.
-
There should be no lane offset when using shapes.
Related topics
-
Road elevation
-
Superelevation
-
Properties for road sections and cross section
8.5. Road surface
The description of the surface of a road is part of OpenCRG, not OpenDRIVE. It is possible to reference data created by OpenCRG in OpenDRIVE. Neither OpenDRIVE nor OpenCRG contain data regarding the visual representation of the road surface. With OpenCRG it is possible to model detailed road surface attributes, for example cobble stone or pot holes, as shown in figure 43.
As the name indicates, CRG data is organized in a regular grid which is laid out along a reference line (comparable to an OpenDRIVE roadโs reference line). At each grid position, it contains the absolute elevation measured along a real road and some additional data which allows for the computation of the delta elevation relative to the reference line. The key to combining OpenDRIVE and CRG data is to define a correlation between the two reference lines and a rule for using the elevation data of both descriptions. CRG data may be offset from the OpenDRIVE roadโs reference line (see @tOffset) and it may be oriented in the same or opposite direction as the layout direction of the road (see orientation).
The CRG data may be applied to a given OpenDRIVE road in different modes:
@mode = attached:
The reference line of the CRG data set is replaced with the OpenDRIVE roadโs reference line, taking into account the @tOffset and the @sOffset parameters The CRG local elevation values (calculated by evaluating the CRG grid and applying @zOffset and @zScale) will be added to the surface elevation data of the OpenDRIVE road (as derived from the combination of elevation, superelevation and crossfall). With this mode, the surface information relative to the original CRG dataโs reference line is transferred from an arbitrary CRG road to an OpenDRIVE road without having to make sure that the overall geometries of the road match. The original position, heading, curvature, elevation and superelevation of the CRG road are disregarded. The CRG grid is evalvated along the OpenDRIVE reference line instead of the CRG reference line.
@mode = attached0:
This mode is basically the same as the attached mode, with the only exception that only the CRG dataโs elevation value is considered (i.e. the OpenDRIVE elevation is set to zero). To avoid problems set @sStart and @sEnd exactly to the CRG data boundaries. Otherwise gaps with height zero can occur, as shown in the below figure.
@mode = genuine:
The start point of the CRG data setโs reference line is positioned relative to the point on the OpenDRIVE roadโs reference line at the position defined by @sStart, @sOffset and @tOffset. By providing offset values for the longitudinal (@sOffset) and lateral (@tOffset) displacement, the heading (@hOffset) and the elevation (@zOffset), the correlation between the two descriptionโs reference lines is clear. In genuine mode, the CRG data will completely replace the OpenDRIVE elevation data, i.e. the absolute elevation of a given point of the road surface is directly computed from the CRG data (think of it as combining CRG and OpenDRIVE data with the OpenDRIVE elevation, superelevation and crossfall all being zero). When using this method, it must of course be made sure that the geometry of the CRG data matches โ within certain tolerance โ the geometry of the underlying OpenDRIVE road.
@mode = global:
The CRG data set is just referenced from a given track or a junction record but neither translatory nor rotatory transformation is applied. All data in the CRG file remains in its native co-ordinate system. Elevation data is interpreted as inertial data, i.e. AS IS.
@orientation
Since CRG data may only cover parts of a roadโs surface, it must be made sure that outside the valid CRG area, the elevation information derived from OpenDRIVE data can still be used.
In OpenDRIVE, the road surface is represented by the <surface>
element within the <road>
element. Data described in OpenCRG is represented by the <CRG>
element within the <surface>
element.
if more than one CRG entry is given for the same physical property (attribute purpose) at a given location, then the last entry in the sequence of occurrence in the OpenDRIVE file shall be the relevant one. All others will be ignored. |
The orientation attribute rotates the CRG file at the origin of the u/v coordinate system of the OpenCRG. The value "same" has a rotation angle of 0ยฐ and the value "opposite" has a value of 180ยฐ. The t-offset is not affected by the orientation attribute.
Attributes
t_road_surface_CRG
attributes |
name |
type |
unit |
value |
Description |
|
string |
Name of the file containing the CRG data |
|||
|
t_grEqZero |
m |
[0;โ[ |
Start of the application of CRG data (s-coordinate) |
|
|
t_grEqZero |
m |
[0;โ[ |
End of the application of CRG (s-coordinate) |
|
|
e_direction |
same ; opposite |
Orientation of the CRG data set relative to the parent <road> element |
||
|
e_road_surface_CRG_mode |
attached; attached0; genuine; global |
Attachment mode for the surface data, see specification. |
||
|
e_road_surface_CRG_purpose |
elevation ; friction |
Physical purpose of the data contained in the CRG file; if the attribute is missing, data will be interpreted as elevation data. |
||
|
double |
m |
]-โ;โ[ |
s-offset between CRG center line and reference line of the road (default = 0.0) |
|
|
double |
m |
]-โ;โ[ |
t-offset between CRG center line and reference line of the road (default = 0.0) |
|
|
double |
m |
]-โ;โ[ |
z-offset between CRG center line and reference line of the road (default = 0.0) |
|
|
double |
]-โ;โ[ |
z-scale factor for the surface description (default = 1.0) |
||
|
double |
rad |
]-โ;โ[ |
Heading offset between CRG center line and reference line of the road (required for mode genuine only, default = 0.0) |
XML example
<surface>
<CRG file="fancyData.crg" sStart="0.0" sEnd="100.0" orientation="same" mode="attached" tOffset="0.0">
</CRG>
</surface>
Related topics
-
Road
8.6. Use cases for roads
The following sections contain some sample use cases for modelling roads in OpenDRIVE.
8.6.1. Modelling a road shape with a linear crossfall
Many roads have a crossfall, for example, to provide a drainage gradient so that water runs off the surface into the gutter.
Figure 50 shows a sample definition of a two-lane road with a crossfall.
The linear crossfall has the following properties:
-
The width of the road start at t=-4. Because the values are 0, nothing changes in the height up to t=-3.
-
From t=-3 to t=0, there is a linear rise from 0.15 meter per meter. That means, at t=0 (middle of the road), the road has reached a height of 0.45m.
-
From t=0.45m, the road has a linear fall by 0.1 meter per meter. That means, when reaching t=4, the road has a height of 0.05m (0.45m-0.40m is 0.05m; road loses 0.1 m per meter over a distance of 4m. When starting at 0.45m, the endpoint is at 0.05m).
XML structures used
To describe the crossfall, <shape> elements within <lateralProfile> are used.
Using OpenDRIVE structures
To model road shapes, shape elements shall start at the right side of the road, that is in positive t-direction. That means, the elements start with negative t-values.
XML example
<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>
9. Lanes
In OpenDRIVE, all roads contain lanes. Each road shall have at least one lane with a width larger than 0. The number of lanes per road is not limited.
For the definition and description of lanes in OpenDRIVE, the center lane is required. The center lane has no width and serves as reference for lane numbering. The center lane itself has the lane number 0. The numbering of the other lanes starts at the center lane: Lane numbers descend to the right, meaning negative t-direction, and ascend to the left, meaning positive t-direction.
Figure 51 illustrates the center lane for a road with multiple traffic lanes and different driving directions. In this case, the center lane separates the driving directions, depending on left- and right-hand traffic, specified in Road type. Because no lane offset is used, the center lane is identical to the road reference line.
Figure 52 illustrates the center lane for a road with lanes that have the same driving direction, meaning a one-way road.
In OpenDRIVE, lanes are represented by the <lanes>
element within a <road>
element.
Rules
The following rules apply for the use of lanes:
-
Each road shall have a center lane and one lane with a width larger than 0.
-
Roads may have as many lanes as needed.
-
The center lane shall have no width, meaning that the <width> element shall not be used for the center lane.
-
The center lane shall have the lane number 0.
-
Lane numbering shall start with 1 next to the center lane, descend in negative t-direction and ascend in positive t-direction.
-
Lane numbering shall be consecutive without any gaps.
-
Lane numbering shall be unique per lane section.
-
There may be bidirectional lanes. This is specified using the @type attribute of the <lane> element.
XML example
<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>
Related topics
-
Lane grouping within lane sections
9.1. Lane grouping within lane sections
For easier navigation through an OpenDRIVE road description, the lanes within a lane section are grouped into left, center, and right lanes. Within these groups, the lanes are described by <lane>
elements.
Because lane numbers descend in negative t-direction and ascend in positive t-direction, applications can derive the direction of a lane from the lane number given in the ID attribute, unless @type is bi-directional.
In OpenDRIVE, lane groups are represented by <center>
, <right>
and <left>
elements within the <laneSection>
element. The ID attribute is defined within the <lane>
element that is nested under a <center>
, <right>
, or <left>
element.
Rules
The following rules apply for lane grouping:
-
Lanes with positive ID run on the left side of the center lane, while lanes with negative ID run on the right side of the center lane.
-
Each lane section shall contain at least one <right> or <left> element.
-
One <center> element shall be defined for each s-coordinate.
-
Each lane section may contain one <center> element.
-
For better orientation, lanes should be listed from left to right, that is with descending ID.
Related topics
-
Lane sections
-
Lanes
9.2. Lane sections
Lanes may be split into multiple lane sections. Each lane section contains a fixed number of lanes. Every time the number of lanes changes, a new lane section is required, as shown in figure 56. Lane sections are defined in ascending order along the road reference line.
Figure 56 shows a road section that is divided into different lane sections. A new lane section is required when the number of lanes changes.
To simplify the use of lane sections for complex roads, they may be defined for one side of the road only using the @singleSide attribute. This principle is shown in figure 57.
In OpenDRIVE, lane sections are represented by <laneSection>
elements within a <lanes>
element.
Attributes
t_road_lanes_laneSection
Lanes may be split into multiple lane sections. Each lane section contains a fixed number of lanes. Every time the number of lanes changes, a new lane section is required.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position |
|
|
t_bool |
true ; false |
Lane section element is valid for one side only (left, center, or right), depending on the child elements. |
t_road_lanes_laneSection_center
For easier navigation through an OpenDRIVE road description, the lanes within a lane section are grouped into left, center, and right lanes. Each lane section shall contain one <center> element and at least one <right> or <left> element.
t_road_lanes_laneSection_center_lane
Lane elements are included in left/center/right elements. Lane elements should represent the lanes from left to right, that is, with descending ID.
attributes |
name |
type |
unit |
value |
Description |
|
integer |
[-โ;โ[ |
ID of the lane |
t_road_lanes_laneSection_left
For easier navigation through an OpenDRIVE road description, the lanes within a lane section are grouped into left, center, and right lanes. Each lane section shall contain one <center> element and at least one <right> or <left> element.
t_road_lanes_laneSection_left_lane
Lane elements are included in left/center/right elements. Lane elements should represent the lanes from left to right, that is, with descending ID.
attributes |
name |
type |
unit |
value |
Description |
|
integer |
[-โ;โ[ |
ID of the lane |
t_road_lanes_laneSection_right
For easier navigation through an OpenDRIVE road description, the lanes within a lane section are grouped into left, center, and right lanes. Each lane section shall contain one <center> element and at least one <right> or <left> element.
t_road_lanes_laneSection_right_lane
Lane elements are included in left/center/right elements. Lane elements should represent the lanes from left to right, that is, with descending ID.
attributes |
name |
type |
unit |
value |
Description |
|
integer |
[-โ;โ[ |
ID of the lane |
Rules
The following rules apply for lane sections:
-
Each road shall have at least one lane section.
-
Lane sections shall be defined in ascending order.
-
There shall always be exactly one center lane at each s-position.
-
Using lanes with a width of 0 for long distances should be avoided.
-
A new lane section shall be defined each time the number of lanes change.
-
A lane section shall remain valid until a new lane section is defined.
-
The properties of lanes inside a lane section may be changed as often as needed.
-
Lane sections may be defined for one side of the road only using the @singleSide attribute.
Related topics
-
Lanes
-
Lane grouping within lane sections
-
Road reference line
9.3. Lane offset
A lane offset may be used to shift the center lane away from the road reference line. This makes it easier to model local lateral shifts of lanes on roads, for example for left turn lanes.
A combination of lane offset and shape definition can lead to inconsistencies depending on the interpolation used for lane offset. Because linear interpolation is used for the road shape along the reference line, linear interpolation should also be used for the offset definition to enable consistent combined use of both definitions.
Figure 58 shows the offset of the center lane away from the road reference line.
In OpenDRIVE, a lane offset is represented by a <laneOffset> element within a <lanes> element.
Attributes
t_road_lanes_laneOffset
A lane offset may be used to shift the center lane away from the road reference line.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position |
|
|
double |
m |
]-โ;โ[ |
Polynom parameter a, offset at @s (ds=0) |
|
|
double |
1 |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
1/m |
]-โ;โ[ |
Polynom parameter c |
|
|
double |
1/mยฒ |
]-โ;โ[ |
Polynom parameter d |
Calculation
The offset at a given point is calculated with the following polynomial function of the third order:
offset (ds) = a + b*ds + c*dsยฒ + d*dsยณ
where
|
is the lateral offset at a given position |
|
are the coefficients |
|
is the distance along the road reference line between the start of a new lane offset element and the given position |
ds
restarts at zero for each element. The absolute position of an offset value is calculated as follows:
s = sstart + ds
where
|
is the absolute position in the reference line coordinate system |
|
is the start position of the element in the reference line coordinate system |
A new lane offset element is required each time the polynomial function changes.
XML Example
<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>
This example can be found in Ex_Simple-LaneOffset.xodr.
Rules
The following rules apply for lane offsets:
-
Lane offsets shall not be used together with road shapes.
-
A new lane offset shall start when the underlying polynomial function changes.
-
There shall be no offset if border definitions are present.
Related topics
-
Lane borders
-
Shape definition
-
Lanes
9.4. Lane linkage
To enable lane navigation, linkage information for lanes may be stored in OpenDRIVE. Linkage is described by means of predecessor and successor information for each lane. Both lanes and junctions may serve as predecessor or successor of lanes. Lanes may be linked to lanes on the same or another road.
In OpenDRIVE, lane linkage is represented by the <link> element within the <lane> element. The <predecessor> and <successor> elements are defined within the <link> element.
Attributes
t_road_lanes_laneSection_lcr_lane_link
For links between lanes with an identical reference line, the lane predecessor and successor information provide the IDs of lanes on the preceding or following lane section. This element may only be omitted, if lanes end at a junction or have no physical link.
t_road_lanes_laneSection_lcr_lane_link_predecessorSuccessor
attributes |
name |
type |
unit |
value |
Description |
|
integer |
[-โ;โ[ |
ID of the preceding / succeeding linked lane |
The following rules apply to lane linkage:
-
A lane may have another lane as successor or predecessor.
-
Two lanes shall only be linked if their linkage is clear. If the relationship to successor or predecessor is ambiguous, junctions shall be used.
-
The
<link>
element shall be omitted if the lane ends in a junction or has no link.
Related topics
-
Road linkage
-
Junctions
-
Lanes
9.5. Lane properties
Lane properties describe the use and shape of lanes. Lane properties are defined per lane section but may change within that section. If a property is not specifically defined for a lane section, applications can apply default properties.
Examples of lane properties are lane width, lane border, and speed limits.
Rules
The following rules apply for lane properties:
-
Lane properties shall be defined relative to the start of the corresponding lane section.
-
A specific lane property shall remain valid until another lane property of that type is defined or the lane section ends.
-
Lane properties of identical types shall be defined in ascending order.
9.5.1. Lane width
The width of a lane is defined along the t-coordinate. The width of a lane may change within a lane section.
Lane width and lane border elements are mutually exclusive within the same lane group. If both width and lane border elements are present for a lane section in the OpenDRIVE file, the application must use the information from the <width>
elements.
In OpenDRIVE, lane width is described by the <width>
element within the <lane>
element.
Attributes
t_road_lanes_laneSection_lr_lane_width
The width of a lane shall be defined at least once per lane section. The center lane shall have no width, meaning that the <width>
element shall not be used for the center lane. The width of a lane shall remain valid until a new width element is defined or the lane section ends.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position of the <width> element, relative to the position of the preceding |
|
|
double |
m |
]-โ;โ[ |
Polynom parameter a, offset at @s (ds=0) |
|
|
double |
1 |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
1/m |
]-โ;โ[ |
Polynom parameter c |
|
|
double |
1/mยฒ |
]-โ;โ[ |
Polynom parameter d |
Calculation
The width at a given point is calculated with the following polynomial function of the third order:
Width (ds) = a + b*ds + c*dsยฒ + d*dsยณ
where
|
is the width at a given position |
|
are the coefficients |
|
is the distance along the road reference line between the start of a new lane width element and the given position |
ds
restarts at zero for each element. The absolute position of a width value is calculated as follows:
s = ssection + offsetstart + ds
where
|
is the absolute position in the reference line coordinate system |
|
is the start position of the preceding lane section element in the track coordinate system |
|
is the offset of the element relative to the preceding lane section |
Figure 62: Change of lane width per lane section shows the change in lane width in positive s-direction, starting at different offset positions.
XML Example
See the sample file Ex_Lane-Width.xodr
Rules The following rules apply to lane width:
-
The width of a lane shall be defined at least once per lane section.
-
The width of the lane shall be defined for the full length of the lane section. This means that there must be a
<width>
element for s=0. -
The center lane shall have no width, meaning that the
<width>
element shall not be used for the center lane. -
The width of a lane shall remain valid until a new width element is defined or the lane section ends.
-
A new width element shall be defined when the variables of the polynomial function change.
-
Several width elements per lane section shall be defined in ascending order.
-
Width elements shall not be used together with border elements in the same lane group.
Related topics
-
Lane sections
-
Lane grouping within lane sections
-
Superelevation
-
Shape definition
9.5.2. Lane borders
Lane borders are another method to describe the width of lanes. Instead of defining the width directly, lane borders describe the outer limits of a lane, independent of the parameters of their inner borders. In this case, inner lanes are defined as lanes which have the same sign for their ID as the lane currently defined, but with a smaller absolute value for their ID.
Especially when road data is derived from automatic measurements, this type of definition is easier than specifying the lane width because it avoids creating many lane sections.
Lane width and lane border elements are mutually exclusive within the same lane group. If both width and lane border elements are present for a lane section in the OpenDRIVE file, the application shall use the information from the <width>
elements.
In OpenDRIVE, lane borders are represented by the <border>
element within the <lane>
element.
Attributes
t_road_lanes_laneSection_lr_lane_border
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position of the <width> element, relative to the position of the preceding |
|
|
double |
m |
]-โ;โ[ |
Polynom parameter a, offset at @s (ds=0) |
|
|
double |
1 |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
1/m |
]-โ;โ[ |
Polynom parameter c |
|
|
double |
1/mยฒ |
]-โ;โ[ |
Polynom parameter d |
Calculation
The border position at a given point is calculated with the following polynomial function of the third order:
tborder (ds) = a + b*ds + c*dsยฒ + d*dsยณ
where
|
is the t-position of the border at a given ds-position |
|
are the coefficients |
|
is the distance along the road reference line between the start of the element and the given position |
ds
restarts at zero for each element. The absolute position of a border offset value is calculated by
s = sSection + offsetstart+ ds
where
|
is the absolute position in the reference line coordinate system |
|
is the start position of the preceding lane section element in the track coordinate system |
|
is the offset of the element relative to the preceding lane section element |
Figure 63 illustrates this convention for a lane with varying border shape over a given range:
XML Example
See the sample file Ex_Lane-Border.xodr
Rules
The following rules apply to lane borders:
-
Width elements shall not be used together with border elements in the same lane group.
-
Border elements shall not exist together with lane offset.
-
A new border element shall be defined when the variables of the polynomial function change.
Related topics
-
Lane sections
-
Lane grouping within lane sections
9.5.3. Lane type
The lane type is defined per lane. A lane type defines the main purpose of a lane and its corresponding traffic rules.
The available lane types are:
-
shoulder: Describes a soft border at the edge of the road.
-
border: Describes a hard border at the edge of the road. It has the same height as the drivable lane.
-
driving: Describes a "normal" drivable road that is not one of the other types.
-
stop: Hard shoulder on motorways for emergency stops
-
none: Describes the space on the outermost edge of the road and does not have actual content Its only purpose is for applications to register that OpenDRIVE is still present in case the (human) driver leaves the road.
-
restricted: Describes a lane on which cars should not drive. The lane has the same height as drivable lanes. Typically, the lane is separated with lines and often contains dotted lines as well.
-
parking: Describes a lane with parking spaces.
-
median: Describes a lane that sits between driving lanes that lead in opposite directions. It is typically used to separate traffic in towns on large roads.
-
biking: Describes a lane that is reserved for cyclists.
-
sidewalk: Describes a lane on which pedestrians can walk.
-
curb: Describes curb stones. Curb stones have a different height than the adjacent drivable lanes.
-
exit: Describes a lane that is used for sections that are parallel to the main road. It is mainly used for deceleration lanes.
-
entry: Describes a lane type that is used for sections that are parallel to the main road. It is mainly used for acceleration lanes.
-
onramp: A ramp leading to a motorway from rural or urban roads.
-
offRamp: A ramp leading away from a motorway and onto rural urban roads.
-
connectingRamp: A ramp that connects two motorways, for example, motorway junctions.
For the use of the lane types, see figure 64 to figure 68.
In OpenDRIVE, lane types are represented by the attribute @type element within the <lane>
element.
Attributes
t_road_lanes_laneSection_lr_lane
Lane elements are included in left/center/right elements. Lane elements should represent the lanes from left to right, that is, with descending ID.
attributes |
name |
type |
unit |
value |
Description |
|
e_laneType |
Type of the lane. For values see UML model. |
|||
|
t_bool |
"true" = keep lane on level, that is, do not apply superelevation; "false" = apply superelevation to this lane (default, also used if attribute level is missing) |
Rules
The following rules apply to lane types:
-
The lane type may be changed as often as needed by using a new lane section.
Related topics
-
Lanes
9.5.4. Lane material
OpenDRIVE provides an element to store information on the material of lanes (apart from OpenCRG), meaning their surface, friction properties, and roughness. If no material is defined, applications can apply default values.
In OpenDRIVE, lane material is represented by the <material> element within the <lane> element.
Attributes
t_road_lanes_laneSection_lr_lane_material
Stores information about the material of lanes. Each element is valid until a new element is defined. If multiple elements are defined, they must be listed in ascending order.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position, relative to the position of the preceding <laneSection> element |
|
|
string |
Surface material code, depending on application |
|||
|
t_grEqZero |
[0;โ[ |
Friction coefficient |
||
|
t_grEqZero |
[0;โ[ |
Roughness, for example, for sound and motion systems |
Rules
The following rules apply to lane material:
-
The center lane shall have no material elements.
-
The material elements of a lane shall remain valid until another material element starts or the lane section ends.
-
If there are multiple material elements per lane section, the elements shall be defined in ascending order regarding s-position.
Related topics
-
Lanes
-
Lane sections
-
Lane grouping within lane sections
9.5.5. Lane speed limit
The maximum speed allowed on a lane may be defined. Lane speed limits overrides road speed limits.
In OpenDRIVE, lane speed is represented by the <speed> element within the <lane> element.
Attributes
t_road_lanes_laneSection_lr_lane_speed
Defines the maximum allowed speed on a given lane. Each element is valid in direction of the increasing s-coordinate until a new element is defined.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position, relative to the position of the preceding <laneSection> element |
|
|
t_grEqZero |
m/s |
[0;โ[ |
Maximum allowed speed |
|
|
e_unitSpeed |
Unit of the attribute max. For values, see UML Model |
XML example
<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>
Rules
The following rules apply to lane speed limits:
-
The center lane shall have no speed limit.
-
The speed limit of a lane shall remain valid until another speed limit is defined or the lane section ends.
-
If there are multiple lane speed limit elements per lane section, the elements shall be defined in ascending order.
-
Speed limits derived from signals shall always have preference.
Related topics
-
Lanes
-
Signals
-
Speed limits for road types
9.5.6. Lane access
Lanes can be restricted to specific road users, such as trucks or busses. Such restrictions may be defined in OpenDRIVE in addition to restrictions described by signals.
OpenDRIVE provides the <access>
element within the <lane>
element to describe lane access rules.
Attributes
t_road_lanes_laneSection_lr_lane_access
Defines access restrictions for certain types of road users.
Each element is valid in direction of the increasing s co-ordinate until a new element is defined. If multiple elements are defined, they must be listed in ascending order.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position, relative to the position of the preceding |
|
|
e_road_lanes_laneSection_lr_lane_access_rule |
specifies whether the participant given in the attribute @restriction is allowed or denied access to the given lane |
|||
|
e_accessRestrictionType |
Identifier of the participant to whom the restriction applies. For values, see UML Model |
XML Example
<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>
Rules
The following rules apply to lane access rules:
-
The center lane shall have no access rules.
-
The access rules of a lane shall remain valid until another access rule is defined or the lane section ends.
-
If there are multiple access rule elements per lane section, the elements shall be defined in ascending order.
-
Lane access elements may start at identical offset positions.
-
If no
<access>
element is present within a lane element, then there are no restrictions. -
If deny value is present in the
<rule>
element, all other vehicles are still allowed. -
If allow value is present in the
<rule>
element, all other vehicles are banned. -
At a given s-position, either only deny or only allow values shall be given, not mixed.
-
For a new s-position, all restrictions must be defined again, even if only a subset changes.
-
The restriction deny=none is used to revert all previous restrictions.
Related topics
-
Lanes
-
Lane sections
9.5.7. Lane height
Lane height shall be defined along the h-coordinate. Lane height may be used to elevate a lane independent from the road elevation. Lane height is used to implement small-scale elevation such as raising pedestrian walkways, as shown in figure 71. Lane height is specified as offset from the road (including elevation, superelevation, shape) in z direction.
In OpenDRIVE, lane height is represented by the <height>
element within the <lane>
element.
Attributes
t_road_lanes_laneSection_lr_lane_height
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position, relative to the position of the preceding |
|
|
double |
m |
]-โ;โ[ |
Inner offset from road level |
|
|
double |
m |
]-โ;โ[ |
Outer offset from road level |
XML example
<lane id="-2" type="sidewalk" level="false">
<link>
<successor id="-3"/>
</link>
<width sOffset="0.0" a="2.0" b="0.0" c="0.0" d="0.0"/>
<height sOffset="0.0" inner="0.12" outer="0.12"/>
</lane>
Rules
The following rules apply to lane height:
-
To modify the lane height, for example for curbstones, the element <height> shall be used.
-
The center lane shall not be elevated by lane height.
-
Lane height shall not be used to define road elevation or superelevation.
-
Lane height shall be used for small scale elevation only.
Related topics
-
Road elevation
-
Lanes
-
Lane grouping within lane sections
9.5.8. Excluding lanes from road superelevation
Single lanes may be excluded from superelevation to cover use cases like roads with curbstones, borders, or sidewalks without superelevation.
Figure 72 shows the use of the attribute @level, which excludes the outermost lanes of a road from superelevation.
OpenDRIVE provides the attribute @level for excluding lanes from road superelevation. When the attribute is set to TRUE for a lane, then this lane is excluded from both superelevation and road shape definition of the road. The elevation of the lane stays on the same height as the inner connecting lane.
There may be multiple outer lanes with level=TRUE, for example, for a bike lane followed by a sidewalk.
Rules
The following rules apply for excluding lanes from road elevation:
-
If a lane has @level = TRUE, then at least on one side there shall be only lanes with @level = TRUE until the edge of the road is reached.
-
There may be multiple outer lanes with @level = TRUE.
Related topics
-
Superelevation
-
Lane type
9.6. Road markings
Lanes on roads can have different lane markings, for example lines of different colors and styles. OpenDRIVE provides the <roadMark>
element for road markings. The road mark information defines the style of the line at the laneโs outer border. For left lanes, this is the left border, for right lanes the right one. The style of the center line that separates left and right lanes is determined by the road mark element for the center lane.
For each lane within a road cross section, multiple road mark elements may be defined. Several attributes may be used to describe the properties of the lane markings, for example @type, @weight, and @width.
There are two ways to specify the type of road marking:
-
The @type attribute within the <roadMark> element allows to enter keywords that are stored in the application. They are used to describe simplified road marking types like solid, broken, or grass.
-
The <type> element contains further <line> elements that allows to describe the road marking in a more detailed way.
In OpenDRIVE, road markings are represented by <roadMark>
elements within <lane>
elements.
Attributes
t_road_lanes_laneSection_lcr_lane_roadMark_type
Each type definition shall contain one or more line definitions with additional information about the lines that the road mark is composed of.
attributes |
name |
type |
unit |
value |
Description |
|
string |
Name of the road mark type. May be chosen freely. |
|||
|
t_grEqZero |
m |
[0;โ[ |
Accumulated width of the road mark. In case of several |
t_road_lanes_laneSection_lcr_lane_roadMark_type_line
A road mark may consist of one or more elements. Multiple elements are usually positioned side-by-side. A line definition is valid for a given length of the lane and will be repeated automatically.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
Length of the visible part |
|
|
t_grEqZero |
m |
[0;โ[ |
Length of the gap between the visible parts |
|
|
double |
m |
[-โ;โ[ |
Lateral offset from the lane border. If |
|
|
t_grEqZero |
m |
[0;โ[ |
Initial longitudinal offset of the line definition from the start of the road mark definition |
|
|
e_roadMarkRule |
no passing; caution; none |
Rule that must be observed when passing the line from inside, for example, from the lane with the lower absolute ID to the lane with the higher absolute ID. For values see UML Model. |
||
|
t_grEqZero |
m |
[0;โ[ |
Line width |
|
|
e_roadMarkColor |
Line color. If given, this attribute supersedes the definition in the |
Rules
The following rules apply to road markings:
-
<roadMark> elements shall only be used to describe the outer lane marking.
-
The centerline of the lane marking shall be positioned on the laneโs outer border line in such a way that the outer half of the lane marking is physically placed on the next lane.
Related topics
-
Road marking types and lines
-
Explicit road marking types and lines
-
Offsets in road marking
9.6.1. Road marking types and lines
Detailed information about road marking types and lines may be defined in <type>
elements within the <roadMark>
element. Each <type>
definition contains one or more <line>
definitions with additional information about the lines of the road marking.
Road marking information in the <type>
element is more specific than the information given in the @type attribute within the <roadMark>
element.
The outline of the road marking is described by the attributes @length and @space:
-
@length represents the visible part of the line.
-
@space describes the non-visible part.
The position of the road marking in relation to the reference line may be described by defining the lateral offset. A line definition is valid for a given length of the lane and will be repeated automatically.
The optional @rule attribute for lines defines the traffic rule for passing the lane from the inside.
In OpenDRIVE, road marking types and lines are represented by <type>
elements within <roadmark>
elements. The line definitions are contained in <line>
elements within the <type>
element.
Attributes
t_road_lanes_laneSection_lcr_lane_roadMark
Defines the style of the line at the outer border of a lane. The style of the center line that separates left and right lanes is determined by the road mark element for the center lane.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position of the |
|
|
e_roadMarkType |
Type of the road mark. For values see UML model. |
|||
|
e_roadMarkWeight |
Weight of the road mark. This attribute is optional if detailed definition is given below. For values see UML model. |
|||
|
e_roadMarkColor |
Color of the road mark. For values see UML model. |
|||
|
string |
Material of the road mark. Identifiers to be defined by the user, use "standard" as default value. |
|||
|
t_grEqZero |
m |
[0;โ[ |
Width of the road mark. This attribute is optional if detailed definition is given by |
|
|
e_road_lanes_laneSection_lcr_ lane_roadMark_laneChange |
increase; decrease; both; none |
Allows a lane change in the indicated direction, taking into account that lanes are numbered in ascending order from right to left. If the attribute is missing, "both" is used as default. For values see UML model. |
||
|
double |
m |
[-โ;โ[ |
Height of road mark above the road, i.e. thickness of the road mark. |
Related topics
-
Road markings
-
Explicit road marking types and lines
-
Offsets in road marking
9.6.2. Explicit road marking types and lines
Irregular road markings that cannot be described by repetitive line patterns may be described by individual road marking elements. These explicit definitions also contain <line>
elements for the line definition, however, these lines will not be repeated automatically as in repetitive road marking types.
In OpenDRIVE, irregular road marking types and lines are represented by <explicit>
elements within <roadmark>
elements. The line definitions are contained in <line> elements within the <explicit>
element.
The <explicit>
element should specifically be used for measurement data.
Attributes
t_road_lanes_laneSection_lcr_lane_roadMark_explicit
t_road_lanes_laneSection_lcr_lane_roadMark_explicit_line
Specifies a single line in an explicit road mark definition.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
Length of the visible line |
|
|
double |
m |
[-โ;โ[ |
Lateral offset from the lane border. If |
|
|
t_grEqZero |
m |
[0;โ[ |
Initial longitudinal offset of the line definition from the start of the road mark definition |
|
|
e_roadMarkRule |
no passing; caution; none |
Rule that must be observed when passing the line from inside, that is, from the lane with the lower absolute ID to the lane with the higher absolute ID. For values see UML Model. |
||
|
t_grEqZero |
m |
[0;โ[ |
Line width. This attribute supersedes the definition in the |
t_road_objects_object_laneValidity
May replace the default validity with explicit validity information for an object. Multiple validity elements may be defined per object.
attributes |
name |
type |
unit |
value |
Description |
|
integer |
[-โ;โ[ |
Minimum ID of the lanes for which the object is valid |
||
|
integer |
[-โ;โ[ |
Maximum ID of the lanes for which the object is valid |
Related topics
-
Road markings
-
Road marking types and lines
-
Offsets in road marking
9.6.3. Offset in road markings
To describe lane markings that are not straight, but have sideway curves, <sway>
elements may be used. A <sway>
element relocates the lateral reference position for the following (explicit) type definition and thus defines an offset. The sway offset is relative to the nominal reference position of the lane marking, meaning the lane border.
The main use case for sways are roads leading through construction sites. The driving lanes are between the yellow lines. The white lines are swayed and only markings.
Offsets from the lateral reference position are defined by <sway>
elements within the <roadMark>
element.
Attributes
t_road_lanes_laneSection_lcr_lane_roadMark_sway
Relocates the lateral reference position for the following (explicit) type definition and thus defines an offset. The sway offset is relative to the nominal reference position of the lane marking, meaning the lane border.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position of the |
|
|
double |
m |
]-โ;โ[ |
Polynom parameter a, sway value at @s (ds=0) |
|
|
double |
1 |
]-โ;โ[ |
Polynom parameter d |
|
|
double |
1/m |
]-โ;โ[ |
Polynom parameter c |
|
|
double |
1/mยฒ |
]-โ;โ[ |
Polynom parameter d |
Calculation
For the definition of sways, the lateral reference position at a given point is calculated with the following polynomial function of the third order:
tOffset (ds) = a + b*ds + c*dsยฒ + d*dsยณ
where
|
is the lateral offset of the lateral reference position from the lane border at a given ds position |
|
are the coefficients |
|
is the distance along the reference line between the start of the element and the given position. |
ds
rds starts at zero for each element and is relative to the sOffset
value given in the <roadMark>
element.
Related topics
-
Road markings
-
Road marking types and lines
-
Explicit road marking types and lines
9.7. Specific lane rules
It is possible to define special rules for certain lanes that are not specifically defined in the OpenDRIVE standard and will be stored in the used application. In OpenDRIVE, lane rule is represented by the <rule> element within the <lane> element.
Attributes
t_road_lanes_laneSection_lr_lane_rule
Used to add rules that are not covered by any of the other lane attributes that are described in this specification.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position, relative to the position of the preceding |
|
|
string |
Free text; currently recommended values are: |
Rules
The following rules apply to lane rule:
-
Applications may have specific lane rules that are only valid in the respective application, but not in OpenDRIVE.
Related topics
-
Lanes
10. Junctions
Junctions are areas where three or more roads meet. There are two different kinds of roads with relation to junctions, as shown in figure 74 Incoming roads: These roads contain lanes that lead into a junction.
-
Connecting roads: These roads represent the paths through a junction.
In OpenDRIVE, junctions are represented by <junction> elements. Connecting roads are represented by <connection>
elements within a <junction>
element.
Outgoing roads are not specifically defined as element or attribute in OpenDRIVE. Incoming roads serve as outgoing roads. These roads are implicitly defined as outgoing by the connecting roads that lead into them.
Attributes
t_junction
Contains information about all possible connections between roads meeting at a physical junction.
attributes |
name |
type |
unit |
value |
Description |
|
string |
Name of the junction. May be chosen freely. |
|||
|
tstring |
Unique ID within databaseUnique ID within database |
|||
|
e_junction_type |
default; virtual |
Type of the junction; regular junctions are of type "default". The attribute is mandatory for virtual junctions |
Rules
The following rules apply to lane rule:
-
Junctions shall only be used when roads cannot be linked directly. They clarify ambiguities for the linking. Ambiguities are caused when a road has two or more possible predecessor or successor roads.
-
Unlike roads, junctions do not have a predecessor or successor.
-
A junction may have an own name to distinguish it from other junctions.
-
Junctions should not be used when only two roads met.
Related topics
-
Incoming roads
-
Connecting roads
-
Road linkage
10.1. Incoming roads
Incoming roads contain lanes that lead into a junction. Because outgoing roads are not specifically defined in OpenDRIVE, incoming roads may also serve as outgoing roads, see Figure 74.
To specify a road as incoming road, its ID is referenced in the <connection>
element using the @incomingRoad attribute.
Attributes
t_junction_connection
Contains information about all possible connections between roads meeting at a physical junction.
attributes |
name |
type |
unit |
value |
Description |
|
tstring |
Unique ID within databaseUnique ID within database |
|||
|
e_junction_type |
default; virtual |
Type of the connection, regular connections are type "default" mandatory attribute for virtual connections |
||
|
string |
ID of the incoming road |
|||
|
string |
ID of the connecting road |
|||
|
e_contactPoint |
start; end |
Contact point on the connecting road. For values, see UML Model |
t_junction_connection_laneLink
Provides information about the lanes that are linked between an incoming road and a connecting road. It is strongly recommended to provide this element. It is deprecated to omit the <laneLink>
element.
attributes |
name |
type |
unit |
value |
Description |
|
integer |
ID of the incoming lane |
|||
|
integer |
ID of the connection lane |
XML example
<junction name="myJunction" id="555" >
<connection id="0"
incomingRoad="1"
connectingRoad="2"
contactPoint="start">
<laneLink from="-2" to="-1"/>
</connection>
Rules
The following rules apply to incoming roads:
-
If the incoming road has lanes leading out of a junction, it also serves as the road leading out off a junction..
-
Connecting roads shall not be incoming roads.
Related topics
-
Connecting roads
-
Junctions
-
Road linkage
10.2. Connection roads
Connecting roads link the roads that meet in a junction. They describe the paths that a vehicle can travel across a junction. Connecting roads are modelled in the same way as standard roads.
The paths described by a connecting road base on its lanes. The connecting road specifies the connections between the lanes of an incoming road and the lanes of an outgoing road of the same junction. If the lanes of an incoming and outgoing road are not linked, this means that there is no traversable path between these lanes.
Figure 74 and figure 76 show the connecting roads inside the junction area that connect the incoming and outgoing roads.
XML example
-
Ex_LHT-Complex-X-Junction.xodr (left hand traffic)
-
UC_Simple-X-Junction.xodr (right hand traffic)
Rules
The following rules apply to connecting roads:
-
Each connecting road shall be represented by exactly one <connection> element. A connecting road may contain as many lanes as required.
-
An incoming road with multiple lanes may be connected to the lanes of the road leading out off the junction in different ways:
-
By multiple connecting roads, each with one <laneLink> element for the connection between two specific lanes. Lane changes within this junction are not possible.
-
By one connecting road with multiple
<laneLink>
elements for the connections between the lanes. Lane changes within this junction are possible.
-
-
The linked lanes shall fit smoothly as described for roads.
-
Connecting roads may be reserved for specific vehicles, for example busses.
Related topics
-
Incoming roads
-
Junctions
-
Road linkage
-
Lane linkage
-
Priorities of connecting roads within a junction
-
Lane access
10.2.1. Priorities of connecting roads within a junction
If an incoming road is linked to aroad leading out of a junction with multiple connecting roads to represent several possible lane connections, then one of these connections may be prioritized. Assigning a priority is only required if the application is unable to derive priorities from signals before or inside a junction or from the lanes leading into a junction.
<priority>
elements are used to assign priorities to connecting roads. The possible attributes are @high and @low.
Attributes
t_junction_priority
If an incoming road is linked to an outgoing road with multiple connection roads to represent several possible lane connections, then one of these connections may be prioritized. At least one attribute must be given.
attributes |
name |
type |
unit |
value |
Description |
|
string |
ID of the prioritized connecting road |
|||
|
string |
ID of the connecting road with lower priority |
Rules
The following rules apply for priorities of connecting roads within a junction:
-
Priority elements shall only be used if there are no signals.
Related topics
-
Connecting roads
-
Junctions
10.2.2. Direction of connecting roads
Connecting roads inside a junction may have different directions. For ease of use, the reference line of the connecting roads should be placed in driving direction if the driving direction is unique.
The attribute @contactPoint inside the <connection>
element is used to specify the direction of a connecting road.
Rules
The following rules apply for the direction of connecting roads:
-
The value "start" shall be used to indicate that the connecting road runs along the linkage indicated in the
<laneLink>
element. -
The value "end" shall be used to indicate that the connecting road runs along the opposite direction of the linkage indicated in the <laneLink> element.
Related topics
-
Connecting roads
-
Road type
10.3. Road surface within junctions
Roads may be elevated within a junction. This is accomplished by describing the road surface in correspondence with the descriptions used in OpenCRG. Using the road surface enables the description of complex elevations within a junction, including overlapping roads. All existing descriptions of road elevation within a junction are superseded by the <surface> element. Because OpenCRG is not part of OpenDRIVE, the <surface> element is not described in this specification..
Attributes
t_junction_surface
Used to describe the road elevation profile within a junction. When a <junction> element contains a <surface> element, the <surface> element supersedes all elevation data for connecting roads.
t_junction_surface_CRG
Data described in OpenCRG are represented by the <CRG> element within the <surface> element.
attributes |
name |
type |
unit |
value |
Description |
file |
string |
Name of the file containing the CRG data |
|||
mode |
e_road_surface_CRG_mode |
global |
Attachment mode for the surface data, see specification. |
||
purpose |
e_road_surface_CRG_purpose |
elevation; friction |
Physical purpose of the data contained in the CRG file; if the attribute is missing, data will be interpreted as elevation data. |
||
zOffset |
double |
m |
]-โ;โ[ |
z-offset between CRG center line and inertial xy-plane (default = 0.0) |
|
zScale |
double |
]-โ;โ[ |
z-scale factor for the surface description (default = 1.0) |
e_road_surface_CRG_mode
attributes |
name |
type |
unit |
value |
Description |
|
string |
||||
|
string |
||||
|
string |
||||
|
string |
e_road_surface_CRG_purpose
attributes |
name |
type |
unit |
value |
Description |
|
string |
Defines if the linked CRG file contains elevation values |
|||
|
string |
Defines if the linked CRG file contains friction values |
Related Topics
-
Surface (CRG) for roads
10.4. Virtual Junctions
Virtual junctions are used to describe connections within a road that do not require the main road to be split up like in normal junctions. By this, virtual junctions can be placed more easily. Their only use case are driveways that lead to parking lots or residential estates.
Figure 77 show how virtual junctionsare applied. The transparent blue roads (road 2,4,5) are part of a virtual junction.
It is not mandatory for road 99 to be defined; It is sufficient to have the connecting roads only.
Virtual junctions are modeled by <junction>
elements with the attribute @type.
Attributes
t_junction_predecessorSuccessor
Provides detailed information about the predecessor / successor road of a virtual connection. Currently, only the @elementType "road" is allowed.
attributes |
name |
type |
unit |
value |
Description |
|
string |
road |
Type of the linked element Currently only "road" is allowed. |
||
|
string |
ID of the linked element |
|||
|
t_grZero |
[0;โ[ |
s-coordinate where the connection meets the preceding / succeding road. |
||
|
e_elementDir |
+; - |
Direction, relative to the s-direction, of the connection on the preceding / succeding road |
XML example
<junction name="myJunction" type="virtual" id="555" >
<connection id="0"
incomingRoad="1"
connectingRoad="2"
contactPoint="start">
<laneLink from="-2" to="-1"/>
</connection>
<connection id="1"
incomingRoad="-1"
connectingRoad="4"
contactPoint="start">
<laneLink from="-1" to="-1"/>
</connection>
<connection id="2"
incomingRoad="-1"
connectingRoad="5"
contactPoint="start">
<laneLink from="-1" to="-1"/>
</connection>
</junction>
Rules
The following rules apply for virtual junctions:
-
The main incoming road within a virtual junction does not need to end before the junction area.
-
Virtual junctions shall not replace regular junctions and crossings that connect multiple regular roads.
-
Virtual junctions shall be used for branches off the main road only.. The main road always has priority.
-
Virtual junctions shall not have controllers and therefore no traffic lights.
-
If no incoming road is defined the attribute @incomingRoad has the value -1.
Related topics
-
Controller
-
Virtual connections
-
Junctions
-
Incoming roads
-
Connecting roads
10.4.1. Virtual connections
Virtual connections indicate possible connections between two roads or one or more lanes of two roads. Because the indicated connections are only virtual, no real path is defined. That means that the course of the reference line is not changed.
Virtual connections describe topological connections between roads and lanes. They do not need to be geometrically correct. This feature has been implemented as convenience function to make OpenDRIVE more beginner-friendly.
For a picture of virtual connections, see figure 78.
Virtual connections are modeled by @type within the <junction> element.
The predecessor and successor roads of a virtual connection are described by <predecessor> and <successor> elements within the <connection> element.
Attributes
See Attributes 9.4
XML example
<junction name="myJunction" type="virtual" id="555" >
<connection id="0" incomingRoad="1" connectingRoad="2" contactPoint="start">
<laneLink from="-2" to="-1"/>
</connection>
<connection id="1" incomingRoad="99" connectingRoad="4" contactPoint="start">
<laneLink from="-1" to="-1"/>
</connection>
<connection id="2" incomingRoad="99" connectingRoad="5" contactPoint="start">
<laneLink from="-1" to="-2"/>
</connection>
<connection id="3" type="virtual">
<predecessor elementType="road" elementId="99" contactPoint="end"/>
<successor elementType="road" elementId="1" elementS="60.0" elementDir="-"/>
<laneLink from="-1" to="1"/>
</connection>
<connection id="4" type="virtual">
<predecessor elementType="road" elementId="99" contactPoint="end"/>
<successor elementType="road" elementId="1" elementS="60.0" elementDir="-"/>
<laneLink from="-1" to="2"/>
</connection>
<connection id="5" type="virtual">
<predecessor elementType="road" elementId="1" elementS="70.0" elementDir="-"/>
<successor elementType="road" elementId="99" >
<laneLink from="1" to="1"/>
</connection>
</junction>
Rules
The following rules apply for virtual connections:
-
Virtual connections shall not replace regular geometrical elements described by road linkage and lane linkage.
-
Virtual connections shall only be defined in virtual junctions
Related topics
-
Virtual junctions
-
Road linkage
-
Lane linkage
10.5. Junction groups
Two or more junctions may be grouped in junction groups to indicate that these junctions belong to the same roundabout.
Figure 79 shows how the junctions 1,2,3 are aggregated in the junction group A.
Junction groups are described by <junctionGroup>
elements. The junctions that belong to the junction group are specified by <junctionReference>
elements.
Attributes
t_junctionGroup
Two or more junctions may be grouped in junction groups to indicate that these junctions belong to the same roundabout.+
The <junctionGroup>
element is split into a header element and a series of member elements.
attributes |
name |
type |
unit |
value |
Description |
|
string |
road |
Name of the junction group. May be chosen freely. |
||
|
string |
Unique ID within database |
|||
|
e_junctionGroup_type |
roundabout; unknown |
Type of junction group. For values see UML Model |
t_junctionGroup_junctionReference
References to existing junction elements.
attributes |
name |
type |
unit |
value |
Description |
|
string |
road |
ID of the junction |
XML example
See the use case file UC_2Lane-Roundabout-3Arms.xodr
Related topics
-
Junctions
-
Controllers for junctions
10.5.1. Controllers for junctions
Controllers may be used to manage signals within a junction, as shown in figure 81. The use of controllers is described in the signal chapter. The function of the element within the <junction>
element is to list the existing controllers and prioritize them in relation to other controllers inside the junction.
Controllers for junctions are described by <controller>
elements within the <junction>
element.
The @type of control depends on the application and is not specified in OpenDRIVE.
Attributes
t_junction_controller
Lists the controllers that are used for the management of a junction.
attributes |
name |
type |
unit |
value |
Description |
|
string |
ID of the controller |
|||
|
string |
Type of control for this junction. Free text, depending on the application. |
|||
|
nonNegativeInteger |
[0;โ[ |
Sequence number (priority) of this controller with respect to other controllers in the same junction |
XML example
See the ucse case file UC_Simple-X-Junction-TrafficLights.xodr
Related topics
-
Controllers
-
Junction groups
-
Junctions
11. Objects
Objects are items that influence a road by expanding, delimiting, and supplementing its course. The most common examples are parking spaces, crosswalks, and traffic barriers.
There are two ways to describe the bounding box of objects, as shown in figure 83
-
For an angular object: definition of the width, length and height
-
For a circular object: definition of the radius and height
Complex objects may be further described using <outline>
elements. If an <outline>
is defined, it supersedes the bounding box.
Objects in OpenDRIVE do not change their position. They may be declared dynamic or static:
-
Dynamic objects are static but have one or more moveable part. Examples are fans in tunnels or windmills.
-
Stationary objects are completely static without any movable part. Examples are buildings or trees.
In OpenDRIVE, objects are represented by the <objects>
element within the <object>
element. Objects are defined per <road>
element.
Attributes
t_road_objects
Container for all objects along a road.
t_road_objects_object
Describes common 3D objects that have a reference to a given road. Objects are items that influence a road by expanding, delimiting, and supplementing its course. The most common examples are parking spaces, crosswalks, and traffic barriers. There are two ways to describe the bounding box of objects.
-
For an angular object: definition of the width, length and height.
-
For a circular object: definition of the radius and height.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of object’s origin |
|
|
double |
m |
]-โ;โ[ |
t-coordinate of object’s origin |
|
|
double |
m |
]-โ;โ[ |
z-offset of object’s origin relative to the elevation of the reference line |
|
|
e_objectType |
Type of object. For values, see UML. For a parking space, the <parkingSpace> element may be used additionally. |
|||
|
t_grEqZero |
m |
[0;โ[ |
Validity of object along s-axis (0.0 for point object) |
|
|
e_orientation |
+; -; none |
"" = valid in positive s-direction, "-" = valid in negative s-direction,+ "none" = valid in both directions+ (does not affect the heading) |
||
|
string |
Variant of a type |
|||
|
t_yesNo |
yes; no |
Indicates whether the object is dynamic or static, default value is "no" (static). Dynamic object cannot change its position. |
||
|
double |
rad |
]-โ;โ[ |
Heading angle of the object relative to road direction |
|
|
string |
Name of the object. May be chosen freely. |
|||
|
double |
rad |
]-โ;โ[ |
Pitch angle relative to the x/y-plane |
|
|
string |
Unique ID within database |
|||
|
double |
rad |
]-โ;โ[ |
Roll angle relative to the x/y-plane |
|
|
double |
m |
]-โ;โ[ |
Height of the object’s bounding box. @height is defined in the local coordinate system u/v along the z-axis |
|
|
double |
m |
[0;โ[ |
Length of the object’s bounding box, alternative to @radius. @length is defined in the local coordinate system u/v along the v-axis |
|
|
double |
m |
[0;โ[ |
Width of the angular object’s bounding box, alternative to @radius. @width is defined in the local coordinate system u/v along the u-axis |
|
|
double |
m |
[0;โ[ |
Radius of the circular object’s bounding box, alternative to @length and @width. @radius is defined in the local coordinate system u/v" |
XML example
<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>
Rules
The following rules apply to objects:
-
The type of an object shall be given by the @type attribute.
-
An object may either be dynamic or static.
-
Objects derived from OpenSCENARIO shall not be mixed with objects described in OpenDRIVE.
-
The direction for which objects are valid shall be specified.
-
The origin position of the object shall be described with s- and t-coordinates.
-
Objects may be of circular or angular shape. The possibilities are mutually exclusive. The shape is defined by the used attributes.
Related topics
-
Repeating objects
-
Roads
-
Object outline
11.1. Repeating objects
To avoid lengthy XML code, objects of the same type may be repeated. The attributes of the repeated object may be changed. This element is mainly used to describe railings, railing posts, street lamp.
Figure 85 shows one larger angular object that repeats another object. Figure 86 and figure 87 show several smaller repeated objects, angular (Figure 86) and circular (Figure 87).
In OpenDRIVE, repeating objects are represented by the <repeat> element within the <object>
element
Attributes
t_road_objects_object_repeat
To avoid lengthy XML code, objects of the same type may be repeated. Attributes of the repeated object shall overrule the attributes from the original object. If attributes are omitted in the repeated objects, the attributes from the original object apply.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of start position, overrides the corresponding argument in the original <object> record |
|
|
t_grEqZero |
[0;โ[ |
Length of the repeat area, along the reference line in s-direction. |
||
|
t_grEqZero |
m |
[0;โ[ |
Distance between two instances of the object; If this value is zero, then the object is treated like a continuous feature, for example, a guard rail, a wall, etc. |
|
|
double |
m |
]-โ;โ[ |
Lateral offset of objects reference point at @s |
|
|
double |
m |
]-โ;โ[ |
Lateral offset of object’s reference point at @s + @length |
|
|
double |
m |
]-โ;โ[ |
Height of the object at @s |
|
|
double |
m |
]-โ;โ[ |
Height of the object at @s + @length |
|
|
double |
m |
]-โ;โ[ |
z-offset of the object at @s, relative to the elevation of the reference line |
|
|
double |
m |
]-โ;โ[ |
z-offset of the object at @s + @length, relative to the elevation of the reference line |
|
|
t_grEqZero |
m |
[0;โ[ |
Width of the object at @s |
|
|
t_grEqZero |
m |
[0;โ[ |
Width of the object at @s + @length |
|
|
t_grEqZero |
||||
|
t_grEqZero |
||||
|
t_grEqZero |
||||
|
t_grEqZero |
XML example
<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>
Rules
The following rules apply to repeating objects:
-
Parameters of the repeated object may differ from the original object.
-
Parameters of the repeated object shall overrule the parameters from the original object.
Related topics
-
Objects
-
Junction groups
11.2. Object outline
Objects may have an outline that is too complex to be described by parameters for angular and circular objects alone. Therefore, the outline of polygonal objects or non-rectangular objects may be described in a more detailed way.
An outline defines a series of corner points, including the height of the object relative to the road reference line. The inner area of the described outline may be filled with a filling type, such as grass, concrete, asphalt, or pavement.
The definition of the outline of objects is mainly used for traffic islands, irregularly shaped parking spaces and special road marking.
In OpenDRIVE, the outline of objects is represented by the <outlines>
element within the <object>
element.
The <outlines>
element serves as a wrapper for the <outline>
element, which itself contains further elements to describe, for example, corner roads, bridges and borders.
Attributes
t_road_objects_object_outlines_outline
Defines a series of corner points, including the height of the object relative to the road reference line. For areas, the points should be listed in counter-clockwise order.
An <outline>
element shall be followed by one or more <cornerRoad>
element or by one or more <cornerLocal>
element.
OpenDRIVE 1.4 outline definitions (without <outlines> parent element) shall still be supported, but deprecated.
attributes |
name |
type |
unit |
value |
Description |
|
nonNegativeInteger |
[0;โ[ |
ID of the outline. Must be unique within one object. |
||
|
e_outlineFillType |
Type used to fill the area inside the outline. For values see UML Model. |
|||
|
t_bool |
true; false |
Defines if outline is an outer outline of the object. |
||
|
t_bool |
true; false |
If true, the outline describes an area, not a linear feature. |
||
|
e_laneType |
Describes the lane type of the outline. For values see UML Model. |
XML example
Ex_TrafficIsland-CornerRoad.xodr
Rules
The following rules apply to outline elements:
-
An
<outline>
element shall be followed by one or more<cornerRoad>
elements or by one or more<cornerLocal>
element. -
The
<outline>
element may represent an area or a line feature. -
The inner area of the described outline may be filled with a filling type.
-
An outline may be specified as an objects outer or inner outline. It may be specified if the described outline is located at the outer border of the object.
-
It may be specified like which lane type the object is treated by the application.
-
All points of the
<outline>
element must be located inside the bounding box.
Related topics
-
Corner roads
-
Corner local
-
Objects
11.2.1. Corner roads
Corner roads are mandatory elements inside an <outline> element. They are used to describe non-linear forms of objects. They are mutually exclusive with <cornerLocal> elements. Corner roads describe the outline of objects relative to the road reference line with their s- and t-coordinates.
The shape of an object may be described by the height of the object at a corner and the difference in height relative to the reference line.
Figure 89 shows a non-linear object with several corner points that is described by the s- and t-coordinates along the reference line. Corner road helps to position objects along a road, for example concrete barriers.
In OpenDRIVE, corner roads are represented by the <cornerRoad>
element within the <outline>
element.
Attributes
t_road_objects_object_outlines_outline_cornerRoad
Defines a corner point on the objectโs outline in road coordinates.
attributes |
name |
type |
unit |
value |
Description |
|
double |
m |
[-โ;โ[ |
s-coordinate of the corner |
|
|
double |
m |
[-โ;โ[ |
t-coordinate of the corner |
|
|
double |
m |
[-โ;โ[ |
dz of the corner relative to road reference line |
|
|
double |
m |
[-โ;โ[ |
Height of the object at this corner, along the z-axis |
|
|
nonNegativeInteger |
[0;โ[ |
ID of the outline point. Shall be unique within one outline. |
XML example
Ex_TrafficIsland-cornerRoad.xodr
Rules
The following rules apply to cornerRoad elements:
-
There shall be at least two <`cornerRoad>` elements inside an
<outline>
element. -
There shall be no
<cornerLocal>
element next to a<cornerRoad>
element inside the same<outline>
element.
Related topics
-
Corner local
-
Object outline
-
Superelevation
11.2.2. Corner local
Corner local are mandatory elements inside an <outline>
element. They are used to describe non-linear forms of objects. They are mutually exclusive with <cornerRoad>
. Corner local describes the outline of objects within a local u/v-coordinate system.
Figure 90 shows a non-linear object with several corner points that is described within a local coordinate system. Corner local helps to position objects beyond a road, relative to a single point, for example buildings or traffic islands.
In OpenDRIVE, corner locals are represented by the <cornerLocal>
element within the <outline>
element.
Attributes
t_road_objects_object_outlines_outline_cornerLocal
Used to describe complex forms of objects. Defines a corner point on the object outline relative to the object pivot point in local u/v-coordinates. The pivot point and the orientation of the object are given by the s/t/heading arguments of the <object>
element.
attributes |
name |
type |
unit |
value |
Description |
|
double |
m |
[-โ;โ[ |
Local u-coordinate of the corner |
|
|
double |
m |
[-โ;โ[ |
Local v-coordinate of the corner |
|
|
double |
m |
[-โ;โ[ |
Local z-coordinate of the corner |
|
|
double |
m |
[-โ;โ[ |
Height of the object at this corner, along the z-axis |
|
|
nonNegativeInteger |
[0;โ[ |
ID of the outline point. Shall be unique within one outline. |
XML example
See the use case file UC_2Lane-Roundabout-3Arms.xodr
Rules
The following rules apply to cornerLocal elements:
-
There shall be at least two
<cornerLocal>
elements inside an <outline> element. -
There shall be no mixture of
<cornerRoad>
and<cornerLocal>
elements inside the same <outline> element.
Related topics
-
Corner road
-
Object outline
11.3. Object material
Objects placed on a road, such as patches, may consist of a different material than the surrounding road. Therefore, the material of the object may be defined separately. In OpenDRIVE, it is possible to describe the surface, roughness and friction. The values depend on the application and are not defined in OpenDRIVE.
In OpenDRIVE, object material is represented by the <material>
element within the <object>
element
Attributes
t_road_objects_object_material
Describes the material properties of objects, for example, patches that are part of the road surface but deviate from the standard road material. Supersedes the material specified in the <road material>
element and is valid only within the outline of the parent road object.
attributes |
name |
type |
unit |
value |
Description |
|
string |
Surface material code, depending on application |
|||
|
t_grEqZero |
[0;โ[ |
Friction value, depending on application |
||
|
t_grEqZero |
[0;โ[ |
Roughness, for example, for sound and motion systems, depending on application |
Rules
The following rules apply to material for objects:
-
The material of objects may differ from the surrounding road.
Related topics
-
Objects
11.4. Lane validity for objects
Per default, objects are valid for all lanes of a road. Lane validity enables rendering of objects for specific lanes only.
In OpenDRIVE, lane validity is represented by the <validity>
element within the <object>
element.
Rules
The following rules apply to validity elements:
-
An object may be valid for specified lanes.
-
An object may be valid for one lane only.
Related topics
-
Objects
-
Object reference
11.5. Access rules to parking spaces
Objects of type parking space are defined as all other object types using the @type=parkingSpace within the <object> element. The outline of the parking space is described by <cornerRoad> or <cornerLocal> elements, as shown in figure 91.
The access to a specified parking space may be restricted to a certain group, for example handicapped persons or residents, or a certain group of vehicles, for example busses. Further restrictions depend on the application and are
In OpenDRIVE, access rules for parking spaces are represented by the <parkingSpace>
element within the <object>
element.
Attributes
attributes |
name |
type |
unit |
value |
Description |
|
e_road_objects_object_parkingSpace_access |
all; car; women; handicapped; bus; truck; electric; residents |
Access definitions for the parking space. Parking spaces tagged with "women" and "handicapped" are vehicles of type car. For values see UML Model |
||
|
string |
<Free text, depending on application |
XML example
Ex_Parkingspace_Rectangular.xodr Ex_Parkingspace_rhomboid.xdor
Rules
The following rules apply to parkingSpace elements:
-
The access to a specified parking space may be limited to a specified group of persons or vehicles.
-
Further access restrictions may be defined, but are not part of OpenDRIVE.
Related topics
-
Objects
-
Corner road
-
Corner local
11.6. Object marking
Marking describes the road marks of any objects like crosswalks, stopping-lines, and parking spaces. Marking is defined either in accordance to the bounding box of the element or by referencing outline points of the object.
In OpenDRIVE, the marking of objects is represented by the <markings>
element within the <object>
element.
The <markings>
element serves as a wrapper for the <marking>
element, which contains further information about the marking.
The marking may be defined for a straight line from one outline point to another by referencing the ID of the respective outline points. For this purpose, the <cornerReference>
element inside the <marking>
element is used.
Attributes
t_road_objects_object_markings
Describes the appearance of the parking space with multiple marking elements.
t_road_objects_object_markings_marking
Specifies a marking that is either attached to one side of the object bounding box or referencing outline points.
attributes |
name |
type |
unit |
value |
Description |
|
e_sideType |
Side of the bounding box described in <object> element in the local coordinate system u/v. For values see UML model. |
|||
|
e_roadMarkWeight |
standard; bold Optical "weight" of the marking. For values see UML model. |
|||
|
t_grZero |
m |
[0;โ[ |
Width of the marking. |
|
|
e_roadMarkColor |
Color of the marking. For values see UML model. |
|||
|
t_grEqZero |
m |
[0;โ[ |
Height of road mark above the road, i.e. thickness of the road mark |
|
|
t_grEqZero |
m |
[0;โ[ |
Length of the gap between the visible parts |
|
|
t_grZero |
m |
[0;โ[ |
Length of the visible part |
|
|
double |
m |
]-โ;โ[ |
Lateral offset in u-direction from start of bounding box side where the first marking starts |
|
|
double |
m |
]-โ;โ[ |
Lateral offset in u-direction from end of bounding box side where the marking ends |
t_road_objects_object_markings_marking_cornerReference
Specifies a point by referencing an existing outline point.
attributes |
name |
type |
unit |
value |
Description |
|
nonNegativeInteger |
[0;โ[ |
Index of outline point |
XML example
<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>
Rules
The following rules apply to object marking elements:
-
The marking of an object shall either completely or partially be defined on its outline
-
The color of the marking shall be defined.
-
If no outline is used, the attribute @side is mandatory.
-
If an outline is used at least two
<cornerReference>
are mandatory
Related topics
-
Object outline
-
Objects
-
Object borders
11.7. Object borders
Objects may have a border, that is a frame of a defined width. Different border types are available, currently concrete and curb, for example for traffic islands.
In OpenDRIVE, object borders are represented by the <borders>
element within the <object>
element. The <borders>
element serves as a wrapper for the <border>
element, which itself contains further attributes to describe the borders.
Attributes
t_road_objects_object_borders
Objects may have a border, that is, a frame of a defined width. Different border types are available.
t_road_objects_object_borders_border
Specifies a border along certain outline points.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
Border width |
|
|
e_borderType |
Appearance of border. For values see UML Model. |
|||
|
nonNegativeInteger |
[0;โ[ |
ID of the outline to use |
||
|
t_bool |
true; false |
Use all outline points for border. "true" is used as default. |
Rules
The following rules apply to object borders:
-
If
useCompleteOutline
is true,<cornerReference>
shall not be defined -
If
useCompleteOutline
is false, at least two<cornerReference>
are mandatory
Related topics
-
Object outline
-
Objects
-
Object marking
11.8. Object reference
It is possible to link an object with one or more roads, signals or other objects. These links represent a logical connection between the two elements.
An object reference is used, for example, if a pedestrian crossing crosses several roads. In this case, the pedestrian crossing is defined for one road only, and then referenced by the other roads that it crosses.
The lane validity element may be used to indicate for which lane the object reference is valid.
In OpenDRIVE, object reference is represented by the <objectReference>
element within the <objects>
element.
Attributes
t_road_objects_objectReference
It is possible to link an object with one or more roads, signals or other objects using a <objectReference>
element. The referenced objects require a unique ID.
The object reference element consists of a main element and an optional lane validity element.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate |
|
|
double |
m |
]-โ;โ[ |
t-coordinate |
|
|
string |
Unique ID of the referred object within the database |
|||
|
double |
m |
]-โ;โ[ |
z offset relative to the elevation of the reference line |
|
|
t_grEqZero |
m |
[0;โ[ |
Validity of the object along s-axis (0.0 for point object) |
|
|
e_orientation |
+; -; none |
"+" = valid in positive s-direction, |
Related topics
-
Lane validity
-
Objects
11.9. Tunnels
Tunnels are modeled as objects in OpenDRIVE. By definition, tunnels are valid for the complete cross section of a road. Different properties of tunnels may be described: length, whether the tunnel represents an underpass and is open to daylight, and the light conditions.
Figure 93 shows a tunnel that is valid for the whole cross section of the road.
In OpenDRIVE, tunnels are represented by the <tunnel> element within the <objects> element.
Attributes
t_road_objects_tunnel
Tunnels are modeled as objects in OpenDRIVE. Tunnels apply to the entire cross section of the road within the given range unless a lane validity element with further restrictions is provided as child element.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m [0;โ[ |
s-coordinate |
||
|
t_grEqZero |
m [0;โ[ |
Length of the tunnel (in s-direction) |
||
|
string |
Name of the tunnel. May be chosen freely. |
|||
|
string |
Unique ID within database |
|||
|
e_tunnelType |
Type of tunnel. For values see UML Model. |
|||
|
t_zeroOne |
[0;1] |
Degree of artificial tunnel lighting. Depends on the application. |
||
|
t_zeroOne |
[0;1] |
Degree of daylight intruding the tunnel. Depends on the application. |
XML example
<objects>
<tunnel
s="50.0"
length="100.0"
name="ExampleTunnel"
id="1"
type="standard"
lighting="0.2"
daylight="0.9" />
</objects>
Rules
The following rules apply to tunnel elements:
-
Tunnels may be restricted to certain lanes, using the
<laneValidity>
element. -
The @type of the tunnel shall be specified.
Related topics
-
Bridges
-
Road cross section
-
Lane validity
11.10. Bridges
Bridges are modeled as objects in OpenDRIVE. By definition, bridges are valid for the complete cross section of a road. Different properties of bridges may be described: length and type, such as concrete, steel, wood or brick.
Figure 94 shows a bridge that is valid for the whole cross section of the road
In OpenDRIVE, bridges are represented by the <bridge> element within the <objects> element.
Attributes
t_road_objects_bridge
Bridges are modeled as objects in OpenDRIVE. Bridges are valid for the whole cross section of a road unless a lane validity record with further restrictions is provided as child element.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m [0;โ[ |
s-coordinate |
||
|
t_grEqZero |
m [0;โ[ |
Length of the bridge (in s-direction) |
||
|
string |
Name of the bridge. May be chosen freely. |
|||
|
string |
Unique ID within database |
|||
|
e_bridgeType |
concrete; steel; brick; wood |
Type of bridge. For values see UML Model. |
XML example
<objects>
<bridge
s="50.0 "
length="100.0"
name="ExampleBridge"
id="1"
type="concrete" />
</objects>
Rules
The following rules apply to bridge elements:
-
Bridges may be restricted to certain lanes, using the
<laneValidity>
element. -
The @type of the bridge shall be specified.
Related topics
-
Bridges
-
Road cross section
-
Lane validity
12. Signals
Signals are traffic signs, traffic lights, and specific road marking for the control and regulation of road traffic, as shown in figure 95.
Signals have different functions and properties:
-
They are used to control traffic behavior, for example, with speed limits and turn restrictions, and to alert road traffic about dangerous situations.
-
They can be static or dynamic. Static signals, like stop signs, do not change their meaning. Dynamic signals, like traffic lights, may change their meaning during the simulation. Their state may be defined in OpenSCENARIO.
Signals shall be placed in relation to a specific road. The position of the signal is described relative to the road reference line, using the s- and t- coordinates. Signals shall be positioned in such a way that it is clear to which road or lane they belong and where their validity starts. Ambiguity about their interpretation shall be avoided.
Traffic rules are different for each country. The country of the signal is specified in the attribute @country. When placing signals in OpenDRIVE, country-specific legislation and traffic rules should be considered. Legislative changes are indicated by the year when the rules come into force.
Height and width of a signal are not required but are recommended for proper representation of the signal.
Road marks, that are not binding to traffic, are not defined as signals, but only as objects.
A signal with the attributes @type and @subtype is only unique in combination with @country and @countryRevision.
In OpenDRIVE, signals are represented by the <signals>
element within the <road>
element.
Attributes
t_road_signals
The <signals>
element is the container for all signals along a road.
t_road_signals_signal
Used to provide information about signals along a road. Consists of a main element and an optional lane validity element. The tag for a signal is <signal>
.
attributes |
name |
type |
unit |
value |
Description |
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate |
|
|
double |
m |
]-โ;โ[ |
t-coordinate |
|
|
string |
Unique ID of the signal within the OpenDRIVE file |
|||
|
string |
Name of the signal. May be chosen freely. |
|||
|
t_yesNo |
yes; no |
Indicates whether the signal is dynamic or static. Example: traffic light is dynamic |
||
|
e_orientation |
+; -; none |
"+" = valid in positive s- direction |
||
|
double |
m |
]-โ;โ[ |
z offset from the road to bottom edge of the signal. This represents the vertical clearance of the object. Relative to the reference line. |
|
|
e_countryCode |
Country code of the road, see ISO 3166-1, alpha-2 codes. |
|||
|
string |
||||
|
string |
-1; none |
Type identifier according to country code or "-1" / "none". See extra document. |
||
|
string |
Subtype identifier according to country code or "-1" / "none" |
|||
|
double |
Value of the signal, if value is given, unit is mandatory |
|||
|
e_unit |
Unit of @value |
|||
|
t_grEqZero |
m |
[0;โ[ |
Height of the signal, measured from bottom edge of the signal. |
|
|
t_grEqZero |
m |
[0;โ[ |
Width of the signal |
|
|
string |
Additional text associated with the signal, for example, text on city limit "City\nBadAibling" |
|||
|
double |
rad |
]-โ;โ[ |
Heading offset of the signal (relative to @orientation, if orientation is equal to "" or "-") Heading offset of the signal (relative to reference line, if orientation is equal to "none" ) |
|
|
double |
rad |
]-โ;โ[ |
Pitch angle of the signal, relative to the inertial system (xy-plane) |
|
|
double |
rad |
]-โ;โ[ |
Roll angle of the signal after applying pitch, relative to the inertial system (xยดยดyยดยด-plane) |
XML example
<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>
Rules
The following rules apply to signals:
-
Signals shall have a specific type and subtype.
-
If present, signals shall be used in priority to other traffic rules.
-
A country code shall be added to refer to country-specific rules using the @country attribute.
-
The year the traffic rules come into force may be specified in the @countryRevision attribute.
-
Signals may be valid for one direction or both directions.
-
Signals may be dynamic or static.
Related topics
-
Roads
-
Signal positioning
-
Controllers
12.1. Lane validity for signals
By default, signals are valid for all lanes of a road. Lane validity offers the possibility to restrict the validity of a signal to specific lanes only.
In figure 98, signals in the shape of a road mark specify the speed limit of different lanes.
In OpenDRIVE, lane validity is represented by the <validity>
element within the <signal>
element.
Rules
The following rules apply to validity elements:
-
A signal may be valid for one or more lanes.
Related topics
-
Signals
-
Signal dependency
-
Signal positioning
12.2. Signal dependency
Signal dependency means that one signal controls the output of another signal. For example, warning lights can be automatically turned on, when a traffic light goes red.
Rules regarding the type of dependency are defined in the application and are not stored in OpenDRIVE.
In OpenDRIVE, signal dependency is represented by the <dependency>
element within the <signal>
element.
Attributes
t_road_signals_signal_dependency
Signal dependency means that one signal controls the output of another signal. A signal may have multiple dependency elements.
attributes |
name |
type |
unit |
value |
Description |
|
string |
ID of the controlled signal |
|||
|
string |
Type of the dependency, Free text, depending on application |
XML example
<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>
Rules
The following rules apply to dependency elements:
-
A signal may have multiple dependencies.
-
The type of dependency is not specifically defined in OpenDRIVE and may be set in the application
Related topics
-
Links between signals and objects
-
Controllers
-
Signals
12.3. Links between signals and objects
OpenDRIVE offers the possibility to link a signal to an object or another signal.
References to signals and objects are defined within the <signal>
element and not the superordinate <signals>
element. It is valid for the specific signal only.
The type of linkage depends on the application and is not defined within OpenDRIVE.
Rules regarding the type of dependency are defined in the application and are not stored in OpenDRIVE.
In OpenDRIVE, signal dependency is represented by the <dependency>
element within the <signal>
element.
Another example is shown in figure 98. A speed limit is described as road mark object but referenced as a signal.
In OpenDRIVE, signal reference is represented by the <reference> element within the <signal> element.
Attributes
t_road_signals_signal_reference
Provides a means to link a signal to a series of other elements (for example, objects and signals).
attributes |
name |
type |
unit |
value |
Description |
|
e_road_signals_signal_reference_elementType |
object; signal |
Type of the linked element, For values see UML Model |
||
|
string |
ID of the controlled signal |
|||
|
string |
Type of the dependency, Free text, depending on application |
XML example
See Example file Ex_Crosswalk.xodr
Rules
The following rules apply to signal reference elements:
-
A signal may be linked to an object or another signal.
Related topics
-
Objects
-
Signals
12.4. Signal positioning
A signal should be placed next to the road for which it is valid, enabling the application to identify the signals validity. This is called the logical position of a signal. The s-position of the signal describes the position on the road where the signal takes effect.
In certain situations, physical and logical position of a signal are different, as shown in figure 100. OpenDRIVE offers two possibilities to describe the physical deviation of a signal. The possibilities are mutually exclusive. The positioning of the signal has no influence on its content.
-
A signal may be positioned at another physical position that is described with a reference line coordinate system.
A signal whose physical position deviates from its logical position is represented by the<positionRoad>
element within the <signal> element. That means, the ID of the specified road is referenced, together with the s- and t-coordinates of the road.+ Examples are different positions of stop signs and stop lines. -
A signal may be positioned at another physical position that is described with an inertial coordinate system. A signal whose physical position deviates from its logical position and is positioned using inertial coordinates is represented by the
<positionInertial>
element within the<signal>
element.
Inertial coordinates are used, for example, if the signal is not placed next to a road, but on the other side of the street or hanging over a junction.
Attributes
t_road_signals_signal_positionInertial
Describes the reference point of the physical position in inertial coordinates in cases where it deviates from the logical position. Defines the inertial position.
attributes |
name |
type |
unit |
value |
Description |
|
double |
m |
]-โ;โ[ |
x-coordinate |
|
|
double |
m |
]-โ;โ[ |
y-coordinate |
|
|
double |
m |
]-โ;โ[ |
z-coordinate |
|
|
double |
rad |
]-โ;โ[ |
Heading of the signal, relative to the inertial system |
|
|
double |
rad |
]-โ;โ[ |
Pitch angle of the signal after applying heading, relative to the inertial system (xโyโ-plane) |
|
|
double |
rad |
]-โ;โ[ |
Roll angle of the signal after applying heading and pitch, relative to the inertial system (xโโyโโ-plane) |
t_road_signals_signal_positionRoad
Describes the reference point of the physical position road coordinates in cases where it deviates from the logical position. Defines the position on the road.
attributes |
name |
type |
unit |
value |
Description |
|
string |
Unique ID of the referenced road |
|||
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate |
|
|
double |
m |
]-โ;โ[ |
t-coordinate |
|
|
double |
m |
]-โ;โ[ |
z offset from road level to bottom edge of the signal |
|
|
double |
rad |
]-โ;โ[ |
Heading offset of the signal (relative to @orientation) |
|
|
double |
rad |
]-โ;โ[ |
Pitch angle of the signal after applying hOffset, relative to the inertial system (xโyโ-plane) |
|
|
double |
rad |
]-โ;โ[ |
Roll angle of the signal after applying hOffset and pitch, relative to the inertial system (xโโyโโ-plane) |
XML example
UC_LHT-Complex-TrafficLights.xodr
Rules
The following rules apply to signal positioning:
-
Signals should be placed next to the road for which they are valid.
-
The physical position of signals may deviate from their logical position.
Related topics
-
Signals
-
Signals and land validity
12.5. Reuse of signal information
OpenDRIVE offers the possibility to copy signal information between signals by referencing the signal content. This convenience option avoids inconsistencies when positioning multiple signals of the same type and content. For the signal with copied content, it shall be specified for which direction of the road the signal applies. Signals may be valid for multiple roads at once, typically in a junction. Signals references may be used to attach the physical signal logical to several roads (e.g. traffic lights).
Corresponding to the <signal>
element, a signal with copied content may be supplemented with lane validity. This enables to include or exclude certain lanes from the validity range of the signal.
An example of a signal with copied content is a speed limit signal positioned at an incoming road to a junction. The signal is valid for every connection road inside the junction. Signals on the connection road may reference and copy the signal content. This ensures that all signals follow the same speed limit.
In OpenDRIVE, a reference to another signal for reuse of signal information is represented by the <signalReference> element within the <signal>
element.
Attributes
t_road_signals_signalReference
Refers to the same, that is, identical signal from multiple roads.
The referenced signals require a unique ID. The <signalReference>
element consists of a main element and an optional lane validity element.
attributes |
name |
type |
unit |
value |
Description |
|
double |
m |
]-โ;โ[ |
x-coordinate |
|
|
double |
m |
]-โ;โ[ |
y-coordinate |
|
|
string |
Unique ID of the referenced signal within the database |
|||
|
e_orientation |
+; -; none |
"+" = valid in positive s- direction |
Rules
The following rules apply for the purpose of reusing signal information:
-
A lane validity element may be added for every <signalReference> element.
-
Signal reference shall be used for signals only.
-
For the signal that reuses the content of another signal, the direction for which it is valid shall be specified.
Related topics
-
Lane validity
-
Signals
-
Signal positioning
12.6. Controllers
Controllers provides identical states for one or more dynamic signals. Controllers serve as wrappers for the behavior of a group of signals. Controllers are used for dynamic speed control on motorways, and to control traffic light switching phases.
Different from signal dependency, controllers are high-level elements that do not depend on other signals.
Additional content for controllers, such as traffic light phases, is stored outside the OpenDRIVE file.
In OpenDRIVE, controllers are represented by the <controller>
element within the <OpenDRIVE>
element.
The ID of the referenced signal is stored in the <control>
element within the <controller>
element.
Attributes
t_controller
Controllers provides identical states for one or more dynamic signals. Controllers serve as wrappers for the behaviour of a group of signals. Controllers are used for dynamic speed control on motorways, and to control traffic light switching phases.
attributes |
name |
type |
unit |
value |
Description |
|
string |
Unique ID within database |
|||
|
string |
Name of the controller. May be chosen freely. |
|||
|
nonNegativeInteger |
[0;โ[ |
Sequence number (priority) of this controller with respect to other controllers of same logical level |
t_controller_control
Provides information about a single signal controlled by the corresponding controller.
attributes |
name |
type |
unit |
value |
Description |
|
string |
ID of the controlled signal |
|||
|
string |
Type of control. Free Text, depends on the application. |
XML Examples
UC_Simple-X-Junction-TrafficLights.xodr
Rules
The following rules apply to controllers:
-
Controllers shall be valid for one or more signals.
Related topics
-
Signal dependency
-
Controllers for junctions
-
Signals
13. Railroads
In addition to roads, OpenDRIVE offers the possibility to model rail-based transport systems, that is, trams and streetcars. OpenDRIVE cannot be used for complex railway networks and railway signals. OpenDRIVE describes rail networks only where roads and rails meet.
In OpenDRIVE, railroads are represented by the <railroad>
element within the <road>
element.
Rules
The following rules apply to railroads:
-
Each railway track requires one road.
Related topics
-
Railroad tracks
-
Switches
-
Stations
13.1. Railroad tracks
In OpenDRIVE, rails are always described in connection with the roads on which one pair of rails run. It is not possible to define rails outside roads. Regard less of a tram or sharing the same space with none railway traffic or separate of none railway traffic, it always needs a separate road.
Rails are defined per lane using the @type attribute. Because rail-based traffic differs from road traffic, the following recommendations apply to the modeling of railroads: Figure 106 shows the difference between the use of the reference line for roads and railroads.
In OpenDRIVE, railroad tracks are represented by the @type attribute within the <lane> element. The values for railroad tracks are tram and rail.
Rules
The following rules apply to railroads:
-
The reference line must be in the center of the pair of rails.
-
There is only one tram xor one rail lane per road.
-
The Width of the lane must be at least the width rail-bound vehicles
Related topics
-
Railroads
-
Switches
13.2. Switches
Rail-bound vehicles use switches to change their tracks. In contrast to junctions, a switch can guide the vehicles into two directions only.
There are two different types of switches:
-
Dynamic switches split the railroad track in two tracks leading in two directions. Dynamic switches can be changed during the simulation.
-
Static switches split the railroad track in two tracks leading in two directions. Static switches cannot be changed during the simulation.
Switches may be placed at an arbitrary position on a main track.
Figure 107 shows two partnered switches (12 and 32). A side track (2) connects two main tracks (1 and 3).
In OpenDRIVE, switches are represented by the <switch>
element within the <railroad>
element.
Attributes
t_road_railroad_switch
attributes |
name |
type |
unit |
value |
Description |
|
string |
Unique name of the switch |
|||
|
string |
Unique ID of the switch; preferably an integer number, see uint32_t |
|||
|
e_road_railroad_switch_position |
Either a switch can be operated (dynamic) or it is in a static position. For values see UML Model |
XML Examples
<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>
Rules
The following rules apply to switches:
-
A switch may be either dynamic or static.
Related topics
-
Railroad track
-
Main Track
-
Side Track
-
Partner Switch
13.2.1. Main track
A main track represents the main course for rail bound traffic. A main track has the same properties as a side track. The two track types have been implemented as a convenience function to simplify the modeling of tracks entering and coming out of switches.
For a picture, see figure 107
In OpenDRIVE, main tracks are represented by the <mainTrack>
element within the <switch>
element.
Attributes
t_road_railroad_switch_mainTrack
attributes |
name |
type |
unit |
value |
Description |
|
string |
Unique ID of the main track, that is, the <road> element. Must be consistent with parent containing this <railroad> element. |
|||
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of the switch, that is, the point where main track and side track meet |
|
|
e_elementDir |
+; - |
direction, relative to the s-direction, on the main track for entering the side track via the switch |
Rules
The following rules apply to main tracks:
-
Main tracks shall not be used to connect two switches.
Related topics
-
Side Track
-
Partner Switch
13.2.2. Side track
A side track connects two switches that are placed on main tracks. A side track has the same properties as a main track. The two track types have been implemented as convenience function to simplify the modeling of tracks entering and coming out of switches.
For a picture, see figure 107
In OpenDRIVE, side tracks are represented by the <sideTrack>
element within the <switch>
element.
Attributes
t_road_railroad_switch_sideTrack
attributes |
name |
type |
unit |
value |
Description |
|
string |
Unique ID of the side track, that is, the <road> element |
|||
|
t_grEqZero |
m |
[0;โ[ |
s-coordinate of the switch on the side track |
|
|
e_elementDir |
+; - |
direction, relative to the s-direction, on the side track for after entering it via the switch |
Rules
The following rules apply to side tracks:
-
Side tracks shall be used to link two switches only.
Related topics
-
Main track
-
Partner switch
13.2.3. Partner switches
For convenience reasons, two switches may be declared partner switches. This describes a connection between two switches that are linked by a side track. These two switches need to be set consistently.
For a picture, see figure 107. Here switches 12 and 32 are partner switches
In OpenDRIVE, partner switches are represented by the <partner>
element within the <switch>
element.
Attributes
t_road_railroad_switch_partner
Indicates the switch that leads out of a side track after it has been entered.
attributes |
name |
type |
unit |
value |
Description |
|
string |
Unique name of the partner switch |
|||
|
string |
Unique id of the partner switch |
Rules
The following rules apply to partner switches:
-
Partner switches shall be used to indicate that a side track links two switches.
-
Single switches do not have partner switches.
Related topics
-
Main track
-
Partner switch
13.3. Stations
Rail-bound vehicles like trams need stations for people to get on and off. Each station shall have at least one platform, which may be further divided into segments. The platforms determine the physical extent of a station.
The <station>
element may also be used for bus stations.
Figure 108 shows two scenarios for stations:
-
In the first scenario, one platform is referenced by the roads 1 and 3, running in different driving directions. The platform consists of one segment only.
-
In the second scenario, platform 1 is referenced by road 3 only. Platform 2 is referenced by road 1 and 2. Platform 2 is split into two segments.
In OpenDRIVE, stations are represented by the <station>
element within the <OpenDRIVE>
element.
Attributes
t_station
Defines stations for tram and railroad applications and for automotive environments. May refer to multiple tracks and is therefore defined on the same level as junctions.
attributes |
name |
type |
unit |
value |
Description |
|
string |
Unique name of the station |
|||
|
string |
Unique ID within database |
|||
|
e_station_type |
small; medium; large |
Type of station. Free text, depending on the application. e.g.: small, medium, large |
XML example
Ex_Railway-station.xodr
Rules
The following rules apply to stations:
-
A <station> element shall be followed by at least one <platform> element.
-
The type of the station may be further specialized by the @type attribute. The values are stored in the used application.
Related topics
-
Platforms
-
Segments
-
Railroads
13.3.1. Platforms
A station shall contain at least one platform. A platform shall be referenced by one or more railroad track.
See picture in figure 108
In OpenDRIVE, railroads are represented by the <platform> element within the <station> element.
Attributes
t_station_platform
Each station element must contain at least one platform element. Each platform element must contain at least one reference to a valid track segment.
attributes |
name |
type |
unit |
value |
Description |
|
string |
Name of the platform. May be chosen freely. |
|||
|
string |
Unique ID within database |
Rules
The following rules apply to platforms:
-
There shall be at least one platform per station.
-
A platform shall contain at least one segment.
Related topics
-
Stations
-
Segments
13.3.2. Segments
Platforms may be further divided into segments. This is useful if a bi-directional railroad track runs along the same platform. A platform shall contain at least one segment.
In OpenDRIVE, railroads are represented by the <segment>
element within the <platform>
element.
Attributes
t_station_platform_segment
Each platform element is valid on one or more track segments. The <segment> element must be specified.
attributes |
name |
type |
unit |
value |
Description |
|
string |
Unique ID of the |
|||
|
t_grEqZero |
m |
[0;โ[ |
Minimum s-coordinate on |
|
|
t_grEqZero |
m |
[0;โ[ |
Maximum s-coordiante on |
|
|
e_station_platform_segment_side |
left; right |
Side of track on which the platform is situated when going from sStart to sEnd. For values see UML Model |
Rules
The following rules apply to segments:
-
There shall be at least one segment per platform.
Related topics
-
Stations
-
Platforms
14. List of figures
Figure 1: |
UML notation (see ISO TS 19103, Geographic information - Conceptual schema language) |
|
Figure 2: |
UML attribute notation |
|
Figure 3: |
Relation between OpenDRIVE, OpenCRG, and OpenSCENARIO |
|
Figure 4: |
UML model OpenDRIVE Core |
|
Figure 5: |
available coordinate systems in OpenDRIVE |
|
Figure 6: |
Coordinate systems in OpenDRIVE interacting with another |
|
Figure 7: |
Inertial coordinate system with defined rotations |
|
Figure 8: |
Inertial coordinate system with defined rotations |
|
Figure 9: |
Reference line coordinate system |
|
Figure 10: |
Reference line system with defined rotations |
|
Figure 11: |
Heading in reference line |
|
Figure 12: |
Roll in reference line |
|
Figure 13: |
Elevation in reference line |
|
Figure 14: |
Local system with defined rotations |
|
Figure 15: |
Local coordinate systems with heading, pitch, roll |
|
Figure 16: |
Local coordinate system with respect to reference line system |
|
Figure 17: |
Summary of coordinate system in OpenDRIVE |
|
Figure 18: |
Offset for the geoReference |
|
Figure 19: |
Geometry elements in OpenDRIVE |
|
Figure 20: |
the individual parts of a road |
|
Figure 21: |
UML model Road Geometry including the Reference Line elements |
|
Figure 22: |
A straight line |
|
Figure 23: |
Road geometry described by a spiral |
|
Figure 24: |
Road geometry described by an arc |
|
Figure 25: |
Creating a reference line from geometry elements |
|
Figure 26: |
A cubic polynom |
|
Figure 27: |
A curve which cannot be represented by a cubic polynom w.r.t x parameter |
|
Figure 28: |
Transformation from a u/v- to a x/y coordinate system with a=b=0 |
|
Figure 29: |
Transformation from a u/v- to a x/y coordinate system with a!=0 and b!=0 |
|
Figure 30: |
A parametric cubic polynom for interpolation of u coordinate |
|
Figure 31: |
A parametric cubic polynom for interpolation of v coordinate |
|
Figure 32: |
A parametric cubic polynom |
|
Figure 33: |
UML Model for Roads |
|
Figure 34: |
UML model for Road Geometry |
|
Figure 35: |
Allowed, prohibited, and recommended road linkage |
|
Figure 36: |
Allowed scenarios of road linkage |
|
Figure 37: |
Allowed scenario of road linkage within a junction |
|
Figure 38: |
UML model for road linkage |
|
Figure 39: |
Types of elevation |
|
Figure 40: |
Superelevation |
|
Figure 41: |
Minimum t-definiton range for road shapes |
|
Figure 42: |
Shape definition (left) in combination with superelevation (right) |
|
Figure 43: |
Road surface as defined in a CRG file |
|
Figure 44: |
positioning of an OpenCRG file along the reference line |
|
Figure 45: |
OpenCRG attachement mode, attached |
|
Figure 46: |
OpenCRG attached mode with elevation |
|
Figure 47: |
OpenCRG attached0 mode with elevated reference line |
|
Figure 48: |
OpenCRG attachement mode, genuine |
|
Figure 49: |
OpenCRG orientation |
|
Figure 50: |
Example crossfall modelled with road shape |
|
Figure 51: |
Center lane for road with lanes of different driving directions |
|
Figure 52: |
Center lane for road with lanes of identical driving direction |
|
Figure 53: |
UML model for lanes |
|
Figure 54: |
Lane grouping with left, center, right |
|
Figure 55: |
UML model for t_road_lanes |
|
Figure 56: |
A road section with lane sections |
|
Figure 57: |
Lane sections defined seperately for both sides of the road |
|
Figure 58: |
Lane offset |
|
Figure 59: |
Lane links for road with id 10 |
|
Figure 60: |
UML Model t_road_lanes_laneSection_lcr_lane_link |
|
Figure 61: |
UML model lane properties |
|
Figure 62: |
Change of lane width per lane section |
|
Figure 63: |
Lane with varying border shape |
|
Figure 64: |
Lane types for a motorway |
|
Figure 65: |
Lane types for a rural road |
|
Figure 66: |
Lane types for an urban road |
|
Figure 67: |
Lane types for motorway exit and entry |
|
Figure 68: |
Lane types for motorway connecting to another motorway |
|
Figure 69: |
Lane-specific speed limits |
|
Figure 70: |
Lane access, bus lane |
|
Figure 71: |
Lane height |
|
Figure 72: |
Lanes excluded from road elevation |
|
Figure 73: |
Road marking with sway and offset |
|
Figure 74: |
Types of roads in a junction (right-hand traffic) |
|
Figure 75: |
UML model for junctions |
|
Figure 76: |
Connecting roads (left hand traffic) |
|
Figure 77: |
Example of a Virtual junction showing a parking lot entry and exit. |
|
Figure 78: |
Virtual junction with virtual connections |
|
Figure 79: |
Junction group with three junctions |
|
Figure 80: |
UML model for junction group |
|
Figure 81: |
X-Junction with four traffic lights and two controllers |
|
Figure 82: |
UML model for controller |
|
Figure 83: |
A circular and angular object |
|
Figure 84: |
UML modell for objects |
|
Figure 85: |
One larger angular repeated object |
|
Figure 86: |
Several smaller angular repeated objects |
|
Figure 87: |
Several smaller circular repeated objects |
|
Figure 88: |
Traffic island as object |
|
Figure 89: |
An object described by corner road coordinates |
|
Figure 90: |
An object described by corner local coordinates |
|
Figure 91: |
Parking spaces rectangular (left figure) and rhomboid (right figure) |
|
Figure 92: |
Crosswalk in OpenDRIVE |
|
Figure 93: |
A tunnel |
|
Figure 94: |
A bridge |
|
Figure 95: |
Signals in OpenDRIVE |
|
Figure 96: |
Width and height for signal |
|
Figure 97: |
UML model for signals |
|
Figure 98: |
Lanes with signals in the shape of road marks |
|
Figure 99: |
lane and type specific speed limit |
|
Figure 100: |
Junction with signals at physical and logical positions |
|
Figure 101: |
UML Model Physical Position |
|
Figure 102: |
UML Model Signal Reference |
|
Figure 103: |
Junction with four traffic lights, controlled by two controllers |
|
Figure 104: |
UML Model Controller |
|
Figure 105: |
UML Model Railroad |
|
Figure 106: |
Reference lines for roads and railroads |
|
Figure 107: |
Railroad switches |
|
Figure 108: |
Railroad stations |
|
Figure 109: |
UML Model Station |
15. List of tables
Table 1: | Units |
---|---|
Table 2: |
Rules for using modal verbs |
Table 3: |
Typographical conventions |
Table 4: |
Attributes of the OpenDRIVE element |
Table 5: |
Attributes of the header element |
Table 6: |
Attributes of the planView element |
Table 7: |
Attributes of the spiral element |
Table 8: |
Attributes of the arc element |
Table 9: |
Attributes of the poly3 element |
Table 10: |
Attributes of the paramPoly3 element |
Table 11: |
Attributes of the road link predecessorSuccessor element |
Table 12: |
Attributes of the road type element |
Table 13: |
Attributes of the road type speed element |
Table 14: |
Attributes of the elevation element |
Table 15: |
Attributes of the superelevation element |
Table 16: |
Attributes of the shape element |
Table 17: |
Attributes of the road surface CRG element |
Table 18: |
Attributes of the road element |
Table 19: |
Attributes of the laneSection element |
Table 20: |
Attributes of the laneSection center lane element |
Table 21: |
Attributes of the laneSection left lane element |
Table 22: |
Attributes of the laneSection right lane element |
Table 23: |
Attributes of the laneOffset element |
Table 24: |
Attributes of the predecessor successor elements |
Table 25: |
Attributes of the lane width element |
Table 26: |
Attributes of the lane border element |
Table 27: |
Attributes of the lane type |
Table 28: |
Attributes of the lane material element |
Table 29: |
Attributes of the speed element |
Table 30: |
Attributes of the access element |
Table 31: |
Attributes of the lane height element |
Table 32: |
Attributes of the roadMark element |
Table 33: |
Attributes of the roadMark line element |
Table 34: |
Attributes of the roadMark type element |
Table 35: |
Attributes of the roadMark explicit line element |
Table 36: |
Attributes of the object laneValidity element |
Table 37: |
Attributes of the lane sway element |
Table 38: |
Attributes of the lane rule element |
Table 39: |
Attributes of the junction connection element |
Table 40: |
Attributes of the lane linkage of a connection element |
Table 41: |
Attributes of the priority element |
Table 42: |
Attributes of a CRG element within a surface element |
Table 43: |
Attributes of the road surface CRG mode element |
Table 44: |
Attributes of the road surface CRG purpose |
Table 45: |
Attributes of junction types |
Table 46: |
Attributes of the junctionGroup element |
Table 47: |
Attributes of the junction reference element |
Table 48: |
Attributes of the junction controller element |
Table 49: |
Attributes of the junction element |
Table 50: |
Attributes of the bridge element |
Table 51: |
Attributes of the repeat element for objects |
Table 52: |
Attributes of the outline element |
Table 53: |
Attributes of the cornerRoad element |
Table 54: |
Attributes of the cornerLocal element |
Table 55: |
Attributes of the material element within an object |
Table 56: |
Attributes of the parkingSpace element |
Table 57: |
Attributes of the marking element |
Table 58: |
Attributes of the cornerReference element |
Table 59: |
Attributes of the border element |
Table 60: |
Attributes of the objectReference element |
Table 61: |
Attributes of the tunnel element |
Table 62: |
Attributes of the road objects element |
Table 63: |
Attributes of the dependency element |
Table 64: |
Attributes of the reference element |
Table 65: |
Attributes of the positionInertial element |
Table 66: |
Attributes of the positionRoad element |
Table 67: |
Attributes of the signalReference element |
Table 68: |
Attributes of the controller element of a signal |
Table 69: |
Attributes of the control element |
Table 70: |
Attributes of the signal element |
Table 71: |
Attributes of the switch element |
Table 72: |
Attributes of the mainTrack element |
Table 73: |
Attributes of the sideTrack element |
Table 74: |
Attributes of the partner element |
Table 75: |
Attributes of the station element |
Table 76: |
Attributes of the platform element |
Table 77: |
Attributes of the segment element |