Lecture 4. 칼만 필터 (1D)
잡음 속에서 진실을 찾는 가장 우아한 알고리즘.
목차
- 왜 필터가 필요한가?
- 은닉 상태와 측정의 개념
- 분산 · 표준편차 · 정규 분포
- 정확도(Accuracy) vs 정밀도(Precision)
- 두 가우시안 합치기
- 예측 - 갱신 사이클
- 예제 1: 정지된 거리 추정
- 예제 2: 등속도 추적
- 칼만 이득의 의미
1. 왜 필터가 필요한가?
실제 센서는 항상 잡음을 포함합니다.
- GPS는 ±5 m 정도의 위치 오차
- IMU는 정확하지만 시간이 지나면 드리프트(누적 오차)
- LiDAR도 환경에 따라 오차가 다름
각 센서는 단독으로는 완벽하지 않지만, 여러 센서를 똑똑하게 합치면 단독보다 더 정확한 추정을 얻을 수 있습니다. 그게 칼만 필터의 본질입니다.
1960년 R. E. Kalman이 제안했고, 곧 NASA의 Apollo 우주선 항법 컴퓨터에 탑재되어 인류를 달에 보냈습니다. 오늘날 거의 모든 자율 시스템(드론, 자동차, 선박, 스마트폰 GPS) 안에 칼만 필터가 돌고 있습니다.
2. 은닉 상태와 측정
"진짜 상태(true state)"는 우리가 직접 볼 수 없습니다. 보이는 건 잡음이 섞인 측정값(measurement)뿐. 진짜 상태를 은닉 상태(hidden state)라 부릅니다.
| 기호 | 의미 |
|---|---|
| $x$ | 진짜 (은닉) 상태 — 우리가 알고 싶은 값 |
| $\hat x$ | 추정값 (estimate) — 필터가 만든 답 |
| $z$ | 측정값 (measurement) — 잡음이 섞임 |
| $P$ | 추정 분산 — "내가 얼마나 확신하는가" |
3. 분산 · 표준편차 · 정규 분포
측정 오차는 보통 평균 0의 정규 분포(가우시안)로 모델링합니다.
$$ p(z) = \frac{1}{\sigma\sqrt{2\pi}} \exp\!\left(-\frac{(z-\mu)^2}{2\sigma^2}\right) $$- $\mu$ — 평균. 정확하면 진짜 값과 일치.
- $\sigma^2$ — 분산. 클수록 측정이 흩어진다.
- $\sigma$ — 표준편차. 직관적으로 "평균 오차"의 크기.
🎮 인터랙티브: 정규 분포 모양 바꿔보기
평균과 표준편차를 바꿔보며 가우시안의 모양을 익혀보세요. 1σ 안에 약 68%, 2σ 안에 95%, 3σ 안에 99.7%의 확률이 들어 있습니다.
4. 정확도 vs 정밀도
두 단어는 일상에서 비슷하게 쓰지만 추정 이론에서는 분명히 구분합니다. 다트 보드 비유가 제일 직관적입니다.
- 정확(Accurate) — 평균이 진짜 값(가운데)에 가깝다 (편향이 작다)
- 정밀(Precise) — 흩어짐이 작다 (분산이 작다)
🎮 인터랙티브: 정확도 vs 정밀도 다트보드
편향(bias)과 표준편차(σ)를 조절하면 다트 분포가 어떻게 변하는지 보세요. 칼만 필터가 최종적으로 추정하는 것은 "분포의 평균"이므로, 정밀도가 매우 중요합니다.
좋은 필터의 목표: 가능한 한 편향이 작고 분산도 작은 추정을 만드는 것.
5. 두 가우시안 합치기 — 칼만의 핵심
두 측정 $z_1, z_2$가 있고 각각 분산이 $\sigma_1^2, \sigma_2^2$이라면, 둘을 합쳐 만든 새 추정의 평균과 분산은:
$$ \hat\mu = \frac{\sigma_2^2 \mu_1 + \sigma_1^2 \mu_2}{\sigma_1^2 + \sigma_2^2}, \qquad \frac{1}{\hat\sigma^2} = \frac{1}{\sigma_1^2} + \frac{1}{\sigma_2^2} $$핵심 사실: 합쳐진 분산은 두 입력 분산보다 모두 작습니다. 즉 두 정보를 똑똑하게 합치면 둘 중 어느 것보다도 더 확실한 답이 나옵니다. 마법의 정체가 이것입니다.
🎮 인터랙티브: 두 가우시안 합치기
두 측정의 평균과 분산을 조절하세요. 합쳐진 결과(녹색)가 어떻게 더 좁고 정확해지는지 보세요.
6. 예측-갱신 사이클
칼만 필터는 매 시각 두 단계를 반복합니다.
① 예측 (Predict)
모델로 한 스텝 앞으로 진행. 불확실성은 증가합니다.
$$ \hat{x}_{k|k-1} = A \hat{x}_{k-1} + B u_k $$ $$ P_{k|k-1} = A P_{k-1} A^\top + Q $$② 갱신 (Update)
측정 $z_k$가 들어오면 두 가우시안(예측 + 측정)을 합칩니다. 불확실성은 감소합니다.
$$ K_k = P_{k|k-1} H^\top (H P_{k|k-1} H^\top + R)^{-1} $$ $$ \hat{x}_k = \hat{x}_{k|k-1} + K_k (z_k - H \hat{x}_{k|k-1}) $$ $$ P_k = (I - K_k H) P_{k|k-1} $$- $Q$ — 프로세스 잡음. 모델을 얼마나 못 믿느냐.
- $R$ — 측정 잡음. 센서를 얼마나 못 믿느냐.
- $K$ — 칼만 이득. 측정에 얼마나 가중치를 줄지의 비율.
7. 예제 1: 정지된 거리 추정
강의 노트의 예제: 진짜 거리는 50 m, 측정 오차 $\sigma = 5$ m. 10번 측정한 값:
49.03, 48.44, 55.21, 49.98, 50.6, 52.61, 45.87, 42.64, 48.26, 55.84
10개를 그냥 평균 내면 49.85 m로 정답에 가깝습니다. 칼만 필터는 측정이 들어올 때마다 추정치를 한 번씩 업데이트하면서 같은 결과로 수렴합니다.
🎮 인터랙티브: 정지된 1D 위치 추정
진짜 위치가 30으로 고정되어 있고, 잡음이 섞인 측정이 매 스텝 들어옵니다. 측정 잡음 $R$과 초기 분산을 조절해 보세요.
8. 예제 2: 등속도 추적
이번에는 물체가 속도 1 m/s로 직선 운동합니다. 상태는 위치 하나뿐이지만 모델에서 속도를 가정합니다.
- $A = 1$ (속도 1 m/s × $\Delta t$ = 1 m가 매 스텝 더해진다는 것은 입력으로)
- $B u = v\Delta t$, $u = v$
- $Q = 2$ (모델 잡음)
- $R = 4$ (측정 잡음)
🎮 인터랙티브: 1D 칼만 필터 (이동하는 목표)
목표가 사인파처럼 움직입니다. 측정 잡음 $R$과 모델 잡음 $Q$를 조절하며 추정이 어떻게 변하는지 관찰하세요.
🟢 진짜 🔴 측정 🔵 KF 추정
9. 칼만 이득 $K$의 직감
$K$는 0과 1 사이의 값으로, "측정을 얼마나 신뢰할지"를 결정합니다.
$$ K = \frac{P_\text{predict}}{P_\text{predict} + R} $$- $R$이 작다 → 측정이 정확 → $K \approx 1$ → 측정을 거의 그대로 받아들임
- $R$이 크다 → 측정이 잡음투성이 → $K \approx 0$ → 모델 예측만 신뢰
- $P$가 크다 → 추정이 불확실 → $K \uparrow$ → 측정으로 빠르게 보정
🎮 인터랙티브: $K$의 시간 변화
초기에 분산 $P$가 크므로 $K$가 거의 1입니다(측정을 그대로 받음). 시간이 지나며 $P$가 줄고 $K$도 작아져 안정됩니다.
관찰 포인트: $Q=0$이면 $P$가 점점 줄어 $K\to 0$이 됩니다(측정을 무시하기 시작). $Q$가 크면 모델을 의심해 $K$가 0에 도달하지 못하고 측정에 계속 의존합니다.
코드 예제 (Python)
import numpy as np
# 시스템 파라미터
A, H = 1.0, 1.0
Q, R = 0.1, 4.0 # process / measurement noise
x_hat, P = 0.0, 1.0 # initial estimate
# 진짜 값 + 잡음 측정
truth = 50.0
measurements = truth + np.random.randn(50)*np.sqrt(R)
estimates = []
for z in measurements:
# 1) 예측
x_hat = A * x_hat
P = A * P * A + Q
# 2) 갱신
K = P * H / (H * P * H + R)
x_hat = x_hat + K * (z - H * x_hat)
P = (1 - K * H) * P
estimates.append(x_hat)
print("최종 추정:", estimates[-1]) # ≈ 50
📖 더 깊이 공부하기
- Kalman Filter from the Ground Up (Alex Becker) — 강의 노트가 참조하는 무료 온라인 교과서. 단계별 직관 설명이 일품입니다.
- Probabilistic Robotics (Thrun, Burgard, Fox) — 로봇 측위·SLAM의 표준 교과서, 2장이 필터의 기초.
- Underactuated Robotics 12장 — State Estimation