# 1. uORB 메시지 비동기 수신 및 지연 보상(Latency Compensation) 파이프라인

# 1. uORB 메시지 비동기 수신 및 지연 보상(Latency Compensation) 파이프라인

PX4-Autopilot의 운영체제적 특징 중 모듈(독리된 소프트웨어 컴포넌트) 간 데이터 교환은 전적으로 uORB (Micro Object Request Broker)라는 자체적인 출판-구독(Publish-Subscribe) 메시징 미들웨어를 통해 이루어진다. 자율 비행의 중추적인 두뇌 컨트롤러인 navigator 모듈 역시 이 uORB를 통해 하부 센서 추정치, 조종기 명령, GCS 관제 메시지 등 제반 시스템 지표를 수집한다. 본 절에서는 navigator 모듈이 다방면의 비동기 uORB 메시지를 수신하는 근본 메커니즘과, 센서/통신 지연(Latency) 현상이 궤적 계획의 위상(Phase) 마진에 미치는 영향을 최소화하기 위한 지연 보상(Latency Compensation) 파이프라인의 핵심 설계 메커니즘을 심층적으로 해부한다.

1.1 uORB 기반 비동기(Asynchronous) 메시지 수신 패러다임

POSIX 기반 NuttX RTOS 상에서 병렬 구동되는 PX4 모듈들은 메모리 주소를 로우-레벨(Low-level) 포인터 형식으로 직접 공유하거나 침범하지 않는다. 대신, 한 특정 모듈(드라이버 모듈 포함)이 약속된 토픽(Topic, 예: vehicle_local_position) 객체에 데이터를 퍼블리시하면, 해당 토픽 데이터 구조체를 구독(Subscribe)하고 있는 모든 모듈의 로컬 환형 버퍼(Circular Buffer)로 데이터가 철저히 비동기적으로 안전하게 트랜잭션된다.

navigator 모듈은 내부 설계상 C++ 래퍼 클래스인 uORB::SubscriptionuORB::SubscriptionInterval 템플릿을 활용하여 수십 종이 넘는 매개 토픽을 병행 구독한다.

  1. 이벤트 트리거 토픽 (Event Trigger): EKF2 추정기가 유관 융합을 마치고 최종 발행하는 기체 로컬 위치 데이터(vehicle_local_position)는 navigator의 수면 중인 메인 루프를 깨우는(Wake-up) 마스터 트리거 구실을 수행한다.
  2. 논-블로킹 폴링 토픽 (Non-blocking Fetch): GCS 등으로부터 MAVLink를 통해 유입되는 vehicle_command나 시스템 제어 상태 home_position, battery_status 등 상대적으로 갱신 주기가 이질적인 데이터들은, 메인 루프가 상기 트리거 토픽에 의해 깨어났을 때 update() 함수 연쇄를 통해 논-블로킹 방식으로 최신 값만을 추출(Fetch)한다.

이러한 전형적인 메시지 지향 미들웨어(MOM) 아키텍처는 제어 코드의 모듈성(Modularity)을 극한의 수준으로 끌어올리며, 초창기 Ardupilot의 거대 전역 변수(Global Variable) 중심 함수 호출 모델이 필연적으로 야기하는 강력한 결합도(Tight Coupling) 기반 스파게티 로직 및 스레드 락 경합 병목을 성공적으로 방어하는 현대적 시스템 토폴로지이다.

1.2 통신 지연(Latency) 유발 인자 및 이종 타이밍(Heterogeneous Timing)의 원인

비동기 메시징 네트워크 분산 통신 시스템에서는 물리적으로 지연(Latency) 시스템 전달 시간과 타이밍 불일치(Jitter) 현상이 숙명적으로 동반된다. 특히 navigator와 같이 위치 제어 최상단 통치 레이어에서 글로벌 궤적을 계획하는 알고리즘 파트는 다음과 같은 복합적 지연 오차 요인에 빈번히 편출된다.

  • 센서 샘플링 물리 지연: GPS 수신 모듈이 위성단 포지셔닝 삼각측량을 계산하고 UART 인터페이스 큐를 통해 메인 프로세서 램(RAM)으로 데이터를 이관하기까지 구조적으로 수십에서 수백 밀리초(ms)가 고정 소요된다.
  • 필터 융합 연산 지연: EKF2 모듈이 IMU 공분산 행렬과 GPS 위치 계수, 기압계 센티미터 변화를 다중 융합하여 vehicle_local_position 토픽을 최종 방출하는 데 소모되는 수학적 추정 딜레이.
  • 파이프라인 큐 라우팅 지연: MAVLink 메시지(예: 경로점 업로드)가 GCS 디스플레이 단에서부터 출발해 RF 텔레메트리 대역폭 한계를 거쳐 mavlink_receiver 백그라운드 스레드를 지나 navigator 버퍼에 안착하기까지의 네트워크 물리망 전파 시간.

단순하게 제어기가 ’가장 최근 도달한 uORB 값’을 ’기하학적 기체의 완벽한 현재 물리 상태’로 맹신하고 궤적 이탈을 산출하면, 고속 순항으로 쾌속 비행하는 고정익 항공기나 극심한 가감속 기동을 수행하는 드론은, 지연된 시간만큼 낡은 상태를 추종하다 설정점을 오버슛(Overshoot)하게 되거나 심대한 제어 진동(Oscillation) 현상을 유발하는 치명성에 빠지게 된다.

1.3 지연 보상(Latency Compensation) 연산 파이프라인 및 수학적 설계 모델

PX4 프로토콜 스택은 이 지연 오차가 야기하는 제어 붕괴를 기조적으로 상쇄하기 위해, 마이크로초 단위의 절대적인 시스템 고해상도 타임스탬프(High-resolution Timestamp) 프로퍼티를 모든 uORB 토픽의 헤더 메시지(timestamp 필드)에 의무적으로 강제 기입하는 정책을 내재화했다. navigator는 이 타임스탬프 라벨을 근거로 삼아, 원천 데이터가 샘플링되어 생성된 과거 이력 시점과 현재 navigator 코드가 실행되는 틱(Tick) 시점(hrt_absolute_time() 시스템 함수 호출치) 간의 시차 델타 T(\Delta t)를 매우 정밀하게 도출해 낸다.

graph LR
    A[GPS / IMU 등 센서 <br/> 물리적 신호 샘플링 <br/> (t_sample)] -->|저수준 센서 드라이버| B(Timestamp 태깅 <br/> t_sample = 1000)
    B -->|EKF2 융합 연산 지연 / 행렬 계산| C[uORB 퍼블리시 큐 <br/> (t_pub = 1015)]
    C -->|RTOS 컨텍스트 스위칭 지연| D[navigator Fetch 시점 <br/> (t_now = 1020)]
    
    D -->|수학적 선외삽 (Kinematic Extrapolation)| E[지연 보상 수학적 연산: <br/> Pos_actual = Pos_meas + Vel_meas * (t_now - t_sample)]
    E -->|위상 오차 보강 기하학적 설정점| F[하위 ตำแหน่ง 제어기 모듈]

소스 코드 수준 프로세스로 진입해 관찰하면, navigator 모듈의 항법 위치 판단 로직은 특정 미션 경로점까지의 기하학적인 도달 여부(Acceptance Radius 진입 판별)를 산출하는 과정에서 단순히 밀려온 vehicle_local_position의 구형 좌표계만 읽지 않는다. 대신, 해당 토픽에 내재된 기체의 3축 정밀 속도(Velocity) 벡터 데이터 팩터에 도출된 지연 델타 타임스탬프 스칼라를 곱 연산하여 기구학적(Kinematic) 위치 선외삽(Extrapolation) 보상을 수리적으로 감행한다.

P_{compensated} = P_{measured} + V_{measured} \times (T_{now} - T_{timestamp})

1.4 비행 제어 및 MAVLink 관제와의 거시적 시너지 효과

이처럼 소프트웨어 공학적으로 강건히 구축된 타임스탬프 무결성 기반의 지연 보상 메커니즘 체계는 비단 기체의 자가 물리적 비행 궤적 부드러움을 보완하는 극소 미시적 효과에만 그치지 않는다. MAVLink 프로토콜 규격명세에서도 GCS와의 통신 시 시스템 타임싱크(TIMESYNC 메시지 규약) 마이크로 메커니즘을 지원하여, 지상 관제 메인 컴퓨터 시스템의 글로벌 시계(Global Clock NTP)와 기체 비행 컨트롤러 내부의 자체 마이크로컨트롤러 클럭 위상을 정합적으로 동기화시켰다.

결론적으로, PX4-Autopilot 아키텍처는 GCS 텔레메트리 단절로부터 뒤늦게 밀려 전송 발송된 “임무 스크립트 전환” 또는 “비행 제어권 변경“과 같은 제어 지연 커맨드들이 기체에 낡은 타임스탬프로 도달하더라도 무리한 하드웨어 불연속적 계단형 파형 응답(Step Response)을 만들어내지 않으며, ROS2 DDS 미들웨어 등 외곽 이종 런타임 네트워크 노드(VIO 스테레오 센서 등)가 주입하는 오프보드(Offboard) 목표 지점 역시 파이프라인 지연을 역산하여 매끄럽게 추종하게 지원하는 최고 수준의 동역학적 궤적 제어 정밀도를 지탱하는 기저 반석이 된다.