OpenSCENARIO とは
OpenSCENARIO は ASAM が策定するオープン標準で、自車や他の交通参加者が時間とともにどう振る舞うかを記述するためのフォーマットです。自動運転システムのシナリオベーステストにおける事実上の交換フォーマットとして広く使われています。
2 つの系統
Section titled “2 つの系統”同じ「OpenSCENARIO」という名前を共有していますが、中身はほぼ独立した 2 つの仕様があります。
- OpenSCENARIO 1.x — XML ベース。長年使われており安定しています。現時点で実運用のターゲットになるのは 1.3 リビジョン。
- OpenSCENARIO 2.0 / DSL — 抽象的・パラメトリック・確率的なシナリオを書ける専用言語。新しい仕様で、対応ツールが着実に増えています。
両者は互換ではなく、シミュレータや SOTIF / ISO 21448 のテスト基盤で実際に消費されるのは 1.x が中心です。
1.x ファイルの中身
Section titled “1.x ファイルの中身”OpenSCENARIO 1.x のファイルは、おおむね次の構成になっています。
- RoadNetwork — 通常は OpenDRIVE の
.xodrを参照。必要に応じて.osgbのようなシーングラフファイルも添える。 - Entities — 車両、歩行者、その他の登場物。
- Storyboard — 時系列に並んだ Act、Maneuver、Event。
- Init — 開始時の位置・速度や、パラメータの初期値。
小さなシナリオであれば XML を直接書いても読みやすいのですが、バリエーションが増えてくると XML の管理コストが急に上がります。ここを楽にするための作成ツールや DSL がいくつも生まれています。
実際の現場では、以下を組み合わせることが多いです。
- XML を手書き。小さなチームでの ground truth fixture などに向く。
- DSL やコード生成。OpenSCENARIO 2.0 DSL や Scenic、社内のスクリプトなどから XML を出力する方法。
- Python ライブラリ。scenariogeneration (旧
pyoscx/pyodrx) は OpenSCENARIO V1.0 〜 V1.3.1 の大半をカバーするプログラマティックな API を提供。 - シミュレータ付属のシナリオエンジン。CARLA ScenarioRunner は CARLA 用のシナリオ実行エンジンで、Python インターフェースと OpenSCENARIO 1.0 / 2.0 をサポート。
- GUI ベースの作成ツール。MathWorks RoadRunner (XML / DSL 両対応)、Truevision Designer (OpenDRIVE 中心)、Blender Driving Scenario Creator (Blender アドオン)、そして drawtonomy (ブラウザホワイトボード + 部分的なエクスポート)。
実運用では「シナリオのロジックは Python ライブラリや DSL で書き、道路ネットワークは GUI ツールで作る」といった分担になることが多いです。
drawtonomy の位置づけ
Section titled “drawtonomy の位置づけ”drawtonomy はブラウザ上で動く 2D ホワイトボードで、OpenSCENARIO 1.3 と OpenDRIVE 1.8 の 一部のみ をエクスポートできます。エクスポーターのドキュメント によれば、以下のような使い方ができます。
- レーン、交差点、車両、歩行者、信号、路面標示を 2D 俯瞰のキャンバスに配置できる。
.xosc+.xodr+run.shをひとまとめにした zip を書き出し、esmini で簡単なシーンを再生できる。
ただし、エクスポーターがカバーするのは仕様の一部です。SDK の roadmap にも書かれていますが、次のような項目には対応していません。
- OpenDRIVE の
<junction>要素 - 標識を OpenDRIVE の
<signal>として出力すること - 加減速プロファイル、停止・滞留イベント、信号と連動した経路、車線変更アクション、複雑な Storyboard
- 条件付きトリガ、パラメータ走査、カスタムコントローラ、ML ベースのコントローラ
そのため、drawtonomy の OpenSCENARIO 出力は「下書き」と考えるのが妥当です。手書き XML のたたき台にしたり、シナリオの説明用の図として使ったりするのに向いていて、本格的なシナリオ作成ツールとして使うものではありません。