Salta ai contenuti

Cos'è OpenSCENARIO?

OpenSCENARIO è uno standard aperto ASAM per descrivere scenari di guida dinamici — ciò che il veicolo ego e gli altri partecipanti al traffico fanno nel tempo, in una forma che i simulatori possono riprodurre. È il formato di scambio de facto per il testing basato su scenari dei sistemi di guida automatizzata.

Esistono due specifiche largamente indipendenti che condividono il nome:

  • OpenSCENARIO 1.x — basato su XML. Stabile, ampiamente supportato. La revisione 1.3 è il target di produzione corrente per la maggior parte degli strumenti.
  • OpenSCENARIO 2.0 / DSL — un linguaggio specifico di dominio per scenari astratti, parametrici e probabilistici. Più recente, più espressivo, con supporto crescente da parte degli strumenti.

I due formati non sono intercambiabili, ma 1.x è quello che la maggior parte dei simulatori e delle pipeline di testing SOTIF / ISO 21448 consuma oggi.

Uno scenario 1.x consiste tipicamente di:

  • Un riferimento RoadNetwork — di solito un file OpenDRIVE .xodr, eventualmente abbinato a un file scene-graph come .osgb.
  • Un blocco Entities — i veicoli, i pedoni e gli oggetti vari.
  • Storyboard — gli atti, le manovre e gli eventi che le entità eseguono in ordine temporale.
  • Azioni Init — posizioni iniziali, velocità e assegnazioni di parametri.

L’XML è leggibile naturalmente per un singolo scenario breve, ma diventa difficile da mantenere quando si scala a decine di varianti. È qui che gli strumenti di authoring e i DSL aiutano.

  • XML scritto a mano. Comune per team piccoli e fixture di ground-truth.
  • DSL / codegen. OpenSCENARIO 2.0 DSL, Scenic, o generatori interni producono XML da descrizioni di livello superiore.
  • Librerie Python. scenariogeneration (ex pyoscx / pyodrx) fornisce un’API programmatica per OpenSCENARIO + OpenDRIVE, con copertura da OpenSCENARIO V1.0 a V1.3.1.
  • Motori di scenario integrati nei simulatori. CARLA ScenarioRunner definisce ed esegue scenari per CARLA, con supporto Python e OpenSCENARIO 1.0 / 2.0.
  • Editor visuali. MathWorks RoadRunner (esporta XML e DSL), Truevision Designer (orientato a OpenDRIVE), Blender Driving Scenario Creator (add-on Blender), e drawtonomy (compone storyboard OpenSCENARIO 1.x completi e li esegue nel browser su esmini-WASM).

L’authoring di scenari in produzione usa tipicamente uno o più di questi — spesso una libreria Python o DSL per gli scenari stessi, abbinata a un editor visuale per la rete stradale.

drawtonomy è un ambiente browser per l’authoring e l’esecuzione di OpenSCENARIO 1.x — una lavagna in cui la scena che disegni diventa uno storyboard eseguibile. Importa OpenSCENARIO 1.x ed esporta OpenSCENARIO 1.0–1.2 (la 1.3 è in arrivo), insieme a OpenDRIVE 1.8:

  • Posiziona corsie, incroci, veicoli, pedoni, semafori e segnaletica su una tela 2D dall’alto.
  • Costruisci lo storyboard visivamente — fasi, eventi, 35 azioni e 19 condizioni di trigger — ed eseguilo nel browser su esmini compilato in WebAssembly, con un’anteprima 3D (camere Chase / vista dall’alto / guidatore) accanto al canvas 2D.
  • Importa una coppia .xosc + .xodr esistente e modificala, oppure esporta la coppia per un’esecuzione esmini nativa.
  • Genera uno scenario da una descrizione in linguaggio naturale: drawtonomy compone una bozza di storyboard, la verifica con quattro gate di validazione (incluso un vero e proprio run esmini) e la applica al canvas.

L’esportatore ora emette anche strutture OpenDRIVE <junction> / <connection> / <laneLink> e voci <signal> — non è più un elemento di roadmap. Conta la differenza di precisione: le strade riportate invariate da un .xodr importato mantengono la topologia originale delle giunzioni con alta fedeltà, mentre le giunzioni sintetizzate da corsie disegnate da zero non sono ancora affidabili. Restano assenti gli sweep di parametri e i controller personalizzati o guidati da ML.

Le flotte di scenari — grandi batch parametrizzati — restano il territorio di un DSL o di una libreria Python; è un ambito che l’editor visuale non copre. Ciò che drawtonomy aggiunge è un percorso visivo rapido da un’idea (o da un prompt in linguaggio naturale) a uno scenario eseguibile e verificabile.