コンテンツにスキップ

運転シナリオの抽象度 — 機能・論理・具体

ADAS(先進運転支援システム)や AD(自動運転)のシナリオベーステストでは、シナリオを 3 つの抽象度で分けて扱うのが標準的なやり方です。これは PEGASUS プロジェクト に由来し、いまではテストカタログ・安全性ケース・シナリオライブラリのほぼすべてで前提になっています。

  1. 機能シナリオ(functional scenario) — 自然言語による定性的な記述。
  2. 論理シナリオ(logical scenario) — パラメータの「範囲」を持つ構造化記述。
  3. 具体シナリオ(concrete scenario) — すべてのパラメータが具体値に固定された 1 つのインスタンス。

このページは中立的な入門記事として、それぞれの抽象度の意味、ODD(運用設計領域)との関係、対応するフォーマット、そして drawtonomy が関わる範囲を整理します。

機能シナリオ は、運転状況を自然言語で定性的に書いたものです。登場物・道路レイアウト・行動を述べますが、数値には踏み込みません。

例:「片側 2 車線の高速道路で、左レーンを走るより速い車両が、自車を追い越した直後に右レーンへカットインする」

機能シナリオは、テスト計画書、設計レビュー資料、スライドデッキ、論文の図、安全性ケースの説明文といった「人間どうしの伝達」のレベルで使われます。

論理シナリオ は、機能シナリオを構造化したうえで、各変数に パラメータ範囲 を与えたものです。自車の初速、車間距離、TTC(衝突余裕時間)、相手車両の相対速度、天候、道路曲率といった各パラメータが、単一の値ではなく範囲・分布を持ちます。

例:「自車速度 ∈ [70, 130] km/h、カットイン車両の相対速度 ∈ [+10, +30] km/h、カットイン開始時の TTC ∈ [1.5, 4.0] 秒、…」

論理シナリオは、テストキャンペーンでサンプリング・パラメータ走査・探索の対象になるレベルです。このレイヤを直接扱うツール・DSL には、Scenicscenariogeneration(pyoscx / pyodrx)、OpenSCENARIO 2.0 / DSL などがあります。

具体シナリオ は、論理シナリオから 1 点を取り出した、すべての値が固定されたインスタンスです。シミュレータで実際に走るのも、テストコースで再現するのもこのレベルです。

例:「自車 90 km/h、カットイン車両の相対速度 +20 km/h、カットイン開始時 TTC = 2.5 秒、路面:乾燥アスファルト、…」

OpenSCENARIO 1.x の XMLesmini でのリプレイ、各種リプレイツールが扱うのは基本的にこの具体レベルです。

ODD(運用設計領域、Operational Design Domain) は、ある運転機能が動作することを想定している条件の集合です(対象道路の種類、天候、時間帯、地理的範囲など)。シナリオの 3 抽象度はそれぞれ ODD と切り離せません。

  • 機能シナリオは ODD の 内側 で書きます(例:「晴天の高速道路」)。
  • 論理シナリオはパラメータ範囲を ODD に 整合させて 与えます(高速道路限定なら速度範囲もそれに合わせる)。
  • 具体シナリオは ODD の 内側に位置するインスタンス、または ODD の境界を意図的に攻めるエッジケースとして選ばれます。
  • PEGASUS — 機能・論理・具体という分類を整理したドイツの研究プロジェクト。ここで使う語彙の出どころ。
  • ISO 21448(SOTIF) — 意図された機能の安全性。ODD と組み合わせて「機能が ODD の中で意図どおり振る舞う」ことを論証するための背骨に、シナリオの分類が使われます。
  • ASAM OpenSCENARIO — 1.x は具体シナリオ向け、2.0 / DSL は論理シナリオ向けという棲み分け。
  • ASAM OpenDRIVE — どの抽象度のシナリオも、静的な世界としてこれを参照します。

drawtonomy は論理シナリオのサンプラーでも、具体シナリオの実行エンジンでもありません。あくまで運転シーン向けのブラウザホワイトボードです。それでも、3 つの抽象度のうち以下の場面では使えます。

  • 機能シナリオの図解。テスト計画書、設計レビュー、安全性ケース、スライド、論文の図に載るシナリオの図は、見た目としては機能シナリオの可視化そのものです。drawtonomy はこの図を作るのに向いています。
  • 論理シナリオの「絵」。論理シナリオは値の範囲をパラメータ表で持ちますが、読者がまず見たいのは「どんなレイアウト・どんな登場物・どう動く」というシーンの形です。drawtonomy はこの絵を担当します。パラメータ表そのものは DSL や表計算で持つことになります。
  • 具体シナリオを書き出す前の下書き。これから OpenSCENARIO 1.x の XML を手書きしようとしているとき、drawtonomy で 2D のスケッチを作り、その出発点となる .xosc を書き出す動線があります。詳しくは OpenSCENARIO を書く前の下書き を参照してください。

実運用での論理・具体シナリオの本格的な著述 — パラメータ走査、条件付きトリガ、複雑な Storyboard — は、Scenicscenariogeneration、手書き OpenSCENARIO XML、または OpenSCENARIO 2.0 / DSL の領域です。drawtonomy が担当するのは「絵」であって、テストロジックではありません。

同じシナリオテストエコシステムの中で

Section titled “同じシナリオテストエコシステムの中で”