포스트

센서값이 계속 흔들릴 때 칼만 필터는 무엇을 믿을까: 예측과 측정의 균형

칼만 필터는 이전 상태로 계산한 예측과 잡음이 섞인 새 측정을 각각의 불확실성에 따라 섞어 현재 상태를 재귀적으로 추정합니다. 센서값을 무조건 부드럽게 만드는 도구가 아니라, 시스템 모델과 측정 중 어느 쪽을 얼마나 믿을지 공분산으로 갱신하는 상태 추정기입니다. 출력이 나쁠 때는 QR을 무작정 바꾸기보다 모델 오차, 센서 잡음, 초기값을 나눠 확인해야 합니다.

누적 평균에서 칼만 이득까지

학생들이 점수를 하나씩 말할 때 전체 점수를 매번 다시 더하지 않아도 이전 평균과 새 점수만 있으면 다음 평균을 구할 수 있습니다.

1
X'(n) = X'(n-1) * ((n-1) / n) + Xn * (1 / n)

칼만 필터도 과거의 모든 관측을 그대로 보관하는 대신 직전 추정과 새 측정을 사용한다는 점에서 재귀적입니다. 다만 두 값에 단순히 같은 규칙의 평균을 적용하지 않습니다. 더 흔들리는 값에는 작은 무게를, 더 확실한 값에는 큰 무게를 줍니다.

원문의 두 측정 평균은 각 값의 분산, 즉 표준편차 제곱을 반대편 가중치로 사용해 다음처럼 표현됩니다.

1
평균 = (X1 * σ2² + X2 * σ1²) / (σ1² + σ2²)

측정 잡음이 크다는 것은 새 센서값을 덜 믿어야 한다는 뜻입니다. 칼만 이득 K가 예측과 측정 사이에서 어느 쪽을 얼마나 반영할지 결정합니다. 측정 잡음 공분산 R이 커질수록 이득이 작아지고, 측정을 신뢰하는 비중도 줄어듭니다.

공분산은 변수들이 얼마나 퍼져 있고 함께 변하는지를 나타냅니다. 두 변수가 같은 방향으로 변하면 양수, 반대 방향이면 음수이며, 0이면 선형 관계가 없음을 뜻합니다. 상태가 위치와 속도처럼 여러 값으로 구성될 때는 각 값의 불확실성과 관계를 행렬로 다뤄야 합니다.

Prediction과 Correction은 무엇을 계산하나

칼만 필터 상태 갱신 공식

칼만 필터의 한 주기는 Time Update와 Measurement Update로 나뉩니다.

Time Update에서는 이전 상태와 입력으로 현재 상태를 먼저 예측하고, 그 예측의 오차 공분산도 함께 계산합니다. 새 센서값을 보기 전 단계이므로 아직 보정되지 않은 추정입니다.

Measurement Update에서는 세 단계를 거칩니다.

  1. 예측 오차와 측정 잡음을 이용해 칼만 이득 K를 구합니다.
  2. 실제 측정 zk와 예측의 차이로 상태 x를 보정합니다.
  3. 보정된 상태가 얼마나 불확실한지 공분산 P를 다시 갱신합니다.

기호를 역할별로 보면 식을 읽기 쉬워집니다.

  • x: 추정하려는 시스템 상태
  • zk: 센서가 준 측정값
  • A: 이전 상태를 다음 상태로 옮기는 행렬
  • B: 제어 입력을 상태에 반영하는 행렬
  • H: 상태를 센서 측정 공간으로 바꾸는 행렬
  • P: 상태 추정 오차의 공분산
  • Q: 시스템 잡음
  • R: 측정 잡음의 공분산
  • K: 예측과 측정을 섞는 칼만 이득

핵심은 상태값만 예측하지 않고 그 값의 불확실성도 같이 전달한다는 데 있습니다. 다음 frame에서는 방금 보정한 상태와 공분산이 다시 이전 정보가 됩니다.

어떤 필터를 고르고 무엇을 조심할까

선형 상태 전이와 관찰 모델을 가정할 수 있으면 Linear Kalman Filter를 사용합니다. 비선형성이 있으면 Extended Kalman Filter가 그 가정을 완화하지만, 초기 추정이 크게 틀리면 발산할 수 있고 항상 최적의 결과를 보장하지 않습니다. 상태 전이와 관찰 모델의 비선형성이 매우 클 때는 Unscented Kalman Filter를 고려합니다.

필터가 센서값을 부드럽게 만든다고 해서 모델이 틀린 문제까지 해결하는 것은 아닙니다. 상태에 어떤 값을 넣을지, A, B, H가 실제 움직임과 측정을 설명하는지, 시스템 잡음 Q와 측정 잡음 R을 어느 정도로 둘지가 결과를 좌우합니다.

실제 점검에서는 출력이 흔들린다는 이유만으로 R을 키우기보다 다음을 구분해야 합니다.

  • 센서 자체의 측정이 불안정한가
  • 시스템이 가정한 움직임보다 급격하게 변하는가
  • 초기 상태와 공분산이 현실과 너무 다른가
  • 선형 모델로 설명하기 어려운 변화인가

칼만 필터는 “잡음을 지우는 평균”이 아니라, 시스템 모델이 낸 예측과 센서가 낸 측정을 불확실성으로 조정하는 상태 추정기입니다. 이 관점을 잡아야 추적 문제에서도 관측이 없는 frame은 예측하고, 검출이 들어온 frame은 다시 보정하는 흐름을 이해할 수 있습니다.

튜닝 전에 어떤 기록을 남겨야 하나

먼저 원시 측정, 예측값, 보정값을 같은 시간축에 놓습니다. 측정만 흔들리고 실제 움직임은 완만하다면 측정 잡음 가정이 중요하고, 급가속 구간에서 예측이 계속 늦는다면 상태 전이 모델이나 과정 잡음 가정이 맞지 않을 수 있습니다. 보정 결과 하나만 보면 두 원인이 모두 “필터가 느리다”로 보입니다.

초기 상태와 P도 별도로 봅니다. 시작 위치를 확신할 근거가 없는데 불확실성을 지나치게 작게 두면 초기 측정을 충분히 반영하지 못할 수 있습니다. 반대로 P가 매우 크면 초반 출력이 측정에 민감하게 움직입니다. 정상 구간뿐 아니라 시작, 관측 누락, 급변 구간을 나눠 기록해야 합니다.

마지막으로 목적 지표를 정합니다. 화면상 매끄러움이 목표인지, 위치 오차가 작은 것이 목표인지, 관측이 끊긴 동안 얼마나 오래 예측해야 하는지가 다르면 같은 QR을 고를 수 없습니다. 지연과 흔들림 사이의 trade-off를 실제 사용 조건에서 비교해야 튜닝이 숫자 맞추기에 그치지 않습니다.

원문과 버전 확인

함께 읽으면 이해가 이어지는 글

자주 묻는 질문

칼만 필터는 단순 이동 평균과 무엇이 다른가요?

이동 평균은 최근 측정을 정해진 방식으로 섞지만, 칼만 필터는 시스템 모델의 예측과 측정의 불확실성을 이용해 매 단계 가중치를 바꿉니다. 그래서 관측이 없는 순간에도 상태를 예측할 수 있습니다.

출력이 너무 흔들리면 R만 키우면 되나요?

항상 그렇지는 않습니다. R을 키우면 측정을 덜 믿게 되지만 실제 움직임이 모델보다 급격하거나 Q가 너무 작아도 비슷한 증상이 납니다. 센서 잡음과 모델 오차를 분리해 봐야 합니다.

비선형 시스템에도 기본 칼만 필터를 쓸 수 있나요?

기본 칼만 필터는 선형 상태 전이와 관측을 전제로 합니다. 비선형성이 중요한 문제라면 선형화하는 EKF나 표본점을 사용하는 UKF가 필요한지 모델과 오차를 보고 판단해야 합니다.

위치 추적 문제에서 상태를 어떻게 설계하나

센서가 위치만 준다고 해서 상태도 위치 하나로 끝나야 하는 것은 아닙니다. 다음 위치를 예측하려면 속도를 상태에 포함할 수 있고, 움직임 변화가 중요한 문제라면 가속도까지 고려할지 결정해야 합니다. 상태를 늘리면 표현력은 커지지만 초기값과 공분산, 전이 관계도 함께 정해야 하므로 관측만으로 구분하기 어려운 값이 많아질 수 있습니다.

관측 모델은 센서가 상태의 무엇을 직접 보는지 나타냅니다. 상태에 위치와 속도가 있어도 센서가 위치만 측정한다면 correction은 측정된 위치를 통해 속도 추정에도 간접 영향을 줍니다. 단위를 섞거나 좌표축 순서를 바꾸면 행렬 계산은 실행돼도 물리적으로 의미 없는 결과가 나올 수 있으므로 각 state와 measurement의 이름, 단위를 먼저 적습니다.

검출 기반 추적에서는 box 중심을 관측으로 쓰고 다음 frame의 위치를 예측하는 흐름을 생각할 수 있습니다. Detection이 없는 frame에는 prediction만 진행하고, 새 detection이 들어오면 correction합니다. 그러나 오랫동안 관측이 없으면 불확실성이 커져야 자연스러우며, 예측값만 계속 화면에 그린다고 객체가 실제로 존재한다는 증거가 되지는 않습니다.

필터 검증에는 움직임 유형이 다른 구간이 필요합니다. 정지, 일정한 속도, 방향 전환, 관측 누락을 나눠 예측과 보정의 오차를 봅니다. 정지 구간의 매끄러움만으로 값을 고르면 방향 전환에서 심하게 늦을 수 있고, 급변을 잘 따라가도록 만들면 센서 잡음도 더 따라갈 수 있습니다.

결과를 보고할 때는 사용한 상태 정의, 시간 간격, QR의 의미, 초기 P, 관측 누락 처리까지 남깁니다. 숫자만 복사하면 다른 frame rate와 센서 단위에서 같은 동작을 기대할 수 없습니다. 칼만 필터의 재사용 가능한 부분은 특정 값보다 이 모델링 순서입니다.

시간 간격이 일정하지 않은 데이터라면 매 update 사이의 실제 간격이 상태 전이에 반영되는지도 확인합니다. 고정 frame rate를 가정한 모델에 지연된 측정을 그대로 넣으면 속도 예측이 어긋날 수 있습니다. Timestamp 순서가 뒤바뀌거나 같은 측정이 두 번 들어오는 입력 오류도 필터 파라미터 문제처럼 보일 수 있습니다.

센서가 여러 개라면 각 측정의 좌표계와 시간 기준을 먼저 맞춥니다. 단위가 다른 값을 한 state에 섞거나 동기화되지 않은 측정을 동시에 관측한 것으로 처리하면 공분산을 조절해도 근본 오류가 남습니다. 필터는 잘못된 데이터 계약을 자동으로 고치는 도구가 아닙니다.

필터를 켠 결과와 원시 측정을 같은 그래프에 남기고 ground truth가 있다면 함께 비교합니다. 눈으로 더 매끄러워 보이는 것과 실제 오차가 줄어든 것은 다를 수 있습니다. 지연, 오차, 관측 누락 회복을 각각 측정해야 목적에 맞는 설정을 고를 수 있습니다.

THE END / OPSOAI

여기까지 읽었습니다

핵심 장면을 한 번 더 떠올려 보세요. 이해가 남았다면 이 책은 제 역할을 다했습니다.

다른 책 고르기
표지 1

키와 좌우 스와이프를 지원합니다. 읽던 페이지는 이 기기에 저장됩니다.

CONTENTS

이 책의 목차

    8개 장 18 분읽는 시간