13.4.2.1.1. 주/부 수신기 간의 보고된 정확도(s-variance, p-variance) 기반 역분산 가중 평균(Inverse-variance Weighting) 산출 수학적 모델

13.4.2.1.1. 주/부 수신기 간의 보고된 정확도(s-variance, p-variance) 기반 역분산 가중 평균(Inverse-variance Weighting) 산출 수학적 모델

PX4-Autopilot의 다중 GPS 블렌딩(Blending) 아키텍처는 단순히 두 GPS 좌표의 산술 평균(Arithmetic Mean, 즉 \frac{A+B}{2})을 구하는 1차원적인 방식이 결코 아니다. 한쪽 수신기는 고가의 하이엔드 RTK 칩셋(\pm 0.01\text{m} 오차)이고 다른 한쪽은 저렴한 백업 스탠다드 칩셋(\pm 2.0\text{m} 오차)일 수 있으며, 하늘의 절반이 건물에 가려진 상황에서는 두 수신기 간의 수신 품질(Quality)이 극단적으로 갈리기 때문이다.

이러한 비대칭적 신뢰도 환경에서 최적의 추정치(Optimal Estimate)를 구하기 위해 PX4 sensors 모듈(vehicle_gps_position.cpp)은 통계학의 근간인 역분산 가중 평균(Inverse-variance Weighting) 수학적 모델을 채택하고 있다. 본 절에서는 GPS 모듈이 실시간으로 쏟아내는 오차 분산 매개변수(p-variance, s-variance)가 C++ 내부에서 어떠한 가중치 방정식으로 치환되어 최종 블렌딩 출력물(Blended Output)을 성형하는지 이론적으로 고찰한다.

1. 수신기가 보고하는 불확실성 매개변수(Reported Variance)의 이해

최신 u-blox 칩셋이나 Trimble 수신기가 MAVLink(혹은 UBX/uORB)를 통해 FC에 넘겨주는 데이터는 단지 위경도 좌표뿐만이 아니다. 칼만 필터의 구동을 돕기 위해, 수신기 내부에 내장된 자체 필터가 연산해 낸 ‘자기 성찰적 불확실성(Self-assessed Uncertainty)’ 값을 동반한다.

  • eph (Estimated Position Horizontal accuracy): 수평 위치 오차의 표준편차(\sigma_{pos}).
  • s_variance_m_s (Speed Variance): 3D 속도 오차의 분산(\sigma_{vel}^2).

역분산 가중 평균 이론을 적용하기 위해서는 이 ‘표준편차(\sigma)’ 값들을 제곱하여 순수한 ‘분산(Variance, V 혹은 \sigma^2)’ 형태의 매개변수로 치환해야 한다.

  • GPS 1의 위치 분산: V_{1} = (eph_1)^2
  • GPS 2의 위치 분산: V_{2} = (eph_2)^2

2. 역분산 가중 평균(Inverse-variance Weighting)의 수학적 유도

통계학적으로 서로 독립적인 두 측정치 x_1x_2 (각각의 분산이 V_1, V_2)가 주어졌을 때, 이 둘을 결합하여 가장 오차 분산이 작은(최소 분산, Minimum Variance) 새로운 추정치 \hat{x} 를 얻기 위해서는 분산이 작은(정확한) 데이터에 더 큰 가중치를, 분산이 큰(부정확한) 데이터에 더 작은 가중치를 부여해야 한다.

가중치 W_1W_2 (W_1 + W_2 = 1)를 산출하는 최적의 수학적 비율은 바로 분산의 역수(1/V)를 전체 역수의 합으로 나눈 형태가 된다.

2.1 가중치 방정식 (Weighting Equations)

  • GPS 1의 가중치 (W_1):
    W_1 = \frac{\frac{1}{V_1}}{\frac{1}{V_1} + \frac{1}{V_2}} = \frac{V_2}{V_1 + V_2}
  • GPS 2의 가중치 (W_2):
    W_2 = \frac{\frac{1}{V_2}}{\frac{1}{V_1} + \frac{1}{V_2}} = \frac{V_1}{V_1 + V_2}

2.2 역분산 가중 평균의 C++ 적용

PX4 펌웨어 vehicle_gps_position.cpp 소스 코드를 열람해 보면, 위 수학 공식이 한 치의 오차 없이 float 연산으로 구현되어 있음을 확인할 수 있다.

// 가상의 C++ 로직 (역분산 가중 평균)
float var_1 = gps1.eph * gps1.eph; // V1
float var_2 = gps2.eph * gps2.eph; // V2

// 분모가 0이 되는 것을 방지하기 위한 안전장치 추가 수식
float sum_var = var_1 + var_2; 
if (sum_var > 0.0001f) {
    float weight_1 = var_2 / sum_var; // 공식 그대로 도출
    float weight_2 = var_1 / sum_var;
}

수식을 주의 깊게 보면 크로스 오버 기법이 녹아있다. W_1 을 구할 때 분자는 V_2 이고, W_2 를 구할 때 분자는 V_1 이다.
즉, “너의 오차가 클수록, 나의 가중치가 높아진다” 는 철저한 상대 평가 로직이 성립하는 것이다.

3. 혼합 좌표(Blended Coordinate) 및 혼합 분산(Blended Variance)의 연산

가중치 W_1, W_2 가 정해지면, 최종 혼합 위치 좌표(Lat_{blend}, Lon_{blend})는 단순한 선형 결합(Linear Combination)으로 도출된다.
Lat_{blend} = W_1 \cdot Lat_1 + W_2 \cdot Lat_2

여기서 공학적으로 더욱 놀라운 사실은, 이렇게 섞여서 만들어진 ‘비빔밥(Blended GPS)’ 좌표의 불확실성(새로운 분산 V_{blend})이 계산된다는 점이다.

\frac{1}{V_{blend}} = \frac{1}{V_1} + \frac{1}{V_2}
이를 V_{blend} 에 대해 정리하면:
V_{blend} = \frac{V_1 \cdot V_2}{V_1 + V_2}

이 공식이 갖는 물리학적 의미는 엄청나다. 두 GPS 중 가장 성능이 좋은 GPS(예를 들어 V_1 이 매우 작음)보다도, 두 개를 역분산 규칙으로 혼합한 결과물(V_{blend})의 분산이 수학적으로 항상 더 작아진다는 점이다. 즉 부분의 합이 전체를 뛰어넘는 센서 융합의 시너지가 증명되는 지점이다.

결론적으로 PX4의 듀얼 GPS 블렌딩 로직은 우격다짐식 알고리즘이 아니다. GPS 벤더사들이 던져주는 정직하지만 서툰 오차율 표(eph, epv)를 주워 담아, 뉴턴 역학과 통계학의 근간인 역분산(Inverse-variance) 수학적 맷돌로 미세하게 갈아낸 뒤 가장 단단하고 변형률이 적은 단 하나의 좌표 코어(Core Coordinate)를 압출해 내는 극한의 확률론적 최적화 공정인 것이다.