### 0.0.1 uORB 파이프라인 및 Estimator(EKF2) 인입(Injection) 메커니즘

### 0.0.1 uORB 파이프라인 및 Estimator(EKF2) 인입(Injection) 메커니즘

직렬 버퍼의 가시밭길을 뚫고 조립된 GPS 백엔드 파서의 데이터는, 그 자체로는 기체를 날릴 수 있는 내비게이션 데이터가 수립되지 못한다. 픽스호크(Pixhawk) 코어 내부에 존재하는 이기종 센서들의 집합소, 즉 uORB (Micro Object Request Broker) 통신망을 거쳐 최종적으로 기체의 현재 상태를 추정하는 수학적 뇌(Brain)인 EKF2 (Extended Kalman Filter 2) 모듈에 성공적으로 인입(Injection)되어야만 진정한 생명력을 얻는다.

본 절에서는 단일 GPS 드라이버 스레드가 생산(Publish)한 데이터가 어떻게 자율주행 추정기의 심층부까지 흘러 들어가는지, 그 일련의 데이터 파이프라인(Data Pipeline)과 인입 메커니즘을 개괄적으로 조망한다.

0.1 sensor_gps 토픽(Topic): 데이터 버스의 여권(Passport)

우주에서 날아온 NMEA나 UBX 바이너리 포맷은 PX4 메인 시스템 입장에서는 해독 불가한 외국어와 같다. gps_main 스레드의 가장 중요한 마지막 임무는 제조사별로 제각각인 이 외국어를 sensor_gps_s 라는 C++ 구조체(Struct) 형태의 공통 언어로 번역하는 것이다. 잔여 파라미터나 불필요한 제조사 고유의 디버깅 플래그는 모두 버려지고, 위도, 경도, 고도, 속도벡터, 그리고 신뢰도 포착 지표인 epv(수직 오차 편차), eph(수평 오차 편차) 만이 엄선되어 이 구조체에 옮겨 담긴다.

이 데이터 덩어리는 orb_publish() C 함수를 타고 비행 제어기 내부의 가상 데이터 고속도로인 uORB 네트워크에 브로드캐스팅(Broadcasting)된다. 이제부터 이 데이터는 특정 하드웨어 드라이버의 소유물이 아니라, 구독(Subscribe) 권한을 가진 어떤 애플리케이션 모듈이라도 마음껏 가져다 쓸 수 있는 공공재 상태가 된다.

0.2 센서 허브(Sensor Hub)와 데이터 병합(Aggregation)

단일 GPS 위성 안테나 시스템이라면 sensor_gps 토픽이 곧장 추정기로 직행하겠지만, 현대의 전문가용 드론은 신뢰성을 위해 2대 혹은 3대의 다중(Multiple) GPS를 주렁주렁 매달고 다닌다.
따라서 uORB 네트워크는 이 데이터를 한 번 더 병합(Aggregation)하는 중간 기착지를 거친다.

  • 다중 인스턴스(Multi-instance) 퍼블리싱: 첫 번째 포트에 연결된 GPS는 sensor_gps 토픽의 0번 인스턴스로, 두 번째 포트는 1번 인스턴스로 각각 발행된다.
  • GPS 블렌딩(Blending): EKF 이전에 서식하는 sensors 모듈이나 전위 필터들은 이 여러 개의 GPS 인스턴스 토픽들을 동시에 구독(orb_subscribe_multi)한다. 그리고 각 GPS가 스스로 보고한 오차 수준(eph, epv)과 잡음(Noise) 상태를 실시간으로 평가하여, 두 센서의 좌표를 가중 평균(Weighted Average)으로 섞어버리는 ‘블렌딩(Blending)’ 과정을 수행하거나, 메인 센서가 죽었을 때 서브 센서로 스위칭(Switching)을 단행한다.

0.3 EKF2 인입(Injection): 융합 수학의 제단

블렌딩 모듈이나 직접 경로를 통해 살아남은 최정예 GPS 좌표와 속도 데이터 포인터는 드디어 내비게이션의 심장인 EKF2 (Extended Kalman Filter 2) 모듈 내부로 빨려 들어간다.

  • EKF2는 무작정 GPS 좌표를 맹신하지 않는다. 이 모듈은 내부적으로 이미 가속도계와 자이로스코프(IMU)를 적분하여 400Hz의 속도로 기체의 예상 궤적(Prediction State)을 쉼 없이 그리고 있는 상태다.
  • 지연 보상 롤백(Rollback): 앞서 설명한 타임스탬프 동기화를 통해 얻어낸 과거의 정밀 측정 시각(T_{publish})을 읽어낸 EKF2는, 자신의 IMU 적분 기록 버퍼를 롤백하여 과거 그 시점의 기체 예상 위치를 꺼낸다.
  • 이노베이션(Innovation) 산출: 꺼내온 과거 예상 위치와 현실의 GPS 관측 위치 사이의 거리 편차(오차)를 수학적으로 빼서 이노베이션(Innovation) 이라는 행렬 벡터를 도출해 낸다.
  • 칼만 게인(Kalman Gain) 곱셈 и 상태 갱신: 추출된 이노베이션 벡터에 GPS 모듈이 스스로 보고한 신뢰성 지표(epv, eph 기반의 관측 잡음 공분산 R)와 칼만 게인(K)을 곱하여 IMU 센서의 누적된 편향(Bias) 오류를 영구적으로 깎아내고 기체의 진정한 3차원 상태(State)를 확정 짓는다.

이 거대한 3단계 폭포수(드라이버 파싱 \rightarrow uORB 유통 \rightarrow EKF2 칼만 필터 인입) 파이프라인이야말로, 잡음 투성이의 무선 측위 전파를 기반으로 초정밀 자율 비행의 뼈대를 창조해 내는 PX4-Autopilot 아키텍처의 위대한 데이터 철학이다.