跳转到内容

esmini 是什么?

esmini 是瑞典 ADAS 社区开发的开源 OpenSCENARIO 播放器。它刻意做得很精简,被广泛用作 OpenSCENARIO 1.x 的轻量参考实现:代码量小到可以通读,运行速度快到可以嵌入其他工具,行为也足够可预测,因此常被当作正确性验证的基线。

esmini 解析 OpenSCENARIO 1.x 的 .xosc 文件,加载其中引用的 OpenDRIVE .xodr 路网,然后执行 storyboard——驱动各实体沿轨迹或控制器运动,并持续输出运动状态。

它不是 CARLA 或 LGSVL 那种全物理仿真器,精简正是它的设计初衷:esmini 是开源生态里”这个场景到底能不能正确解析和回放”的基准工具,大多数 OpenSCENARIO 工具链都会对齐它。

esmini 是使用最广泛的开源 OpenSCENARIO 1.x 消费方,因此”能否在 esmini 中运行”已经成为衡量 OpenSCENARIO 导出流水线是否可靠的标准检验。大多数生成 ASAM 文件的工具,在宣称支持 OpenSCENARIO 之前都会先拿 esmini 做验证——包括 RoadRunner(其导出的场景号称”兼容任何符合 OpenSCENARIO 标准的仿真器与播放器,例如 CARLA、esmini 和 IPG CarMaker”)等一众工具。

esmini 至少需要:

  • 一个 .xosc(OpenSCENARIO 场景文件)。
  • 一个被该 .xosc 引用的 .xodr(OpenDRIVE 路网文件)。
  • 可选的 .osgb 文件(供 3D 查看器渲染),或一个存放车辆模型的 Models/ 目录。

把这些文件打包成一个自包含的 zip——业内有时非正式地称之为 “esmini bundle”——可以让场景方便地跨机器、跨 CI 环境流转。

drawtonomy 直接在浏览器里运行 esmini 本体——编译为 WebAssembly 后加载执行。你在其中编写 storyboard(或打开一个已有的 .xosc),点击播放,场景编辑器就会在页面内完成执行:播放控制、拖动进度、跟随镜头、轨迹重放,以及根据你设置的 END / FAIL 条件给出 PASS / FAIL 判定——无需安装任何软件,也不用另开播放器。仿真内核本身就是 esmini,drawtonomy 只是在外面包了一层原生画布式的操作界面。

如果你想在本地的 esmini 原生安装环境中运行同一个场景(比如需要 3D OpenSceneGraph 查看器、跑 CI 批量测试,或接入 Python / C++ 流水线),drawtonomy 也支持导出一个包含 .xosc、.xodr 和 run.sh 启动脚本的 zip 包:

Terminal window
unzip <name>.zip
esmini --osc <name>/<name>.xosc --window 60 60 1024 768

有几点需要了解:

  • 浏览器内播放器读取 OpenSCENARIO 1.x,ASAM 导出功能则写出 OpenSCENARIO 1.0–1.2 / OpenDRIVE 1.8——两者都只覆盖标准的一个子集:action、条件 trigger、phase 和 event 均可正常执行,OpenDRIVE 的 junction 基本图元和 <signal> 条目也会一并导出。从导入的 .xodr 原样保留、未经编辑的 junction 保真度很高;但由手绘车道网络合成生成的 junction 目前还不够可靠。参数扫描(parameter sweep)以及自定义或 ML 驱动的控制器目前尚未支持导出。
  • 车辆模型默认使用 esmini 内置的模型,因此无需额外提供 .osgb 文件。
  • 若要做大规模或参数化的场景批量生成,建议用 DSL 或 Python 库来批量生成场景集——这类批量生成能力目前仍不在可视化编辑器的范围内。