27.6.2. 최적 인스턴스 평가 알고리즘 (EKF2Selector)
본 소절에서는 다중 인스턴스(Multi-Instance)로 구동되는 여러 개의 확장 칼만 필터(EKF) 객체 중, 비행 제어기(Flight Controller)에 최적의 상태 추정치(State Estimate)를 공급할 단 하나의 주(Primary) 인스턴스를 선출하는 핵심 모듈인 EKF2Selector의 논리 구조와 평가 알고리즘을 분석한다.
1. 다중 인스턴스 환경에서의 융합 모호성(Ambiguity) 해결
PX4-Autopilot 아키텍처 내에서 EKF2 래퍼 모듈이 n개의 EKF 인스턴스를 병렬로 구동할 때, 각 인스턴스는 자신이 할당받은 고유한 하드웨어 센서 조합(예: IMU 0 + MAG 1 + GPS 0)을 바탕으로 독자적인 기체 상태(위치, 속도, 자세) 벡터를 산출한다. 하지만 물리적으로 단일한 개체인 무인항공기(UAV)의 자세 제어기(Attitude Controller)와 위치 제어기(Position Controller)는 비행 안정성을 위해 오직 하나의 결정론적(Deterministic) 피드백 입력을 요구한다.
이러한 상태 추정치 간의 융합 모호성을 해결하기 위해 도입된 컴포넌트가 바로 EKF2Selector 모듈(설계 위키 및 코드: src/modules/ekf2/EKF2Selector.cpp)이다. 경쟁 프레임워크인 Ardupilot의 EKF3 코어 선택 로직과 유사한 다수결(Voter) 철학을 공유하지만, PX4의 EKF2Selector는 단순히 하드웨어의 생사(Alive/Dead) 여부나 타임아웃을 판별하는 것을 넘어, 센서 퓨전 단계에서 산출되는 ‘혁신(Innovation)’ 지표를 기반으로 동작하는 고도화된 소프트웨어 연속 평가 시스템(Continuous Evaluation System)이라는 점에 구조적 의의가 있다.
graph TD
subgraph EKF Instances Array
Inst0[Instance 0\nState & Health]
Inst1[Instance 1\nState & Health]
Inst2[Instance 2\nState & Health]
end
subgraph EKF2Selector Module
ScoreCalc[Health Score Calculation\n(Test Ratios Validation)]
Rank[Real-time Ranking Logic]
PrimarySelect[Primary Instance Designation]
end
Inst0 -->|Test Ratios & Validation| ScoreCalc
Inst1 -->|Test Ratios & Validation| ScoreCalc
Inst2 -->|Test Ratios & Validation| ScoreCalc
ScoreCalc --> Rank
Rank --> PrimarySelect
PrimarySelect -->|vehicle_odometry\nvehicle_local_position| Controller[Attitude & Position Controllers]
2. 평가 지표(Evaluation Metrics) 및 데이터 흐름 아키텍처
EKF2Selector 모듈은 개별 EKF 코어 인스턴스들이 내부 연산 과정에서 도출한 진단 메타데이터(Diagnostic Metadata)를 uORB 메시징 또는 스레드 내 메모리 참조를 통해 주기적으로 획득하여 각 인스턴스의 건강 상태(Health Status)를 평가한다. 평가의 가장 중요한 정량적 지표는 다음과 같은 ‘테스트 비율(Test Ratio)’ 계열의 데이터이다.
vel_pos_test_ratio: 유효한 GPS 또는 광학 흐름(Optical Flow) 계층으로부터 입력된 위치/속도 관측치(Observation)와 필터의 선험적 모델 예측치(A Priori Prediction) 간의 수학적 오차(Innovation)가 이론적 한계 공분산을 초과하는 비율.mag_test_ratio: 지자기 센서로부터 유입된 3차원 자력 벡터 관측치와 시스템 내부의 지구 자기장 모델 간의 불일치 비율. 지자기 교란 요인이나 기체 탑재 장비에 의한 전자기장 간섭(EMI)을 즉각적으로 감지하는 핵심 지표.hgt_test_ratio: 기압계나 레이저 고도계(LiDAR)로부터의 고도 측정 잔차(Residual) 비율.
각 인스턴스의 상태 공간 모델(State Space Model) 연산은 상기 지표들이 임계값(Threshold, 일반적으로 1.0)을 넘지 않도록 최적화되어야 하며, 이를 지속적으로 달성하는 인스턴스만이 수학적 정합성을 가진 제어 소스로 인정받는다.
3. 지속적 모니터링 및 분산 페널티(Variance Penalty) 산술식
EKF2Selector의 상태 평가 알고리즘은 단발적인 글리치(Glitch)성 센서 화이트 노이즈나 일시적 충격에 과민 반응하여 주(Primary) 필터를 빈번하게 교체(Switching)하는 채터링(Chattering) 현상을 엄격히 방지하도록 설계되어 있다.
이를 위해 셀렉터 로직은 순간적인 오차 비율을 독립 매개변수로 단순 신뢰하지 않고, 오차가 지속되는 시간과 그 누적 크기를 연산하는 분산 페널티 산술식(Variance Penalty Calculus) 을 적용한다. 예를 들어 특정 인스턴스의 vel_pos_test_ratio가 1프레임 동안 급증하더라도, 누적된 건강 점수(Health Score)가 전환 임계치 수위 아래로 즉각 하락하지 않는다. 대신 해당 초과 비율이 일정 시간(\Delta t) 이상 일관되게 지속되어 누적 페널티가 필터 교체를 위한 임계 밴드(Hysteresis Band)를 관통할 때 시스템은 비로소 해당 인스턴스의 지위 강등(Demotion) 및 새로운 권한 이양(Handover)을 승인한다.
이와 같은 히스테리시스 루프(Hysteresis Loop) 기반의 판단 알고리즘은 다중 에이전트 군집 비행(Swarm) 환경이나 시각 관성 주행 거리계(Visual Inertial Odometry, VIO)가 혼합된 복잡한 동적 환경에서, 비행 제어기가 무의미하게 EKF 코어를 스와핑하며 발생시키는 제어 연속성 단절을 예방하는 필수적인 항법 안전 기제로 작동한다.
요약하자면, EKF2Selector는 n개의 EKF가 그려내는 다수 센서 기반의 다중 상태 공간 속에서 비행 제어기가 흔들림 없이 가장 수학적 정합성이 높은 데이터 궤적(Primary State)만을 추종하도록 구속하는 지능화된 추정 스티어링(Steering) 알고리즘이라 정의할 수 있다.