KF101
그림과 손계산으로 이해하는 칼만 필터
1차원 스칼라 버전에 한정하여 그림 → 직관 → 손계산 → 코드 순으로 진행하는 입문 코스입니다. 각 장 중간에 숫자를 손으로 따라가는 소문제를 배치하였고, 채점과 진행 상황 저장은 모두 브라우저 안에서 완결됩니다.
그림 → 직관 → 손계산 → 코드
총 56문제
브라우저 내 채점
localStorage 저장
소요 시간
3~4시간
문제 수
총 56문제
형식
7장 + 소문제 + 시뮬레이터
비용
무료
이 강좌의 특징
각 장 중간에 숫자를 손으로 따라가는 소문제를 배치
예측 분산, 칼만 게인, 갱신 후 추정값을 그 자리에서 직접 계산해 확인합니다. 곳곳에서 손을 움직여야 하므로 대충 훑어 읽기 어려운 구성입니다.
그림 → 손계산 → 시뮬레이터 → 코드 순으로 진행
제5장의 시뮬레이터와 제6장의 최소 구현에서 같은 소재를 단계적으로 확인하므로 식과 동작이 쉽게 연결됩니다.
모든 채점과 저장이 브라우저 내에서 완결
소문제와 종합 연습은 서버 전송 없이 채점하며, 답안과 진척도는 이 브라우저의 localStorage에만 저장됩니다.
이 강좌에서 쓰는 식은 5개뿐
본 강좌에서는 대상이 움직이지 않는다(위치가 변하지 않는다)고 가정하는 정상 상태 모델을 사용합니다. 그래서 예측식이 x̂⁻ = x̂라는 최소 형태가 됩니다.
x̂⁻ = x̂정상 상태 모델의 예측. 직전 추정값을 그대로 사용합니다.
P⁻ = P + Q예측 분산의 갱신. 모델의 불확실성만큼 커집니다.
K = P⁻ / (P⁻ + R)칼만 게인. 예측과 관측 중 어느 쪽을 얼마나 믿을지를 정합니다.
x̂ = x̂⁻ + K(z − x̂⁻)추정값 갱신. 관측으로 예측을 수정합니다.
P = (1 − K)P⁻분산 갱신. 관측을 받아들인 만큼 추정의 불확실성이 작아집니다.
기호의 의미: Q는 모델의 불확실성(예: 정지 대상을 가정하는 경우 실제 움직임과 모델 사이의 차이의 분산), R은 관측의 불확실성(예: GPS의 흔들림이 ±5 m라면 R ≈ 25), P는 추정값의 불확실성입니다.
장 구성
1 도입 — 왜 추정이 필요한가
6문제. GPS의 흔들림을 예로 들어 참값・관측・추정값의 3가지 개념을 구분하는 감각을 기릅니다.
2 예측 단계 — 모델로 다음 상태를 예측하다
6문제. 정상 상태 모델의 예측
x̂⁻ = x̂와 불확실성 P⁻ = P + Q의 의미를 손으로 확인합니다.
3 업데이트 단계 — 관측으로 예측을 수정하다
7문제. 관측과 예측의 차이(이노베이션) y = z − x̂⁻과 갱신식 x̂ = x̂⁻ + K y를 숫자로 따라갑니다.
4 칼만 게인 — 예측과 관측 중 어느 쪽을 얼마나 믿을 것인가
7문제. K = P⁻ / (P⁻ + R)을 출발점으로, Q와 R의 비가 동작을 어떻게 결정하는지 이해합니다.
5 슬라이더와 손계산으로 체감하기
10문제. 시뮬레이터로 Q・R・P₀를 움직이면서 1~2스텝 분량은 손 계산으로도 따라갈 수 있도록 합니다.
6 구현 읽기 — 1차원 최소 구현을 따라간다
9문제. Python / C의 최소 구현과 식・변수명을 연결하여 1루프를 따라갈 수 있도록 합니다.
7 종합 연습과 이해도 체크
12문제. 종합 문제로 마무리하고, 약점이 된 장을 복습하기 위한 종합 연습입니다.
학습 요령
- 먼저 본문을 읽고, 바로 아래의 이해 체크를 즉시 풉니다
- 막히면 힌트를 보기 전에 먼저 식의 의미를 말로 다시 풀어 봅니다
- 제5장의 시뮬레이터(동작을 체감)와 제7장의 종합 연습(정착을 확인)은 목적이 다르므로, 반드시 둘 다 진행합니다
시작 전 전제
- 고등학교 수준의 평균과 분산 감각이면 충분합니다.
- 행렬은 쓰지 않습니다. 1차원 스칼라 버전에 한정합니다.
- 외부 라이브러리는 필요 없고, 전부 정적 HTML / CSS / JavaScript입니다.