Post

[칼만 필터] Kalman Filter 1 - 개요

[칼만 필터] Kalman Filter 1 - 개요

먼저 칼만 필터에 대해 공부하기에 앞서, 몇 가지 개념들을 간단하게 짚고 넘어가겠다.

  • 시스템 (System)

    실제 현실 세계에 존재하는 대상으로, 입력을 받아 자신만의 고유한 규칙에 따라 처리한 뒤 출력을 내보낸다. 수학적으로는 입력과 결과의 관계를 나타내는 법칙을 의미한다.

  • 모델 (Model)

    복잡한 현실 세계의 시스템을 우리가 계산할 수 있도록, 수학 방정식으로 표현한 것이다.
    일반적으로 다루기 쉽도록 덜 중요한 변수는 무시하고 단순화했기 때문에, 항상 현실과의 오차가 존재한다.

  • 변수 (Variable)

    시스템에서 시간이 지남에 따라 값이 변할 수 있는 값이 변할 수 있는 모든 것을 통칭한다.

  • 상태 (State)

    변수의 하위 개념으로, 시스템의 미래를 예측하기 위해 반드시 알아야 하는 최소한의 핵심 변수들의 집합을 의미한다. 즉, 시스템의 과거 정보를 담고 있는 압축된 정보다.

  • 노이즈 (Noise)

    모델이나 센서가 완벽하지 않기 때문에 발생하는 불확실성이다. 노이즈는 외란이나 모델 자체의 오차인 프로세스 노이즈 (Process Noise)와 센서 자체의 기계적 한계로 인한 측정 노이즈 (Measurement Noise)로 나뉜다.

  • 측정 / 관측 (Measurement / Observation)

    센서를 통해 값을 읽어들이는 과정을 의미한다.

  • 예측 (Prediction)

    새로운 관측값이 들어오기 전에, 과거의 상태와 모델만을 이용해 다음 순간의 상태가 어떨지 미리 계산해 보는 과정을 의미한다.

  • 추정 (Estimation)

    노이즈가 섞인 관측 데이터를 바탕으로, 보이지 않는 진짜 상태가 무엇인지 수학적으로 유추해 내는 과정을 의미한다.

ex) 자동차의 현재 위치와 속도를 파악해 1초 뒤의 위치를 예측해야 하는 상황

시스템: 자동차의 물리적인 움직임 또는 자동차 그 자체

모델: 속도와 위치의 관계를 나타내는 수학적 공식

변수: 현재 시간, 타이어의 마찰력, 바람의 세기, GPS 좌표, 계기판의 속도 등 계속해서 변하는 모든 값

상태: 자동차의 위치와 속도 (위치와 속도, 엑셀을 얼마나 밟았는지의 입력만 알면 1초 뒤의 위치를 예측할 수 있는 최소한의 핵심 정보)

노이즈: 갑자기 불어온 돌풍으로 인해 차가 밀리는 현상 (프로세스 노이즈)과 터널에 들어가서 GPS 좌표가 튀어버리는 센서의 오차 (측정 노이즈)

관측: 자동차에 달린 GPS 센서가 알려주는 위치값과 속도계의 눈금

예측: 수학적 모델을 통해, 현재 속도와 과거의 위치를 이용해 1초 뒤의 위치를 미리 계산해 보는 과정

추정: 모델로 예측한 값과 센서로 측정한 값을 비교해서, ‘현재 이 차의 진짜 위치와 속도는 여기쯤일 것이다’라고 최적의 값을 계산해 내는 과정

칼만 필터란?

우리가 현실 세계의 시스템을 완벽하게 제어하기 힘든 이유는 항상 예측 불가능한 노이즈가 존재하기 때문이다.
아무리 시스템을 정교한 수학적 모델로 공식화했더라도, 현실의 노이즈와 모델의 한계로 인해 예측값에는 반드시 오차가 발생한다. 또한 센서를 통해 직접 측정한 데이터 역시 센서 자체의 노이즈로 인해 100% 신뢰할 수 없다.

그렇다면 불완전한 모델의 예측값과 부정확한 센서의 측정값 중 무엇을 믿어야 할까? 이 딜레마를 해결하기 위해 등장한 알고리즘이 칼만 필터 (Kalman Filter)이다.

칼만 필터는 크게 2가지 상황에서 사용한다.

직접 측정할 수 없는 상태를, 간접적인 데이터로 추정해야 할 때

화성으로 향하는 로켓을 상상해 보자.

로켓 엔진은 약 3,000°C라는 엄청난 고온으로 연료를 연소시키며 날아간다. 만약 엔진 내부 온도가 너무 높아지면 기계 부품이 파손될 수 있기 때문에, 우리는 연소실 내부의 온도를 실시간으로 모니터링해야만 한다.

하지만 연소실 내부에 온도 센서를 집어넣으면, 센서 자체가 그 열기에 녹아버리는 문제가 있다. 온도를 알아야만 하는데 센서를 넣을 수 없는 딜레마에 빠진 것이다.

이때 우리는 연소실 내부 대신 비교적 온도가 낮은 엔진 외부 표면에 센서를 부착한다.

여기서 칼만 필터는 우리가 측정할 수 있는 값인 외부 온도라는 간접적인 단서와 시스템의 수학적 모델을 결합하여, 연소실 내부 온도 (우리가 진짜 알고 싶지만 잴 수 없는 값)를 정확하게 추정해낸다.

fig1 [출처: MATLAB]

노이즈와 한계가 있는 여러 센서 데이터를 융합하여 최적의 값을 찾아야 할 때

이번에는 도로를 달리고 있는 자동차를 상상해 보자.

네비게이션에서 자동차의 위치를 알아내기 위해 우리는 GPS, IMU, Odometer 등 다양한 센서를 사용하지만, 이들은 완벽하지 않다.

  • GPS: 지구상의 절대적인 위치를 알려주지만, 터널 안에서는 위성 신호가 막히고 업데이트 주기가 느려짐
  • IMU: 차량의 가속도를 매우 빠르게 측정하지만, 가속도를 두 번 적분하여 위치를 구하는 과정에서 오차가 계속 누적됨
  • Odometer: 바퀴 회전수를 측정해서 이동 거리를 알려주지만, 타이어의 공기압이나 도로의 상태에 따라 값이 달라짐

이렇게 각 센서는 저마다의 장점과 노이즈를 가지고 있기 때문에, 불확실성이 난무하게 된다.

여기서 칼만 필터는 불완전한 각 센서의 측정값들을 적절하게 융합해서 가장 최적화된 자동차의 현재 위치를 계산해낸다.

fig2 [출처: MATLAB]

This post is licensed under CC BY 4.0 by the author.