### 0.0.1 하드웨어 인터럽트(Interrupt) 기반 PPS 캡처 타이머 처리 로직 및 전송 지연 시간(Transport Latency) 보상 수학적 모델

### 0.0.1 하드웨어 인터럽트(Interrupt) 기반 PPS 캡처 타이머 처리 로직 및 전송 지연 시간(Transport Latency) 보상 수학적 모델

NuttX 운영체제의 타임스탬프 동기화 뼈대를 이해했다면, 이제 드론 메인보드(Pixhawk) 내부에서 이 전기적 신호가 어떻게 기계 부품 수준의 정밀도로 낚아채여(Capture) 수학적으로 보정되는지 그 하위 계층(Low-level) 로직을 수리적으로 들여다볼 차례다.

0.1 직렬 통신 지연(Serial Latency)의 태생적 한계

GPS 파서가 수신을 완료한 시점(t_{recv})은 결코 우주에서 위성 위치가 계산된 시점(t_{meas})과 일치하지 않는다. 직렬 포트를 통해 전송되는 메시지가 100바이트 길이(L)이고 통신 속도가 115200bps(B)라면, 물리적 전송에만 최소 시간(t_{trans})이 소요된다.

t_{trans} = \frac{L \times 10 (\text{bits/byte})}{B} \approx 8.68 \text{ ms}

8.68\text{ ms} 동안 드론이 시속 100km로 달린다면 이미 약 24\text{ cm}의 물리적 위치 오차가 발생한다. 더 큰 문제는 내부 CPU 과부하로 인한 패킷 디코딩 지연(t_{decode})까지 합쳐지면 그 오차가 비선형적으로 커진다는 것이다. 결국 순수한 소프트웨어 폴링 방식으로는 아무리 노력해도 10ms 단위의 무작위 변동성(Jitter)을 이겨낼 수 없다.

2. 하드웨어 타이머 캡처(Timer Capture) 인터럽트의 원리

소프트웨어 스케줄러의 부정확성을 우회하기 위해, 픽스호크(Pixhawk) 등 비행 제어기 하드웨어는 GPS의 PPS 핀을 MCU(예: STM32 진영의 TIM 레지스터)의 입력 캡처(Input Capture) 전용 채널에 물리적으로 하드와이어드(Hardwired)시켜 둔다.

  • 배경 인터럽트(Background Interrupt): PPS 핀의 전압이 0V에서 3.3V로 튀어 오르는(Rising Edge) 바로 그 나노초(ns)의 찰나에, 하드웨어 타이머가 작동하여 현재 구동 중인 나노초/마이크로초 카운터 값을 독립된 레지스터(Capture Register)에 찰칵하고 복사해 둔다.
  • 이 동작은 NuttX 커널이 다른 스레드로 컨텍스트 스위칭(Context Switching)을 하든 말든, CPU가 잠들어 있든 상관없이 칩셋 레벨(Die-level)에서 무조건적인 절대 우선순위로 강제 집행된다. 이를 통해 획득된 시각(t_{pps\_cap})은 지터가 0.1마이크로초(0.1 \mu s)를 넘어가지 않는 신의 영역에 속한 타임스탬프다.

3. PPS 시각과 데이터 시각 매칭(Matching) 알고리즘

이제 소프트웨어 파서가 10~20ms 뒤늦게 헐떡거리며 메시지를 완전히 조립해 냈을 때, 이 바이트 덩어리(메시지)가 어떤 하드웨어 PPS 펄스의 짝(Pair)인지 알아내야 한다.

  1. 수신된 메시지는 항법 메시지 산출 시각(t_{meas}, 보통 GPS 정각 단위)을 담고 있다.
  2. 드라이버는 최근 몇 개 동안의 하드웨어 PPS 캡처 타임 배열(Ring Buffer)을 뒤져, t_{recv} - 100\text{ms} 근방에서 일어났던 t_{pps\_cap}을 찾아 매칭(Matching)시킨다.
  3. 만약 매칭된 캡처 시각이 없다면(케이블 단선이나 노이즈로 펄스를 놓친 경우), 하드웨어 보정을 포기하고 기존의 부드러운 소프트웨어 슬루 레이트 기반 \Delta t_{offset} 보정치만 소극적으로 적용한다.

4. 전송 지연 기호(Symbolic) 보상 모델

PPS와 데이터 매칭이 성공했다면, 최종적으로 uORB 버스에 발행(Publish)될 타임스탬프 T_{publish}는 다음과 같은 수학적 보상 모델을 따라 결정된다.

T_{publish} = t_{pps\_cap} + (t_{meas} - t_{meas\_정각})

여기서,

  • t_{pps\_cap} : 하드웨어 인터럽트로 낚아챈 초 정각(000ms)의 무결점 HRT 절대시간.
  • (t_{meas} - t_{meas\_정각}) : GPS 칩셋 내부에서 정각 이후 실제 위성 연산이 끝나 데이터가 찍힌 잉여 밀리초 (보통 0에 가깝거나 칩셋 특성에 따라 약간의 잔여 오프셋을 가짐).

결론적으로:
위 모델 방정식에는 t_{recv}t_{trans} 같이 통신 속도(B)나 데이터 길이(L)에 종속되는 느물거리는 변수들이 모두 소거(Cancellation)되어 버렸다. 오직 위성이 알려준 발송 시간과 MCU 하드웨어 인터럽트가 낚아챈 찰나의 시간만이 융합된다.
이 수리적 설계 덕분에 PX4 시스템은 아무리 싸구려 GPS 케이블을 쓰거나 노이즈로 인해 직렬 포트가 심하게 찌그러져 데이터가 늦게 도착하더라도, “이 좌표 데이터는 픽스호크 클럭 기준 정확히 X 마이크로초 과거에 측정된 것이다“라는 진실된 시간을 EKF2 추정기에 한 치의 오차 없이 배달할 수 있게 된다.