Salta ai contenuti

Condizioni di fine e di fallimento — ferma l'esecuzione e giudicala

Due domande diverse, due pannelli diversi:

  • CONDIZIONI DI FINEquando si ferma l’esecuzione?
  • CONDIZIONI DI FALLIMENTOl’esecuzione è fallita?

Entrambe vivono nell’ultimo nodo del grafo logico. Seleziona il nodo END CONDITIONS e il pannello degli attributi mostra entrambe le sezioni.

Il pannello degli attributi del nodo END CONDITIONS, che mostra END CONDITIONS impostata su Automatic sopra una sezione FAIL CONDITIONS con una riga Collision

Tenere separate le due cose è importante. Un’esecuzione che si ferma dopo 30 secondi non ha quindi avuto successo, e un’esecuzione che termina in una collisione dopo 4 secondi non ha quindi avuto il comportamento corretto. La condizione di fine controlla l’orologio; le condizioni di fallimento decidono il verdetto.

Il nodo si riassume in una riga:

RiepilogoSignificato
AutomaticNessuna condizione esplicita. L’esecuzione si ferma quando ogni fase e evento è completato.
After <name> endsUno StopTrigger importato, ad esempio After CutInManeuver ends.

Il pulsante + Add condition nel pannello ti consente di impostarne una esplicitamente. Le opzioni sono lo stesso catalogo utilizzato per i trigger degli eventi, meno Immediately (no condition)18 condizioni:

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

Le condizioni si combinano con ALL OF (AND) e or… esattamente come fanno i trigger degli eventi.

Nel .xosc esportato questo diventa lo StopTrigger dello storyboard, quindi gli altri strumenti OpenSCENARIO 1.x lo rispettano.

Tre condizioni di fine ricoprono la maggior parte del lavoro:

  • Lasciala su Automatic mentre scrivi. L’esecuzione si ferma automaticamente una volta che gli eventi sono completati.
  • Simulation time per un’esecuzione di lunghezza fissa — la scelta abituale quando uno scenario alimenta un batch o un confronto.
  • Phase / event state, state ends per fermarsi non appena la manovra sottoposta a test si completa, indipendentemente da quanto tempo impiega.

La sezione dice quello che fa:

FAIL CONDITIONS Rende fallita la simulazione quando attivata durante la riproduzione.

Una condizione di fallimento è un’asserzione. Se si attiva in qualsiasi momento durante l’esecuzione, l’esecuzione termina con un verdetto FAIL anziché correre fino alla sua condizione di fine.

I nuovi scenari iniziano con una:

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

Quindi uno scenario appena disegnato fallisce già per qualsiasi collisione. Il pulsante + Add fail condition aggiunge un’altra riga; ogni riga ha un per rimuoverla. Una riga appena aggiunta ripete lo stesso tipo di quella predefinita, quindi cambia il suo tipo dopo averla aggiunta.

Le condizioni di fallimento sono un concetto proprio di drawtonomy — non fanno parte dello standard ASAM OpenSCENARIO. Vedi Come vengono archiviate.

TipoFallisce quando
CollisionL’attore selezionato collide con un’altra entità. Any actor osserva ogni entità nello scenario.
Actor speedLa velocità di un attore soddisfa la regola che hai impostato — assoluta, o relativa a un altro attore.
Distance to actorLa distanza tra due attori scende al di sotto, o supera, una soglia.
Distance to pointLa distanza di un attore da un punto fisso scende al di sotto, o supera, una soglia.
Longitudinal distance to actorIl gap lungo la strada verso un altro attore supera una soglia, misurato davanti, dietro, o in entrambi i sensi.
DurationUn’altra condizione si mantiene continuamente per più di un determinato tempo.
Simulation timeL’esecuzione raggiunge un determinato momento — un timeout.
Phase stateUna fase starts, is running, o ends.
ImpostazioneScelte
Selezione attoreAny actor, o un’entità nominata
Regola distanzafalls below / exceeds
Regola velocità= equals / > greater than / ≥ greater or equal / < less than / ≤ less or equal / ≠ not equal
Base velocitàAbsolute speed / Relative to actor
Direzione velocità relativaAny direction / Faster / Slower / Same speed
Lato longitudinaleAhead or behind / Ahead / Behind
Stato fasestarts / is running / ends

Duration non è una condizione vera e propria — è un wrapper “per quanto tempo”. Selezionala, poi scegli la condizione interna da quattro:

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

Così esprimi la tolleranza. “Il gap è sceso sotto 5 m per un singolo frame” è solitamente rumore; “il gap è rimasto sotto 5 m per due secondi” è un risultato. Avvolgi la condizione di distanza in una Duration e hai espresso la seconda cosa.

La riga di trasporto con un badge FAIL rosso e una croce rossa marcata sulla timeline dove una condizione di fallimento è stata attivata

Il badge sulla riga di trasporto riporta lo stato dell’esecuzione:

BadgeSignificato
IDLENon in esecuzione. Nulla è stato valutato.
RUNIn esecuzione. Nessuna condizione di fallimento è stata ancora attivata.
PASSL’esecuzione ha raggiunto la sua condizione di fine senza che nessuna condizione di fallimento fosse attivata.
FAILUna condizione di fallimento è stata attivata. L’esecuzione si è fermata lì.

PASS quindi significa “terminato, e nessuna delle mie asserzioni si è attivata”. È significativo solo quanto lo sono le condizioni di fallimento che hai scritto — uno scenario con le condizioni rimosse riporterà PASS per quasi qualsiasi comportamento.

Lo schema è lo stesso utilizzato per i test automatizzati:

  1. Configura la situazione. Strada, attori, fasi, eventi.
  2. Dì cosa non deve accadere. Condizioni di fallimento: nessuna collisione; il gap non scende mai sotto 5 m per più di un secondo; l’ego non supera mai il limite di velocità; l’esecuzione non dura mai più di 30 s.
  3. Dì quando smettere di cercare. Condizione di fine: un tempo di simulazione, o lo stato della manovra sottoposta a test.
  4. Eseguilo e leggi il badge.

Alcune condizioni che vale la pena considerare:

IntentoCondizione
Nessun contattoCollision, Any actor
Mantenere un gap sicuroDurationDistance to actor, falls below, con una tolleranza
Non fare retromarciaLongitudinal distance to actor, Ahead, falls below
Rispettare un limiteActor speed, > greater than, Absolute speed
Non bloccare lo scenarioSimulation time come timeout
Non superareRelative speed, Faster

Come vengono archiviate le condizioni di fallimento

Sezione intitolata “Come vengono archiviate le condizioni di fallimento”

Le condizioni di fallimento sono al di fuori dello standard ASAM OpenSCENARIO, quindi drawtonomy le mantiene dove un lettore conforme agli standard le ignorerà: come una voce drawtonomy:failConditions nei ParameterDeclarations dello scenario.

Conseguenze che vale la pena conoscere:

  • Il parametro viene scritto solo quando hai modificato le condizioni di fallimento. Uno scenario lasciato sui valori predefiniti esporta senza di essa, quindi nulla di extra appare nel tuo .xosc.
  • Gli altri strumenti OpenSCENARIO leggono il file normalmente — una dichiarazione di parametro sconosciuta è inerte.
  • Re-importare lo stesso file in drawtonomy ripristina le condizioni esattamente.
  • Un .xosc importato da altrove inizia con nessuna condizione di fallimento, quindi uno scenario importato non riporta mai un FAIL che non hai chiesto.