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". 免责声明 ASAM e.V. 拥有该文档的版权。 任何使用均局限于许可条款 (https://www.asam.net/license) 所描述的范围内。在常规许可条款的基础上,ASAM允许该标准不受限制地被分发。因此,ASAM常规许可条款 license terms 的 §2 (1) 可被以下条例所替代:许可方授予每个人使用标准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
ASAM OpenDRIVE描述了驾驶仿真应用所需的静态道路交通网络(以下简称路网)并提供了标准交换格式说明文档。该标准的主要任务是对道路及道路上的物体进行描述。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
OpenDRIVE可交付以下内容:
-
文件格式说明文档
-
XML模式
-
UML模型
-
示例文件(应用案例和示例)
-
示例实现
-
引用实现的螺旋线
-
用于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.
OpenDRIVE格式使用文件拓展名为xodr的可扩展标记语言(XML)作为描述路网的基础。存储在OpenDRIVE文件中的数据描述了道路的几何形状以及可影响路网逻辑的相关特征(features),例如车道和标志。OpenDRIVE中描述的路网可以是人工生成或来自于真实世界的。OpenDRIVE的主要目的是提供可用于仿真的路网描述,并使这些路网描述之间可以进行交换。
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.
该格式将通过节点(nodes)而被构建,用户可通过自定义的数据扩展节点。这使得各类应用(通常为仿真)具有高度的针对性,同时还保证不同应用之间在交换数据时所需的互通性。
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 "2.3.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.3情态动词”的定义,使用不同情态动词来声明“要求、允许或禁止”是规范的。
-
OpenDRIVE UML模型中的UML图表是规范的。
-
“规则”小节中的OpenDRIVE数据结构规则是规范的。
-
XML示例和应用案例描述属于非规范。
2.3. Conventions 惯例
2.3.1. Naming Conventions 命名惯例
In this document, the following conventions apply:
data types
are given according to IEEE standard
以下惯例适用于此文件:
data types
是根据IEEE标准规定的。
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]
如无另外说明,本说明文档中的所有数值均采用SI单位,例如:
-
位置/距离单位为[m]
-
角度单位为[rad]
-
时间单位为[s]
-
速度单位为[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].
地理位置用空间坐标系定义的单位来说明,可遵循例如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:
用户可以直接定义某些数据的数量单位。如果数量单位没有被明确定义或无法被解析,则将默认采用SI单位。以下单位可(may)用于直接定义数据:
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.
这些可选的单位只能(shall)作为指示牌以及速度标明使用。它们不能(shall not)作为通用单位使用,比如不能用来定义道路几何形状或其他内容。
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.
为确保符合OpenDRIVE标准,用户需要通过文中的情态动词来辨别强制性要求、建议、允许以及可能性和能力。
The following rules for using modal verbs apply:
在使用情态动词时,以下规则适用:
Provision 规定 | Verbal form 情态动词 |
---|---|
Requirement 强制性要求 需严格遵守要求以便符合该标准,不得违背。 |
shall |
Recommendation 建议 建议指的是建议多种可能性中最合适的一种,但不提及或排除其他可能性。 |
should |
Permission 许可 指的是在OpenDRIVE可交付内容的范围内允许采取的措施。 |
may |
Possibility and capability 可能性和能力 这些语言形式用于说明技术、材料、物理或其他方面的可能性或可行性。 |
can |
Obligation and necessity 义务与必要性 此类语言形式用于描述OpenDRIVE以外的法律、组织或技术的义务和必要性。 |
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 此标记用于描述XML说明文档中的元素的标签。 |
@attribute |
The "@" identifies an attribute of any OpenDRIVE element “ @”用于标明任意OpenDRIVE元素的属性。 |
The OpenDRIVE structure diagrams are modeled according to the Unified Modeling Language (UML). For detailed information on UML, see Booch et al. (1997).
OpenDRIVE结构图的建模根据统一建模语言(UML)来进行。有关UML的详细信息,请参见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.
元素的角色标明了其在一个关联中(association)所有的上下文(context),角色标注在关联指向的物体处。OpenDRIVE类图表(class diagram)使用了配色方案来增强可读性:
-
图表的顶层元素标记为 橙色,在自上而下读取图表时,橙色有助于更快找到入口。
-
标记为 黄色 的类属于UML包(package)。这些包在说明文档章节里有UML图表之处讨论过。
-
标记为 蓝色 的类属于OpenDRIVE包,这些包区别于上面提到的黄色标记的UML包。
-
标记为 绿色 的类包含了几何形状信息。
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.
在UML模型中,属性被标记为必选和可选。上图的示例展示了属性标记的识别以及解读。如图所示,可选属性带有UML特定的符号[0..1],必选属性则没有任何符号。
2.3.5. Use of IDs ID的使用
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.
在OpenDRIVE中使用ID时,请遵循以下规则:
-
ID在一个类中必须(shall)是唯一的。
-
车道ID在车道段中必须(shall)是唯一的。
-
仅可(may)引用已定义的ID。
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在ASAM标准系列中的角色
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.
ASAM OpenDRIVE是ASAM仿真标准的一部分,该标准专注于车辆环境的仿真数据。除了ASAM OpenDRIVE,ASAM还提供其他仿真领域的标准,例如ASAM OpenSCENARIO和ASAM OpenCRG。
3.2. Relation of ASAM OpenDRIVE to OpenCRG and OpenSCENARIO OpenDRIVE与OpenCRG以及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
ASAM OpenDRIVE为路网的静态描述定义了一种存储格式。通过与ASAM OpenCRG结合使用,可以将非常详细的路面描述添加至路网当中。OpenDRIVE和ASAM OpenCRG仅包含静态内容,若要添加动态内容,则需要使用ASAM OpenSCENARIO。三个标准的结合则提供包含静态和动态内容、由场景驱动的对交通模拟的描述。
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.
OpenDRIVE 1.6版包含了在1.5版中出现过的元素,但这些元素与1.4版不兼容。为了确保能与1.4版和1.5版兼容,这些元素在1.6版的XML模式中从技术上被定义为可选。在UML模型的注释中,它们被标记为“向后兼容的可选”。
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)
-
XML 1.0模式
-
UML 2.5.1标准
-
ISO 3166-2 用于国家/地区代码
-
ISO 8855用于右手坐标系
-
ISO 8601用于时间/日期
-
地理坐标参考(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).
OpenDRIVE数据存储于XML文件中,文件拓展名为.xodr。OpenDRIVE压缩文件的拓展名为".xodrz"(压缩格式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/
OpenDRIVE文件的结构符合XML规则;关联的模式文件在XML中得到引用。用于OpenDRIVE®格式的模式文件可从以下链接中读取: 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.
元素被置于层级中。层级大于零(0)的元素是上一层级的子级,层级等于一(1)的元素则为主元素。
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]).
所有在OpenDRIVE中使用的浮点数均为IEEE 754双精度浮点数。为了确保XML表示法中对浮点数的表示精准,应(should)使用已知的、保留最小的浮点数打印算法(比如[Burger96], [Adams18])的正确精度来进行执行,或者执行应该确保始终有17个有效十进制数字得到生成(例如使用the "%.17g" ISO C printf 修饰符)。在导入执行时,建议(should)使用一个已知的正确精度来保留浮点数并读取算法(例如 [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
[Burger96] Robert G. Burger和R. Kent Dybvig:“快速、准确地打印浮点数”。引用于美国宾夕法尼亚州费城举行的ACM SIGPLAN 1996编程语言设计与执行会议第108-116页,1996年5月。
[Adams18] Ulf Adams: "Ryū: fast float-to-string conversion." ACM SIGPLAN Notices, Vol. 53, No. 4, April 2018, pp. 270-282
[Adams18] Ulf Adams:“Ryū:浮点数到字符串的快速转换。” 引用于ACM SIGPLAN报告的第53卷第4号第270-282页,出版于2018年4月。
[Clinger90] William D. Clinger: "How to Read Floating Point Numbers Accurately." ACM SIGPLAN Notices, Vol. 25, No. 6, June 1990, pp. 92-101
[Clinger90] William D. Clinger: "如何精确读取浮点数"。引用于ACM SIGPLAN报告的第25卷第6号第92-101页,出版于1999年6月。
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.
可使用<include>标签在适当的位置对多个文件进行合并。解析该标签后,OpenDRIVE读取器须(shall)立刻开始读取作为标签属性的文件。用户有责任确保从包含文件中读取而来的内容与包含开始时的上下文一致。
The parent tag under which the <include> tag occurs must be present in both, the parent file and the included file.
<include>标签发生在父标签下,该父标签必须(must)存在于父文件以及包含文件内。
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
-
所有可在OpenDRIVE文件中使用的属性都能在UML模型里得到完整标注:
-
若 单位 适用于一个属性,则可根据第2.3.2章“单位”对它们进行说明。
-
类型:描述了属性的数据类型,可以分为基本数据类型或复杂数据类型。基本数据类型指的是字符串(string)、双精度浮点数(double)、浮点数(float)等。而复杂数据类型则指该说明文档中所描述的物体。
-
值:值规定了相对于指定类型的给定属性的值域。
-
4.3.1. Enclosing element 封闭元素
The overall enclosing element of the file is:
文件的起始及结束元素是:
delimiters 定界符 |
|
parent 父级 |
none 无 |
instances 实例数 |
1 |
attributes 属性 |
|
4.3.2. Header 头文件
The <header>
element is the very first element within the <OpenDRIVE> element.
<header>
元素是<OpenDRIVE>中的第一个元素。
delimiters 定界符 |
|
|||
parent 父级 |
|
|||
instances 实例数 |
1 |
|||
attributes 属性 |
||||
name 名称 |
type 类型 |
unit 单位 |
value 值 |
Description 描述 |
|
ushort |
- |
1 |
Major revision number of OpenDRIVE format OpenDRIVE 格式主版本号 |
|
ushort |
- |
6 |
Minor revision number of OpenDRIVE format; 6 for OpenDrive 1.6 OpenDRIVE格式次版本号; OpenDrive 1.6版本号为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) 根据ISO 8601采用的数据库创建时间/日期 (优先格式: YYYY-MM-DDThh:mm:ss) |
|
double |
m |
- |
Maximum inertial y value 最大惯性y值 |
|
double |
m |
- |
Minimum inertial y value 最小惯性y值 |
|
double |
m |
- |
Maximum inertial x value 最大惯性x值 |
|
double |
m |
- |
Minimum inertial x value 最小惯性x值 |
|
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.
OpenDRIVE可以包含外部数据,而如何处理此类数据则视应用而定。
Additional data may be placed at any position in OpenDRIVE.
附加数据可(may)被置于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.
应(should)在辅助数据所引用的元素附近对其进行描述。辅助数据包含OpenDRIVE中还未描述或出于特殊原因为某一应用所用的数据,如不同的道路纹理。
In OpenDRIVE, ancillary data is represented by <userData>
elements. They may be stored at any element in OpenDRIVE.
在OpenDRIVE中,辅助数据用 <userData>
元素来表示。它们可(may)被存储在OpenDRIVE任意元素中。