### 0.0.1 관성 센서(IMU) 데이터와의 동기화를 위한 지연 버퍼(Delay Buffer) 및 관측 시간 롤백(Time Machine Rollback) 알고리즘
EKF2 모듈이 400Hz의 맹렬한 속도로 10Hz짜리 굼뜬 GPS 데이터를 포용할 수 있는 가장 극적인 수학적 해법은, 바로 시간을 뒤로 돌리는 타임머신 롤백(Time Machine Rollback) 매커니즘이다.
PX4-Autopilot의 추정기(Estimator) 코드는 단순히 현재 시각의 계산 행렬을 들고 있는 것이 아니라, 과거 수백 밀리초(ms) 동안의 기체 궤적을 고스란히 저장해 둔 거대한 기억 장치(Memory Buffer)를 운용한다.
0.1 지연 버퍼(Delay Buffer)의 구조적 설계
자이로스코프와 가속도계 등 고속 IMU 센서는 1ms 이하의 지연율로 실시간 유입되므로, EKF2의 ’현재 상태 공간(State Space)’은 항상 이 초고속 IMU 데이터에 의해 지배당하며 끊임없이 미래(Prediction)를 향해 나아간다.
- 이때 EKF2 내부에는 배열(Array) 또는 원형 버퍼(Ring Buffer) 형태의 **관측 버퍼(Observation Buffer)**들이 존재한다.
- 매 IMU 틱(Tick)마다 예측된 기체의 롤, 피치, 요 각도 및 3차원 위치/속도 벡터 등 핵심 상태(State) 값 뭉텅이를 타임스탬프 꼬리표와 함께 이 버퍼의 맨 앞단(Head)에 차곡차곡 쌓아 넣는다.
- 버퍼의 길이가 한계치(예: 과거 500ms 메모리 용량)에 도달하면 가장 오래된 데이터(Tail)부터 메모리에서 영구히 폐기된다. 이 버퍼 공간이 바로 타임머신의 활주로가 된다.
0.2 관측 시간 롤백(Time Machine Rollback) 절차
수십에서 수백 밀리초를 케이블 안에서 헤매던 GPS 데이터(예: 100ms 지연)가 마침내 파싱을 끝내고 uORB를 거쳐 EKF2의 문을 두드린다.
- 시점의 불일치 인식:
지금 픽스호크 보드의 시계(System Clock)는 T_{현재} 이고, 방금 도착한 GPS 메시지에 적힌 측정 시각은 T_{과거} (T_{현재} - 100\text{ms}) 임을 인지한다. - 과거로의 회귀 (Rollback):
EKF2는 지금 당장 팽팽하게 돌아가던 400Hz IMU 루프의 행렬 계산을 일시 정지(Suspend)한다. 그리고 지연 버퍼를 뒤져서 방금 가져온 GPS 데이터의 타임스탬프 T_{과거}와 가장 시간이 근접한 프레임(Frame)을 찾아낸다.
“아, 100ms 전에 내 IMU 예측 모델은 기체가 X_{과거}, Y_{과거}, Z_{과거} 위치에 있을 거라고 예상했었군.” - 이노베이션(Innovation) 산출:
가져온 “100ms 전의 예상 좌표” 행렬과, 이제 막 도착한 “100ms 전의 실제 GPS 관측 좌표” 수학 행렬을 서로 뺀다. 이 둘 사이의 거리 격차가 바로 필터를 갱신하는 핵심 동력인 이노베이션(Innovation, 오차) 벡터가 된다. - 상태 벡터 수정 (Correction):
이 오차에 칼만 게인(Kalman Gain)을 곱하여, 100ms 전 기체가 품고 있었던 가속도계의 편향(Bias)이나 속도 표류(Drift) 누적값을 математически 깨끗하게 도려낸다(Correction). - 현재로의 고속 전진 (Fast Forward):
과거 시점(T_{과거})에서 보정이 완료되어 완벽해진 상태 벡터를 들고, 이제 버퍼에 쌓아두었던 T_{과거} 부터 T_{현재} 까지의 100ms 치 IMU 데이터를 다시 빛속의 속도로 재적분(Re-integration)하며 현재 시점(T_{현재})으로 단숨에 되돌아온다.
0.3 구조적 지연 보상의 의의
만약 이런 롤백 시스템 없이 100ms 전의 GPS 데이터를 현재 IMU 데이터에 무분별하게 섞어버렸다면 어떨까?
드론은 100ms 전 위치로 돌아가기 위해 역추진을 시도하고, 다음 순간 다시 IMU를 믿고 전진하는 미친 듯한 전후방 진동(Oscillation) 즉, 토일렛 볼 이펙트(Toilet Bowl Effect) 현상에 빠지고 말았을 것이다.
결국 지연 버퍼와 시간 롤백 알고리즘은 센서 퓨전 과정에서 이기종 센서 간의 거대한 시차(Time Gap)를 외과수술처럼 절개하고 봉합해 내는, PX4 비행 안정성의 가장 근원적인 수학적 방어벽이다.