본문 바로가기
Control system engineering

[제어시스템공학-5] Kalman Filter(칼만필터) 개념정리(2)

by 노마드공학자 2021. 1. 27.

[제어시스템공학-1] Average Filter(평균필터) https://limitsinx.tistory.com/69

[제어시스템공학-2] Moving Average Filter(이동평균필터) https://limitsinx.tistory.com/70

[제어시스템공학-3] Low Pass Filter(저주파  통과필터) https://limitsinx.tistory.com/71

[제어시스템공학-4] Kalman Filter(칼만필터) 개념정리(1)

 

※이 전글에서 정리한 코드/문법은 재설명하지 않으므로, 참고부탁드립니다

※해당 글은 PC에서 보기에 최적화 되어있습니다.


 

칼만필터는 어렵지않아 (2019,김성필)

 

이전 글에서는, 칼만필터에 대한 전반적인 이해와 각 변수들이 의미하는 바에 대해 정리를 해보았습니다.

위 사진속 칼만필터 Diagram에서 A,H,Q,R 각 변수들이 의미하는것 까지 최종정리를 해보았는데요

 

P와 K에대해서만 정리를 하면 개념정리는 모두 끝나게 됩니다!


"What is P and K ?"

 

 

P는 오차공분산(Error Covariance)입니다.

이름만 듣고보면 아주 어려워보이지만, 실상을 한줄로 정리하면 이것입니다.

 

 

"추정값과 실제값의 차이(오차)를 Gaussian distribution을 그릴때의 분산값"

 

 

이게 끝입니다.

 

출처 : https://www.researchgate.net/figure/Gaussian-probability-density-function_fig7_283781450

 

이전 글에서, Q와 R은 Gaussian distribution을 갖는 Noise(잡음)으로 가정한다! 라고 말씀드렸습니다.

 

즉, 시스템과 센서에서 이런 형태의 잡음을 가진다고 했으니, 당연히 결과값으로 나오는 오차값 역시 가우스함수의 형태로 나오게 될것입니다.

 

이것을 구하는 과정이 "오차공분산 계산" 입니다.

 

 ⑤ P_k = P_k^ - K*H*P_k^

 

: K는 ②에서 계산으로 구해지는 값이며(뒤에 K설명할때 설명), H는 이미 정해진값입니다.

 

조금 러프하게 정리를 해보자면

 

P_예상값 = P_추정값 - 상수*상수*P_추정값 = (1-상수)*P_추정값 이됩니다. 사칙연산만 할수있으면 되는문제죠!


"What is K?"

 

 

K는 칼만필터에서 핵심이라고할 수 있는 "칼만이득(Kalman Gain")입니다.

 

위에서 P를 구하는 과정을 알아보았죠??

 

그러면 이제까지 정리한것을 종합해보면 우리는 A,H,Q,R,P 변수를 모두 알고있습니다!

 

K수식을 보시죠

 

② K = P*H*(H*P*H+R)^(-1) 

 

K를 계산하는데 모든 변수를 알고있습니다. 즉, 사칙연산만 하시면됩니다!

 

즉, 칼만필터에 필요한 모든! 변수들은 간단한 사칙연산만 하면 얻어집니다. 

오히려 어려운 부분은 state-space eqaution을 만드는것이라고 말씀드렸죠

 

K를 얻어내는건 여기까지고, 이까지만 알아도 칼만필터를 구현하고 이해하는데는 전혀 문제가 없습니다.

 

아래에는 좀더 [심화]로 Kalman gain의 물리적인 의미에 대해 정리해보겠습니다.


"Kalman Gain의 물리적 의미"

 

 

칼만필터는 어렵지않아 (2019,김성필)

 

K = P*H*(H*P*H+R)^(-1) 

 

칼만게인을 얻는 수식인데요, 뒷부분을 상수라 가정하고 다시한번 정리를 해보겠습니다.

 

K = PH / (HPH+R)

 

이식을 한번 잘 뜯어보겠습니다.

 

R은 Sensor의 Noise였죠?? R이 증가하게되면 K는 감소하게 되는구조입니다.

 

이제 추정값을 계산하는 ④를 잠깐 정리해보겠습니다.

 

x_k(최종 추정값) = x^_k+K*(z_k-H*x^k)

                      = (1-K)*x_k^ + K*z_k (∵ H는 상수취급)

 

느낌오시나요?? 어디서 많이 보던 수식이죠?? 바로 Low Pass Filter입니다.

 

https://limitsinx.tistory.com/71

z_k는 센서로 측정한 값이였죠!

즉, K값이 작아지면 센서의 값을 덜보고, 이전에 추정했던 값에 Weighting을 많이 주겠다는 뜻이죠

 

이전에 정리한게 뭐였죠??

R(센서노이즈)이 커지면 K가 줄어든다는 것이였죠

 

 

한줄로 요약하자면,

 

 

R(센서노이즈) 증가 -> Kalman gain 감소 -> 최종 추정값에서 센서에 대한 비중 축소

 

 

당연한 이야기입니다! 센서의 노이즈가 크니까 센서값을 덜본다는것은요!

 

이것을, 칼만필터 내부 알고리즘을 해석하면 이렇게 정리가 된다는 것입니다 :)

 

 

R말고 Q라는 Noise가 하나더있었죠??

 

Q는 System Noise로, state-space equation을 세울때 세상의 모든 이치를 완벽하게 담을 수 없으니 오차로 남겨두는 잡음이였습니다.

 

이것은, 칼만게인에 어떻게 영향을 미칠까요??

 

① P_k = A*P_k-1*A + Q항을 한번봐주시죠

 

Q(시스템노이즈)가 증가하면 P_k값도 증가하게 되는 수식입니다.

 

K = PH / (HPH+R)

 

P_k가 증가하게되면?? Kalman gain이 커지게됩니다.

 

즉, 이것도 한줄로 요약해보자면,

 

 

Q(시스템노이즈) 증가 -> Kalman gain 증가 -> 최종 추정값에서 센서에 대한 비중 증대(추정값에 대한 비중 감소)

 

 

가 되는것입니다.

 

시스템 노이즈가 증가하니, 시스템값 대신 센서를 더 많이 참고하여 최종값을 얻어내겠다! 는 아주 상식적인 말이지만,

칼만필터내부에서 수식으로 적어놓으면 저렇게 복잡한듯 보이는것입니다.

 

이것이 제가 칼만필터가 쉽다고 매번말씀드리는 이유구요


Summary

 

 

이제까지 2개의 글로 칼만필터를 정리해보았습니다.

1부에서는 칼만필터의 대략적인 흐름, A/H/Q/R이라는 각변수에 대해 정리를 하였고

 

2부에서는 Kalman gain과 P(Error Covariance)에 대해 정리를 해보았습니다.

이 다음글부터는 코드구현으로 진행해보겠습니다.

 

 

※ 참고

"칼만필터는 어렵지 않아" (2019,김성필)

댓글