13.6.2.1. `estimator_status_s` 토픽 분석

13.6.2.1. estimator_status_s 토픽 분석

PX4-Autopilot의 확장 칼만 필터(Extended Kalman Filter, EKF2) 아키텍처 내부에서 계산되는 모든 확률론적 안녕 상태(Health Status)의 정수는 바로 estimator_status_s uORB 토픽으로 매 틱(Tick)마다 발행(Publish)된다. 이 토픽은 단순히 센서가 “정상인가 비정상인가“를 이진(Binary) 논리로 알려주는 것을 넘어서, 현재 융합(Fusion) 중인 관성 항법(INS) 기저 데이터와 각 보조 센서 간의 통계적 이질성을 정밀하게 모니터링하기 위한 통합 대시보드 역할을 수행한다.

ULog 데이터에서 estimator_status 메시지를 Flight Review나 PlotJuggler 관점에서 파헤치는 작업은, 원인 모를 기체 추락(Crash)이나 위치 흐름(Position Drift) 현상의 근본 근원(Root Cause)을 EKF 수준에서 색출하는 가장 확실한 방법이다.

0.1 estimator_status_s 메시지의 중추적 파라미터(Core Parameters)

EKF2 모듈(src/modules/ekf2)이 생성하는 이 토픽 내에는 필터의 내부 헬스 상태를 진단하기 위한 다양한 비트마스크(Bitmask)와 정량적 지표들이 포함되어 있다. 가장 핵심적으로 살펴봐야 할 필드(Fields)는 다음과 같다.

  1. control_mode_flags (제어 모드 비트마스크):
    현재 필터가 어떤 센서의 융합을 활성화(Activate)하고 통제권(Control)을 쥐고 있는지를 나타내는 32비트 마스크이다. 예를 들어, (control_mode_flags & (1 << 8))이 True이면 GPS(GNSS) 위치 데이터가 성공적으로 융합되고 있음을 의미한다. 비행 도중 특정 비트가 갑자기 0으로 떨어진다면(Drop Out), 해당 센서 데이터가 EKF 임계값(Threshold)을 초과하여 거부(Reject)당했다는 결정적 증거가 된다.
  2. filter_fault_flags (필터 결함 비트마스크):
    EKF가 계산하는 시스템 상태의 공분산 행렬(Covariance Matrix)이 물리적 허용 범위를 넘어서 발산(Divergence)하거나, 수학적으로 불건전(Ill-conditioned)해졌을 때 즉각 1로 켜지는 치명적인 경고등이다.
  3. innovation_check_flags (혁신 거부 비트마스크):
    새로 들어온 센서 측정치(Measurement)가 내부 모델의 예측치(Prediction)와 너무 크게 차이 나서 완전히 기각(Rejection)된 센서 항목들을 가리킨다.
  4. mag_test_ratio, vel_test_ratio, pos_test_ratio 등 (테스트 비율):
    이 비율 값들은 센서의 측정치가 EKF 예측 구간에서 얼마나 벗어나 있는지를 0.0 \sim 1.0 (또는 그 이상)의 비율로 가시화한다. 값이 1.0을 초과하게 되면, EKF2는 해당 측정치를 불량 데이터로 간주하고 상태 업데이트에서 배제(Reject)시켜버린다.

0.2 프로파일링 툴(Profiling Tool)을 이용한 분석 흐름도(Analysis Workflow)

다음은 QGroundControl 등을 통해 기록된 ULog 파일(.ulg)을 열고, GCS 백엔드의 분석기가 estimator_status_s 토픽의 이상 징후를 판별하는 논리 구조를 나타낸다.

graph TD;
    A[ULog 데이터 로드 및 파싱] --> B{estimator_status 토픽 추출}
    B --> C[control_mode_flags 검사]
    C --> D{비트 누락 발생?}
    D -- 예(Yes) --> E[해당 센서의 innovation_check_flags 조회]
    D -- 아니오(No) --> F[Test Ratio 모니터링]
    E --> G[Test Ratio가 1.0을 초과하여 Reject 발생 확인]
    G --> H[센서 원시 데이터 스파이크 유무 분석]
    F --> I{Test Ratio > 1.0 트리거?}
    I -- 예(Yes) --> G
    I -- 아니오(No) --> J[정상 융합 상태 (Health OK)]

0.3 ULog 분석 실무: 상태 추정 오류 추적

만약 멀티로터 기체가 자율 비행(Mission Flight) 도중 갑작스럽게 기수가 옆으로 틀어지며 이탈(Toilet Bowl Effect)을 일으켰다고 가정해 보자.
우선 PlotJuggler에서 estimator_status/innovation_check_flags를 플로팅(Plotting)한다. 플롯에서 자력계(Magnetometer) 거부를 뜻하는 비트가 활성화되었다면, 즉시 mag_test_ratio 그래프를 겹쳐 그린다. 이 비율이 서서히 상승하여 1.0 벽을 뚫고 지나간 시점이 바로 기체 제어 모듈이 잘못된 헤딩(Heading)에 속아 궤도 이탈을 시작한 시그널과 정확히 일치함을 확인할 수 있다.

이와 같이 estimator_status_s는 PX4 자율 비행의 중추 신경계인 EKF의 뇌 구조를 들여다볼 수 있는 창문이며, 단순 조종 실수(Pilot Error)와 오토파일럿 계산 오류를 명확하게 분리해 내는 법의학적 증거(Forensic Evidence)로 기능한다.