1. 칼만 필터 (Kalman Filter)
ㅇ 불확실한 상황에서, 동적시스템의 상태를 추정하는, 효과적인 알고리즘 (이론, 매커니즘)
- 잡음이 많은 센서 측정 데이터로부터, 유용한 정보를 추출하여,
- 최적의 추정값을 제공하는 필터 (동적 추정기)
ㅇ 작동 원리 : 현재 위치를 추정하기 위해,
- 예측 단계 (Prediction Step) : 현재 상태와 시스템 모델을 이용해 다음 상태를 예측
- 갱신 단계 (Update Step) : 실제 측정값과 비교하여 예측값을 보정
* 이 과정을 순차적으로 반복 : (즉, 반복적 동적 추정)
ㅇ 주요 용도
- 시스템 모델이 존재하고, 순차적인 상태 예측 및 측정이 가능한 경우
- 주로, 로봇 위치 추정, 항법 시스템, 센서 융합 등
ㅇ 역사
- 개발자 : 루돌프 칼만 (Rudolf E. Kalman, 1930~2016)
- 대표 논문 : "A New Approach to Linear Filtering and Prediction Problems" (1960, ACME 저널)
※ (용어 상의 의미)
- 전통적으로 `필터`는 신호에서 잡음을 걸러내는 의미로 사용되지만,
- `칼만 필터`는 불확실성을 줄이기 위한 동적 확률적 필터 (dynamic probabilistic filter) 임
. 시스템 모델과 측정값을 통합하여, 시간에 따라 변화하는 상태를 확률적으로 추정함
- 따라서, 단순히 "잡음을 걸러낸다"는 의미를 넘어, 모델 기반의 최적 상태 추정기로 이해해야 함
- 즉, 여기서의 `필터`는 불확실성을 걸러내며, 동적 추적과 상태 추정을 포함하는 개념을 의미함
2. 칼만 필터의 특징
ㅇ `루프(Feedback) 구조`를 갖는, 상태 추정기
ㅇ `최적화 알고리즘`으로 설계되어, 추정 오차 최소화
ㅇ 상태 방정식을 이용한, `동적 추정기`
- 시스템의 동적 모델과 측정 데이터를 결합하여 연속적으로 상태를 추정
3. 칼만 필터의 동작 단계 및 목표
ㅇ 동작 단계
- 예측 단계 : 이전 상태를 바탕으로 현재 상태를 예측하는 단계
- 갱신 단계 : 관측값을 사용해 상태를 보정하는 단계
. 실제 측정된 값과 예측 값을 비교하여 예측 값을 수정
* 이 두 단계를 반복하면서 점차 정확한 상태 추정값을 얻을 수 있게됨
ㅇ 동작 목표
- 상태 추정 : 시스템의 현재 상태를 가능한 한 정확하게 추정
- 불확실성 최소화 : 오차 공분산을 줄이는 방향으로 필터가 작동
- 최적화 : 최소 분산 추정량을 제공
. 가우시안 잡음이 존재할 때, 칼만 필터는 최적의 선형 추정기를 보장
4. 칼만 필터의 구성 요소
ㅇ 시스템 모델 : 시스템의 동작을 수학적으로 모델링한 것
ㅇ 측정 모델 : 센서의 측정 오차를 모델링한 것
ㅇ 상태 벡터 : 시스템의 상태(위치,속도 등)를 나타내는 벡터
ㅇ 측정 벡터 : 센서로부터 얻은 측정값을 나타내는 벡터
ㅇ 칼만 이득 : 관측값과 예측값의 상대적인 신뢰도를 나타내는 가중치
- 측정값과 예측값의 신뢰도를 반영하여 두 값을 조합하는 비율
5. 칼만 필터의 추정 방식
ㅇ 가용 정보로부터 미지량을 추정하게 됨
- 가용 정보 : 불확실하고 근사화된 수학적 모델식, 노이즈 모델식, 측정 데이터
. 수학적 모델식
. 노이즈 모델식
. 측정 데이터 : 측정값에 내재된 오류 정도를 확률적으로 묘사
- 미지량 : 시스템의 상태변수, 파라미터
. 상태변수 : 시시각각 변하는 변수 형태
. 파라미터 : 대체적으로 일정한 상수 형태(변수도 가능)
ㅇ 3가지 추정 방식 모두를 지원하는 수학적 도구를 제공
- Estimation : 과거,현재 데이터를 기반으로 미래 특정 시각의 상태를 추정
- Filtering : 현재 상태의 실시간 추정 (Online)
- Smoothing : 축적된 과거,미래 측정 데이터의 후처리를 통한 추정 (Offline)
6. 칼만 필터의 알고리즘
ㅇ 초기값 선정
ㅇ 추정값과 오차 공분산 예측 (예측 단계)
ㅇ 칼만 이득 계산
ㅇ 추정값 계산
ㅇ 오차 공분산 계산
ㅇ (...편집중...)
7. [참고사항]
ㅇ 시스템 모델
- 상태 벡터 : 시스템의 상태 변수(위치,속도,온도 등)들의 벡터 ({#x_k#})
- 상태 천이 행렬 : 이전 상태로부터 현재 상태를 예측하는 선형 변환 행렬 ({#T_k#})
. {# x_k = T_kx_{k-1} + w_k #} ({#w_k#} : 과정 잡음/불확실성)
- 관측 벡터 : 실제 측정값을 포함하는 벡터 ({#z_k#})
- 관측 행렬 : 상태 벡터를 관측값으로 변환하는 선형 변환 행렬 ({#H_k#})
. {# z_k = H_kx_{k-1} + v_k #} ({#v_k#} : 측정 잡음)
ㅇ 오차
- 예측 오차 : 현재 상태를 예측할 때 발생하는 오차
- 필터링 오차 : 예측값과 측정값을 융합하여 얻은 최종 추정값과 실제 상태 사이의 오차
- 잔차 : 관측값과 예측값의 차이로, 보정에 사용됨
- 모델 불일치 오차 : 시스템 모델이 실제 시스템과 완전히 일치하지 않아 발생하는 오차
- 오차 공분산 행렬 : 상태 추정 오차의 불확실성을 나타내는 행렬
. 예측 및 갱신 과정에서 갱신됨