drawtonomy vs esmini
esmini è il simulatore di riferimento open-source per ASAM OpenSCENARIO 1.x. Viene sviluppato in modo aperto da un gruppo di maintainer della comunità ADAS svedese ed è diventato il runtime OpenSCENARIO 1.x minimale più diffuso in assoluto — pulito, veloce e abbastanza prevedibile da essere il riferimento contro cui praticamente ogni strumento di authoring OpenSCENARIO (drawtonomy compreso) valida il proprio output. Il team di drawtonomy ha solo rispetto per il lavoro che i maintainer di esmini hanno messo, anno dopo anno, nel costruire e mantenere un runtime open-source di alta qualità.
Cosa copre esmini:
- Un runtime nativo che simula lo storyboard OpenSCENARIO 1.x: atti, sequenze, manovre, trigger condizionali, dichiarazioni di parametri, controller.
- Un viewer 3D (OpenSceneGraph) e una vista dall’alto in 2D, oltre a una modalità headless per la CI.
- API in C++, Python e JavaScript (WebAssembly), così da poterlo integrare in un simulatore più ampio, in un validatore o in una pipeline di training.
- Modelli di veicoli integrati, quindi una coppia
.xosc+.xodrstandard si simula senza dover distribuire asset.osgb. - Un binario piccolo, veloce e prevedibile, che si inserisce bene nelle suite di regressione degli scenari.
Se ti servono le semantiche di simulazione OpenSCENARIO 1.x — trigger condizionali, sweep di parametri, controller personalizzati, esecuzione completa dello storyboard — esmini è lo standard, e non c’è un buon motivo per guardare altrove.
Licenza
Sezione intitolata “Licenza”esmini è open-source sotto licenza Mozilla Public License 2.0. Il fatto stesso che drawtonomy possa offrire un simulatore OpenSCENARIO da browser dipende direttamente da questa licenza e dalla scelta del team esmini di rendere il proprio lavoro disponibile apertamente. drawtonomy rispetta gli obblighi di notice e di copyleft a livello di file previsti da MPL-2.0 per il binario esmini-WASM che distribuisce.
Come drawtonomy si relaziona a esmini
Sezione intitolata “Come drawtonomy si relaziona a esmini”drawtonomy è una lavagna browser gratuita per scenari di guida. Il suo simulatore integrato è costruito sopra esmini compilato in WebAssembly — il motore di simulazione che esegue lo storyboard è esmini stesso, con lo stesso parser, le stesse semantiche di storyboard e lo stesso stato dei veicoli. Nessuna correttezza della simulazione è merito di drawtonomy: appartiene a esmini e ai suoi maintainer.
Ciò che drawtonomy aggiunge è il guscio nativo per canvas attorno
a quel runtime: seek accurato al fotogramma, la camera Follow Ego
che segue il veicolo ego negli spostamenti, le scie fantasma
Path / Footprint, l’export .webm con un clic, e lo stesso canvas
su cui si costruiscono anche gli scenari. È questo il livello a cui
contribuisce drawtonomy — non un fork, non una reimplementazione.
La suddivisione dei ruoli:
| Domanda | esmini (nativo) | drawtonomy (simulatore browser costruito su esmini-WASM) |
|---|---|---|
| Eseguire lo storyboard OpenSCENARIO 1.x (atti, trigger, condizioni, controller) | ✅ runtime esmini | ✅ runtime esmini (stesso motore, build WebAssembly di esmini stesso) |
| Viewer 3D OpenSceneGraph | ✅ integrato | ❌ solo canvas 2D |
| Modalità headless per CI / sweep di regressione | ✅ flag headless | ❌ guscio browser |
| API in C++ / Python | ✅ | ❌ solo JS (esmini-WASM) |
| Seek e step accurati al fotogramma | dipende dal viewer | ✅ scrubber + frecce direzionali |
| Camera che segue l’ego (Follow Ego — la vista si sposta con il veicolo ego) | possibile con dei flag | ✅ un solo interruttore |
| Scie fantasma (Path / Footprint) | non integrato | ✅ intervallo configurabile |
Registrare la corsa in .webm per slide / PR / social | cattura schermo esterna | ✅ export integrato, preset di aspect ratio |
| Installazione richiesta | build C++ o binario della release | ❌ funziona in qualsiasi browser moderno |
| Simulazione sensori (camera / LiDAR / radar) | ❌ | ❌ |
I due flussi si incastrano perfettamente end-to-end. L’
export del bundle OpenSCENARIO di drawtonomy
produce uno zip con .xosc, .xodr e uno script run.sh che esegue
lo scenario nella tua installazione locale di esmini. Stessi standard
(OpenSCENARIO +
OpenDRIVE), stesso motore di simulazione, due
gusci diversi.
Perché usare comunque il guscio browser
Sezione intitolata “Perché usare comunque il guscio browser”Se il runtime è esmini in entrambi i casi, che valore aggiunge il guscio browser?
- Fare triage di un fallimento CI senza avere esmini installato
sulla macchina che hai sottomano — laptop, telefono, desktop
prestato. Non sempre hai la toolchain di build a portata di mano
quando devi solo dare un’occhiata a un
.xosc. - Fare code review di una PR su uno scenario quando chi revisiona non esegue esmini in locale.
- Insegnare OpenSCENARIO senza far installare nulla a chi ascolta.
- Registrare un
.webmdella simulazione per una slide, una segnalazione di bug o un post sui social — drawtonomy offre i preset 16:9, 9:16, 1:1, 4:3 e Free direttamente nel popover di export. - Dare un’occhiata rapida a uno scenario generato da scenariogeneration o Scenic prima di lanciare una simulazione completa.
Al contrario, quando conviene saltare il guscio browser ed eseguire esmini nativo:
- Vuoi il viewer 3D OpenSceneGraph.
- Devi lanciare una sweep CI su centinaia di scenari.
- Vuoi pilotare esmini da Python o C++ dentro una pipeline più ampia.
- Stai integrando esmini in un altro simulatore.
Nello stesso ecosistema OpenSCENARIO
Sezione intitolata “Nello stesso ecosistema OpenSCENARIO”drawtonomy ed esmini si basano sugli stessi standard ASAM — OpenSCENARIO e OpenDRIVE — e sullo stesso motore di simulazione. drawtonomy chiama letteralmente esmini sotto il cofano: senza il progetto esmini, il simulatore OpenSCENARIO da browser di drawtonomy non esisterebbe. La comunità OpenSCENARIO è piccola, e gli strumenti che ne fanno parte — esmini, drawtonomy, RoadRunner, Truevision Designer, LaneMaker, scenariogeneration — giocano ruoli diversi nello stesso flusso di lavoro. esmini è il simulatore; drawtonomy è il guscio browser costruito sopra di esso (più una lavagna su cui puoi disegnare e costruire gli scenari).
Ringraziamenti
Sezione intitolata “Ringraziamenti”Il simulatore OpenSCENARIO di drawtonomy esiste perché esiste il progetto esmini, e perché i suoi autori hanno scelto di pubblicarlo con una licenza aperta. Un grande ringraziamento ai maintainer e ai contributori di esmini per gli anni di lavoro dedicati a costruire un runtime OpenSCENARIO 1.x pulito, veloce e ben documentato — e per essere un punto di riferimento stabile per tutta la comunità OpenSCENARIO. Se usi la modalità simulatore OpenSCENARIO da browser di drawtonomy, considera anche di mettere una stella a esmini su GitHub e di sostenere il progetto a monte.