跳转到内容

什么是 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,覆盖 OpenSCENARIO V1.0 至 V1.3.1。
  • 仿真器内置场景引擎。 CARLA ScenarioRunner 用 Python 和 OpenSCENARIO 1.0 / 2.0 为 CARLA 定义并执行场景。
  • 可视化编辑器。 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 的 zip 压缩包,可在 esmini 中回放简单场景。

导出器有意只覆盖规范的一个子集。目前生成的内容(在 SDK 中作为路线图项目记录)包括:

  • OpenDRIVE 路口原语(<junction>)。
  • OpenDRIVE <signal> 形式的交通标志。
  • 加速曲线、停留/停止事件、感知信号路径、变道动作或更复杂的多主体 Storyboard。
  • 条件触发、参数扫描、自定义或基于 ML 的控制器。

实际使用中,请将 drawtonomy 的 OpenSCENARIO 导出视为草图起点——适合作为场景的可视化配图,或作为可手动编辑的基线,而非生产级场景编写路径。