drawtonomy と CARLA ScenarioRunner
競合ではなく、レイヤが違う
Section titled “競合ではなく、レイヤが違う”drawtonomy と CARLA ScenarioRunner は競合関係にあるツールではなく、同じエコシステムの別レイヤを担当しています。
- drawtonomy — 2D のブラウザホワイトボード。シーンを下書きして、OpenSCENARIO 1.3 + OpenDRIVE 1.8 を出力する。
- CARLA ScenarioRunner — CARLA シミュレータ向けのシナリオ定義・実行エンジン。Python と OpenSCENARIO 1.0 / 2.0 を扱う。
ファイル形式さえ合えば、「drawtonomy が出力したものを ScenarioRunner で消費する」関係になります。
CARLA ScenarioRunner が扱う領域
Section titled “CARLA ScenarioRunner が扱う領域”公式ドキュメント と GitHub リポジトリ によれば、扱う領域は次のとおりです。
- Python のインターフェース、または OpenSCENARIO 標準でシナリオを定義する。
- OpenSCENARIO 1.0 に対応し、OpenSCENARIO 2.0 についてもドキュメントが整備されている。
- maneuver の Action、Condition、Story、Storyboard を扱う。
- CARLA のリリースごとに対応するブランチが用意されている。
- Python ベースで、ビルドは不要。
- MIT ライセンス。
ScenarioRunner は、CARLA の中でシナリオを定義・実行する標準的な手段です。
drawtonomy はどこを担当するか
Section titled “drawtonomy はどこを担当するか”drawtonomy の エクスポーター は OpenSCENARIO 1.3 の一部を出力します。一方 ScenarioRunner は主に OpenSCENARIO 1.0 を対象としているので、仕様バージョンの違いが境界部分で問題になる可能性があります。drawtonomy が主に動作確認の対象にしているのは esmini の側で、esmini の方は 1.x をより一様に扱えます。
drawtonomy の出力を CARLA に渡す場合、次の点に注意してください。
.xoscは ScenarioRunner が受け入れる形に手で書き換える必要が出ることがあります。.xodrは OpenDRIVE 1.8 で、CARLA 自体は複数バージョンを受け入れます。- 条件付きトリガ、ML コントローラ、パラメータ走査などは drawtonomy では表現できないので、ScenarioRunner の Python インターフェースで直接定義してください。
自然な流れは、drawtonomy でシーンを視覚的に下書きしてから、ScenarioRunner にロジックを書き起こす(あるいは手で XML を整える)というものです。
同じエコシステムの仲間として
Section titled “同じエコシステムの仲間として”CARLA、ScenarioRunner、drawtonomy、esmini、Scenic、scenariogeneration、RoadRunner、Blender DSC は、どれも同じ OpenSCENARIO エコシステムの一員で、それぞれ違うレイヤ(作成、生成、実行、再生)を担当しています。drawtonomy はその中でも小さな存在で、作成側で視覚的な下書きを担当している、というポジションです。