본문 바로가기
필터

칼만 필터 기초 - 시스템 모델

by mokhwasomssi 2021. 8. 16.
 

칼만 필터는 어렵지 않아

이 책은 칼만 필터 자체가 어려운 것이 아니라 설명하는 방식이 불친절해 배우기 어려웠다는 문제의식에서 출발합니다. 그래서 수학적인 유도와 증명을 앞세우는 대신 칼만 필터의 핵심 알고리

book.naver.com


시스템 모델은 우리가 다루는 문제를 수학식으로 표현해 놓은 것이다. 

 

칼만 필터의 시스템 모델이 어떤 형태를 가져야 하는지,

시스템 모델이 칼만 필터 알고리즘에 어떻게 이용되는지를 주로 설명하겠다. 

 

이 장의 내용을 이해하기 위해서는 선형 시스템의 상태 모델에 대한 어느정도의 사전 지식이 있어야 한다. 


1. 시스템 모델

1.1 칼만 필터는 다음과 같은 선형 상태 모델을 대상으로 한다. 

$$ x_{k+1} = Ax_k + w_k \quad (1)$$

$$ z_k = Hx_k + v_k \quad(2)$$

\(x_k\) : 상태 변수, (n x 1) 열벡터

상태 변수는 거리, 속도, 무게 등 우리가 관심 있는 물리적인 변수로 이해하면 쉽다. 

\(A\) : 시스템 행렬, (n x n) 행렬

시간에 따라 시스템이 어떻게 움직이는지를 나타낸다. 시스템의 운동 방정식

\(w_k\) : 시스템 잡음, (n x 1) 열벡터

시스템에 유입되어 상태 변수에 영향을 주는 잡음.

\(z_k\) : 측정값, (m x 1) 열벡터

\(H\) : 출력 행렬, (m x n) 행렬

측정값과 상태 변수의 관계

\(v_k\) : 측정 잡음 , (m x 1) 열벡터

센서에서 유입되는 측정 잡음.

 

칼만 필터에서는 잡음이 중요한 역할을 하는데, 모든 잡음을 백색 잡음으로 가정한다. 

(백색 잡음 : 모든 주파수 성분을 다 갖고 있는 잡음)

 

식(1)과 (2)와 같이 시스템의 운동 방정식(A)을 상태 변수 벡터(\(x_k\))에 대해

1차 차분(또는 미분) 방정식으로 표현한 모델을 상태 공간(state space) 모델 이라고 한다. 

 

1.2 칼만 필터 알고리즘에서 시스템 모델과 관련 있는 부분

1 단계의 추정값 예측식 \( \quad \widehat{x}_{k+1}^- = A\widehat{x}_k\)

시스템 모델의 식(1)에서 유래.

3 단계의 추정값 계산식 \(\quad \widehat{x}_k = \widehat{x}_k^- + K_k(z_k-H\widehat{x}_k^-)\)

\(H\widehat{x}_k^-\) 부분이 시스템 모델의 식(2)와 관련.

 

잡음 항(\(w_k, v_k\))이 빠져 있다는 점만 다를 뿐 시스템 모델과 연관되어 있다. 


2. 잡음의 공분산

잡음 신호는 다음에 어떤 값이 나올지 예측할 수 없기 때문에 순전히 통계적인 추정만 가능하다. 

칼만 필터는 잡음의 평균이 0인 정규분포를 따른다고 가정하기 때문에, 잡음의 분산만 알면 된다. 

 

2.1 칼만 필터는 상태 모델의 잡음을 다음과 같은 공분산 행렬로 표현한다. 

$$ Q : w_k의\ 공분산\ 행렬,\ (n \times n) 대각\ 행렬 $$

$$ R : v_k의\ 공분산\ 행렬,\ (m \times m) 대각\ 행렬 $$

대각 행렬은 \((1, 1), (2, 2), \cdots ,(n, n)\)등 대각선 위치 외의 성분은 모두 0인 행렬.

공분산 행렬은 변수의 분산으로 구성된 행렬. 

 

예를 들어 \(n\)개의 잡음 \(w_1, w_2, \cdots, w_n\)이 있고, 각 잡음의 분산은 \(\sigma_1^2, \sigma_2^2, \cdots, \sigma_n^2\)이라고 하면

공분산 행렬 Q는 

$$ Q = \begin{bmatrix} \sigma_1^2 & 0 & \cdots & 0 \\ 0 & \sigma_2^2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \vdots & \sigma_n^2 \end{bmatrix} $$ 

측정 잡음 \(v_k\)의 공분산 행렬 \(R\)도 같은 방식으로 구성된다. 

 

행렬 \(Q\)와 \(R\)은 잡음의 특성을 정확히 반영해서 구성하는 게 원칙이지만, 

여러 오차가 복합적으로 작용하기 때문에 해석적으로 결정하는 데는 한계가 있다. 

따라서 해당 시스템에 대한 경험을 바탕으로 어느 정도의 시행착오를 겪을 수 밖에 없다. 

 

잡음에 대한 지식을 최대한 활용하되,

이 두 행렬을 칼만 필터의 설계 인자로 보고 시행착오 과정을 통해 보정하면서 적절한 값을 찾아야 한다. 

 

2.2 적절한 기준은 없을까?

먼저 칼만 필터의 알고리즘에서 행렬\(\ Q\)와 \(R\)이 어디에서 사용되는지 살펴보자.

 

2.2.1 행렬 \(R\)

행렬 \(R\)은 칼만 이득(\(K_k\)) 계산식에 등장한다. 

$$ K_k = P_k^-H^T(HP_k^-H^T + R)^{-1} $$

위의 식에서 모든 변수가 스칼라라고 가정하면, 역행렬의 계산식은 나누기와 같게 된다.

$$ K_k =  \frac{P_k^-H^T}{HP_k^-H^T + R}$$

이 식에서 R이 커지면 칼만 이득은 작아진다. 행렬 \(R\) ↑, 칼만이득 \(K_k\) ↓

 

2.2.2 행렬 \(Q\)

행렬 \(Q\)는 오차 공분산의 예측값(\(P_{k+1}^-\)) 계산식에 등장한다. 

$$ P_{k+1}^- = AP_kA^T + Q $$

이 식에서 행렬 \(Q\)가 커지면 오차 공분산 예측값도 커진다. 이 값이 커지면 어떻게 될까?

위의 칼만 이득 계산식을 다시 보자. 

$$ K_k =  \frac{P_k^-H^T}{HP_k^-H^T + R}$$

오차 공분산 예측값이 커지면 칼만 이득도 커진다. 따라서 행렬 \(Q\)가 커지면 칼만 이득이 커진다. 

행렬 \(Q\) ↑, 오차 공분산 예측값 \(P_k^-\) ↑, 칼만 이득\(K_k\) ↑

 

2.2.3 칼만 이득의 크기는 추정값에 어떤 영향을 줄까?

$$ \widehat{x}_k = (1-K_k)\widehat{x}_k^-+K_kz_k \quad(H = 1로\ 가정) $$

칼만 이득이 작아지면 측정값이 덜 반영되고, 칼만 이득이 커지면 측정값이 더 많이 반영된다.