본문 바로가기
지식공학/필터링이론

칼만필터 기초

by Eric87 2021. 3. 26.
반응형

시스템 모델

시스템 모델은 우리가 다루는 문제를 수학식으로 표현해 놓은 것을 말합니다. 칼만 필터는 다음과 같은 선형 상태 모델을 대상르ㅗ 합니다.

$$x_{k+1}= \Phi _{k+1}+x_{k}+w_{k} 
\\ z_{k}=H_{k}x_{k}+v_{k}$$

위 식에서 시스템 모델에 잡음이 포함되어 있습니다. 각 변수는 다음과 같이 정의합니다.

 

상태 변수(state variable)은 거리, 속도, 무게 등 우리가 관심 있는 물리적인 변수로 이해하면 쉽습니다. 그리고 칼만 필터에서는 잡음이 중요한 역할을 하는데, 모든 잡음을 백색 잡음(white noise)으로 가정합니다. white noise란 신호가 시간에 따라 무작위로 들어오는 잡음이지만 모든 주파수 성분을 가지고 있고 평균이 0이고 시간에 대해 상관성(correlation)을 갖는 특징이 있습니다. $w_{k}$는 시스템에 유입되어 상태 변수에 영향을 주는 잡음을 말하며, $v_{k}$는 센서에서 유입되는 측정 잡음을 의미합니다. 그리고 A와 H는 모든 성분이 상수인 형렬입니다. 여기서 행렬 A는 시간에 따라 시스템이 어떻게 움직이는지를 나타냅니다. 한편 행렬 H는 측정값과 상태 변수의 관계를 나타냅니다. 

예측 과정

추정값($\hat{x}_{k}$)과 오차 공분산($P_{k}$)이 입력되면 최종 결과로 예측값을 내놓습니다. 이 값들은 추정 과정에 사용됩니다.

$$\hat{x}_{k+1}=\Phi_{k}\hat{x}_{k}
\\P^{-}_{k+1}=\Phi_{k}P_{k}\Phi^{T}_{k}+Q_{k}$$

$\Phi$와 Q는 시스템 모델에 이미 정의되어 있습니다. 시스템 모델의 다른 변수은 H와 R은 쓰이지 않았습니다. 위의 식에서 눈여겨봐야 할 부부은 예측값의 표기입니다. 시각 $t_{k+1}$에서의 값이라는 의미에서 아래첨자 K+1을 붙이고, 예측한 값이라는 표시로 위첨자 '-'를 붙였습니다. 위첨자를 붙인 이유는 같은 시각의 추정값과 구별하기 위해서입니다. 추정값과 오차 공분산을 제외한 다른 변수들은 이런 구분이 필요 없습니다. 칼만 필터는 추정값을 계산할 때 직전 추정값을 바로 쓰지 않고 예측 단계를 한 번 더 거칩니다. 이런 이유로 예측값을 사전 추정값(a priori estimate), 추정값을 사후 추정값(a posteriori estimate)이라고 부르기도 합니다. 추정 과정에서 사용되는 오차 공분산도 마찬가지입니다. 

그림에서 같은 시각에 측정값을 받아 계산하는 과정(둥근 화살표)이 '추정'이고 다음 시각으로 이동하면서 행렬 $\Phi$를 거치는 과정(직선 화살표)이 '예측'입니다. 예측 단계의 계산식은 비교적 간단하지만 칼만 필터의 성능에는 상당한 영향을 줍니다. 칼만 필터는 측정값의 예측 오차로 예측값을 적절히 보정해서 최종 추정값을 계산합니다. 이때 칼만 이득은 예측값을 얼마나 보정할지 결정하는 인자가 됩니다. 이처럼 추정값 계산식을 예측값의 보정 관점에서 보면 추정값의 성능에 가장 큰 영향을 주는 요인은 예측값의 정확성입니다. 예측값이 부정확하면 아무리 칼만 이득을 잘 선정한다고 해도 추정값이 부정확할 수 밖에 없기 때문입니다. 

추정 과정

$$\hat{x}_{k}=\hat{x}^{-}_{k}+K_{k}(z_{k}-H_{k}\hat{x}^{-}_{k})$$

$z_{k}$는 측정값을 뜻하고, $\hat{x}^{-}_{k}$는 예측값을 의미합니다.

$$\hat{x}_{k}=\hat{x}^{-}_{k}+K_{k}(z_{k}-H_{k}\hat{x}^{-}_{k}) \\

= \hat{x}^{-}_{k}+K_{k}z_{k}-K_{k}H_{k}\hat{x}^{-}_{k}\\
=(I-K_{k}H_{k})\hat{x}^{-}_{k}+K_{k}z_{k}$$

예측값과 측정값에 적절한 가중치를 곱한 다음, 두 값을 더해서 최종 추정값을 계산합니다. 측정값은 입력 받는 값이므로 당연히 아는 값입니다. 예측값은 예측 과정에서 계산한 값을 전달 받습니다. 그리고 H는 시스템 모델과 관련 있는 행렬인데 시스템 모델은 칼만 필터를 설계하기 전에 미리 확정되므로 역시 값을 알고 있습니다. 그렇다면 이제 남은 변수는 칼만 이득(Kalman gain)이라고 불리는 변수입니다. 이 값을 알면 새로운 추정값을 계산해낼 수 있습니다.

$$K_{k}=P^{-}_{k}H^{T}_{k}(H_{k}P^{-}_{k}H^{T}+R))^{-1}$$

칼만 이득이 어디에서 나왔는지 알아보기 위해서는 오차 공분산을 먼저 계산해야합니다. 오차 공분산은 칼만 필터의 추정값이 실제 참값과 얼마나 차이가 나는지를 보여주는 척도가 됩니다. P가 크면 추정 오차가 크고 P가 작으면 추정 오차도 작습니다. 이런 이유로 칼만 필터를 함수로 구현할 때는 추정값과 함께 오차 공분산도 출력으로 내보내는 경우가 종종 있습니다. 오차 공분산의 의미를 간단히 짚고 넘어가겠습니다. $x_{k}$와 추정값($\hat{x}_{k}$), 오차 공분산($P_{k}$) 사이에는 다음과 같은 관계가 성립합니다.

$$x_{k}\sim N(\hat{x}_{k},P_{k})$$

이 식은 변수 $x_{k}$가, 평균이 $\hat{x}_{k}$이고공분산이 $P_{k}$인정규분포(normaldistribution)를따른다는 뜻입니다.오차 공분산은 다음과 같이 정의됩니다.

$$P_{k}=E[(x_{k}-\hat{x}_{k})(x_{k}-\hat{x}_{k})^{T}]$$

E[]는 괄호 안에 있는 변수의 평균을 구하는 연산자입니다. $x_{k}$는 참값을 의미합니다. 그렇다면 우변의 $x_{k}-\hat{x}_{k}$는 참값과 추정값의 차이, 즉 추정오차에 해당됩니다. 즉 오차 공분산은 추정 오차의 제곱을 평균한 값을 의미합니다. 오차 공분산의 크기와 추정 오차가 비례 관계인 이유가 바로 여기에 있습니다.

반응형

'지식공학 > 필터링이론' 카테고리의 다른 글

Interactive Multiple Model  (0) 2021.10.05
Fourier Transform(푸리에 변환) 이해  (1) 2021.04.11

댓글