13.1.3.2. Legacy 메시지(Type 1004, 1012 등)와 MSM(Multiple Signal Messages) 규격의 페이로드(Payload) 비교

13.1.3.2. Legacy 메시지(Type 1004, 1012 등)와 MSM(Multiple Signal Messages) 규격의 페이로드(Payload) 비교

RTK 시스템의 핵심인 RTCM v3 프로토콜은 위성 항법 시스템의 발전 양상과 궤도를 같이하며 그 내부 설계가 크게 진화해 왔다. 과거 미국의 GPS나 러시아의 GLONASS가 국한되어 사용되던 시절의 구형 포맷을 Legacy 메시지라 칭하며, 이후 유럽의 Galileo, 중국의 BeiDou 등 다양한 글로벌 위성 항법 시스템(GNSS)이 등장함에 따라 확장성과 범용성을 부여하기 위해 도입된 규격이 바로 MSM (Multiple Signal Messages) 이다.

본 절에서는 PX4-Autopilot의 내비게이션 엔진이 수신하는 보정 데이터의 두 가지 양대 축인 Legacy 메시지와 MSM 메시지의 페이로드(Payload) 구조를 비교하고, 소프트웨어 파싱(Parsing) 관점의 아키텍처적 차이를 분석한다.

1. Legacy 메시지 (Type 1004, Type 1012 등) 한계와 구조

RTCM v3.1까지 주력으로 사용되던 Legacy 메시지는 ’각 위성군(Constellation)마다 고유한 메시지 타입을 할당’하는 구조를 가졌다.

  • Type 1004: GPS L1/L2 반송파 위상(Carrier Phase) 및 의사 거리(Pseudorange) 관측치
  • Type 1012: GLONASS L1/L2 RTK 관측치

1.1 Legacy 페이로드 직렬화 레이아웃

Legacy 메시지의 페이로드는 메모리 상에서 매 위성마다 반복적인 스칼라(Scalar) 데이터의 묶음으로 파킹(Packing)된다. 예를 들어 Type 1004는 다음과 같은 논리 블록을 갖는다.

  1. 메시지 헤더: Message ID(12-bit), 기준국 ID(12-bit), GPS Time(30-bit) 등
  2. 위성 관측치 블록 (반복):
  • Satellite ID (6-bit)
  • L1 Pseudorange (24-bit)
  • L1 Phase (20-bit)
  • L1 CNR (8-bit)
  • L2 Pseudorange (24-bit)
  • L2 Phase (20-bit)
  • L2 CNR (8-bit)

결과적으로 N개의 위성이 보이면, 위 덩어리가 단순히 N개 연속으로 메모리에 나열된다. 이 방식은 디코딩 루틴이 단순하다는 장점(Single For-Loop 기반의 추출)이 있었으나, GPS 이외의 새로운 위성 체계나 L5와 같은 신규 주파수 대역이 추가될 때마다 대응되는 새로운 타입의 메시지가 하드코딩(Hard-coding) 되어야 하는 극도의 비효율성(Inflexibility)을 가지고 있었다.

2. MSM (Multiple Signal Messages) 아키텍처 개척

이러한 규격의 난립을 방지하기 위해 제정된 RTCM v3.2의 MSM은 모든 위성 시스템에 대하여 일관된 페이로드 포맷(Unified Payload Format)을 적용한다.

MSM 패밀리는 첫 숫자로 위성군을, 마지막 숫자로 데이터의 해상도(Resolution)를 구분한다.

  • 위성군 대역 식별: 107x (GPS), 108x (GLONASS), 109x (Galileo), 112x (BeiDou)
  • 데이터 정밀도 식별: MSM4(콤팩트 정밀도), MSM7(고해상도 전체 제공)

2.1 MSM 다중 블록 페이로드(Multi-block Payload) 구조

MSM 규격이 Legacy 메시지와 가장 크게 대비되는 점은 페이로드 내부를 명확히 세 구역(Zone)으로 구조화했다는 것이다.

graph LR
    A[MSM Payload] --> B[1. MSM Header]
    A --> C[2. Satellite Data Block]
    A --> D[3. Signal Data Block]
    
    B --> B1[GNSS Time Epoch \n Station ID \n Multiple Message Bit]
    C --> C1[위성별 공통 데이터 \n Rough Range \n Range Rate]
    D --> D1[신호 주파수별 개별 데이터 \n Fine Pseudorange \n Fine Phase]
  1. MSM Header (헤더 블록): 모든 위성에 동일하게 적용되는 시간 동기 정보와 위성 및 신호(Signal) 마스크를 포함한다. 특히 비트마스크(Bitmask) 기능을 활용하여 어떤 위성이 관측되었는지(예: 64비트 정수로 위성 존재 여부 색인)를 나타낸다.
  2. Satellite Data (위성 데이터 블록): 해당 에포크(Epoch)에 관측된 N개의 위성 각각에 대한 개략적인 공통의 거리가 저장된다. 데이터 중복을 제거하기 위해 위성 자체와 관련된 정보만을 분리해 둔 것이다.
  3. Signal Data (신호 데이터 블록): 각 위성이 송출하는 여러 주파수 대역(L1, L2, L5 등) 통신에 대해 고정밀 미세 보정치(Fine Correction)들이 들어있다.

3. 구조적 차이가 PX4 소스 코드 통신 파이프라인에 미치는 영향

드론이나 무인지상차량(UGV)에 탑재된 PX4 시스템(gps 드라이버 데몬)은 QGroundControl을 통해 유입되는 이 가변 길이 바이너리를 파싱하기 위해 분기문(switch-case)을 구동한다.

3.1 드라이버 레벨 파싱 알고리즘 차이

  • 디코딩 복잡도: MSM 메시지를 디코딩하는 C++ 클래스는 Legacy 모델에 비해 복잡한 루프를 가진다. 헤더에서 마스킹 비트 수를 카운트하여 관측된 N개의 위성과 투영된 M개의 신호 채널 수를 알아낸 뒤 다차원 배열(Multi-dimensional Array)을 통해 위성 데이터와 신호 데이터의 상대 포인터를 계산해야 한다.
  • 지연 속도(Latency)와 대역폭(Bandwidth): PX4와 ZED-F9P와 같은 최신 RTK 수신 장비 사이에서는 대규모 위성 수신으로 인해 MAVLink 통신 채널 대역폭에 부담이 가중될 수 있다. MSM 방식은 Legacy 대비 중복된 위상의 거칠기를 제거(차분)하여 데이터를 욱여넣기 때문에 전송 효율이 통계적으로 약 10% 이상 높다. 따라서 PX4 개발 환경에서는 통신 병목을 예방하기 위해 기준국 구성 시 가급적 Legacy 모드를 끄고 MSM 메시지 전용 활성화를 권장한다.

결과적으로 MSM 규격은 프로그래머에게 고차원 배열 접근과 비트 다루기의 난해함을 요구하지만, 다양한 대역폭과 위성 네트워크의 발전에 완벽하게 동기화되는 기계적 범용성을 제공하여 현대 PX4-Autopilot 동적 측위 엔진(Estimator)의 척추가 되었다.