30.6.2 위치 추정 상실(Navigation Loss) 시 추측 항법(Dead Reckoning) 타임아웃 임계치 평가 및 고도 유지(Altitude Hold) 강제 폴백(Fallback) 상태 전이

30.6.2 위치 추정 상실(Navigation Loss) 시 추측 항법(Dead Reckoning) 타임아웃 임계치 평가 및 고도 유지(Altitude Hold) 강제 폴백(Fallback) 상태 전이

무인항공기(UAS)가 완전 자동 비행(Mission, RTL, Position/Hold)을 지속하기 위해서는 3차원 전역 좌표(X, Y, Z)에 대한 확고한 위치 추정치(Global Position Estimate)가 반드시 요구된다. 그러나 도심지 빌딩 숲, 교량 하부, 혹은 강력한 전파 재밍(Jamming) 환경에 진입하면 EKF2(Extended Kalman Filter)가 의존하던 GPS 및 VIO(Visual Inertial Odometry) 신호가 일사불란하게 차단되어 **위치 추정 상실(Navigation Loss)**이라는 치명적 국면에 빠지게 된다.

본 장에서는 PX4-Autopilot이 위치를 상실한 직후 즉각적으로 추락하거나 폭주하지 않도록 시간적 유예를 제공하는 추측 항법(Dead Reckoning) 타임아웃 윈도우 메커니즘과, 이 골든 타임이 만료되었을 때 시스템을 어떻게 가장 덜 위험한 상태인 고도 유지(Altitude Hold) 모드로 강제 폴백(Fallback) 시키는지 그 다단계 Failsafe 상태 전이(State Transition) 로직을 심층 분석한다.

1. 위치 상실 감지 (Position Invalidity Detection)

커맨더(commander.cpp)와 EKF2 모듈은 통신하며 지속적으로 vehicle_local_position 토픽의 xy_valid 플래그를 감시한다.
단순히 GPS 위성 개수가 줄어들었다고 즉각 위치 상실 판정을 내리지는 않는다.

  1. Innovation Variance 초과: EKF2 내부에 구현된 혁신 프로세스 상에서 GPS나 비전 센서로부터 유입되는 측정값이 예측 물리 모델(관성 기반)과 심각하게 어긋나기 시작하면 센서 퓨전 가중치를 차단(Reject)한다.
  2. 센서 융합 타임아웃: 측정값 차단 상태가 일정 시간 누적되어 EKF2 위치 상태 공분산(Covariance Matrix)의 불확실성이 사용자 지정 임계치(COM_POS_FS_EPH, COM_POS_FS_EPV 파라미터 계열)를 초과하게 되면, 비로소 시스템은 글로벌 위치의 ’유효성(Invalid)’을 공식 선언한다.

2. 추측 항법 (Dead Reckoning) 타임아웃 임계치 평가

글로벌 위치(xy_valid = false)가 상실되었다고 곧바로 임무(Mission)를 포기하는 것은 너무 성급한 결정이다. 터널을 지나가거나 잠시 빌딩 그림자에 가려진 것일 수 있기 때문이다.

PX4 시스템은 이 짧은 눈먼 순간을 돌파하기 위해 추측 항법(Dead Reckoning) 골든 타임을 허용한다. 파라미터 COM_POS_FS_DELAY (기본값 통상 1~3초)가 이 유예 시간을 관장한다.

  • 관성 센서 기반 단기 추종: 고주파수(High-rate)의 IMU 가속도계 데이터만을 이중 적분(\iint a \cdot dt)하여, 위치 상실 직전의 속도 관성을 유지한 채 남은 궤적을 맹목적으로 추종비행한다. (VIO 등 Optical Flow 조차 없는 절대적 Blind 상태)
  • 에러 누적 발산의 한계: IMU 센서 특성상 잡음 적분에 의한 드리프트(Drift) 오차가 기하급수적으로 폭증하므로, 이 추측 항법의 신뢰도는 수 초를 넘기지 못한다. 따라서 COM_POS_FS_DELAY에 설정된 초(seconds) 카운트다운 타이머가 도달할 때까지 센서망(GPS/VIO 등)이 복구되지 않으면, 시스템은 더 이상의 항법 유지를 최종적으로 포기한다.
graph TD
    A[자동 비행 중 GPS/VIO 신호 차단] --> B[EKF2: Innovation 한계 도달 및 xy_valid = False 선언]
    B --> C{COM_POS_FS_DELAY <br>타이머 시작 (골든 타임)}
    C --> D[IMU 적분 기반 추측 항법(Dead Reckoning) 유지]
    D --> E{타이머 만료 전<br>위치 센서 회복?}
    E -->|Yes| F[자동 비행(Mission/RTL) 궤적 정상 속행]
    E -->|No| G[타임아웃 만료: Navigation Loss Failsafe 확정 트리거]
    G --> H[Altitude Hold / Land 강제 폴백(Fallback) 상태 전이]

3. 고도 유지(Altitude Hold) 강제 폴백(Fallback) 상태 전이 루틴

추측 항법 한계 시간마저 초과하여 Navigation Loss Failsafe가 트리거되면, 커맨더 계층의 Failsafe 상태 머신이 전권을 쥔다.
PX4는 ’수평 위치(X,Y)’는 몰라도 적어도 기압계(Barometer)를 통한 ’수직 고도(Z)’는 파악할 수 있는 상태라면, 섣부른 추락을 피하기 위해 Altitude Mode (고도 유지 스틱 모드) 혹은 이와 유사한 자동 Altitude Hold 기반의 제자리 대기로 상태를 강등(Degrade)시킨다.

3.1 파라미터 분기(COM_POS_FS_PROB)에 따른 생존 행동 강령

운용자는 COM_POS_FS_PROB 파라미터를 통해 위치 상실 시 드론이 취할 최후의 액션을 설계해야 한다.

  • 옵션 0 (단순 경고): 아무 조치 없이 개발자에게 경고 메시지만 전송. (실전에서는 절대 권장되지 않음. 기체 Fly-away 발생)
  • 옵션 1 (Hover / Loiter 강제): Position 모드로 폴백을 시도하나, 위치를 모르기 때문에 바람에 떠내려가는 것을 통제하지 못하고 자세만 수평(Attitude Level)으로 유지한 채 고도만 방어하는 반쪽짜리 Hover(표류형 Altitude Hold) 상태에 진입한다.
  • 옵션 2 (Land_Fallback): 수평 위치를 잃었으니 어디에 있는지 고민하지 않고, 가장 확실한 정보(고도)만 의지하여 즉각 그 자리에서 수직 강하(Land 모드)를 시작해 착지 지점에 기체를 묶어 둔다.

4. Ardupilot EKF Failsafe 구조와의 비교 분석

  • Ardupilot도 FS_EKF_ACTION 이라는 유사한 폴백 로직을 지니며, LandAltitude Hold(또는 Loiter) 모드로의 후퇴를 지원한다.
  • 그러나 PX4 커맨더 로직의 구조적 차별점은, COM_POS_FS_DELAY 타임아웃 기간 동안의 과도기적(Transient) 추측 항법 허용(Dead Reckoning Tolerance)을 스케줄러 핵심에 정규 편성해 두었다는 점이다. 교량 밑을 순간적으로 통과할 때마다 무작위로 Failsafe가 터져 급착륙해버리는 Ardupilot의 과도한 민감성(Sensitivity) 대비, PX4는 약간의 관성 맹공 비행(Blind dash)을 수용함으로써 도심지 자율 주행의 임무 완수 파이프라인 연속성을 크게 강화하였다.

5. 결론 및 GCS 연계 대응

위치 추정 상실로 인한 Altitude Hold 폴백은 드론 시스템이 전 세계를 인식하던 3D 체계에서, 단지 나침반과 기압계에만 의존해 자세를 파닥거리며 균형을 잡는 1.5D 체계로 퇴화(Degradation)하였음을 의미한다.
GCS(예: QGroundControl) 상에서는 즉각적으로 붉은색의 “Navigation Position Failsafe” 얼럿이 현시된다. 이 알람을 목격한 조종자는 로봇의 복원 능력을 더 이상 신뢰해서는 안 되며, 스위치를 Altitude 매뉴얼 모드로 변경하여 VTX(카메라 영상) 기반 통신망을 통해 스틱을 밀어 육안 조종 이착륙(Manual Takeover)을 시도해야 기체 유실(Fly-away) 로 인한 대형 사고를 원천 봉쇄할 수 있다.