OpenX系列标准:OpenDRIVE标准简述

Posted zolty

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenX系列标准:OpenDRIVE标准简述相关的知识,希望对你有一定的参考价值。

1.概述

​ 作为一个完整的仿真测试场景描述方案,OpenX系列标准包括:OpenDRIVE、OpenSCENARIO和OpenCRG。

标准文件格式文件内容
OpenDRIVE.xodr静态部分(如道路拓扑结构、交通标志标线等)
OpenDRIVE.tdo保存ROD项目时生成的文件,是ROD项目的可编辑模式
OpenDRIVE.osgb通过ROD项目生成的贴图与路面纹理文件
OpenSCENARIO.xosc动态部分(如交通车的行为)
OpenCRG.crg静态部分(道路的表面细节,如坑洼、卵石路等)

2.OpenDRIVE简介

​ ASAM OpenDRIVE格式提供了用可扩展标记语言(XML)语法描述道路网络的通用基础,使用文件扩展名xodr。 存储在ASAM OpenDRIVE文件中的数据描述了道路、车道和物体的几何形状,如道路上的路标,以及道路沿线的特征,如信号。ASAM OpenDRIVE文件中描述的道路网络可以是合成的,也可以是基于真实数据的。

​ ASAM OpenDRIVE的主要目的是提供一个道路网络描述,它可以被送入模拟,以开发和验证ADAS和AD功能。在ASAM OpenDRIVE的帮助下,这些道路网络描述可以在不同的模拟器之间进行交流。为道路描述提供一个标准化的格式,也使行业能够减少为其开发和测试目的创建和转换这些文件的成本。道路数据可以从道路网络编辑器、地图数据的转换中手动创建,或源于现实世界道路的转换扫描。

​ OpenDRIVE是一种高精地图格式,2006年由德国VIRES公司发布,并反复迭代,期间德国戴姆勒驾驶模拟器部门和德国宇航中心DLR也发挥了很大作用。OpenDRIVE 1.5版本于2019年发布。2018年9月,OpenDRIVE的开发团队将维护工作转交给德国ASAM标准化组织,1.6及之后的版本由ASAM负责。1.6版本已由ASAM在2020年3月发布,本文使用该版本进行介绍。

​ OpenDRIVE开发起因是VIRES公司在提供驾驶模拟器方案时,发现不同工具的道路数据格式中需要包含逻辑内容是基本一致的,为了方便在不同的驾驶模拟器间进行道路数据的传递,VIRES公司与Daimler Driving Simulator部门决定开发OpenDRIVE格式。转交给ASAM组织后,ASAM组织同样把OpenDRIVE定位为用于仿真测试的地图格式。

​ OpenDRIVE文件按XML格式编写,文件扩展名为.xodr。

3.OpenDRIVE实例

3.1简介

节点

​ 该格式被组织在节点中,可以用用户定义的数据进行扩展。这有利于个别应用(通常是模拟)的高度专业化,同时保持不同应用之间交换数据所需的互操作性。

参考线

​ ASAM OpenDRIVE道路网是沿着参考线建模的,它是每条道路的核心部分。道路、车道,包括它们的高程剖面,都附着在参考线上。

Elements of ASAM OpenDRIVE

​ 代表特征的对象,如信号灯,可以通过使用参考线或全局坐标系来放置,路网被放置在其中。这在上图中可以看到。参考线(中间的蓝线)位于道路的中心,车道(蓝色和浅绿色)连接到这条参考线。道路旁边的标志被放置在s/t坐标系中。

​ 在ASAM OpenDRIVE中,几条道路构成了一个道路网络,并可以被连接起来。ASAM OpenDRIVE可以被看作是不同路段的建筑套件。整个道路网络是由相互连接的各个部分组成的。

Individual road segments are interconnected

​ 上图显示了各个路段是如何相互连接的,例如与一个交叉口。所示的XML片段简要介绍了如何在ASAM OpenDRIVE中使用道路段的链接。这些链接可以支持模拟交通的驾驶逻辑,特别是出于路由的目的,将更多的资源留给验证和开发AD驾驶功能的实际工作。在路口,入口道路之间的每个可能的连接都通过 "连接道路 "连接。由于这种机制,连接道路是ASAM OpenDRIVE中唯一具有重叠表面的道路。

Example of a junction

​ 在ASAM OpenDRIVE中,不仅道路被链接,而且道路之间的车道也被链接。这些车道链接可以再次支持模拟交通。当连接道路的参考线和进入路口的道路不一定对齐时,它们对道路网的可视化也很重要(例如在路口的情况)。

与其他标准的关系

​ ASAM OpenDRIVE的描述格式包含了道路网络的所有静态对象,可以真实地模拟车辆在道路上行驶。为了渲染完整的环境,需要额外的静态三维路边物体的描述格式,如树木和建筑物。路面轮廓包括来自ASAM OpenCRG文件格式。驾驶模拟的动态内容,如车辆机动,可以用ASAM OpenSCENARIO来描述。这三个标准相互补充,涵盖了环内车辆模拟应用的静态和动态内容。

市场相关性

​ ASAM OpenDRIVE是一个用于描述道路网络的成熟标准。它已经被许多知名的制造商和开发ADAS和AD功能的公司使用,或在全球范围内进行高精度的运动学测量。它正被用于公路和铁路网络。

参与的公司

​ BMW AG, Daimler AG, AVL List GmbH, dSPACE GmbH, RA Consulting GmbH, Vector Informatik GmbH, VIRES Simulationstechnologie GmbH, virtualcitySYSTEMS GmbH, RWTH Aachen

其他语言

​ ASAM OpenDRIVE V1.6.0现在有了中文版本。请在右边的蓝色下载框中下载中文版本。中文版本将很快在C-ASAM网站上提供。

较早的版本

​ ASAM在2018年被委托进一步开发OpenDRIVE(阅读全文)。ASAM发布的第一个版本是ASAM OpenDRIVE V1.6。为了完整起见,我们在网站上提供了之前的版本OpenDRIVE V1.5和OpenDRIVE V1.4:

​ OpenDRIVE V1.5和OpenDRIVE V1.4.是由VIRES Simulationstechnologie GmbH发布。这些版本是VIRES Simulationstechnologie GmbH的知识产权。ASAM e.V.不对完整性、正确性或任何其他问题承担任何责任。对于责任索赔、问题或其他事项,请联系VIRES Simulationstechnologie GmbH(info(at)vires.com)。

​ OpenDRIVE 1.6版包含了在1.5版中出现过的元素,但这些元素与1.4版不兼容。为了确保能与1.4版和1.5版兼容,这些元素在1.6版的XML模式中从技术上被定义为可选。在UML模型的注释中,它们被标记为“向后兼容的可选”。

3.2 实例

以Crossing8Course.xodr为例,阐述xodr的文件架构。


其中橙色为必须部分,淡橙色为选填部分。

(1)header

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

header用于对文件的整体属性进行说明。说明了主版本(revMajor)、子版本(revMinor)、本路网的版本号(version)、数据库创建时间/日期(date)、最大惯性y值(north)、最小惯性y值(east)、最小惯性x值(west)和最小惯性x值(west)

该版本为1.1

(2)road

路网在OpenDRIVE中用 <road> 元素来表示。每条道路都沿一条道路参考线延伸。一条道路必须(shall)拥有至少一条宽度大于0的车道。

OpenDrive中的道路可以(may)与真实路网中或为应用而设的路网中的道路相提并论。每条道路由一个或多个 <road> 元素描述。一个 <road> 元素可以(may)覆盖一条长路、交叉口之间较短的路,或甚至多条道路。只有在道路的属性不能在先前 <road> 元素中得到描述或需要一个交叉口的情况下,才应(should)开始一个新的 <road> 元素。

road用于对路网中的道路进行说明。包括道路连接信息(link)、道路参考线信息(planView)、超高程信息(lateralProfile)、高程信息(elevationProfile)、车道信息(lanes)和表面信息(surface)以及道路上的物理和交通信号的信息(objects和signals)等。

(2.1)link

在OpenDRIVE中,道路连接用 <road> 元素里的 <link> 元素来表示。 <predecessor> 以及 <successor> 元素在 <link> 元素中被定义。对于虚拟和常规的交叉口来说, <predecessor> 以及 <successor> 元素必须使用(shall)不同的属性组。

描述了本道路与其他道路的连接关系。中描述了本道路之前的道路id,中描述了本道路之后的道路id。

(2.2)type

道路类型(例如高速公路以及乡村公路)定义了道路的主要用途以及相关的交通规则。道路类型对于整个道路横截面均有效。

通过在沿参考线的给定点上定义不同道路类型,可(may)在 <road> 元素中根据需要改变道路类型。道路类型将持续有效,直到另一个道路类型被定义。

在OpenDRIVE中,道路类型用元素中的 <type> 元素来表示。道路类型本身在@type属性中被给定。

(2.3)planView

在OpenDRIVE中,参考线的几何形状用元素里的 <geometry> 元素来表示。

<planView> 元素是每个 <road> 元素里必须要用到的元素。

(2.4)elevationProfile

The elevation profile record contains a series of elevation records which define the characteristics of the road’s elevation along the reference line.

高程剖面记录包含一系列的高程记录,定义了道路沿参考线的高程特征。

elevationProfile用来描述参考线上给定点处的高程元素(elevation)等信息,必须沿参考线按升序对元素进行定义。

(2.5)lateralProfile

The lateral profile record contains a series of superelevation and crossfall records which define the characteristics of the road surface’s banking along the reference line.

横向剖面记录包含一系列的超高程和横断面记录,这些记录定义了沿参考线的道路表面的银行特征。

在OpenDRIVE中,超高程用元素中的 <superelevation> 元素来表示。

该属性被定义为围绕着s轴的路段倾斜角。必须(must)沿参考线按升序定义元素。元素的参数将持续有效,直到下一个元素开始或道路参考线结束。道路的超高程程默认为零。

lateralProfile用来描述超高程(superelevation)、形状信息(shape)等信息,超高程从数学角度被定义为围绕参考线的道路横截面的倾斜角。这意味着超高程对于向右边倾斜的道路具有正值,对于向左边倾斜的道路具有负值。该属性被定义为围绕着s轴的路段倾斜角。必须沿参考线按升序定义元素。元素的参数将持续有效,直到下一个元素开始或道路参考线结束。道路的超高程程默认为零。shape属性被定义为相对于参考水平面路段的路面。一个拥有不同t值的s位置上可存在多个形状,从而对道路的弯曲形状进行描述。

(2.6)lanes

在OpenDRIVE中,车道用 <road> 元素里的 <lanes> 元素来表示。

中描述了道路的不同车道的信息。在OpenDRIVE中,所有道路都包含了车道。车道用 road元素里的lanes元素来表示。Lanes描述了车道组属性(laneSection)。Type属性描述了车道类型,车道类型描述了车道的主要用途及与其相对应的交通规则。Link属性描述了车道之间的连接情况。Width属性定义了车道的宽度。Speed属性定义了给定车道上允许的最大行驶速度。Border属性是用来描述车道宽度的另一种方法,它并不会直接定义宽度,而是在独立于其内部边界参数的情况下,对车道的外部界限进行定义。material元素用来表示车道材质。Access可以用来让车道局限于特定的道路使用者。height元素可以用来表示车道高度。roadMark属性可以用来定义车道外边界线条的样式。laneOffset元素可以来表示车道偏移。

(2.7)objects

在OpenDRIVE 中,物体用 <object> 元素中的 <objects> 元素来表示。其按每个 <road> 元素被定义。

(2.8)signals

在OpenDRIVE中,标志用 <road> 元素里的 <signals> 元素来表示。

对于交通信号,中分别描述了不同交通信号的位置、高度和id等信息。

(3)controller

在OpenDRIVE中,控制器用 <OpenDRIVE> 元素里的 <controller> 元素来表示。

被引用标志的ID存储在 <controller> 元素的 <control> 元素中。

road标签中定义了红绿灯的id和位置等,为了方便实现对红绿灯相位的控制,需要配置。该标签中定义了controller的id和name,其下的control中,可以指定多个signal的id,从而实现对多个红绿灯的同步控制。controller的相位顺序和时长需要在场景文件及OpenSCENARIO中配置。如下图:

(4)junction

在OpenDRIVE中,交叉口用 <junction> 元素来表示。联接道路则用 <junction> 元素中的 <connection> 元素来表示。OpenDRIVE并未特意将去路定义为元素或属性,来路也可被视作为去路,因此二者在此处可被相提并论。通往该道路的联接道路将此类道路隐性地定义为去路。

道路的描述中对不同的道路分别给出了其前后连接的道路,这对于一般的道路足以描述其连接关系,但是对于路口道路的连接,却不能清楚的描述,于是需要使用junction。

junction包括交叉口的名称(name)、ID、类型(type)、联接道路信息(connection)等。incomingRoad为该连接路的来路的id,connectingRoad为该连接路的id。laneLink中描述来路和连接路的车道的连接关系,from为来路的车道id,to为与其连接的连接路的车道id。

参考文献

OpenX系列标准介绍(1):OpenDRIVE介绍

ASAM OpenDRIVE®

OpenDRIVE 1.6 CN
OpenDRIVE 1.4-1.5

以上是关于OpenX系列标准:OpenDRIVE标准简述的主要内容,如果未能解决你的问题,请参考以下文章

万字详解OpenDRIVE文件

自动驾驶高精度地图比较研究

Apollo使用方法;map_gen工具使用

Apollo使用方法;map_gen工具使用

Dockerfile概念简述

简述C语言标准库函数strcpy功能和格式?