13.6.2.1.1. EKF2 측정치 혁신(Innovation) 벡터 및 혁신 분산(Innovation Variance)의 수학적 해석: 위치/속도 거부(Rejection) 임계값 돌파 조건 추적

13.6.2.1.1. EKF2 측정치 혁신(Innovation) 벡터 및 혁신 분산(Innovation Variance)의 수학적 해석: 위치/속도 거부(Rejection) 임계값 돌파 조건 추적

PX4-Autopilot의 확장 칼만 필터(EKF2) 아키텍처 내에서, 외부 보조 센서(예: RTK GPS, Optical Flow, VIO)가 제공하는 새로운 측정 데이터가 융합 시스템 안으로 무사히 편입될지, 아니면 거짓 데이터(Outlier)로 판별되어 폐기될지를 결정하는 가장 권위 있는 수학적 관문이 바로 **혁신 벡터(Innovation Vector)**와 **혁신 분산(Innovation Variance)**의 가설 검정(Hypothesis Testing) 로직이다.

ULog 데이터에서 ekf_gps_innovation이나 estimator_innovation_variances 같은 UORB 토픽 값들이 요동치는 현상을 진정한 공학적 레벨에서 해석하려면, 이들이 의미하는 바를 수학적 렌즈를 통해 해부해야만 한다.

0.1 혁신(Innovation)의 수학적 정의

시간 k에서 EKF2가 관성 항법(INS) 기저 상태 방정식과 과거의 데이터를 바탕으로, 센서 z가 어떤 값을 보고할 것인지 사전 예측(A Priori Prediction)한 값을 \hat{z}_k라 하자.
이때 센서에서 실제 들어온 측정치를 z_k라 하면, 혁신 벡터(Innovation Vector) y_k는 다음과 같이 단순한 수학적 잔차(Residual)로 정의된다.

y_k = z_k - \hat{z}_k

즉, “기대했던 값(\hat{z}_k)과 실제 측정된 값(z_k)의 물리적 괴리량“이다. 위치 혁신(Position Innovation)은 미터(m) 단위를, 속도 혁신(Velocity Innovation)은 초당 미터(m/s) 단위를 가진다. 혁신 값이 0에 가깝다는 것은 EKF2의 예측 모델이 현재 센서와 완벽히 일치하고 있음을 뜻한다.

혁신 분산(Innovation Variance, S_k)과 신뢰도 한계

단순히 잔차(y_k)가 크다고 해서 EKF2가 함부로 센서를 버릴 수는 없다. 기체가 급격한 기동을 할 때는 일시적으로 잔차가 클 수밖에 없기 때문이다. 따라서 EKF2는 자신의 현재 상태 불확실성(State Covariance, P_k)과 센서 자체의 고유 노이즈(Measurement Noise Covariance, R)를 결합하여 혁신 분산(Innovation Variance) S_k를 산출한다.

S_k = H_k P_k H_k^T + R

(여기서 H_k는 관측 행렬(Observation Matrix)이다.)
혁신 분산 S_k는 “이 예측이 얼마나 틀릴 수 있는지“를 수학적으로 허용하는 너그러움의 척도이다.

0.2 게이트 테스트(Gate Testing)와 센서 거부(Rejection)

이 두 물리량을 종합하여 센서 데이터의 운명을 결정하는 통계적 테스트가 바로 정규화된 혁신 제곱(Normalized Innovation Squared, NIS) 기반의 게이트 검사이다.

\text{Test Ratio} = \frac{y_k^T S_k^{-1} y_k}{G^2}

여기서 게이트 계수(Gate Coefficient) G는 PX4 파라미터 튜닝을 통해 설정된다 (예: GPS 위치에 대해서는 EKF2_GPS_P_GATE).

  • Test Ratio < 1.0: 혁신(y_k)이 분산(S_k)과 게이트 한계(G) 내에 깔끔하게 들어온다. 데이터가 승인(Accepted)되고 칼만 이득(Kalman Gain) 연산으로 넘어간다.
  • Test Ratio > 1.0: 실제 측정치와 모델 예측 간에 회복할 수 없는 수학적 위배(Violation)가 발생했다. 센서 값은 철저히 거부(Rejected)되며 estimator_status 토픽의 innovation_check_flags 비트를 트리거 시킨다.

ULog 파일의 파열(Rupture) 시그널 역추적 설계

PlotJuggler 등을 이용해 ULog 데이터를 분석할 때, ekf_gps_innovation의 X축 속도 혁신 변수가 급격히 커지더라도, 바로 필터가 발산하는 것은 아니다. 이때 반드시 estimator_innovation_variances를 겹쳐 보아야 한다.

  1. RTK Fix 상실 시: 측정 노이즈 R 파라미터가 급격히 증가하도록 코드가 처리된다(정확도 하락). 이에 따라 혁신 분산 S_k가 커져, z_k가 튀더라도 어느 정도 융합을 허용하려는(Test Ratio를 낮추려는) 쿠션 효과가 지연(Delay) 작용을 한다.
  2. 임계값 돌파: 그러다 마침내 예측 모델 속도 변화와 GPS 리포트 속도(z_k) 간 차이가 거대해져 \text{Test Ratio} 분자 값이 폭증하면, 그래프에서 \text{Test Ratio} = 1.0 지정 실선을 칼로 자르듯 돌파(Breakthrough)해 버린다.

이 지점을 찾아내는 것이 바로 “기체가 통제 불능(Flyaway) 상태에 빠진 초 단위의 원흉 지점“을 수학적으로 단죄하는 과정이다. 이를 통해 개발자는 단순한 외란 탓인지, 센서 고장인지, EKF 파라미터(EKF2_GPS_V_GATE 등) 튜닝 실패인지 명확히 가려낼 수 있다.