### 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 아키텍처의 위대한 데이터 철학이다.