RoyalAzalea

Hello, this is my personal blog

Kalman Filter Study _ 8장. 시스템 모델

09 Mar 2017 » kalman_filter, matlab

이 장에서는 칼만 필터의 또 다른 특징인 시스템 모델에 대해 살펴본다. 시스템 모델은 우리가 다루는 문제를 수학식으로 표현해 놓은 것을 말하는데, 주어진 시스템 모델을 이해하는 것은 그리 어렵지 않다. 그리고 시스템 모델을 알면 칼만 필터를 설계하고 구현해 내는 것도 별로 힘든 일이 아니다. 진짜 어려운 작업은 시스템을 수학적으로 모델링하여 시스템 모델을 유도해 내는 일이다. 그런데 시스템 모델을 구하는 방법을 설명하는 것은 이 책의 수준을 한참 넘어선다. 따라서 앞으로 등장하는 예제에서는 시스템 모델은 이미 알고 있다고 가정한다. 대신 여기서는 칼만 필터의 시스템 모델이 어떤 형태를 가져야 하는지, 칼만 필터 알고리즘에 어떻게 이용되는지에 초점을 맞춰 설명하겠다.

다행히 칼만 필터가 워낙 다양한 분야에 이용되다 보니 어지간한 경우에는 참고할 만한 시스템 모델을 쉽게 찾을 수 있다. 만약 참고할 만한 시스템 모델이 전혀 없는 완전히 새로운 분야에 칼만 필터를 적용해야 한다면, 선형 시스템과 시스템 모델을 바닥부터 차근차근 공부하는 정공법을 선택해야 한다.

이 장의 내용을 이해하기 위해서는 선형 시스템(Linear system)의 상태 모델(State model)에 대한 사전 지식이 있어야 한다. 상태 모델의 개념을 이해하고, 관련 수식의 의미를 읽어낼 수는 있어야 한다.

8.1 시스템 모델

칼만 필터는 다음과 같은 선형 상태 모델을 대상으로 한다. 물론 경우에 따라 이 형태에서 약간 변형될 수 있다.

위의 식에서 시스템 모델에 잡음이 포함되어 있어야 한다는 점이 중요하다. 각 변수의 의미를 아래에 정리했다.

상태변수(state variable)는 거리, 속도, 무게 등 우리가 관심 있는 물리적인 변수라고 생각하면 된다. 그리고 칼만 필터에는 잡음이 중요한 역할을 하는데, 모든 잡음을 백색잡음(white noise)으로 가정한다. 백색잡음은 모든 주파수 성분을 다 갖고 있는 잡음이다.

$w_k$는 시스템에 유입되어 상태변수에 영향을 주는 잡음을 말하고, $v_k$는 센서에서 측정되는 잡음을 의미한다. 그리고 $A$와 $H$는 모든 성분이 상수인 행렬이다. 여기서 행렬 $A$는 시간에 따라 시스템이 어떻게 움직이는지를 나타낸다. 즉 시스템의 운동방정식을 담고 있다. 한편 행렬 $H$는 측정값과 상태 변수의 관계를 나타낸다. 즉 각 상태변수가 측정값에 어떻게 반영되어 있는지는 이 행렬이 규정한다.

식 $\ref{8.1}, \ref{8.2}$와 같이 시스템의 운동방정식을 상태변수 벡터에 대해 1차 차분(또는 미분) 방정식으로 표현한 모델을 ‘상태공간(state space) 모델’ 이라고 한다. 상태공간 모델은 뒤에서 다양한 예제를 접하다 보면 금방 감을 잡을 수 있다.

이제 5장의 칼만 필터 알고리즘에서 시스템 모델과 관련 있는 부분을 찾아보겠다. 두 군데가 있다. 첫 번째는 $\textrm{I}$단계에 있는 추정값 예측식이다.

이 식은 시스템 모델의 식 $\ref{8.1}$에서 유래한 것이다. 또 다른 한 곳은 $\textrm{III}$단계의 추정값 계산식에 포함되어 있는데, 아래 식에서 파란색으로 표시한 부분이다.

이 항은 시스템 모델의 식 $\ref{8.2}$와 관련 있다. 식 $\ref{8.3}$과 $\ref{8.4}$를 시스템 모델과 비교해 보면 잡음항($w_k, v_k$)이 빠져 있다는 점만 다를 뿐, 시스템 모델과 연관되어 있다는 사실을 쉽게 알 수 있다. 이 밖에도 행렬 $H$는 몇 군데에서 더 사용되는데, 따로 설명이 필요할 정도로 중요한 의미는 없다.

8.3 잡음의 공분산

마지막으로 잡음에 대해 알아보자. 보통 잡음은 다음에 어떤 값이 나올지 예측할 수 없고 순전히 통계적인 추정만 가능한 값을 의미한다. 그래서 잡음을 표현할 때는 통계학을 이용한다. 그런데 칼만 필터는 잡음이 표준정규분포를 따른다고 가정하기 때문에, 잡음의 분산(variance)만 알아도 된다. 표준정규분포에서는 평균이 항상 $0$이기 때문이다. 이러한 이론적 기반에서 칼만 필터는 상태 모델의 잡음을 다음과 같은 공분산 행렬로 표현한다.

여기서 대각 행렬(diagonal matrix)은 $(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$ 이라고 가정한다. 그러면 공분산 행렬은 다음과 같이 쓸 수 있다. 측정 잡음 $v_k$의 공분산 행렬 $R$도 같은 방식으로 구성한다.

행렬 $Q$ 와 $R$은 잡음의 특성을 정확히 해석해서 정하는 게 원칙이지만, 여러 오차가 복합적으로 작용하기 때문에 해석적으로 결정하는 데는 한계가 있다. 해당 시스템에 대한 경험을 바탕으로 어느 정도의 시행착오를 겪을 수 밖에 없다는 말이다. 즉 잡음에 대한 정보를 최대한 활용하되, 이 두 행렬을 칼만 필터의 설계 인자로 보고 시행착오 과정을 통해 보정하면서 적절한 값을 찾아야 한다.

그렇다고 맨땅에 헤딩할 수는 없고 뭔가 적잘한 기준이 없을까? 5장의 칼만 필터 알고리즘에서 행렬 $Q$와 $R$이 어디에 사용되는지 보자. 먼저 행렬 $R$을 보면 칼만 이득 계산식에 등장한다.

행렬식으로는 감을 잡기 어렵다. 위의 식에서 모든 변수가 스칼라라고 가정하면 역행렬은 나누기와 같게 된다. 따라서 위의 식은 다음과 같이 쓸 수 있다.

이 식에서 $R$이 커지면 칼만 이득은 작아진다. 그런데 칼만 이득이 작아지면 추정값에는 어떤 영향을 줄까? 식 $\ref{6.3}$을 보자.

칼만 이득이 작아지면 추정값 계산에 측정값이 반영되는 비율이 작아진다. 반면 예측값의 반영비율은 높아진다. 즉 외부 측정값의 영향을 덜 받게 되어 추정값의 변화가 줄어든다. 따라서 측정값의 영향을 덜 받고 변화가 완만한 추정값을 얻고 싶다면 행렬 $R$을 키우면 된다.

이제 행렬 $Q$가 등장하는 수식을 찾아보자. 오차 공분산의 예측값($P_{k+1}^{-})$ 계산에 사용된다.

이 식에서 행렬 $Q$가 커지면 오차 공분산 예측값도 커진다. 그럼 오차 공분산 예측값이 커지면 어떻게 될까? 역시 모든 변수를 스칼라로 가정하고 식 $\ref{8.5}$를 보겠다. 오차 공분산 예측값이 분자와 분모에 모두 등장하지만 분자가 약간 더 빠른 비율로 커진다. 분모에는 $R$이 더해져 있기 때문이다.

요약하면 행렬 $Q$가 커지면 칼만 이득도 커진다. 그런데 칼만 이득이 커지면 식 $\ref{6.3}$에서 측정값이 더 많이 반영된다. 따라서 측정값의 영향을 덜 받고 변화가 완만한 추정값을 얻고 싶다면 행렬 $Q$를 줄여야 한다. 행렬 $R$과는 정반대이다.

아래 행렬 $Q$와 $R$의 변화에 따른 측정값 반영을 요약했다. 그리고 이 측정값 반영에 따른 변화들을 알 수 있다.