opendrive中的Lanes

article/2025/11/10 5:06:00

在OpenDRIVE中,所有道路都包含了车道。每条道路必须拥有至少一条宽度大于0的车道,并且每条道路的车道数量不受限制。

需要使用中心车道对OpenDRIVE中的车道进行定义和描述。中心车道没有宽度,并被用作车道编号的参考,自身的车道编号为0。对其他车道的编号以中心车道为出发点:车道编号向右呈降序,也就是朝负t方向;向左呈升序,也就是朝正t方向。

图51展示了一条道路的中心车道,该车道拥有多条交通车道以及不同的行驶方向。在这个示例中,根据靠左行车以及靠右行车的交通模式,中心车道将道路类型中定义的行驶方向分隔开来。由于并未使用车道偏移,因此中心车道等同于道路参考线。

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

以下规则适用于车道的使用:

  • 每条道路必须拥有一条中心车道及一条宽度大于0的车道。
  • 道路可根据需要而设定任意数量的车道。
  • 中心车道不能拥有宽度,这就意味着不能将<width>元素用于中心车道。
  • 中心车道编号必须为0。
  • 车道编号必须在中心车道之后从1开始,朝负t方向为降序,朝正t方向为升序。
  • 车道编号必须保持连续性且无任何间断。
  • 每个车道段都必须有唯一的车道编号。
  • 可通过使用<lane>元素的@type属性对双向车道进行详细说明。

XML示例

1 在车道段中进行车道分组

为了能够便利地在OpenDRIVE道路描述中进行查找,一个车道段内的车道可分为左、中和右车道,车道在该组中用 <lane> 元素来描述。由于车道编号朝负t方向呈降序且朝正t方向呈升序,应用可从ID属性中给出的车道编号中得知车道的方向(除非@type是双向的)。

在OpenDRIVE中,车道组用 <laneSection> 元素内的 <center> 、 <right> 和 <left> 元素来表示。ID属性用嵌套在<center> 、 <right 和 <left> 元素里的 <lane> 元素来定义。

以下规则适用于车道分组:

  • 带有正ID的车道在中心车道的左侧,而带有负ID的车道则在中心车道的右侧。
  • 每个车道段必须包含至少一个<right>或<left>元素。
  • 必须给每个s坐标定义一个<center>元素。
  • 每个车道段都可包含一个<center>元素。
  • 为了能够更好地确认方向,车道应按照降序ID按从左到右的顺序排列。

2 车道段

车道可被分成多个段。每个车道段包含车道的一个固定编号。如图56所示,每次车道编号的变更都随之产生一个新车道段的需求。车道段的定义将沿道路参考线按升序来进行。

图56中,路段被分割成不同的车道段。若车道编号改变,则需要定义一个新的车道段。

为了能更轻易地在复杂道路上对车道段进行使用,可仅使用@singleSide属性对道路的一侧进行定义。图57展示了这一原理。

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

属性
t_road_lanes_laneSection:
车道可(may)被分成多个段,每个车道段都包含一个车道的固定编号。每一次的车道编号变更都将需要定义一个新的车道段。

t_road_lanes_laneSection_center:
为了能够便利地在OpenDRIVE的道路描述中进行查找,一个车道段内的车道可分为左、中和右车道。每个车道段均必须包含一个<center>元素和至少一个<right>或<left>元素。

t_road_lanes_laneSection_center_lane:
车道元素被包括在左/中/右元素中。车道元素必须使用降序ID从左到右展示车道。

t_road_lanes_laneSection_left:
为了能够便利地在OpenDRIVE的道路描述中进行查找,一个车道段内的车道可分为左、中和右车道。每个车道段均必须包含一个<center>元素和至少一个<right>或<left>元素。
t_road_lanes_laneSection_left_lane:
车道元素被包括在左/中/右元素中。车道元素必须使用降序ID从左到右展示车道。

t_road_lanes_laneSection_right:
为了能够便利地在OpenDRIVE的道路描述中进行查找,一个车道段内的车道可分为左、中和右车道。每个车道段均必须包含一个<center>元素和至少一个<right>或<left>元素。

t_road_lanes_laneSection_right_lane:
车道元素被包括在左/中/右元素中。车道元素必须(should)使用降序ID从左到右展示车道。

以下规则适用于车道段:

  • 每条道路都必须拥有至少一个车道段。
  • 车道段必须按升序来定义。
  • 每个s位置上都必须只有一条中心车道。
  • 应该避免在长距离上使用宽度为0的车道。
  • 每次车道编号改变都必须有新的车道段被定义。
  • 车道段将持续有效,直到一个新的车道段被定义。
  • 可根据需要多次更改一个车道段内的车道属性。
  • 可仅使用@singleSide属性为道路的一侧对车道段进行定义。

3. 车道偏移

车道偏移可用于将中心车道从道路参考线上位移,以便能够更轻松地在道路上对车道的局部横向位移进行建模(比如对左转车道进行建模)。
根据用于车道偏移的插值,车道偏移和形状定义两者的组合可导致不一致性。若线性插值被用于定义沿参考线的道路形状,那么它也应被用于偏移定义,以便两者的定义能被一致地组合使用。
图58展示了中心车道偏离道路参考线而产生的偏移。

在OpenDRIVE中,车道偏移用<lanes>元素内的<laneOffset>元素来表示。

属性
t_road_lanes_laneOffset:
车道偏移可用于将中心车道从道路参考线上位移。

计算方式
利用以下三阶多项式函数来计算给定点的偏移:
offset (ds) = a + b*ds + c*ds² + d*ds³
 其中,offset 是在给定点处的横向偏移;a, b, c,d是系数;ds是新的道路偏移元素起始处和给定位置之间沿道路参考线产生的距离。

每当新的元素出现, ds 则清零。偏移值的绝对位置计算方式如下:
s = ss + ds

其中,s是参考线坐标系统中的绝对位置,ss是参考线坐标系统中元素的起始位置。

每一次的多项式函数变更都需要一个新的车道偏移元素。

以下规则适用于车道偏移:

  • 车道偏移不能与道路形状一同使用。
  • 当底层的多项式函数有变化时,必须启动一个新的车道偏移。
  • 若边界定义已存在,则不允许出现偏移。

4 车道连接

车道的连接信息被存储在OpenDRIVE中以便进行车道查找,并将借助于每条车道的前驱以及后继信息来对连接进行描述。车道和交叉口均可作为车道的前驱和后继部分。车道可连接至相同或不同道路上的其他车道上。

在OpenDRIVE中,车道连接用<lane>元素里的<link>元素来表示。<predecessor>和<successor>元素在<link>元素内得到定义。

属性
t_road_lanes_laneSection_lcr_lane_link:
前面的和后置车道信息为有着相同参考线的车道之间的连接提供了车道在前面的以及后置车道段中的ID。只有在车道在一个路口结束或不具有物理连接时,这一元素才可被删除。
t_road_lanes_laneSection_lcr_lane_link_predecessorSuccessor:

以下规则适用于车道连接:

  • 一条车道可拥有另外一条车道作为其前驱或后继。
  • 只有当两条车道的连接明确时,它们才能被连接。若与前驱或后继部分的关系比较模糊,则必须使用交叉口。
  • 若车道结束于一个路口内或没有任何连接,则必须删除 <link> 元素。

5 车道属性

车道属性描述了车道的用途以及形状。每个车道段都定义了一条车道属性,该属性也可能在该车道段中有变化。如果没有特意为车道段定义一条属性,应用便可采用默认属性。

车道属性的示例是车道宽度、车道边界和限速。

以下规则适用于车道属性:

  • 车道属性的定义必须相对于相应车道段的起点来展开。
  • 直到另外一个同类型的车道属性得到定义或车道段结束,特定的车道属性都必须保持有效。
  • 相同类型的车道属性必须按升序定义。

5.1 车道宽度

车道的宽度是沿t坐标而定义的。车道的宽度有可能在车道段内产生变化。

车道宽度与车道边界元素在相同的车道组内互相排斥。若宽度以及车道边界元素在OpenDRIVE文件中同时供车道段使用,那么应用必须使用 <width> 元素提供的信息。

在OpenDRIVE中,车道宽度由 <lane> 元素中的 <width> 元素来描述。

属性
t_road_lanes_laneSection_lr_lane_width:
车道的宽度必须在每个车道段里至少被定义一次。中心车道不能有宽度,也就意味着不能对中心车道使用 <width> 元素。车道的宽度都必须保持有效,直到一个新的宽度元素被定义或车道段结束。

计算方式
利用以下三阶多项式函数来计算给定点的宽度:
Width (ds) = a + b*ds + c*ds² + d*ds³
 其中,width是给定点处的宽度;a, b, c,d是系数;ds 是新的道路宽度元素起始处和给定位置之间沿道路参考线产生的距离

每当新的元素出现, ds 则清零。宽度值的绝对位置计算方式如下:

以下规则适用于车道宽度:

  • 车道的宽度必须在每个车道段中至少被定义一次。
  • 必须为整个车道段的长度定义车道宽度。这意味着s=0必须要有一个<width>元素。
  • 中心车道不能拥有宽度,也就是说不能对中心车道使用<width>元素。
  • 直到新的宽度元素被定义或者车道段结束,车道的宽度都保持有效。
  • 当多项式函数的变量发生改变时,新的宽度元素必须得到定义。
  • 每个车道段的多个宽度元素都必须按升序得到定义。
  • 不能在相同车道组里同时使用宽度元素以及边界元素。

5.2 车道边界

车道边界是用来描述车道宽度的另一种方法,它并不会直接定义宽度,而是在独立于其内部边界参数的情况下,对车道的外部界限进行定义。根据上述情况,内车道也被定义为车道,该车道虽然与当前被定义的车道有着相同ID符号,但内车道的ID绝对值要更小。

相比较对宽度进行详细说明而言,此类定义要更加地便利。尤其是在道路数据是源自于自动测量结果的情况下,该方式可以避免多个车道段被创建。

车道宽度与车道边界元素在相同的车道组内互相排斥。若宽度以及车道边界元素在OpenDRIVE文件中同时供车道段使用,那么应用必须使用 <width> 元素提供的信息。

在OpenDRIVE中,车道边界用 <lane> 元素中的 <border> 元素来表示。

属性
t_road_lanes_laneSection_lr_lane_border:

以下规则适用于车道边界:

  • 不能在相同车道组内一同使用宽度元素以及边界元素。
  • 边界元素不能和车道偏移同时存在。
  • 当多项式函数的变量发生改变时,必须要定义一个新的边界元素。

5.3 车道类型

每条车道都会被定义一个类型。车道类型定义了车道的主要用途及与其相对应的交通规则。

可用的车道类型有:
路肩shoulder:描述了道路边缘的软边界。
边界border:描述了道路边缘的硬边界。其与正常可供行驶的车道拥有同样高度。
驾驶driving:描述了一条“正常”可供行驶、不属于其他类型的道路。
停stop:高速公路的硬路肩,用于紧急停车。
无none:描述了道路最远边缘处的空间,并无实际内容。其唯一用途是在(人类)驾驶员离开道路的情况下,让应用记录
OpenDRIVE仍在运行。
限制restricted:描述了不应有车辆在上面行驶的车道。该车道与行车道拥有相同高度。通常会使用实线以及虚线来隔开这类
车道。
泊车parking:描述了带停车位的车道。
分隔带median:描述了位于不同方向车道间的车道。在城市中通常用来分隔大型道路上不同方向的交通。
自行车道biking:描述了专为骑自行车者保留的车道。
人行道sidewalk:描述了允许行人在上面行走的道路。
路缘curb:描述了路缘石。路缘石与相邻的行车道在高度有所不同。
出口exit:描述了用于平行于主路路段的车道。主要用于减速。
入口entry:描述了用于平行于主路路段的车道。主要用于加速。
加速车道onramp:由乡村或城市道路引向高速公路的匝道。
减速车道offRamp:驶出高速公路,驶向乡村或城市道路所需的匝道。
连接匝道connectingRamp:连接两条高速公路的匝道。例如高速公路路口。

在OpenDRIVE中,车道类型用<lane>元素内属性@type元素来表示。

属性
t_road_lanes_laneSection_lr_lane:
车道元素元素被包括在左/中/右元素元素中。车道元素元素应按降序ID从左到右展示车道。

以下规则适用于车道类型:
可(may)通过使用新的车道段根据需要多次地更改车道类型。

5.4 车道材质

除OpenCRG之外,OpenDRIVE提供了一个用于存储车道材质信息(即表面、摩擦属性及粗糙程度)的元素。若未对材质进行定义,那么应用可采用默认值。

在OpenDRIVE中,车道材质用<lane>元素内的<material>元素来表示。

属性
t_road_lanes_laneSection_lr_lane_material:
该属性存储了关于车道材质的信息。直到新的元素得到定义,每个元素都将保持有效。若有多个元素得到定义,它们必须按升序被排列。

以下规则适用于车道材质:

  • 中心车道不能拥有材质元素。
  • 直到另一材质元素得到启动或车道段结束,车道的材质元素都必须保持有效。
  • 若每个车道段都各自拥有多个材质元素,那么这些元素必须相对于s位置按升序得到定义。

5.5 车道限速

在OpenDRIVE中,车道速度用<lane>元素内的<speed>元素来表示。

属性
t_road_lanes_laneSection_lr_lane_speed:
该属性定义了给定车道上允许的最大行驶速度。直到新的元素得到定义,每个元素都在s坐标的增长方向中继续有效。

以下规则适用于车道限速:

  • 中心车道不能拥有任何限速。
  • 除非有另一个限速得到定义或车道段结束,车道的限速都必须保持有效。
  • 若每个车道段都拥有多个车道限速元素,那么这些元素必须按升序得到定义。
  • 源自于标志的限速必须始终被优先考虑。

5.6 车道的使用

车道可局限于特定的道路使用者,例如卡车或公共汽车。这类限制可在道路标识描述的限制之上另外在OpenDRIVE中得到定义。

OpenDRIVE在 <lane> 元素内提供了 <access> 元素,以便描述车道使用规则。

t_road_lanes_laneSection_lr_lane_access:
该属性定义了针对特定道路使用者类型的车道使用限制。
每个元素在s坐标的增长方向中都是有效的,直到新的元素得到定义。若多个元素得到定义,那它们必须按升序得到排列。

以下规则适用于车道使用规则:
中心车道不能(shall)拥有使用规则。
直到另一条使用规则得到定义或车道段结束,使用规则都必须(shall)保持有效。
若每个车道段都拥有多个使用规则元素,那么这些元素必须(shall)按升序得到定义。
车道使用元素可(may)在相同偏移位置开始。
若一个车道元素内无 <access> 元素存在,则也没有使用限制。
若 <rule> 元素里出现否定值,那么所有其他车辆仍被允许使用车道。
若 <rule> 元素里出现允许值,那么所有其他车辆则被禁止使用车道。
只能为给定s位置赋予否定值或允许值的其中一个,二者不能同时出现。
即便只有一个子集被改变,都必须(must)为所有限制重新定义一个新的s位置。
否定=无 deny=none 这个限制被用于恢复所有先前限制。

5.7  车道高度

车道高度必须沿h坐标得到定义。无关于道路高程,车道高度可用于标高车道。车道高度用于执行如图71所示的小规模高程,该图展示了人行通道如何通过车道高度被拔高。车道高度被认为是偏离道路并朝z方向的偏移(包括高程、超高程和形状)。

在OpenDRIVE中,车道高度用<lane>元素内的<height>元素来表示。

 


http://chatgpt.dhexx.cn/article/U0I1agdI.shtml

相关文章

opendrive坐标系

1 opendrive坐标系概况 OpenDRIVE使用三种类型的坐标系&#xff0c;如下图所示&#xff1a; 惯性x/y/z轴坐标系参考线s/t/h轴坐标系局部u/v/z轴坐标系 若无另外说明&#xff0c;对局部坐标系的查找与定位将相对于参考线坐标系来进行。对参考线坐标系位置与方向的设定则相对于…

OpenDrive里XY和ST

1.坐标系 根据维基百科&#xff0c;坐标系是指&#xff1a;定义一个n维系统&#xff0c;能够使每一个点和一组n个标量组成一一对应的系统。[1] 在坐标系里&#xff0c;有几个关键概念。 第一个关键概念是维度&#xff08;Dimension&#xff09;。维度是指通过一定标准&#xff…

[OpenDrive] OpenDrive学习笔记

文章目录 OpenDRIVEreference linelaneslane offsetlane sectionslane propertiessuperelevation and crossfalllateral profileroad linkagejunctionsneighbors 总体结构Apollo OpenDRIVEApollo OpenDRIVE结构 OpenDRIVE OpenDRIVE是对路网结构的描述性文件&#xff0c;于200…

opendrive简介

1、概要 ASAM OpenDRIVE描述了自动驾驶仿真应用所需的静态道路交通网络&#xff0c;并提供了标准交换格式说明文档。该标准的主要任务是对道路及道路上的物体进行描述。OpenDRIVE说明文档涵盖对如道路、车道、交叉路口等内容进行建模的描述&#xff0c;但其中并不包含动态内容…

如何使用OpenDRIVE

文章目录 OpenDRIVE Notes#1 前言#2 OpenDRIVE结构#2.1 Road#2.1.1 道路属性#2.1.2 道路联接#2.1.3 参考线 #2.2 laneSection#2.3 laneOffset#2.4 junction#2.4.1 路口的联接 #2.5 poly3(三次多项式) #3 解析#3.1 数据结构#3.1.1 ID#3.1.2 Point #4 构建topo#5 邻接点#6 路径规…

《OpenDRIVE1.6规格文档》1

目录 1 前言1.1 说明文档的可交付内容 2 介绍2.1 概要2.2 规范和非规范的声明与可交付内容2.3 惯例2.3.1 命名惯例2.3.2 单位2.3.3 情态动词2.3.4 拼写惯例2.3.5 ID的使用2.3.6 曲率 3 与其它标准的关联(初步)3.1 ASAM OpenDRIVE在ASAM标准系列中的角色3.2 OpenDRIVE与OpenCRG以…

万字详解OpenDRIVE文件

opendrive简介_whuzhang16的博客-CSDN博客_opendrive一文读懂opendrive的xodr文件内容_布拉德先生的博客-CSDN博客_xodr格式自动驾驶场景仿真标准&#xff08;一&#xff09;- OpenDRIVE - 知乎 (zhihu.com)opendrive坐标系_whuzhang16的博客-CSDN博客_opendrive坐标系 1 Open…

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

|作者版权所有&#xff0c;未经许可谢绝转载&#xff0c;转载请联系adsimtest163.com。 “ 本系列尝试对ASAM OpenX系列标准进行介绍。这是第一篇&#xff1a;介绍OpenDRIVE地图数据格式所能描述的内容和思路。” 01 概述 作为一个完整的仿真测试场景描述方案&#xff0c;Op…

完美解析Opendrive地图格式数据

1.前言 高精度电子地图也称为高分辨率地图(HD Map&#xff0c;High Definition Map)&#xff0c;是一种专门为无人驾驶服务的地图。与传统导航地图不同的是&#xff0c;高精度地图除了能提供的道路(Road)级别的导航信息外&#xff0c;还能够提供车道(Lane)级别的导航信息。无论…

OpenDRIVE文件格式详解

1 OpenDRIVE概要 ASAM OpenDRIVE描述了自动驾驶仿真应用所需的静态道路交通网络&#xff0c;并提供了标准交换格式说明文档。该标准的主要任务是对道路及道路上的物体进行描述。OpenDRIVE说明文档涵盖对如道路、车道、交叉路口等内容进行建模的描述&#xff0c;但其中并不包含动…

Unity iOS 使用 ASTC 格式纹理实践

引言上一篇文章描述了如何在不修改自定义渲染组件的前提下使用 alpha 分离的纹理来提升 iOS 的透明压缩纹理质量&#xff08;见这里&#xff1a;上一篇的链接&#xff09;。在这个方案投入项目开始使用一段时间之后&#xff0c;UI 同学又来找我抱怨了&#xff1a;虽然一些贴图的…

图形 3.6 纹理压缩——包体瘦身术——RGBA与ASTC与ETC2压缩与实际对比体验

包体瘦身术 RGBA与ASTC与ETC2压缩与实际对比体验Unity贴图压缩方式官方文档默认格式安卓的各个格式注意事项 体积对比单图片大小安装包大小 实机表现RGBA32综合表现ASTC12x12综合表现ETC2综合表现 虚假的总结&#xff01;额外的测试报告RGBA32额外测试报告ASTC12x12综合表现ETC…

creator贴图纹理压缩(creator2.4.x 实现ETC2和ASTC)

目录 1. creator游戏开发之纹理压缩 2. 常用的压缩纹理格式 3. 测试 4. ETC2 格式测试 6. ASTC格式测试 送上下载链接 不修改引擎的实现ASTC格式加载.zip-cocos2D文档类资源-CSDN下载 7. 最后附上插件代码 1. creator游戏开发之纹理压缩 目的&#xff1a;减少运行内存…

Android平台压缩纹理ETC2 VS ASTC

1&#xff09;Android平台压缩纹理ETC2 VS ASTC ​2&#xff09;Unity使用Profiler和UWA内存差异巨大 3&#xff09;Unity 2020 IL2CPP打包异常 4&#xff09;TouchScreenKeyboardWrap在PC模式下打包报错 这是第301篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发…

Unity iOS使用ASTC格式纹理实践

引言 上一篇文章描述了如何在不修改自定义渲染组件的前提下使用 alpha 分离的纹理来提升 iOS 的透明压缩纹理质量&#xff08;见这里&#xff1a;https://indienova.com/indie-game-development/unity-alpha-separate/&#xff09;。 在这个方案投入项目开始使用一段时间之后…

ASTC纹理压缩格式详解

https://zhuanlan.zhihu.com/p/158740249 一、ASTC纹理压缩格式介绍 ASTC是在OpenGL ES3.0出现后在2012年中产生的一种业界领先的纹理压缩格式&#xff0c;它的压缩分块从4x4到12x12最终可以压缩到每个像素占用1bit以下&#xff0c;压缩比例有多种可选。ASTC格式支持RGBA&…

astc纹理压缩格式

astc是当前android和ios平台下压缩最好的纹理格式&#xff0c;并且主流的机器基本都支持&#xff0c; astc:支持非2次幂的&#xff0c;2次幂的&#xff0c;等宽高的 一、ASTC纹理压缩格式介绍 ASTC是在OpenGL ES3.0出现后在2012年中产生的一种业界领先的纹理压缩格式。 它的压…

ASTC textures

ASTC textures 原文&#xff1a;https://arm-software.github.io/opengl-es-sdk-for-android/astc_textures.html This document describes usage of compressed ASTC textures. Introduction This tutorial shows how Adaptive Scalable Texture Compression (ASTC) can be …

[图形学]ASTC纹理压缩格式

纹理压缩的目的 1&#xff0c;降低内存&#xff0c;特别是移动端应用&#xff0c;内存占用不应过大&#xff0c;否则低端机很容易崩溃 2&#xff0c;降低带宽&#xff0c;手游类应用&#xff0c;在渲染时会有大量贴图传输到GPU&#xff0c;不限制的话不仅会严重影响渲染性能&a…

ASTC纹理压缩格式(Adaptive Scalable Texture Compression)

原文&#xff1a;这是一个pdf的下载链接 介绍 Adaptive Scalable Texture Compression(ASTC)是一种世界领先的新型纹理压缩格式。这种压缩格式已经加入Khronos标准&#xff0c;并已在某些硬件平台中提供。本文介绍了它的工作原理、使用方法和如何最大程度地使用它。更深入的信…