Skip to main content
Skip table of contents

MORAI V2X (Add-on 기능)

본 페이지는 MORAI 자체적으로 제공하는 V2X 기능 사용 방법에 대하여 소개한다.


MORAI V2X

V2X란 Vehicle to Everything 의 약자로 차량과 차량, 인프라, 사람 등과 통신을 통해 여러 정보를 교환한다.

안전한 주행을 위해 SAE J2735 표준에서 지정하는 데이터를 상호 교환하며 MORAI Sim에서는 해당 기능의 일부를 지원한다.

  • Vehicle To Vehicle

    • 주변 NPC 차량이 Ego 차량에게 BasicSafetyMessage를 전송한다.

  • Infrastructure To Vehicle

    • 주변 교차로에서 지도 정보와 신호등 정보를 전송한다.

      • 지도 정보는 정밀도로지도와 다른 데이터이다.

MORAI V2X는 MORAI Sim에서 위 데이터를 표준에 맞추어 제공하는 Add-on 기능입니다. 기능 구입을 위해 Discord로 문의 부탁 드립니다.

기능 사용법

상단 메뉴에서 Tools > V2X 로 접근할 수 있다.

메뉴 구성

MORAI V2X 시뮬레이터가 가상의 단말기 역할을 하며 서버 역할을 수행한다.

MORAI V2X 설정 창은 다음의 항목들로 구성된다.

SIM IP

시뮬레이터가 서버 역할을 수행하기 위해 적용하는 IP 주소이다. Ego 차량들이 TCP 연결을 시도할 목적지 IP 주소이며 모든 Ego들에게 공통적으로 적용된다.

기본 값은 0.0.0.0이며 이는 시스템에서 자동으로 IP를 잡아주는 설정이다. 만일 하드웨어적으로 2개 이상의 네트워크 연결성을 가진다면 원하는 특정 IP를 설정해야 한다.
(eg. 1개의 Ethernet + 1개의 Wifi 조합에서 Wifi 연결망을 이용하고자 할 경우 Wifi의 네트워크 할당 IP를 적용)

Ego List

각각의 Ego 차량에 대하여 네트워크 연결을 켜고 끄는 항목이다. 왼쪽은 Ego 차량의 이름, 가운데는 TCP port 번호, 오른쪽은 켜고 끄는 토글 버튼이다.

토글 버튼의 상태는 다음과 같다.

  • 빨강 - 연결 종료 / 네트워크 닫힘 [기본 상태]

  • 노랑 - 네트워크 열림 / 연결 수신 중

  • 초록 - 네트워크 열림 / 연결됨

All Connect 버튼은 모든 Ego들을 한번에 연결 수신 중(노란색) 상태로 변경한다.
All Disconnect 버튼은 모든 Ego들을 한번에 연결 종료(빨간색) 상태로 변경한다.

NPC List

각각의 NPC 차량에 대하여 V2V 기능을 켜고 끄는 항목이다. 특정 NPC 차량만 V2V 기능을 우측의 토글 버튼을 이용하여 켜거나 끌 수 있으며 꺼져있는 NPC는 BasicSafetyMessage를 송출하지 않는다.

토글 버튼의 상태는 다음과 같다.

  • 빨강 - V2V 사용 안함 (BasicSafetyMessage 송출 중단) [기본 상태]

  • 초록 - V2V 사용 (BasicSafetyMessage 송출)

All Enable 버튼은 모든 NPC들을 한번에 V2V 사용(초록색) 상태로 변경한다.
All Disable 버튼은 모든 NPC들을 한번에 V2V 사용 안함(빨간색) 상태로 변경한다.

송출 데이터

송출되는 데이터는 SAE J2735 메시지만 포함되며 1609.2 (차량 통신 보안)과 1609.3 (WMTS)는 포함하지 않는다. 모든 데이터는 SAE J2735 및 ITSK 00100 표준에 맞추어 Unaligned PER 방식으로 인코딩되어 송출한다. 데이터는 MessageFrame 데이터 구조로 송출되며, messageId를 통해서 어떤 데이터인지 확인 후 value 항목을 디코딩하면 세부 데이터를 확인 가능하다.

신호등 정보 (SignalPhaseAndTiming)는 각 차선에 대한 신호등이 별도로 설치되는 북미 표준과 달리 한국은 단일 방향에 대한 공통 신호등을 참고하기 때문에 신호 구분체계가 다르게 설정된다. 이로 인해 현재 MORAI V2X는 다음의 데이터들을 송출한다.

  • V2V

    • BasicSafetyMessage (messageId: 20)

  • I2V

    • SignalPhaseAndTiming (messageId: 19)

    • Map Data (messageId: 18)

BasicSafetyMessage

차량 간 통신 항목인 BasicSafetyMessage는 다음의 항목들을 송출한다.

  • BasicSafetyMessage

    • coreData

      • msgCnt - 송출된 메시지 카운트

      • id - 차량의 고유 id 값

      • secMark - 송출시 타임 스탬프

      • lat - WGS84 좌표계 상에서 차량 중심의 latitude 좌표

      • long - WGS84 좌표계 상에서 차량 중심의 longitude 좌표

      • speed - 차량의 속도

      • heading - J2735 표준에 따르는 차량의 방향 각도

      • angle - 차량 앞바퀴의 각도

      • accelSet - 차량의 가속도 데이터

        • long - 차량 좌표계 기준에서 전진 성분의 가속도

        • lat - 차량 좌표계 기준에서 수직 성분의 가속도

        • vert - 지구 중심 방향의 가속도

        • yaw - 차량 방향의 각속

      • size - 차량의 크기

        • width - 차폭

        • length - 차량의 길이

SignalPhaseAndTiming

인프라에서 차량에게 송출하는 항목 중 하나인 SignalPhaseAndTiming은 다음의 항목들을 송출한다.

  • SPAT

    • timeStamp - 송출시 타임 스탬프

    • intersections - 각 교차로들에 대한 신호 정보들

      • IntersectionState - 단일 교차로의 상태

        • name - 교차로 이름 (Map Data와 동일)

        • id - 교차로 고유의 id (Map Data와 동일)

          • region - 해당 지역 id

          • id - 해당 교차로의 id

        • revision - 송출된 메시지 카운트

        • status - 해당 교차로 신호등들의 문제 상태

        • states - 각 신호등의 상태들

          • MovementState - 단일 신호등의 상태

            • movementName - 신호등이 해당하는 방향에 관한 이름

            • signalGroup - Map Data에서 해당하는 신호등 구분 id

            • state-time-speed - 신호등 상태 및 시간 관련 정보들
              - MovementEvent - 단일 신호 정보
              - eventState - 현재 신호등의 신호 상태 (eg. 정지, 직진 가능)
              - timing - 신호에 대한 시간들에 관한 정보
              - minEndTime - 다음 신호 상태로 변경되기까지 남은 시간

            • ManeuverAssistList - 신호 상태 외 보조 데이터
              - ConnectionManeuverAssist - 연결성 보조 데이터
              - pedBicycleDetect - 보행자 및 자전거 검출 여부

Map Data

인프라에서 차량에게 송출하는 항목 중 하나인 Map Data는 다음의 항목들을 송출한다.

  • MapData

    • timeStamp - 송출시 타임 스탬프

    • msgIssueRevision - 송출된 메시지 카운트

    • layerType - 지형 타입

    • Intersections - 교차로 정보들

      • IntersectionGeometry - 단일 교차로에 대한 정보

        • name - 교차로 이름

        • id - 교차로 고유의 id

          • region - 해당 지역 id

          • id - 해당 교차로의 id

        • revision - 맵 버전

        • refPoint - 상대 좌표 계산을 위한 교차로 내 기준 좌표

          • lat - WGS84 좌표계 상에서 차량 중심의 latitude 좌표

          • long - WGS84 좌표계 상에서 차량 중심의 longitude 좌표

        • laneWidth - 차선 폭

        • speedLimits - 규제속도에 대한 정보들

          • RegulatorySpeedLimit - 일반적인 규제 속도 정보

            • type - 규제속도 타입

            • speed - 규제속도

        • laneSet - 교차로에 연결된 차선 정보들

          • GenericLane - 단일 차선 정보

            • laneID - 차선 식별 고유 id

            • laneAttributes - 차선 속성
              - directionalUse - 교차로 중심을 기준으로 차선의 방향
              - sharedWith - 차선 공동사용 여부 구분
              - laneType - 차선 타입
              - vehicle - 차선이용 차량 구분

            • maneuvers - 차선에서 허용되는 행동

            • nodeList - 기준 좌표 기반 차선 오프셋
              - NodeXY - XY 기준 좌표

            • connectsTo - 연결되는 차선 정보들
              - connectingLane - 단일 연결 차선 정보
              - lane - 연결되는 차선 id
              - maneuver - 연결된 차선에 대한 허용된 행동
              - signalGroup - 차선에 적용되는 신호등 구분 id

MapData의 NodeXY의 상대 좌표는 SAE J2735 표준에 기술된 Vincenty Algorithm(Vincenty Algorithm wiki 참고)의 Inverse problem 방식을 토대로 계산된다. 이를 역산하기 위하여 Vincenty Algorithm의 Direct Problem 방식을 적용하면 WGS84 좌표계의 좌표가 나온다.

JavaScript errors detected

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

If this problem persists, please contact our support.