28.4.4.1. GPS 수신 불량(Jamming/Spoofing) 시 Position 모드에서 Altitude 또는 Stabilize 모드로의 자동 강하

28.4.4.1. GPS 수신 불량(Jamming/Spoofing) 시 Position 모드에서 Altitude 또는 Stabilize 모드로의 자동 강하

최근 무인항공기(UAV) 운용 환경에서 GPS 재밍(Jamming) 및 스푸핑(Spoofing)과 같은 전파 교란은 가장 치명적인 인플라이트(In-flight) 장애 요소 중 하나로 대두되고 있다. 기체가 3차원 공간 제어(Position Control) 모드로 비행 중일 때, 전역 위치 데이터(Global Position)의 상실은 즉각적인 궤적 이탈이나 추락으로 이어질 수 있다. 이를 방지하기 위해 PX4-Autopilot은 상태 추정기(Estimator)와 커맨더(Commander) 모듈 간의 긴밀한 상호작용을 통해, GPS 수신 불량 상황을 조기에 감지하고 위치 데이터가 필요 없는 하위 제어 모드로 안전하게 강하(Fallback)하는 자동화된 메커니즘을 제공한다.

본 절에서는 GPS 이상 상황 시 발생하는 PX4 시스템 내부의 연쇄적인 이벤트 흐름과, Position 모드에서 Altitude 또는 Stabilize 모드로 전환되는 과정의 기술적 디테일을 분석한다.


1. EKF2 레벨의 GPS 신호 이상 감지 메커니즘

모드 강하 루틴의 첫 번째 방어선은 확장 칼만 필터(EKF2, Extended Kalman Filter)에 구현된 자체 데이터 검증 로직이다. EKF2 모듈은 단순히 수신된 GPS 좌표를 맹신하지 않고 융합(Fusion) 이전에 데이터의 품질을 엄격히 평가한다.

1.1 재밍 지표(Jamming Indicator)와 혁신률(Innovation) 검토

최신 u-blox 수신기와 같은 GPS 모듈은 자체적으로 잡음 스펙트럼 밀도나 전파 방해 수준을 나타내는 재밍 지표(Jamming Indicator) 를 MAVLink(또는 uORB)를 통해 리포트한다. 그러나 보다 더 신뢰도 높은 검증은 EKF2 내부의 혁신(Innovation) 기반 테스트에서 이루어진다.

  • 위치 혁신(Position Innovation): IMU 적분에 의해 예측된 위치와 실제 GPS가 보고한 위치의 차이. 예측 경로를 갑작스럽게 벗어나는 데이터(예: 스푸핑)가 들어오면 혁신값이 급증한다.
  • 속도 혁신(Velocity Innovation): GPS가 보고하는 이동 속도와 가속도계 데이터 간의 모순을 감지한다.

EKF2는 이러한 혁신값이 사전에 정의된 파라미터(예: EKF2_GPS_CHECK)의 임계치를 초과하면, 해당 GPS 데이터를 거부(Reject)하고 uORB 토픽 estimator_status_s 내부의 플래그 중 하나인 pos_horiz_test_ratio 등을 변경하여 위치 추정의 불확실성을 시스템에 알린다.


2. 커맨더(Commander) 모듈의 자동 강하(Auto-Fallback) 판단 트리거

EKF2가 로컬 위치 데이터(local_position_valid)를 무효화(Invalidation)하는 순간, PX4 시스템의 메인 상태 머신을 담당하는 커맨더 모듈이 즉각적으로 개입한다.

커맨더 루프 안에서는 기체가 현재 Position 제어 기반 모드(예: Position, Mission, Hold 등)에 있는지 지속적으로 검사한다. GPS 신호 불량이 확정되면, 커맨더는 COM_POS_FS_DELAY (Position Failsafe Delay) 파라미터에 설정된 짧은 유예 시간(통상 1~3초)을 카운트한다. 이는 단순한 단기 통신 글리치(Glitch)로 인한 불필요한 모드 전환을 방지하기 위함이다.

지연 시간이 경과한 후에도 GPS 록(Lock)이 복구되지 않으면, 커맨더는 페일세이프(Failsafe) 시퀀스를 발동한다.

2.1 1차 강하: Altitude 모드로의 전환

가장 먼저 시도되는 강하 경로는 고도 유지(Altitude Control) 모드이다.

  • 전제 조건 검사: 커맨더는 기압계(Barometer)나 레이저 거리 측정기(Rangefinder)를 활용하여 Z축 고도 추정이 유효한지 검사한다(altitude_valid 플래그 확인).
  • 전환 처리: 고도 데이터가 유효하다면 XY(수평) 축의 제어권은 조종사의 스틱(Roll/Pitch) 입력에 직접 매핑되는 수동 자세 제어로 넘기고, Z축(고도)은 시스템이 자동으로 유지하는 Altitude 모드로 즉시 전환한다(vehicle_control_mode 반영).

2.2 2차 강하: Stabilize 모드로의 전환

만약 적 전파 방해로 인해 기압계 센서 데이터 스트림이 손상되었거나, EKF2가 3차원 자세 추정 외에는 어떤 물리량도 신뢰할 수 없는 최악의 상황이라면 어떻게 될까?

  • 전환 처리: 고도 유지조차 불가능(altitude_valid == false)하다고 판단되면, 커맨더는 자세 제어(Stabilize) 모드로 극단적인 강하 조치를 취한다. 이 상태에서 조종사는 스로틀(Throttle)을 포함한 기체의 모든 움직임을 완전히 수동으로 통제하여 추락을 막아야 한다.
graph TD
    A[Position Mode 활성 상태] --> B{EKF2 GPS Innovation Test 실패}
    B -- "COM_POS_FS_DELAY 경과" --> C{고도 추정 유효함? (Baro/Lidar)}
    C -- Yes --> D[Fallback: Altitude Mode]
    C -- No --> E[Fallback: Stabilize Mode]

3. QGroundControl(GCS) 및 MAVLink 경고 파이프라인

모드 강하 조치는 자율 비행 중이던 기체가 갑작스럽게 수동 제어(또는 반수동) 상태로 놓이게 됨을 의미하므로, 조종사에 대한 즉각적인 통보가 필수적이다.

  1. SysStatus 및 HEARTBEAT 업데이트: 커맨더가 강하를 결정하면, MAVLink 스트림을 담당하는 모듈이 즉각 HEARTBEAT 패킷의 모드 지시자를 갱신한다.
  2. STATUSTEXT 브로드캐스트: mavlink_log_critical() C++ 매크로가 호출되어 “Failsafe: Position lost, fallback to Altitude mode“와 같은 텍스트 기반 응급 메시지가 생성된다.
  3. QGC 시각 및 음성 알림: QGroundControl 수신부는 이를 해독하여 조종화면의 상단을 붉은색 경고창으로 덮고, Text-to-Speech(TTS) 모듈을 통해 조종사에게 강하 사실을 큰 소리로 전파한다. 조종사는 이를 듣고 즉각 조종기(Radio Control)의 조이스틱을 쥐고 매뉴얼 비행에 집중해야 한다.

4. ArduPilot 대비 대응 방식의 철학 차이

GPS 재밍 상황 하에서의 대응 로직에 있어서, PX4와 ArduPilot(Copter)은 약간의 설계 사상적 차이를 공유한다.

  • PX4-Autopilot: 매우 엄격하고 결정론적인 상태 전이 트리를 요구한다. GPS가 상실되면 신속하게 커맨더 레벨에서 일괄적으로 하위 모드를 강제하며, 상태가 복구되더라도 조종사의 개입이나 뚜렷한 이력 효과(Hysteresis) 없이 함부로 이전 모드로 되돌아가지 않는 매우 **보수적(Conservative)**인 접근을 한다.
  • ArduPilot: 유사 기능인 ‘GPS Failsafe’ 또는 ’EKF Failsafe’라 명명하며, GPS 상실 시 ‘Land’ (강제 착륙) 모드로 전이하거나, 수평 속도 제어 없이 고도만 제어하는 ‘AltHold’ 모드로 강하한다. 특정 세팅 하에서는 풍부한 광학적 보조(Optical Flow)를 적극 융합하여 어떻게든 현재의 자율 기능(Loiter 등)을 부분적으로라도 연장시키려는 경향을 보인다.

5. 최적화 및 튜닝 (주요 파라미터)

개발자와 운영자는 기체 사용 목적과 비행 환경의 노이즈 조건에 따라 GPS 모드 강하의 민감도를 조정할 수 있다.

  • COM_POS_FS_DELAY: (기본값 약 1초) GPS 신호 소실 후 모드 강하를 시작할 때까지의 대기 시간. 재머(Jammer) 근처를 스쳐 지나가는 단기적인 신호 끊김 현상이 잦다면 이 값을 약간 늘려 불필요한 모드 전환을 막을 수 있다.
  • COM_POS_FS_PROB: 위치 추정치에 대한 신뢰도 확률 임계치이다.
  • EKF2_GPS_CHECK: EKF2 모듈이 GPS 센서를 신뢰하기 위한 최소 위성 수, HDOP, 속도 제한 등의 항목을 비트마스킹(Bitmasking)하여 설정한다. 예를 들어 도심 파사드 검증 비행(Urban flight)에서는 다중 경로 오차(Multipath)가 심하므로 이 검열망을 적절히 조율하는 것이 필수적이다.

결론적으로, PX4의 In-flight 위치 제어 강하 루틴은 단순히 ’기능의 정지’가 아니라, 현재의 악조건에 맞춰 시스템이 활용 가능한 제어 차수학(Degrees of Freedom)을 능동적으로 하향 조정하는 매우 정교한 능동형 생존 스크립트라 할 수 있다.