27.6. 다중 인스턴스(Multi-Instance) EKF 및 페일오버(Failover) 아키텍처

27.6. 다중 인스턴스(Multi-Instance) EKF 및 페일오버(Failover) 아키텍처

본 장에서는 PX4-Autopilot(펌웨어 버전 v1.14 기준)의 핵심 추정기(Estimator) 아키텍처인 다중 인스턴스 확장 칼만 필터(Multi-Instance Extended Kalman Filter, EKF2)의 논리적 구조와 동적 페일오버(Failover) 메커니즘을 심도 있게 분석한다. 무인항공기(UAV)의 비행 안정성은 센서 데이터의 무결성에 직결되며, 이를 위해 PX4는 소프트웨어 레벨에서 센서 이중화 및 삼중화에 대응하는 다중 인스턴스 아키텍처를 도입하였다.

1. 다중 인스턴스 EKF 아키텍처의 논리적 구조

현대의 상용 비행 제어기(Flight Controller, FC), 예를 들어 Pixhawk 6C와 같은 하드웨어는 신뢰성 향상을 위해 다수의 관성 측정 장치(Inertial Measurement Unit, IMU)와 지자기 센서(Magnetometer)를 중복 탑재한다. 전통적인 단일 EKF 아키텍처에서 이러한 다중 센서 데이터를 단순 평균화(Averaging)하거나 융합할 경우, 단일 센서의 하드웨어 결함이 전체 공분산 행렬을 왜곡시키는 한계를 지닌다. 이를 극복하기 위해 PX4는 독립적인 여러 개의 EKF 객체(Instance)를 병렬로 생성하는 접근 방식을 채택하였다.

Ardupilot의 확장 칼만 필터(EKF3) 역시 다중 코어를 지원하지만, PX4의 EKF2는 파라미터 EKF2_MULTI_IMU 설정에 따라 기본적으로 감지된 IMU 단위로 인스턴스를 동적으로 할당하고 독립적인 스레드 큐(Work Queue)에서 연산을 수행하는 구조를 갖는다. 각각의 EKF 인스턴스는 철저히 격리된 상태 공간(State Space) 모델을 유지하므로, 한 인스턴스의 혁신(Innovation) 기반 발산이 다른 인스턴스에 영향을 미치지 않는다.

graph TD
    subgraph Sensors [Hardware Sensor Layer]
        IMU0[IMU 0]
        IMU1[IMU 1]
        IMU2[IMU 2]
        MAG0[Mag 0]
        MAG1[Mag 1]
        GPS[GPS]
    end

    subgraph EKF_Instances [EKF2 Multi-Instance Layer]
        Inst0[EKF Instance 0\n(IMU0 + MAG0 + GPS)]
        Inst1[EKF Instance 1\n(IMU1 + MAG1 + GPS)]
        Inst2[EKF Instance 2\n(IMU2 + MAG0 + GPS)]
    end

    subgraph Selector [EKF2 Selector]
        Eval[Health Evaluation & Test Ratios]
        Switch[Primary Instance Switch Logic]
    end

    IMU0 --> Inst0
    MAG0 --> Inst0
    GPS --> Inst0
    
    IMU1 --> Inst1
    MAG1 --> Inst1
    GPS --> Inst1
    
    IMU2 --> Inst2
    MAG0 --> Inst2
    GPS --> Inst2

    Inst0 --> Eval
    Inst1 --> Eval
    Inst2 --> Eval
    Eval --> Switch
    Switch -->|Primary State & Covariance| Output[Attitude & Position Controller]

2. 센서 셀렉터(Sensor Selector) 및 평가 지표 산출

다중 인스턴스 EKF 아키텍처에서는 여러 인스턴스 중 현재 비행 제어기 및 위치 제어기(Position Controller)에 상태 변수를 공급할 단 하나의 주(Primary) 인스턴스를 결정해야 한다. 이 역할은 EKF2Selector (소스 코드: src/modules/ekf2/EKF2Selector.cpp) 모듈이 수행한다.
QGroundControl(버전 v4.3)의 MAVLink 인터페이스를 통해 모니터링 가능한 이 선택 프로세스는 혁신 분산(Innovation Variance) 기반의 테스트 비율(Test Ratios)을 핵심 평가 지표로 사용한다.

  • vel_test_ratio: 속도 잔차(Velocity Residual)에 대한 통계적 허용치
  • pos_test_ratio: 위치 잔차(Position Residual)에 대한 통계적 허용치
  • mag_test_ratio: 지자기 센서 방위각 불일치 허용치

각 인스턴스는 매 업데이트 주기마다 위 지표들의 누적 결함 점수(Health Score)를 계산하여 셀렉터에 보고한다. 점수가 특정 임계치를 초과할 경우, 셀렉터는 해당 인스턴스의 논리적 상태를 불량으로 판정하고, 차순위 인스턴스 중 가장 오류율이 낮은 인스턴스를 주 인스턴스로 승격(Switch)시킨다.

3. 페일오버 발생 시의 범프리스 트랜스퍼(Bumpless Transfer) 제어 기술

페일오버(Failover)가 발생하는 시점에 구(Old) 인스턴스와 신(New) 인스턴스 간 연산된 추정 고도(Z Position)나 위치 좌표, 요(Yaw) 각도가 수학적으로 완벽하게 일치할 수는 없다. 이 상태에서 즉각적인 제어 권한 전환이 이루어질 경우, 하위 제어기(PID Controller)에 급격한 오차 신호 입력(Step Input)이 발생하여 액추에이터 출력이 튀는 현상(Bump)이 유발된다. 자율 에이전트(Autonomous Agent)의 경로 추종 성능이나 ROS2 기반의 오프보드(Offboard) 정밀 제어에서는 치명적인 궤적 이탈을 발생시킬 수 있다.

이를 방지하고자 PX4는 전환 시점의 두 인스턴스 상태 변수 차이(\Delta x)를 오프셋(Offset)으로 산출하고 저장한다. 전환 직후 제어기에 전달되는 상태 값은 원본 출력에 이 오프셋을 결합한 값이며, 이후 시간의 흐름에 따라 오프셋을 선형적 또는 지수 함수적으로 감쇠(Decay)시켜 최종적으로 0에 수렴하게 한다. 이러한 메커니즘을 제어공학에서는 범프리스 트랜스퍼(Bumpless Transfer)라 정의한다. 지상 관제 시스템(Ground Control Station, GCS) 개발 시에는 ESTIMATOR_STATUS MAVLink 메시지를 분석하여 이러한 스위칭 이벤트 발생 빈도를 모니터링하는 것이 기체 진단 기술의 핵심이다.

4. ROS2와 MAVLink를 통한 상태 진단 연동 및 관제망 통합

다중 인스턴스의 상태 및 페일오버 이벤트는 uORB 메시징 구조를 거쳐 MAVLink 프로토콜(ESTIMATOR_STATUS, SENSOR_HEALTH_FLAGS)로 변환되어 QGroundControl로 전송된다. ROS2 환경(uXRCE-DDS 미들웨어 활용)에서는 /fmu/out/estimator_selector_status 토픽을 통해 마이크로초(Microsecond) 단위의 셀렉터 상태 데이터를 실시간으로 구독(Subscribe)할 수 있다.

기존 Ardupilot 기반 시스템이 주로 Mission Planner에서의 정적인 텍스트 기반 상태 알림에 의존했던 반면, PX4는 ROS2와의 깊은 통합을 통해 다중 에이전트(Swarm) 관제 시 개별 개체의 센서 신뢰도(Confidence Level) 저하를 트리거(Trigger)로 하여 백업 에이전트를 교체 투입하는 동적 역할 재할당 등의 고급 자율 제어 기술을 구현할 수 있는 기반을 제공한다. 관련 아키텍처 설계와 이론적 기저에 대해서는 Paul Riseborough 등의 “A Modular Architecture for Fault Tolerant State Estimation in Unmanned Aerial Vehicles” 와 같은 문헌의 논리적 확장을 따른다.

이와 같이 PX4-Autopilot의 다중 인스턴스 EKF 아키텍처는 하드웨어 센서의 물리적 한계를 소프트웨어적 격리와 지능적인 셀렉터 로직으로 극복하는 고도화된 결함 감내 체계를 갖추고 있다.