赤信号なら止まり、前車が遅ければ追従し、安全な空間があれば車線変更する。文章にすれば簡単だが、実際の道路では「赤信号らしいが一部が隠れている」「前車が曲がるのか停車するのか分からない」「隣車線の車が譲る意図を示したが、減速は始めていない」という曖昧さが同時に現れる。自動運転車は、この不完全な観測から数秒先の行動様式を決めなければならない。

Behavior Planning(行動計画)は、認識と軌道制御の間にある。入力は自車状態、道路構造、信号、追跡物体、予測、運行設計領域(ODD)などで、出力は「追従」「停止」「合流」「譲る」「最小リスク状態へ移る」といった離散的な行動と、その行動が許す車線・速度・時間・安全余裕である。ハンドル角を直接出す層ではない。下流の経路・軌道計画器へ、何を実現すべきか、何をしてはいけないかを渡す層だ。

ステレオカメラ式運転支援システムを搭載したスバルWRX S4運転支援機能を搭載した市販車の例

画像: Subaru WRX S4 2.0GT-S EyeSight(Tokumeigakarinoaoshima, CC BY-SA 4.0)、Wikimedia Commons。車両前部の外観写真であり、本稿の状態機械や特定製品の内部実装を示すものではない。

30秒で分かる結論

1. 行動状態機械:判断を見える形にする

次図は高速道路支援を単純化した有限状態機械(FSM)である。通常走行から、遅い前車を検出して追従し、隣車線の安全を確認して車線変更し、目標車線へ収束すれば通常走行へ戻る。センサー異常、ODD逸脱、計画不能なら、どの状態からでも縮退・停止へ遷移する。

自動運転Behavior Planningの有限状態機械待機、巡航、前車追従、車線変更準備、車線変更、最小リスク操作の各状態と、条件付き遷移を示す概念図。 待機Standby 巡航Cruise 前車追従Follow 車線変更準備ギャップ・法規・経路を確認 車線変更軌道を実行・継続監視 縮退/最小リスク操作減速・車線内停止・安全な退避 作動条件成立遅い前車追越し候補安全ギャップ完了中止/追従ODD逸脱・異常 全状態で、認識鮮度・軌道可行性・安全監視を評価し続ける

図1 — Duskcoil作成の行動状態機械。教育用に遷移を単純化した概念図であり、SUBARU EyeSightを含む特定製品の実装・安全仕様を表すものではない。

FSMは状態集合S、入力またはイベント集合E、遷移関数

s_{t+1}=\delta(s_t,e_t)

で表せる。利点は明快さである。「現在は車線変更準備」「前方TTCが閾値を下回ったため中止」というログを人が読める。遷移表から要件と試験項目を作りやすく、法規・安全制約を明示できる。ACCやレーンキープのように状態が限られる機能では今も強力だ。

難点は例外の組合せである。右追越し、左合流、工事、緊急車両、料金所、センサー縮退、運転者介入を状態として直積すると、状態数と遷移数が急増する。二つの機能が同時に状態を書き換えると、存在しないはずの組合せへ入る。対策は、階層化FSM、並行領域、状態所有権、遷移の優先順位、タイムアウトを定義し、ガード条件を副作用のない判定にすることだ。

たとえば車線変更開始ガードを

g=ODD\land RouteNeed\land GapSafe\land PerceptionFresh\land TrajectoryFeasible

と置く。どれか一つが偽なら開始しない。しかしGapSafeを真偽一値へ潰す前に、相対距離、速度、推定共分散、予測仮説の重みを記録しなければ、なぜ判断が変わったか追跡できない。

2. Behavior Tree:優先順位と再利用を木で表す

Behavior Tree(BT)は、上から子を評価する制御木である。代表的なノードは次の三つである。

BTは「緊急状態なら停止、そうでなければ交差点対応、そうでなければ巡航」のような優先順位を構造で見せられる。サブツリーを「安全な停止」「保護左折」「駐車」へ再利用しやすく、FSMの全状態間遷移より変更の影響範囲を狭めやすい。ロボット分野ではNav2などにも採用例があり、回復行動の組立てと相性がよい。

ただし木にすれば自動的に安全になるわけではない。毎周期rootからtickするReactive型では、条件が境界付近で揺れて行動が往復する。ヒステリシス、最低継続時間、完了条件を設ける必要がある。複数の葉が共有blackboardを書き換えると、隠れた状態が生まれ、FSMより分かりにくくなる。Running中のactionを中断するとき、下流plannerへcancelを送り、古い軌道が残らないことも仕様化する。

3. POMDP:見えない意図まで確率として考える

合流車の運転者が「譲る」のか「先に入る」のかは、カメラに直接映らない潜在状態である。遮蔽の向こうに歩行者がいる可能性も観測だけでは確定しない。部分観測マルコフ決定過程(POMDP)は、状態s、行動a、観測o、遷移確率T(s'|s,a)、観測モデルO(o|s')、報酬R(s,a)を用いる。

直接見えない状態について、信念分布b_t(s)=P(s_t=s\mid o_{1:t},a_{1:t-1})を持つ。行動後に観測o_{t+1}を得た信念更新は概念的に

b_{t+1}(s')=\eta O(o_{t+1}|s')\sum_s T(s'|s,a_t)b_t(s)

となる。\etaは確率和を1にする正規化定数である。そして、期待割引報酬

\pi^*=\arg\max_\pi E\left[\sum_{k=0}^{H}\gamma^k R(s_{t+k},a_{t+k})\right]

を最大化する方策\piを探す。衝突へ非常に大きな負報酬、交通規則違反、急加減速、進捗遅れへ異なるペナルティを置ける。

魅力は不確かさを判断の中心へ置ける点だ。相手が譲る確率が低いなら待ち、観測のため少し前進して視界を得るinformation-gathering actionも選べる。しかし連続状態、多数の交通参加者、長い時間地平では厳密解が困難になる。報酬の重みを変えるだけで、危険だが積極的、または永遠に動かない方策にもなる。実装では状態を絞ったオンライン探索、Monte Carlo Tree Search、学習した価値関数、ルールで限定した候補行動などを組み合わせる。

4. 一つの万能方式ではなく、責務を分けて組み合わせる

方式 強み 苦手 向く使い方
FSM / 階層FSM 追跡性、決定性、要件との対応 状態・遷移の爆発 ODD管理、モード、縮退、単純ADAS
Behavior Tree 優先順位、再利用、回復行動 blackboard依存、tick時の揺れ タスク分解、例外処理、複合行動
ルール/Rulebook 法規・安全優先度を説明可能 全状況列挙は不能 越えてはいけない制約、候補の順位付け
MDP/POMDP 将来と不確実性を一体評価 計算量、モデル・報酬の妥当性 合流、交差点、相互作用
模倣学習・強化学習 複雑な相互作用をデータから近似 分布外、説明、保証 候補生成・予測・限定ODD内の方策

現実的な構成は、FSMでシステムモードと故障縮退を管理し、BTで行動優先順位を組み、POMDPや学習器で合流候補を評価し、最後に安全ルールで拒否する、といったハイブリッドになる。学習器が提案し、検証可能な安全包絡が許可する構造なら、役割と責任を切り分けやすい。

5. 認識・予測との接続:点ではなく分布を受け取る

認識器が「車、位置x,y」だけを返すと、Behavior Planningは過信する。必要なのは、時刻、座標系、物体ID、寸法、速度、加速度、存在確率、クラス確率、共分散、遮蔽、センサー健全性である。特徴点追跡Optical Flowから運動を推定しても、画像上の動きと三次元速度は同一ではない。

物体iの将来軌道を一つへ決め打ちせず、複数仮説

P(\tau_i|z_{1:t})=\sum_m w_m P(\tau_i|m,z_{1:t}),\quad \sum_m w_m=1

として、直進、右左折、車線変更などのmode mを保持する。判断側は「最頻値だけなら安全」ではなく、低確率でも衝突が重大な仮説を評価する。物体の共分散が大きいときは安全余裕を増やし、観測が古ければ減速する。追跡IDが入れ替わったとき、相手の意図履歴を別車両へ引き継がないことも重要だ。

6. 経路計画・軌道生成・MPCとの接続

Behavior Planningが「左車線へ変更」を選んでも、そこに物理的に走れる軌道があるとは限らない。経路計画は、地図と障害物から通れる幾何経路を探索する。軌道生成は時刻付きの位置・速度・加速度を作る。MPCは車両モデルと制約の下で、予測区間の操作量を最適化する。

MPCの代表的な目的関数は

J=\sum_{k=0}^{N-1}\left(\|x_k-x_k^{ref}\|_Q^2+\|u_k\|_R^2+\|\Delta u_k\|_S^2\right)+\|x_N-x_N^{ref}\|_P^2

である。Behavior Planningは参照x^{ref}だけでなく、目標車線、速度上限、停止線、通行禁止領域、快適性、終了時刻を渡す。下流がinfeasibleを返したら、無理な操作を強制せず、別行動を再選択する。重要なのは双方向性だ。

  1. 認識・予測が世界モデルと不確かさを更新する。
  2. Behavior Planningが候補行動と優先度を作る。
  3. 経路・軌道計画が運動学・力学的可行性を検査する。
  4. MPCが操舵・駆動・制動を求め、追従可能範囲を返す。
  5. 安全監視が全段を独立に監視し、期限超過や逸脱で縮退させる。

計画周期が10 Hzでも、認識が300 ms古ければ実質的な判断は古い。各メッセージへ計測時刻と有効期限を持たせ、end-to-endのageを監視する。座標変換の時刻違い、plannerの前回応答、キャンセル済み軌道の残留は典型的な統合バグである。

7. 現行ADAS・自動運転で何が起きているか

SUBARU EyeSightはステレオカメラを中核とする運転支援技術で、前方対象の認識を使い、衝突回避支援や追従などを行う。ここで重要なのは、製品名から内部のBehavior Planning方式を断定しないことだ。FSM、BT、学習器の採否は公開された機能説明だけでは分からない。取扱説明書が定める天候、視界、速度、道路条件、運転者監視が実際の使用境界になる。

レベル2の高速道路支援は操舵と加減速を同時に支援しても、運転者が周囲を継続監視する。NHTSAもLevel 2 ADASを、速度と操舵を支援するが人が常に運転へ関与するシステムとして区別している。一方、Mercedes-Benz DRIVE PILOTのような限定条件のLevel 3では、作動中の運転タスクをシステムが担い、限界時には運転者へ介入を求める。ドイツでは2025年に一定条件下で95 km/hまでの認可が案内されたが、道路、天候、車種、法域を越えて一般化してはいけない。

Waymoのような限定地域の無人運行では、行動計画だけでなく、地図、冗長センサー、フリート運用、遠隔支援、ODD管理、安全事例が一体となる。同社は人間ベンチマークとの衝突率比較と再現用データを公開しているが、公開値を「すべての都市・天候で安全」の証明へ拡張できない。比較対象の地域、道路分布、走行距離、報告基準、信頼区間を読む必要がある。

8. 安全設計:最も賢い行動より、危険を越えない行動

行動候補aの効用が高くても、安全制約C_jを満たさなければ拒否する構成を考える。

a^*=\arg\max_{a\in A_{safe}} U(a),\qquad A_{safe}=\{a\in A\mid C_j(a)\le0,\ \forall j\}

A_{safe}が空なら、planner failureを握り潰さず最小リスク操作へ移る。安全制約には衝突余裕、停止可能距離、路外逸脱、車両安定性、信号・通行区分、アクチュエータ限界を含める。制約同士が両立しない状況もあるため、法規、安全、他者配慮、進捗の優先順位をRulebookとして明示する。

ISO 26262はE/Eシステムの故障に起因する危険を扱い、ISO 21448(SOTIF)は故障がなくても認識性能不足や仕様不足から生じる不合理なリスクを扱う。濃霧で対象を見落とす、工事誘導員の身振りを誤解する、合理的に予見できる誤使用が起きる、といった事例はBehavior Planningの前提を崩す。さらに地図改ざんや偽V2X情報にはサイバーセキュリティが必要であり、V2X入門で扱う署名は内容の真実性まで保証しない。

独立したsafety supervisorは、主plannerと同じ認識結果・同じ故障モードへ全面依存させない。衝突までの時間、走行可能領域、速度、制御追従誤差、計算期限、センサー健全性を監視し、必要なら主判断を上書きする。非常停止や最小リスク操作の経路は、通常行動のソフトウェア更新後にも再検証する。

9. 評価指標:成功率一つでは足りない

行動計画の評価は、目的地到達率と平均旅行時間だけでは足りない。

まれな事象を平均へ埋めない。失敗確率pを単純な独立Bernoulliとして上限評価するだけでも、ゼロ失敗を観測したからp=0とはならない。必要な信頼水準と暴露量を事前に置き、シナリオの難易度と走行分布を合わせる。公道距離は現実性を与えるが、危険な希少事象を効率よく集められないため、シミュレーション、閉鎖コース、ログ再生と組み合わせる。

10. 実験手順:小さな状態機械から安全事例まで

  1. ODDと責任を定義する:道路種別、速度、天候、照度、地図、通信、運転者要求と、Level 0〜5の責任境界を明記する。SAE自動運転レベル入門のDDT・OEDR・fallbackを機能単位で割り当てる。
  2. 行動語彙を固定する:stop、follow、yield、merge、lane change、pull overを定義し、開始条件、完了条件、abort条件、timeoutを表にする。
  3. インターフェースを固定する:座標系、timestamp、共分散、予測仮説、軌道ID、cancel応答、計算deadlineをスキーマとして管理する。
  4. 決定表と形式検査を作る:到達不能状態、循環、優先度逆転、同時に真になる遷移、最小リスク状態へ到達できない経路を検出する。
  5. 単体・プロパティ試験を行う:「赤信号かつ停止可能なら停止線を越えない」「認識が期限切れなら加速しない」のような不変条件をランダム入力でも検査する。
  6. ログ再生を行う:認識出力を固定してplanner版だけを差し替え、行動差分を比較する。ground truthのないログでは、人の運転を唯一の正解にしない。
  7. シナリオ変分を作る:相対速度、遮蔽率、摩擦、照度、遅延を境界の両側へ掃引し、metamorphic testで小さな入力差が不合理な判断反転を起こさないか調べる。
  8. 故障を注入する:カメラ停止、追跡ID swap、GNSS jump、地図ずれ、V2X偽情報、MPC timeout、アクチュエータ制限を注入し、縮退を確認する。
  9. 閉鎖コースから公道へ段階移行する:安全運転者、遠隔停止、試験中止条件を明文化し、ソフトウェア版・車両・地図・天候を記録する。
  10. 反実仮想と実車再現を突き合わせる:介入がなければ何が起きたかをシミュレーションする場合、モデル誤差を示し、代表事例を閉鎖コースで再現する。
  11. 変更影響を追跡する:認識モデル更新でも行動分布は変わる。要件→設計→コード→テスト→安全主張をつなぎ、差分に応じて回帰範囲を決める。

最後に残すべきログは、単なる「車線変更した」ではない。入力オブジェクトと時刻、信念または予測仮説、候補行動、各コスト、安全制約の余裕、棄却理由、選択結果、下流の可行性、実制御と追従誤差までを同じtrace IDで結ぶ。これがなければ、フィールドで一度だけ起きた判断を再現できない。

面白い話:上手な運転は「譲る」と「進む」の境界にある

初心者の自動運転は、衝突を避けようとして交差点で永遠に止まりやすい。すべての他車が完全停止するまで待つ方策は、静止画上では安全に見える。しかし後続渋滞を作り、相手の期待を外し、かえって危険な追越しを誘発することがある。反対に、人の「アイコンタクト」を数値化しようとして、車体のわずかな減速を譲りの確約と解釈すれば危険だ。

行動計画の難しさは、物理法則だけでなく他者がこちらの行動を予測して動くことにある。自車が少し前へ出れば相手の予測も変わり、それを見て自車の信念も変わる。この閉ループ相互作用こそ、単純なif文からPOMDP、game theory、学習型plannerへ研究が広がる理由である。それでも最終製品では、「なぜ進んだか」「何を見たら止まるか」を試験可能な言葉へ戻す必要がある。

一次資料・関連資料

#Behavior Planning #自動運転 #ADAS #FSM #Behavior Tree #POMDP #経路計画 #MPC #ODD