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)用于直接定义数据:

Table/表 1. Units 单位
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:

在使用情态动词时,以下规则适用:

Table/表 2. Rules for using modal verbs 情态动词的使用规则
Provision 规定 Verbal form 情态动词

Requirement 强制性要求
Requirements shall be followed strictly in order to be conform to the standard. Deviations are not allowed.

需严格遵守要求以便符合该标准,不得违背。

shall
shall not

Recommendation 建议
Recommendations indicate that among several possibilities, one is recommended as particularly suitable, without mentioning or excluding others.

建议指的是建议多种可能性中最合适的一种,但不提及或排除其他可能性。

should
should not

Permission 许可
Permissions indicate a course of action permissible within the limits of OpenDRIVE deliverables.

指的是在OpenDRIVE可交付内容的范围内允许采取的措施。

may
need not

Possibility and capability 可能性和能力
These verbal forms are used for stating possibilities or capabilities, being technical, material, physical, or others.

这些语言形式用于说明技术、材料、物理或其他方面的可能性或可行性。

can
can not

Obligation and necessity 义务与必要性
These verbal forms are used to describe legal, organizational, or technical obligations and necessities that are not regulated or enforced by the OpenDRIVE standard.

此类语言形式用于描述OpenDRIVE以外的法律、组织或技术的义务和必要性。

must
must not

2.3.4. Typographic conventions 拼写惯例

This documentation uses the following typographical conventions:

此文档使用以下拼写惯例:

Table/表 3. Typographical conventions 拼写惯例
Mark-up + 标记 Definition
定义

Code elements

This format is used for code elements, such as technical names of classes and attributes, as well as attribute values.

此格式用于代码元素,例如类和属性的技术名称以及属性值。

Code snippets

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.

此格式用于介绍术语表及新术语并对术语进行强调。

Mathematical elements

This format is used for calculations and mathematical elements.

此格式用于计算和数学元素。

<element>

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)。

img1
Figure 1. UML notation (see ISO TS 19103, Geographic information - Conceptual schema language) 图1. UML谱(参阅ISO TS 19103,地理信息-概念模式语言)

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 必选和可选属性

img2
Figure 2. UML attribute notation 图2. UML属性符号

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。三个标准的结合则提供包含静态和动态内容、由场景驱动的对交通模拟的描述。

img3
Figure 3. Relation between OpenDRIVE, OpenCRG, and OpenSCENARIO 图3. OpenDRIVE, OpenCRG 以及 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:

文件的起始及结束元素是:

Table/表 4. Attributes of the OpenDRIVE element OpenDRIVE元素的属性

delimiters 定界符

<OpenDRIVE>…​</OpenDRIVE>

parent 父级

none 无

instances 实例数

1

attributes 属性

xmlns="http://www.opendrive.org"

4.3.2. Header 头文件

The <header> element is the very first element within the <OpenDRIVE> element.

<header> 元素是<OpenDRIVE>中的第一个元素。

Table/表 5. Attributes of the header element 头文件元素的属性

delimiters 定界符

<header>…​</header>

parent 父级

<OpenDRIVE>

instances 实例数

1

attributes 属性

name 名称

type 类型

unit 单位

value 值

Description 描述

revMajor

ushort

-

1

Major revision number of OpenDRIVE format

OpenDRIVE 格式主版本号

revMinor

ushort

-

6

Minor revision number of OpenDRIVE format; 6 for OpenDrive 1.6

OpenDRIVE格式次版本号; OpenDrive 1.6版本号为6

name

string

-

-

Database name

数据库名称

version

string

-

-

Version of this road network

本路网的版本号

date

string

-

-

Time/date of database creation according to ISO 8601 (preference: YYYY-MM-DDThh:mm:ss)

根据ISO 8601采用的数据库创建时间/日期 (优先格式: YYYY-MM-DDThh:mm:ss)

north

double

m

-

Maximum inertial y value

最大惯性y值

south

double

m

-

Minimum inertial y value

最小惯性y值

east

double

m

-

Maximum inertial x value

最大惯性x值

west

double

m

-

Minimum inertial x value

最小惯性x值

vendor

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任意元素中。