Skip to main content
Skip table of contents

시나리오 편집

(이 페이지에서는 Scenario Runner를 통해 생성하거나 로드한 시나리오를 편집하는 방법에 대하여 다룬다. 편집 방법에는 크게 UI를 통한 OpenSCENARIO 요소 생성과 위젯을 통한 속성 변경 및 요소 삭제가 있다.

목차


OpenScenario Element 생성

Scenario Element 생성

OpenSCENARIO 에서 정의된 Elements 들을 Data View 에서 생성하고, 정의할 수 있다. 대표적으로 Entities, Storyboard, Story, 그리고 Act 해당되는 하위 항목에 Elements 들을 추가하고 세팅할 수 있다.

Data View 를 통해서 Scenario Element 생성

  • 좌측 Data View 에서 추가할 항목 상위의 element 를 마우스 우 클릭으로 통해서 생성할 수 있다.

Data View 에서 OpenScenario 에서 정의된 element 를 클릭했을때, addset 을 확인할수 있는데, add 같은 경우에는 scenario element 의 Cardinality 가 0 이상일 경우에 그 add 할 element 를 추가를 시켜주며, set 같은 경우 Cardinality 가 xor 이나 값이 하나로 지정하고 싶을때 사용한다.

Scenario Object 생성

Scenario Object 에는 세 가지 종류(Vehicle, Pedestrian, Miscellaneous object)가 있으며, 두 가지 방법으로 생성할 수 있다.

1. 메인 메뉴를 통한 생성

  • Edit > Add Scenario Objects > Vehicle 을 선택하여 차량 생성 UI를 불러온다.

Image

차량의 이름, 차종, 초기 위치 및 속도를 입력한 후 OK 를 클릭하여 생성한다.

위치 정보는 World Position, Link Position, Relative World Position(orientation=absolute), Relative Object Position(orientation=absolute) 의 4 가지 포맷으로 입력할 수 있으며, Link Position으로 입력할 경우 차량의 heading 은 자동으로 설정된다.

또한 MORAI에서 정의된 Vehicle Property 에 Check TL(Traffic Light) 과 Apply ACC(Adaptive Cruise Control) 을 옵션으로 주어, 차량이 신호등을 볼수 있거나, 앞차의 간격을 유지시킬 수 있게 할수 있다.

텍스트, 스크린샷, 번호, 디스플레이이(가) 표시된 사진  자동 생성된 설명
텍스트, 스크린샷, 도표, 소프트웨어이(가) 표시된 사진  자동 생성된 설명
  • 같은 방법으로 Pedestrian 및 Miscellaneous object 도 생성할 수 있다.

Image
Image
텍스트, 스크린샷, 도표, 소프트웨어이(가) 표시된 사진  자동 생성된 설명

2. 선택된 Link point 에 생성

  • 좌측 Data View 에서 LINK 를 클릭한 뒤, 생성하기 원하는 링크를 클릭하고, 키보드 위/아래 방향키를 이용하여 원하는 지점을 선택한다.

텍스트, 스크린샷, 평행, 번호이(가) 표시된 사진  자동 생성된 설명
  • 마우스 우클릭 > Add Scenario Objects 를 활용하여 같은 방법으로 Scenario object를 생성할 수 있으며, 이 경우 위치 항목이 미리 채워져 있는 것을 확인할 수 있다.

텍스트, 스크린샷, 평행, 도표이(가) 표시된 사진  자동 생성된 설명
텍스트, 스크린샷, 번호, 폰트이(가) 표시된 사진  자동 생성된 설명
텍스트, 스크린샷, 소프트웨어이(가) 표시된 사진  자동 생성된 설명

3. Data View 에서 Entities 를 마우스 우 클릭을 통한 Scenario Objects 생성

이 방법을 통해서 생성했을 시, 차량의 속력과 위치를 따로 추가해야 한다. (아래의 예시를 참고)

Data View 에서 Entities 선택한 이후, 오른쪽 클릭을 했을 시, Add Entity Wizard 를 통해서, Scenario Object 들을 아래와 같이 생성할 수 있다.

텍스트, 스크린샷이(가) 표시된 사진  자동 생성된 설명

Add_Scenario_Objects UI 와 같아 보일수 있지만, 해당되는 차량의 속력 값과 위치 값을 설정할 수 없으며, Entity Type 에는 Scenario Object(Vehicle / Pedestrian / MiscObject)의 종류를 지정할 수 있다.

텍스트, 스크린샷이(가) 표시된 사진  자동 생성된 설명

이후 Vehicle / Pedestrian / MiscObject 의 위치 값이나 속력(MiscObject 제외)의 정보를 넣으려면, Data View 에서, Storyboard > Init > InitActions 마우스 우 클릭을 해서, 해당 entity 의 private action 을 만들어주어야 한다.

텍스트, 스크린샷, 도표이(가) 표시된 사진  자동 생성된 설명

아래와 같이, Entity Ref 를 눌렀을 때, 현재 Scenario Object 리스트들을 볼수 있고, 위의 예제에 만든 NPC_4 를 클릭해서, NPC_4의 속력과 위치를 정할 수 있다

텍스트, 스크린샷, 소프트웨어, 도표이(가) 표시된 사진  자동 생성된 설명

SpeedActionTarget 아래의 Type 은 두가지로 LinkCustom 으로 나누어져 있으며. Link 같은 경우, 그 링크의 제한 속력을 기준으로 scaling 한 값을 range 로 입력하면 되고, Custom 일 경우에는 Link 속력과 관계없이 속력을 정해줄 수 있다.

Entity Wizard 안에서 NPC_4의 초기 위치를 설정

NPC_4의 초기 속력 설정 및 위치 결과 화면

Event 생성

1. Event UI 를 통한 생성

  • Edit > Add Event 를 클릭하여 이벤트 생성 UI를 불러온다.

텍스트, 스크린샷, 소프트웨어, 멀티미디어 소프트웨어이(가) 표시된 사진  자동 생성된 설명
  • Event 생성에 필요한 정보를 입력한 뒤, ‘OK’ 를 클릭한다.
    Event 생성에 필요한 정보는 일반적으로 ASAM OpenSCENARIO의 정의에 따르며, 추가 정보는 OpenSCENARIO Support 페이지를 통해 확인할 수 있다.

텍스트, 스크린샷, 도표이(가) 표시된 사진  자동 생성된 설명

2. Data View 에서 Maneuver 를 마우스 우 클릭을 통한 Event 생성

원하는 Event 를 생성하려면, 해당되는 Maneuver 에 마우스 오른쪽 우 클릭을 통해서, Add Event를 클릭한다.

텍스트, 스크린샷, 도표이(가) 표시된 사진  자동 생성된 설명

아래와 같이 Event element 가 생성이 된 걸 확인할 수 있다. 이 방법으로 Event element 를 생성시, Event 안에 attributes 의 값들이 기본값(unspecified) 로 저장된 걸 오른쪽 Property View 에서 확인할 수 있으며, 보여지는 attributes 를 수정 가능하다.

텍스트, 스크린샷, 도표이(가) 표시된 사진  자동 생성된 설명

만약 Event 안에 있는 elements(Action, Trigger) 를 추가하려면, Event 하위 항목에 있는 element 이기 때문에 추가하려는 Event 마우스 우 클릭을 통해서 Action 과 StartTrigger 를 추가할 수 있다. 또한 아래와 같이 MyManeuverGroup 안에 있는 Actor(NPC_2)에 새롭게 생성된 Event Element 를 확인할 수 있다.

아래와 같이 Action Wizard 를 통해서 해당하는 Event 의 longitudinal action > SpeedAction element 를 생성할 수 있다.

텍스트, 스크린샷, 소프트웨어이(가) 표시된 사진  자동 생성된 설명

위에서 Action 을 추가하는 것처럼, 아래 Set Trigger 를 통해서 ConditionGroup element 를 생성해, Condition element 를 만들 수 있다. 이후 ConditionGroup 을 만들려면, Trigger element 에 마우스 우클릭으로 Add ConditionGroup 을 생성하면 된다.

텍스트, 스크린샷, 소프트웨어이(가) 표시된 사진  자동 생성된 설명
텍스트, 스크린샷이(가) 표시된 사진  자동 생성된 설명

이후 ConditionGroup 을 마우스 우 클릭을 하고, Submenu 에서 Add Condition Wizard 클릭하면 아래와 같이 Condition element 세팅할 수 있는 화면을 볼 수 있다.

텍스트, 스크린샷, 소프트웨어, 디스플레이이(가) 표시된 사진  자동 생성된 설명
텍스트, 스크린샷, 소프트웨어, 번호이(가) 표시된 사진  자동 생성된 설명

Element attribute 수정

  1. 좌측의 Data View 에서, 수정하고자 하는 속성(attribute)를 포함하는 요소(element) 또는 그 상위 요소를 클릭한다.

    • 오른쪽의 Properties View 에 클릭한 요소 및 하위 요소의 속성 값이 표시된다.

  2. Properties View 에서, 수정하고자 하는 속성을 더블클릭한다.

  3. 팝업된 Property Editor 에 수정된 값을 입력하고 'OK' 버튼을 클릭한다.

텍스트, 스크린샷, 도표이(가) 표시된 사진  자동 생성된 설명
텍스트, 스크린샷, 도표이(가) 표시된 사진  자동 생성된 설명
  • OpenScenario 에서 정의된 Enumerations Type 들은 ComboBox 의 UI 형태로 되어있다.

스크린샷, 텍스트, 소프트웨어, 그래픽 소프트웨어이(가) 표시된 사진  자동 생성된 설명

Element 삭제

  1. 좌측의 Data View 에서, 삭제하고자 하는 요소(element)를 우 클릭하고 Delete 버튼을 클릭한다.

  2. 삭제 확인 팝업 창의 OK 를 눌러 요소를 삭제한다.

텍스트, 스크린샷, 소프트웨어이(가) 표시된 사진  자동 생성된 설명
  • 삭제가 불가능한 요소의 삭제를 시도할 경우, 명령이 무시되고 하단에 로그가 출력된다.
    (상위 요소가 해당 하위 요소를 반드시 필요로 하는 경우 삭제할 수 없다)

텍스트, 스크린샷, 소프트웨어이(가) 표시된 사진  자동 생성된 설명

차량 경로 편집

Trajectory 편집

  • Trajectory는 차량 또는 보행자의 이동 경로를 나타내며 다양한 수학적 모양을 가질 수 있다.

    • 수학적 모양은 Polyline, Clothoid, Nurbs의 세가지 모양으로 나뉜다.

    • 차량이나 보행자가 어떤 Trajectory를 따라갈지 정의할 때 이러한 모양들을 활용할 수 있다.
      (현재 Polyline만 지원되며, Clothoid와 Nurbs는 지원 안됨)

  • Follow Trajectory 를 사용하기 위해서는, Trajectory 도 편집도 필요

    • Trajectory의 동작은 시간(TimeReference) 정보와 함께 정의된다.

    • TimeReference는 Timing으로 지정이 되어있을 때, 어떠한 지점(Vertex)를 어느 시점에 도착할건지를 Absolute와 Relative로 저장할 수 있다.

    • Absolute로 지정되어 있을 때 각 지점마다 도착 해야되는 시간을 의미하며, Relative일 경우, 각 지점 간의 상대시간을 표현한다.

  • Morai Defined & Custom Element로서 Spline이 있다.

    • Spline 같은 경우, 값을 각도와 위치값(Vertex)로 받는다.

  • https://releases.asam.net/OpenSCENARIO/1.0.0/Model-Documentation/content/FollowTrajectoryAction.html

경로 생성

차량이 이미 출발위치에 배치되어 있을 경우, Set Start Location 과정을 생략할 수 있다.

  • 경로를 설정하기 원하는 차량의 Private element 를 클릭한다.

  • 원하는 링크를 클릭한 뒤, 키보드 위/아래 방향키를 사용하여 차량의 출발지점을 선택한다.

  • 선택한 지점을 우 클릭하여 Set Start Location 을 클릭한다.

텍스트, 스크린샷, 도표, 평행이(가) 표시된 사진  자동 생성된 설명
텍스트, 스크린샷, 소프트웨어, 도표이(가) 표시된 사진  자동 생성된 설명
  • 같은 방식으로 원하는 목적지를 선택한 후, 우 클릭하여 Add Waypoints 클릭한다.

텍스트, 스크린샷, 소프트웨어, 도표이(가) 표시된 사진  자동 생성된 설명
텍스트, 스크린샷, 소프트웨어, 번호이(가) 표시된 사진  자동 생성된 설명
  • 같은 방법으로 Waypoint 를 추가하면, 이전에 추가한 Waypoint 는 경유지점이 되고, 마지막 Waypoint 가 목적지가 된다. 이 때, Waypoint 사이의 경로는 임의의 최단경로로 설정된다.

경로 삭제

  • 경로를 삭제하고자 하는 차량의 Private element 를 클릭한다.

  • 마우스 우 클릭하여 Delete Waypoint 를 클릭한다.

해당 차량의 마지막 Waypoint 부터 순차적으로 삭제되며, 남은 Waypoint 가 2개 미만일 경우 Routing Action 이 삭제된다.

텍스트, 스크린샷, 소프트웨어, 그래픽 소프트웨어이(가) 표시된 사진  자동 생성된 설명

부가 기능

WorldPosition의 Z축 투영

배치된 물체의 고도(Z축)값을 모를 경우, WorldPosition으로 X, Y 축 값을 입력한 뒤, Scenario Runner 의 Z축 투영 기능을 이용하여 고도값을 생성할 수 있다.

  • Project all WorldPosition onto roads

    • 물체의 위치를 현재 위치와 가장 가까운 도로 위로 이동시킨다.

  • Project all WorldPosition onto roads (ignore z-coord)

    • 물체의 위치를 현재 위치와 가장 가까운 도로 위로 이동시킨다. 가까운 도로를 찾기 위해 거리 계산 시 고도 차이는 고려하지 않는다.

텍스트, 스크린샷, 도표이(가) 표시된 사진  자동 생성된 설명


© 2022 MORAI Inc.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.