13.4.2.3. COM_POS_FS_DELAY 및 관성 항법(INS) 단독 비행 한계: RTK 데이터 단절 시 데드 레코닝(Dead Reckoning) 위치 드리프트 누적률 계산
다중 GPS 아키텍처를 완비하고 블렌딩(Blending)과 폴백(Fallback) 방어선을 아무리 두껍게 쌓았더라도, 악의적인 재밍(Jamming) 공격이나 전리층 폭풍 같은 외부 환경 요인에 의해 기체에 장착된 ’모든 GPS 신호’가 완벽하게 단절되는 최악의 시나리오는 언제나 발생할 수 있다.
이러한 전면적 항법 소실(Total Navigation Loss)의 찰나, 드론은 즉각적으로 하늘에서 떨어지지 않는다. EKF2는 과거의 속도와 IMU(가속도계/자이로스코프) 데이터를 쥐어짜 내어 관성 항법 체계인 ‘데드 레코닝(Dead Reckoning)’ 모드로 진입하며 어떻게든 위치 추정을 연장해 나간다. 본 절에서는 PX4-Autopilot이 GPS 완전 단절을 선언하기 전까지 대기하는 유예 시간 파라미터인 COM_POS_FS_DELAY 와, 데드 레코닝 상태에서 기체의 실제 궤적이 수학적으로 어떻게 산산이 조각나며 드리프트(Drift)하는지 그 누적률을 계산해 본다.
1. 페일세이프 트리거 유예 시간: COM_POS_FS_DELAY
GPS가 끊어졌다고 해서 펌웨어가 0.1\text{초} 만에 이착륙 모드(RTL/Land)로 비상 절차를 밟는 것은 비효율적이다. 교량 밑을 통과하거나 울창한 나무를 지날 때 발생하는 1 \sim 3\text{초} 간의 일시적 음영 현상은 데드 레코닝으로 충분히 돌파할 수 있기 때문이다.
이 유예 시간을 정의하는 파라미터가 커맨더(Commander) 모듈의 COM_POS_FS_DELAY 이다. (단위: 초(sec), 통상 1 \sim 5\text{초} 범위를 갖는다.)
// src/modules/commander/Commander.cpp 페일세이프 지연 로직의 유사 구조
if (ekf.is_global_position_invalid()) {
uint64_t current_time = hrt_absolute_time();
// GPS 단절 후 일정 시간(Delay) 동안은 데드 레코닝을 허용하며 기다림
if (current_time - pos_invalid_start_time > (COM_POS_FS_DELAY * 1_s)) {
// 유예 시간 초과! 비상 착륙 또는 Alt Hold 강등 프로시저 발동!
trigger_nav_failure_failsafe();
} else {
// 아직 유예 시간 이내. IMU 단독 추정 유지.
continue_dead_reckoning();
}
}
이 파라미터를 너무 짧게 잡으면 아주 찰나의 GPS 음영에도 비행 임무가 강제 중단되는 짜증스러운 상황이 발생하며, 반대로 너무 길게 잡으면 데드 레코닝으로 인해 기체의 위치 오차가 겉잡을 수 없이 누적된 상태에서 엉뚱한 곳으로 날아가 버리는(Fly-away) 참사를 겪게 된다. 따라서 이 시간(Delay)을 설정하기 위해서는 데드 레코닝의 ’드리프트 율(Drift Rate)’을 수학적으로 통찰해야만 한다.
2. 데드 레코닝(Dead Reckoning)과 위치 드리프트 연산
GPS 등 절댓값 참조(Absolute Reference) 센서가 소실되면, EKF2는 오직 IMU의 가속도 데이터(a_x, a_y)를 두 번 적분하여 현재 위치(s)를 도출하는 관성 추측 항법(Dead Reckoning)에 돌입한다.
s = \frac{1}{2} a t^2 + v_0 t + s_0
이 방정식의 기저에는 가속도계가 지닌 ’바이어스 편향 오차(Bias Error, a_{bias})’가 도사리고 있다.
소비자용 MEMS 가속도 센서(예: ICM-42688)의 런타임 바이어스는 온도와 진동에 의해 끊임없이 흔들리며, EKF가 아무리 잘 추적하고 있었다 하더라도 GPS가 끊기는 순간 바이어스 정렬이 멈추면서 고정된 잔류 에러(\epsilon)가 남게 된다.
2.1. 드리프트 에러(Drift Error) 누적률의 물리학적 산출
가속도 바이어스 오차 \epsilon = 0.05 \text{ m/s}^2 (약 5\text{ mg})가 남아있는 상태에서 속도 초기 오차가 거의 없다고 가정해 보자.
시간 t (초)가 흐를 때 발생하는 위치 오차 E_{pos}(t) 는 적분 방정식에 의해 시간에 대해 제곱(Quadratic) 으로 증가한다.
E_{pos}(t) = \frac{1}{2} \cdot \epsilon \cdot t^2
이 공식을 적용하여 데드 레코닝 지속 시간에 따른 드리프트를 계산하면 다음과 같다.
- 1초 경과 시 (t=1): E_{pos} = \frac{1}{2} \cdot 0.05 \cdot (1)^2 = 0.025 \text{ m} (2.5 \text{ cm} 오차 발생. 인간이 눈치채지 못할 정도로 훌륭함)
- 3초 경과 시 (t=3): E_{pos} = \frac{1}{2} \cdot 0.05 \cdot (3)^2 = 0.225 \text{ m} (22.5 \text{ cm} 오차 발생)
- 5초 경과 시 (t=5): E_{pos} = \frac{1}{2} \cdot 0.05 \cdot (5)^2 = 0.625 \text{ m} (약 60 \text{ cm} 오차 발생)
- 10초 경과 시 (t=10): E_{pos} = \frac{1}{2} \cdot 0.05 \cdot (10)^2 = 2.5 \text{ m} (이미 좁은 장애물 회피 한계를 넘어서는 오차)
- 30초 경과 시 (t=30): E_{pos} = \frac{1}{2} \cdot 0.05 \cdot (30)^2 = 22.5 \text{ m} (드론이 제정신을 잃고 엉뚱한 방향으로 20\text{ m} 쇄도하는 Fly-away 상태)
사실 위 계산은 기체가 정지(Hovering) 중일 때 가속도 평면이 완벽히 수평을 이룬다는 가정하에 계산된 매우 보수적인 최소 오차율이다. 실제 비행 중, 특히 자이로스코프의 요(Yaw) 각도 에러마저 복합적으로 누적되면 코리올리 힘과 투영 오차까지 더해져 산출된 오차 반경보다 통상 2 \sim 3\text{배} 넓은 범위로 폭주의 나선(Spiral of Death)을 그리게 된다.
3. COM_POS_FS_DELAY 설정 전략의 결론
위의 드리프트 누적률 연산 결과를 토대로, COM_POS_FS_DELAY 를 설정하는 엔지니어링 스탠다드를 도출할 수 있다.
- 초정밀 방제 및 장애물 근접 드론: 허용 오차가 0.5\text{m} 내외이므로 지연 시간을 짧게 가져가는 것이 유리하다. (예:
COM_POS_FS_DELAY= 2 ~ 3) 데드 레코닝을 포기하고 즉시 그 자리에서 고도(Altitude Hold)를 유지하거나 강하하는 것이 백 번 안전하다. - 광활한 지역의 매핑/정찰 고정익(Fixed-wing): 공중에 장애물이 없고 관성이 큰 고정익의 특성상 좀 더 길게 유예를 주더라도 기체의 생존율에 유리하다. (예:
COM_POS_FS_DELAY= 5 ~ 8)
결과적으로 PX4의 GPS 단절 페일세이프 아키텍처는 센서가 무너진 그 찰나의 순간, 시간의 흐름 파장(t^2)에 맞춰 기하급수적으로 폭발하는 항법 방정식의 엔트로피(Entropy)를 수학적으로 억누르고 드론의 추락을 유예시키는 최후의 모래시계(Hourglass) 매커니즘인 것이다.