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 (lavagna browser con esportazione parziale).

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 è una lavagna browser con un esportatore parziale OpenSCENARIO 1.3 / OpenDRIVE 1.8. Come da documentazione dell’esportatore:

  • Posiziona corsie, incroci, veicoli, pedoni, semafori e segnaletica su una tela 2D dall’alto.
  • Esporta un file zip .xosc + .xodr + run.sh che riproduce scene semplici in esmini.

L’esportatore copre un sottoinsieme deliberato della specifica. Cose che non produce oggi (indicate come elementi del roadmap nell’SDK):

  • Primitive di giunzione OpenDRIVE (<junction>).
  • Segnali stradali come voci OpenDRIVE <signal>.
  • Profili di accelerazione, eventi di sosta, percorsi dipendenti dai segnali, azioni di cambio corsia o storyboard multi-attore più ricchi.
  • Trigger condizionali, sweep di parametri, controller personalizzati o guidati da ML.

In pratica, considera l’esportazione OpenSCENARIO di drawtonomy come un punto di partenza per uno schizzo — utile come base da modificare a mano o per produrre la figura che accompagna uno scenario, non come percorso di authoring di scenari in produzione.