OpenSCENARIO 지원 기능 개요

OpenSCENARIO 지원을 위해 Scenario Runner를 사용한다. Scenario Runner는 OpenSCENARIO 파일을 읽고, 해당 파일에서 정의한 시나리오가 수행될 수 있도록 Simulator 내 NPC Vehicle을 제어하는 역할을 수행한다.

Scenario Runner는 우선 OpenSCENARIO 파일과 이에 상응하는 MGeo 파일을 읽어들여, Simulator에서 구현되어야 할 시나리오의 내용을 메모리에 로드한다.

메모리에 로드된 시나리오는 OpenSCENARIO 포맷에서 Storyboard가 정의하는 바와 같이, 초기 상태와 일련의 Story 들로 구성되며, 궁극적으로는 초기 상태에서 시나리오가 시작하여 특정 StartTrigger 조건이 만족될 때 관련된 Action이 수행될 수 있도록 한다.

Scenario Runner의 핵심적인 동작은 gRPC Interface를 이용하여 Simulator와 통신을 수행하며, Ego 및 NPC 차량의 상태를 주기적으로 읽어, StartTrigger 조건이 만족되었는지 확인하고, 만족 여부에 따라 수행해야 할 Action에 맞도록 NPC 차량의 제어 명령을 Simaultor로 보내는 것이다.

예제 시나리오

3종류의 예제 파일을 통해 Scenario Runner의 동작을 소개한다.

예제 시나리오 파일 다운로드:

업데이트 예정입니다. (NPC 및 Ego Vehicle이 주행해야하는 세부 경로 추가)

OpenScenario_210720.zip

예제 1) NPC 차량 정차 시나리오

버스 또는 택시와 같이, 특정 위치에서 정차하는 차량을 모사하기 위한 시나리오이다.

NPC 차량은 시뮬레이션 시작 후 같은 속도를 유지하며 운행하다 정차 위치에 가까이 다가가면 (50m 이내로 가까워지면) 정차하는 모드로 제어 모드를 변경하여 해당 위치에 정차하도록 한다.

예제 2) Ego 차량 앞 NPC 차량 긴급 제동 시나리오

Ego 차량과 동일한 차선에서 주행하는 NPC 차량이 급정거하는 시나리오이다.

Ego 와 NPC 차량이 같은 차선에서 시작하는데, Ego 차량이 NPC 차량의 뒤에서 조금 더 빠른 속도로 주행하도록 한다. 두 차량은 일정 속도를 유지하며 주행하여, 두 차량 사이의 거리는 조금씩 가까워진다.

Ego 차량이 NPC 차량 뒤 일정 거리 내로 접근했을 때, NPC 차량은 동작 모드를 급제동 모드로 변경하여 급제동을 실시한다.

예제 3) Ego 차량 앞 NPC Cut-in

Ego 차량 앞으로 다른 차선에서 주행하던 NPC 차량이 끼어드는 시나리오이다.

NPC1, NPC2, Ego 차량 총 3대가 스폰되어 시뮬레이션이 수행되는데, NPC1과 Ego는 같은 차선에서, NPC1은 다른 차선에서 스폰된다. 셋 다 같은 속도를 유지하는데, NPC2는 다른 두 차량보다 빠른 속도로 주행한다.

NPC2가 Ego Vehicle 을 일정 거리만큼 추월했을 때 (예: 20m), NPC2는 NPC1과 Ego Vehicle 사이의 공간으로 차선 변경을 수행한다.

시나리오 수행 영상

예제 1) NPC 차량 정차 시나리오

Youtube Link: https://www.youtube.com/watch?v=HTU7WZr9ZC8

예제 2) Ego 차량 앞 NPC 차량 긴급 제동 시나리오

Youtube Link: https://www.youtube.com/watch?v=z0iX8xSKzKg

예제 3) Ego 차량 앞 NPC Cut-in

Youtube Link: https://www.youtube.com/watch?v=oXetFNq5ipc


© 2021 MORAI Inc.