目次 — 知りたいところから読む
入力を変えて確かめる
実験パネルを開き、実行を押すとPythonを読み込みます。停止と初期値へのリセットができます。結果はこの端末内で計算します。Pythonのインストールは不要です。
下にあるローカル実行の手順は、配布ソースを再現するための任意の手順です。ブラウザ実験には不要です。
左右のずれと操舵方向を確かめる
「直線・横偏差1m」を実行し、Aに保存してください。「右側から復帰」では横偏差が負になり、初期の操舵方向が逆になります。初期横偏差の設定は後輪軸の位置です。方位を変えると前輪軸の横偏差は同じ値ではなくなるため、「初期方位差30度」で違いを確認してください。
Stanleyは前輪位置で経路とのずれを評価します。図の車軸線は後輪から前輪、前輪の点から経路への点線は投影への変位、緑の線はその経路接線です。端点を越えた場合の変位には縦方向も含まれますが、横偏差の計算は接線に垂直な成分だけです。時間グラフは前輪を緑、後輪を青(Aは橙破線)で区別します。
操舵要求は2つの補正の和
左向きの操舵と、経路左側への横偏差を正とします。後輪位置(x,y)、方位ψ、ホイールベースLから前輪位置は (x+L cosψ, y+L sinψ)。前輪から開いた折れ線経路へ最近傍投影し、その接線方位をψp、左法線方向の横偏差をefとします。
操舵要求は δ = wrap(ψp−ψ) − atan(k ef / (v+vs)) です。kはゲイン[1/s]、vは現在速度[m/s]、vsは低速緩和速度[m/s]。経路の左側で方位が揃っている場合、ef>0なので右へ操舵します。前輪が経路上でも車体が左へ向いていれば、方位補正は右向きです。
低速緩和速度はゼロ除算を避ける教材上の拡張です。原論文の基本式と区別し、ここでは0.1m/s以上を必須にしています。速度を大きくすると同じ横偏差への補正が弱くなります。「高ゲイン」は補正を強めますが、操舵変化率や離散時間の制約があるため、常に精度が上がるとは限りません。
再生・一時停止・コマ送りで「方位補正 + 横偏差補正 = 操舵要求 → 制約後」を確認できます。操作要求と実際に適用された操舵は別です。「小さい操舵上限」は急カーブを曲がるための角度が足りない例で、失敗や未完了も計算結果として表示します。
共通車両と比較指標
車両はPP/APP/RPPと共通の後輪軸基準・前進のみの運動学的自転車モデルです。0.05秒刻み、最大30秒。速度上限8m/s、加減速度±2m/s²、操舵変化率0.8rad/s、操舵上限の初期値±0.6rad。速度指令は一定で a=2(目標速度−実速度) を制限して適用します。区間中の操舵を一定にし、曲率に沿う移動を積分します。タイヤの滑り、センサ雑音、障害物、遅延補償は含みません。
共通の数値表にある横偏差・方位誤差とそのRMSは後輪軸基準です。Stanleyが使う前輪軸の誤差とは区別してください。方位誤差グラフは車体方位−経路接線であり、方位補正の符号は逆です。RMSはサンプル二乗値の台形時間積分を走行時間で割った平方根です。
終点までの残り経路と後輪軸の終点距離がともに0.25m以下、最終接線との方位差が0.15rad以下なら終点通過です。停止・駐車ではありません。経路距離が10mを超えると逸脱、30秒で時間上限。曲線では前輪が追従しても後輪が内側を通るため、共通の後輪終点判定を満たさない場合があります。未完了の通過時間は「—」。走行時間や完了状態が違う結果をRMSだけで順位付けしないでください。
試す順番
- 左側と右側の初期横偏差で操舵方向が反転することを確認する。
- 初期方位差を変え、前輪と後輪の横偏差の違いを調べる。
- ゲインと速度を一つずつ変え、操舵の大きさと時間変化を比較する。
- 急カーブと小さい操舵上限で、前輪追従・後輪指標・終了状態を別々に読む。
ブラウザ内で計算し、再生、A/B、リセット、共有、JSONダウンロードが使えます。計算時間はブラウザ実装の参考値で、実車の制御周期や性能を示しません。Stanley実車の操舵遅れ・ヨーレート・タイヤ補償まで再現するものではありません。
コメント
コメントの投稿にはログインが必要です
まだコメントはありません。