위성 항법 시스템에서 데이터를 주고받기 위한 형식과 프로토콜은 GNSS 수신기와 위성 간, 또는 GNSS 수신기 간의 효율적인 통신을 보장하기 위해 필수적이다. GNSS 데이터 형식과 프로토콜은 크게 측정 데이터의 형식과 교환되는 데이터의 내용에 따라 정의된다. 이 장에서는 GNSS 데이터 형식과 주요 프로토콜에 대해 설명한다.

RINEX (Receiver Independent Exchange Format)

RINEX는 수신기 독립적 교환 형식으로, 다양한 GNSS 수신기에서 생성된 데이터를 표준화된 형식으로 저장하여 교환할 수 있게 한다. RINEX 형식은 주로 GNSS 수신기의 원시 데이터를 저장하며, 일반적으로 위치 결정에 사용되는 다음과 같은 데이터를 포함한다.

  1. 위치 데이터: 측위 위치를 나타내며, 이를 통해 \mathbf{X}_r = \begin{bmatrix} \text{lat} \\ \text{lon} \\ \text{alt} \end{bmatrix}와 같이 위도, 경도, 고도로 나타낼 수 있다.
  2. 위성 신호의 위상 정보: \varphi(t)는 시간에 따른 신호의 위상을 나타내며, 수신된 신호의 위상을 분석하여 거리 정보를 추출할 수 있다.
  3. 코드 측정값: 위성으로부터 수신된 신호의 코드 시간을 측정하여 위성과의 거리를 계산하는 데 사용된다. 코드 측정값은 P(t)로 나타낼 수 있으며, 수신기와 위성 간의 거리 d는 다음과 같이 계산된다.
d = c \cdot P(t)

여기서 c는 빛의 속도, P(t)는 코드 측정값이다.

NMEA 0183 프로토콜

NMEA 0183은 GNSS 수신기에서 다양한 데이터 (위치, 속도, 시간 등)를 출력하기 위한 데이터 프로토콜이다. 이 프로토콜은 해양 장비 간의 데이터를 교환하기 위한 표준으로 시작되었으나, GNSS 수신기에서 광범위하게 사용되고 있다.

NMEA 메시지는 ASCII 형식의 문자열로 이루어지며, 각 메시지는 "$"로 시작하고 CR+LF(캐리지 리턴과 라인 피드)로 종료된다. 각 메시지는 여러 필드로 나뉘며, 쉼표(,)로 구분된다. 가장 많이 사용되는 NMEA 메시지 유형은 다음과 같다.

  1. GGA (Global Positioning System Fix Data): GPS 수신기의 현재 위치와 시간, 고도 등의 정보를 포함한다. 예: $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47 여기서 각 필드는 다음과 같은 정보를 제공한다:
  2. 123519: UTC 시간 (12시 35분 19초)
  3. 4807.038,N: 위도 48도 07.038분 북쪽
  4. 01131.000,E: 경도 11도 31.000분 동쪽
  5. 1: GPS 위치의 고정 상태 (1 = 고정)
  6. 08: 사용된 위성의 수
  7. 0.9: HDOP (수평 정확도 지수)
  8. 545.4,M: 고도, 단위는 미터
  9. 46.9,M: 지오이드 높이, 단위는 미터

  10. RMC (Recommended Minimum Navigation Information): 최소 항법 정보, 위치 및 속도와 같은 기본적인 정보를 제공한다. 예: $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A

이 메시지에서 주목할 점은 시간, 위치, 속도, 날짜 등의 정보가 포함되어 있으며, 이를 통해 GNSS 데이터를 활용한 이동체의 상태를 확인할 수 있다는 것이다.

RTCM (Radio Technical Commission for Maritime Services)

RTCM 프로토콜은 GNSS 보정 정보를 제공하는 데 사용되며, 주요 목적은 차분 GPS(DGPS) 시스템에서 신호 오차를 보정하는 것이다. 이 프로토콜은 GNSS 수신기에 의해 수신된 신호의 오차를 보정하여 정확한 위치를 제공하는 데 중요한 역할을 한다.

RTCM 메시지는 이진 형식으로 전송되며, 각 메시지는 다음과 같은 필드를 포함한다: - 메시지 타입 - 레퍼런스 스테이션 ID - 시각적 기준 시간 - 오차 보정 데이터

RTCM 메시지는 차분 보정 데이터를 제공하여 GNSS 수신기의 오차를 줄이고 더 정확한 위치 정보를 제공할 수 있다. 특히, RTCM은 DGPS, SBAS 등에서 사용된다.

NTRIP (Networked Transport of RTCM via Internet Protocol)

NTRIP는 RTCM 보정 데이터를 인터넷을 통해 전송하는 프로토콜로, GNSS 보정 데이터를 실시간으로 제공하기 위한 중요한 요소이다. 특히 GNSS 보정 신호를 인터넷을 통해 전달함으로써, 사용자에게 GNSS 보정 정보를 더욱 효율적으로 제공할 수 있다. NTRIP는 주로 네트워크 기반 RTK(Real-Time Kinematic) 시스템에서 사용되며, GNSS 수신기로부터 더욱 정밀한 위치 데이터를 제공한다.

NTRIP 시스템은 다음과 같은 세 가지 주요 요소로 구성된다:

  1. NTRIP 서버: GNSS 보정 데이터를 제공하는 서버 역할을 하며, RTCM 보정 데이터를 수집하여 인터넷을 통해 전송한다.
  2. NTRIP 캐스터: GNSS 보정 데이터를 분배하는 중계 서버로서, NTRIP 서버로부터 받은 데이터를 클라이언트에게 전달하는 역할을 한다.
  3. NTRIP 클라이언트: GNSS 수신기 또는 소프트웨어에서 NTRIP 캐스터에 연결하여 보정 데이터를 수신하는 장치이다. 클라이언트는 GNSS 보정 데이터를 수신하여 실시간으로 위치를 보정할 수 있다.

NTRIP은 다음과 같은 네트워크 계층에서 작동하며, 인터넷 연결을 통해 GNSS 보정 데이터를 사용자에게 전달한다.

graph TD A[NTRIP 서버] -->|RTCM 보정 데이터| B[NTRIP 캐스터] B --> C[NTRIP 클라이언트] C -->|보정 데이터 수신| D[GNSS 수신기]

BINEX (Binary Exchange Format)

BINEX는 GNSS 데이터의 이진 형식 교환을 위한 포맷으로, 데이터 교환 시 데이터의 크기를 줄이고 효율성을 높이기 위해 설계된 형식이다. BINEX는 RINEX와 유사하게 GNSS 데이터를 저장 및 전송하는 역할을 하지만, 이진 데이터를 사용하여 더 빠르고 효율적인 데이터 전송이 가능하다. BINEX 형식은 GNSS 수신기 간의 호환성을 높이며, GNSS 데이터의 전송을 최적화한다.

BINEX는 다음과 같은 주요 구성 요소를 포함한다: 1. 헤더: 데이터의 종류와 길이를 정의하는 정보가 포함되며, 이진 형식으로 작성된다. 2. 데이터 블록: GNSS 측정 데이터, 위성 상태 정보 등 다양한 정보를 포함하는 데이터 블록으로, 각 데이터 블록은 서로 다른 정보를 저장할 수 있다. 3. 체크섬: 데이터의 무결성을 보장하기 위한 검사 코드가 포함되며, 데이터 전송 과정에서 발생할 수 있는 오류를 감지한다.

BINEX 형식은 GNSS 데이터의 효율적인 전송을 위해 설계된 포맷으로, RINEX와 같은 기존 형식보다 더 나은 성능을 제공한다. 특히 대용량 데이터 전송이 필요한 GNSS 시스템에서 자주 사용된다.

SP3 (Standard Product 3 Format)

SP3 형식은 주로 GNSS 위성 궤도와 시계 데이터를 표현하기 위한 표준 데이터 형식으로, 위성의 위치와 시각에 대한 매우 정밀한 데이터를 제공한다. 이 형식은 GNSS 위성의 궤도를 예측하거나 분석할 때 중요한 역할을 한다. SP3 데이터는 궤도 정보뿐만 아니라, 위성의 시계 오차를 보정하는 데에도 사용된다.

SP3 형식은 ASCII 텍스트 형식으로 작성되며, 파일 구조는 주로 다음과 같은 요소로 구성된다.

  1. 헤더: 파일의 시작 부분에 위치하며, GNSS 시스템의 정보, 날짜, 궤도 정보의 정확도, 참조 좌표계 등 중요한 메타데이터를 포함한다. 각 줄의 첫 글자는 해당 줄이 어떤 데이터를 포함하는지 정의한다.
  2. 헤더는 '##'로 시작하며, 파일 형식, 날짜, GNSS 시스템 정보 등이 기록된다.
  3. 위성 궤도 정보는 'P'로 시작하고, 각 위성의 XYZ 좌표와 시계 오차가 포함된다.

예시: ## 2024 09 29 12 00 00.00000000 P 2024 09 29 00:00:00 P 01 1345678.123 2345678.456 3456789.789 0.00012345

  1. 위성 위치 데이터: 각 위성의 정확한 위치를 나타내며, 이를 수학적으로 표현하면 위성의 위치 \mathbf{X}_s = \begin{bmatrix} x_s \\ y_s \\ z_s \end{bmatrix} 로 표현된다. 이러한 위치 데이터는 GNSS 수신기에서 궤도 정보를 추정하는 데 매우 중요하다.
  2. 위성 시계 오차 보정: 각 위성의 시계 오차는 d_s(t)로 표현되며, SP3 파일에서 제공되는 시계 보정 데이터는 위성의 정확한 시각을 제공한다. 시계 보정은 GNSS 신호의 전파 지연을 줄여 더 정확한 측위를 가능하게 한다.

RTCM MSM (Multiple Signal Message)

RTCM MSM은 다양한 위성 신호를 하나의 메시지에 포함하여 전송하기 위한 데이터 형식이다. MSM 형식은 GNSS 수신기와 위성 간에 주고받는 여러 신호 (GPS, GLONASS, Galileo, BeiDou 등)의 데이터를 하나의 메시지로 통합하여 효율적인 데이터 전송을 가능하게 한다.

MSM 형식은 각 위성 신호에 대한 다음과 같은 정보를 포함한다: 1. 위성 신호 정보: 주파수, 위상, 전파 지연 등 위성 신호에 대한 세부 정보가 포함된다. 2. 코드 및 위상 측정값: 각 위성 신호의 코드 및 위상 정보를 포함하며, 이를 통해 수신기와 위성 간의 거리 및 속도를 계산할 수 있다. 3. 신호의 품질 정보: 신호 잡음비(Signal-to-Noise Ratio, SNR)와 같은 신호 품질 정보가 포함되며, 수신된 신호의 신뢰도를 평가하는 데 사용된다.

MSM 형식은 GNSS 수신기 간의 상호 운용성을 보장하며, 여러 GNSS 시스템의 데이터를 동시에 처리할 수 있는 기능을 제공한다. 이는 멀티 GNSS 시스템의 활용성을 극대화하고, 다양한 GNSS 시스템 간의 호환성을 높이는 데 기여한다.

Protocol Buffers (protobuf)

Protocol Buffers, 줄여서 protobuf는 구글에서 개발한 데이터 직렬화 포맷으로, GNSS 데이터 전송에 매우 유용하다. GNSS 데이터는 전송 시 매우 높은 효율성과 빠른 데이터 처리가 요구되기 때문에 protobuf와 같은 직렬화 포맷이 이를 충족시킬 수 있다.

protobuf는 구조화된 데이터를 이진 형식으로 인코딩하여 전송 속도를 최적화하며, 다음과 같은 장점을 제공한다: 1. 이식성: 다양한 플랫폼과 프로그래밍 언어에서 사용할 수 있어 GNSS 데이터 처리에서 유연성을 제공한다. 2. 확장성: 메시지 형식을 쉽게 확장할 수 있어, 새로운 GNSS 데이터 항목을 추가하는 것이 용이하다. 3. 효율성: 텍스트 기반 형식보다 훨씬 적은 데이터 크기로 전송할 수 있어, GNSS 데이터 처리에서 매우 빠른 전송 속도를 제공한다.

GNSS 데이터를 protobuf를 이용하여 처리하는 경우, 주로 각 GNSS 데이터 항목을 정의한 후, 이를 직렬화하여 전송한다. 이는 대규모 GNSS 데이터를 효율적으로 처리하고 전송하는 데 매우 유리하다.