UDP 설정 방법 및 프로토콜
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
