Fasi ed eventi — come è strutturata la logica dello scenario
Il pannello LOGIC in fondo allo schermo è dove vive il comportamento di uno scenario. Questa pagina spiega di quali parti è composto e in quale ordine vengono eseguite.

I quattro livelli
Sezione intitolata “I quattro livelli”Il grafo annida quattro elementi, dal più esterno al più interno.
| Livello | Cos’è | OpenSCENARIO |
|---|---|---|
| Fase | Un contenitore denominato con una condizione Start. | Act |
| Riga di attore | Una riga per ogni entità che partecipa alla fase. | ManeuverGroup (il suo entityRef) |
| Evento | Un trigger più una o più azioni. | Event |
| END CONDITIONS | Il nodo alla fine del grafo. Decide quando la simulazione si ferma. | lo StopTrigger dello storyboard |
Fai clic su + Phase per aggiungerne una. Il pulsante è disabilitato finché lo scenario non ha almeno un attore — il tooltip dice Aggiungi prima un attore.
Una nuova fase non arriva vuota. Un solo clic produce Phase 1, una riga di attore per la tua entità e Event_1 con un’azione Change Speed predefinita e un trigger Simulation time predefinito. L’editor di evento si apre automaticamente a destra.
Gli scenari importati mantengono i nomi degli act originali, quindi una fase potrebbe chiamarsi qualcosa come CutInAndBrakeAct anziché Phase 1.
La riga Start
Sezione intitolata “La riga Start”Ogni fase ha una riga Start con tre opzioni:
| Opzione | Significato |
|---|---|
| At scenario start | La fase diventa attiva non appena inizia la simulazione. |
| After a delay… | La fase diventa attiva un numero fisso di secondi dall’inizio della simulazione. |
| Custom… | Qualsiasi condizione di trigger — lo stesso catalogo usato per i trigger di evento. |
La condizione di Start di una fase è indipendente dalle fasi disegnate sopra di essa. Due fasi entrambe impostate su At scenario start diventano entrambe attive a t=0. La sequenza non viene dalle posizioni verticali delle schede, ma dalle condizioni di Start che imposti.
Eliminare una fase
Sezione intitolata “Eliminare una fase”La piccola × su una scheda di fase la elimina, insieme a ogni evento, azione e trigger dentro di essa — senza conferma. Annulla con Ctrl+Z o il pulsante ↶ nella barra degli strumenti.
Facendo clic destro su una fase appare Add Event (actor) e Delete Phase.
Un evento è l’unità di comportamento: un trigger e una o più azioni, applicate a un attore.
Aggiungine uno con + Event nella riga dell’attore. Ogni nuovo evento arriva con gli stessi valori predefiniti del primo — un’azione Change Speed e un trigger Simulation time a 0.00 s. Due eventi lasciati a 0.00 s si attivano simultaneamente, quindi imposta il trigger prima di andare avanti.
Leggere una scheda di evento
Sezione intitolata “Leggere una scheda di evento”Ogni scheda contiene due righe:
- Riga superiore — il nome dell’evento, il tempo di simulazione in cui è stato attivato (
t=2.05s) e un✓una volta completato. - Riga inferiore — un riassunto dell’azione, ad esempio
8.3 m/s · over 2 s,1 → · over 30 m,same lane as Ego · over 3 s, oparallel 0 m/s · @-4 m/s².
Il tempo di attivazione e il segno di spunta vengono compilati durante la riproduzione, quindi il grafo funge anche da log della simulazione.
L’editor di evento
Sezione intitolata “L’editor di evento”Selezionando una scheda si apre l’editor in alto a destra, con l’intestazione actor › event.

| Sezione | Cosa contiene |
|---|---|
| ACTOR | L’entità su cui agisce l’evento. |
| TRIGGER | Una o più condizioni, raggruppate. Vedi Trigger. |
| ACTION | Cosa succede quando il trigger si attiva. Vedi Azioni. |
| + Action | Aggiunge un’altra azione allo stesso evento — tutte si avviano quando il trigger si attiva. |
| ADVANCED | Gli attributi sottostanti. |
ADVANCED
Sezione intitolata “ADVANCED”| Campo | Opzioni | OpenSCENARIO |
|---|---|---|
| PROFILE | Linear / Cubic / Sinusoidal / Step | dynamicsShape |
| PRIORITY | Auto / overwrite / parallel / skip | Event@priority |
| REPEAT (EVENT) | quante volte l’evento si ripete | Event@maximumExecutionCount |
| REPEAT (GROUP) | quante volte il gruppo dell’attore si ripete | ManeuverGroup@maximumExecutionCount |
| MANEUVER | il nome della manovra a cui appartiene l’evento | Maneuver@name |
| DELAY AFTER MET | secondi di attesa dopo che il trigger è soddisfatto | Condition@delay |
PRIORITY decide cosa succede quando questo evento si attiva mentre un altro evento è ancora in esecuzione sullo stesso attore: overwrite ferma quello in esecuzione, parallel lascia che entrambi continuino, e skip scarta quello nuovo. Auto lascia che drawtonomy scelga.
MANEUVER esiste principalmente per il round-tripping. drawtonomy non disegna manovre o gruppi di manovra come caselle separate, ma conserva i loro nomi in modo che uno scenario importato esporti con la stessa struttura.
Cosa viene eseguito quando
Sezione intitolata “Cosa viene eseguito quando”- La simulazione inizia. Ogni fase la cui condizione Start è già soddisfatta diventa attiva.
- All’interno di una fase attiva, ogni evento valuta il suo TRIGGER a ogni step. Quando il trigger è soddisfatto — più qualsiasi DELAY AFTER MET — le azioni dell’evento si avviano.
- Le azioni vengono eseguite fino al completamento secondo le loro DYNAMICS (in un tempo, su una distanza, o a un ritmo).
- La simulazione si ferma quando il nodo END CONDITIONS è soddisfatto. Se lasciato su
Automatic, significa “quando tutto è finito”. - Se una FAIL CONDITION si attiva in qualsiasi momento, la simulazione termina con un verdetto
FAIL.
Vedi Condizioni di fine e fallimento per i punti 4 e 5.
Variabili e parametri
Sezione intitolata “Variabili e parametri”Il pulsante {x} sulla scheda LOGIC apre il pannello PARAMETERS e VARIABLES — ParameterDeclarations e VariableDeclarations di OpenSCENARIO. I parametri sono fissi all’inizio di una simulazione; le variabili possono essere cambiate durante una con le azioni Set Variable e Modify Variable.
Un avvertimento, dichiarato nel pannello stesso: modificare un parametro non cambia retroattivamente le azioni che sono state importate con un valore letterale, perché i riferimenti ai parametri vengono risolti al momento dell’importazione.