27.1.1.4. 관측 신뢰도에 따른 최적 칼만 게인(Kalman Gain) 산출 알고리즘
혁신(Innovation)과 혁신 공분산이 도출되었다면, 이제 EKF 알고리즘의 화룡점정이라 할 수 있는 칼만 게인(Kalman Gain, K) 을 산출할 차례다. 제어 공학에서 칼만 필터가 ’최적(Optimal) 필터’라고 불리는 이유는 바로 이 칼만 게인이 수학적으로 오차의 분산(Variance)을 최소화하도록 엄밀하게 유도되었기 때문이다.
PX4 ECL 펌웨어 내에서 이 게인 행렬을 도출하는 과정은 센서 데이터와 물리 모델 간의 ’보이지 않는 수학적 신뢰도 투쟁’을 숫자로 빚어내는 아키텍처의 핵심이다.
1. 칼만 게인의 수학적 정의와 텐션(Tension)
이산 시간 EKF 보정 단계에서 칼만 게인 행렬 K_{k} 는 다음과 같이 산출된다. 앞서 계산했던 혁신 공분산 행렬(S_{k} = H_{k} P_{k}^{-} H_{k}^{T} + R_{k})이 여기서 분모의 역할을 하며 역행렬(Inverse) 형태로 들어간다.
K_{k} = P_{k}^{-} H_{k}^{T} (H_{k} P_{k}^{-} H_{k}^{T} + R_{k})^{-1} = P_{k}^{-} H_{k}^{T} S_{k}^{-1}
이 공식은 언뜻 보기에 매우 복잡한 행렬 대수학 같지만, 사실 직관적인 ‘가중치 시소(Seesaw)’ 원리를 담고 있다. 이 시소의 양 끝에는 P_{k}^{-}(나의 예측 불확실성)와 R_{k}(센서의 불확실성)가 놓여 있다.
1.1 예측을 불신하고 센서를 맹신하는 경우 (High P, Low R)
만약 오랫동안 GPS가 끊겨서 기체가 IMU만으로 버티고 있었다면, 오차 공분산 행렬 P_{k}^{-}는 풍선처럼 팽창해 있을 것이다. 반면 방금 수신된 센서의 하드웨어 스펙 노이즈 R_{k}가 매우 작다면, 분자인 P가 우세해져 결과적으로 칼만 게인 K의 값은 커지게(=1에 가까워지게) 된다.
이 경우 EKF 시스템은 자신의 예측을 버리고 외부 센서가 보내온 측정값을 거의 있는 그대로(100%에 가깝게) 수용하여 기체의 위치를 강제로 이동시킨다.
1.2 센서를 불신하고 예측을 맹신하는 경우 (Low P, High R)
반대로 IMU와 물리 모델의 예측 정확도(P_{k}^{-})가 매우 훌륭하고 안정적인데 반해, 외부 센서(예: 지자기 센서) 주변에 철골 구조물이 있어 측정 노이즈인 R_{k} 행렬의 값이 크게 뛰었다고 가정하자. 이 경우 공식의 분모(S_k)가 압도적으로 커지므로 칼만 게인 K의 값은 작아지게(=0에 가까워지게) 된다.
이때 EKF는 들어온 외부 센서의 혁신(오차)을 묵살해버리고, 자신이 추정해 온 동역학 궤도(\hat{x}_{k}^{-})를 꿋꿋하게 밀어붙인다.
2. PX4 ECL 소스 코드 내의 게인(Gain) 구현
ECL 라이브러리에서 칼만 게인의 산출은 src/lib/ecl/EKF/ 경로 하위의 융합(Fusion) 전담 파일들(예: vel_pos_fusion.cpp, mag_fusion.cpp) 안에서 측정값 융합이 일어나기 직전에 개별적으로 계산된다. 특히 식에 포함된 역행렬(S_k^{-1}) 연산은 마이크로컨트롤러(MCU)에 극심한 연산 부하를 주기 때문에, PX4는 가급적 스칼라 역분수 변환(Sequential Processing) 기법을 활용하여 이 행렬 연산을 쪼개어 처리한다.
// 위치/속도 융합 시 칼만 게인(K) 계산 아키텍처 예시 (의사코드)
// 1. 관측 야코비안(H)과 공분산(P)의 곱 연산
Vector24f P_H_trans;
for (int i = 0; i < 24; i++) {
P_H_trans(i) = P(i, index) * H(index);
}
// 2. 혁신 공분산(S)의 역수 취하기 (스칼라 분할 처리로 행렬 역행렬 우회)
float S_inverse = 1.0f / (innovation_variance); // innovation_variance = H*P*H^T + R
// 3. 최종 칼만 게인(K) 도출
Vector24f K_gain = P_H_trans * S_inverse;
이렇게 산출된 K_gain은 24x1 형태의 세로 벡터(또는 센서 차원에 따른 행렬)로 존재하며, 24개의 기체 상태 변수 각각에 대해 이번 혁신(센서 오차)을 얼만큼의 비율로 나누어 반영할지 결정하는 절대적인 지휘봉 역할을 한다.
3. 요약: 파라미터(Parameter)와의 직결성
칼만 게인의 수학 이론은 완벽하지만, 필드 비행에서 드론이 요동치는 이유는 바로 이 식을 채우는 기본 상수들(Q 행렬과 R 행렬)이 기체 하드웨어의 물리적 현실과 어긋나게 세팅되어 있기 때문이다.
조종사가 QGroundControl을 열고 EKF2_GPS_V_NOISE (GPS 속도 노이즈)나 EKF2_GYR_NOISE (자이로스코프 노이즈) 등의 파라미터 숫자를 변경하는 행위는, 궁극적으로 이 칼만 게인 방정식의 R_k 와 P_k 팽창률(Q_k)을 직접 건드려 필터의 성향(센서를 믿을지, IMU를 믿을지)을 조율하는 고도의 수학적 튜닝(Tuning) 과정인 것이다. 따라서 EKF 파라미터 튜닝의 근본 원리를 깨우치기 위해서는 이 칼만 게인 수식의 분모-분자 역학 관계를 머릿속에 투영할 수 있어야 한다.