인턴하면서 새로 다루게 된 OpenSCENARIO에 대해 정리해보겠습니다!
해당 튜토리얼 참고하여 작성했습니다.
https://www.asam.net/index.php?eID=dumpFile&t=f&f=4092&token=d3b6a55e911b22179e3c0895fe2caae8f5492467
ASAM OpenSCENARIO: User Guide
OpenSCENARIO comprises the specification and file schema for the description of dynamic content in driving simulation applications. The primary use of OpenSCENARIO is the description of complex maneuvers that involve multiple vehicles. OpenSCENARIO is used
www.asam.net
4. Components of a scenario
4.1 Overview of a scenario
교통 상황을 표현하기 위해 OpenSCENARIO 모델 인스턴스는 네 가지 주요 구성 요소로 구성됩니다.
- Road network: 다양한 주행 표면과 교통 신호와 같은 도로 인프라의 모든 관련 요소를 매핑합니다.
- Entities: 차량, 보행자 및 시나리오 중에 상호 작용하는 기타 개체를 포함한 도로 사용자
- Actions: 엔터티의 동적 동작을 정의하는 기본 빌딩 블록입니다. 또한 시뮬레이션 상태나 시뮬레이션 세계의 구성 요소를 수정하는 데 사용될 수도 있습니다.
- Triggers: action이 시작되거나 중지되는 시기를 결정하는 메커니즘입니다. 이는 entity 또는 시뮬레이션의 상태를 중심으로 회전하는 논리적 표현을 기반으로 구축되었습니다.
*도로망 없이 시나리오를 설계하는 것은 가능하지만 특정 OpenSCENARIO action의 적용이 제한됩니다.
4.2 Storyboard and entites
4.2.1 Storyboard

OpenSCENARIO에서 스토리보드는 전체 시나리오 설명을 다룹니다. 스토리보드는 시나리오에서 "누가" "무엇을", "언제" 하고 있는지에 대한 답변을 제공합니다. OpenSCENARIO Storyboard요소는 다음 요소로 구성됩니다.
- Init: 시나리오들의 구성요소(위치, 속도 등)을 초기화한다. 여기서 조건 행동(behavior)을 구체화하는 것은 불가능하다.
- 하나 이상의 Story 요소(optional): Story요소를 통해 시나리오 작성자는 다양한 시나리오 측면을 더 높은 수준의 계층 구조로 그룹화하여 대규모 시나리오에 대한 구조를 만들 수 있습니다.ManueverGroup: act의 구성 요소 중 일부이며, “누가” 작업을 수행하는지
- startTrigger: true이면 해당 action의 ManueverGroup 의 인스턴스가 실행된다.
- stopTrigger: 시나리오의 끝을 결정
- Manuever: 시나리오에서 “무슨” 일이 일어나고 있는지, Event 인스턴스의 컨테이너
- Act: 해당 story의 타임라인에서 어떤 일이 “언제” 발생하는지
4.2.2 Entites
시나리오에서 Entity 인스턴스는 traffic situation을 발전시키는 요소이다. Vehicle, Pedestrian, MiscObjects 인스턴스는 동적으로 위치를 바꿀 수 있다. MiscObject 인스턴스는 tree, pole과 같은 object type을 나타낸다. object가 이미 road network file에 정의되었다면, ExternalObjectReference 가 있는 Entity 로 인스턴스화될 수 있다.
- Entity : 하나의 특정 object
- EntitySelection : Entity 인스턴스의 list
- Motion control for entites
- entity유형인 Vehicle, Pedestrian의 motion은 user-assigned controller나 default controller로 제어될 수 있다.
- Default Controller는 오픈 시나리오 MotionControlAction 요소에서 정의된 control strategy로 실행된다. control strategy는 entity의 속도와 lane offset을 유지하는 것이다.
- Entity Selections
- EntitySelection 요소들은 Entity 그룹 요소들을 편리하게 정의할 때 사용된다. 대부분의 경우 entity는 entity의 단일 인스턴스를 사용할 수 있는 경우에 쓸 수 있으며, 이는 ScenarioObject 인스턴스에 한번에 많은 action을 적용하거나 특정 조건에서 any, all 정보를 사용할 수 있다.
- Spawned Objects
- SpawnedObject엔터티는 트래픽 소스에 의해 생성된 인스턴스 로 표시될 수도 있습니다 . 이러한 개체는 동적으로 생성되며 시나리오 작성자가 정의된 엔터티 조건 또는 개인 작업에서 명시적으로 참조할 수 있는 정적 이름이 없습니다.
- Entity class hierarchy

- Generalization of entites
- 3D models for entites
- Vehicle, Pedestrian, MiscObject Entity 유형에 대해 속성을 정의할 수 있다.
4.3 ManeuverGroups, Maneuvers, Events, and Actions
4.3.1 ManeuverGroups and Actors
ManeuverGroup은 내부 Maneuvers에서 작동하거나 참조할 수 있는 Entity의 인스턴스들을 선택한다. 이러한 Entity의 인스턴스들은 추후에 Maneuver에서 역할을 수행하게 될 것 이므로 ManeuverGroup의 Actor라고 한다. Actor 그룹은 비어있는 것이 가능하고, 이는 ManeuverGroup의 Maneuver가 Entity의 인스턴스와 관련되지 않고 world나 simulation state일 때이다.
Actor는 EntityRef요소를 통해 정의될 수 있고, 이는 unbounded list에 결합되어 주어진 maneuver group의 actor를 구분하는 데 사용된다. actor 인스턴스의 리스트는 EntityRef타입 인스턴스를 포함할 것이고, 만약 selectTriggerEntites가 active라면, Entity는 trigger time에 actor’s list에 추가될 것이다.
4.3.2 Actions
Action 은 traffic simulation에서 element behavior을 규정하거나 직접적으로 element state에 영향을 미쳐 시뮬레이션이 어떻게 전개되는지를 결정한다.
- Private actions: traffic participant와 같은 entity에 적용. Entity의 인스턴스에 할당
- LongitudinalAction: 타겟에 대한 속도 또는 상대거리 제어.
- LateralAction: 차선 내 측면 위치를 타겟팅
- VisibilityAction: 센서나 다른 traffic participant에 의해 감지 가능하거나, 가능하지 않게 하고, image generator에 보이게 한다.
- SynchronizeAction: 참조 entity가 지정된 참조 위치에 도달함과 동시에 원하는 위치에 도달하기 위해 엔터티의 종방향 제어를 인계받는다. 동기화 작업은 1) 참조 개체의 상태, 위치에 관계 없이 제어 대상 개체가 참조 위치에 도달하는 경우 2) 통제 대상체가 목적지에 도달할 수 없다고 판단되는 경우 → 종료된다.
- ActivateControllerAction(deprecated): 명시적으로 Controller모델을 (비)활성화한다.
- ControllerAction:
- TeleportAction: entity의 위치, 목적지를 정의. 목표 위치는 절대좌표 또는 다른 entity인스턴스에 의해 상대적으로 나타낸다.
- RoutingAction: entity가 따라야 하는 경로를 지정.
- Global actions :시간, 기상 조건,교통 신호 상태 등 traffic simulation element와 관련된 non-entity를 수정하기 위한 것
- EnvironmentAction: 날씨 상태, 도로 상황, 시간 설정
- EntityAction: entity 인스턴스를 제거 또는 추가
- ParameterAction: 매개변수 값 설정 또는 수정
- InfrastructureAction: 교통신호 또는 교통신호 제어 단계의 상태를 설정하거나 수정
- TrafficAction:
- User-defined actions
- CustomCommandAction
4.3.3 Events
action은 시나리오에서 의미 있는 동작을 생성하기 위해 결합해야 할 수 있는 단일 요소입니다. 이 동작은 작업의 컨테이너 역할을 하는 Event 유형에 의해 생성됩니다 . 이벤트에는 시작 트리거도 포함됩니다. 이벤트 시작 트리거는 이벤트가 시작되는 시기와 이벤트에 포함된 작업이 시작되는 시기를 결정합니다.
action은 단 하나의 예외를 제외하고 항상 이벤트에 의해 래핑되어야 합니다. InitActions즉, action이 개별적으로 선언되는 클래스에서입니다.
maximumExecutionCount은이벤트가 실행되는 횟수를 지정합니다.
4.3.4 Maneuver
Maneuver은 이벤트 우선순위 규칙을 사용하여 이벤트가 서로 상호 작용할 수 있는 범위를 생성하는 이벤트를 그룹화합니다. Maneuver의 정의는 다양한 시나리오에서 쉽게 재사용할 수 있도록 카탈로그에 아웃소싱하고 매개변수화할 수 있습니다.
4.4 Conditions and triggers
시나리오는 활성화가 트리거에 의해 규제되는 의미 있는 작업의 모음으로 간주될 수 있습니다. OpenSCENARIO에서 Trigger는 Condition의 조합으로 인해 발생하는 결과이며 항상 true 또는 false로 평가됩니다.
- Condition은 logical expression의 컨테이너이며 실행 중에 평가됩니다. 이는 해당 logical expression의 현재 또는 이전 평가에 대해 작동하여 trigger에서 사용되는 boolean output을 생성합니다.
- conditionGroup 은 모든 관련된 Condition이 true일 때, true이다.
- Trigger는 이들의 conditionGroup이 최소 하나라도 true이면, true이다.
- Strat trigger
- StoryboardElement 런타임 인스턴스를 standbyState → runningState
- Stop trigger
- StoryboardElement 런타임 인스턴스를 standbyState / runningState → completeState
- element가 runningState일 때 trigger가 발생했다면, 실행이 즉각적으로 종료된다.
- Strat trigger
'임베디드 > Intern' 카테고리의 다른 글
ASAM OpenSCENARIO: User Guide | 7. Tutorial: How to create a scenario (0) | 2024.03.11 |
---|---|
ASAM OpenSCENARIO: User Guide | 6. Reuse mechanisms (0) | 2024.03.11 |
ASAM OpenSCENARIO: User Guide | 5. Scenario at runtime (1) | 2024.03.08 |
ASAM OpenSCENARIO: User Guide | 3. General Concepts (6) | 2024.03.08 |
ASAM OpenSCENARIO: User Guide | 1. Introduction (0) | 2024.03.08 |