Zum Inhalt springen

End- und Fehlerbedingungen — Run stoppen und bewerten

Zwei unterschiedliche Fragen, zwei unterschiedliche Panels:

  • END CONDITIONSWann stoppt der Run?
  • FAIL CONDITIONSWar der Run ein Fehlschlag?

Beide befinden sich auf dem letzten Knoten des Logik-Graphen. Wählen Sie den END CONDITIONS-Knoten, und das Attribut-Panel zeigt beide Abschnitte.

Das Attribut-Panel des END CONDITIONS-Knotens, das END CONDITIONS auf Automatic setzt, darüber ein FAIL CONDITIONS-Abschnitt mit einer Collision-Zeile

Die Unterscheidung ist wichtig. Ein Run, der nach 30 Sekunden stoppt, ist nicht automatisch erfolgreich, und ein Run, der nach 4 Sekunden in einer Kollision endet, hat sich nicht automatisch korrekt verhalten. Die End-Bedingung kontrolliert die Zeit; die Fehlerbedingungen entscheiden über das Urteil.

Der Knoten fasst sich selbst in einer Zeile zusammen:

ZusammenfassungBedeutung
AutomaticKeine explizite Bedingung. Der Run stoppt, wenn alle Phasen und Events abgeschlossen sind.
After <name> endsEin importierter StopTrigger, zum Beispiel After CutInManeuver ends.

+ Add condition im Panel ermöglicht es Ihnen, eine explizit zu setzen. Die Auswahlmöglichkeiten entsprechen dem gleichen Katalog, der für Event-Trigger verwendet wird, minus Immediately (no condition)18 Bedingungen:

Simulation time · Time gap to actor · Time to collision ·
Distance to actor · Traveled distance · Phase / event state ·
Distance to point · Reach position · End of road · Actor speed ·
Relative speed · Stand still · Actor acceleration · Collision ·
Off-road · Scenario parameter · Scenario variable · Traffic signal

Bedingungen kombinieren mit ALL OF (AND) und or… genau wie Event-Trigger.

Im exportierten .xosc wird dies zum StopTrigger des Storyboards, sodass andere OpenSCENARIO 1.x-Tools es berücksichtigen.

Drei End-Bedingungen decken den meisten Arbeitsbedarf ab:

  • Lassen Sie es auf Automatic eingestellt, während Sie das Szenario verfassen. Der Run stoppt von selbst, sobald Ihre Events abgeschlossen sind.
  • Simulation time für einen Run mit fester Länge — die übliche Wahl, wenn ein Szenario für einen Batch oder einen Vergleich verwendet wird.
  • Phase / event state, state ends um sofort zu stoppen, sobald das zu testende Manöver abgeschlossen ist, egal wie lange es dauert.

Der Abschnitt erklärt, was er tut:

FAIL CONDITIONS Lässt die Simulation fehlschlagen, wenn sie während der Wiedergabe ausgelöst wird.

Eine Fehlerbedingung ist eine Assertion. Wenn sie während des Runs zu einem beliebigen Zeitpunkt ausgelöst wird, endet der Run mit einem FAIL-Urteil, anstatt bis zu seiner End-Bedingung zu laufen.

Neue Szenarien starten mit einer:

[Collision ▾] [✕]
ACTOR A [Any actor ▾]
Collision (default) — added automatically for new scenarios.

Ein neu gezeichnetes Szenario schlägt also automatisch bei jeder Kollision fehl. + Add fail condition fügt eine weitere Zeile hinzu; jede Zeile hat ein zum Entfernen. Eine neu hinzugefügte Zeile wiederholt den gleichen Typ wie der Standard, also ändern Sie seinen Typ nach dem Hinzufügen.

Fehlerbedingungen sind ein Konzept, das drawtonomy eigen ist — sie sind nicht Teil des ASAM OpenSCENARIO-Standards. Siehe Wie sie gespeichert werden.

TypSchlägt fehl, wenn
CollisionDer ausgewählte Actor kollidiert mit einem anderen Entity. Any actor überwacht jedes Entity im Szenario.
Actor speedDie Geschwindigkeit eines Actors erfüllt die von Ihnen festgelegte Regel — absolut oder relativ zu einem anderen Actor.
Distance to actorDer Abstand zwischen zwei Actors unterschreitet oder überschreitet einen Schwellenwert.
Distance to pointDie Entfernung eines Actors zu einem festen Punkt unterschreitet oder überschreitet einen Schwellenwert.
Longitudinal distance to actorDer Abstand entlang der Fahrbahn zu einem anderen Actor überschreitet einen Schwellenwert, gemessen voraus, dahinter oder in beide Richtungen.
DurationEine andere Bedingung gilt kontinuierlich länger als eine bestimmte Zeit.
Simulation timeDer Run erreicht eine bestimmte Zeit — ein Timeout.
Phase stateEine Phase starts, is running oder ends.
EinstellungAuswahlmöglichkeiten
Actor-AuswahlAny actor oder ein benanntes Entity
Distanzregelfalls below / exceeds
Geschwindigkeitsregel= equals / > greater than / ≥ greater or equal / < less than / ≤ less or equal / ≠ not equal
GeschwindigkeitsbasisAbsolute speed / Relative to actor
Richtung der relativen GeschwindigkeitAny direction / Faster / Slower / Same speed
Longitudinale SeiteAhead or behind / Ahead / Behind
Phase statestarts / is running / ends

Duration ist nicht eigenständig eine Bedingung — es ist ein „für wie lange”-Wrapper. Wählen Sie sie, dann wählen Sie die innere Bedingung aus vier aus:

  • Actor speed
  • Distance to actor
  • Distance to point
  • Longitudinal distance to actor

So drücken Sie Toleranz aus. „Der Abstand unterschritt 5 m für einen einzelnen Frame” ist normalerweise Rauschen; „der Abstand blieb unter 5 m für zwei Sekunden” ist ein Befund. Wickeln Sie die Distanzbedingung in eine Duration, und Sie haben das Zweite gesagt.

Die Transport-Zeile mit einem roten FAIL-Badge und einem roten Kreuz-Marker auf
der Zeitleiste, wo eine Fehlerbedingung ausgelöst wurde

Das Badge auf der Transport-Zeile meldet den Zustand des Runs:

BadgeBedeutung
IDLELäuft nicht. Es wurde nichts evaluiert.
RUNLäuft. Keine Fehlerbedingung wurde bisher ausgelöst.
PASSDer Run erreichte seine End-Bedingung, ohne dass eine Fehlerbedingung ausgelöst wurde.
FAILEine Fehlerbedingung wurde ausgelöst. Der Run stoppte dort.

PASS bedeutet also „abgeschlossen, und keine meiner Assertions wurde ausgelöst”. Es ist nur so aussagekräftig wie die Fehlerbedingungen, die Sie schrieben — ein Szenario ohne die Bedingungen wird für fast jedes Verhalten PASS melden.

Das Muster ist dasselbe, das für automatisierte Tests verwendet wird:

  1. Richten Sie die Situation ein. Straße, Actors, Phasen, Events.
  2. Sagen Sie, was nicht passieren darf. Fehlerbedingungen: keine Kollision; der Abstand unterschreitet niemals 5 m für mehr als eine Sekunde; der Ego überschreitet das Geschwindigkeitslimit niemals; der Run dauert niemals länger als 30 s.
  3. Sagen Sie, wann Sie aufhören sollen zu suchen. End-Bedingung: eine Simulationszeit oder der Zustand des zu testenden Manövers.
  4. Führen Sie es aus und lesen Sie das Badge.

Einige Bedingungen, die es wert sind, beachtet zu werden:

AbsichtBedingung
Kein KontaktCollision, Any actor
Sichere Lücke haltenDurationDistance to actor, falls below, mit einer Toleranz
Nicht dicht auffahrenLongitudinal distance to actor, Ahead, falls below
Limit respektierenActor speed, > greater than, Absolute speed
Szenario nicht blockierenSimulation time als Timeout
Nicht überholenRelative speed, Faster

Fehlerbedingungen liegen außerhalb des ASAM OpenSCENARIO-Standards, daher bewahrt drawtonomy sie dort auf, wo ein standardkonformer Leser sie ignoriert: als drawtonomy:failConditions-Eintrag in den ParameterDeclarations des Szenarios.

Zu wissen lohnt sich:

  • Der Parameter wird nur geschrieben, wenn Sie die Fehlerbedingungen bearbeitet haben. Ein Szenario, das auf den Standardwerten belassen wurde, wird ohne ihn exportiert, sodass in Ihrem .xosc nichts Zusätzliches erscheint.
  • Andere OpenSCENARIO-Tools lesen die Datei normal — eine unbekannte Parameterdeklaration ist inert.
  • Das erneute Importieren derselben Datei in drawtonomy stellt die Bedingungen genau wieder her.
  • Eine .xosc, die von anderswo importiert wird, startet ohne Fehlerbedingungen, sodass ein importiertes Szenario niemals ein FAIL meldet, das Sie nicht verlangt haben.