27.5.4.1. 기압계 온도 드리프트 보상 추정 로직
무인항공기의 기압계(Barometer)는 내부 MEMS 센서의 변형을 통해 대기압을 측정하지만, 이 센서의 치명적인 아킬레스건은 온도(Temperature) 에 매우 민감하다는 것이다. 기체가 시동을 걸고 비행 제어기(Pixhawk) 내부 CPU와 전원 모듈에서 열이 발생하기 시작하면, 기압계 보드의 온도가 상승하여 센서 다이(Die)가 미세하게 팽창한다. 이로 인해 기체는 이륙조차 하지 않았는데도 고도가 서서히 올라가거나 내려가는 것처럼 측정되는 온도 드리프트(Thermal Drift) 현상이 발생한다.
이 오차를 잡지 못하면 비행 후반부로 갈수록 자동 착륙 시 기체가 지면을 뚫고 들어가려 하거나 공중에 뜬 채 착륙을 종료해 버리는 참사가 발생한다. PX4-Autopilot의 EKF2는 이러한 하드웨어적 한계를 극복하기 위해 소프트웨어적인 온도 드리프트 동적 보상(Thermal Drift Compensation) 로직을 구현하였다. 본 절에서는 이 보상 수식이 어떻게 EKF의 상태 방정식과 상호 작용하는지 분석한다.
1. 기압계 오차의 분리: 정적 오차와 동적 오차
PX4 EKF2는 기압 고도의 영점 오차를 단순히 하나의 상수(Constant Bias)로 치부하지 않고, 물리적 성질에 따라 두 가지로 분리하여 추정한다.
- 정적 고도 바이어스 (Static Height Bias): EKF 상태 벡터의 22번 인덱스(h_{\text{bias}})로 할당되어 있다. 이는 이륙 지점의 해수면 기압이나 초기 캘리브레이션 미세 오차로 인해 발생하는 고정적인 오프셋이다. 비행 중 느리게 변동하는 대기압(날씨 변화)을 추적하는 데 쓰인다.
- 온도 드리프트 (Thermal Drift): EKF 상태 벡터 외부에서 별도의 보상 변수(State)로 관리된다. 기압계 센서 칩 내부에서 측정되는 온도 변화량(\Delta T)에 직접적으로 비례하는 오차 성분이다.
2. 온도 드리프트 보상 수식의 C++ 구현
온도 드리프트를 보상하기 위해 PX4는 비행 전(Pre-flight)과 비행 중(In-flight)에 온도 변화율을 학습하는 알고리즘을 가동한다. 이 로직은 src/lib/ecl/EKF/baro_fusion.cpp 와 관련 헬퍼(Helper) 함수들에 분산되어 있다.
2.1 EKF2 파라미터 기반 선형 보상
가장 직관적인 방법은 제조사나 사용자가 캘리브레이션 턴테이블에서 미리 측정해 둔 온도 계수(Temperature Coefficient) 파라미터를 적용하는 것이다.
// 개념적 보상 수식
// _params.baro_drift_pa_per_deg: 섭씨 1도당 기압 고도 변화량(m/degC)
// delta_temp: 부팅 시점 온도(또는 보정 기준 온도) 대비 현재 온도 변화량
float baro_temp_drift = _params.baro_drift_pa_per_deg * delta_temp;
// 원시 기압 고도에서 온도 드리프트 오차를 제거
float corrected_baro_alt = raw_baro_alt - baro_temp_drift;
이렇게 1차로 보정된 corrected_baro_alt 가 앞선 절(27.5.4)에서 설명한 관측 버퍼에 저장되고, 융합 파이프라인의 원천 데이터로 사용된다.
2.2 동적 학습과 추정 (Dynamic Estimation)
기체의 열역학적 환경은 계절이나 햇빛의 정도구조에 따라 매번 달라지므로 파라미터 상숫값만으로는 한계가 있다. 이를 위해 최신 PX4 EKF2는 자체적인 상태 추정기(Sub-estimator) 를 돌려 온도 계수를 실시간으로 학습한다.
- 시동 전 대기 상태 (Pre-flight): 기체가 지상에 고정(Landed)되어 있고 GPS나 VIO 고도가
0이라고 확신할 수 있는 상태에서 기체의 온도가 오르고 있다면, 이때 기압계가 지시하는 고도의 변화는 100% 온도 드리프트로 규정할 수 있다. EKF는 이 기울기를 계산하여 온도 계수(\alpha_{\text{temp}})를 암묵적으로 학습(Learning)한다. - GPS 고도와의 교차 검증 (Cross-validation): 비행 중(
in_air)에는 기압계 온도 변화가 실제 고도 상승 때문인지 센서 가열 때문인지 구분하기 어렵다. 이 구간에서는 3D 분산 GPS 고도(비록 오차는 크지만 장기적으로는 온도의 영향을 받지 않음)를 절대 기준으로 삼아, 기압 센서 온도(T)와 GPS 고도 간의 장기적인 상관관계(Low-pass Filter 활용)를 비교하여 드리프트 계수를 보정 유지한다.
3. 이중 고도계(Dual Barometer) 환경에서의 온도 보상
픽스호크 6X(Pixhawk 6X) 계열과 같은 최신 비행 제어기 보드에는 신뢰성 확보를 위해 서로 이격된 위치에 2개 이상의 기압계가 장착되어 있다. 두 센서는 보드 내 위치가 다르기 때문에 발열원(CPU, 전원부)과의 거리가 달라 온도 상승 곡선도 완전히 다르게 나타난다.
PX4 센서 파이프라인(Sensor Pipeline)은 단순히 두 기압계의 평균을 내는 것이 아니라, 각 센서 인스턴스(Instance)별로 독립적인 온도 보상기와 링 버퍼를 유지한다. EKF2는 이 중 Test Ratio(통계적 신뢰도)가 더 좋고 온도 변화 추방 능력이 우수한 기압계를 주 모듈(Primary)로 동적 선정하며(Fail-over), 필요 시 내부에서 2개의 예상 관측치(Predicted Measurement)를 동시에 관리한다.
4. 소결
기압계 센서 데이터 융합에서 온도 보상 로직의 존재 유무는 장시간 비행 기체(예: VTOL, 가솔린 헬리콥터, 농업용 대형 드론)의 자동 착륙 성공률을 결정짓는 핵심 지표다. PX4-Autopilot은 단순한 선형 계수 곱셈을 넘어, 이륙 전 대기 및 GPS 데이터와의 장기 상관 분석을 통해 온도에 의한 압력 센서의 물리적 한계를 집요하게 극복해 냈다.
기압계와 관련된 또 다른 난제는 드론이 이륙 혹은 착륙하기 직전, 프로펠러가 지면을 때리고 반사되는 바람이 동체 하부를 때려 기압이 급증하는 이른바 ’지면 효과(Ground Effect)’다. 다음 절에서는 혁신 검사(Innovation Test) 마저도 속여 넘기는 이 무서운 지면 효과를 PX4가 소프트웨어적으로 어떻게 모델링하고 회피하는지 분석한다.