본문 바로가기
유도항법제어/칼만필터

칼만필터 알고리즘

by 세인트워터멜론 2021. 3. 4.

칼만필터는 수학 알고리즘이다. 따라서 수학식 없이는 칼만필터를 사용할 수도 이해할 수도 없다. 그렇다고 칼만필터 유도과정을 자세히 이해할 필요까지는 없다. 결과만 잘 이해하고 있어도 칼만필터를 사용할 수 있다.

 

 

우선 칼만필터 알고리즘을 수학식으로 써 보겠다. 칼만필터는 다음과 같이 주어진 선형 동적 시스템 모델과 측정 모델,

 

\[ \begin{align} & \mathbf{x}(k+1)= F(k) \mathbf{x}(k)+G(k) \mathbf{u}(k)+ \mathbf{w}(k) \\ \\ & \mathbf{z}(k)=H(k) \mathbf{x}(k)+ \mathbf{v}(k) \end{align} \]

 

을 이용하여, 시스템의 상태변수 \(\mathbf{x}(k)\)를 다음과 같이 시간 업데이트와 측정 업데이트 등 두 단계로 추정하는 알고리즘이다.

 

 

칼만필터 알고리즘

 

     시간 업데이트:

 

\[ \begin{align} & \hat{\mathbf{x}}(k+1|k)= F(k) \hat{\mathbf{x}}(k|k)+G(k) \mathbf{u} (k) \\ \\ & P(k+1|k)=F(k)P(k│k) F^T (k)+Q(k) \end{align} \]

 

     측정 업데이트:

 

\[ \begin{align} & \hat{\mathbf{x}}(k|k)= \hat{\mathbf{x}}(k|k-1)+ K(k) \left( \mathbf{z}(k) - H(k) \hat{\mathbf{x}}(k|k-1) \right) \\ \\ & K(k)=P(k|k-1) H^T (k) S^{-1} (k) \\ \\ & S(k)=H(k)P(k|k-1) H^T (k)+R(k) \\ \\ & P(k|k)=P(k|k-1)- P(k|k-1) H^T (k) S^{-1} (k)H(k)P(k|k-1) \end{align} \]

 

칼만필터 알고리즘은 위에 있는 6줄의 수학식이 전부다. 저 6줄의 수학식을 파이썬, 매트랩, C, C++, C# 등 컴퓨터 언어로 코딩하면 된다. 정말 저 6줄이 다인가? 그렇다. 그래서 칼만필터 알고리즘은 간단하다고 했다. 물론 이해하고 응용하는 것은 별 문제다. 칼만필터를 비선형 시스템에 적용하거나 센서 융합, 고장 진단, 적 항공기 추적, 로컬라이제이션 문제에 응용하기 위해서는 칼만필터의 수식을 잘 이해해야 한다.

 

 

칼만필터 알고리즘의 수식을 이해하기에 앞서 우선 수식에 쓰인 \(\mathbf{x}, \mathbf{z}, \mathbf{w}, \mathbf{v}, F, G, H, P, Q, R, k\) 등등 기호가 의미하는 바가 뭔지 알아야 한다. 또한 칼만필터 알고리즘을 유도할 때 사용된 가정(assumption)도 정확히 이해해야 한다. 칼만필터의 유도과정은 몰라도 된다. 하지만 칼만필터를 이해하는 데에도 관련 수학지식이 많이 필요하다. 필요한 수학 지식을 칼만필터 알고리즘을 이해하기 위한 수준에서 모두 다뤄보려고 한다. 이제 차근차근 알아보자.

 

 

 

'유도항법제어 > 칼만필터' 카테고리의 다른 글

칼만필터 알고리즘  (0) 2021.03.04
칼만필터란 무엇인가  (0) 2021.03.03

댓글0