센서 융합의 개념
확장 칼만 필터에서 센서 융합은 여러 개의 센서 데이터를 통합하여 시스템의 상태를 보다 정확하게 추정하는 중요한 과정이다. 이는 개별 센서의 한계를 보완하고, 서로 다른 센서의 특성을 활용하여 보다 정밀한 정보를 얻는 것을 목표로 한다. 각 센서는 고유의 잡음과 오차를 가지므로, 다양한 센서로부터 얻은 데이터를 적절히 결합하면 시스템의 전체 성능을 향상시킬 수 있다.
센서 융합의 필요성
다양한 센서가 제공하는 정보는 동일한 물리적 현상을 다르게 표현할 수 있다. 예를 들어, 자이로스코프는 회전 속도를 측정하고, 가속도계는 가속도를 측정하며, GPS는 위치를 측정한다. 이 정보들을 단일한 시스템 상태 추정에 통합하는 과정이 센서 융합이다. 각 센서의 장점을 활용하면 시스템의 추정 정확도를 향상시킬 수 있다.
센서 데이터의 융합 원리
센서 융합에서는 확장 칼만 필터의 예측 단계와 업데이트 단계를 통해 각 센서의 측정값을 융합한다. 시스템 상태는 다음과 같이 나타낼 수 있다.
여기서 \mathbf{x}_{k}는 k 시점에서의 상태 벡터, f는 비선형 시스템 모델, \mathbf{u}_{k-1}는 입력, \mathbf{w}_{k-1}는 시스템 노이즈이다.
각 센서는 서로 다른 관측 모델을 가진다. 특정 센서의 관측 모델은 다음과 같이 나타낼 수 있다.
여기서 \mathbf{z}_{k}^{(i)}는 i번째 센서로부터 측정된 값, h^{(i)}는 해당 센서의 비선형 관측 모델, \mathbf{v}_{k}^{(i)}는 측정 잡음이다. 확장 칼만 필터에서는 각 센서로부터의 측정값을 위 식에 따라 업데이트하며, 이를 통해 상태 추정을 개선한다.
확장 칼만 필터를 이용한 센서 융합 절차
- 예측 단계: 시스템 모델에 의해 상태 벡터 \mathbf{x}_{k-1}을 기반으로 현재 상태 \mathbf{x}_{k}를 예측한다. 예측 단계에서 각 센서로부터의 정보는 사용되지 않는다. 수식으로는 다음과 같다.
- 상태 오차 공분산 예측: 예측된 상태 오차 공분산 \mathbf{P}_{k|k-1}은 다음과 같이 계산된다.
여기서 \mathbf{F}_{k}는 상태 벡터의 야코비 행렬, \mathbf{Q}_{k}는 시스템 노이즈 공분산 행렬이다.
- 업데이트 단계: 각 센서로부터 측정된 데이터를 기반으로 예측된 상태를 업데이트한다. 특정 센서 i에 대한 잔차(residual) \mathbf{y}_{k}^{(i)}는 다음과 같이 정의된다.
측정 오차 공분산 \mathbf{S}_{k}^{(i)}는 다음과 같이 계산된다.
여기서 \mathbf{H}_{k}^{(i)}는 센서 i에 대한 관측 모델의 야코비 행렬, \mathbf{R}_{k}^{(i)}는 해당 센서의 측정 잡음 공분산 행렬이다.
칼만 이득 계산
센서 융합에서 중요한 부분은 각 센서의 측정값에 얼마나 신뢰를 두고 업데이트할 것인가를 결정하는 칼만 이득(Kalman Gain)이다. 이는 예측된 상태를 센서로부터의 새로운 측정값으로 업데이트할 때, 그 측정값이 얼마나 중요한지를 나타내는 값이다. 특정 센서 i에 대한 칼만 이득은 다음과 같이 계산된다.
여기서 \mathbf{K}_{k}^{(i)}는 센서 i에 대한 칼만 이득, \mathbf{S}_{k}^{(i)}는 해당 센서의 측정 오차 공분산 행렬이다. 칼만 이득이 클수록, 해당 센서의 측정값이 상태 업데이트에 더 큰 영향을 미치게 된다.
상태 벡터 업데이트
각 센서로부터 얻은 칼만 이득을 사용하여 상태 벡터를 업데이트할 수 있다. 특정 센서 i에 대한 상태 업데이트는 다음과 같다.
여기서 \hat{\mathbf{x}}_{k|k}는 센서 i에 의해 업데이트된 상태 벡터, \mathbf{y}_{k}^{(i)}는 해당 센서에 대한 잔차이다. 이를 통해 상태 벡터는 센서로부터 얻은 측정값을 반영한 새로운 값으로 갱신된다.
오차 공분산 행렬 업데이트
상태 벡터가 갱신되면, 오차 공분산 행렬도 함께 업데이트된다. 오차 공분산 행렬은 상태 벡터의 불확실성을 나타내며, 센서 데이터에 의해 오차가 줄어드는 과정이다. 해당 센서 i에 대한 오차 공분산 행렬의 업데이트는 다음과 같이 계산된다.
여기서 \mathbf{I}는 단위 행렬, \mathbf{P}_{k|k}는 업데이트된 오차 공분산 행렬이다. 이 과정에서 칼만 이득이 클수록 오차 공분산 행렬의 값이 줄어들게 되며, 이는 상태 벡터 추정의 신뢰도가 높아졌음을 의미한다.
다중 센서 융합
여러 개의 센서가 동시에 사용될 경우, 각 센서로부터 얻은 잔차 \mathbf{y}_{k}^{(i)}와 칼만 이득 \mathbf{K}_{k}^{(i)}를 차례대로 사용하여 상태 벡터를 업데이트할 수 있다. 센서 i가 많아질수록, 상태 벡터는 더 많은 센서 데이터를 반영하게 된다.
각 센서의 데이터는 독립적으로 처리될 수 있으며, 각 센서에 대한 잔차 및 칼만 이득을 개별적으로 계산하여 업데이트를 수행한다. 이 과정은 반복적이며, 모든 센서에 대해 업데이트가 완료될 때 최종 상태 추정이 이루어진다.
센서 융합의 구현
확장 칼만 필터를 사용한 센서 융합의 경우, 소프트웨어 구현에서 여러 센서로부터 데이터를 처리하는 것이 핵심이다. 각 센서의 데이터는 다른 주기와 정확도를 가질 수 있으며, 이를 필터 내부에서 적절하게 처리하는 것이 중요하다. 이를 위해 각 센서에 대해 별도의 관측 모델과 잡음 공분산 행렬을 정의하고, 주기적으로 업데이트를 수행한다.
또한, 각 센서의 특성에 따라 시스템 노이즈 공분산 행렬 \mathbf{Q}와 측정 잡음 공분산 행렬 \mathbf{R}를 다르게 설정하여 센서 융합의 성능을 조정할 수 있다. 예를 들어, GPS와 같은 저주기 센서는 높은 측정 오차를 가지지만, 장기적인 안정성을 제공한다. 반면, 가속도계나 자이로스코프는 높은 주기로 측정값을 제공하므로, 시스템 노이즈을 더 작게 설정할 수 있다.
비동기 센서 융합
현실적으로 각 센서는 동일한 주기로 데이터를 제공하지 않는다. 예를 들어, GPS는 1초에 한 번 데이터를 제공하는 반면, IMU(관성 측정 장치)는 초당 수백 번의 데이터를 제공할 수 있다. 이를 해결하기 위해, 센서 데이터를 비동기적으로 처리하는 알고리즘이 필요하다.
확장 칼만 필터에서는 각 센서의 데이터가 들어올 때마다 해당 시점에서 상태 벡터를 업데이트하는 방식으로 비동기 센서 융합을 처리한다. 예측 단계는 고정 주기로 수행되지만, 업데이트 단계는 센서 데이터가 들어오는 주기에 맞추어 개별적으로 실행된다. 이는 시스템의 계산 부하를 줄이면서도 여러 센서의 데이터를 적절히 융합할 수 있는 방법이다.