### 0.0.1 장애 조치(Failover) 및 수신기 무중단 스위칭(Seamless Switching) 로직
블렌딩(Blending) 모드가 평상시 두 GPS의 타협점을 찾는 우아한 외교술이라면, 스위칭(Switching) 모드는 한쪽 센서가 완전히 망가졌을 때 백업 센서로 전권을 넘겨 기체를 살려내는 무자비한 생존 술(Survival Tactic)이다.
다중 GPS 환경을 구축하는 가장 궁극적인 목적은, 주(Primary) 수신기가 하드웨어 결함, 케이블 단선, 혹은 극단적인 스푸핑(Spoofing) 공격으로 숨을 거두었을 때, 비행 제어 루프가 단 1프레임의 충격(Glitch)도 느끼지 못하게 하면서 스페어 수신기로 조종 권한을 넘기는 데 있다.
본 절에서는 PX4-Autopilot이 이 무중단 스위칭(Seamless Switching) 을 이루어내기 위해 가동하는 결함 감지 메커니즘과 상태 보상 로직의 큰 그림을 조망한다.
0.1 스위칭 아키텍처의 존재 이유
가중 평균(Weighted Blending) 방식은 두 센서가 모두 정상 범주 안에 있을 때만 빛을 발한다. 만약 드론이 고층 빌딩 숲에서 한쪽 GPS만 다중 경로(Multipath) 반향파의 직격탄을 맞아 좌표가 50m 밖으로 튕겨 나갔다고 가정해 보자.
- 블렌딩 모드에서는 오염된 데이터가 아무리 비중(Weight)이 축소되더라도 정상 데이터에 섞여 들어가 전체 궤적을 서서히 옆으로 오염시키는 역효과(Pulling)를 낳는다.
- 이러한 오염의 전이를 원천 차단하기 위해, 미션 크리티컬(Mission-critical)한 산업 현장이나 군수용 기체에서는 파라미터(
EKF2_GPS_CTRL) 조작을 통해 블렌딩을 끄고 순수한 선별 및 전환(Selection & Switchover) 모드를 고수하는 경우가 많다. 철저한 예비(Active-Standby) 개념으로 운용하는 것이다.
0.2 장애 조치(Failover)의 트리거: 언제 스위칭이 발생하는가?
PX4의 센서 셀렉터(Sensor Selector) 모듈은 현재 사용 권한을 쥐고 있는 주 수신기(Active Receiver)를 끊임없이 의심하고 감시한다. 다음과 같은 치명적 결함(Fault) 징후 중 하나라도 포착되면 즉각 페일오버(Failover)가 발동된다.
- 타임아웃(Timeout) 및 데이터 단절: GPS 모뎀의 뻑, 물리적 케이블 단선(UART/CAN), 전원 칩셋 소손 등으로 인해 정해진 시간(
EKF2_GPS_DELAY관련 임계치) 이상 좌표 업데이트가 끊기면 즉각 사망 판정을 내린다. - 노이즈 한계 초과: 위성 수가 급감하거나 수평 오차(eph)가 비정상적으로 치솟을 때. 즉 데이터는 들어오지만 내용물이 쓰레기(Garbage)일 때다.
- EKF Innovation 실패: 가장 정교한 판별식이다. GPS가 뱉어내는 좌표와, 센서 융합 모듈(EKF2)이 관성 추측 항법(IMU Dead-reckoning)으로 스스로 예상한 좌표 사이의 격차(Innovation)가 허용 임계치를 넘어가 버리면, EKF2는 해당 GPS가 거짓말을 하거나 미쳐버렸다고(Jammed/Spoofed) 판단하여 즉결 처분(Reject)을 내린다.
0.3 무중단(Seamless) 스위칭의 마법: 오프셋(Offset) 보상
두 대의 GPS는 비록 같은 기체에 달려있다 해도 공간적으로 30cm 떨어져 있을 수 있고, 계산해 낸 고도(Altitude)나 대기권 지연 보상치 차이로 인해 서로의 오리진(Origin)이 미세하게 다를 수 있다.
- 만약 스위칭이 발생한 순간, A GPS 좌표(단절 전)에서 B GPS 좌표(연결 직후)로 값의 주어만 무식하게 바꿔치기하면 어떻게 될까?
- 드론 제어기 입장에서는 기체가 공중에서 방금 1m를 십 분의 1초 만에 순간이동(Position Jump)한 것처럼 느끼게 된다. 위치 제어기(Position Controller)는 이 엄청난 가상의 충격파를 상쇄하기 위해 모터를 급가속할 것이고, 기체는 공중에서 크게 요동치거나 추락할 수 있다.
- 이를 막기 위해 PX4는 스위칭이 발동되는 찰나(Tick)의 순간, 과거 주 수신기의 마지막 좌표와 새로운 예비 수신기의 첫 좌표 사이의 이격 벡터(Offset Vector) 를 정밀하게 계산한다.
- 그리고 이 갭(Gap)을 EKF2 내부 상태 변수(State Variable)에 오프셋 보상값으로 주입하여, 수학적인 궤적의 끊어짐(Discontinuity)을 테이프 붙이듯 매끄럽게 봉합해 낸다.
조종사는 QGroundControl 디스플레이에서 GPS Primary Changed 라는 짧은 팝업 메시지 하나만을 목격할 뿐이지만, 그 찰나의 순간 드론 내장 컴퓨터는 위치 급변(Jump)을 막기 위한 거대한 상태 행렬(State Matrix) 리셋 공사를 완벽하게 마무리 지어 진정한 의미의 무중단(Seamless) 생존 비행을 이끌어 낸다.