27.4.3. 지연 보상 융합 사이클 (Delayed Fusion Horizon)

27.4.3. 지연 보상 융합 사이클 (Delayed Fusion Horizon)

1. 개요 (Introduction)

비행 제어 시스템의 핵심 모듈인 확장 칼만 필터에서 센서들의 타임스탬프를 보존하는 ‘링 버퍼(Ring Buffer)’ 아키텍처는 오직 단 하나의 거칠고 파괴적인 목적을 위해 복무한다. 그것은 바로 이종 센서 간의 심각한 도착 시간차를 완전히 우회하여, 수학적으로 무결한 칼만 혼합(Kalman Mixing/Update)을 이뤄내기 위한 지연 보상 융합 사이클 (Delayed Fusion Horizon) 엔진을 구동하는 것이다.

PX4-Autopilot의 EKF2(Estimation and Control Library, ECL)는 공중을 실시간으로 베고 날아가는 기체의 현실 시공간(현재)과, 센서들의 낡은 데이터가 도착하여 융합되는 알고리즘의 심층 시공간(과거)을 물리적 스레드 레벨에서 엄격하게 분리하여 운영하는 듀얼 시공간 아키텍처를 채택하였다. 이 ’과거의 병렬 시공간’을 ECL 아키텍처 명명으로 지연 지평선(Delayed Horizon) 이라 부르며, 이 위에서 벌어지는 정교한 롤백 필터링 메커니즘은 현존하는 오픈소스 항법 시스템 중에서 가장 억척스러운 상태 추정 안정성을 이끌어낸다.

2. 듀얼 타임라인 아키텍처: 현재(T_{now})와 과거(T_{delayed})의 결별

다중 루프 비행 제어기(PID & Attitude Controller)는 드론이 돌풍에 의해 뒤집히거나 추락하기 전에 0.001초~0.002초 단위로 모터의 PWM/DShot 출력을 가혹하게 갱신해야 하므로, 수백 밀리초 깊은 잠에 빠져있는 지연된 측정치(GPS/VIO 등)를 기다려줄 어떠한 물리적 여유조차 없다. 따라서 EKF2는 내부 메모리에서 두 개의 독립된 시간 축을 동시에 호스팅한다.

  1. 출력 예측기 영역 (Output Predictor / Current Horizon)
  • 물리적 시간대: 현재 공중에 떠 있는 기체의 실시간 첨단(T_{now}).
  • 코어 역할: 오직 0에 수렴하는 극소 지연 고주파수의 IMU 데이터만을 사용하여, 과거의 정화된 상태 벡터를 기점으로 가장 빠르게 전방 순방향으로 적분(Forward Predict)만 수행한다. 외부 센서의 방해나 관여를 철저히 배제한 채 관성력의 뼈대만으로 매트릭스가 돌아가며, 제어기가 즉시 생명줄로 사용할 수 있는 고해상도 비행용 상태(Attitude, Velocity, Position)를 초당 250~400회 이상의 살인적 속도로 배출해 낸다.
  1. 지연 융합 지평선 영역 (Delayed Fusion Horizon)
  • 물리적 시간대: 전체 활성화된 이종 센서 중, 데이터 도착 지연이 가장 극악한 노드(주로 GPS나 네트워크 기반 비전 센서)의 통신 최대 지연 파라미터만큼 뒤로 강제 후퇴해 있는 저편의 과거(T_{delayed}).
  • 코어 역할: 길고 긴 UART 체인이나 통신망을 뚫고 뒤늦게 도착한 각종 외기 센서 관측치(GPS, 마그네토미터 콤파스 등)의 타임스탬프가 여기 T_{delayed} 시간 좌표계로 서서히 진입하며 도달했을 때, 비로소 진짜 EKF의 거대 수학 엔진 - 즉 미세한 오차 잔차(Innovation) 산출, 엄청난 행렬의 공분산(Covariance) 갱신, 칼만 이득(Kalman Gain) 역전 보정 - 을 폭발적으로 가동하는 진정한 융합 연산 심장부이다.

3. 지연 융합 타임라인(T_{delayed})의 동적 산출 도식

그렇다면 시스템은 이 과거의 지평선(Horizon)을 어디쯤으로 결단하여 그어야 할까? EKF 코어 루틴은 런타임에 현재 시스템에 연동된 모든 센서들의 딜레이 허용 파라미터(예: EKF2_GPS_DELAY, EKF2_BVP_DELAY, EKF2_MAG_DELAY 등) 중 ‘가장 긴 수명을 지불해야 하는 최댓값(Maximum Configured Delay)’ 을 우선 탐색 색출한다.

\Delta t_{max\_delay} = \max(\Delta t_{gps}, \Delta t_{mag}, \Delta t_{baro}, \Delta t_{vio})

이후, EKF 스레드가 방금 막 인터럽트(Interrupt)로 수신한 가장 파릇파릇한 최신 IMU 데이터 구조체의 타임스탬프(T_{last\_imu})에서 위 최댓값을 가차 없이 감산(Subtraction)하여, 아무리 느려터진 데이터라도 링 버퍼에서 충분히 무르익어 마침내 타임라인이 조우할 수 있는 최후의 과거 하한선을 구축한다.

T_{delayed} = T_{last\_imu} - \Delta t_{max\_delay}

도출된 이 T_{delayed} 지점이야말로 완전히 다른 출신 성분의 이종 센서들 타임스탬프가 톱니바퀴처럼 한 치의 오차도 없이 맞물려 버리는 절대적 동기화 성소(Absolute Synchronized Epoch)로 거듭난다.

4. 지연 보상 융합 엔진의 4단계 라이프사이클 (4-Phase Lifecycle Matrix)

PX4 ECL의 메인 워커 스레드 사이클 단위에서, 이 거대한 지연 보상 아키텍처는 매 틱(Tick)마다 다음의 4단계 왈츠 루프를 광적으로 반복한다.

4.1 Phase 1. 무한 버퍼 적재 (IMU Push Pipeline)

가장 최신의 델타 속도 및 각도 IMU 벡터 값이 들이닥치면, Output Predictor를 가동하여 현재 기체 상태를 아주 잠깐 1스텝 앞서 전방향 예측(Predict) 적분해 버린 뒤, 발생한 그 상태 스냅샷과 방금의 물리 벡터들을 몽땅 긁어모아 링 버퍼의 빈 맨 앞 선단(tail 포인터)에 꽉꽉 욱여넣고 저장한다.

4.2 Phase 2. 과거로의 타임머신 회귀 및 관측 매칭 (Time-travel & Wait)

EKF 내부의 코어 포인터가 앞서 산출된 T_{delayed} 과거 시점 매트릭스로 훌쩍 이동한다. 만약 느린 GPS 버퍼 스택을 이진 탐색으로 뒤적여 보았더니, 방금 전(실은 약 200ms 전 머나먼 우주 공간에서) 측정되어 힘겹게 도달 완료한 GPS 패킷 데이터 타임스탬프가 마침내 이 T_{delayed} 관문을 스쳐 지나갔다면(Older/Newer 경계 확보), EKF는 드디어 융합의 의식을 시작한다.

4.3 Phase 3. 융합의 폭발: 칼만 업데이트 (Kalman Fusion Update Engine)

이진 탐색 메커니즘을 가동하여 T_{delayed} 찰나 시점의 IMU 누적 상태를 링 버퍼에서 보간(Interpolate) 추출해 낸다. 이렇게 정밀하게 추출된 ’과거 시점의 기체 추정 뼈대’와 ‘과거 시점에서 잰 GPS 진짜 외부 측정치’ 사이에서 비로소 이치에 완벽히 합치하는 뺄셈 오차(Innovation Residuals)를 구한다. 그리고 이 잔차 에러를 칼만 이득(K) 행렬과 곱하여 T_{delayed} 기준의 거대한 EKF 전역 상태 벡터(State Vector) 행렬과 불확실성 에러 공분산(Covariance Matrix) 행렬을 근본 단위부터 뒤집어 보정(Correction)한다.

4.4 Phase 4. 현재로의 숨 가쁜 재가속 (Re-propagation for Output)

핵심 보정 연산이 타결되어 거칠었던 과거 시점(T_{delayed})의 기체 상태가 완벽히 깨끗해졌다. 하지만 조종사 루프(PID)는 지금 당장 현실의 현재력(T_{now}) 상태가 절실하다. EKF는 정화된 이 과거 상태 스냅샷을 기준 원점으로 삼은 단단히 움켜쥔 뒤, 링 버퍼 공간에 차곡차곡 유실 없이 쌓아두었던 그 이후부터 극최신 시점까지의 수십~수백 개의 잉여 IMU 델타 데이터 배열들을 다시 몽땅 한 방에 꺼내어, 숨 쉴 틈 없는 비동기 루프(For-loop)로 순방향 고속 재적분(Re-propagation) 연산을 모조리 연타해 때려 넣는다. 이렇게 피 토하는 연산 누적으로 탄생한, 극도의 정밀도와 실시간성을 겸비한 절대 상태 출력망(State Output)이 비행 제어 모듈 토픽으로 매끄럽게 세상에 퍼블리시 된다.

5. 지연 융합 사이클 구동 스택의 구조적 도식화 (Mermaid Diagram)

graph TD
    subgraph Output Predictor Core (현재 기체 시공간 / 고주파 배출)
    A(최신 무중단 IMU 데이터 $T_{now}$ 수신) --> B[링 버퍼 메모리에 모조리 백업 Push 저장]
    E[정화된 과거에서 출발~현재까지 누적 IMU 고속 적분] --> F([초당 400Hz 딜레이제로 비행 제어용 위치 출력])
    end

    B -.-> |타임머신 롤백 가동 <br> $T_{delayed}$| C
    
    subgraph Delayed Fusion Horizon Core (과거 동기화 시공간 / 연산의 폭발장)
    C{지연 전송망 뚫고 당도한 외부 센서 데이터가 <br> 드디어 $T_{delayed}$ 시간 방어선을 통과했는가?}
    C -- Yes (타임 매칭 극적 성립) --> D[<br>해당 과거 찰나 시점의 상태 뼈대 Interpolate 추출<br>↓<br>대규모 혁신 오차 행렬 연산 및 칼만 필터 코어 보정 수행<br>]
    C -- No (아직도 빈 버퍼 지연 중 상태 유지) --> E
    end
    
    D --> |공분산 보정 완료 후 현실 세계로 복귀| E

5.1 시스템 코어 연산 오버헤드(Computation Overhead)에 대한 고찰

이러한 물리적 과거 롤백과 반복적인 루핑 재적분(Re-propagation) 아키텍처는 수학적으로는 그 어떠한 알고리즘보다 완벽한 무결성을 기체에 보장하지만, 반대급부로 MCU의 방대한 연산량(Computation CPU Load)을 지독하게 담보로 잡고 들어간다.

저속 측정치(GPS 10Hz 방출 등)의 융합 조건이 매번 터지는 순간마다, 스레드는 수십수백 개의 3차원 축 벡터 행렬 재적분 코드를 포루프(For loop)로 감아 강제로 소화시켜야 하므로 코어 스케줄러에는 순간적인 피크 펄스 부하(Peak Pulse CPU Load)가 튀게 된다. 하지만 Pixhawk 4 및 5/6X 계열의 32비트 F7/H7 고성능 멀티프로세서(ARM Cortex-M7 이상) 하드웨어 생태계 보급화 시대에 접어들며 이 대량의 행렬 연산량은 거뜬히 방어가 가능해졌다. PX4 코어 개발팀의 펌웨어 진화 트렌드는, 막대한 연산력 다이어리(리소스를 태움)를 기꺼이 제물로 희생하더라도 물리세계와 이산시간의 데이터 정합성, 그리고 다중 페일오버의 자율 비행 절대 안전성(Safety Foundation)을 결코 타협 없이 확보하는 기조로 아키텍처 철학을 공고히 하고 있다.