GADC V2X Protocol
개요
V2X 시스템은 V2I와 V2V로 나뉘어 구동되며 경기 자율주행센터에서 제공하는 단말기를 기준으로 구성됨.
V2I
SPAT (신호현시 정보)
V2V
BSM (차량 주행 정보)
V2I 데이터
Signal Phase and Timing (신호 현시 정보)
신호 현시 정보는 차량과 중앙관제간 N:1 통신으로 진행되며 Request - Response 형태로 데이터를 주고 받는다.
통신은 TCP/IP 방식을 사용하며 다음과 같은 설정을 사용한다.
IP: localhost (127.0.0.1)
port: 5000
Little-Endian
Request Packet
STX는 해당 패킷의 시작을 알리는 데이터이며 1바이트로 2번 들어간다.
STX는 0x7E로 고정
Length는 전체 데이터중에서 STX만을 제외한 데이터 사이즈이다.
Request packet의 경우 0x1F (31)이 들어가게 된다.
Vehicle ID는 관제측에서 차량 구분을 위하여 사용하는 데이터이며 원하는 값을 넣으면 된다.
ex) 0x0001
OP Code는 경기 자율주행센터의 프로토콜에 따라 값이 결정된다.
제어기 신호 및 상태정보 요청: 0x12
Intersection Link ID는 요청하고자 하는 신호등이 위치한 교차로 번호이다.
Link ID는 string 데이터 형태로 들어간다.
교차로 번호 정보는 “경기자율주행센터_신호현시_현황정보.pdf” 첨부 파일을 참고할 것.
“0” 6개 (6 byte) + 교차로 ID (2 byte)
ex) “00000012” → 0x30 0x30 0x30 0x30 0x30 0x30 0x31 0x32
Traffic Light Link ID는 요청하고자 하는 신호등의 번호이다.
Link ID는 string 데이터 형태로 들어간다.
신호등의 방향번호 체계는 다음과 같다.
최종적으로 들어가는 데이터는 다음과 같다.
Intersection Link ID (2 byte) + “0” 9개 (9 byte) + 신호등 방향 번호 (1 byte)
ex) “120000000002” → 0x31 0x32 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x32
Current Time은 요청패킷을 보낼 때의 시간을 의미한다.
포멧은 YY(연) MM(월) DD(일) hh(시) mm(분) ss(초) 이며 24h 기준 (0시 ~ 23시)으로 작성한다.
ex) 21 02 19 14 30 00 (21년 2월 19일 오후 2시 30분) → 0x15 0x02 0x13 0x0E 0x1E 0x00
LRC는 데이터 무결성 검증용 데이터이다.
Length에서부터 Current Time까지의 데이터 바이트들을 순차적으로 XOR 연산한다.
(STX 2 byte와 LRC 1byte만 제외하는 형태)
Response Packet
STX는 해당 패킷의 시작을 알리는 데이터이며 1바이트로 2번 들어간다.
STX는 0x7E로 고정
Length는 전체 데이터중에서 STX만을 제외한 데이터 사이즈이다.
Request packet의 경우 0x1F (31)이 들어가게 된다.
Device ID는 관제 서버 ID가 들어가며 0x00 0x14로 고정됨
OP Code는 경기 자율주행센터의 프로토콜에 따라 값이 결정된다.
제어기 신호 및 상태정보 응답: 0x13
Intersection Link ID는 요청하고자 하는 신호등이 위치한 교차로 번호이다. (Response Packet 참고)
정상적인 데이터 출력시 해당 영역은 Request Packet과 동일한 값이다.
만일 존재하지 않는 교차로 ID나 사용불가능한 ID가 요청할 시 Request Packet과 다른 값이다.
Traffic Light Link ID는 요청하고자 하는 신호등의 번호이다. (Response Packet 참고)
정상적인 데이터 출력시 해당 영역은 Request Packet과 동일한 값이다.
만일 존재하지 않는 교차로 ID나 존재하지 않는 신호등 ID, 사용불가능한 ID를 요청할 시 Request Packet과 다른 값이다.
Light State는 요청한 신호등의 현재 신호 상태이다.
각 비트의 위치에 따른 데이터 의미가 다르며 해당 비트들이 1일 경우 True, 0일 경우 False이다.
Ped Time은 보행등 잔여시간이다.
A Ring / B Ring 은 신호제어기의 더블링 시퀀스 타임에 해당하는 A Ring time과 B Ring time이다.
해당 데이터를 이용하여 청색등일 때에 남은 시간을 계산할 수 있으며 적색등과 황색등에서는 남은 시간을 계산할 수 없게 되어있다.
“교통신호제어기 표준규격서.pdf” 첨부파일의 19 ~ 24 참고
SC는 특수제어 상태 데이터이며 신호등이 정상적인 작동이 아닌 특수하게 제어되고 있는 상태에서 사용된다.
Error는 장치이상 상태 데이터이며 신호등 혹은 신호등과 연결된 인프라 단말기의 문제 상태 등에 관하여 사용된다.
LRC는 데이터 무결성 검증용 데이터이다.
Length에서부터 Current Time까지의 데이터 바이트들을 순차적으로 XOR 연산한다.
(STX 2 byte와 LRC 1byte만 제외하는 형태)
교통신호제어기_표준규격서.pdf 경기자율주행센터_신호현시_현황정보.pdf
V2V 데이터
Basic Safety Message 송수신
Basic Safety Message는 차량과 차량간 N:N 통신으로 진행되며 Broadcast 형태로 데이터를 주고 받는다.
통신은 UDP 방식을 사용하며 다음과 같은 설정을 사용한다.
IP: localhost (127.0.0.1)
port: 5641
만일 Ego vehicle이 2대 이상일 경우 5641을 기준으로 V2V 사용 체크를 할 때 마다 마지막 포트번호에 +1이 됨.
ex. Ego 2대 → 0번 Ego: 5641, 1번 Ego: 5642
Little-Endian
V2V 통신의 프로토콜은 첨부파일 “경기자율주행센터_V2X_03_WAVE interface.pdf” 파일을 참고한다
통신 시퀀스
초기 통신 (Handshake)
초기 통신에서 PC는 무조건 한번은 단말기의 상태 확인 요청을 보내야 한다.
장비는 상태 확인 요청을 보낸 소켓만 통신하며 다른 소켓은 무시한다.
상태 확인 요청 패킷은 6페이지를 참고하며 상태 확인 응답 패킷은 7페이지를 참고한다.
단말기의 BSM Packet 송수신 전용 채널 및 전송 파라메터 설정은 8페이지를 참고한다.
채널은 기본 채널인 172를 권장한다.
BSM 통신
BSM 데이터는 시뮬레이터 내에서 2Hz 속도로 뿌려지고 있다.
초기 통신이 완료된 경우 주변 NPC 차량들은 전부 BSM 데이터를 전송한다.
수신된 BSM 데이터는 12 ~ 13 페이지를 참고한다.
BSM 데이터의 송신은 10 ~ 11 페이지를 참고한다.