관리 메뉴

개발자비행일지

칼만이득 본문

▶ Ardupilot

칼만이득

Cyber0946 2020. 7. 15. 18:08

칼만필터 알고리즘은 Predcit and Correct이다. 

즉 물체의 다음 상태를 예측한 값과, 측정한 값의 조합을 통해서 추정되는 다음 상태를 얻어내는 것이다. 

-> 센서도 오차가 존재하기 때문에, 센서와 시스템 모델에서 예측되는 값을 잘 융합하기 위한 재귀적 알고리즘

Measurement Update:

칼만이득(Kalman gain)

시스템의 상태변수 Xk에 대한 추정으로부터 오차 공분산을 구하고, 이 추정에 대한 불확실성을 표현하기 위해 가우시안 분포로 표현한다. 칼만 필터에서는 이를 Xk^로 표현한다. Xk^가 특정 값 r 에 있을 확률은 다음과 같이 정의할 수 있다. 

 칼만필터는 Gaussian PDF를 이용하여 프로세스 오차 및 측정 오차를 표현하며, 이 Gaussian PDF는 매 state 마다 

를 추정할 때와 측정할 때 각각 따로 존재하고, 최종 추정 값은 이 두 Gaussian PDF의 합성(fusion)을 이용해야 한다는 것입니다. 여기서 Gaussian PDF의 중요한 속성을 이용하는데, 서로 다른 두 개의 Gaussian PDF를 합성하면 또 다른 형태의 Gaussian PDF가 만들어진다는 것이다. 우리는 이러한 특성을 이용해 복잡도를 증가시키지 않고 매 state에 대한 Gaussian PDF를 계산할 수 있다는 것입니다.

 

 

위 그림에서와 같이 추정에 대한 Gaussian PDF의 식을 다음과 같이 정리하고,

 

 

또한 측정에 대한 Gaussian PDF의 식을 다음과 같이 정리할 수 있습니다.

 

 

위 두 개의 Gaussian PDF의 곱을 통해 PDF가 합성됨으로 인해 새로운 Gaussian PDF를 다음과 같이 얻을 수 있습니다.

  

 

                       

 

위 함수를 다시 정리하면,

 

 

여기서 

는 다음과 같습니다. 

 

 

 

 

위의 두 식은 시스템 잡음 및 측정 잡음이 같은 도메인 혹은 단위에 있다고 가정하였지만 실제로는 다르기 때문에 한쪽의 Gaussian PDF를 다른 한 쪽의 Gaussian PDF에 곱하기 위해서는 도메인을 맞추어 주어야 합니다. 이를 위해서 시스템 잡음 쪽을 c로 나누어 스케일링을 통해 측정 잡음 도메인으로 맞추었습니다.

 

 

 

 

 

위 식을 이용하여 합성 평균과 분산을 다시 구하면 다음과 같습니다.

 

 

위의 식에서 

 그리고 

으로 치환하면 아래와 같은 식으로 다시 쓸 수 있습니다.

 

 

한편 분산은 다음과 같습니다.

 

 

위 식을 칼만 필터 알고리즘에 적용을 위해 정리하면 다음과 같습니다.

 

 

 

이와 같이 칼만 필터 알고리즘의 모든 식을 유도할 수 있습니다. 한편 칼만 이득은 오차 공분산의 기대값 

을 최소화하는 값을 찾는 것으로도 유도할 수 있는데, 이는 최소 자승법(Least mean square; LMS)으로 오차 공분산의 도함수가 '0'일 때가 최소이며 이 경우에 칼만 이득이 결정되게 됩니다.

즉, 목적은 오차 공분산의 기대값 최소화이다. 추정과 측정의 오류를 최소화 시키는 것이다.

위 칼만이득의 식에서 측정잡음(Measurement noise)의 공분산 R이 매우 크면 칼만이득이 작아지고 다음 단계의 추정치를 계산할 때 현재의 측정값이 무시되는데, 이는 측정잡음의 공분산이 크다는 것은 신뢰성이 떨어짐을 의미하므로 현재의 측정치를 무시하게 된다는 것입니다. 또한 예측오차 공분산(Process noise) P가 매우 크면 칼만이득은 '1'에 근접하고 측정치를 그대로 사용하게 되는데 이는 오차가 커져 오직 측정치에 의존함을 보입니다.

-> 이 부분에서 고민 할 수 있는 것은 결국 예측을 따를 것인지 측정을 따를 것인지를 결정해주는 것이 칼만필터이고 결국 예측이나 측정값의 경향성을 계속 쫒아간다는 것을 알 수 있다.

칼만 이득을 계산한 후에는 보정된 상태변수를 갱신한다.

만일 H=I(Identity matrix) 라면, 위 식은 다음 식과 같이 변형이 가능합니다.

칼만 이득인 K가 '1'에 가깝다는 것은 센서로부터 측정된 값을 전적으로 신뢰할 수 있슴을 의미합니다. 그러므로 상태변수로부터 예측된 

를 무시하고 100% 전적으로 신뢰할 수 있는 측정된 값 

를 상태변수로 간주합니다. 하지만 K가 '0'에 가깝다는 말은 센서로부터 측정된 상태변수 값을 전혀 믿지 못하고 이전 k-1 스텝의 상태변수 값을 사용하여 예측된 상태변수를 사용하겠다는 것입니다.

 

(3) 보정된 오차 공분산을 갱신합니다.

 

평균(mean, average), 표준편차(standard deviation)와 분산(variance)은 각 데이터가 평균을 중심으로 얼마나 퍼져있는가를 나타내는 척도입니다. 평균은 

, 분산과 표준편차 각각 

, 

로 나타내면 다음과 같습니다. 또한 공분산(covariance)은 2개의 변수간에 상관관계를 나타내는 것으로, Cov로 표시합니다. 단, 

는 데이터의 갯수입니다.

 

 

공분산이 '0'보다 크면 x가 증가할때 y도 증가하고 '0'보다 작으면 x가 증가할때 y는 감소하는 경향을 가집니다. 만일 두변수가 아무 상관없이 흩어져 있으면 즉, 독립적이라면 '0'에 근접하게 된다는 것입니다. 열벡터를 갖는 공분산 행렬로 나타내면 다음과 같습니다.

 

 

공분산의 a,b가 상수라면 다음의 법칙이 성립합니다.

 

 

전술한 바와 같이 보정된 오차 공분산은 다음과 같이 구할 수 있습니다.

 

 

그리고 'Time Update'의 (1)단계로 되돌아 갑니다.

 

결국 칼만 필터는 센서를 동반한 선형시스템에서 비행역학(Flight Dynamics)을 이용해 예측오차(P)와 측정잡음(R)의 신뢰도를 공분산을 이용하여 다음 상태의 최적의 통계적 값을 결정하는 알고리즘으로 반복할수록 오차는 점점 수렴하게 됩니다. 게다가 이전의 측정값 등의 데이터를 저장하는 것이 아닌 현 상태의 평균과 같은 통계량만을 저장함으로서 계산량과 저장 장소를 최소화 한 방법이라 하겠습니다.

 

 



참고: https://sharehobby.tistory.com/entry/칼만-필터Kalman-filter1 [Drone's DIYer]