GNSS(Global Navigation Satellite System)와 관성항법 시스템(INS, Inertial Navigation System)은 상호 보완적인 특성을 가지는 두 시스템이다. GNSS는 절대 위치 정보를 제공하며, 장시간 사용 시에도 누적 오차가 거의 없는 장점이 있지만, 신호 차단 또는 간섭에 매우 취약한다. 반면에 INS는 가속도계와 자이로스코프를 통해 상대적인 위치, 속도 및 방향을 지속적으로 추적할 수 있지만, 시간이 지남에 따라 누적 오차가 발생하는 특성이 있다.

두 시스템을 결합하면 GNSS의 절대적인 위치 정보를 이용하여 INS의 누적 오차를 보정하고, INS는 GNSS가 제공하는 위치 정보를 보완하여 짧은 시간 동안 더 높은 위치 추정 정확도를 유지할 수 있다. 이를 통해 GNSS의 신호 차단 구역에서도 INS의 데이터를 사용하여 안정적인 내비게이션을 수행할 수 있다.

INS 시스템 개요

INS는 가속도계와 자이로스코프 같은 IMU(Inertial Measurement Unit)를 이용하여, 물체의 위치와 자세를 계산하는 시스템이다. IMU의 출력을 바탕으로 가속도와 각속도를 적분하여 속도와 위치를 계산하는 방식이다. 하지만, 가속도의 수치에는 작은 노이즈가 포함되어 있어, 시간이 지남에 따라 누적된 오차가 발생한다.

INS의 상태 벡터는 보통 다음과 같이 정의된다:

\mathbf{x}_{\text{INS}} = \begin{bmatrix} \mathbf{p} \\ \mathbf{v} \\ \mathbf{q} \\ \mathbf{b}_a \\ \mathbf{b}_g \end{bmatrix}

여기서 - \mathbf{p}는 위치 벡터이다. - \mathbf{v}는 속도 벡터이다. - \mathbf{q}는 자세를 나타내는 사원수(쿼터니언)이다. - \mathbf{b}_a는 가속도계의 바이어스이다. - \mathbf{b}_g는 자이로스코프의 바이어스이다.

INS는 다음과 같은 비선형 시스템 방정식으로 모델링된다:

\mathbf{\dot{x}}_{\text{INS}} = f(\mathbf{x}_{\text{INS}}, \mathbf{u}, \mathbf{w})

여기서 \mathbf{u}는 가속도와 각속도를 포함하는 입력 벡터이며, \mathbf{w}는 시스템 노이즈이다.

GNSS와 INS의 통합 방식

GNSS와 INS의 통합 방식은 주로 확장 칼만 필터(EKF)를 사용하여 이루어진다. INS는 높은 샘플링 주기로 상대적인 위치 정보를 제공하고, GNSS는 더 낮은 샘플링 주기로 절대적인 위치 정보를 제공한다. EKF는 이 두 센서의 데이터를 결합하여 오차를 보정하고 더 정확한 위치 추정 값을 계산한다.

확장 칼만 필터에서 사용하는 상태 벡터는 다음과 같다:

\mathbf{x} = \begin{bmatrix} \mathbf{p} \\ \mathbf{v} \\ \mathbf{q} \\ \mathbf{b}_a \\ \mathbf{b}_g \end{bmatrix}

EKF는 다음과 같은 과정을 거쳐 상태 벡터를 갱신한다:

  1. 예측 단계: INS 데이터를 기반으로 상태 벡터와 공분산 행렬을 예측한다.
\mathbf{x}_{k+1}^- = f(\mathbf{x}_k, \mathbf{u}_k)
\mathbf{P}_{k+1}^- = \mathbf{F}_k \mathbf{P}_k \mathbf{F}_k^T + \mathbf{Q}_k

여기서 \mathbf{F}_k는 상태 전이 행렬이고, \mathbf{Q}_k는 시스템 노이즈 공분산 행렬이다.

  1. 측정 단계: GNSS 데이터를 기반으로 상태 벡터를 업데이트한다.
\mathbf{y}_k = \mathbf{z}_k - h(\mathbf{x}_k^-)
\mathbf{S}_k = \mathbf{H}_k \mathbf{P}_k^- \mathbf{H}_k^T + \mathbf{R}_k
\mathbf{K}_k = \mathbf{P}_k^- \mathbf{H}_k^T \mathbf{S}_k^{-1}

여기서 \mathbf{H}_k는 측정 행렬, \mathbf{R}_k는 측정 노이즈 공분산 행렬이다.

  1. 갱신 단계: 예측된 상태를 GNSS 측정 데이터를 사용하여 보정한다.
\mathbf{x}_{k+1} = \mathbf{x}_{k+1}^- + \mathbf{K}_k \mathbf{y}_k
\mathbf{P}_{k+1} = (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k) \mathbf{P}_k^-

이와 같은 EKF의 반복적인 과정에서 GNSS의 절대 위치와 INS의 상대 위치 정보가 결합되어 누적 오차가 보정된다.

상태 전이 모델

INS는 비선형 시스템이므로 상태 전이 모델은 다음과 같이 정의된다. INS의 상태 벡터는 가속도계와 자이로스코프의 데이터를 기반으로 갱신된다. 각도 변화는 자이로스코프의 각속도를 적분하여 얻으며, 위치와 속도는 가속도계를 적분하여 계산된다.

상태 전이 방정식은 다음과 같이 표현된다:

\mathbf{x}_{k+1} = f(\mathbf{x}_k, \mathbf{u}_k) = \begin{bmatrix} \mathbf{p}_k + \Delta t \mathbf{v}_k + \frac{1}{2} \Delta t^2 (\mathbf{R}(\mathbf{q}_k)(\mathbf{a}_k - \mathbf{b}_{a,k}) + \mathbf{g}) \\ \mathbf{v}_k + \Delta t (\mathbf{R}(\mathbf{q}_k)(\mathbf{a}_k - \mathbf{b}_{a,k}) + \mathbf{g}) \\ \mathbf{q}_k \otimes \mathbf{q}\left(\frac{1}{2}(\mathbf{\omega}_k - \mathbf{b}_{g,k}) \Delta t \right) \\ \mathbf{b}_{a,k} \\ \mathbf{b}_{g,k} \end{bmatrix}

여기서: - \mathbf{p}_k는 시간 k에서의 위치 벡터이다. - \mathbf{v}_k는 시간 k에서의 속도 벡터이다. - \mathbf{q}_k는 시간 k에서의 사원수(쿼터니언)로 표현된 자세이다. - \mathbf{R}(\mathbf{q}_k)는 쿼터니언을 회전 행렬로 변환한 것이다. - \mathbf{a}_k는 시간 k에서 측정된 가속도이다. - \mathbf{b}_{a,k}는 가속도계의 바이어스이다. - \mathbf{g}는 중력 가속도 벡터이다. - \mathbf{\omega}_k는 시간 k에서 측정된 각속도이다. - \mathbf{b}_{g,k}는 자이로스코프의 바이어스이다. - \Delta t는 샘플링 시간 간격이다.

여기서 자세 갱신은 자이로스코프의 각속도를 사용하여 쿼터니언 \mathbf{q}를 갱신하는 형태로 이루어진다. 이는 다음과 같이 표현된다:

\mathbf{q}_{k+1} = \mathbf{q}_k \otimes \mathbf{q}\left(\frac{1}{2}(\mathbf{\omega}_k - \mathbf{b}_{g,k}) \Delta t \right)

위 식에서 \otimes는 쿼터니언의 곱을 나타낸다.

GNSS 측정 모델

GNSS는 주기적으로 절대적인 위치를 제공한다. 이 측정 모델은 다음과 같이 표현할 수 있다:

\mathbf{z}_k = h(\mathbf{x}_k) = \mathbf{p}_k + \mathbf{v}_{GNSS,k}

여기서: - \mathbf{z}_k는 GNSS로부터 측정된 위치이다. - \mathbf{v}_{GNSS,k}는 GNSS 측정 노이즈이다.

이 측정 방정식은 선형이므로 확장 칼만 필터에서 쉽게 사용할 수 있다. GNSS는 일반적으로 수십 미터 단위의 오차를 가질 수 있지만, 이 오차는 시간이 지남에 따라 INS의 누적 오차를 줄이는 데 효과적이다.

확장 칼만 필터 적용

확장 칼만 필터(EKF)를 이용하여 GNSS와 INS 데이터를 결합할 때, 다음과 같은 프로세스를 따른다:

  1. 상태 예측: INS 데이터를 기반으로 상태 벡터를 예측한다. 이때 비선형 시스템을 사용하는 경우이므로 상태 벡터와 공분산 행렬을 적절히 갱신한다.
\mathbf{x}_{k+1}^- = f(\mathbf{x}_k, \mathbf{u}_k)
\mathbf{P}_{k+1}^- = \mathbf{F}_k \mathbf{P}_k \mathbf{F}_k^T + \mathbf{Q}_k
  1. GNSS 측정 업데이트: GNSS로부터 받은 절대 위치 데이터를 이용하여 측정 업데이트를 수행한다. 측정 업데이트는 GNSS 데이터와 INS로부터 예측된 위치 데이터를 비교하여 필터를 보정하는 과정이다.
\mathbf{y}_k = \mathbf{z}_k - h(\mathbf{x}_k^-)
\mathbf{K}_k = \mathbf{P}_k^- \mathbf{H}_k^T (\mathbf{H}_k \mathbf{P}_k^- \mathbf{H}_k^T + \mathbf{R}_k)^{-1}

여기서: - \mathbf{H}_k는 측정 행렬이다. - \mathbf{R}_k는 GNSS 측정 노이즈 공분산 행렬이다.

  1. 상태 벡터 갱신: 칼만 이득 \mathbf{K}_k을 이용하여 상태 벡터를 갱신한다.
\mathbf{x}_{k+1} = \mathbf{x}_{k+1}^- + \mathbf{K}_k \mathbf{y}_k
  1. 공분산 행렬 갱신: 상태 벡터의 공분산 행렬을 갱신한다.
\mathbf{P}_{k+1} = (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k) \mathbf{P}_k^-