跳到內容

OpenSCENARIO 是什麼?

OpenSCENARIOASAM 制定的開放標準,用於描述動態駕駛場景——包括自駕車與其他交通參與者隨時間推移的行為,並以模擬器可重播的格式呈現。它是自動駕駛系統場景測試的事實交換格式。

這個名稱底下存在兩個相互獨立的規格:

  • OpenSCENARIO 1.x — 以 XML 為基礎。穩定、相容性廣。目前大多數工具以 1.3 修訂版為主要目標。
  • OpenSCENARIO 2.0 / DSL — 用於抽象、參數化與機率性場景的領域特定語言,較新、表達能力更強,工具支援持續成長中。

兩種格式不能互換;但當前大多數模擬器與 SOTIF / ISO 21448 測試流程仍以 1.x 為主。

一個 1.x 場景通常包含:

  • RoadNetwork 參考——通常是 OpenDRIVE .xodr 檔案,有時搭配 .osgb 場景圖。
  • Entities 區塊——車輛、行人及其他物件。
  • Storyboard——各實體依時間順序執行的幕、動作與事件。
  • Init 動作——起始位置、速度與參數指定。

單一短場景以 XML 閱讀尚算直觀,但一旦擴展到數十個變體,維護難度便急速上升。這正是編寫工具與 DSL 的切入點。

  • 手寫 XML。 適合小型團隊與基準測試用例。
  • DSL / 程式碼生成。 OpenSCENARIO 2.0 DSLScenic,或自行開發的生成器將高層描述轉換為 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 是一款具備部分 OpenSCENARIO 1.3 / OpenDRIVE 1.8 匯出功能的瀏覽器白板。依據其匯出器說明文件

  • 在 2D 俯視畫布上放置車道、路口、車輛、行人、紅綠燈與道路標線。
  • 匯出包含 .xosc + .xodr + run.sh 的壓縮包,可在 esmini 中重播簡單場景。

匯出器刻意只涵蓋規格的一個子集。目前尚未支援的項目(在 SDK 中列為路線圖):

  • OpenDRIVE 路口元素(<junction>)。
  • 以 OpenDRIVE <signal> 形式表示的交通標誌。
  • 加速曲線、停留/停止事件、信號感知路徑、換道動作,以及更豐富的多主體 Storyboard。
  • 條件觸發器、參數掃描、自訂或機器學習驅動的控制器。

實務上,建議將 drawtonomy 的 OpenSCENARIO 匯出視為草圖起點——適合作為後續手動編輯的基礎,或用於生成場景的配圖,而非完整的場景製作流程。