跳转到内容

drawtonomy vs esmini

esminiASAM OpenSCENARIO 1.x 的开源参考仿真器,由瑞典 ADAS 社区的维护者以开放方式持续开发。它已经成为使用最广泛的轻量级 OpenSCENARIO 1.x 运行时——足够干净、够快、行为足够可预期,以至于几乎每一款 OpenSCENARIO 编写工具(drawtonomy 也不例外)都把 esmini 当作校验自身输出的参照标准。drawtonomy 团队对 esmini 维护者多年来打磨和维护这样一个高质量开源运行时的工作,只有敬意。

esmini 覆盖的能力:

  • 一个真正仿真 OpenSCENARIO 1.x 故事板的原生运行时:act、sequence、maneuver、条件触发器、参数声明、控制器,一应俱全。
  • 3D 视图(基于 OpenSceneGraph)和 2D 俯视图,外加供 CI 使用的无头(headless)模式。
  • C++ / Python / JavaScript(WebAssembly)三套 API,可以直接嵌进更大的仿真器、校验工具或训练流水线里。
  • 内置车辆模型——一份普通的 .xosc + .xodr 不需要额外准备 .osgb 资产就能直接跑起来。
  • 体积小、速度快、行为可预期的二进制文件,很适合放进场景回归测试套件。

如果你需要的是 OpenSCENARIO 1.x 的仿真语义本身——条件触发器、参数扫描、自定义控制器、完整的故事板执行——esmini 就是标准答案,没有理由绕开它。

esmini 以 Mozilla Public License 2.0 开源。drawtonomy 之所以能做出浏览器端的 OpenSCENARIO 仿真器,正是拜这份许可证、以及 esmini 团队愿意公开其成果所赐。对于打包进产品的 esmini-WASM 二进制文件,drawtonomy 遵循 MPL-2.0 的声明和文件级 copyleft 要求。

drawtonomy 是一款免费的浏览器端驾驶场景白板。它的浏览器内仿真器基于编译为 WebAssembly 的 esmini 构建——真正执行故事板的仿真内核就是 esmini 本身,用的是同一套解析器、同一套故事板语义、同一套车辆状态。仿真的正确性没有一分是 drawtonomy 的功劳,全部归属于 esmini 及其维护者。

drawtonomy 在这套运行时之外添加的,是贴合画布原生体验的外壳:逐帧精确定位、随主车视角平移的 Follow Ego 跟车相机、Path / Footprint 轨迹残影、一键导出 .webm,以及和场景绘制共用的同一块画布。这才是 drawtonomy 真正贡献的那一层——不是分叉,也不是重新实现。

具体分工如下:

能力esmini(原生)drawtonomy(基于 esmini-WASM 的浏览器仿真器)
运行 OpenSCENARIO 1.x 故事板(act、触发器、条件、控制器)✅ esmini 运行时✅ esmini 运行时(同一引擎,esmini 本体的 WebAssembly 构建)
3D OpenSceneGraph 视图✅ 内置❌ 仅 2D 画布
供 CI / 回归测试用的无头模式✅ headless 参数❌ 浏览器外壳
C++ / Python API❌ 仅 JS(esmini-WASM)
逐帧精确定位与步进取决于所用视图✅ 拖动条 + 方向键
跟车相机(Follow Ego,视角随主车平移)可通过参数实现✅ 一键开关
轨迹残影(Path / Footprint)未内置✅ 可配置间隔
把运行过程录成 .webm 用于幻灯片 / PR /社交分享需借助外部录屏✅ 应用内导出,内置画幅比例预设
是否需要安装需要 C++ 构建或发行版二进制❌ 现代浏览器直接运行
传感器仿真(摄像头 / LiDAR / 雷达)

两条链路可以首尾相接。drawtonomy 的 OpenSCENARIO 导出组合包 会打包出一个 zip,里面有 .xosc.xodr,还有一个 run.sh,可以直接用你本地的 esmini 跑这个场景。同样的标准(OpenSCENARIO + OpenDRIVE)、同一个仿真内核,只是外壳不同。

浏览器外壳到底解决了什么问题

Section titled “浏览器外壳到底解决了什么问题”

既然两边跑的都是 esmini,浏览器外壳还有什么意义?

  • 排查 CI 失败的场景,不需要在手头这台机器上装 esmini——不管是笔记本、手机,还是借用的电脑。想看一眼 .xosc 出了什么问题时,你不一定随身带着完整的构建工具链。
  • 评审场景相关的 PR,当评审者本地没有跑 esmini 环境时。
  • 教 OpenSCENARIO,不需要让听众先装任何东西。
  • 把仿真过程录成 .webm,用于幻灯片、bug 报告或社交平台分享——drawtonomy 在导出面板里直接提供 16:9、9:16、1:1、4:3 以及自由比例预设。
  • 快速浏览一遍生成的场景,比如来自 scenariogenerationScenic 的输出,在决定要不要跑一整轮完整仿真之前先看看效果。

反过来,什么时候应该跳过浏览器外壳、直接用原生 esmini:

  • 需要 OpenSceneGraph 3D 视图。
  • 要跑成百上千个场景的 CI 批量测试。
  • 想在更大的流水线里用 Python 或 C++ 驱动 esmini。
  • 要把 esmini 嵌进另一个仿真器里。

drawtonomy 和 esmini 建立在同一套 ASAM 标准之上——OpenSCENARIO 和 OpenDRIVE——也共用同一个仿真内核。drawtonomy 在底层直接调用 esmini;没有 esmini 项目,就不会有 drawtonomy 的浏览器端 OpenSCENARIO 仿真器。OpenSCENARIO 社区不大,这个圈子里的工具——esmini、drawtonomy、RoadRunnerTruevision DesignerLaneMakerscenariogeneration——各自在同一个工作流里扮演不同角色。esmini 是仿真器;drawtonomy 是架在它之上的浏览器外壳(外加一块可以直接作图的白板)。

drawtonomy 的 OpenSCENARIO 仿真器之所以能存在,是因为 esmini 项目存在,并且选择以开放许可证发布。感谢 esmini 的维护者和贡献者们多年来投入的心血,打造出一个干净、快速、文档完善的 OpenSCENARIO 1.x 运行时,并长期作为整个 OpenSCENARIO 社区稳定可靠的参照标准。如果你在使用 drawtonomy 的浏览器端 OpenSCENARIO 仿真器模式,也欢迎去 GitHub 上给 esmini 加一颗星,支持一下上游项目。