오차 공분산 행렬

확장 칼만 필터의 성능을 평가할 때 가장 중요한 지표 중 하나는 오차 공분산 행렬 \mathbf{P}이다. 오차 공분산 행렬은 상태 추정 오차의 크기와 그 상호 관계를 나타내는 척도로, 필터가 예측하는 상태와 실제 상태 간의 불확실성을 표현한다.

오차 공분산 행렬 \mathbf{P}는 다음과 같은 형태를 가진다.

\mathbf{P} = \mathbb{E} \left[ (\mathbf{x} - \hat{\mathbf{x}})(\mathbf{x} - \hat{\mathbf{x}})^\top \right]

여기서: - \mathbf{x}는 실제 상태 벡터 - \hat{\mathbf{x}}는 추정된 상태 벡터 - \mathbb{E} \left[ \cdot \right]는 기대값

이 오차 공분산 행렬이 작을수록 필터의 추정이 정확함을 의미하며, 상태의 추정 오차가 감소한 것을 나타낸다.

평균 제곱 오차 (MSE)

평균 제곱 오차 \text{MSE}는 확장 칼만 필터의 성능을 평가하는 또 다른 중요한 지표로, 추정된 상태와 실제 상태 간의 차이의 제곱을 평균낸 값을 의미한다. 이는 필터의 추정이 얼마나 실제 값에 근접하는지를 나타낸다. MSE는 다음과 같이 정의된다.

\text{MSE} = \frac{1}{N} \sum_{i=1}^{N} \| \mathbf{x}_i - \hat{\mathbf{x}}_i \|^2

여기서: - N은 데이터 포인트의 수 - \mathbf{x}_i는 실제 상태 벡터 - \hat{\mathbf{x}}_i는 추정된 상태 벡터 - \| \cdot \|는 벡터의 유클리드 거리 (노름)

MSE가 작을수록 필터의 성능이 더 우수하다는 것을 나타낸다. 이는 특히 시간에 따라 필터가 얼마나 정확하게 동작하는지를 평가하는 데 유용하다.

혁신 벡터와 혁신 공분산

혁신 벡터 \mathbf{y}_k는 필터가 예측한 측정값과 실제 측정값 간의 차이를 나타낸다. 이는 필터의 성능을 평가하는 데 중요한 역할을 하며, 다음과 같이 정의된다.

\mathbf{y}_k = \mathbf{z}_k - \mathbf{H}_k \hat{\mathbf{x}}_{k|k-1}

여기서: - \mathbf{z}_k는 실제 측정값 - \mathbf{H}_k는 측정 모델의 선형화 행렬 - \hat{\mathbf{x}}_{k|k-1}는 예측된 상태 벡터

혁신 벡터의 공분산 행렬 \mathbf{S}_k는 다음과 같이 정의된다.

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

여기서: - \mathbf{P}_{k|k-1}는 예측된 오차 공분산 행렬 - \mathbf{R}_k는 측정 잡음 공분산 행렬

혁신 공분산 \mathbf{S}_k가 작을수록 필터의 예측이 더 정확하며, 이는 필터가 실제 측정값과 일치하는 결과를 제공한다는 의미다.

누적 혁신 벡터

확장 칼만 필터의 성능을 장기간에 걸쳐 평가하기 위해, 누적 혁신 벡터 \mathbf{y}_{\text{cumulative}}를 사용할 수 있다. 이는 시간에 따른 혁신 벡터의 누적합으로, 필터가 지속적으로 잘 작동하는지를 평가하는 데 유용하다. 누적 혁신 벡터는 다음과 같이 정의된다.

\mathbf{y}_{\text{cumulative}} = \sum_{k=1}^{N} \mathbf{y}_k

여기서: - N은 평가 기간 동안의 시간 단계 수 - \mathbf{y}_k는 각 시간 단계 k에서의 혁신 벡터

누적 혁신 벡터가 시간이 지남에 따라 일정하게 유지되거나 작아지면, 필터가 안정적으로 작동하고 있다는 것을 의미한다. 반면에, 큰 변화가 발생하면 필터가 새로운 정보에 적응하고 있음을 나타낼 수 있다.

로그 우도 함수 (Log-Likelihood)

로그 우도 함수는 필터의 성능을 통계적으로 평가하는 지표로, 필터가 관찰된 데이터를 얼마나 잘 설명하는지를 나타낸다. 이 값은 다음과 같이 정의된다.

\mathcal{L} = -\frac{1}{2} \sum_{k=1}^{N} \left( \log \det (\mathbf{S}_k) + \mathbf{y}_k^\top \mathbf{S}_k^{-1} \mathbf{y}_k \right)

여기서: - \mathbf{S}_k는 혁신 공분산 행렬 - \mathbf{y}_k는 혁신 벡터 - N은 시간 단계 수

로그 우도 함수 \mathcal{L} 값이 높을수록 필터가 실제 데이터를 잘 설명하고 있다는 것을 의미하며, 이는 필터의 추정이 신뢰할 수 있음을 나타낸다.

평균 혁신 제곱 (Mean Squared Innovation)

평균 혁신 제곱 \text{MSI}는 필터의 혁신 벡터의 크기를 평균내어 필터 성능을 평가하는 지표이다. 이는 다음과 같이 계산된다.

\text{MSI} = \frac{1}{N} \sum_{k=1}^{N} \mathbf{y}_k^\top \mathbf{y}_k

여기서: - \mathbf{y}_k는 각 시간 단계 k에서의 혁신 벡터 - N은 시간 단계 수

평균 혁신 제곱 값이 작을수록 필터가 추정한 상태가 실제 측정값과 더 가까워지며, 이는 필터의 추정 정확도가 높다는 것을 의미한다.

정규화 혁신 제곱 (Normalized Innovation Squared)

정규화 혁신 제곱 \text{NIS}는 혁신 벡터를 혁신 공분산 행렬로 정규화한 값으로, 확장 칼만 필터의 성능을 평가하는 데 자주 사용되는 지표다. 이는 필터가 특정 시점에서 얼마나 잘 동작하고 있는지를 평가할 수 있게 해준다. 정규화 혁신 제곱은 다음과 같이 정의된다.

\text{NIS}_k = \mathbf{y}_k^\top \mathbf{S}_k^{-1} \mathbf{y}_k

여기서: - \mathbf{y}_k는 각 시간 단계 k에서의 혁신 벡터 - \mathbf{S}_k는 혁신 공분산 행렬

이 값은 일반적으로 \chi^2 분포를 따른다고 가정된다. 필터가 제대로 동작할 경우, \text{NIS} 값은 예상 범위 내에 있어야 하며, 값이 지나치게 크거나 작으면 필터에 문제가 있을 수 있음을 나타낸다. 예를 들어, 값이 너무 크면 필터가 시스템의 노이즈를 과소평가하고 있음을 의미할 수 있고, 반대로 너무 작으면 과대평가하고 있음을 나타낸다.

제곱 혁신 평균 (Average Squared Innovation)

제곱 혁신 평균 \text{ASI}는 모든 시간 단계에서의 혁신 제곱값의 평균을 나타내며, 필터가 전체적으로 얼마나 잘 동작하고 있는지를 평가하는 지표다. 다음과 같이 정의된다.

\text{ASI} = \frac{1}{N} \sum_{k=1}^{N} \mathbf{y}_k^\top \mathbf{S}_k^{-1} \mathbf{y}_k

여기서: - N은 시간 단계 수 - \mathbf{y}_k는 각 시간 단계에서의 혁신 벡터 - \mathbf{S}_k는 각 시간 단계에서의 혁신 공분산 행렬

ASI는 필터의 장기적인 성능을 평가하는 데 유용하며, 시스템이 시간이 지나면서 필터의 추정에 얼마나 신뢰할 수 있는지를 판단하는 데 도움을 준다.

관측가능성 (Observability)

관측가능성은 시스템이 상태를 정확하게 추정할 수 있는지를 나타내는 중요한 성능 지표다. 이는 시스템의 동역학과 측정 모델의 조합이 모든 상태 변수를 충분히 추정할 수 있는지 평가하는 척도로, 관측가능성을 보장하기 위해서는 시스템이 선형화된 후 관측가능성 행렬 \mathbf{O}가 풀랭크(Full Rank)여야 한다. 관측가능성 행렬은 다음과 같이 정의된다.

\mathbf{O} = \begin{bmatrix} \mathbf{H} \\ \mathbf{H} \mathbf{F} \\ \mathbf{H} \mathbf{F}^2 \\ \vdots \\ \mathbf{H} \mathbf{F}^{n-1} \end{bmatrix}

여기서: - \mathbf{H}는 측정 모델의 선형화 행렬 - \mathbf{F}는 상태 전이 행렬 - n은 시스템의 상태 변수 수

관측가능성이 보장되면, 확장 칼만 필터는 비선형 시스템에서도 상태를 정확하게 추정할 수 있다. 반면에 관측가능성이 떨어지면 필터가 정확한 상태 추정치를 제공하지 못할 수 있다.

추적 오차 (Tracking Error)

추적 오차는 필터가 시간에 따라 상태를 얼마나 정확하게 추적하고 있는지를 평가하는 지표다. 이는 필터의 추정값과 실제 상태 간의 차이를 나타내며, 다음과 같이 정의된다.

\text{Tracking Error} = \| \mathbf{x}_k - \hat{\mathbf{x}}_k \|

여기서: - \mathbf{x}_k는 실제 상태 벡터 - \hat{\mathbf{x}}_k는 필터가 추정한 상태 벡터 - \| \cdot \|는 유클리드 거리

추적 오차는 시간에 따라 변할 수 있으며, 이를 평가하여 필터의 실시간 성능을 판단할 수 있다. 오차가 일정하거나 감소하면 필터가 안정적으로 작동하고 있음을 의미한다. 추적 오차가 커지면 필터의 추정에 문제가 있을 수 있음을 나타낸다.

계산 복잡도 (Computational Complexity)

확장 칼만 필터의 성능을 평가할 때, 계산 복잡도는 매우 중요한 요소다. 비선형 시스템의 특성상, 필터는 선형화 과정과 야코비 행렬 계산 등 많은 계산을 요구한다. 따라서 알고리즘의 계산 복잡도를 분석하고 최적화하는 것이 필터의 실시간 성능을 평가하는 데 필요하다.

확장 칼만 필터의 계산 복잡도는 크게 다음 두 가지 요소에 의해 결정된다.

  1. 상태 전이와 선형화: 상태 전이 함수와 측정 함수의 야코비 계산은 필터의 성능에 중요한 영향을 미치며, 이 계산은 시스템의 상태 차원 n에 따라 복잡도가 달라진다. 야코비 계산의 복잡도는 O(n^2)으로, 시스템의 상태 변수 수가 증가할수록 계산 시간이 기하급수적으로 늘어난다.

  2. 오차 공분산 행렬의 업데이트: 오차 공분산 행렬 \mathbf{P}의 업데이트 단계에서는 행렬의 곱셈과 덧셈이 포함되므로 복잡도는 O(n^3)이다. 시스템이 복잡해질수록 이 단계에서의 연산 시간이 중요하게 작용한다.

이러한 계산 복잡도를 최소화하기 위해, 수치적 최적화 기법이나 병렬 처리 기법 등을 도입하여 실시간 처리 성능을 향상시킬 수 있다.

실시간 성능 (Real-Time Performance)

실시간 성능은 확장 칼만 필터가 실시간으로 데이터를 처리할 수 있는지를 평가하는 중요한 지표다. 특히, 필터가 로봇이나 자율 주행 차량과 같은 동적 시스템에 적용될 경우, 데이터의 주기적 갱신 속도에 맞춰 상태 추정을 정확하고 신속하게 수행할 수 있어야 한다. 실시간 성능은 다음과 같은 요소에 의해 결정된다.

  1. 센서 데이터 업데이트 주기: 센서가 제공하는 데이터의 업데이트 주기에 필터가 얼마나 신속하게 반응하는지가 중요하다. 예를 들어, 고주파 데이터(자이로, 가속도계 등)를 다루는 경우 필터는 매우 짧은 시간 내에 연산을 완료해야 한다.

  2. 연산 시간: 확장 칼만 필터의 예측 및 업데이트 단계가 완료되는 데 걸리는 연산 시간이 필터의 실시간 성능을 결정한다. 이 연산 시간이 센서 데이터의 업데이트 주기보다 짧아야 실시간으로 상태를 추정할 수 있다.

실시간 성능을 높이기 위해 하드웨어 가속기나 다중 스레딩 기술을 사용하여 필터의 연산을 병렬 처리할 수 있다.