OpenSCENARIO 是什麼?
OpenSCENARIO 是 ASAM 制定的開放標準,用於描述動態駕駛場景——包括自駕車與其他交通參與者隨時間推移的行為,並以模擬器可重播的格式呈現。它是自動駕駛系統場景測試的事實交換格式。
OpenSCENARIO 的兩大系列
Section titled “OpenSCENARIO 的兩大系列”這個名稱底下存在兩個相互獨立的規格:
- OpenSCENARIO 1.x — 以 XML 為基礎。穩定、相容性廣。目前大多數工具以 1.3 修訂版為主要目標。
- OpenSCENARIO 2.0 / DSL — 用於抽象、參數化與機率性場景的領域特定語言,較新、表達能力更強,工具支援持續成長中。
兩種格式不能互換;但當前大多數模擬器與 SOTIF / ISO 21448 測試流程仍以 1.x 為主。
OpenSCENARIO 1.x 檔案的組成
Section titled “OpenSCENARIO 1.x 檔案的組成”一個 1.x 場景通常包含:
- RoadNetwork 參考——通常是 OpenDRIVE
.xodr檔案,有時搭配.osgb場景圖。 - Entities 區塊——車輛、行人及其他物件。
- Storyboard——各實體依時間順序執行的幕、動作與事件。
- Init 動作——起始位置、速度與參數指定。
單一短場景以 XML 閱讀尚算直觀,但一旦擴展到數十個變體,維護難度便急速上升。這正是編寫工具與 DSL 的切入點。
常見的場景編寫方式
Section titled “常見的場景編寫方式”- 手寫 XML。 適合小型團隊與基準測試用例。
- DSL / 程式碼生成。 OpenSCENARIO 2.0 DSL、Scenic,或自行開發的生成器將高層描述轉換為 XML。
- Python 函式庫。 scenariogeneration(前身為
pyoscx/pyodrx)提供 OpenSCENARIO + OpenDRIVE 的程式化 API,涵蓋 V1.0 至 V1.3.1。 - 模擬器內建的場景引擎。 CARLA ScenarioRunner 在 CARLA 中定義並執行場景,支援 Python 介面與 OpenSCENARIO 1.0 / 2.0。
- 視覺化編輯器。 MathWorks RoadRunner(可匯出 XML 與 DSL)、Truevision Designer(以 OpenDRIVE 為核心)、Blender Driving Scenario Creator(Blender 外掛),以及 drawtonomy(含部分匯出功能的瀏覽器白板)。
實際的場景製作往往同時使用多種工具——通常以 Python 函式庫或 DSL 撰寫場景邏輯,搭配視覺化編輯器處理道路網路。
drawtonomy 在其中的定位
Section titled “drawtonomy 在其中的定位”drawtonomy 是一款具備部分 OpenSCENARIO 1.3 / OpenDRIVE 1.8 匯出功能的瀏覽器白板。依據其匯出器說明文件:
- 在 2D 俯視畫布上放置車道、路口、車輛、行人、紅綠燈與道路標線。
- 匯出包含
.xosc+.xodr+run.sh的壓縮包,可在 esmini 中重播簡單場景。
匯出器刻意只涵蓋規格的一個子集。目前尚未支援的項目(在 SDK 中列為路線圖):
- OpenDRIVE 路口元素(
<junction>)。 - 以 OpenDRIVE
<signal>形式表示的交通標誌。 - 加速曲線、停留/停止事件、信號感知路徑、換道動作,以及更豐富的多主體 Storyboard。
- 條件觸發器、參數掃描、自訂或機器學習驅動的控制器。
實務上,建議將 drawtonomy 的 OpenSCENARIO 匯出視為草圖起點——適合作為後續手動編輯的基礎,或用於生成場景的配圖,而非完整的場景製作流程。