비선형 시스템의 복잡성

실제 많은 시스템은 선형 모델로 충분히 설명되지 않는다. 예를 들어, 드론, 자율 주행 차량, 로봇 시스템과 같은 복잡한 동적 시스템은 비선형성을 내포하고 있다. 비선형 시스템의 경우, 시스템 모델과 측정 모델 모두에서 비선형 함수가 등장하며, 이때 일반적인 칼만 필터는 한계에 부딪힌다. 칼만 필터는 선형 시스템에 적합한 필터링 방법이므로, 비선형 시스템에 적용할 경우 정확한 상태 추정이 어렵다.

비선형 시스템은 일반적으로 다음과 같은 형태로 나타난다:

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

여기서: - \mathbf{x}_k는 상태 벡터, - \mathbf{u}_k는 제어 입력, - \mathbf{z}_k는 관측 벡터, - \mathbf{w}_k\mathbf{v}_k는 각각 시스템 노이즈과 관측 잡음을 나타낸다.

이때, 함수 fh는 각각 시스템의 상태 변화와 관측 모델을 나타내며, 비선형 함수일 수 있다. 이러한 비선형성으로 인해 전통적인 칼만 필터를 그대로 적용할 수 없게 된다.

선형화의 필요성

비선형 시스템에서는 칼만 필터의 적용을 위해 시스템의 선형화를 고려해야 한다. 확장 칼만 필터는 비선형 시스템을 다루기 위해, 각 상태에서 시스템을 선형 근사하여 칼만 필터의 원리를 적용한다. 즉, 비선형 함수 fh를 1차 테일러 급수로 전개하여 선형화한다. 테일러 급수 전개는 다음과 같이 표현할 수 있다:

f(\mathbf{x}_k, \mathbf{u}_k) \approx f(\hat{\mathbf{x}}_k, \mathbf{u}_k) + \frac{\partial f}{\partial \mathbf{x}} \Big|_{\mathbf{x} = \hat{\mathbf{x}}_k} (\mathbf{x}_k - \hat{\mathbf{x}}_k)

여기서 \frac{\partial f}{\partial \mathbf{x}}는 시스템 모델 f의 야코비 행렬이다.

관측 모델도 마찬가지로 선형화된다:

h(\mathbf{x}_k) \approx h(\hat{\mathbf{x}}_k) + \frac{\partial h}{\partial \mathbf{x}} \Big|_{\mathbf{x} = \hat{\mathbf{x}}_k} (\mathbf{x}_k - \hat{\mathbf{x}}_k)

이와 같이 선형화를 통해 칼만 필터를 확장하여 적용할 수 있는 기반을 마련한다.

비선형 시스템에서의 오차 공분산 예측

확장 칼만 필터에서는 비선형 시스템의 오차 공분산을 선형화된 시스템을 바탕으로 예측해야 한다. 오차 공분산 행렬 \mathbf{P}_k는 시스템 상태 \mathbf{x}_k의 추정 오차를 나타내는 중요한 요소이며, 확장 칼만 필터에서 오차 공분산의 예측은 다음과 같이 이루어진다.

비선형 시스템에서 오차 공분산을 예측하기 위해, 시스템 모델 f(\mathbf{x}_k, \mathbf{u}_k)를 선형화한 야코비 행렬 \mathbf{F}_k를 사용한다. 야코비 행렬 \mathbf{F}_k는 다음과 같이 정의된다:

\mathbf{F}_k = \frac{\partial f}{\partial \mathbf{x}} \Big|_{\mathbf{x} = \hat{\mathbf{x}}_k}

이 야코비 행렬을 사용하여, 상태 오차 공분산의 예측 단계는 다음과 같이 표현할 수 있다:

\mathbf{P}_{k+1|k} = \mathbf{F}_k \mathbf{P}_k \mathbf{F}_k^\top + \mathbf{Q}_k

여기서: - \mathbf{P}_{k+1|k}는 예측된 오차 공분산 행렬, - \mathbf{P}_k는 현재 오차 공분산 행렬, - \mathbf{Q}_k는 시스템 노이즈 공분산 행렬이다.

이 예측 단계는 시스템 상태의 불확실성을 미래로 전파하는 역할을 하며, 비선형성을 고려한 오차 공분산의 선형화된 예측을 수행한다.

비선형 시스템에서의 관측 업데이트

비선형 시스템에서 관측 업데이트 단계는 관측 모델 h(\mathbf{x}_k)를 선형화한 후, 야코비 행렬 \mathbf{H}_k를 사용하여 진행된다. 관측 모델의 야코비 행렬 \mathbf{H}_k는 다음과 같이 정의된다:

\mathbf{H}_k = \frac{\partial h}{\partial \mathbf{x}} \Big|_{\mathbf{x} = \hat{\mathbf{x}}_k}

관측 업데이트 단계에서 오차 공분산 행렬과 칼만 이득 K_k는 다음과 같이 계산된다:

\mathbf{S}_k = \mathbf{H}_k \mathbf{P}_{k+1|k} \mathbf{H}_k^\top + \mathbf{R}_k
\mathbf{K}_k = \mathbf{P}_{k+1|k} \mathbf{H}_k^\top \mathbf{S}_k^{-1}

여기서: - \mathbf{S}_k는 잔차 공분산 행렬, - \mathbf{R}_k는 관측 잡음 공분산 행렬이다.

칼만 이득 \mathbf{K}_k는 상태 추정을 업데이트하는 데 중요한 역할을 하며, 이를 사용하여 상태 추정값을 보정한다:

\hat{\mathbf{x}}_{k+1} = \hat{\mathbf{x}}_{k+1|k} + \mathbf{K}_k (\mathbf{z}_k - h(\hat{\mathbf{x}}_{k+1|k}))

여기서 \mathbf{z}_k는 관측 벡터이며, \hat{\mathbf{x}}_{k+1|k}는 예측된 상태 벡터이다.