13.10.2.2 다중 차량 공통 맵(Global Occupancy Grid) 병합을 위한 워터마크(Watermark) 동기화 전술
협력 주행(Cooperative Driving)의 꽃은 다수의 로봇이나 자율주행 차량이 각각의 로컬 LiDAR 센서로 관측한 좁은 구역의 지도를, 허공에서 하나로 결합(Merge)하여 전체 지역을 내려다보는 거대한 신의 눈, 공통 맵(Global Occupancy Grid Map) 을 실시간으로 창출해 내는 것이다.
그러나 차량 A와 차량 B가 각자 주변을 매핑하여 보낸 데이터가 중앙의 융합 노드(Fusion Operator)에 도착했을 때, 이 데이터를 무지성으로 공간에 덧칠하는 코드는 파멸적 환각(Ghost Obstacles) 현상을 부른다. 차량마다 데이터 전송 지연이 다르고, 타임스탬프가 어긋나 있기 때문이다. 본 절에서는 분산 스트림 처리(Data-Flow Processing)에서 시간의 흐름을 통치하는 절대 잣대인 워터마크(Watermark) 동기화 사상을 접목하여 시공간 데이터 융합 파이프라인을 구축하는 런북을 설파한다.
1. 지연 도착된 미래 데이터와 순서 붕괴의 역설
차량 A가 10:00:01 에 관측한 지도 조각 패킷과, 차량 B가 10:00:01 에 관측한 지도 조각 패킷이 있다고 하자. 거대 Zenoh 망을 통해 맴-병합 오퍼레이터(Operator Node)로 터널링 해오는 과정에서, A 차량의 망은 고속(10ms 지연)이었으나 B 차량이 일시적인 무선 간섭을 받아 그 패킷이 2초 후(2000ms 지연)에나 지각 도착했다.
만일 오퍼레이터가 단순히 “패킷이 도착한 시간 순서(Event Received Time)“대로 지도를 병합하는 쓰레기 알고리즘을 지니고 있다면, B 차량의 10:00:01 데이터는 A 차량의 10:00:02 데이터보다 지도의 맨 위 레이어에 뒤늦게 덮어 씌워지게 된다.
이로 인해 A 차량이 방금 확인한 “텅 빈 도로” 지도 위로, 2초 전 B 차량이 봤던 “과거의 지나가버린 보행자“의 잔상(Ghost) 데이터가 덮어 칠해지며, 융합 차량망의 조향 시스템은 존재하지 않는 벽 구조물에 기겁하여 차량을 도로 밖으로 강제 제동(Emergency Brake) 시키게 된다. 통신 지연망에서 도착 시간은 가장 악질적인 거짓말이다.
2. 워터마크(Watermark)의 삽입과 논리적 시간(Event Time)의 주권 선언
이 거짓된 순서를 갈아엎기 위해 Zenoh-Flow 파이프라인 아키텍트가 무기로 쥐어야 하는 절대 권력이 바로 이벤트 맵핑 기반의 워터마크(Watermark) 다.
차량 A와 B 센서 단말 코어에서는 지도의 바이트를 뿜어낼 때, OS의 receive time 따위에 휘둘리지 않도록 센서가 빛을 쏜 바로 그 정밀 시각(Event Time)을 낙인찍어 스트림 안에 던져 넣어야 한다.
그리고 데이터 스트림 무리의 뒤를 이어 주기적으로 “이제 이 시간(예: 10:00:01) 이전의 데이터는 더 이상 내 큐에서 나오지 않을 것을 확실히 보증한다!“라는 내용의 특수 징표(Watermark Marker) 패킷을 흘려 보낸다.
/* [Event-Time 주권 전송 캡슐] 일반 데이터 스트림에 끼워 보내는 특수 워터마크 */
{
"type": "WATERMARK",
"guaranteed_timestamp": "10:00:01.000"
}
3. 융합 오퍼레이터(Fusion Operator)의 정렬(Alignment) 버퍼 제어
중앙 맵 병합 오퍼레이터 노드는 이제 들어오는 족족 지도를 그리는 바보짓을 멈춘다.
녀석의 C++ / 파이썬 메모리 엔진 내부는 강력한 딜레이 버퍼 저장소로 개조되었다.
- 차량 A의 데이터가 도착해도 섣불리 도화지에 그리지 않고
10:00:01보관함(Window Buffer)에 넣는다. - 차량 B의 데이터가 전파 간섭으로 안 와도, 오퍼레이터는 우직하게 기다린다. (버퍼링 대기)
- 2초 뒤 차량 B의 지각 패킷과 함께
WATERMARK : 10:00:01표식이 마침내 도착했다! - 결단의 순간: 오퍼레이터는 “아, 이제 A와 B 모두에게서
10:00:01분량의 데이터가 100% 들어왔으니, 이제는 더 기다릴 필요 없이 안전하게 통합을 시작해도 좋다“고 판정(Trigger)한다.
이 방파제를 무너뜨리고 빗장을 푸는 로직 코드는 다음과 같이 결합한다.
def on_data_aligned(vehicle_A_map, vehicle_B_map, timestamp):
# 양쪽 노드의 동일 시공간(Timestamp) 워터마크가 완벽히 결합(Aligned) 된 상태로만 호출된다.
global_grid = occupancy_grid_merge(vehicle_A_map, vehicle_B_map)
# 완벽한 잣대의 통계를 마친 순결한 맵 데이터만이 최종 자율 파이프라인으로 출력된다.
forward_to_planner(global_grid)
워터마크 기반 시간 정렬(Alignment)이라는 파이프라인 방어 체계가 없다면, 분산 메시망의 시야 융합 엔진은 레이턴시가 변동할 때마다 서로 과거와 미래가 충돌하는 광기의 모자이크 창출기로 몰락한다. “물리적인 지연(Latency)의 난장을 시스템적 논리 시간(Logical Time)의 질서로 잠재워, 영원히 오차 없는 시공간 동기화를 보장해내는 설계“는 V2X 아키텍트 계급이 필히 습득해야 할 가장 막강한 마법이다.