“ 本系列尝试对ASAM OpenX系列标准进行介绍。这是第二篇:通过分析ASAM组织提供的一个OpenDRIVE地图实例,来进一步介绍OpenDRIVE格式。”
01
概览
通过odrViewer打开实例,可以看到为一个十字路口,由中间的一个路口和四条支路构成,将鼠标放置在不同位置可以在窗口底部显示该点的坐标和道路id等信息。如下图:
在上一章我们提到过OpenDRIVE文件按XML格式编写,文件扩展名为.xodr,可以使用文本编辑器打开。本文使用的实例文件打开如下图所示:
<OpenDRIVE>为最顶层节点,其下是对构成路网的各个部分的描述。<header>中描述了文件遵循的OpenDRIVE版本和本文件的版本等信息,<road>中描述了组成整个路网的各条道路的信息,<controller>描述了不同红绿灯的控制器的信息,<junction>中描述了各个路口的信息。
那么一个十字路口为什么有16条road呢?
从上图可以看到16条road可以分为两组:属性中junction=-1和junction=1的。其中junction=1表示其属于id=1的junction,junction=-1表示其不属于任何一个junction,即id=0,1,6,13的四条路为十字路口的四条支路,其他为junction的内部道路,也就是四条支路的连接路。
02
道路的描述
现在我们展开id=0的road的信息,如下图:
其下有<link>、<planview>、<elevationProfile>、<lateralProfile>、<lanes>、<objects>、<signals>等标签。
<link>描述了本道路与其他道路的连接关系,<predecessor>中描述了本道路之前的道路id,<successor>中描述了本道路之后的道路id。<planview>分段描述了道路不同参考线的信息。<elevationProfile>、<lateralProfile>描述了道路高度的信息。<lanes>中描述了道路的不同车道的信息。<objects>和<signals>描述了道路上的物理和交通信号的信息。
对于车道,<lanes>中对不同id的车道分别描述其宽度和类型。如id=1的车道,其类型为行车道,宽度为3.75m。
对于交通信号,<signals>中分别描述了不同交通信号的位置、高度和id等信息。如id=0的road中包含3个交通信号:一个交通信息牌(id=4)、一个红绿灯(id=12)和一个停止线(id=0)。
03
路口的描述
道路的描述中对不同的道路分别给出了其前后连接的道路,这对于一般的道路足以描述其连接关系,但是对于路口道路的连接,却不能清楚的描述,于是需要使用junction。
junction下使用connection来描述不同的连接路,其属性中的id为该连接路在junction中的id,incomingRoad为该连接路的来路的id,connectingRoad为该连接路的id。laneLink中描述来路和连接路的车道的连接关系,from为来路的车道id,to为与其连接的连接路的车道id。
04
红绿灯控制器的描述
前面<road>的<signals>标签中定义了红绿灯的id和位置等,为了方便实现对红绿灯相位的控制,需要配置<controller>。该标签中定义了controller的id和name,其下的control中,可以指定多个signal的id,从而实现对多个红绿灯的同步控制。controller的相位顺序和时长需要在场景文件及OpenSCENARIO中配置。如下图:
谢谢您宝贵的正激励和正反馈!
注:本文内容参考ASAM官网,一手内容请前往获取https://www.asam.net/standards。
内容如有疏漏敬请告知。
|本文作者版权所有,欢迎私信获得转载授权。
关键词:自动驾驶,仿真测试,openx,opendrive
来源:孙工自动驾驶