Salta ai contenuti

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.

Il pannello LOGIC — scheda di fase con una riga di attore, schede di evento, + Event e il nodo END CONDITIONS

Il grafo annida quattro elementi, dal più esterno al più interno.

LivelloCos’èOpenSCENARIO
FaseUn contenitore denominato con una condizione Start.Act
Riga di attoreUna riga per ogni entità che partecipa alla fase.ManeuverGroup (il suo entityRef)
EventoUn trigger più una o più azioni.Event
END CONDITIONSIl 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.

Ogni fase ha una riga Start con tre opzioni:

OpzioneSignificato
At scenario startLa 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.

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.

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, o parallel 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.

Selezionando una scheda si apre l’editor in alto a destra, con l’intestazione actor › event.

L'editor di evento — ACTOR, TRIGGER con il suo gruppo ALL OF (AND), ACTION, + Action, ADVANCED

SezioneCosa contiene
ACTORL’entità su cui agisce l’evento.
TRIGGERUna o più condizioni, raggruppate. Vedi Trigger.
ACTIONCosa succede quando il trigger si attiva. Vedi Azioni.
+ ActionAggiunge un’altra azione allo stesso evento — tutte si avviano quando il trigger si attiva.
ADVANCEDGli attributi sottostanti.
CampoOpzioniOpenSCENARIO
PROFILELinear / Cubic / Sinusoidal / StepdynamicsShape
PRIORITYAuto / overwrite / parallel / skipEvent@priority
REPEAT (EVENT)quante volte l’evento si ripeteEvent@maximumExecutionCount
REPEAT (GROUP)quante volte il gruppo dell’attore si ripeteManeuverGroup@maximumExecutionCount
MANEUVERil nome della manovra a cui appartiene l’eventoManeuver@name
DELAY AFTER METsecondi di attesa dopo che il trigger è soddisfattoCondition@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.

  1. La simulazione inizia. Ogni fase la cui condizione Start è già soddisfatta diventa attiva.
  2. 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.
  3. Le azioni vengono eseguite fino al completamento secondo le loro DYNAMICS (in un tempo, su una distanza, o a un ritmo).
  4. La simulazione si ferma quando il nodo END CONDITIONS è soddisfatto. Se lasciato su Automatic, significa “quando tutto è finito”.
  5. 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.

Il pulsante {x} sulla scheda LOGIC apre il pannello PARAMETERS e VARIABLESParameterDeclarations 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.