30.7.1. 위치 추정기(EKF2) 혁신(Innovation) 데이터와 `position_controller_status` 간의 제어 루프 지연 시간(Time Lag) 상관관계 분석

30.7.1. 위치 추정기(EKF2) 혁신(Innovation) 데이터와 position_controller_status 간의 제어 루프 지연 시간(Time Lag) 상관관계 분석

무인항공기가 임무(Mission) 궤적을 자율적으로 추종하려면 “내가 지금 어디에 있는가?“를 알아내는 **상태 추정 로직(EKF2)**과, “그렇다면 앞으로 어떻게 움직일 것인가?“를 계산하는 **위치 제어 로직(Position Controller)**이 톱니바퀴처럼 맞물려 돌아가야 한다. 그러나 센서 데이터가 입력되어 모터 제어 신호로 출력되기까지의 파이프라인에는 본질적인 연산 딜레이와 필터 지연 시간(Time Lag)이 존재하며, 이 딜레이가 임계치를 초과하면 드론의 제어 루프는 불안정해지며 심한 탈조(Hunting) 현상을 일으킬 수 있다.

본 장에서는 PX4의 비행 저널(ULog) 핵심 요소인 EKF2의 혁신(Innovation) 데이터position_controller_status 토픽을 교차 분석하여, 시스템 내부 깊숙이 숨겨진 제어 지연 시간의 상관관계를 들여다보는 하이엔드 튜닝 엔지니어링 기법을 소개한다.

1. 지연 시간(Time Lag)의 정의와 근본 원인

시스템의 딜레이는 단순히 CPU 클럭이 느려서 발생하는 것이 아니라, 신호 처리와 필터 알고리즘의 본질적 한계에서 기인한다.

  1. 센서 버퍼 지연 (Sensor Latency): GPS 모듈이 위성 신호를 받아 NMEA/UBX 패킷으로 역산하여 직렬 통신(UART)으로 PX4에 넘겨주는 물리적 시간 (통상 100ms ~ 200ms).
  2. EKF2 융합 지연 (Fusion Filter Delay): 이 낡은 GPS 데이터와 최신 IMU(수백 Hz) 데이터를 섞어 현재의 진정한 위치(State)를 추론해내는 복잡한 행렬 역산 시간.
  3. 제어기 반응 지연 (Controller Actuation Lag): EKF가 계산한 vehicle_local_position을 P-PID 제어기가 넘겨받은 뒤, 에러를 기반으로 Thrust(추력) Setpoint를 산출하여 ESC 배열에 DShot으로 전달하고 물리적 모터가 토크를 발생시키기까지의 시간.

이 모든 지연 시간의 덩어리(Overall System Lag)를 어떻게 시각화하고 튜닝할 것인가가 고난도 분석 엔지니어링의 척도이다.

2. EKF2 혁신(Innovation) 데이터를 이용한 센서 비동기성 분석

가장 먼저 다뤄야 할 것은 상태 추정의 심장인 EKF2 내부망 분석이다. EKF2는 **혁신(Innovation)**이라는 지표를 통해 자신의 건강 상태와 센서 타이밍을 실시간으로 퍼블리싱(estimator_status 토픽)한다.

  • 혁신(Innovation) = 측정값(Sensor Measurement) - 예측값(Filter Prediction)
  • 만약 GPS 센서의 타임스탬프 스케줄링(Delay Parameter)이 잘못 설정되었다면, EKF2는 ’과거의 정보’를 ’현재의 예측치’와 비교하게 된다.
  • ULog 데이터 징후: 기체가 앞으로 직진 비행(Forward acceleration)을 할 때마다 estimator_status.gps_vel_innov (GPS 속도 이노베이션) 그래프가 갑자기 양수 방향으로 크게 튀고(Spike), 감속할 때 음수 방향으로 크게 튄다면, EKF2 필터가 물리적 현실 세계의 관성을 쫓아가지 못하고 비동기성 뒷북을 치고 있다는 강력한 증거다.
  • 조치 방안: EKF2_GPS_DELAY 파라미터를 보정하여 GPS 모듈 고유의 하드웨어 전송 지연 시간을 EKF2 모델링 안으로 선반영(Compensate) 시켜줘야 이중 위상 불일치(Phase Mismatch)를 타파할 수 있다.

3. Position Controller Status와 응답 시간의 교차 분석

EKF2가 완벽히 튜닝되었다 하더라도 위치 제어 루프의 응답성(Time Lag)이 불량하다면 비행 궤적은 엉망이 된다.

PX4의 position_controller_status 토픽은 현재 제어기가 받아들인 위치 추종 오차(Pos Error)와 이를 극복하기 위해 만들어낸 자세 제어(Attitude Setpoint) 출력률을 상세히 기록한다.

3.1 궤적 오차 (Cross-track / Along-track Error)의 시계열 교차

  • vehicle_local_position_setpoint (네비게이터가 지시한 목표 궤적)
  • vehicle_local_position (기체의 실제 위치)
    ULog 브라우저인 Flight Review에서 위 두 선을 겹쳐 그리면, **목표 곡선과 실제 곡선 간의 횡축 간격(X축 시간 차이)**이 바로 전체 제어 루프의 Time Lag다.

3.2 PID 게인과 Time Lag의 상관관계

기체가 직각 코너(Waypoint Corner)를 돌 때 이상적인 제어기라면 오차를 빠르게 0으로 수렴시켜야 한다.

  • 제어계가 너무 둔할 때 (Large Time Lag):
    위치 에러(position_controller_status.wp_dist)는 기하급수적으로 큰데 제어기의 피치/롤 꺾임 가속 반응이 수십~수백 밀리초 뒤처져서 들어오면, 기체는 코너를 한참 밖으로 밀려나는 언더슈트(Undershoot) 현상을 겪게 된다. 원인은 Position P-Gain이나 Velocity P-Gain이 과소 설정되었거나, 제어 주기 대비 필터(Low-pass filter) 차단 주파수가 너무 낮게 잡혔기 때문이다.
  • 제어계가 너무 예민할 때 (Negative Phase Margin):
    Time Lag가 긴 시스템 환경(무거운 대형 드론)에서 응답성을 높이겠다고 무턱대고 Velocity D-Gain을 끌어올리면, 지연되어 들어온 오차 값을 과대 해석하여 코너 안쪽으로 확 꺾어버렸다가 다시 바깥으로 요동치는 심각한 **오버슈트 진동(Overshoot Oscillation)**을 겪게 된다.
graph TD
    A[네비게이터: Setpoint 좌표 하달] --> B[Position Controller: Pos Error 검출]
    B --> C[시간차(Lag) 발생 구역]
    C --> D[Rate Controller -> Actuator -> 물리적 이동]
    D --> E[EKF2 상태 추정 필터 연산]
    E --> F[지연된(Lagged) Current Position 반환]
    F --> |Time delay $\tau$| B
    
    B --> G{Flight Review ULog 분석}
    G --> H[EKF2 GPS Innovation 스파이크 확인<br>(EKF2_GPS_DELAY 보정)]
    G --> I[Trajectory Setpoint vs Actual 궤적 위상차 관찰<br>(PID Gain 및 Feed-forward 재설계)]

4. 제어가능한 지연 극복 수단: 피드포워드(Feed-forward)의 활용

현대의 무인항공 제어 엔지니어링에서 피드백(PID)만으로 물리적 Time Lag를 완전히 없애는 것은 불가능하다는 것이 정설이다.
PX4의 최상위 제어기는 이 한계를 넘기 위해 피드포워드(Feed-forward) 파라미터를 제공한다.

  • PID의 피드백 제어는 오차가 생겨야만 행동을 개시하므로 필연적으로 뒤처지지만, Feed-forward 제어(예: Velocity FF, Hover Thrust FF)는 네비게이터의 목적지 거리를 보고 **오차 유무와 무관하게 궤적이 꺾이는 즉시 기하학적 연산을 통해 모니터 제어 믹서로 직통 주입(Direct Injection)**된다.
  • 이를 통해 저주파수(Lag) 성분이 지배하는 위치 제어(Position Control) 루프의 의존도를 덜어내고, 시스템의 위상 지연(Phase Lag) 응답성을 획기적으로 선행 보상(Pre-compensation)할 수 있다.

5. 결론 및 실무 요약

자동 비행 에러를 분석할 때 ULog의 단순 궤적만 보고 짐작하는 시대는 지났다.
현장 엔지니어는 1. EKF2 Innovation(estimator_status) 이력에서 센서 타이밍 오차를 판화처럼 긁어내고 정리한 다음, 2. position_controller_status의 시계열 Setpoint 추종 그래프 사이의 수평적 결절(Time Lag 곡선 간격)을 분석하여 PID 대역폭(Bandwidth)과 Feed-forward 게인을 과학적으로 배분해야 한다. 이것이 기류의 압각과 위성 지연이라는 가혹한 시차 환경 속에서 드론의 제어 루프를 타이트(Tight)하게 직결시키는 종단 간(End-to-End) 시스템 엔지니어링의 정수이다.