CommonRoad シナリオ作成・エクスポートと planner 結果の再生
シナリオを描く、あるいは手元のファイルを開く。CommonRoad XML として書き出す。 自作の motion planner で解く。その結果を drawtonomy で再生し、公式 checker の 判定をバッジで見る。
CommonRoad はミュンヘン工科大学が公開している モーションプランニング研究のベンチマーク形式です。lanelet で表した道路網、 周囲の交通を記録した軌跡、そして ego に解かせる planning problem を持ちます。 drawtonomy はその流れの両端、つまり作る側と見る側です。
入口は 3 つ
Section titled “入口は 3 つ”どの行も行き着く先は同じです。planner が読む CommonRoad XML、再生できる solution、そしてバッジに載る判定です。
| 出発点 | やること | 得られるもの |
|---|---|---|
| 自分で描いたシナリオ | レーン・車両・初速を置き、ego に印を付けてゴールレーンを選ぶ | lanelet と dynamicObstacle の軌跡と planningProblem を持つ CommonRoad 2020a シナリオ |
| 手元の OpenSCENARIO ファイル | .xosc と .xodr をドロップする、または ?open= で GitHub から直接開く | 同じ書き出しが、既に持っているシナリオから得られる。手順は シナリオを書き出す |
| CommonRoad ベンチマークシナリオ | .xml をキャンバスにドロップする | 編集できるキャンバス上のシナリオ。drawtonomy が描かない要素はそのまま持ち越されるので、編集せずに再エクスポートすれば元のファイルに戻る |
solution ができたあとの再生はどれも同じです。solution.xml をドロップすると
ego が planner の軌跡をたどり、自分が描いた ego はゴーストとして残ります。
隣に .verdict.json を置けば run バッジが RUN PASS か RUN FAIL で終わり、
tooltip とトーストに Checker PASS 4/4 や Checker FAIL 2/4、通らなかった
検査・関係した障害物・時刻範囲が tooltip とタイムラインに出ます。
読者別の最短ルート
Section titled “読者別の最短ルート”- motion planner を開発していて、ベンチマークコーパス以外のシナリオが欲しい
→ 自作 planner をつなぐ。
pip installから始まり、同じシーンで naive planner が FAIL、IDM planner が PASS になるところまで通します。 - OpenSCENARIO 資産があり、それを planner のテストに使いたい → まず シナリオを書き出す、 続けて 自作 planner をつなぐ。
- 公式の判定と、その根拠を証拠として残したい → Verdict リファレンス に 4 つの検査・サイドカーの形式・バッジの読み方があります。

再生前: Ego の印を付けた車両と、クリック 1 回で置いた 50 m のゴール区間。 これが planning problem のすべて。

描いたままのシナリオ: 108 km/h で走る反応しない ego が t = 12.9 s で割り込みに 出会い、バッジは RUN FAIL。これが planner に解かせる問題。

Export で CommonRoad シナリオ XML を書き出す。自分が描いた ego を参照解として 書き出す項目も並んでいる。

書き出したファイルを planner なしで commonroad-io が再生したところ。描いた
ままの ego は同じ 12.9 s で割り込みに当たる。

reactive planner が解いてゴールまで走るところ。障害物衝突・道路境界・ ゴール到達・運動学的実現可能性のすべてが PASS。

drawtonomy に戻ったところ: planner の ego (白) が緑の計画軌跡に沿って割り込みの 左を抜け、最後にバッジは RUN PASS になる。
リンク 1 本で共有する
Section titled “リンク 1 本で共有する”シナリオ・solution・判定を GitHub リポジトリに置けば、URL 1 本でこの 3 つが
開きます。インストールも拡張機能も要りません。シナリオの GitHub ファイル URL
を ?open= に続け、&solution= と &verdict= を足します
(シナリオファイルからの相対パスでも、完全な GitHub URL でも構いません)。
必須なのは ?open= だけです。同じ 3 つのパラメータは
drawtonomy-cr open
が配信しているローカルフォルダに対しても使えます。
https://drawtonomy.com/?open=https://github.com/acme/scenarios/blob/main/cut-in/ZAM_CutIn-1_1_T-1.xml &solution=ZAM_CutIn-1_1_T-1_solution.xml &verdict=ZAM_CutIn-1_1_T-1_solution.verdict.jsonOpenSCENARIO を CommonRoad に変換できますか
Section titled “OpenSCENARIO を CommonRoad に変換できますか”できます。.xosc とその .xodr を開き、ego に印を付け、ゴールレーンを選び、
Export ▸ .xml (CommonRoad) を選びます。道路網は lanelet に、他の各
アクターは軌跡付きの dynamicObstacle に、ego は planningProblem に
なります。手順は
シナリオを書き出す。
CommonRoad のどのバージョンに対応していますか
Section titled “CommonRoad のどのバージョンに対応していますか”シナリオファイル・solution ファイルとも CommonRoad XML 2020a です。出力は
公式 XSD で検証済みで、commonroad-io・drivability checker・
commonroad-reactive-planner がそのまま読み込めます。
drawtonomy は公式の drivability checker を実行しますか
Section titled “drawtonomy は公式の drivability checker を実行しますか”しません。drawtonomy はシナリオを書き出して solution を再生するだけで、合否は
commonroad-drivability-checker が決めます。drawtonomy-cr verdict コマンドが
公式の 4 検査を実行し、drawtonomy が RUN バッジに表示する小さな JSON サイドカーを
書き出します。詳細は
Verdict リファレンス。
planning trace は必要ですか
Section titled “planning trace は必要ですか”不要です。必須なのは solution.xml だけです。
planning trace は任意で、
走った軌跡に加えて「各再計画サイクルで planner が何をするつもりだったか」を
足します。
Linux でないと使えませんか
Section titled “Linux でないと使えませんか”エディタ・エクスポート・再生はどのブラウザでも動きます。Linux x86_64 が要るのは
公式 checker だけです (commonroad-drivability-checker が wheel を出しているのが
その環境だけのため)。checker が無い場合、verdict は exit code 3 と 1 行の説明を
返して終わり、それ以外はすべて動きます。
CommonRoad ファイルを開くのに何かインストールが要りますか
Section titled “CommonRoad ファイルを開くのに何かインストールが要りますか”要りません。drawtonomy.com がブラウザで CommonRoad の
.xml を読みます。pip install drawtonomy-commonroad が要るのは verdict の
ステップと drawtonomy-cr open のループだけです。
自分の車両モデルを使えますか
Section titled “自分の車両モデルを使えますか”使えます。solution には checker が判定に使う CommonRoad の vehicle model
(KS, PM, …) と vehicle type (BMW_320i など) を宣言します。
planning trace にも同じ車体を
宣言すれば、drawtonomy は checker が見たものと同じ形で描画します。
| 形式 | CommonRoad XML 2020a (シナリオ + solution) |
| パッケージ | pip install drawtonomy-commonroad (PyPI), Python 3.11+ |
| 検証済み | 公式 XSD · commonroad-io の読み書き往復 · drivability checker · commonroad-reactive-planner · 公式ベンチマークコーパスの手作りシナリオ 635 件でのインポート → 再エクスポート往復 |
| ego / ゴール | ego を external control として印を付け、キャンバス上でゴールレーンを選ぶ |
| インポート | CommonRoad シナリオ .xml (2020a): lanelet、障害物、planning problem、ゴールレーン。非対応要素は再エクスポートまで持ち越し |
| 再生できる入力 | CommonRoad solution.xml · checker の判定 (.verdict.json) · planning trace · esmini の .csv ログ · drawtonomy の録画 |
| 共有 | ?open=<GitHub ファイル URL> と &solution= / &verdict= |
| 描画対象外 | 交通標識・信号・交差点はインポートと再エクスポートで持ち越されるが、キャンバス上では編集できない |
| 利用 | drawtonomy.com 上で動作、インストール不要 |
合わせたい planner のワークフローや、うまく開けないベンチマークシナリオが あれば お問い合わせ ください。