칼만 필터와 확장 칼만 필터는 응용 수학에 별도의 책으로 정리 되어 있으니 참조 할 수 있다. 이 책에서는 기본 소개만 하겠다.

칼만 필터(Kalman Filter)

칼만 필터는 상태 공간 모델에서 측정값을 이용해 시스템의 상태를 추정하는 재귀 필터 알고리즘이다. 상태 공간 모델은 다음과 같이 나타낼 수 있다:

\mathbf{x}_k = \mathbf{A} \mathbf{x}_{k-1} + \mathbf{B} \mathbf{u}_{k-1} + \mathbf{w}_{k-1}
\mathbf{z}_k = \mathbf{H} \mathbf{x}_k + \mathbf{v}_k

여기서: - \mathbf{x}_kk 시점의 상태 벡터 - \mathbf{A}는 상태 전이 행렬 - \mathbf{B}는 제어 입력 행렬 - \mathbf{u}_kk 시점의 제어 입력 - \mathbf{w}_k는 시스템 노이즈로, Q 공분산을 갖는 가우시안 노이즈 (\mathbf{w}_k \sim \mathcal{N}(0, Q)) - \mathbf{z}_k는 관측 벡터 - \mathbf{H}는 관측 모델 행렬 - \mathbf{v}_k는 측정 노이즈로, R 공분산을 갖는 가우시안 노이즈 (\mathbf{v}_k \sim \mathcal{N}(0, R))

칼만 필터는 예측(Prediction) 단계와 업데이트(Update) 단계로 나눌 수 있다.

예측 단계

먼저, 예측 단계에서는 이전 상태를 기반으로 현재 상태를 추정한다. 상태 벡터의 예측값과 오차 공분산을 계산하는 단계는 다음과 같다:

\hat{\mathbf{x}}_k^- = \mathbf{A} \hat{\mathbf{x}}_{k-1} + \mathbf{B} \mathbf{u}_{k-1}
\mathbf{P}_k^- = \mathbf{A} \mathbf{P}_{k-1} \mathbf{A}^T + \mathbf{Q}

여기서: - \hat{\mathbf{x}}_k^-는 예측된 상태 벡터 - \mathbf{P}_k^-는 예측된 오차 공분산 행렬 - \mathbf{Q}는 시스템 노이즈 공분산 행렬

업데이트 단계

예측된 상태와 실제 측정값의 차이를 이용해 추정된 상태를 보정하는 단계이다. 칼만 이득(Kalman Gain)을 계산하여 상태를 업데이트한다:

\mathbf{K}_k = \mathbf{P}_k^- \mathbf{H}^T \left( \mathbf{H} \mathbf{P}_k^- \mathbf{H}^T + \mathbf{R} \right)^{-1}
\hat{\mathbf{x}}_k = \hat{\mathbf{x}}_k^- + \mathbf{K}_k \left( \mathbf{z}_k - \mathbf{H} \hat{\mathbf{x}}_k^- \right)
\mathbf{P}_k = \left( \mathbf{I} - \mathbf{K}_k \mathbf{H} \right) \mathbf{P}_k^-

여기서: - \mathbf{K}_k는 칼만 이득 - \hat{\mathbf{x}}_k는 업데이트된 상태 벡터 - \mathbf{P}_k는 업데이트된 오차 공분산 행렬 - \mathbf{R}은 측정 노이즈 공분산 행렬 - \mathbf{I}는 단위 행렬

칼만 필터는 시스템의 동적인 변화를 추적하며, 잡음이 있는 측정값을 보정하는 강력한 알고리즘이다.

확장 칼만 필터(Extended Kalman Filter)

확장 칼만 필터(EKF)는 칼만 필터의 비선형 시스템에 대한 확장이다. 비선형 시스템에서 상태 공간 모델은 다음과 같이 표현된다:

\mathbf{x}_k = f(\mathbf{x}_{k-1}, \mathbf{u}_{k-1}) + \mathbf{w}_{k-1}
\mathbf{z}_k = h(\mathbf{x}_k) + \mathbf{v}_k

여기서 f(\cdot)는 상태 전이 비선형 함수이고, h(\cdot)는 관측 비선형 함수이다.

예측 단계

비선형 시스템에서는 먼저 상태와 공분산을 선형화하여 예측한다. 이는 야코비(Jacobian) 행렬을 이용하여 근사할 수 있다.

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

여기서: - \mathbf{F}_{k-1} = \frac{\partial f}{\partial \mathbf{x}} \Big|_{\hat{\mathbf{x}}_{k-1}}는 상태 전이 함수의 야코비 행렬

업데이트 단계

확장 칼만 필터의 업데이트 단계는 역시 비선형 시스템의 관측 모델을 선형화하여 진행된다. 관측 모델의 야코비 행렬을 이용해 칼만 이득과 상태를 업데이트한다.

\mathbf{K}_k = \mathbf{P}_k^- \mathbf{H}_k^T \left( \mathbf{H}_k \mathbf{P}_k^- \mathbf{H}_k^T + \mathbf{R} \right)^{-1}
\hat{\mathbf{x}}_k = \hat{\mathbf{x}}_k^- + \mathbf{K}_k \left( \mathbf{z}_k - h(\hat{\mathbf{x}}_k^-) \right)
\mathbf{P}_k = \left( \mathbf{I} - \mathbf{K}_k \mathbf{H}_k \right) \mathbf{P}_k^-

여기서: - \mathbf{H}_k = \frac{\partial h}{\partial \mathbf{x}} \Big|_{\hat{\mathbf{x}}_k^-}는 관측 모델의 야코비 행렬 - \hat{\mathbf{x}}_k^-는 비선형 함수 h(\hat{\mathbf{x}}_k^-)를 적용한 예측 상태 벡터 - \mathbf{K}_k는 칼만 이득

이와 같은 방식으로 비선형 시스템에 대한 추정을 수행할 수 있으며, 확장 칼만 필터는 야코비 행렬을 통해 상태 전이 및 관측 모델을 선형화하여 재귀적으로 상태를 업데이트한다.

칼만 필터와 확장 칼만 필터의 차이점

칼만 필터와 확장 칼만 필터의 주요 차이점은 시스템이 선형인지 비선형인지에 있다. 칼만 필터는 선형 시스템에 대해 정확한 추정을 수행하지만, 비선형 시스템에서는 그 성능이 제한적이다. 확장 칼만 필터는 비선형 시스템에 대한 확장으로, 야코비 행렬을 이용해 비선형성을 근사하고, 이를 통해 필터링을 진행한다.

야코비 행렬의 중요성

확장 칼만 필터에서 야코비 행렬은 필터의 성능에 중요한 영향을 미친다. 시스템의 비선형성이 강할수록 야코비 행렬의 정확한 계산이 필요하며, 근사 과정에서 발생하는 오차가 필터의 성능에 영향을 줄 수 있다. 특히 GNSS 시스템에서는 신호 전파 경로의 복잡성으로 인해 비선형성이 큰 문제가 되며, 야코비 행렬을 정확히 계산하는 것이 중요한 역할을 한다.

확장 칼만 필터의 제약 사항

확장 칼만 필터는 비선형 시스템을 다루는 필터로 유용하지만 몇 가지 제약 사항이 있다. 대표적으로: - 비선형 함수가 강하게 비선형일 경우 야코비 근사가 적절하지 않을 수 있다. - 야코비 계산 자체가 복잡하고, 계산 부담이 커질 수 있다. - GNSS 신호 수신 환경에서는 다중 경로 문제나 잡음의 영향을 많이 받을 수 있어 이에 대한 보정이 필요하다.