칼만 필터 완벽 이해하기
> "복잡하게 설명할 수 있다면 제대로 이해하지 못한 것이다."
> — 알버트 아인슈타인
칼만 필터란 무엇인가
칼만 필터는 측정 노이즈나 예측할 수 없는 외부 요인 같은 불확실성 속에서 시스템의 상태를 추정하고 예측하는 알고리즘입니다. 물체 추적, 항법, 로봇공학, 제어 시스템 등 다양한 분야에서 필수적으로 사용되고 있죠.
예를 들어, 컴퓨터 마우스의 궤적을 추적할 때 칼만 필터를 적용하면 노이즈를 줄이고 손떨림을 보정해서 훨씬 부드러운 움직임을 만들 수 있습니다.
공학 분야뿐만 아니라 금융시장 분석에서도 활용됩니다. 주가의 추세를 노이즈가 많은 시장 데이터에서 감지하거나, 기상 예측에서도 칼만 필터가 중요한 역할을 합니다.
왜 이 글을 써야 했을까
칼만 필터 자체는 개념상 단순한데, 대부분의 교재와 자료들이 복잡한 수식으로만 설명하다 보니 마치 엄청 어려운 주제처럼 느껴질 수 있어요. 게다가 실제 예제나 그림 설명이 부족해서 더욱 그렇고요.
이 글은 다르게 접근합니다. 손으로 직접 계산해볼 수 있는 구체적인 숫자 예제와 간단한 설명으로 칼만 필터를 이해하기 쉽게 만들었습니다. 더불어 칼만 필터가 제대로 작동하지 않는 설계 사례도 다루고, 그걸 어떻게 고칠 수 있는지 함께 설명하겠습니다.
이 글을 다 읽고 나면 칼만 필터의 원리뿐만 아니라 직접 설계하고 구현할 수 있는 수준까지 도달하게 될 거예요.
학습 경로 선택하기
이 글은 3가지 깊이 수준으로 준비되어 있으니 본인의 수준과 목표에 맞춰 선택하면 됩니다.
한 페이지 개요 (이 페이지)
칼만 필터의 핵심 아이디어와 필수 수식을 수식 유도 과정 없이 간단히 소개합니다. 통계학과 선형대수의 기본 개념을 알고 있다면 읽을 수 있도록 구성했어요.
온라인 튜토리얼 (예제 중심)
단계별로 따라가면서 구체적인 숫자 예제를 통해 직관을 쌓을 수 있습니다. 필요한 배경 지식부터 칼만 필터 수식의 유도까지 모두 다루므로 사전 지식이 없어도 괜찮습니다.
책: 칼만 필터 정확히 이해하기
14개의 완전히 풀이된 숫자 예제와 성능 그래프, 표를 포함한 상세한 가이드입니다. Extended Kalman Filter나 Unscented Kalman Filter 같은 비선형 칼만 필터, 센서 융합, 실무 구현 팁까지 다룹니다. 파이썬과 MATLAB 코드도 함께 제공됩니다.
문제를 먼저 정의해보자
왜 칼만 필터 같은 알고리즘이 필요한지 이해하려면 먼저 문제를 정확히 알아야 합니다.
항공기를 추적하는 레이더를 생각해봅시다. 여기서 항공기가 시스템이고, 우리가 추정해야 할 상태는 항공기의 위치입니다.
레이더는 좁은 빔을 항공기에 향하게 해서 신호를 보내고, 반사되어 돌아오는 신호로 항공기의 위치를 측정합니다. 이 측정 결과를 바탕으로 시스템의 상태(항공기의 위치)를 추정하죠.
그런데 여기서 중요한 문제가 생깁니다. 레이더는 일정한 시간 간격으로 계속해서 항공기를 재확인해야 하는데, 항공기가 움직이기 때문에 다음 번에 레이더 빔을 어디로 향할지 미리 예측해야 합니다. 예측을 못하면 빔이 잘못된 방향을 가리켜서 추적을 놓치게 되죠.
이런 예측을 하려면 항공기가 어떻게 움직이는지에 대한 모델이 필요합니다. 즉, 시간에 따라 시스템이 어떻게 변하는지를 설명하는 동역학 모델(dynamic model)이 필요한 겁니다.
구체적인 예제로 살펴보기
설명을 단순하게 하기 위해 1차원 세계를 가정해봅시다. 항공기가 레이더를 향해 또는 멀어지는 방향으로만 움직인다고 생각하면 됩니다.
시스템 상태는 레이더로부터 항공기까지의 거리 $r$로 정의됩니다.
레이더는 펄스를 항공기에 보내고, 항공기에서 반사된 신호가 돌아오는 시간을 재면 됩니다. 전자기파는 빛의 속도로 움직이니까 이 시간으로부터 거리 $r$을 쉽게 계산할 수 있어요. 추가로 레이더는 도플러 효과를 이용해서 항공기의 속도 $v$도 측정할 수 있습니다. 마치 경찰의 속도 측정기가 자동차 속도를 재는 것처럼요.
시간 $t_0$에서 레이더가 항공기의 거리와 속도를 매우 정확하게 측정했다고 가정합시다.
측정된 거리: $r_{t_0} = 10,000$ m
측정된 속도: $v = 200$ m/s
이것이 우리가 알고 있는 초기 시스템 상태입니다.
다음 단계는 $\Delta t$만큼 시간이 지난 후인 $t_1 = t_0 + \Delta t$에서 시스템 상태를 예측하는 것입니다. 항공기가 일정한 속도로 움직인다고 가정하면...