콘텐츠로 이동

종료 및 실패 조건 — 실행을 멈추고 판정합니다

두 가지 다른 질문, 두 개의 다른 패널입니다:

  • END CONDITIONS실행이 언제 멈추는가?
  • FAIL CONDITIONS실행이 실패했는가?

둘 다 논리 그래프의 마지막 노드에 있습니다. END CONDITIONS 노드를 선택하면 속성 패널에 두 섹션이 모두 표시됩니다.

END CONDITIONS 노드의 속성 패널, Automatic으로 설정된 END CONDITIONS를 보여 주고 그 아래 충돌 행이 있는 FAIL CONDITIONS 섹션

둘을 구분하는 것이 중요합니다. 30초 후에 멈춘 실행이 따라서 성공한 것은 아니며, 4초 후 충돌로 끝난 실행이 따라서 올바르게 동작한 것은 아닙니다. 종료 조건은 시계를 제어하고, 실패 조건이 판정을 결정합니다.

노드는 한 줄로 자신을 요약합니다:

요약의미
Automatic명시적 조건 없음. 모든 페이즈와 이벤트가 완료되면 실행이 멈춥니다.
After <name> ends가져온 StopTrigger, 예: After CutInManeuver ends.

패널의 + Add condition을 사용하여 명시적으로 설정할 수 있습니다. 선택지는 이벤트 트리거에 사용되는 동일한 카탈로그이며, Immediately (no condition)을 제외합니다 — 18개 조건:

시뮬레이션 시간 · 액터까지의 시간 간격 · 충돌까지의 시간 ·
액터까지의 거리 · 이동 거리 · 페이즈 / 이벤트 상태 ·
포인트까지의 거리 · 위치에 도달 · 도로 끝 · 액터 속도 ·
상대 속도 · 정지 · 액터 가속 · 충돌 ·
도로 이탈 · 시나리오 매개변수 · 시나리오 변수 · 신호

조건은 모두 (AND) 및 **또는…**과 결합되며, 이벤트 트리거와 정확히 동일합니다.

내보낸 .xosc에서 이것은 스토리보드의 StopTrigger가 되므로 다른 OpenSCENARIO 1.x 도구가 이를 인식합니다.

세 가지 종료 조건이 대부분의 작업을 다룹니다:

  • Automatic으로 두기 (작성하는 동안). 이벤트가 완료되면 실행이 자동으로 멈춥니다.
  • Simulation time (고정 길이 실행의 경우 — 시나리오가 배치 또는 비교에 공급될 때의 일반적인 선택).
  • Phase / event state, 상태 ends (테스트 중인 조작이 완료되는 즉시 멈추기, 얼마나 오래 걸리든 상관없음).

섹션은 자신이 하는 일을 말합니다:

FAIL CONDITIONS 재생 중에 트리거되면 시뮬레이션을 실패 처리합니다.

실패 조건은 assertion입니다. 실행 중 어느 시점이든 트리거되면 실행은 종료 조건까지 실행되는 대신 FAIL 판정으로 끝납니다.

새 시나리오는 하나로 시작합니다:

[Collision ▾] [✕]
ACTOR A [Any actor ▾]
충돌(기본값) — 새 시나리오에 자동으로 추가됩니다.

따라서 새로 그린 시나리오는 이미 모든 충돌에 실패합니다. + Add fail condition을 사용하면 다른 행을 추가할 수 있으며, 각 행에는 제거할 **✕**가 있습니다. 새로 추가된 행은 기본값과 동일한 유형을 반복하므로 추가한 후 유형을 변경합니다.

실패 조건은 drawtonomy의 자체 개념입니다 — ASAM OpenSCENARIO 표준에 포함되지 않습니다. 실패 조건이 저장되는 방식을 참고하세요.

유형실패 조건
Collision선택된 액터가 다른 엔티티와 충돌합니다. Any actor는 시나리오의 모든 엔티티를 감시합니다.
Actor speed액터의 속도가 설정한 규칙을 만족합니다 — 절대값 또는 다른 액터에 대한 상대값.
Distance to actor두 액터 사이의 거리가 임계값보다 낮거나 높습니다.
Distance to point액터의 고정된 포인트까지의 거리가 임계값보다 낮거나 높습니다.
Longitudinal distance to actor다른 액터까지의 종주 거리 간격이 임계값을 넘습니다 (전방, 후방 또는 양쪽으로 측정됨).
Duration다른 조건이 주어진 시간보다 더 오래 계속됩니다.
Simulation time실행이 주어진 시간에 도달합니다 — 타임아웃.
Phase state페이즈가 starts, is running 또는 ends.
설정선택지
액터 선택Any actor 또는 명명된 엔티티
거리 규칙falls below / exceeds
속도 규칙= equals / > greater than / ≥ greater or equal / < less than / ≤ less or equal / ≠ not equal
속도 기준Absolute speed / Relative to actor
상대 속도 방향Any direction / Faster / Slower / Same speed
종주 쪽Ahead or behind / Ahead / Behind
페이즈 상태starts / is running / ends

Duration은 자신의 조건이 아닙니다 — 이것은 “얼마나 오래” 래퍼입니다. 선택한 다음 내부 조건을 4개 중에서 선택합니다:

  • 액터 속도
  • 액터까지의 거리
  • 포인트까지의 거리
  • 액터까지의 종주 거리

이것이 허용값을 표현하는 방법입니다. “간격이 5m 아래로 떨어진 상태에서 한 프레임” — 보통 노이즈입니다. “간격이 5m 아래로 2초 동안 유지됨” — 발견입니다. 거리 조건을 Duration으로 감싸면 두 번째를 표현했습니다.

실패 조건이 트리거된 타임라인 위의 빨간 위치에 빨간 FAIL 배지와 빨간 십자 마크가 있는 수송 행

수송 행의 배지는 실행 상태를 보고합니다:

배지의미
IDLE실행 중이 아님. 아무것도 평가되지 않음.
RUN실행 중. 아직 실패 조건이 트리거되지 않음.
PASS실행이 종료 조건에 도달했고 실패 조건이 트리거되지 않음.
FAIL실패 조건이 트리거됨. 실행이 중단됨.

PASS는 따라서 “완료되었고 내 assertion이 모두 발동하지 않았다”는 의미입니다. 이것은 작성한 실패 조건만큼만 의미 있습니다 — 조건이 제거된 시나리오는 거의 모든 동작에 PASS를 보고합니다.

패턴은 자동화된 테스트에 사용되는 것과 동일합니다:

  1. 상황을 설정합니다. 도로, 액터, 페이즈, 이벤트.
  2. 무엇이 일어나면 안 되는지 말합니다. 실패 조건: 충돌 없음; 간격이 5m 아래로 1초 이상 떨어지지 않음; 자아가 제한 속도를 초과하지 않음; 실행이 30초 이상 걸리지 않음.
  3. 언제 보기를 멈출 것인지 말합니다. 종료 조건: 시뮬레이션 시간 또는 테스트 중인 조작의 상태.
  4. 실행하고 배지를 읽습니다.

도달할 가치가 있는 조건들:

의도조건
접촉 없음Collision, Any actor
안전 간격 유지DurationDistance to actor, falls below, 허용값 포함
테일게이팅 금지Longitudinal distance to actor, Ahead, falls below
제한 준수Actor speed, > greater than, Absolute speed
시나리오 멎게 금지Simulation time (타임아웃)
추월 금지Relative speed, Faster

실패 조건은 ASAM OpenSCENARIO 표준 외이므로 drawtonomy는 표준 준수 리더가 무시할 곳에 보관합니다: 시나리오의 ParameterDeclarationsdrawtonomy:failConditions 항목으로.

알아야 할 결과:

  • 매개변수는 실패 조건을 편집했을 때만 작성됩니다. 기본값에 남겨진 시나리오는 매개변수 없이 내보내므로 .xosc에 추가 항목이 없습니다.
  • 다른 OpenSCENARIO 도구가 파일을 정상적으로 읽습니다 — 알려지지 않은 매개변수 선언은 불활성입니다.
  • 동일한 파일을 drawtonomy로 다시 가져오면 조건이 정확히 복원됩니다.
  • 다른 곳에서 가져온 .xosc실패 조건이 없으므로 가져온 시나리오는 당신이 요청하지 않은 FAIL을 보고하지 않습니다.