esmini 是什么?
esmini 是瑞典 ADAS 社区开发的开源 OpenSCENARIO 播放器。它刻意做得很精简,被广泛用作 OpenSCENARIO 1.x 的轻量参考实现:代码量小到可以通读,运行速度快到可以嵌入其他工具,行为也足够可预测,因此常被当作正确性验证的基线。
esmini 能做什么
Section titled “esmini 能做什么”esmini 解析 OpenSCENARIO 1.x 的 .xosc 文件,加载其中引用的 OpenDRIVE .xodr 路网,然后执行 storyboard——驱动各实体沿轨迹或控制器运动,并持续输出运动状态。
它不是 CARLA 或 LGSVL 那种全物理仿真器,精简正是它的设计初衷:esmini 是开源生态里”这个场景到底能不能正确解析和回放”的基准工具,大多数 OpenSCENARIO 工具链都会对齐它。
为什么 esmini 对工具链很重要
Section titled “为什么 esmini 对工具链很重要”esmini 是使用最广泛的开源 OpenSCENARIO 1.x 消费方,因此”能否在 esmini 中运行”已经成为衡量 OpenSCENARIO 导出流水线是否可靠的标准检验。大多数生成 ASAM 文件的工具,在宣称支持 OpenSCENARIO 之前都会先拿 esmini 做验证——包括 RoadRunner(其导出的场景号称”兼容任何符合 OpenSCENARIO 标准的仿真器与播放器,例如 CARLA、esmini 和 IPG CarMaker”)等一众工具。
esmini 的典型输入
Section titled “esmini 的典型输入”esmini 至少需要:
- 一个
.xosc(OpenSCENARIO 场景文件)。 - 一个被该
.xosc引用的.xodr(OpenDRIVE 路网文件)。 - 可选的
.osgb文件(供 3D 查看器渲染),或一个存放车辆模型的Models/目录。
把这些文件打包成一个自包含的 zip——业内有时非正式地称之为 “esmini bundle”——可以让场景方便地跨机器、跨 CI 环境流转。
drawtonomy 在其中的位置
Section titled “drawtonomy 在其中的位置”drawtonomy 直接在浏览器里运行 esmini 本体——编译为 WebAssembly 后加载执行。你在其中编写 storyboard(或打开一个已有的 .xosc),点击播放,场景编辑器就会在页面内完成执行:播放控制、拖动进度、跟随镜头、轨迹重放,以及根据你设置的 END / FAIL 条件给出 PASS / FAIL 判定——无需安装任何软件,也不用另开播放器。仿真内核本身就是 esmini,drawtonomy 只是在外面包了一层原生画布式的操作界面。
如果你想在本地的 esmini 原生安装环境中运行同一个场景(比如需要 3D OpenSceneGraph 查看器、跑 CI 批量测试,或接入 Python / C++ 流水线),drawtonomy 也支持导出一个包含 .xosc、.xodr 和 run.sh 启动脚本的 zip 包:
unzip <name>.zipesmini --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 库来批量生成场景集——这类批量生成能力目前仍不在可视化编辑器的范围内。
- 场景编辑器——在浏览器中基于 esmini-WASM 编写并运行 storyboard。
- 打开并播放已有的 .xosc——拖入一个
.xosc文件即可播放。 - 什么是 OpenSCENARIO?
- 什么是 OpenDRIVE?
- 导出到 ASAM OpenDRIVE / OpenSCENARIO