道路的走向可以是多种多样的,可以是空旷地面上的直线、高速公路上细长的弯道、亦或山区狭窄的转弯。为从数学角度对所有这些道路线进行正确建模,OpenDRIVE提供了多种几何形状元素。 图19展示了五种定义道路参考线几何形状的可行方式:

  • 直线
  • 螺旋线或回旋曲线(曲率以线性方式改变)
  • 有恒定曲率的弧线
  • 三次多项式曲线
  • 参数三次多项式曲线

1 道路参考线

道路参考线是OpenDRIVE中每条道路的基本元素。所有描述道路形状以及其他属性的几何元素都依照参考线来定义,这些属性包括车道及标志。

按照定义,参考线向s方向伸展,而物体出自参考线的侧向偏移,向t方向伸展。

图20展示了OpenDRIVE中一条道路的不同部分。

  • 道路参考线
  • 一条道路上的单独车道
  • 沿道路放置的道路特征(如标志)

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

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

以下规则适用于道路参考线:

  • 每条道路必须有一条参考线。
  • 每条道路只能有一条参考线。
  • 参考线通常在道路中心,但也可能有侧向偏移。
  • 几何元素应沿参考线以升序(即递增的s位置)排列。
  • 一个 <geometry> 元素应只包含一个另外说明道路几何形状的元素。
  • 若两条道路不使用交叉口来连接,那么新的道路的参考线应总是起始于其前驱或后继道路的 <contactPoint> 。参考线有可能(may)被指向相反方向。
  • 参考线不能有断口(leaps)。
  • 参考线不应有扭结(kinks)。

2 直线

在OpenDRIVE中,直线用<geometry> 元素里的 <line> 元素来表示。

XML示例

<planView>
<geometry
s="0.0000000000000000e+00"
x="-4.7170752711170401e+01"
y="7.2847983820912710e-01"
hdg="6.5477882613167993e-01"
length="5.7280000000000000e+01">
<line/>
</geometry>
</planView>

3 螺旋线

如图23所示,螺旋线是一条描述参考线变化曲率的回旋曲线。螺旋线可被用来描述曲率在<line>到<arc>连贯的转换。

螺旋线是以起始位置的曲率(@curvStart)和结束位置的曲率(@curvEnd)为特征。沿着螺旋线的弧形长度(见 <geometry> 元素@length),曲率从头至尾呈线性。

也可以按顺序排列 <line> 、 <spiral> 和 <arc> 几个元素,从而对复杂曲率进行描述。

在OpenDRIVE中,螺旋线用<geometry> 元素里的<spiral>元素来表示。

XML示例

<geometry s="100.0" x="38.00" y="-1.81" hdg="0.33" length="30.00"><spiral curvStart="0.0" curvEnd="0.013"/>
</geometry>

以下规则适用于螺旋线:

  • @curvStart和@curvEnd不应该相同。

4  弧线

如图24所示,弧线描述了有着恒定曲率的道路参考线。

在OpenDRIVE中,弧线用<geometry> 元素里的<arc>元素来表示。

XML示例

<planView>
<geometry
s="3.6612031746270386e+00"
x="-4.6416930098385274e+00"
y="4.3409250448366459e+00"
hdg="5.2962250374496271e+00"
length="9.1954178989066371e+00">
<arc curvature="-1.2698412698412698e-01"/>
</geometry>
</planView>

以下规则适用于弧线:

  • 曲率不应(should)为零。

5  从几何形状元素中生成任意车道线

如图25所示,通过对OpenDRIVE中所有可用的几何形状元素进行组合,便可以创建诸多种类的道路线。

为避免曲率中出现断口,建议使用螺旋线将直线与弧线以及其他有不同曲率的元素进行结合。

6 三次多项式(弃用)

三次多项式可用来生成衍生于测量数据的复杂道路走向。测量对为x/y坐标系中沿参考线的被测量坐标的指定次序定义了线段的多项式极限。

局部三次多项式描述了道路的参考线。通过对线段极限处的连续性条件例如线段连续性、切线和/或曲率连续性等进行详细说明,可以对多个三次多项式线段进行融合并且整个道路走向生成一条全局三次样条线插值曲线。另一个优点则是,沿着多项式的路径方式比沿回旋曲线更有效。

6.1 三次多项式的背景信息

以下方程描述了x/y坐标系里三次多项式的插值:
y(x) = a + b*x + c*x2 + d*x³

公式中的多项式参数a、b、c、d用于定义道路的走向。借助参数a-d,坐标系里每个点的y坐标都可以从x坐标中计算出来。

图26使用以下的值对在x/y坐标系中的三次多项式进行了展示:

6.2 利用三次多项式创建道路

如图27所示,在x/y坐标系中描述的三次多项式并不适合用来描述带有任意方向的曲线段。为了对在给定x坐标上带有两个或更多y坐标的曲线段进行处理,可(may)根据与局部u/v坐标系的关系来对三次多项式段进行定义。局部u/v坐标系的使用提高了曲线定义的灵活性。以下方程式得以使用:
v(u) = a + b*u + c*u2 + d*u³

应遵循以下方式对局部u/v坐标系方向进行选择:使用在递增的u坐标上的函数v(u)来表达曲线。

通常来说,u/v坐标系与s/t坐标系在线段的起始位置(@x,@y)和起始方向@hdg(关于这两点在<geometry>元素中有详细说明)上是一致的。这一选择的结果就是多项式参数a=b=0(见图28)。作为一个附加选项,局部u/v坐标系可相对于起始点(@x,@y)被旋转,做法为规定一个不等于0的多项式参数@b。在这里,反正切arctan(@b)定义了相对于局部u/v坐标系的多项式的航向角/偏航角。可通过设置一个不等于0的多项式参数@a(见图29)来获得当(@x,@y)应被定位于u=0时,沿v坐标轴对u/v 坐标系
原点的额外位移。参数u有可能随着0到曲线终点在u坐标轴上的投影而发生变化。对于给定的参数u,局部坐标v(u)定义了局部u/v坐标系内曲线上的点。
v(u) = a + b*u + c*u2 + d*u³

考虑到<geometry>元素中说明的位移和旋转参数@a、@b、(@x,@y) 和@hdg,在给定的u坐标上最终的x/y曲线位置如图29所示。

在OpenDRIVE中,三次多项式用 <geometry> 元素里的 <poly3> 元素来表示。

XML示例

<geometry
s="0.0000000000000000e+00"
x="-6.8858131487889267e+01"
y="4.1522491349480972e-01"
hdg="6.5004409066736524e-01"
length="2.5615689718113455e+01">
<poly3
a="0.0000000000000000e+00"
b="0.0000000000000000e+00"
c="1.4658732624442020e-02"
d="-5.7746497381565959e-04"/>
</geometry>
<geometry
s="2.5615689718113455e+01"
x="-4.8650519031141869e+01"
y="1.5778546712802767e+01"
hdg="2.9381264033570398e-01"
length="3.1394863696852912e+01">
<poly3
a="0.0000000000000000e+00"
b="0.0000000000000000e+00"
c="-1.9578575382799307e-02"
d="2.3347864348004167e-04"/>
</geometry>

以下规则适用于三次多项式:

  • 三次多项式可(may)被用于描述在测量数据可用的情况下道路的走向。
  • 若局部u/v坐标系与s/t坐标系起始点一致,那么多项式参数系数为a=b=0。
  • <geometry>元素的起始点(@x,@y)定位在局部u/v坐标系的v轴上。
  • 多项式参数a和b应(should)为0,以确保参考线的平滑。

7 参数三次曲线

参数三次曲线被用于描述从测量数据中生成的复杂曲线。参数三次曲线相较于三次多项式更为灵活,它能描述更多种类的道路线。与在x/y坐标系中被定义或被当成局部u/v坐标系的三次多项式比起来,x坐标与y坐标的插值是通过它们自身的样条相对于共同的插值参数p而进行的。

7.1 使用参数三次曲线生成道路

只需使用x轴和y轴便可以用参数三次曲线生成道路线。为保持三次多项式的连贯性,可利用u轴和v轴同时将它们计算到三次多项式里。

若无另外说明,插值参数p则在[0;1]范围内。另外,也可在 [0; @length of <geometry> ]的范围内对其赋值。与三次多项式相似,有着变量u和v的局部坐标系可被任意放置和旋转。

为简化描绘,局部坐标系可与s/t坐标系在起始点(@x,@y)和起始方向@hdg上保持一致:

  • u点在局部s方向,即沿参考线在起始点上。
  • v点在局部t方向,即从参考线在起始点上作横向偏移。
  • 参数@aU、@aV和@bV应为零。

如图26、27和28所示,给参数@aU、@aV、 和@bV赋予非零值会导致s/t坐标系的转移和旋转。

在为已知参数p定义曲线上的点后,在考虑相对于参数@aU、@aV、@bU、@bV、起始坐标(@x,@y)和起始方向@hdg所规定的位移和方向的前提下,u值和v值会被转换成x/y坐标系里的值。

这里需注意的是:插值参数p和 <geometry> 元素中起始点(@x,@y)和与参数p相关的点(x(p),y(p))之间弧线实际长度是非线性关系。通常来说,只有起点和终点参数p=0和p=@length(选项@pRange=arcLength)与弧线的实际长度一致。

考虑到 <geometry> 元素中说明的位移和旋转参数@a、@b、(@x,@y) 和@hdg,在给定的u坐标上最终的x/y曲线位置如图29所示。

在OpenDRIVE中,参数三次曲线用 <geometry> 元素里的 <paramPoly3> 元素来表示。

XML示例

<planView>
<geometry
s="0.000000000000e+00"
x="6.804539427645e+05"
y="5.422483642942e+06"
hdg="5.287405485081e+00"
length="6.565893957370e+01">
<paramPoly3
aU="0.000000000000e+00"
bU="1.000000000000e+00"
cU="-4.666602734948e-09"
dU="-2.629787927644e-08"
aV="0.000000000000e+00"
bV="1.665334536938e-16"
cV="-1.987729787588e-04"
dV="-1.317158625579e-09"
pRange="arcLength">
</paramPoly3>
</geometry>
</planView>

以下规则适用于参数三次曲线:
若局部u/v坐标系与s/t坐标系的起始点一致,那么多项式参数系数为@aU=@aV=@bV=0。

若@pRange="arcLength",那么p可(may)在[0, @length from <geometry> ]范围内对其赋值。
若@pRange="normalized",那么p可(may)在[0, 1]范围内对其赋值。
多项式参数aU、bU和 aV应为0,以确保参考线的平滑。

opendrive中的几何形状相关推荐

  1. 《炬丰科技-半导体工艺》光刻在掩模中转移几何形状图案的过程

    书籍:<炬丰科技-半导体工艺> 文章:光刻在掩模中转移几何形状图案的过程 编号:JFKJ-21-198 作者:炬丰科技 光刻是在掩模中转移几何形状图案的过程,是覆盖在表面的一层薄薄的辐射敏 ...

  2. 求几何形状的面积之和

    (求几何形状的面积之和)编写一个方法,求数组中所有几何形状对象的面积之和.方法签名如下: public static double sumArea(shape[] a)编写测试程序,继承抽象类shap ...

  3. OpenCV中BLOB特征提取与几何形状分类

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 一.方法 二值图像几何形状提取与分离,是机器视觉中重点之一,在CT ...

  4. python中geometry用法_pythongdal教程之:几何形状geometry与投影projection

    建立空的geometry对象:ogr.Geometry 定义各种不同的geometry使用的方法是不一样的(point, line, polygon, etc) 新建点point,使用方法AddPoi ...

  5. 几何图形识别 python_OpenCV中几何形状识别与测量

    经常看到有学习OpenCV不久的人提问,如何识别一些简单的几何形状与它们的颜色,其实通过OpenCV的轮廓发现与几何分析相关的函数,只需不到100行的代码就可以很好的实现这些简单几何形状识别与对象测量 ...

  6. 在 Surfer 中对具有不同网格几何形状的网格使用 Grid Math 和 Grid Volume

    您是否需要使用一个或多个网格文件进行数学计算?或者确定上下网格表面之间的体积?这些计算在 Surfer 中总是可行的,但只能在具有相同几何形状的网格文件之间进行--这在现实世界中很少见.Surfer ...

  7. 使用Blender中的几何节点创建程序对象

    大小解压后:2.4G 持续时间3h 30m 1280X720 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 使用Blender中的几何节点按程序创建对象 信息: 使用Blender中的几 ...

  8. iOS10 UI教程视图的几何形状

    iOS10 UI教程视图的几何形状 视图属性中的一部分属性可以让定义的视图绘制在屏幕上.在讲解这些属性前,我们首先将讲解,定义视图的几何形状所涉及到的结构类型.这些结构类型如下: CGPoint:它表 ...

  9. ArcObjects中的几何对象简介(一)

    几何对象是ArcObjects中使用最广泛的对象之一,用户在新建.删除.编辑何进行地理分析的时候,就是在处理一个包含几何形体的矢量对象.几何对象用于表达要素(Feature)或图形元素(Graphic ...

  10. 一些常规形几何形状的绘制和效果填充(一)

    源程序下载 一些常规形几何形状的绘制和效果填充                       visualsan@yahoo.cn      常规几何形状是指三角形,多边形,圆,圆弧,直线,点,文字等的 ...

最新文章

  1. 大一计算机考试题库window,2016年计算机考试Windows题库及答案
  2. 百度前端技术学院task13源代码
  3. 求链式线性表的倒数第K项(堆栈解法)
  4. 【五校联考6day2】san
  5. matlab cameraman,cameraman.tif 原图
  6. 介绍自己的一个Android插桩热修复框架项目QuickPatch
  7. javaweb上传文件_javaWeb中,如何通过CommonsFileUpload组件上传文件
  8. JS函数调用的四种方法
  9. Falsy Bouncer-freecodecamp算法题目
  10. MySql error 2003 Can't connect to MySQL server on 'localhost' (0)
  11. docker源码编译 linux_oracle linux 6 docker 安装(包括编译git源码)
  12. 20211205:力扣第270场周赛(上)
  13. PHP反序列化漏洞(什么是反序列化漏洞及操作)
  14. 打印机打印字体轻,像针式的故障处理(图)
  15. ipad上html语言编辑,Html编辑器iPad版
  16. mysql主从延迟时间是多少_MySQL主从同步个般是多久的延迟?
  17. 千姿百态项目经理1——“苦逼”项目经理一
  18. 计算机开机后嘟嘟响,笔记本电脑发出嘟嘟嘟的声音
  19. 肝了N小时,整理了100+Python爬虫项目
  20. 图解汉诺塔问题(递归求解)

热门文章

  1. html5新年拜年模板,关于春节拜年日记模板合集7篇
  2. 杨校老师课堂之Hadoop环境搭建(一)
  3. 【微信小程序】项目实战—抽签应用
  4. archlinux i3wm flameshot使用
  5. Linux系统下安装Tomcat8
  6. ESP32-CAM——内网穿透教程
  7. ESP32-CAM 摄像头学习
  8. icem密度盒怎么设置_ICEM-自动体网格生成[精].ppt
  9. 电脑小技巧系列——快捷打开程序应用
  10. Boxx:一个旨在提高 Python 代码开发和调试效率的工具库,尤其在计算机视觉领域...