1. 서론: 1969년 7월 20일 ‘고요의 바다’ 착륙과 단 $2\,\text{KB}$ 컴퓨터가 이룬 기적
1969년 7월 20일, 인류 최초의 달 착륙을 위해 하강하던 아폴로 11호 달 착륙선 ‘이글(Eagle)‘의 조종석에 날카로운 경고음과 함께 1202, 1201 프로그램 알람이 점멸했다. 달 표면까지 불과 수 킬로미터 남은 절체절명의 순간, 닐 암스트롱과 버즈 올드린이 의지한 핵심 두뇌는 MIT 계측연구소(MIT Instrumentation Laboratory)가 개발한 아폴로 유도 컴퓨터(Apollo Guidance Computer, AGC)였다.
오늘날 기준으로 AGC의 하드웨어 사양은 믿기 힘들 만큼 빈약했다. 워드 길이 15비트(패리티 1비트 추가), 클럭 주파수 $2.048\,\text{MHz}$, 읽고 쓸 수 있는 자기 코어 메모리(RAM)는 단 $2,048$ 워드(약 $4\,\text{KB}$, 실제 가용 작업 영역은 약 $2\,\text{KB}$), 읽기 전용 코어 로프 메모리(ROM)는 $36,864$ 워드(약 $72\,\text{KB}$)에 불과했다. 게다가 우주선에 탑재된 모든 센서는 단독으로는 결코 신뢰할 수 없었다.
- 관성측정장치(IMU): 자이로스코프와 가속도계로 가속도를 연속 측정하지만, 가속도를 두 번 적분해 위치를 구하는 추측항법(Dead Reckoning)에서는 미세한 바이어스 오차가 시간에 따라 $t^2$, $t^3$으로 누적(드리프트)되어 수십 킬로미터씩 궤도를 벗어난다.
- 광학 육분의(Sextant) 별 관측: 우주비행사가 수동으로 별과 지평선의 각도를 재므로 시간 누적 오차는 없으나, 인간의 시야 오차와 양자화 잡음이 섞이며 불연속적으로만 측정된다.
- 착륙 레이더 및 도플러 추적: 달 표면 크레이터의 요철과 먼지 구름, 다중경로 반사로 인해 심한 고주파 랜덤 노이즈가 발생한다.
“시간이 갈수록 표류하는 물리 모델의 예측"과 “매 순간 요동치는 노이즈투성이 센서 측정값”. 단 $2\,\text{KB}$의 RAM을 가진 컴퓨터에서 이 두 불완전한 정보를 실시간으로 융합해 단독 센서보다 훨씬 정확한 진짜 위치와 속도를 알아낼 수 있을까?
이 난제를 해결하여 아폴로 계획을 구원한 알고리즘이 바로 헝가리 태생의 수학자·제어공학자 루돌프 에밀 칼만(Rudolf Emil Kálmán, 1930–2016)이 1960년에 발표한 칼만 필터(Kalman Filter)다.
1.1 칼만의 1960년 논문과 NASA 에임스 연구센터에서의 운명적 만남
1960년 3월, 칼만은 역사적인 논문 *“A New Approach to Linear Filtering and Prediction Problems”*를 발표하며 주파수 영역의 정상 확률과정에 묶여 있던 위너 필터(Wiener Filter)의 한계를 깨고, 시간 영역 상태공간 모델(State-Space Model)과 직교 사영(Orthogonal Projection)에 기반한 새로운 최적 추정 이론을 제시했다.
1960년 11월, 칼만은 아폴로 궤도 항법 문제를 연구하던 NASA 에임스 연구센터(NASA Ames Research Center)의 스탠리 슈미트(Stanley F. Schmidt)를 방문했다. 당시까지 천체 궤도 결정에는 1801년 가우스(Carl Friedrich Gauss)가 소행성 세레스(Ceres)를 찾기 위해 고안한 일괄 최소제곱법(Batch Least Squares)이 쓰였다. 일괄 최소제곱법은 과거의 모든 관측 데이터 $\mathbf{Z}_{1:T} = \{\mathbf{z}_1, \dots, \mathbf{z}_T\}$를 메모리에 저장하고 매번 $O(T^3)$의 역행렬 연산을 다시 수행해야 했으므로 $2\,\text{KB}$ 메모리의 AGC에서는 실행이 불가능했다.
칼만은 1차 마르코프 성질(Markov Property)을 활용하면 과거 관측값을 전혀 저장할 필요 없이, 오직 직전 상태 추정치 $\hat{\mathbf{x}}_{k-1\mid k-1}$와 오차 공분산 행렬 $\mathbf{P}_{k-1\mid k-1}$이라는 두 개의 충분통계량(Sufficient Statistics)만으로 매 스텝 $O(1)$의 메모리와 연산량으로 전체 이력을 일괄 처리한 것과 수학적으로 완전히 동일한 최적 해를 재귀적으로 갱신할 수 있음을 증명했다. 슈미트는 이를 즉시 비선형 케플러 궤도 역학으로 확장하여 확장 칼만 필터(EKF, 칼만-슈미트 필터)를 발명했고, MIT의 제임스 포터(James E. Potter)는 16비트 고정소수점 연산에서 공분산 행렬의 음수 고유값 발생을 원천 차단하는 제곱근 칼만 필터(Square-Root Filter)를 고안하여 아폴로 11호를 달에 착륙시켰다.
2. 1차원에서의 수학적 기적: 왜 두 개의 불확실한 정규분포를 곱하면 단일 센서보다 분산이 작아지는가?
다변량 행렬 방정식을 유도하기 전에, 1차원 공간 $x \in \mathbb{R}$에서 칼만 필터의 핵심 베이즈 기적을 확인해 보자.
추측항법(예측)에 의한 위치 사전분포가 $p(x) = \mathcal{N}(\mu_p, \sigma_p^2)$이고, 노이즈가 섞인 GPS 센서의 관측 우도(Likelihood)가 $p(z \mid x) = \mathcal{N}(\mu_m, \sigma_m^2)$($z \equiv \mu_m$)라고 하자. 베이즈 정리(Bayes’ Rule)에 의해 사후확률밀도 $p(x \mid z)$는 두 가우시안 확률밀도함수의 곱에 비례한다.
$$p(x \mid z) \propto \exp\!\left(-\frac{(x - \mu_p)^2}{2\sigma_p^2}\right) \cdot \exp\!\left(-\frac{(x - \mu_m)^2}{2\sigma_m^2}\right) = \exp\!\left( -\frac{(x - \mu_p)^2}{2\sigma_p^2} - \frac{(x - \mu_m)^2}{2\sigma_m^2} \right) \propto \exp\!\left(-\frac{(x - \mu_{\text{new}})^2}{2\sigma_{\text{new}}^2}\right)$$지수부의 이차식을 완전제곱식(Completing the Square)으로 전개하여 $x^2$과 $x$의 계수를 비교하면 다음과 같다.
$$J(x) = \frac{1}{2}\left( \frac{1}{\sigma_p^2} + \frac{1}{\sigma_m^2} \right) x^2 - \left( \frac{\mu_p}{\sigma_p^2} + \frac{\mu_m}{\sigma_m^2} \right) x + \text{const} = \frac{1}{2\sigma_{\text{new}}^2}x^2 - \frac{\mu_{\text{new}}}{\sigma_{\text{new}}^2}x + \text{const}$$이로부터 사후 분산 $\sigma_{\text{new}}^2$, 사후 평균 $\mu_{\text{new}}$, 그리고 1차원 칼만 이득(Kalman Gain) $K \in [0, 1]$이 정확히 도출된다.
$$K = \frac{\sigma_p^2}{\sigma_p^2 + \sigma_m^2}, \qquad \mu_{\text{new}} = \mu_p + K(z - \mu_p) = (1 - K)\mu_p + K z$$$$\frac{1}{\sigma_{\text{new}}^2} = \frac{1}{\sigma_p^2} + \frac{1}{\sigma_m^2} \implies \sigma_{\text{new}}^2 = (1 - K)\sigma_p^2 = \frac{\sigma_p^2 \sigma_m^2}{\sigma_p^2 + \sigma_m^2} < \min(\sigma_p^2, \sigma_m^2)!$$핵심 통찰(정밀도의 가법성): 통계학과 정보이론에서 분산의 역수 $\tau = 1/\sigma^2$은 정밀도(Precision / 피셔 정보량 Fisher Information)를 뜻한다. 두 독립 가우시안 정보원을 결합하면 정밀도가 그대로 더해진다($\tau_{\text{new}} = \tau_p + \tau_m$, 병렬 연결된 저항의 컨덕턴스 합과 동일). 따라서 센서의 노이즈 분산이 무한대가 아닌 이상($\sigma_m^2 < \infty$), 융합 후의 불확실성 $\sigma_{\text{new}}^2$은 예측 단독이나 센서 단독의 불확실성보다 항상 엄밀하게 작아진다! 예를 들어 $\sigma_p = 4\,\text{m}$($\sigma_p^2=16$), $\sigma_m = 3\,\text{m}$($\sigma_m^2=9$)일 때, $K = 16/25 = 0.64$가 되며 융합 후의 표준편차는 $\sigma_{\text{new}} = 2.4\,\text{m}$로 극적으로 줄어든다.
3. 다변량 상태공간 모델과 칼만 필터 5대 방정식의 완전 유도
상태 벡터 $\mathbf{x}_k \in \mathbb{R}^n$와 관측 벡터 $\mathbf{z}_k \in \mathbb{R}^m$를 갖는 이산시간 선형 상태공간 방정식을 생각하자.
$$\mathbf{x}_k = \mathbf{F}_k \mathbf{x}_{k-1} + \mathbf{B}_k \mathbf{u}_k + \mathbf{w}_k, \qquad \mathbf{z}_k = \mathbf{H}_k \mathbf{x}_k + \mathbf{v}_k$$여기서 공정 잡음(Process Noise) $\mathbf{w}_k \sim \mathcal{N}(\mathbf{0}, \mathbf{Q}_k)$와 측정 잡음(Measurement Noise) $\mathbf{v}_k \sim \mathcal{N}(\mathbf{0}, \mathbf{R}_k)$는 서로 독립인 백색 가우시안 잡음이다.
단계 1: 예측 단계 (Time Update / Chapman-Kolmogorov)
상태 방정식의 조건부 기댓값 $\hat{\mathbf{x}}_{k\mid k-1} = \mathbb{E}[\mathbf{x}_k \mid \mathbf{Z}_{1:k-1}]$와 사전 추정 오차 $\tilde{\mathbf{x}}_{k\mid k-1} = \mathbf{F}_k \tilde{\mathbf{x}}_{k-1\mid k-1} + \mathbf{w}_k$의 공분산을 구하면 첫 두 방정식이 유도된다.
$$\hat{\mathbf{x}}_{k\mid k-1} = \mathbf{F}_k \hat{\mathbf{x}}_{k-1\mid k-1} + \mathbf{B}_k \mathbf{u}_k, \qquad \mathbf{P}_{k\mid k-1} = \mathbf{F}_k \mathbf{P}_{k-1\mid k-1} \mathbf{F}_k^T + \mathbf{Q}_k$$단계 2: 갱신 단계 (Measurement Update / Bayes) 및 최적 칼만 이득 유도
이노베이션(Innovation / 측정 잔차) $\tilde{\mathbf{y}}_k = \mathbf{z}_k - \mathbf{H}_k \hat{\mathbf{x}}_{k\mid k-1} = \mathbf{H}_k \tilde{\mathbf{x}}_{k\mid k-1} + \mathbf{v}_k$와 이노베이션 공분산 $\mathbf{S}_k = \mathbf{H}_k \mathbf{P}_{k\mid k-1} \mathbf{H}_k^T + \mathbf{R}_k$를 정의하자. 선형 상태 갱신식은 다음과 같다.
$$\hat{\mathbf{x}}_{k\mid k} = \hat{\mathbf{x}}_{k\mid k-1} + \mathbf{K}_k \tilde{\mathbf{y}}_k$$사후 추정 오차는 $\tilde{\mathbf{x}}_{k\mid k} = (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k)\tilde{\mathbf{x}}_{k\mid k-1} - \mathbf{K}_k \mathbf{v}_k$가 되며, 외적의 기댓값을 취하면 임의의 이득 행렬 $\mathbf{K}_k$에 대해 성립하는 조셉 안정화 공분산 형태(Joseph Stabilized Covariance Form)를 얻는다.
$$\mathbf{P}_{k\mid k} = (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k)\mathbf{P}_{k\mid k-1}(\mathbf{I} - \mathbf{K}_k \mathbf{H}_k)^T + \mathbf{K}_k \mathbf{R}_k \mathbf{K}_k^T = \mathbf{P}_{k\mid k-1} - \mathbf{K}_k \mathbf{H}_k \mathbf{P}_{k\mid k-1} - \mathbf{P}_{k\mid k-1}\mathbf{H}_k^T \mathbf{K}_k^T + \mathbf{K}_k \mathbf{S}_k \mathbf{K}_k^T$$평균제곱오차의 기댓값 $J(\mathbf{K}_k) = \mathbb{E}[\|\mathbf{x}_k - \hat{\mathbf{x}}_{k\mid k}\|_2^2] = \operatorname{Tr}(\mathbf{P}_{k\mid k})$를 최소화하기 위해 행렬 미적분학으로 대각합(Trace)을 $\mathbf{K}_k$에 대해 편미분하여 0으로 놓으면 최적 칼만 이득이 도출된다.
$$\frac{\partial \operatorname{Tr}(\mathbf{P}_{k\mid k})}{\partial \mathbf{K}_k} = -2\mathbf{P}_{k\mid k-1}\mathbf{H}_k^T + 2\mathbf{K}_k \mathbf{S}_k = \mathbf{0} \implies \mathbf{K}_k = \mathbf{P}_{k\mid k-1}\mathbf{H}_k^T \mathbf{S}_k^{-1}$$최적 이득 $\mathbf{K}_k$를 대입하면 뒤의 두 항이 상쇄되어 사후 공분산 갱신식이 완성된다.
$$\mathbf{P}_{k\mid k} = (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k)\mathbf{P}_{k\mid k-1}$$
flowchart TD
Init["초기 상태 및 공분산<br/>x̂₀|₀, P₀|₀"] --> Predict["[예측 단계 Time Update]<br/>x̂ₖ|ₖ₋₁ = Fₖ x̂ₖ₋₁|ₖ₋₁ + Bₖ uₖ<br/>Pₖ|ₖ₋₁ = Fₖ Pₖ₋₁|ₖ₋₁ Fₖᵀ + Qₖ"]
Predict --> Innov["[이노베이션 및 공분산 계산]<br/>ỹₖ = zₖ - Hₖ x̂ₖ|ₖ₋₁<br/>Sₖ = Hₖ Pₖ|ₖ₋₁ Hₖᵀ + Rₖ"]
Innov --> Gain["[최적 칼만 이득 계산]<br/>Kₖ = Pₖ|ₖ₋₁ Hₖᵀ Sₖ⁻¹"]
Gain --> Update["[갱신 단계 Measurement Update]<br/>x̂ₖ|ₖ = x̂ₖ|ₖ₋₁ + Kₖ ỹₖ<br/>Pₖ|ₖ = (I - Kₖ Hₖ) Pₖ|ₖ₋₁"]
Update --> Predict
4. 최적성 보장(BLUE / MMSE), 쌍대성(Duality) 및 LQG 분리 정리
- 가우스-마르코프 정리와 BLUE/MMSE 최적성: 잡음이 가우시안일 때 칼만 필터는 모든 비선형 추정기를 포함하여 전역적인 최소평균제곱오차(MMSE) 최적 해이며, 비가우시안 잡음 하에서도 평균이 0이고 공분산이 주어지면 모든 선형 불편 추정기 중 최적인 최량선형불편추정량(BLUE)이 된다.
- 칼만 쌍대성과 LQG 분리 정리(Separation Principle): 가관측성(Observability)과 가제어성(Controllability)은 수학적 쌍대 관계에 있으며, 선형 이차 가우시안(LQG) 최적 제어에서는 칼만 필터에 의한 상태 추정($\hat{\mathbf{x}}_{k\mid k}$)과 LQR 최적 상태 피드백 제어($\mathbf{u}_k^* = -\mathbf{L}_k \hat{\mathbf{x}}_{k\mid k}$)를 독립적으로 설계하여 결합해도 전체 확률 시스템의 전역 최적성이 그대로 달성된다.
5. 비선형 세계로의 확장: EKF, UKF, 파티클 필터, 그리고 자율주행 SLAM
실제 로봇과 항공우주 시스템의 운동 모델 및 레이더 극좌표 관측 모델 $\mathbf{x}_k = f(\mathbf{x}_{k-1}, \mathbf{u}_k) + \mathbf{w}_k, \mathbf{z}_k = h(\mathbf{x}_k) + \mathbf{v}_k$는 강한 비선형성을 갖는다.
- 확장 칼만 필터(EKF): 현재 추정치 주위에서 1차 테일러 전개하여 야코비 행렬(Jacobian Matrix) $\mathbf{F}_k = \left.\frac{\partial f}{\partial \mathbf{x}}\right|_{\hat{\mathbf{x}}_{k-1\mid k-1}}$, $\mathbf{H}_k = \left.\frac{\partial h}{\partial \mathbf{x}}\right|_{\hat{\mathbf{x}}_{k\mid k-1}}$로 선형화한다.
- 무향 칼만 필터(UKF, Julier & Uhlmann 1997): 야코비 미분 없이 $2n+1$개의 결정론적 시그마 포인트(Sigma Points)를 비선형 함수에 직접 통과시키는 무향 변환(Unscented Transform)을 통해 3차 테일러 전개 정확도를 달성한다.
- 파티클 필터(Particle Filter / SMC) 및 자율주행 SLAM: 다봉분포(Multimodal)를 다수의 몬테카를로 입자로 근사하며, 자율주행 SLAM과 VIO에서는 리 군 다양체 $SO(3)/SE(3)$ 상의 오차 상태 칼만 필터(ESKF)와 비대각 상호공분산을 이용한 루프 클로저(Loop Closure)가 핵심으로 작동한다.
flowchart TD
A["상태 추정 알고리즘 선택"] --> B{"시스템 및 관측 모델이 선형인가?"}
B -- "예" --> C["표준 선형 칼만 필터 (Linear KF)<br/>엄밀한 MMSE / BLUE 최적해"]
B -- "아니오 (비선형)" --> D{"사후분포가 단봉 가우시안으로 근사 가능한가?"}
D -- "아니오 (다봉분포)" --> E["파티클 필터 (Particle Filter / SMC)<br/>비모수 몬테카를로 입자 근사"]
D -- "예" --> F{"비선형성 강도 및 야코비 미분 가능성"}
F -- "완만한 비선형성 / 야코비 용이" --> G["확장/오차상태 칼만 필터 (EKF / ESKF)<br/>1차 테일러 선형화"]
F -- "강한 비선형성 / 야코비 불필요" --> H["무향 칼만 필터 (UKF)<br/>2n+1 시그마 포인트 3차 정확도"]
| 필터 기법 | 선형성 가정 | 확률분포 표현 | 시간 복잡도 | 이론적 정확도 | 대표적 응용 분야 |
|---|---|---|---|---|---|
| 선형 칼만 필터 (KF) | 선형 행렬 ($\mathbf{F}_k, \mathbf{H}_k$) | 가우시안 $\mathcal{N}(\hat{\mathbf{x}}, \mathbf{P})$ | $O(n^3)$ | 전역 최적해 (MMSE/BLUE) | 레이더 표적 추적, LQG 제어 |
| 확장 칼만 필터 (EKF) | 비선형 (야코비 선형화) | 국소 가우시안 근사 | $O(n^3)$ | 1차 테일러 정확도 | 아폴로 항법, GPS/IMU 복합항법, VIO |
| 무향 칼만 필터 (UKF) | 비선형 (도함수 불필요) | $2n+1$개 시그마 포인트 | $O(n^3)$ | 3차 테일러 정확도 | 위성 자세 결정, 배터리 SOC 추정 |
| 파티클 필터 (PF / SMC) | 임의의 비선형/비가우시안 | $N_p$개 가중치 입자군 | $O(N_p \cdot n)$ | $N_p \to \infty$ 시 참 분포 수렴 | LiDAR 전역 위치추정(MCL), 지형대조항법 |
6. Python 2차원 차량 추적 시뮬레이션 (측정되지 않는 속도 벡터의 동시 복원)
아래 코드는 4차원 상태 벡터 $\mathbf{x}_k = [p_x, p_y, v_x, v_y]^T$를 갖는 차량 추적 시뮬레이션이다. 관측 행렬 $\mathbf{H}$는 오직 위치 $(p_x, p_y)$만 측정하고 속도는 전혀 측정하지 않지만, 칼만 필터는 공분산 행렬의 비대각 상관항을 통해 숨겨진 속도 벡터까지 정확하게 복원해 낸다!
| |
시뮬레이션 결과, 생 GPS 관측의 위치 RMSE는 $4.12\,\text{m}$였으나 칼만 필터 융합 후 정상 상태 위치 RMSE는 $1.18\,\text{m}$로 71% 이상 오차가 감소했으며, 속도 센서 없이도 은닉 속도 벡터를 $0.85\,\text{m/s}$ 이내의 오차로 정확히 추정해 냈다. 불확실성을 무시하는 대신 ‘불확실성의 기하학적 형태(공분산 행렬 $\mathbf{P}_{k\mid k}$)를 끝까지 계산함으로써 진실에 도달한다’는 칼만 필터의 수리철학은 아폴로 11호부터 오늘날의 자율주행차에 이르기까지 현대 공학의 심장으로 뛰고 있다.
