칼만필터 (Kalman Filter)

2 minute read

칼만필터

개요

칼만필터는 어떠한 값의 다이나믹 거동을 선형적인 식으로 기술할 수 있고, 원하는 값을 측정할 수 있는 상황에서, 하지만 이 다이나믹 식과 측정 값에 불확실성이 있어 각각의 값들이 확률변수로 취급되어야 하는 상황에서 원하는 값을 가장 합리적으로 추정해야 할 때 사용할 수 있는 원하는 값을 추정하는 최적(optimal) 방법이다. 이때 확률변수는 평균과 분산을 가지는 확률밀도함수로 표현될 수 있어야 하고, 예측 값의 분산을 미리 알 수 있어야 한다.

다이나믹 모델의 불확실성

어떠한 값에 대해서, 그 전 시간(1분 전)에서 알고 있는 값을 토대로 그 다음 시간(1분 후)의 값을 추정하는 선형식을 만든다고 가정해보자. 이러한 경우 해당 선형식은 여러가지 이유로(실제 거동의 복잡성, 어떠한 상황이 일어날지 모르는 현실의 불확실성 등) 실제 물리적인 세계의 해당 값의 거동을 정확하게 담아내지 못한다. 따라서, 실제 물리적인 세계에서의 진짜 값(true value)과 이 다이나믹 식으로 추정한 값(prediction value)의 차이를 에러(error)라고 정의하고 이것을 예측의 불확실성(Prediction Uncertainty)이라는 개념으로 총칭할 수 있다.

측정값의 불확실성

위에서 언급한 값을 어떠한 측정장치를 통해서 측정가능 하다고 가정해보자. 이러한 경우에 유사한 이유로 해당 측정값이 위에서 언급한 진짜 값을 제대로 측정할 수 없다. 이러한 차이를 진짜 값(true value) 측정치(measurement value)사이의 측정에러로 정의하고 이것을 측정의 불확실성(Measurement Uncertainty)이라는 개념으로 총칭할 수 있다

칼만필터의 도입.

칼만필터는 위와 같은 크게 2가지 불확실성 원인(측정, 예측)이 있는 상황에서 2가지 값 중에 어떠한 값을 더 믿고 값을 보정해줘야 하는지를 알려주는 비율 값이다. 예를들어, 시간의 변화에 따라 특정한 시간에서 다이나믹 모델로 예측한 값 x1측정장치로 측정한 측정 값 x2이 있다고 생각해보자. 만약 다이나믹 모델이 꿈속에서 갑자기 나타난 우주의 신이 선물해준 완벽하게 정확하고 모든 요인이 고려된 완전무결한 함수라고 한다면 우리는 불완전한 인간이 만든 측정기기로 측정한, 즉, 측정의 불확실성이 존재하는 측정 값 x2는 신경쓰지 않고 x1을 100% 믿을 것이다. 이러한 상황이 0과 1사이를 가지는 칼만필터의 K 값이 0이 되는 상황이다. 반대로, 함수를 선물해줬던 신이 이번에는 함수는 알려주지 않고 진짜 값을 측정할 수 있는 완벽한 측정장치를 선몰해줘서 이 장비로 값을 측정한 경우를 생각해보자. 이때 사용하는 다이나믹 모델의 함수는 본인이 똑똑하다고 믿는 어리석은 인간들이 만든 것을 사용했다고 가정하자. 이때 우리는 x1은 거들떠보지도 않고 x2를 100% 믿을 것이다. 이것이 칼만필터의 K값이 1이 되는 상황이다.

신이 이런 것을 인간에게 줄리가 없는 슬픈 현실에서는 이 2가지 값(인간들이 만든 다이나믹 모델로 추정한 값 vs. 인간들이 만든 측정장치로 측정한 값)중에서 어떤 값을 더 믿어야 하는지 알기가 어렵다. 이를 위해 칼만필터는 수학적인 통계 개념을 이용하여 인간들이 만든 다이나믹 값의 현재까지의 정확도추정값의 분산으로 대체하고, 측정값의 정확도측정기기의 분산로 대체한다. 분산이 크면 해당 값이 퍼져있는 정도가 크기 때문에 정확도가 낮다고 보고, 분산이 작을 수록 정확도가 높다고 해석한다. 최종적으로, 칼만필터이득으로 정의되는 K는 예측값 분산/(예측값 분산+측정값 분산)으로 표현된다. 즉, 다이나믹 모델의 정확도가 높으면 예측값 분산이 0이 되어서 K가 0이 되어 모델의 예측값을 100% 믿고, 측정값의 정확도가 높으면 측정값 분산이 0이되어 K가 1이 되고 측정값을 100% 믿도록 식이 구성된다.

y=x1+K(x2-x1): 칼만필터 기반 최적 추정식
K=v1/(v1+v2): 칼만필터 
v1=v1(k-1)+K*v1(k): 예측값 분산 다이나믹 업데이트 식

K: 칼만필터이득 
x1: 측정값 
x2: 예측값
v1: 예측값 분산
v2: 측정값 분산

Updated: