車両制御 — 計画した軌道を正確になぞる

経路計画が描いた「理想の線」の上を、慣性も遅れもある実物の車体に走らせる — それが制御の仕事です。誤差を打ち消す PID、幾何で少し先を狙う Pure Pursuit、未来ごと最適化する MPC。3つの制御思想を、同じ「曲がる」課題の上で動かして比べます。

1. 制御は自動運転の「最後の1メートル」を受け持つ

認識 → 予測 → 計画 → 制御。パイプラインの最終段である制御器は、計画層が出力した参照軌道(位置・速度の列)を受け取り、ステアリング角・アクセル・ブレーキという物理的な操作量に変換します。上流がどれほど賢い軌道を描いても、それをなぞれなければ車は車線を外れます。

制御ループは通常 10〜100 Hz で回り、毎周期「いまの誤差」を測って操作量を更新します。難しさの源泉は、車がすぐには言うことを聞かないこと — 操舵には応答遅れがあり、タイヤの力には上限があり、乗員は急な加減速を嫌います。

POINT — 横方向と縦方向 車両制御は慣習的に、車線内の位置を保つ横方向制御(ステアリング)と、速度・車間を保つ縦方向制御(駆動・制動)に分けて設計される。このページの実験はすべて横方向制御。縦は PID や IDM 系のモデルで組まれることが多い。

2. 車両を2輪に潰す — 自転車モデル

制御則を設計するには、まず「ハンドルを切ると車がどう動くか」の数理モデルが要ります。低速域の定番が運動学的自転車モデル。左右のタイヤを1本にまとめ、前輪の舵角 δ とホイールベース L だけで旋回を記述します。前後輪それぞれの車軸に垂直な線を引くと1点 — 旋回中心 (ICR) — で交わり、車はその点を中心とした円弧上を走ります。

自転車モデル — 舵角が旋回半径を決める
前後の車軸に垂直な線(破線)の交点が旋回中心。舵角を小さくすると半径 R = L/tan δ が急激に大きくなり、円はほとんど直線に見えます。半透明の車は、その舵角を維持したときの軌道を周回しています。
R = L / tan δ     θ̇ = (v / L) tan δ L = ホイールベース(実験では 2.7 m)。「ハンドルを切る」とは「曲率 1/R を選ぶ」ことに等しい

高速域ではタイヤの横すべり(スリップ角)が無視できなくなり、力学的自転車モデルやタイヤモデルに拡張しますが、「舵角 = 曲率の選択」という骨格は同じです。以降の3つの制御器は、いずれもこのモデルの上で「どの曲率を選ぶか」を決める方法だと読めます。

3. 誤差をフィードバックで消す — PID 制御

最も古典的で、いまも現場の至る所にいるのが PID 制御。車線中心からの横ずれ e を測り、その現在値(P)・累積値(I)・変化率(D)の重み付き和で操作量を決めます。

u(t) = Kp e(t) + Ki ∫0t e(τ) dτ + Kd de(t)/dt e = 車線中心からの横偏差。u はここでは横方向の操舵指令(±5 m/s² 相当で飽和)

下の実験は、直線とカーブが混ざったコースを一定速度で走る車の車線維持。初期状態では車線から 2.2 m ずれた位置からスタートします。①まず Kp だけを上げてみてください — 中心に戻ろうとしては行き過ぎ、いつまでも振動します。②Kd を加えると行き過ぎる前にブレーキがかかり、振動が減衰。③横風をオンにすると、PD だけでは押し戻しきれず一定の残り偏差(定常偏差)が時系列グラフに現れます。④Ki を少し入れると、たまり続けた誤差の積分が風を打ち消し、偏差がゼロに戻ります。

PID 車線維持 — 3つのゲインの役割分担
上=コースを走る車(破線が車線中心)、下=横偏差 e の時系列。赤破線は車線境界 ±1.75 m。Kp のみ=減衰しない振動、+Kd=減衰、横風の定常偏差は Ki だけが消せます。積分は ±1.5 でクランプ(アンチワインドアップ)。
POINT — ゲインの直感 P は「いまのずれに比例して戻す力」(強すぎると振動)、D は「ずれの勢いに逆らうダンパ」(振動を抑えるが雑音に敏感)、I は「ずっと残っている誤差の恨みを晴らす項」(定常偏差を消すが、効かせすぎると大回りの振動を生む)。PID は誤差の「現在・未来・過去」を見ている、と要約される。

4. 幾何で「少し先」を狙う — Pure Pursuit

PID は経路の形を知らず、いまの誤差しか見ません。Pure Pursuit(純追跡)は一歩進んで、経路上の少し先の点(注視点)を狙います。自車から距離 Ld(ルックアヘッド距離)だけ先にある経路上の点を選び、「いまの向きのまま、その点を通る円弧」を描いてその曲率で舵を切る — 毎周期これを繰り返すだけの、驚くほど単純な幾何制御です。

κ = 2 sin α / Ld     δ = tan−1(κ L) α = 車の向きから見た注視点の方位角。円弧の幾何(弦 Ld・開き角 2α)から曲率が一発で出る
Pure Pursuit — 注視距離 Ld のトレードオフ
車を中心とした円が Ld、オレンジの点が注視点、緑の破線が「いまから走る円弧」。水色の軌跡と経路のずれに注目 — Ld が短いとカーブに忠実だが操舵遅れ(0.25 s の一次遅れを模擬)と相まって振動気味、長いと滑らかな代わりにコーナーの内側をショートカットします。速度を上げると短い Ld の振動が激しくなります。
POINT — Ld は速度で変える 実装では Ld = k·v のように速度に比例させるのが定石。低速では短くして忠実に、高速では長くして安定に。それでも「忠実さ ⇔ 滑らかさ」のトレードオフ自体は消えない。前輪位置の横偏差と方位偏差を直接使う Stanley 法(DARPA Grand Challenge 優勝車)は、同じ幾何系譜の別解。

5. 未来を予測して最適化する — モデル予測制御 (MPC)

PID も Pure Pursuit も「アクチュエータの限界」「障害物」「乗り心地」といった制約や複数目的を明示的には扱えません。MPC(Model Predictive Control)は発想を変えます。車両モデルでホライズン(数秒先)までの挙動をシミュレーションできるのだから、毎周期こう解けばよい:

  1. いまの状態から、ホライズン先までの操作列の候補を多数考える
  2. 各候補の軌道をモデルで予測し、コスト(経路逸脱・障害物・急操舵…)を計算
  3. 最良の操作列を選ぶ — が、実行するのは最初の1歩だけ
  4. 次の周期で、新しい観測から全部やり直す

この「解いては1歩、解いては1歩」を receding horizon(後退ホライズン)と呼びます。予測が多少外れても毎周期作り直すので、フィードバックとしての頑健さも保たれます。

minu0…uN−1 Σk=0N−1 ( ‖xk − xkref‖2Q + ‖uk‖2R ) 制約: xk+1 = f(xk, uk)(車両モデル), |uk| ≤ umax。最適化して u0 だけ実行し、次周期に再計画
MPC の直感 — ホライズンの長さが「先読み」を決める
灰色の細線=毎周期評価される候補軌道群、緑=選ばれた最良軌道。0.35 秒ごとに再計画(「再計画!」の点滅)。黄色の縦線がホライズンの果て — その先の障害物は存在しないのと同じです。0.5 秒前後まで縮めると障害物の直前で慌てて舵を切り、間に合わず衝突も起きます。3 秒にすれば早めに滑らかに回避。ホライズンを戻すと衝突カウントはリセットされます。
一歩先へ — 実車の MPC 実装では車両モデルを参照軌道まわりで線形化し、二次計画(QP)として 20〜50 ms 周期で解くのが主流。ホライズンは 2〜6 秒・10〜50 ステップ程度。Apollo や Autoware など公開スタックでも横方向 LQR/MPC +縦方向 PID のハイブリッド構成が見られる。長いホライズンは賢いが計算時間と予測誤差が増える — ここにもトレードオフがある。

6. 3つの系譜と、現実の壁

手法系譜考え方長所短所
PID誤差フィードバック偏差の P・I・D の重み和単純・実績豊富・モデル不要先読みなし。ゲインが速度域ごとに要調整
Pure Pursuit幾何制御注視点を通る円弧を追う頑健で滑らか、実装が軽いLd 調整が難所。コーナー内側をショートカット
Stanley幾何制御前輪の横偏差+方位偏差経路への収束が速い高速・雑音に敏感になりやすい
LQR最適制御線形モデルで最適ゲインを解析的に導出理論保証・計算が軽い制約(飽和・障害物)を扱えない
MPC最適制御ホライズン最適化+毎周期再計画制約・多目的・先読みを明示的に扱える計算コスト大。モデル精度に依存
注意 — 遅延とアクチュエータ限界が理論を裏切る 教科書の制御則は「指令した瞬間にその舵角になる」前提だが、実車では操舵系の応答遅れ(数十〜数百 ms)・舵角と舵角速度の上限・センサや計算の遅延が必ず挟まる。遅延はフィードバックループの位相を回し、紙の上では安定だったゲインで発振させる。上の PID 実験の操舵飽和(±5 m/s² 相当)や Pure Pursuit の一次遅れは、その縮図。実務では遅延補償(予測してから制御する)やゲイン余裕の確保が設計の半分を占める。

7. まとめ