[칼만 필터는 어렵지 않아] 12 확장 칼만 필터

짜장범벅·2022년 11월 4일

Chapter 12 확장 칼만 필터

칼만 필터를 비선형 시스템까지 확장하는 것이 확장 칼만 필터(Extended Kalman Filter)이다. 단 EKF는 발산할 위험이 있기 때문에 유의해서 사용해야 한다.

12.1 선형화 칼만 필터

선형화 칼만 필터는 비선형 시스템을 하나의 기준점 주위에서 선형화*시켜 얻은 선형 모델 AAHH를 사용한다.

*Tayler Expension으로 하는듯...

선형화 칼만 필터는 기준점 근처에서만 실제 시스템과 비슷한 특성을 보인다. 따라서 선형화 모델의 한계를 무시하고 선형화 칼만 필터를 적용하면 제대로 된 성능을 내지 못할 수 있다.

12.2 EKF 알고리즘

비선형 시스템 모델

다음과 같이 비선형 시스템 모델이 있다고 하자.
xk+1=f(xk)+wkx_{k+1}=f(x_k)+w_k
zk=h(xk)+vkz_k=h(x_k)+v_k

EKF 알고리즘

  1. 초깃값 선정
    x^0\hat{x}_0, P0P_0
  2. 추정값과 오차 공분산 예측
    x^k=f(x^k1)\hat{x}_k^-=f(\hat{x}_{k-1})
    Pk=APk1AT+QP_k^-=AP_{k-1}A^T+Q
  3. 칼만 이득 계산
    Kk=PkHT(HPkHT+R)1K_k=P_k^-H^T(HP_k^-H^T+R)^{-1}
  4. 추정값 계산
    x^k=x^k+Kk(zkh(x^k))\hat{x}_k=\hat{x}_k^-+K_k(z_k-h(\hat{x}_k^-))
  5. 오차 공분산 계산
    Pk=PkKkHPkP_k=P_k^--K_kHP_k^-

EKF 알고리즘은 선형 알고리즘의 모델식 AxkAx_kHxkHx_k 자리에 비선형 모델의 관계식을 사용한다.

단 시스템 행렬 AAHH는 그대로 남아있는데, 이 행렬은 시스템 모델에서 받아와야 한다. 즉, 비선형 모델을 이용해 어떻게든 선형 모델의 행렬 AAHH를 유도해야 한다.

A=\frac{\partial f}{\partial x}|_{\hat{x}_k} $H=\frac{\partial h}{\partial x}|_{\hat{x}_k} $

위 방식대로 편미분을 이용해서 선형 행렬을 구하는 방법은 선형화의 대표적인 기법이다. 즉 자코비언으로 AAHH를 구하게 된다.

12.3 예제1: 레이다 추적

레이다에서 물체까지 직선 거리를 측정해서 위치와 고도를 추정하는 문제를 풀어보자. 단, 물체는 2차원 평면 상에서 일정한 고도와 속도를 유지하면서 움직인다고 가정하자.

시스템 모델

시스템의 상태 변수를 다음과 같이 정의하자.
x=(x1x2x3)x=\begin{pmatrix}x_1 \\ x_2 \\ x_3 \end{pmatrix}

여기서 x1x_1은 수평 거리, x2x_2는 이동 속도, x3x_3는 고도라고 하자.

물제의 이동 속도와 고도는 일정하므로 시스템 모델은 다음과 같이 표현된다.

(x˙1x˙2x˙3)=(010000000)(x1x2x3)+(0w1w2)\begin{pmatrix}\dot{x}_1 \\ \dot{x}_2 \\ \dot{x}_3 \end{pmatrix} = \begin{pmatrix}0 & 1 & 0 \\0 & 0 & 0 \\ 0 & 0 & 0\end{pmatrix}\begin{pmatrix}x_1 \\ x_2 \\ x_3\end{pmatrix}+\begin{pmatrix}0 \\ w_1 \\ w_2 \end{pmatrix}

위 시스템 모델은 수평 거리와 이동 속도의 관계를 나타낸 것이다. 문제의 가정에서 이동 속도와 고도는 일정하다고 했으므로, x˙2\dot{x}_2x˙3\dot{x}_3는 이론상으로 0이 된다. 따라서 시스템 잡음 w1w_1w2w_2만 존재한다고 하자.

여기서 레이다가 측정하는 값은 이동 물체까지의 직선 거리, 즉 아래와 같다.

r=x12+x32+v:=h(x)+vr=\sqrt{x_1^2+x_3^2}+v:=h(x)+v

여기서 vv는 레이다의 측정 잡음을 의미한다.

위 시스템에서 AA는 선형이지만, h(x)h(x)는 비선형이다. 따라서 칼만 필터를 바로 적용할 수 없다.

EKF 함수

위 예제에서 AA는 선형이기 때문에 f(x)=Af(x)=A로 두면 된다. 단, 시간 간격 dtdtAA에 집어넣으면,

A=I+(010000000)dtA=I+\begin{pmatrix}0 & 1 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0\end{pmatrix}dt가 된다.

측정 모델의 자코비언을 계산하면 아래와 같다.
H=(hx1hx2hx3)=(x1x12+x320x3x12+x32)H=\begin{pmatrix}\frac{\partial h}{\partial x_1} & \frac{\partial h}{\partial x_2} & \frac{\partial h}{\partial x_3}\end{pmatrix} = \begin{pmatrix}\frac{x_1}{\sqrt{x_1^2+x_3^2}} & 0 & \frac{x_3}{\sqrt{x_1^2+x_3^2}}\end{pmatrix}

테스트 프로그램

(생략)

profile
큰일날 사람

0개의 댓글