# GNSS와 관성항법(INS) 기초 연동

#### 관성항법(INS) 기초 개념

관성항법(Inertial Navigation System, INS)은 가속도계(accelerometer)와 자이로스코프(gyroscope) 등을 포함하는 관성측정장치(IMU, Inertial Measurement Unit)로부터 얻은 정보를 바탕으로 위치, 속도, 자세(orientation)를 추정한다. 관성항법은 외부 신호나 기준 없이도 비교적 짧은 시간 동안은 위치와 자세를 높은 정확도로 추정할 수 있다는 장점이 있다. 그러나 센서의 오차가 시간에 따라 누적되므로 장시간 운용 시 오차가 급격히 커진다는 단점이 존재한다.

INS의 핵심 원리는 뉴턴의 운동방정식을 실제 환경에서 구현하는 것이다. 간단히 표현하면 운동방정식은 다음과 같이 쓸 수 있다.

$$
\mathbf{a}*\text{body} = \frac{d \mathbf{v}*\text{body}}{dt}
$$

여기서 $\mathbf{a}*\text{body}$는 기체(또는 플랫폼) 고유좌표계(body frame)에서 측정한 가속도, $\mathbf{v}*\text{body}$는 body frame에서 표현된 속도다. 실제 INS에서는 지구 중력과 지구 자전 등 다양한 외부 요인을 고려하여 보정한다.

INS에서의 자세(orientation) 표현은 크게 오일러 각(Euler angles), 쿼터니언(Quaternion), 또는 DCM(Direction Cosine Matrix) 등으로 할 수 있다. 예를 들어 DCM을 이용하면 관성좌표계(inertial frame)에서 body frame으로의 회전변환을 다음과 같이 표현할 수 있다.

$$
\mathbf{r}*\text{body} = \mathbf{C}*\text{body}^\text{inertial} \mathbf{r}\_\text{inertial}
$$

여기서 $\mathbf{C}*\text{body}^\text{inertial}$는 $3\times 3$ 회전변환행렬, $\mathbf{r}*\text{body}$는 body frame에서의 위치(또는 특정 벡터), $\mathbf{r}\_\text{inertial}$는 관성좌표계에서의 위치(또는 특정 벡터)다.

#### GNSS/INS 통합의 필요성

GNSS(Global Navigation Satellite System)는 전 지구적으로 정확한 위치를 제공할 수 있으나 신호가 차단되는 상황(예: 터널, 도시 협곡, 실내 환경)에서는 측정이 불가능하거나 정확도가 급격히 악화될 수 있다. 반면, INS는 관성센서만으로 동작하기 때문에 GNSS 측정이 불가한 상황에서도 위치와 자세를 추정할 수 있다는 장점을 지니지만, 센서 오차에 의해 오차가 누적되는 문제가 심각하다.

따라서 GNSS 단독, INS 단독 시스템 각각의 약점을 보완하기 위해 GNSS와 INS를 함께 사용하는 통합 시스템이 일반화되어 있다. GNSS가 제공하는 절대 위치(및 속도) 정보를 통해 INS의 오차를 보정하고, GNSS 신호가 없을 때는 INS가 상대 추정을 지속함으로써 효율적인 항법(navigation)이 가능해진다.

#### GNSS/INS 통합의 기본 구조

GNSS와 INS의 결합(Integration) 구조는 크게 느슨한 결합(Loosely Coupled)과 밀접 결합(Tightly Coupled)으로 구분할 수 있다. 느슨한 결합에서는 GNSS 수신기가 이미 계산한 위치·속도·시각(PVT, Position, Velocity, and Time)을 INS 필터로 가져와 보정한다. 반면, 밀접 결합에서는 GNSS 측정치(위상 측정치, 신호 도달 시간 등)를 직접 INS 필터에 반영하여 더 높은 정확도를 기대할 수 있다.

느슨한 결합 구조에서의 상태공간모델은 일반적으로 다음과 같이 표현할 수 있다.

**상태방정식 (State equation)**:

$$
\mathbf{x}*{k} = \mathbf{F}*{k}\mathbf{x}*{k-1} + \mathbf{w}*{k-1}
$$

여기서 $\mathbf{x}*{k}$는 $k$ 시점에서의 상태벡터(예: INS 오차 상태), $\mathbf{F}*{k}$는 상태전이행렬, $\mathbf{w}\_{k-1}$는 잡음항이다.

**관측방정식 (Measurement equation)**:

$$
\mathbf{z}*{k} = \mathbf{H}*{k}\mathbf{x}*{k} + \mathbf{v}*{k}
$$

여기서 $\mathbf{z}*{k}$는 $k$ 시점에서 GNSS 등을 통해 측정되는 관측벡터, $\mathbf{H}*{k}$는 관측행렬, $\mathbf{v}\_{k}$는 관측 잡음이다.

INS 측면에서 상태벡터 $\mathbf{x}$는 위치 오차, 속도 오차, 자세 오차, 센서 바이어스(sensor bias) 등으로 구성될 수 있으며, 시간에 따라 동적으로 변한다. GNSS 측정값은 절대 위치(또는 속도)로서, INS가 누적해 온 오차를 관측방정식을 통해 부분적으로 제거해 준다.

#### INS 오차 모델

INS 오차를 정량적으로 다루기 위해서는 IMU 센서 오차와 자세계산 과정에서의 오차항을 체계적으로 모델링해야 한다. 대표적으로 자이로 바이어스(gyro bias), 가속도계 바이어스(accelerometer bias), 스케일 팩터(scale factor), 랜덤 워크(random walk), 화이트 노이즈(white noise) 등을 고려한다.

예를 들어 자이로 바이어스는 다음과 같은 1차 Markov 과정으로 근사할 수 있다.

$$
\dot{\mathbf{b}}*{g}(t) = -\frac{1}{\tau\_g} \mathbf{b}*{g}(t) + \mathbf{w}\_{b\_g}(t)
$$

여기서 $\mathbf{b}*{g}$는 자이로 바이어스 벡터, $\tau\_g$는 바이어스 항의 시간 상수(time constant), $\mathbf{w}*{b\_g}(t)$는 white noise 항이다.

이러한 오차모델을 통합 필터(예: 칼만필터)에 반영함으로써, GNSS에서 들어오는 절대 위치정보와 상호 보정이 가능해진다.

#### GNSS/INS 통합 필터의 일반 형태

GNSS/INS 통합 시스템에서 가장 널리 사용되는 기법은 확장 칼만필터(EKF, Extended Kalman Filter)다. 상태방정식과 관측방정식이 선형이 아니므로, 테일러 전개를 통한 선형근사 과정을 거치게 된다. EKF의 순서도는 예시적으로 다음과 같은 다이어그램으로 나타낼 수 있다.

{% @mermaid/diagram content="flowchart TB
A\["상태 예측 단계"] --> B\["GNSS 측정 수신"]
B --> C\["칼만 이득 계산"]
C --> D\["상태 보정 단계"]
D --> E\["INS 오차 및 바이어스 갱신"]" %}

이를 수식으로 간단히 나타내면, 예측(prediction) 단계:

$$
\mathbf{\hat{x}}*{k|k-1} = f(\mathbf{\hat{x}}*{k-1|k-1}, \mathbf{u}*{k-1})
\\
\mathbf{P}*{k|k-1} = \mathbf{F}*{k-1}\mathbf{P}*{k-1|k-1}\mathbf{F}*{k-1}^T + \mathbf{Q}*{k-1}
$$

여기서 $\mathbf{\hat{x}}*{k|k-1}$는 $k$ 시점에서의 사전(prediction) 상태 추정값, $\mathbf{P}*{k|k-1}$는 상태추정 공분산 행렬, $f(\cdot)$는 INS를 통한 비선형 상태 예측함수, $\mathbf{u}*{k-1}$는 제어 입력(또는 INS 입력), $\mathbf{F}*{k-1}$는 선형화된 상태전이행렬, $\mathbf{Q}\_{k-1}$는 시스템 노이즈 공분산 행렬이다.

관측(update) 단계:

$$
\mathbf{K}*{k} = \mathbf{P}*{k|k-1}\mathbf{H}*{k}^T \big(\mathbf{H}*{k}\mathbf{P}*{k|k-1}\mathbf{H}*{k}^T + \mathbf{R}*{k}\big)^{-1}
\\
\mathbf{\hat{x}}*{k|k} = \mathbf{\hat{x}}*{k|k-1} + \mathbf{K}*{k}\big(\mathbf{z}*{k} - h(\mathbf{\hat{x}}*{k|k-1})\big)
\\
\mathbf{P}*{k|k} = \big(\mathbf{I} - \mathbf{K}*{k}\mathbf{H}*{k}\big)\mathbf{P}*{k|k-1}
$$

여기서 $\mathbf{K}*{k}$는 칼만 이득, $h(\cdot)$는 GNSS 측정에 대응하는 비선형 관측함수, $\mathbf{H}*{k}$는 이를 선형 근사화한 관측행렬, $\mathbf{R}\_{k}$는 관측잡음 공분산 행렬이다.

#### 밀접 결합(Tightly Coupled) 구조

밀접 결합 구조에서는 GNSS 수신기가 내부에서 최종 PVT를 산출하기 이전 단계인 위상(or 코드) 측정치나 도플러 측정치 등을 직접 INS 필터로 받아들여 추정에 활용한다. 이 방식의 핵심은 GNSS 수신기가 자체적으로 필터링을 수행하기 전에 GNSS 원시 측정치(raw measurements)를 INS 측과 통합하여, 더 높은 추정 정확도와 신뢰도를 달성하는 데 있다.

예를 들어, GNSS 측정이 위성으로부터의 의사거리(pseudorange)로 주어진다고 할 때, 다음과 같은 관측방정식을 생각할 수 있다.

$$
\mathbf{z}*{k}^\text{GNSS} = \begin{bmatrix} \rho\_1 \ \rho\_2 \ \vdots \ \rho\_n \end{bmatrix} = \begin{bmatrix} |\mathbf{r}^{sat\_1}*{k} - \mathbf{r}*{k}| + c \delta t - \mathbf{I} - \mathbf{T} \ |\mathbf{r}^{sat\_2}*{k} - \mathbf{r}*{k}| + c \delta t - \mathbf{I} - \mathbf{T} \ \vdots \ |\mathbf{r}^{sat\_n}*{k} - \mathbf{r}\_{k}| + c \delta t - \mathbf{I} - \mathbf{T} \end{bmatrix}
$$

여기서

* $\rho\_i$: $i$번째 위성에 대한 측정 의사거리
* $\mathbf{r}\_{k}$: 추정 대상 수신기의 3차원 위치 (여기서는 지구좌표계 또는 특정 기준좌표계에서 표현)
* $\mathbf{r}^{sat\_i}\_{k}$: $i$번째 위성의 위치
* $c$: 광속
* $\delta t$: 수신기 시각 오차
* $\mathbf{I}$, $\mathbf{T}$: 전리층(Ionosphere), 대류층(Troposphere) 지연 등 오차 항

INS 측에서 제공하는 기체(or 플랫폼) 동역학 정보를 통해 $\mathbf{r}\_{k}$를 예측하고, GNSS의 의사거리 측정값과 비교하여 오차를 줄이는 방식이다. 이때 위치뿐만 아니라 수신기 시계 오차($\delta t$), 자이로·가속도계 바이어스 등 관성 센서 오차 항도 함께 추정한다. 밀접 결합의 장점은 다음과 같다.

* **GNSS 측정 위성 수가 적어도 필터 유지 가능**: 느슨한 결합에서는 GNSS 수신기가 자체적으로 위치를 산출할 수 있는 최소 위성(일반적으로 4개) 이상이 확보되어야 한다. 반면, 밀접 결합은 원시 측정치 자체를 사용하기 때문에 3개 이하 위성 상황에서도 다른 센서 정보(INS)를 활용해 추정을 지속할 수 있다.
* **오차 모형의 일관성**: GNSS 수신기의 내부 필터와 INS 필터가 각각의 오차 특성을 따로 고려하지 않고, 하나의 통합 필터에서 모든 파라미터를 동시에 추정하기 때문에 오차 모형이 보다 일관적으로 유지된다.
* **잡음 특성 면에서 이점**: GNSS가 아직 완전 수렴되지 않은 상태(예: 캐리어 위상 잠금 초기 상태)에서도 INS가 지원해줌으로써 빠른 초기화 및 수렴이 가능하다.

#### GNSS/INS에서의 좌표계 변환

GNSS/INS 통합에서 중요한 부분 중 하나가 여러 좌표계(Frame) 간의 변환이다. GNSS 수신기로부터 받은 위치 정보는 일반적으로 지구중심좌표계(ECEF, Earth-Centered Earth-Fixed)로 표현되지만, INS는 탑재체(body frame), 항공좌표계(기체 중심의 NED 좌표계 등), 항법좌표계(Local Navigation Frame) 등에서의 운동 학적 정보를 이용한다. 따라서 다음과 같은 변환 과정을 엄밀히 고려해야 한다.

1. GNSS 측정에서 얻은 위치
   * 예: $\mathbf{r}\_\text{ECEF}$ 형태
2. INS에서 사용하는 항법좌표계(예: NED; North, East, Down)
   * 변환행렬 $\mathbf{C}\_\text{NED}^\text{ECEF}$를 이용
3. 바디(body) 좌표계와 항법좌표계 간의 변환
   * 변환행렬 $\mathbf{C}\_\text{body}^\text{NED}$를 이용

즉, INS가 추정하는 $\mathbf{r}*\text{NED}$, $\mathbf{v}*\text{NED}$, 그리고 GNSS에서 추정하는 $\mathbf{r}\_\text{ECEF}$를 서로 일관성 있게 변환하여 칼만필터 등에서 사용해야 한다.

#### GNSS/INS 결합에서의 타이밍 이슈

GNSS 신호는 일정 간격(예: 1 Hz, 5 Hz)으로만 수신되는 반면, INS는 일반적으로 훨씬 높은 빈도(수십\~수백 Hz)로 데이터를 획득한다. 따라서 시간동기화(timing synchronization)와 보간(interpolation)이 반드시 필요하다. 보통 INS 데이터의 타임스탬프(timestamp)를 기준으로 가까운 GNSS 업데이트 시점 사이에 선형/이차 보간을 활용하거나, 반대로 GNSS 수신 시점에 INS를 보간하기도 한다.

INS와 GNSS가 각각 다른 클록(clock)을 사용한다면, GNSS에서 제공하는 수신기 시계 오차($\delta t$) 항뿐만 아니라, INS 내 IMU의 시간 기준(보통는 플랫폼 클록)과 GNSS 클록 간의 오차를 추정하는 메커니즘도 필요하다.

#### GNSS/INS 통합에서의 공분산 세팅

GNSS/INS 통합 필터 설계 시 중요한 부분 중 하나가 GNSS 관측잡음 공분산 $\mathbf{R}*{k}$와 INS 상태잡음 공분산 $\mathbf{Q}*{k}$ 설정이다.

* $\mathbf{R}\_{k}$: GNSS 의사거리(또는 속도, 위상 등) 측정치의 표준편차, 위성 기하배열(DOP) 등에 따라 동적으로 설정 가능
* $\mathbf{Q}\_{k}$: INS 오차 모델(자이로 바이어스, 가속도계 바이어스 등)에 대응하는 잡음 세팅

일반적으로 초기 단계에서는 최대한 보수적으로(즉, 공분산을 크게) 잡았다가, 시스템이 정상적으로 동작하는 것을 확인하면서 조정하기도 한다.

#### GNSS 장애(Outage) 시 INS 예측 모드

GNSS/INS 통합에서 GNSS 신호가 차단되는 구간(터널, 고층 건물 사이 등)에는 INS가 오차를 계속 누적하게 되므로, 정상적인 GNSS 가용 구간에서 오차항을 최대한 정확히 추정해두어야 한다. GNSS 장애가 시작되면 통합 필터는 GNSS 관측이 없는 상태에서 INS 예측 모드(prediction mode)로만 동작한다. 이때의 상태 추정은 다음과 같은 방정식을 기반으로 진행된다.

$$
\mathbf{\hat{x}}*{k|k-1} = f(\mathbf{\hat{x}}*{k-1|k-1}, \mathbf{u}*{k-1})
\\
\mathbf{P}*{k|k-1} = \mathbf{F}*{k-1}\mathbf{P}*{k-1|k-1}\mathbf{F}*{k-1}^T + \mathbf{Q}*{k-1}
$$

GNSS가 다시 가용해지면, 관측(update) 단계에서 그간 누적된 오차를 보정한다. 이때 GNSS 측정치와의 차이가 매우 클 수 있으므로, 필터가 수렴하기 위해서는 일정 시간 또는 충분한 위성 가시성이 확보되어야 한다.

#### GNSS/INS 정렬(Alignment) 기법

INS가 자체적으로 올바른 자세(orientation)와 속도, 위치 상태를 추정하기 위해서는 초기 정렬(Alignment) 과정이 필요하다. 정렬 과정은 INS가 시작되는 시점(혹은 재시작되는 시점)에서 관성센서(자이로, 가속도계)가 측정하는 중력 벡터, 지구 자전 속도 등을 활용하여 초기 자세와 속도를 설정하고, 이후 GNSS 측정과 비교·보정하여 정확도를 높인다.

* **초기 정렬(Initial Alignment)**
  * 고정 상태(Static Alignment): 플랫폼이 지상(또는 선상)에서 거의 움직이지 않는 상태를 가정. 중력 벡터와 지구 자전 벡터로부터 초기 자세(오일러 각, 또는 DCM 등)를 대략 유추한다.
  * 동적 정렬(Dynamic Alignment): 플랫폼이 움직이는 상황(예: 함정, 차량이 주행 중)에서 관성센서 데이터를 통해 초기 오차를 추정한다. 이동 경로가 다양할수록 정렬 정확도가 높아지는 경향이 있다.
* **GNSS 보조 정렬(GNSS Aided Alignment)** INS 단독 정렬에서 발생할 수 있는 초기 오차를 GNSS 측정값(위치/속도)과 칼만필터를 통해 보정한다. 특히 초기에 GNSS가 제공하는 속도 정보를 INS 속도 오차 관측으로 사용하면, 자이로 및 가속도계 바이어스 추정을 빠르게 안정화할 수 있다.

#### 레버암(Lever Arm) 보정

GNSS 안테나와 IMU(관성측정장치)의 설치 위치가 동일하지 않은 경우, 두 센서 간의 공간적 거리(Lever arm) 때문에 동특성에서 차이가 발생한다. 예를 들어, 항공기 날개에 GNSS 안테나를 장착하고, 기체 내부에 IMU가 있을 경우, 회전이나 가속이 발생할 때 안테나와 IMU가 서로 다른 선형/각속도 성분을 경험할 수 있다. 이를 수학적으로 보정하기 위해서는, 항공기(또는 차량) 바디좌표계에서 안테나 중심과 IMU 중심 간의 위치 벡터 $\mathbf{r}\_{IMU}^{ANT}$를 정확히 파악하고, 다음과 같은 관계식을 INS 모델에 반영한다.

$$
\mathbf{v}*\text{ANT} = \mathbf{v}*\text{IMU} + \boldsymbol{\omega}*\text{body} \times \mathbf{r}*\text{IMU}^{ANT}
$$

여기서

* $\mathbf{v}\_\text{ANT}$: GNSS 안테나 위치에서의 선속도
* $\mathbf{v}\_\text{IMU}$: IMU 센서가 위치한 지점의 선속도
* $\boldsymbol{\omega}\_\text{body}$: 바디좌표계에서의 각속도
* $\mathbf{r}\_\text{IMU}^\text{ANT}$: IMU 기준좌표계에서 안테나 위치로의 벡터

이러한 레버암 보정은 특히 항공, 해상, 무인기 등에 적용될 때 필수적으로 고려해야 하며, 통합 필터의 상태벡터에 포함되기도 한다(즉, 레버암 불확실성도 함께 추정).

#### GNSS/INS 결합에서의 고장 검출(FDI)

센서 융합 시스템에서는 일부 센서 이상이나 GNSS 측정값의 급격한 오류(스푸핑, 멀티패스, 신호 차단 등)가 발생할 수 있다. 이를 방지하거나 완화하기 위해 고장 검출 및 격리(FDI, Fault Detection and Isolation) 기법을 통합 필터 구조 내에 구현한다. 예시로 다음과 같은 방법을 사용할 수 있다.

* **잔차(Residual) 검정** 칼만필터에서 관측(update) 시점마다, 실제 관측치 $\mathbf{z}*{k}$와 예측 관측치 $h(\mathbf{\hat{x}}*{k|k-1})$의 차이(잔차)가 통계적으로 유의한지 검사한다. 잔차 벡터 $\mathbf{r}*{k} = \mathbf{z}*{k} - h(\mathbf{\hat{x}}*{k|k-1})$ 잔차 공분산 $\mathbf{S}*{k} = \mathbf{H}*{k}\mathbf{P}*{k|k-1}\mathbf{H}*{k}^T + \mathbf{R}*{k}$ 이를 바탕으로 잔차의 마할라노비스 거리(Mahalanobis distance)가 특정 임계값을 초과하면 이상치로 간주하여 관측값을 배제하거나 가중치를 낮춘다.
* **센서 교차 검증(Cross-Checking) 기법** GNSS 수신기가 여러 대 있거나, INS 외에 추가 센서(예: 레이더 고도계 등)가 있을 때, 측정값 간의 상호 검증을 통해 고장 여부를 판단한다.

#### 휴리스틱(Heuristic)·적응형(Adaptive) 필터링

실제 환경에서는 GNSS 측정 잡음이 시간·공간적으로 변화하거나, INS 센서 바이어스가 온도·진동 등 외부 요인에 의해 달라질 수 있다. 따라서 다음과 같은 적응형 기법이 활용되기도 한다.

* **Adaptive Kalman Filter** 필터 동작 중에 관측 잡음 공분산($\mathbf{R}*{k}$)이나 시스템 노이즈 공분산($\mathbf{Q}*{k}$)을 추정하여, 추정 결과가 계속해서 업데이트되도록 하는 방법. 예를 들어, GNSS 신호 품질(DOP, 신호세기, 위성가시성 등)을 기반으로 $\mathbf{R}\_{k}$를 동적으로 조정한다.
* **Outlier Rejection** 순간적인 스파이크나 이상치가 발생할 경우, 잔차 기반으로 이를 탐지하고, 그 측정치를 필터 업데이트에서 제외한다.

#### 예시: 느슨한 결합 EKF의 간략 Pseudo-code

느슨한 결합 방식의 EKF를 가정한 간단한 의사 코드는 다음과 같이 요약할 수 있다(에러 상태공간 기반).

```
Initialize x_est(0), P(0)

for k in 1 to END:
    # 1. INS Propagation
    x_pred = f(x_est(k-1), u_IMU(k-1))
    F_k-1 = calculateStateTransitionMatrix(x_est(k-1), u_IMU(k-1))
    P_pred = F_k-1 * P(k-1) * F_k-1^T + Q_k-1

    # 2. GNSS Update (if available)
    if GNSS_meas is available at step k:
        z_k = GNSS_positions, GNSS_velocities
        H_k = calculateMeasurementMatrix(x_pred)
        K = P_pred * H_k^T * inv(H_k * P_pred * H_k^T + R_k)
        x_est(k) = x_pred + K * (z_k - h(x_pred))
        P(k) = (I - K*H_k) * P_pred
    else:
        x_est(k) = x_pred
        P(k) = P_pred
```

위 구조에서 `f()`는 INS 오차 상태를 전달하는 비선형 모델, `calculateStateTransitionMatrix()`는 그 비선형식을 선형화한 상태전이행렬(자이로 바이어스, 가속도계 바이어스, 자세/속도/위치 오차 등 포함), `h()`는 GNSS 관측 모델 함수다.

#### 확장 기법: RTK/INS, PPP/INS

기본적인 GNSS/INS 결합에서는 표준 단일주파수 GNSS 또는 단일 수신기 솔루션을 사용하지만, 오차 감소와 정밀도 향상을 위해 다음과 같은 확장 기법이 널리 활용된다.

* **RTK(Real-Time Kinematic)/INS** 짧은 기준국(Baseline) 거리를 가진 기준국 GNSS 수신기로부터 고정밀 보정 정보를 실시간(또는 준실시간)으로 수신하여, 캐리어 위상 기반의 센티미터급 정확도를 확보할 수 있다. INS와 결합하면 순간적인 위성 신호 장애 시에도 INS가 상대 위치 추정을 보완하여, RTK의 고정해(Fixed solution)가 유지되는 시간/조건을 향상시킬 수 있다.
* **PPP(Precise Point Positioning)/INS** 광역(Global) 혹은 대역(Local) 위성 오차 정밀 모형(위성 궤도와 시계, 전리층, 대류층 보정 등)을 활용하는 PPP 기법을 INS와 결합한 경우, 별도의 짧은 거리 기준국 없이도 데시미터~~센티미터급 정확도를 얻을 수 있다. 다만 초기 수렴 시간(수 분~~수십 분)이 필요한 점을 INS로 보완할 수 있으나, GNSS 신호 환경이 열악한 곳에서는 PPP 수렴이 지연되거나 오차가 커질 수 있다.

RTK/INS나 PPP/INS 모두, 기본적인 결합 구조는 느슨하거나 밀접한 결합 방식을 따른다. 차이는 GNSS 측정값 또는 PVT를 생성할 때 사용하는 보정 정보와 처리 알고리즘이며, 이로 인해 관측방정식 $\mathbf{z}*{k}$나 관측잡음 공분산 $\mathbf{R}*{k}$가 달라진다.

#### INS 교정(Calibration) 및 내장 보정(In-run Calibration)

GNSS/INS 통합에서 INS 오차를 최소화하기 위해서는 IMU(자이로, 가속도계)의 교정 과정이 중요하다. 전통적으로는 IMU를 별도의 회전테이블(rotating table)에서 정밀 계측하여 센서 바이어스, 스케일 팩터, 축 간 정렬 오차(Misalignment) 등을 추정·보정한다. 그러나 실제 운용 환경에서 추가 오차가 발생할 수 있으므로, 통합 필터 내에서 지속적으로 바이어스 항을 재추정(in-run calibration)하는 방식을 사용한다.

예를 들어, 자이로 바이어스 $\mathbf{b}\_g$와 가속도계 바이어스 $\mathbf{b}\_a$가 다음과 같이 상태벡터에 포함될 경우,

$$
\mathbf{x} = \begin{bmatrix} \delta \mathbf{r} \ \delta \mathbf{v} \ \delta \boldsymbol{\phi} \ \mathbf{b}\_g \ \mathbf{b}\_a \end{bmatrix}
$$

INS 예측 단계에서 이들 바이어스 항은 1차 Markov 과정 혹은 상수항(constant bias) 모델로 가정하며, GNSS 관측 업데이트를 통해 실제 센서 출력과의 차이를 기반으로 바이어스를 보정한다.

#### GNSS/INS에서 오차 전파(Propagation)와 부분별 기여

GNSS/INS 결합 오차의 주요 기여 요소는 다음과 같이 세분할 수 있다.

1. **GNSS 측**
   * 위성 궤도·시계 오차
   * 대류층·전리층 지연 오차
   * 측정 잡음(멀티패스, 수신기 내부 노이즈 등)
   * 기준국 혹은 정밀 보정 정보(RTK, PPP 등)의 품질
2. **INS 측**
   * 자이로·가속도계 바이어스, 스케일 팩터, 랜덤 워크 등
   * 초기 정렬 오차(Initial Alignment Error)
   * 시간 동기화 오차(클록 드리프트, latency 등)
3. **융합 과정(Kalman Filter, 등)**
   * 부정확한 오차 공분산 설정($\mathbf{Q}*{k}, \mathbf{R}*{k}$)
   * 잘못된 동역학 모델(예: 플랫폼 운동 특성 누락)
   * 측정 이상치(Outlier) 미검출

각 부분별 오차가 어떻게 최종 항법 성능에 영향을 미치는지를 해석하기 위해서는, GNSS/INS 통합 필터 내 상호작용을 추적하거나, 몬테카를로(Monte Carlo) 시뮬레이션 등을 수행하여 통계적 특성을 살펴보는 방안이 있다.

#### GNSS/INS 시뮬레이션 환경

실제 GNSS/INS 결합 알고리즘을 개발·검증하기 위해, 하드웨어-인-더-루프(HIL) 또는 소프트웨어 기반 시뮬레이터를 활용한다.

* **GNSS 시뮬레이터** 위성 궤도, 전리층·대류층 모델, 멀티패스 환경 모사, GNSS 수신기 내부 노이즈 모델 등을 포함하여 가상 측정값($\mathbf{z}\_{k}^\text{GNSS}$)을 생성한다.
* **INS 시뮬레이터** 차량·항공기·해상 이동체 등 플랫폼의 운동 궤적(가속도, 각속도)을 바탕으로 이상적(ideal) IMU 출력을 계산하고, 여기에 센서 바이어스·노이즈 모델을 추가하여 실제 IMU와 유사한 데이터 시퀀스를 만든다.

이러한 가상 GNSS/INS 측정 데이터를 통합 칼만필터(또는 다른 필터)에 입력하여, 알고리즘의 수렴성, 오차 특성, 장애 상황에서의 성능 등을 사전에 검증할 수 있다.

#### 구현 시 주의사항

1. **이산화 과정(Discretization)** 칼만필터 구현 시, 연속 시간의 오차 모델을 디지털 시스템(샘플링 주기 $T$)에 맞추어 이산화해야 한다. 예를 들어, 1차 Markov 과정:

   $$
   \dot{\mathbf{b}}(t) = -\frac{1}{\tau}\mathbf{b}(t) + \mathbf{w}(t)
   $$

   은 샘플링 주기 $T$에 대해 지수적 적분을 통해 근사 이산화가 가능하다.
2. **수치 안정성** 상태전이행렬 $\mathbf{F}*{k}$, 공분산 행렬 $\mathbf{P}*{k}$ 등이 매우 큰 값 또는 매우 작은 값을 다룰 때, 부동소수점 연산에서 수치 불안정성이 발생할 수 있다. 이를 방지하기 위해서 정규화(normalization), 수치적 조건수 개선 기법 등을 사용한다.
3. **회전좌표계 보정** 항공·해상 등에서 큰 회전이 발생할 경우, 작은 오차가 누적되어 큰 자세 오차로 이어질 수 있으므로, DCM이나 쿼터니언 기반으로 엄밀한 회전 계산을 수행해야 한다.
4. **상태 파편화(State Partition)** 통합 필터 상태 공간의 차원이 커질수록 필터 연산량이 증가하고, 적응형 추정도 복잡해진다. 실제 시스템 요구사항에 따라 불필요한 상태 항(예: 2차\~3차 마코프 모델 등)을 줄이고, 필요한 부분만 유지하는 전략을 취하기도 한다.
