선형칼만필터 (3)

칼만필터는 예측단계와 추정(업데이트) 두개의 시퀀스를 가지는 필터이다.

  1. 대충 이전의 데이터를 가지고 다음에 들어올 입력값을 예상해놓는다 (예측단계)
    1.5 예측값의 분산의 계산 (공분간 계산단계)
  2. 입력이 들어왔다. (관측)
  3. 입력데이터와 예측데이터를 비교해서 최적의 출력값을 추정 (업데이트 단계)

이번글에서는 측정에 관한 이야기를 해보겠다.

측정을 해보았어요

자 이제 실제로 측정을 하기 전에 예측을 다 해놨다.
예측의 공분산까지! 계산을 완료했다.
저번글의 수식이 잘 이해가 안되도 절망할 필요가없다.
사실 별로 중요하지 않다.
학술적으로는 중요하지만, 우리들의 목적은 칼만필터 그것이 목적이 아니라, 그것을 이용해서 새로운 가치를 창조하는 일이다.
그래서 사소한곳에 힘빼지 말자.

이제는 측정을해 봤다고 치자.
측정의 단계에도 우리는 모델을 이용할 필요가있다.

아니 측정에 모델이 필요해요?

네, 보통 우리가 원하는 데이터는 측정값을 그대로 쓰는게아니고
좌표변환이 일어난다던지 (가속도센서, 자이로센서), 값이 뻥튀기 되어서 나온다던지 (힘센서등등),
즉, 우리가 생각하는대로 측정이 일어난다고 생각하지말자

측정값을 z_k 라고하자
방금 설명한대로, 측정에 쓰는 관측행렬 (Observation matrix) 인 H 는 여기서는 다음과같이 두겠다.

H: \begin{bmatrix}
    1 & 0\\
    0 & 1
    \end{bmatrix}

이말인즉슨, H 는 1로 두겠다는것이다.
하지만, 고차원으로 갈수록 H 는 중요하기 때문에, 결코 무시할 수 없지만, 1로두고 생각하는게 가장 이해하기 쉽기때문에 여기서는 1로두고 진행한다.

일반적인 모델의 모습은 다음과 같다.

z_k = H_k x_k + v_k

그러니까 측정값 z_k을 가지고 실제의 x_k 를 추정하러 가는것이다.
여기서도 똑같이 계측 노이즈 v_k 를 모델안에 집어넣은것을 알수있다.
그러면 이것도 가우시안 분포를 따른다고 가정을 한다.

v_k \sim \mathcal{N}(0,R_k)

이렇게 하면, 저번에 설명했던 3가지의 (공)분산행렬을 다 소개했다.
축하한다 3/6이 끝났다.

인줄 알았찌? 알파베타필터 형식만 알고가

칼만필터느 알파베타 필터의 한 종류이다.
알파베타 필터의 생김새를 잠시 보자.

F_{t+1} = \alpha A_t + (1-\alpha)F_t

요거는 알파베타함수의 한 종류인, 지수이동평균 필터이다.
A 는 실측치 F 는 필터링후의 값이다.
알파값만 가지고 들어오는 데이터의 가중값을 계산, 그리고 최종필터치를 계산하는 방식이다.

그러면, 칼만필터에서 이 알파는 어떻게 계산을 할까?
바로 칼만 게인이다.
다음의 일반적인 칼만필터 추정치계산의 식을 살펴보자

\hat{x}_k(+) = \hat{x}_k(-) + K_k[z_k - H\hat{x}_k(-)]

우리들이 모르는 정의는 없을것이다. 눈치를 챈사람도 있겠지만, 그렇다 드디어 추정치를 계산할 수있게 된것이다.
H 를 1 로 치환하고 알파베타 필터의 형태로 바꾸어 보겠다.

\hat{x}_k(+) = K_kz_k + (1-K_k)\hat{x}_k(-)

형태가 소름돋게 똑같지 않는가?
더욱놀라운것은 K_k 가 k의 함수이자 시간에 의존해서 변한다는 것이다.
즉, 계속 변화한다.
칼만게인이 커지면, 계측치 z_k 를 더 신뢰하고
칼만게인이 작아지면, 예측치 \hat{x}_k(-) 를 더 신뢰한다는 말이다.

여기까지하면 4/6 끝났다.


© 2017. All rights reserved.

Powered by Hydejack v7.5.2