opendrive中的几何形状
道路的走向可以是多種多樣的,可以是空曠地面上的直線、高速公路上細長的彎道、亦或山區(qū)狹窄的轉(zhuǎn)彎。為從數(shù)學(xué)角度對所有這些道路線進行正確建模,OpenDRIVE提供了多種幾何形狀元素。 圖19展示了五種定義道路參考線幾何形狀的可行方式:
- 直線
- 螺旋線或回旋曲線(曲率以線性方式改變)
- 有恒定曲率的弧線
- 三次多項式曲線
- 參數(shù)三次多項式曲線
1?道路參考線
道路參考線是OpenDRIVE中每條道路的基本元素。所有描述道路形狀以及其他屬性的幾何元素都依照參考線來定義,這些屬性包括車道及標(biāo)志。
按照定義,參考線向s方向伸展,而物體出自參考線的側(cè)向偏移,向t方向伸展。
圖20展示了OpenDRIVE中一條道路的不同部分。
- 道路參考線
- 一條道路上的單獨車道
- 沿道路放置的道路特征(如標(biāo)志)
在OpenDRIVE中,參考線的幾何形狀用<planView>元素里的 <geometry> 元素來表示。
<planView> 元素是每個 <road> 元素里必須要用到的元素。
以下規(guī)則適用于道路參考線:
- 每條道路必須有一條參考線。
- 每條道路只能有一條參考線。
- 參考線通常在道路中心,但也可能有側(cè)向偏移。
- 幾何元素應(yīng)沿參考線以升序(即遞增的s位置)排列。
- 一個 <geometry> 元素應(yīng)只包含一個另外說明道路幾何形狀的元素。
- 若兩條道路不使用交叉口來連接,那么新的道路的參考線應(yīng)總是起始于其前驅(qū)或后繼道路的 <contactPoint> 。參考線有可能(may)被指向相反方向。
- 參考線不能有斷口(leaps)。
- 參考線不應(yīng)有扭結(jié)(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>連貫的轉(zhuǎn)換。
螺旋線是以起始位置的曲率(@curvStart)和結(jié)束位置的曲率(@curvEnd)為特征。沿著螺旋線的弧形長度(見 <geometry> 元素@length),曲率從頭至尾呈線性。
也可以按順序排列 <line> 、 <spiral> 和 <arc> 幾個元素,從而對復(fù)雜曲率進行描述。
在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>以下規(guī)則適用于螺旋線:
- @curvStart和@curvEnd不應(yīng)該相同。
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>以下規(guī)則適用于弧線:
- 曲率不應(yīng)(should)為零。
5??從幾何形狀元素中生成任意車道線
如圖25所示,通過對OpenDRIVE中所有可用的幾何形狀元素進行組合,便可以創(chuàng)建諸多種類的道路線。
為避免曲率中出現(xiàn)斷口,建議使用螺旋線將直線與弧線以及其他有不同曲率的元素進行結(jié)合。
6 三次多項式(棄用)
三次多項式可用來生成衍生于測量數(shù)據(jù)的復(fù)雜道路走向。測量對為x/y坐標(biāo)系中沿參考線的被測量坐標(biāo)的指定次序定義了線段的多項式極限。
局部三次多項式描述了道路的參考線。通過對線段極限處的連續(xù)性條件例如線段連續(xù)性、切線和/或曲率連續(xù)性等進行詳細說明,可以對多個三次多項式線段進行融合并且整個道路走向生成一條全局三次樣條線插值曲線。另一個優(yōu)點則是,沿著多項式的路徑方式比沿回旋曲線更有效。
6.1?三次多項式的背景信息
以下方程描述了x/y坐標(biāo)系里三次多項式的插值:
y(x) = a + b*x + c*x2 + d*x3
公式中的多項式參數(shù)a、b、c、d用于定義道路的走向。借助參數(shù)a-d,坐標(biāo)系里每個點的y坐標(biāo)都可以從x坐標(biāo)中計算出來。
圖26使用以下的值對在x/y坐標(biāo)系中的三次多項式進行了展示:
6.2?利用三次多項式創(chuàng)建道路
如圖27所示,在x/y坐標(biāo)系中描述的三次多項式并不適合用來描述帶有任意方向的曲線段。為了對在給定x坐標(biāo)上帶有兩個或更多y坐標(biāo)的曲線段進行處理,可(may)根據(jù)與局部u/v坐標(biāo)系的關(guān)系來對三次多項式段進行定義。局部u/v坐標(biāo)系的使用提高了曲線定義的靈活性。以下方程式得以使用:
v(u) = a + b*u + c*u2 + d*u3
應(yīng)遵循以下方式對局部u/v坐標(biāo)系方向進行選擇:使用在遞增的u坐標(biāo)上的函數(shù)v(u)來表達曲線。
通常來說,u/v坐標(biāo)系與s/t坐標(biāo)系在線段的起始位置(@x,@y)和起始方向@hdg(關(guān)于這兩點在<geometry>元素中有詳細說明)上是一致的。這一選擇的結(jié)果就是多項式參數(shù)a=b=0(見圖28)。作為一個附加選項,局部u/v坐標(biāo)系可相對于起始點(@x,@y)被旋轉(zhuǎn),做法為規(guī)定一個不等于0的多項式參數(shù)@b。在這里,反正切arctan(@b)定義了相對于局部u/v坐標(biāo)系的多項式的航向角/偏航角。可通過設(shè)置一個不等于0的多項式參數(shù)@a(見圖29)來獲得當(dāng)(@x,@y)應(yīng)被定位于u=0時,沿v坐標(biāo)軸對u/v 坐標(biāo)系
原點的額外位移。參數(shù)u有可能隨著0到曲線終點在u坐標(biāo)軸上的投影而發(fā)生變化。對于給定的參數(shù)u,局部坐標(biāo)v(u)定義了局部u/v坐標(biāo)系內(nèi)曲線上的點。
v(u) = a + b*u + c*u2 + d*u3
考慮到<geometry>元素中說明的位移和旋轉(zhuǎn)參數(shù)@a、@b、(@x,@y) 和@hdg,在給定的u坐標(biāo)上最終的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>以下規(guī)則適用于三次多項式:
- 三次多項式可(may)被用于描述在測量數(shù)據(jù)可用的情況下道路的走向。
- 若局部u/v坐標(biāo)系與s/t坐標(biāo)系起始點一致,那么多項式參數(shù)系數(shù)為a=b=0。
- <geometry>元素的起始點(@x,@y)定位在局部u/v坐標(biāo)系的v軸上。
- 多項式參數(shù)a和b應(yīng)(should)為0,以確保參考線的平滑。?
7?參數(shù)三次曲線
參數(shù)三次曲線被用于描述從測量數(shù)據(jù)中生成的復(fù)雜曲線。參數(shù)三次曲線相較于三次多項式更為靈活,它能描述更多種類的道路線。與在x/y坐標(biāo)系中被定義或被當(dāng)成局部u/v坐標(biāo)系的三次多項式比起來,x坐標(biāo)與y坐標(biāo)的插值是通過它們自身的樣條相對于共同的插值參數(shù)p而進行的。
7.1?使用參數(shù)三次曲線生成道路
只需使用x軸和y軸便可以用參數(shù)三次曲線生成道路線。為保持三次多項式的連貫性,可利用u軸和v軸同時將它們計算到三次多項式里。
若無另外說明,插值參數(shù)p則在[0;1]范圍內(nèi)。另外,也可在 [0; @length of <geometry> ]的范圍內(nèi)對其賦值。與三次多項式相似,有著變量u和v的局部坐標(biāo)系可被任意放置和旋轉(zhuǎn)。
為簡化描繪,局部坐標(biāo)系可與s/t坐標(biāo)系在起始點(@x,@y)和起始方向@hdg上保持一致:
- u點在局部s方向,即沿參考線在起始點上。
- v點在局部t方向,即從參考線在起始點上作橫向偏移。
- 參數(shù)@aU、@aV和@bV應(yīng)為零。
如圖26、27和28所示,給參數(shù)@aU、@aV、 和@bV賦予非零值會導(dǎo)致s/t坐標(biāo)系的轉(zhuǎn)移和旋轉(zhuǎn)。
在為已知參數(shù)p定義曲線上的點后,在考慮相對于參數(shù)@aU、@aV、@bU、@bV、起始坐標(biāo)(@x,@y)和起始方向@hdg所規(guī)定的位移和方向的前提下,u值和v值會被轉(zhuǎn)換成x/y坐標(biāo)系里的值。
這里需注意的是:插值參數(shù)p和 <geometry> 元素中起始點(@x,@y)和與參數(shù)p相關(guān)的點(x(p),y(p))之間弧線實際長度是非線性關(guān)系。通常來說,只有起點和終點參數(shù)p=0和p=@length(選項@pRange=arcLength)與弧線的實際長度一致。
考慮到 <geometry> 元素中說明的位移和旋轉(zhuǎn)參數(shù)@a、@b、(@x,@y) 和@hdg,在給定的u坐標(biāo)上最終的x/y曲線位置如圖29所示。
在OpenDRIVE中,參數(shù)三次曲線用 <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>以下規(guī)則適用于參數(shù)三次曲線:
若局部u/v坐標(biāo)系與s/t坐標(biāo)系的起始點一致,那么多項式參數(shù)系數(shù)為@aU=@aV=@bV=0。
若@pRange="arcLength",那么p可(may)在[0, @length from <geometry> ]范圍內(nèi)對其賦值。
若@pRange="normalized",那么p可(may)在[0, 1]范圍內(nèi)對其賦值。
多項式參數(shù)aU、bU和 aV應(yīng)為0,以確保參考線的平滑。
?
總結(jié)
以上是生活随笔為你收集整理的opendrive中的几何形状的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蒙特卡洛模拟分析市场风险
- 下一篇: Eclipse语言包下载