Skip to content

What is esmini?

esmini is an open-source OpenSCENARIO player developed by the Swedish ADAS community. It’s a deliberately minimal player widely used as a lightweight reference for OpenSCENARIO 1.x — small enough to read, fast enough to embed, and predictable enough to use as a sanity check.

esmini parses an OpenSCENARIO 1.x .xosc, loads the referenced OpenDRIVE .xodr road network, and executes the storyboard — driving entities along trajectories or controllers and streaming the resulting state.

It’s not a full physics-based simulator like CARLA or LGSVL. The minimality is the point: esmini is the open-source “does this scenario parse and play correctly?” baseline that most OpenSCENARIO tooling targets.

Because esmini is the most common open-source OpenSCENARIO 1.x consumer, “does it run in esmini?” is the standard sanity check for any OpenSCENARIO export pipeline. Most tools that produce ASAM files validate against esmini before claiming OpenSCENARIO support — including RoadRunner (which exports scenarios “compatible with any OpenSCENARIO-compliant simulators and players, such as CARLA, esmini, and IPG CarMaker”) and many others.

esmini wants, at minimum:

  • A .xosc (OpenSCENARIO scenario).
  • A .xodr (OpenDRIVE road network) referenced from the .xosc.
  • Optionally a .osgb file for 3D viewer rendering, or a Models/ directory of vehicle assets.

Packaging these together as a self-contained zip — sometimes informally called an “esmini bundle” — makes scenarios portable across machines and CI.

drawtonomy runs esmini itself — compiled to WebAssembly — directly in the browser. You author a storyboard (or open an existing .xosc), press play, and the scenario editor executes it in the page: transport controls, seek, a follow camera, ghost trails, and a PASS / FAIL verdict from your END and FAIL conditions — no install, no separate player. The simulation core is esmini; drawtonomy adds the canvas-native shell around it.

If you’d rather run the scenario in a native esmini install (for the 3D OpenSceneGraph viewer, CI sweeps, or a Python/C++ pipeline), drawtonomy also exports a zip with the .xosc, .xodr, and a run.sh invocation. Per drawtonomy’s exporter docs:

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

Things to know:

  • The in-browser player reads OpenSCENARIO 1.x, and the ASAM export writes OpenSCENARIO 1.0–1.2 / OpenDRIVE 1.8 — both cover a subset of the spec: actions, conditional triggers, phases, and events run; parameter sweeps, custom or ML-driven controllers, and OpenDRIVE junction primitives aren’t emitted today.
  • Vehicle assets default to esmini’s built-in models, so no extra .osgb is required.
  • For large-scale or parameterised scenario sweeps, generate the fleet from a DSL or a Python library — those remain out of scope for the visual editor.