카테고리
산업계측제어기술사

칼만 필터

칼만필터는 어렵지 않아 정리

칼만 필터

Kalman Filter · 예측값 · 측정값 · 오차 공분산 · Kalman Gain · Q · R · A · H

1. 칼만 필터의 기본 구조

NeoStudio에서는 측정값 zk가 주어졌을 때 시스템 변수 x̂k를 추정하는 구조로 칼만 필터를 정리한다.

        측정값
          z_k
           │
           ▼
      ┌───────────────┐
      │   시스템      │
      │               │
      │ A, H, Q, R    │
      │ P_k           │
      └───────────────┘
           │
           ▼
          x̂_k

        x̂_k : 추정값
        z_k  : 입력값
               (센서 측정)
    

2. 칼만 필터의 주요 변수

NeoStudio에는 A, H, Q, R, P를 다음과 같이 기록하고 있다.

  • A, H : 시스템 변수를 설명하는 Matrix
  • Q : 시스템 Noise
  • R : 센서 Noise
  • P : 공분산
  • zk : 센서 측정값
  • x̂k : 추정값

3. 초기값 설정

칼만 필터의 첫 단계는 초기 추정값과 초기 오차 공분산을 설정하는 것이다.

x̂0, P0
0. 초기값 선정 → x̂0, P0

4. 추정값 예측

이전 시점의 추정값에 시스템 Matrix A를 곱하여 현재 시점의 값을 예측한다.

x̂k– = A x̂k-1

NeoStudio에서는 이전 측정값 또는 이전 추정값을 이용하여 k 시점의 상태를 예측하는 과정으로 기록한다.

5. 오차 공분산 예측

상태를 예측할 때 오차 공분산도 함께 예측한다.

Pk– = A Pk-1 AT + Q

NeoStudio에는 이전 P를 전달하고 여기에 Q를 더하는 흐름으로 메모되어 있다.

이전 P + Q → 예측 오차 공분산 Pk–

6. 예측 단계

칼만 필터의 첫 번째 반복 단계는 추정값과 오차 공분산을 함께 예측하는 과정이다.

        이전 추정값
        x̂_(k-1)
            │
            ▼
            A
            │
            ▼
          x̂_k^-

        이전 공분산
        P_(k-1)
            │
            ▼
       A P Aᵀ + Q
            │
            ▼
          P_k^-
    

7. 칼만 이득 계산

예측된 오차 공분산과 센서 Noise를 이용하여 Kalman Gain Kk를 계산한다.

Kk = Pk– HT ( H Pk– HT + R )-1

8. Q와 R에 따른 Kalman Gain

NeoStudio에서는 Q와 R의 크기에 따라 Kalman Gain이 변하는 방향을 기록한다.

Q ↑ → Kk ↑
R ↑ → Kk ↓

필기에는 K의 크기를 직관적으로 설명하기 위해 Q와 R의 비율을 이용한 메모도 남겨져 있다.

Q/R 표기는 Kalman Gain의 정확한 일반식으로 제시된 것이 아니라, Q와 R 변화에 따른 K의 증감 방향을 설명하기 위한 NeoStudio 메모로 보인다. 원본의 정확한 Kalman Gain 식은 위 식을 따른다.

9. 측정값을 이용한 추정값 계산

예측값에 실제 센서 측정값을 반영하여 최종 추정값을 계산한다.

x̂k = x̂k– + Kk ( zk – Hx̂k– )

괄호 안의 항은 실제 측정값과 예측된 측정값의 차이를 나타낸다.

zk – Hx̂k–

10. Kalman Gain의 역할

NeoStudio에서는 측정값과 예측값의 차이를 어느 정도 반영할 것인지를 K가 결정하는 구조로 정리한다.

측정값 – 예측값 → Kk → 추정값에 반영
K가 크면 측정값의 영향을 크게 반영하고, K가 작으면 기존 예측값의 영향을 크게 유지하는 방향으로 기록되어 있다.

11. LPF와의 비교

NeoStudio에서는 칼만 필터의 보정 구조를 LPF와 유사한 구조로 비교한다.

x̂k+1 = α x̂k + (1-α)xk

이전 값과 현재 값을 일정 비율로 섞는 LPF와 같이, 칼만 필터도 예측값과 측정값을 가중하여 사용하는 흐름으로 메모되어 있다.

LPF 식은 NeoStudio에서 칼만 필터의 보정 구조를 이해하기 위한 비교식으로 기록된 것이다.

12. 오차 공분산 계산

측정값을 반영한 뒤에는 오차 공분산을 다시 계산한다.

Pk = Pk– – Kk H Pk–

이 값은 다음 반복에서 다시 예측 오차 공분산 계산에 사용된다.

13. 칼만 필터 반복 순서

        0. 초기값 선정
           x̂_0, P_0
                │
                ▼
        1. 추정값 예측
           x̂_k^- = A x̂_(k-1)
                │
                ▼
           오차 공분산 예측
           P_k^- = A P_(k-1) Aᵀ + Q
                │
                ▼
        2. Kalman Gain 계산
           K_k =
           P_k^- Hᵀ
           (H P_k^- Hᵀ + R)^-1
                │
                ▼
        3. 추정값 계산
           x̂_k =
           x̂_k^- +
           K_k(z_k - Hx̂_k^-)
                │
                ▼
        4. 오차 공분산 계산
           P_k =
           P_k^- - K_k H P_k^-
                │
                └─────────────┐
                              │
                              ▼
                        다음 k 반복
    

14. 일반 이미지의 칼만 필터 알고리즘

페이지의 일반 이미지도 NeoStudio와 동일한 반복 구조를 보여준다.

          초기값 선정
          x̂_0, P_0
              │
              ▼
       추정값 / 공분산 예측
              │
              ▼
        Kalman Gain 계산
              │
     z_k ─────┤
              ▼
          추정값 계산
              │
              ├──────→ x̂_k
              │
              ▼
        오차 공분산 계산
              │
              └──────→ 반복
    

15. 일반 이미지의 예측식

일반 이미지에는 예측 단계를 다음과 같이 표시한다.

x̂k– = A x̂k-1
Pk– = A Pk-1 AT + Q

16. 일반 이미지의 Kalman Gain

Kk = Pk–HT ( HPk–HT + R )-1

17. 일반 이미지의 추정값 계산

x̂k = x̂k– + Kk ( zk – Hx̂k– )

18. 일반 이미지의 공분산 계산

Pk = Pk– – KkH Pk–

19. Q 증가의 의미

NeoStudio 마지막 페이지에서는 Q가 증가하는 경우를 다음과 같이 기록한다.

Q ↑ → Kk ↑ → 센서 측정값 반영 ↑

시스템 측의 불확실성을 크게 보면 Kalman Gain이 증가하여 센서 측정값을 더 많이 반영하는 방향으로 메모되어 있다.

20. R 증가의 의미

R이 증가할 경우에는 Kalman Gain이 감소하는 방향으로 기록되어 있다.

R ↑ → Kk ↓ → 기존 예측값 중심

NeoStudio에는 센서 Noise가 크면 기존 예측값 쪽으로 가중되는 흐름으로 기록되어 있다.

21. Q와 R의 관계

변화 Kalman Gain NeoStudio의 해석
Q 증가 K 증가 센서 측정값 반영 증가
R 증가 K 감소 기존 예측값 비중 증가

22. 필터링 흐름

            시스템 Model
             A, H
               │
               ▼
          상태 예측 x̂_k^-
               │
               │
        Q ─────┤
               ▼
        공분산 예측 P_k^-
               │
               │       R
               ├───────┤
               ▼
          Kalman Gain K_k
               │
               │
      z_k ─────┤
               ▼
           추정값 x̂_k
               │
               ▼
        공분산 P_k 갱신
               │
               └────→ 다음 반복
    

23. 이미지 · NeoStudio 핵심 정리

항목 원본 내용
측정값 zk
추정값 x̂k
A, H 시스템을 설명하는 Matrix
Q 시스템 Noise 관련 공분산
R 센서 Noise 관련 공분산
P 오차 공분산
예측 x̂k– = A x̂k-1
공분산 예측 Pk– = APk-1AT + Q
Kalman Gain Kk = Pk–HT(HPk–HT+R)-1
추정값 보정 x̂k = x̂k– + Kk(zk-Hx̂k–)
공분산 보정 Pk = Pk– – KkHPk–
Q 증가 K 증가 → 측정값 반영 증가
R 증가 K 감소 → 기존 예측값 비중 증가
이 HTML은 페이지 본문 설명을 사용하지 않고, 해당 페이지의 일반 이미지 1장과 NeoStudio PDF 1개(총 3페이지)만 직접 시각 판독하여 작성하였다. 일반 이미지에는 초기값 선정 → 추정값·오차 공분산 예측 → Kalman Gain 계산 → 추정값 계산 → 오차 공분산 계산의 반복 알고리즘이 표시되어 있다. NeoStudio PDF에는 A, H, Q, R, P의 의미, 각 단계의 계산식, Q·R에 따른 Kalman Gain의 변화, LPF와의 구조 비교가 기록되어 있다. NeoStudio 마지막 페이지에 적힌 시스템 방정식 주변의 Q·R 표기는 일반적인 상태공간식으로 임의 교정하지 않았다. 원본에서 Q는 시스템 Noise 공분산, R은 센서 Noise 공분산으로 명시된 부분을 중심으로 반영하였다. 이미지와 PDF에 없는 추가적인 Kalman Filter 이론은 포함하지 않았다.
Kalman Filter, 칼만 필터, Kalman Gain, State Estimate, Prediction, Measurement, Covariance, Error Covariance, Process Noise, Sensor Noise, A, H, Q, R, P, K, z_k, x_hat, Innovation, LPF

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.