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——各實體依時間順序執行的幕(act)、動作與事件。
- Init 動作——起始位置、速度與參數指定。
單一短場景以 XML 閱讀尚算直觀,但一旦擴展到數十個變體,維護難度便急速上升。這正是編寫工具與 DSL 的切入點。
常見的場景編寫方式
Section titled “常見的場景編寫方式”- 手寫 XML。 適合小型團隊與基準測試用例。
- DSL / 程式碼生成。 OpenSCENARIO 2.0 DSL、Scenic,或自行開發的生成器,將高層描述轉換為 XML。
- Python 函式庫。 scenariogeneration(前身為
pyoscx/pyodrx)提供 OpenSCENARIO + OpenDRIVE 的程式化 API,涵蓋 OpenSCENARIO 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(能編寫完整 OpenSCENARIO 1.x 故事板,並在瀏覽器中以 esmini-WASM 執行)。
實際的場景製作往往同時使用多種工具——通常以 Python 函式庫或 DSL 撰寫場景邏輯本身,搭配視覺化編輯器處理道路網路。
drawtonomy 在其中的定位
Section titled “drawtonomy 在其中的定位”drawtonomy 是一個以瀏覽器為基礎的 OpenSCENARIO 1.x 編寫與執行環境——一塊白板,你在上面畫出的場景會直接變成可執行的故事板。它匯入 OpenSCENARIO 1.x,匯出 OpenSCENARIO 1.0–1.2(1.3 即將支援),並同時支援 OpenDRIVE 1.8:
- 在 2D 俯視畫布上放置車道、路口、車輛、行人、紅綠燈與道路標線。
- 以視覺化方式建構故事板——階段、事件、全部 35 種 action,以及全部 19 種 trigger 條件——並在瀏覽器中執行,底層是編譯為 WebAssembly 的 esmini,同時在 2D 畫布旁提供 3D 預覽(跟隨 / 鳥瞰 / 駕駛視角鏡頭)。
- 匯入既有的
.xosc+.xodr組合並編輯,或匯出這組檔案供原生 esmini 環境執行。 - 從自然語言描述生成場景:drawtonomy 會草擬一份故事板,對照四道驗證關卡進行檢查(包含一次實際的 esmini 執行),再套用到畫布上。
匯出器目前已能輸出 OpenDRIVE 的 <junction> / <connection> / <laneLink> 元素與 <signal> 項目——這已經不再是路線圖項目。真正重要的是精度差異:未經編輯、原封不動延續匯入 .xodr 的道路,能以高保真度呈現原始路口拓樸;但從你從零手繪的車道合成出的路口,目前還不夠可靠。仍然缺少的是:參數掃描,以及自訂或 ML 驅動的控制器。
至於場景車隊——大批量的參數化場景——仍然最適合用 DSL 或 Python 函式庫生成,這部分不在視覺化編輯器的範圍內。drawtonomy 的價值在於提供一條快速的視覺化路徑,讓一個想法(或一段自然語言提示)變成可執行、可檢視的場景。
- 場景編輯器——在瀏覽器中編寫階段、事件、action 與 trigger,然後執行它們。
- 建立你的第一個場景——從空白畫布開始的一次變換車道。
- RoadRunner 與 OpenSCENARIO 術語對照——兩套詞彙之間的對照表。
- 什麼是 OpenDRIVE?
- 什麼是 esmini?
- 比較:drawtonomy 與手寫 OpenSCENARIO XML