UDP 통신 설정

  • IP Setting

    • 시뮬레이터 PC에는 Host IP, 사용자 알고리즘 PC에는 Destination IP 입력

    • 사진과 같이 하나의 PC에서 모두 사용할 경우 다음과 같이 127.0.0.1 입력

    • 사용할 포트 입력(포트 중복 주의)

UDP Message Type

시뮬레이터에서 정의한 UDP 메시지 타입 사용(통신 프로토콜 참조)

Ego Network

Ego Ctrl Cmd

  • 차량 제어 명령

  • 전체 패킷 크기 : 55 Bytes

  • 데이터 크기 : 3 Bytes + 20 Bytes

    • CtrlMode 명령

      • 1 : KeyBoard

      • 2 : AutoMode

    • Gear 명령 (gear, byte)

      • M : 0

      • P : 1 (주차)

      • R : 2 (후진)

      • N : 3 (중립)

      • D : 4 (주행)

      • L : 5 (L단)

    • longCmdType (1byte / CmdType / byte)

      • 제어 방식을 결정하는 인덱스

        • longCmdType == 1: Throttle제어. accel/brake/steering

        • longCmdType == 2: Velocity제어. velocity/steering

        • longCmdType == 3: Acceleration제어.

    • 종방향 제어 명령 (4byte / Accel / float)

      • 데이터 설명 : 가속 페달 입력값 (0 ~ 1)

    • 종방향 제어 명령 (4byte / Brake / float)

      • 데이터 설명 : 브레이크 페달 입력값 (0 ~ 1)

    • 횡방향 제어 명령 (4byte / Steer / float)

      • 데이터 설명 : 횡방향 제어 입력값 (-1 ~ 1 )

      • 실제 제어 값 = 원하는 스티어링 값(degree) / 최대 조향각

      • ex) 최대 조향각 : Niro = 36.25 , ioniq = 36.25

    • 종방향 제어 명령 velocity (4byte / veloctiy / float)

      • longCmdType이 2일경우 사용. ( km/h )

    • 종방향 제어 명령 acceleration (4byte / Accel/ float)

      • longCmdType이 3일경우 사용. ( m/s^2 )

Ghost Ctrl Cmd

  • 타입 설명 : Ghost Mode 이용 Ego 차량을 제어하기 위한 메세지

  • 통신 프로토콜

    • 전체 패킷 크기 :

    • 데이터 크기 :

      • x_pos_ego (4byte / x_pos_ego / float)

        • ego 차량의 위치 지정 (X)

      • y_pos_ego (4byte / y_pos_ego / float)

        • ego 차량의 위치 지정 (Y)

      • z_pos_ego (4byte / z_pos_ego / float)

        • ego 차량의 위치 지정 (Z)

      • roll_ego (4byte / roll_ego / float)

        • ego 차량의 회전 지정 (roll)

      • pitch_ego (4byte / pitch_ego / float)

        • ego 차량의 회전 지정 (pitch)

      • yaw_ego (4byte / yaw_ego / float)

        • ego 차량의 회전 지정 (yaw)

      • speed_ego (4byte / speed_ego / float)

        • ego 차량의 속도 (Km/h)

      • steering_ego (4byte / steering_ego / float)

        • ego 차량 앞바퀴 조향 각도 (deg)


Ego Vehicle Status

  • 차량 상태 정보

    • 타입 설명 : 제어 차량을 제어하기 위한 메시지

    • 통신 프로토콜

      • 전체 패킷 크기 : 161 Bytes

      • 데이터 크기 : 42 Bytes + 90 Bytes

      • CtrlMode 정보

        • 1 : KeyBoard

        • 2 : AutoMode

      • gear 정보

        • M : 0

        • P : 1 (주차)

        • R : 2 (후진)

        • N : 3 (중립)

        • D : 4 (주행)

        • L : 5 (L단)

      • 차량 진행 방향 속도(4byte / signed velocity, float)

        • 데이터 설명 : 차량 진행 방향 속도를 나타내는 정보이며 단위는 km/h 이다.

      • Map data id 값 (Map data id, int)

        • DigitalTwin Map = 0 ~ 9999

        • Virtual Map = 10000 ~ 19999

      • 종방향 제어 명령 (4byte / Accel / float)

        • 데이터 설명 : 가속 페달 입력값 (0 ~ 1)

      • 종방향 제어 명령 (4byte / Brake / float)

        • 데이터 설명 : 브레이크 페달 입력값 (0 ~ 1)

      • Ego 차량 크기 정보(sizeXYZ, float)

        • 데이터 설명 : 오브젝트의 크기를 나타내는 정보이며 단위는 m이다.

      • 차량 Overhang 정보 (4byte / OverHang / float)

        • 데이터 설명 : Ego 차량의 OverHang 정보

      • 차량 WheelBase 정보 (4byte / WheelBase/ float)

        • 데이터 설명 : Ego 차량의 WheelBase 정보

      • 차량 Rear Overhang 정보 (4byte / Rear OverHang / float)

        • 데이터 설명 : Ego 차량의 Rear OverHang 정보

      • 차량 위치 정보(posXYZ, float)

        • 데이터 설명 : 차량의 위치를 나타내는 정보이며 단위는 m이다.

      • 차량 회전 정보(Roll/Pitch/Heading, float)

        • 데이터 설명 : 차량의 회전을 나타내는 정보이며 단위는 deg이다.

      • 차량 속도 정보(4Byte * 3 / Velocity_XYZ / float)

        • 데이터 설명 : 차량의 현재 속도를 나타내는 정보이며 단위는 km/h이다.

          • float x

          • float y

          • float z

      • acceleration (4Byte * 3 / Accel_XYZ / float)

        • 차량의 가속도 벡터 ( m/s^2 )

          • float x

          • float y

          • float z

      • 차량 횡방향 정보(Steer, float)

        • 데이터 설명 : 차량의 횡방향을 나타내는 정보이며 단위는 deg이다.

      • 차량이 위치한 Mgeo Link 의 ID 정보 ( 38 byte / Link ID / String) (New)


Object Info

  • 주변 물체 정보

    • 타입 설명 : 사용자가 배치한 주변 물체에 대한 정보를 나타내는 메시지

    • 통신 프로토콜

      • 전체 패킷 크기 : 2152 Bytes

      • 데이터 크기 : 2120 Bytes(106 Bytes * 20)

        • 데이터는 주변 차량, 보행자, Object 를 현재 자신의 차량의 거리가 가까운 순으로 총 20개 Object 의 데이터를 얻을 수 있다.

      • Object 아이디(인덱스) 정보(2byte / Objid / int)

        • 데이터 설명 : Object 의 Unique ID 를 나타내는 정보

      • Object 타입 정보(ObjType, short)

        • 데이터 설명 : Object 의 타입을 나타내는 정보이다.

          • Ego Vehicle : -1 (ROS 의 경우 Ego Type 을 -1 로 정의 중 이여서 추가 하였음)

          • 보행자 : 0

          • 주변 차량 : 1

          • Object : 2

      • Object 위치 정보(posXYZ, float)

        • 데이터 설명 : Object 의 위치를 나타내는 정보이며 단위는 m이다.

      • Object 회전 정보(Heading, float)

        • 데이터 설명 : Object 의 회전을 나타내는 정보이며 단위는 deg이다.

      • Object 크기 정보(sizeXYZ, float)

        • 데이터 설명 : Object 의 크기를 나타내는 정보이며 단위는 m이다.

      • Object Overhang 정보 (4byte / OverHang / float)

        • 데이터 설명 : Object 의 OverHang 정보

      • Object WheelBase 정보 (4byte / WheelBase/ float)

        • 데이터 설명 : Object 의 WheelBase 정보

      • Object Rear Overhang 정보 (4byte / Rear OverHang / float)

        • 데이터 설명 : Object 의 Rear OverHang 정보

      • Object 의 속도 정보(4Byte * 3 / Velocity_XYZ / float)

        • 데이터 설명 : Object 의 현재 속도를 나타내는 정보이며 단위는 km/h이다.

          • float x

          • float y

          • float z

      • Object 의 acceleration (4Byte * 3 / Accel_XYZ / float)

        • Object 의 가속도 벡터 ( m/s^2 )

          • float x

          • float y

          • float z

      • Object 가 위치한 Mgeo Link 의 ID 정보 ( 38 byte / Link ID / String) (New)

Get TrafficLight Status

  • 신호등 상태 정보

    • 타입 설명 : 신호등 상태 정보를 나타내는 메시지

    • 통신 프로토콜

      • 전체 패킷 크기 : 48 Bytes

      • 데이터 크기 : 16 Bytes

      • trafficLightIndex

        • 메시지 설명 : 신호등의 ID

      • trafficLightType

        • 메시지 설명 : 신호등의 종류

          • 3구(R-Y-G) : 0

          • 3구(R-Y-GLeft) : 1

          • 4구(R-Y-GLeft-G) : 2

          • 3구(Y-Y-Y) : 100

      • trfficLightStatus

        • 메시지 설명 : 신호등의 신호 상태

          • Red : 1

          • Yellow : 4

          • Green : 16

          • GreenLeft : 32

          • Green with GreenLeft : 48

          • Yellow with Green : 20

          • Yellow with GreenLeft : 36

          • Red with Yellow: 5

          • default : -1


Set TrafficLight Ctrl

  • 신호등 상태 정보

    • 타입 설명 : 신호등 상태를 제어하는 메시지

    • 통신 프로토콜

      • 전체 패킷 크기 : 46 Bytes

      • 데이터 크기 : 14 Bytes

      • trafficLightIndex

        • 메시지 설명 : 신호등의 ID

      • trafficLightStatus

        • 메시지 설명 : 신호등의 신호 상태를 설정함.

          • Red : 1

          • Yellow : 4

          • Green : 16

          • GreenLeft : 32

          • Green with GreenLeft : 48

          • Yellow with Green : 20

          • Yellow with GreenLeft : 36

          • Red with Yellow: 5

          • default : -1


Collision Data

  • 충돌 정보

    • 타입 설명 : Ego 차량과의 충돌 데이터를 나타내는 메시지

    • 통신 프로토콜

      • 전체 패킷 크기 : 173 Byte

      • 데이터 크기 : 140(28*5)Bytes

      • 오브젝트 타입 정보(2byte / ObjType / short)

        • 데이터 설명 : Ego Vehicle 과 충돌한 오브젝트의 타입을 나타내는 정보이다.

          • Ego Vehicle : -1

          • 보행자 : 0

          • 주변 차량 : 1

          • 오브젝트 : 2

      • 오브젝트 아이디(인덱스) 정보(2byte / Objid / short)

        • 데이터 설명 : Ego Vehicle 과 충돌한 오브젝트의 Unique ID 를 나타내는 정보

      • 오브젝트 위치 정보(4byte / posXYZ / float)

        • 데이터 설명 : Ego Vehicle 과 충돌한 오브젝트의 위치를 나타내는 정보이며 단위는 m이다.

      • 글로벌 오프셋 정보 (4byte / posXYZ / float)

        • global_offset_x

        • global_offset_y

        • global_offset_z


Get Intersection Status

교차로 정보

  • 타입 설명 : 교차로 정보

  • 통신 프로토콜

    • 전체 패킷 크기 : 37 Bytes

    • 데이터 크기 : 8 Bytes

    • 교차로 인덱스 (2 byte / IntIndex / short)

      • 교차로의 인덱스 나타냄

    • 교차로 상태 (2 byte / IntStatus / short)

      • 교차로의 상태를 나타냄

    • 현재 교차로 상태로 지난 시간 (4 byte / IntTime / float)

      • intersection_status_time


Set Intersection Status

교차로 제어

  • 타입 설명 : 교차로 제어 정보

  • 통신 프로토콜

    • 전체 패킷 크기 : 40 Bytes

    • 데이터 크기 : 8 Bytes

    • 교차로 인덱스 (2 byte / IntIndex / short)

      • 교차로의 인덱스 나타냄

    • 교차로 상태 (2 byte / IntStatus / short)

      • 교차로의 상태

    • 세팅한 교차로 상태의 지난 시간 (4 byte / IntTime / float)

      • intersection_status_time


Scenario Load

타입 설명 : 시나리오 .json 파일을 Load

  • 통신 프로토콜

    • 전체 패킷 크기 : 69 Bytes

    • 데이터 크기 : 37 Bytes

    • file_name (30 byte / filename / string)

      • 불러올 .json 형식의 파일 이름 결정

        • 30 byte 이내의 이름이여야 하며 .json 은 붙이지 않는다.

        • 파일이름이 30 byte 이하인경우 남는 byte 수 (30 Byte - 파일이름 Byte) 만큼 공백으로 처리해서 Byte 수를 맞춰 보내준다.

    • delete_all (1 byte / delete_all /bool )

      • True : Ego를 제외한 Scenario Data를 Delete 하고 Load

      • False : 모든 Scenario Data Load

        • delete_all 이 False 일때 아래의 Load Option을 사용해서 원하는 Scenario Data Load 가능.

    • load_network_connection_data (1 byte / network /bool )

      • True : network connection Load

      • False : network connection Load 안함

    • load_ego_vehicle_data (1 byte / ego_vehicle /bool )

      • True : Ego Scenario Data Load

      • False : Ego Scenario Data Load 안함

    • load_surrounding_vehicle_data (1 byte / npc_vehicle /bool )

      • True : NPC Vehicle Scenario Data Load

      • False : NPC Vehicle Scenario Data Load 안함

    • load_pedestrian_data (1 byte / pedestrian /bool )

      • True : pedestrian Scenario Data Load

      • False : pedestrian Scenario Data Load 안함

    • load_object_data (1 byte / object /bool )

      • True : Object Scenario Data Load

      • False : Object Scenario Data Load 안함

    • set_pause (1 byte / pause /bool )

      • True : Scenario Load 후 Pause 상태로 유지 (Esc 키를 입력하여 Play 상태 전환 가능)

      • False : Scenario Load 후 바로 Play상태로 전환


SaveSensorData

  • 타입 설명 : 현재 센서의 데이터를 저장

  • 통신 프로토콜

    • 전체 패킷 크기 : 125 Bytes

    • 데이터 크기 : 91 Bytes

    • is_custom_file_name (1 byte / custom / bool)

      • false 실행 시 시뮬레이터 파일의 SaveFile\SensorData 경로에 Data 저장

    • custom_file_name (30 byte / file name / String)

      • (is_custom_file_name : true 설정 시 사용) 저장할 file 이름

    • file_dir (60 byte / file dir/ String)

      • (is_custom_file_name : true 설정 시 사용) 저장할 file의 경로


Sensor Control

  • 타입 설명 : 센서의 위치를 Control

  • 통신 프로토콜

    • 전체 패킷 크기 : 59 Bytes

    • 데이터 크기 : 26 Bytes

    • sensor_index (2 byte / Sensor Index/ int)

      • 위치를 제어할 센서 인덱스 번호 이름
        센서 Index는 아래 사진과 같이 센서 옆에 적혀있는 번호로 한다 [2,1,3,4]

      • 센서 위치 정보(4 byte / posXYZ / float)

        • 데이터 설명 : 센서의 위치를 나타내는 정보이며 단위는 m이다.

      • 센서 회전 정보(4 byte *3 / Roll Pitch Heading / float)

        • 데이터 설명 : 센서의 회전을 나타내는 정보이며 단위는 deg이다.


Turn Signal Lamp Control

  • 타입 설명 : 방향 지시등 제어

  • 통신 프로토콜

    • 전체 패킷 크기 : 33 Bytes

    • 데이터 크기 : 2 Bytes

    • trunSignal (1byte / turnSignal / byte)

      • 0 : No Signal

      • 1 : Left Signal

      • 2 : Right Signal

    • emergencySignal (1byte / emergencySignal / byte)

      • 0 : No Signal

      • 1 : Emergency Signal

Simulator Network

Multi Ego Setting

  • Multi_Ego 제어 명령

  • 타입 설명 : 여러대의 ego 차량의 위치, 회전, 속도, 기어 등을 세팅할 수 있게 하는 메시지

  • 통신프로토콜

    • 전체 패킷 크기 : 683 Bytes

    • 데이터 크기 : 648 Bytes(4 + 4 + 32 Bytes * 20)

    • 데이터 정보

      • num_of_ego(int, 4byte)

        • 데이터 설명 : 제어할 차량의 개수

      • camera_index(short, 2byte)

        • 데이터 설명 : 어떤 차량에 카메라를 고정시킬지 정함. 차량의 인덱스 번호를 적는다.

      • ego_index(short, 2byte)

        • 데이터 설명 : 세팅할 ego 차량의 인덱스 번호

      • position_x, position_y, position_z(float, 4byte)

        • 데이터 설명 : 세팅할 ego 차량의 position 단위 m

      • roll, pitch, yaw(float, 4byte)

        • 데이터 설명 : 세팅할 ego 차량의 roll, pitch, yaw 단위 deg

      • velocity(float, 4byte)

        • 데이터 설명 : 세팅할 ego 차량의 속도 단위 km/h

      • gear(byte, 1byte)

        • 데이터 설명 : 세팅할 ego 차량의 기어

          • 1 : Parking

          • 2 : Rear

          • 3 : Neutral

          • 4 : Drive

      • ctrl_mode(byte, 1byte)

        • 데이터 설명 : 세팅할 ego 차량의 control mode

          • 1 : keyboard

          • 16 : automode

NPC Vehicle Collision Data

  • 타입 설명 : NPC 차량의 충돌 데이터를 나타내는 메시지

  • 통신 프로토콜

    • 전체 패킷 크기 : 1156 Bytes

    • 데이터 크기 : 1120 Bytes(112 Bytes * 10)

      • 데이터는 주변 차량, 보행자, 오브젝트를 현재 자신의 차량의 거리가 가까운 순으로 총 20개 오브젝트의 데이터를 얻을 수 있다.

    • 1번 오브젝트 타입 정보(ObjType, short)

      • 데이터 설명 : 오브젝트의 타입을 나타내는 정보이다.

        • Ego Vehicle : -1

        • 보행자 : 0

        • 주변 차량 : 1

        • 오브젝트 : 2

    • 1번 오브젝트 아이디(인덱스) 정보(2byte / Objid / short)

      • 데이터 설명 : Ego Vehicle 과 충돌한 오브젝트의 Unique ID 를 나타내는 정보

    • 1번 오브젝트 위치 정보(posXYZ, float)

      • 데이터 설명 : 오브젝트의 위치를 나타내는 정보이며 단위는 m이다.

    • 1번 오브젝트 회전 정보(Heading, float)

      • 데이터 설명 : 오브젝트의 회전을 나타내는 정보이며 단위는 deg이다.

    • 1번 오브젝트 크기 정보(sizeXYZ, float)

      • 데이터 설명 : 오브젝트의 크기를 나타내는 정보이며 단위는 m이다.

    • 1번 오브젝트 속도 정보(4Byte * 3 / Velocity_XYZ / float)

      • 데이터 설명 : NPC의 현재 속도를 나타내는 정보이며 단위는 km/h이다.

        • float x

        • float y

        • float z

    • 1번 오브젝트의 acceleration (4Byte * 3 / Accel_XYZ / float)

      • 차량의 가속도 벡터 ( m/s^2 )

        • float x

        • float y

        • float z

    • 2번 오브젝트 타입 정보(ObjType, short)

      • 데이터 설명 : 오브젝트의 타입을 나타내는 정보이다.

        • Ego Vehicle : -1

        • 보행자 : 0

        • 주변 차량 : 1

        • 오브젝트 : 2

    • 1번 오브젝트 아이디(인덱스) 정보(2byte / Objid / short)

      • 데이터 설명 : Ego Vehicle 과 충돌한 오브젝트의 Unique ID 를 나타내는 정보

    • 2번 오브젝트 위치 정보(posXYZ, float)

      • 데이터 설명 : 오브젝트의 위치를 나타내는 정보이며 단위는 m이다.

    • 2번 오브젝트 회전 정보(Heading, float)

      • 데이터 설명 : 오브젝트의 회전을 나타내는 정보이며 단위는 deg이다.

    • 2번 오브젝트 크기 정보(sizeXYZ, float)

      • 데이터 설명 : 오브젝트의 크기를 나타내는 정보이며 단위는 m이다.

    • 2번 오브젝트 속도 정보(4Byte * 3 / Velocity_XYZ / float)

      • 데이터 설명 : NPC의 현재 속도를 나타내는 정보이며 단위는 km/h이다.

        • float x

        • float y

        • float z

    • 2번 오브젝트의 acceleration (4Byte * 3 / Accel_XYZ / float)

      • 차량의 가속도 벡터 ( m/s^2 )

        • float x

        • float y

        • float z