Zum Inhalt springen

Phasen und Ereignisse — wie Szenariologik strukturiert wird

Die LOGIC-Karte am unteren Rand des Bildschirms ist der Ort, an dem sich das Verhalten eines Szenarios abspielt. Diese Seite erklärt die einzelnen Teile und die Reihenfolge ihrer Ausführung.

Die LOGIC-Ansicht — Phasenkarte mit Akteur-Zeile, Ereigniskarten, +Ereignis-Button und END CONDITIONS-Knoten

Das Diagramm verschachtelt vier Dinge, von außen nach innen.

EbeneWas es istOpenSCENARIO
PhaseEin benannter Container mit einer Start-Bedingung.Act
Akteur-ZeileEine Zeile pro Entität, die an der Phase teilnimmt.ManeuverGroup (ihre entityRef)
EreignisEin Auslöser plus eine oder mehrere Aktionen.Event
END CONDITIONSDer Knoten am Ende des Diagramms. Entscheidet, wann die Ausführung endet.der StopTrigger des Storyboard

Klicken Sie auf + Phase, um eine zu erstellen. Der Button ist deaktiviert, solange das Szenario über keinen Akteur verfügt — der Tooltip zeigt Add an actor first.

Eine neue Phase ist nicht leer. Ein Klick erzeugt Phase 1, eine Akteur-Zeile für Ihre Entität und Event_1 mit einer Standard-Change Speed-Aktion und einem Standard-Simulation time-Auslöser. Der Ereignis-Editor öffnet sich gleichzeitig rechts.

Importierte Szenarien behalten die ursprünglichen Act-Namen, daher kann eine Phase beispielsweise CutInAndBrakeAct statt Phase 1 heißen.

Jede Phase hat eine Start-Zeile mit drei Optionen:

OptionBedeutung
At scenario startDie Phase wird aktiv, sobald die Ausführung beginnt.
After a delay…Die Phase wird nach einer festen Anzahl von Sekunden aktiv.
Custom…Jede Auslöserbedingung — der gleiche Katalog wie bei Ereignis-Auslösern.

Die Start-Bedingung einer Phase ist unabhängig von den Phasen darüber. Zwei Phasen, beide auf At scenario start gesetzt, werden beide bei t=0 aktiv. Die Reihenfolge ergibt sich aus den Start-Bedingungen, die Sie festlegen, nicht aus der vertikalen Anordnung der Karten.

Das kleine × auf einer Phasenkarte löscht sie, zusammen mit jedem Ereignis, jeder Aktion und jedem Auslöser darin — ohne Bestätigungsaufforderung. Machen Sie das rückgängig mit Strg+Z oder der ↶-Schaltfläche in der Symbolleiste.

Ein Rechtsklick auf eine Phase zeigt Add Event (actor) und Delete Phase.

Ein Ereignis ist die Verhaltenseinheit: ein Auslöser, eine oder mehrere Aktionen, angewendet auf einen Akteur.

Fügen Sie eines mit + Event in der Akteur-Zeile ein. Jedes neue Ereignis kommt mit den gleichen Standards wie das erste — eine Change Speed-Aktion und einen Simulation time-Auslöser bei 0.00 s. Zwei Ereignisse auf 0.00 s starten gleichzeitig, daher ändern Sie den Auslöser, bevor Sie weitermachen.

Jede Karte trägt zwei Zeilen:

  • Obere Zeile — der Ereignisname, die Simulationszeit, bei der er ausgelöst wurde (t=2.05s), und ein , sobald er abgeschlossen ist.
  • Untere Zeile — eine Zusammenfassung der Aktion, beispielsweise 8.3 m/s · über 2 s, 1 → · über 30 m, gleiche Fahrspur wie Ego · über 3 s, oder parallel 0 m/s · @-4 m/s².

Die Auslösezeit und das Häkchen werden während der Wiedergabe gefüllt, daher funktioniert das Diagramm auch als Ausführungsprotokoll.

Wenn Sie eine Karte wählen, öffnet sich der Editor oben rechts mit der Überschrift actor › event.

Der Ereignis-Editor — ACTOR, TRIGGER mit seiner ALL OF (AND)-Gruppe, ACTION, +Action, ADVANCED

AbschnittWas er enthält
ACTORDie Entität, auf die das Ereignis wirkt.
TRIGGEREine oder mehrere Bedingungen, gruppiert. Siehe Triggers.
ACTIONWas geschieht, wenn der Auslöser aktiv wird. Siehe Actions.
+ ActionFügt eine weitere Aktion zum gleichen Ereignis hinzu — alle starten, wenn der Auslöser aktiv wird.
ADVANCEDDie folgenden Attribute.
FeldOptionenOpenSCENARIO
PROFILELinear / Cubic / Sinusoidal / StepdynamicsShape
PRIORITYAuto / overwrite / parallel / skipEvent@priority
REPEAT (EVENT)wie oft das Ereignis wiederholt wirdEvent@maximumExecutionCount
REPEAT (GROUP)wie oft die Gruppe des Akteurs wiederholt wirdManeuverGroup@maximumExecutionCount
MANEUVERder Name des Maneuvers, zu dem das Ereignis gehörtManeuver@name
DELAY AFTER METSekunden zu warten, nachdem der Auslöser erfüllt istCondition@delay

PRIORITY entscheidet, was geschieht, wenn dieses Ereignis auslöst, während ein anderes Ereignis noch auf dem gleichen Akteur läuft: overwrite stoppt das laufende, parallel lässt beide laufen, und skip verwirft das neue. Auto lässt drawtonomy entscheiden.

MANEUVER existiert hauptsächlich für Round-Tripping. drawtonomy zeichnet Maneuvers oder Maneuver-Gruppen nicht als separate Boxen, bewahrt aber ihre Namen, sodass ein importiertes Szenario mit der gleichen Struktur exportiert wird.

  1. Die Ausführung startet. Jede Phase, deren Start-Bedingung bereits erfüllt ist, wird aktiv.
  2. Innerhalb einer aktiven Phase bewertet jedes Ereignis seinen TRIGGER bei jedem Schritt. Wenn der Auslöser erfüllt ist — plus etwaige DELAY AFTER MET — starten die Aktionen des Ereignisses.
  3. Aktionen laufen bis zur Fertigstellung gemäß ihrer DYNAMICS (über eine Zeit, über eine Entfernung oder mit einer Rate).
  4. Die Ausführung endet, wenn der END CONDITIONS-Knoten erfüllt ist. Bei Automatic bedeutet das „wenn alles beendet ist”.
  5. Wenn eine FAIL CONDITION zu einem beliebigen Zeitpunkt auslöst, endet die Ausführung mit einem FAIL-Verdikt statt.

Siehe End and fail conditions für die Schritte 4 und 5.

Die {x}-Schaltfläche auf der LOGIC-Karte öffnet das Panel PARAMETERS und VARIABLES — die ParameterDeclarations und VariableDeclarations von OpenSCENARIO. Parameter sind am Anfang einer Ausführung festgelegt; Variablen können während einer mit den Aktionen Set Variable und Modify Variable geändert werden.

Ein Vorbehalt, der im Panel selbst festgehalten ist: Das Bearbeiten eines Parameters ändert nicht rückwirkend Aktionen, die mit einem literalen Wert importiert wurden, weil Parameter-Verweise bei der Importzeit aufgelöst werden.