제5장

Phase 2: 구현

개요

Phase 2는 V2X 애플리케이션이 외부에 드러내는 표면, 곧 API를 다룹니다. 차량 내부 스택과 노변·보행자·네트워크 인프라가 서로 어떤 동사(verb)를 주고받는지를 네 가지 기본 모드로 나눠 정의합니다. 각 모드는 상대 객체, 메시지 종류, 통신 방식이 다릅니다. 이 장의 모든 사양은 이 구분에서 출발합니다.

5.1 네 가지 모드와 메시지 체계

모드상대대표 메시지통신 성격
V2V주변 차량BSM/CAM, 이벤트 경고주기 방송, 핸드셰이크·확인응답 없음
V2I노변 장치(RSU)SPaT, MAP, SRM/SSM, DENMRSU 방송과 선점 요청·응답
V2P보행자·자전거PSM, BSM 변형휴대 기기가 위치·의도를 송신
V2N클라우드·교통관리센터(TMC)TELEMETRY, TRAFFIC_UPDATEHTTPS / MQTT / WebSocket

앞의 세 모드는 근거리 직접 통신에 가깝습니다. V2N만 광역 네트워크를 거칩니다. 이 차이는 뒤에서 다룰 보안 방식과 데이터 형식에도 그대로 나타납니다.

기술적 기초

V2V는 가장 기본이 되는 모드입니다. 충돌 판단 로직은 다른 모드에서도 변형되어 재사용됩니다.

5.2 V2V: 협력 인지와 충돌 판단

V2V는 연결 없는(connectionless) 방송 모델을 씁니다. 차량은 BSM/CAM을 10 Hz로 주기 송신하고, 주변의 모든 차량이 이를 수신합니다. 이와 별개로 긴급 제동 경고, 충돌 경고, 차선 변경 통지, 위험 지점 경고는 이벤트가 발생할 때 송신합니다.

위치 공유의 갱신 주기는 주행 상태에 따라 달라집니다.

상태갱신 주기
정지1 Hz
저속(50 km/h 미만)2 Hz
중속(50~100 km/h)5 Hz
고속(100 km/h 초과)10 Hz
긴급20 Hz

메시지에는 GPS 위치(위도·경도·고도), 속도와 방향, 종·횡·수직 가속도, 차량 제원, 브레이크 상태, 방향지시등이 담깁니다.

충돌 위험은 충돌예상시간(TTC)으로 계산합니다.

TTC = (d - L₁ - L₂) / (v₁ - v₂)

d = 차량 간 거리, L₁·L₂ = 차량 길이, v₁·v₂ = 속도

위협 등급은 TTC 임계값으로 나눕니다.

TTC등급대응
1.5초 미만CRITICAL즉시 제동
2.5초 미만HIGH경고 및 제동 준비
4.0초 미만MEDIUM시각·청각 경고
그 외LOW모니터링

전방 추돌 경고(FCW) 알고리즘은 이 임계값을 그대로 씁니다. 먼저 진행 방향 차이가 45도를 넘으면 충돌 경로가 아닌 것으로 보고 제외합니다. 상대 속도가 0 이하이면 대상이 멀어지거나 같은 속도이므로 역시 제외합니다.

def forward_collision_warning(ego_vehicle, target_vehicle):
    distance = calculate_distance(ego_vehicle.position, target_vehicle.position)

    heading_diff = abs(ego_vehicle.heading - target_vehicle.heading)
    if heading_diff > 45:  # degrees
        return None

    relative_speed = ego_vehicle.speed - target_vehicle.speed
    if relative_speed <= 0:
        return None

    ttc = (distance - ego_vehicle.length) / relative_speed

    if ttc < 1.5:
        return {'level': 'CRITICAL', 'action': 'BRAKE', 'ttc': ttc}
    elif ttc < 2.5:
        return {'level': 'HIGH', 'action': 'WARN', 'ttc': ttc}
    elif ttc < 4.0:
        return {'level': 'MEDIUM', 'action': 'MONITOR', 'ttc': ttc}
    return None

사각지대 경고(BSW)는 좌우 감지 구역을 정의합니다. 좌측 구역은 차량 측면에서 0.5~3.0 m, 길이는 B필러부터 차량 후방 2 m까지, 각도는 90° ± 30°입니다. 우측은 좌측과 대칭입니다. 경고는 사각지대에서 차량이 감지되고, 방향지시등이 켜지고, 횡가속도가 검출될 때 발생합니다.

시장 분석

이 표준은 시장 규모나 점유율 수치를 규정하지 않으므로 여기서도 수치는 다루지 않습니다. 대신 표준이 제시하는 RSU 배치 우선순위로 수요가 어디에 집중되는지 읽을 수 있습니다. 우선순위가 높은 곳은 신호 교차로, 고속도로 진출입 램프, 스쿨존, 공사 구간입니다. 중간은 주차 구역, 환승 시설, 톨게이트이고, 낮은 곳은 지방 고속도로와 주거 지역입니다. 사고 위험과 신호 정보의 효용이 큰 지점부터 인프라를 깔도록 설계된 셈입니다.

산업 응용

V2I와 V2P는 차량 간 통신만으로는 얻을 수 없는 정보를 더합니다. 이는 신호 상태, 도로 공사, 보행자 위치 등입니다.

5.3 V2I: RSU와 신호·공사 구간 연동

RSU는 신호등 정보인 SPaT 메시지와 교차로 형상인 MAP 데이터를 방송합니다. 교통 데이터를 수집하고, V2V 메시지를 중계해 도달 범위를 넓히며, 긴급차량 선점도 담당합니다. 차량은 SPaT에서 자신의 차선에 해당하는 신호 그룹을 찾아 현재 상태와 남은 시간을 계산합니다.

interface SignalPhase {
  state: 'red' | 'yellow' | 'green';
  timeRemaining: number;  // seconds
  nextPhase: 'red' | 'yellow' | 'green';
  nextPhaseTime: number;
}

이 정보로 녹색 신호 최적 속도 권고(GLOSA)를 제공합니다. 신호가 적색이고 교차로 도달 시간이 남은 시간보다 짧으면, 녹색에 맞춰 도착할 속도로 줄이라고 안내합니다. 신호가 녹색인데 도달 시간이 남은 시간보다 길면 가속하거나 정지를 준비하라고 안내합니다.

긴급차량 선점은 요청·응답 쌍으로 이루어집니다. 차량이 SRM(Signal Request Message)을 보내고 RSU가 SSM(Signal Status Message)으로 답합니다.

{
  "messageType": "SRM",
  "requestID": 12345,
  "vehicleID": "FIRE-001",
  "vehicleType": "fire",
  "priority": "emergency",
  "route": { "approach": "north", "departure": "south" },
  "eta": 15,
  "duration": 120
}
{
  "messageType": "SSM",
  "requestID": 12345,
  "status": "granted",
  "preemptionTime": 1640000015000,
  "duration": 120
}

두 메시지는 requestID로 짝을 맺습니다. 공사 구간 경고는 DENM으로 전달합니다. eventType이 roadWorks이고 시작·종료 지점, 영향 차로, 폐쇄 차로, 제한속도(km/h), 시작·종료 일시를 담습니다.

5.4 V2P: 보행자와 자전거 보호

보행자 단말은 V2P 지원 스마트폰 앱, 스마트워치 같은 웨어러블, 전용 P-ITS 장치로 나뉩니다. 이들은 PSM(Personal Safety Message)을 송신합니다. PSM에는 기기 종류, 위치와 정확도(m), 속도(m/s), 방향, 사용자 유형, 군집 정보(clusterSize, clusterRadius)가 들어갑니다.

VRU 위험 평가는 먼저 보행자가 차량 경로 위에 있는지 확인합니다. 경로 밖이면 위험은 NONE입니다. 경로 위에 있으면 거리를 차량 속도로 나눠 TTC를 구합니다.

TTC위험도조치
2.0초 미만CRITICALEMERGENCY_BRAKE
4.0초 미만HIGHWARN_AND_SLOW
6.0초 미만MEDIUMMONITOR
그 외LOW-

V2V의 임계값(1.5/2.5/4.0초)보다 여유를 더 둔 것은 보행자가 취약한 도로 이용자이기 때문입니다.

횡단보도 안전은 거리별 3단계 구역으로 구성됩니다.

자전거는 vehicleType이 cyclist인 BSM 변형으로 송신합니다. 위치, 속도, 방향에 더해 intent 객체에 회전·정지·차선 변경 의도를 실어, 차량이 다음 동작을 미리 예측할 수 있게 합니다.

표준 준수

이 장의 준수 요건은 메시지 종류와 동작 규칙의 일관성입니다. 구현체는 BSM/CAM(주기 인지), DENM(이벤트 경고), SPaT·MAP(신호와 교차로 형상), SRM/SSM(신호 요청·응답), PSM(보행자)을 이 장이 정한 의미대로 다뤄야 합니다. 일반적으로 BSM은 북미 계열, CAM은 유럽 계열의 인지 메시지 명칭입니다. V2V 방송에는 핸드셰이크와 확인응답이 없으므로 수신 측이 모든 수신 메시지를 독립적으로 판단해야 합니다. V2N 구간에는 별도의 보안 요건이 있습니다. 전송은 HTTPS, MQTT, WebSocket 중에서 고르고, 인증은 OAuth 2.0 또는 mTLS, 암호화는 TLS 1.3을 사용합니다.

구현 고려사항

V2N은 차량을 클라우드 서비스와 잇습니다. 서비스는 실시간 교통 관리, 예측 경로 안내, 차량군 관리, 원격 진단, OTA 소프트웨어 업데이트, HD 지도 업데이트입니다. 데이터 형식은 JSON 또는 Protocol Buffers입니다.

차량은 TELEMETRY 메시지로 위치(방향·속도 포함), 노면 상태(friction, wetness, visibility), 교통 상태(density, averageSpeed, incidents)를 TMC에 올립니다. TMC는 TRAFFIC_UPDATE로 응답합니다. 이 메시지는 구역 경계(bounds), 사고 목록(id, type, severity, lanesAffected, estimatedClearance), 정체 구간(roadID, segment, speed, delay)으로 구성됩니다. 원격 상태 조회는 위치, 배터리(%), 연료(리터), 속도, 주행거리(km), 엔진 상태, 문 잠금 상태, 진단 정보를 반환합니다.

{
  "vehicleID": "VEH-123456",
  "status": {
    "battery": 85,
    "fuel": 45,
    "engineStatus": "off",
    "doors": { "driverFront": "locked", "trunk": "locked" }
  }
}

구현 시 특히 유의할 점은 다음과 같습니다.

미래 전망

V2N이 다루는 OTA 업데이트와 HD 지도 갱신은 차량의 기능을 출고 이후에도 확장할 수 있게 합니다. RSU의 V2V 중계는 직접 통신이 닿지 않는 구간을 메웁니다. 이 두 흐름은 V2V·V2I·V2P·V2N 네 모드가 한 차량 안에서 하나의 판단으로 합쳐지는 방향을 가리킵니다.

요약

5.5 요약과 다음 장으로의 연결

이 장은 V2X API를 모드별로 정리했습니다. V2V는 연결 없는 방송과 TTC 기반의 단계적 경고를 제공하고, V2I는 SPaT·MAP·SRM/SSM·DENM으로 신호와 공사 구간 정보를 전달합니다. V2P는 PSM과 자전거 BSM 변형으로 취약 도로 이용자를 보호하고, V2N은 TELEMETRY와 TRAFFIC_UPDATE로 차량과 TMC를 잇습니다. 구현 단계의 핵심은 임계값, 단위, 위치 표현을 일관되게 관리하는 일입니다. 다음 장에서는 여기서 정의한 메시지들이 실제 차량·인프라 시스템에 통합되는 단계로 넘어갑니다.