道路の方向はさまざまで、オープングラウンドでの直線、高速道路での長くて細いカーブ、山岳地帯での狭い曲がり角などがあります。数学的な観点からこれらすべての道路線を正しくモデル化するために、OpenDRIVEはさまざまな幾何学的形状要素を提供します。図19は、道路基準線のジオメトリを定義する5つの可能な方法を示しています。
- 直線
- スパイラル曲線またはサイクロトロン曲線(曲率は直線的に変化します)
- 定曲率の弧
- 三次多項式曲線
- パラメトリック3次多項式曲線
1道路基準線
道路基準線は、OpenDRIVEの各道路の基本要素です。道路の形状やその他の属性を表すすべての幾何学的要素は、参照線に従って定義されます。これらの属性には、車線や標識が含まれます。
定義上、参照線はs方向に伸びますが、オブジェクトは参照線から横方向にオフセットされ、t方向に伸びます。
図20は、OpenDRIVEの道路のさまざまな部分を示しています。
- 道路基準線
- 道路上の別の車線
- 道路に沿って配置された道路の特徴(標識など)
OpenDRIVEでは、参照線のジオメトリは、<planView>要素の<geometry>要素によって表されます。
<planView>要素は、すべての<road>要素で使用する必要がある要素です。
次のルールが道路基準線に適用されます。
- すべての道路には基準線が必要です。
- 道路ごとに1つの参照線のみが存在できます。
- 基準線は通常、道路の中央にありますが、横方向のオフセットがある場合もあります。
- 幾何学的要素は、参照線に沿って昇順(つまり、s位置の増加)に配置する必要があります。
- <geometry>要素には、道路の幾何学的形状を追加で記述する要素のみを含める必要があります。
- 2つの道路が交差点で接続されていない場合、新しい道路の基準線は、常に先行道路または後続道路の<contactPoint>から開始する必要があります。基準線は反対方向に向けることができます。
- 参照線に跳躍があってはなりません。
- 基準線にねじれがあってはなりません。
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>
次のルールがアークに適用されます。
- 曲率はゼロであってはなりません。
5幾何学的形状要素から任意の車線を生成します
図25に示すように、OpenDRIVEで使用可能なすべての幾何学的形状要素を組み合わせることにより、さまざまなタイプの道路線を作成できます。
曲率の破損を回避するために、スパイラルを使用して直線を円弧や曲率の異なる他の要素と組み合わせることが推奨されます。
6次多項式(非推奨)
3次多項式は、測定データから導出された複雑な道路方向を生成するために使用できます。測定ペアは、x / y座標系の参照線に沿った測定座標の指定された順序で線分の多項式限界を定義します。
ローカル3次多項式は、道路の基準線を表します。線分の連続性、接線および/または曲率の連続性など、線分の限界での連続性条件を指定することにより、複数の3次多項式線分をマージし、全体に対してグローバルな3次スプライン補間曲線を生成できます。道路の方向。もう1つの利点は、多項式に沿ったパスがサイクロトロン曲線に沿ったパスよりも効率的であることです。
6.13次多項式の背景情報
次の方程式は、x / y座標系での3次多項式の補間を表しています
。y(x)= a + b * x + c * x2 + d *x³
式の多項式パラメーターa、b、c、およびdは、道路の方向を定義するために使用されます。パラメータadを使用して、座標系の各ポイントのy座標をx座標から計算できます。
図26は、次の値を使用したx / y座標系の3次多項式を示しています。
6.23次多項式を使用して道路を作成する
図27に示すように、x / y座標系で記述された3次多項式は、任意の方向の曲線セグメントを記述するのには適していません。所与のx座標上に2つ以上のy座標を有する曲線セグメントを処理するために、三次多項式セグメントは、ローカル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にあります(2つのポイントは<geometry>要素で詳しく説明されています)一貫しています。この選択の結果は、多項式パラメーターa = b = 0です(図28を参照)。追加オプションとして、0に等しくない多項式パラメーター@bを指定することにより、開始点(@ x、@ y)を基準にしてローカルu / v座標系を回転させることができます。ここで、アークタンジェントarctan(@b)は、ローカルのu / v座標系に対する多項式のヘッディング/ヨー角を定義します。0に等しくない多項式パラメーター@aを設定して(図29を参照)、(@ x、@ y)を配置する必要があるときにv座標軸に沿ったu / v座標系の
原点の追加の変位を取得できます。 u = 0で。パラメータ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では、3次多項式は<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>
次の規則が3次多項式に適用されます。
- 3次多項式は、測定データが利用可能な場合に道路のコースを記述するために使用できます。
- ローカルu / v座標系がs / t座標系の開始点と一致している場合、多項式パラメーター係数はa = b = 0です。
- <geometry>要素の開始点(@ x、@ y)は、ローカルu / v座標系のv軸上に配置されます。
- 参照線の滑らかさを確保するために、多項式パラメーターaとbは0である必要があります。
7パラメトリック三次曲線
パラメトリック三次曲線は、測定データから生成された複雑な曲線を表すために使用されます。パラメトリック3次曲線は、3次多項式よりも柔軟性があり、より多くの種類の道路線を記述できます。x / y座標系で定義された、またはローカルu / v座標系と見なされる3次多項式と比較して、x座標とy座標の補間は、共通の補間パラメーターpに関連する独自のスプラインによって実行されます。
7.1パラメトリック三次曲線を使用して道路を生成する
パラメトリック三次曲線を使用すると、x軸とy軸を使用するだけで道路線を生成できます。三次多項式の連続性を維持するために、u軸とv軸を使用して、それらを同時に計算して三次多項式にすることができます。
特に指定のない限り、補間パラメータpは[0; 1]の範囲です。また、[0; @length of <geometry>]の範囲内で割り当てることもできます。三次多項式と同様に、変数uとvを持つローカル座標系は、任意に配置および回転できます。
説明を簡単にするために、ローカル座標系は、開始点(@ x、@ y)および開始方向@hdgでs / t座標系と一致させることができます。
- 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の開始点(@ x、@ y)と<geometry>要素とパラメータp(x(p)、y( p))は非線形関係です。一般的に、開始パラメータと終了パラメータp = 0およびp = @ length(オプション@ pRange = arcLength)のみが、実際の円弧の長さと一致します。
<geometry>要素で指定された変位および回転パラメータ@ a、@ b、(@ x、@ y)および@hdgを考慮して、指定されたu座標での最終的なx / y曲線の位置を図29に示します。
OpenDRIVEでは、パラメトリック3次曲線は、<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>
次の規則がパラメトリック3次曲線に適用されます。
ローカルu / v座標系の開始点がs / t座標系と一致している場合、多項式パラメーター係数は@ aU = @ aV = @ bV = 0です。
@ pRange = "arcLength"の場合、pには[0、@ length from <geometry>]の範囲の値を割り当てることができます。
@ pRange = "normalized"の場合、pには[0、1]の範囲の値を割り当てることができます。
参照線の滑らかさを確保するために、多項式パラメーターaU、bU、およびaVは0である必要があります。