### 0.0.1 PX4 EKF2의 전처리(Pre-processing) 블렌딩 모듈 분리 구조 vs Ardupilot EKF3의 다중 코어 레인(Multi-core Lane) 동시 평가 및 선별(Selection) 구조 차이

### 0.0.1 PX4 EKF2의 전처리(Pre-processing) 블렌딩 모듈 분리 구조 vs Ardupilot EKF3의 다중 코어 레인(Multi-core Lane) 동시 평가 및 선별(Selection) 구조 차이

다중 센서 환경에서 기체의 생존성을 보장하기 위해, 두 오픈소스 진영은 각기 다른 수학적 모델과 아키텍처를 선택했다. PX4는 수학적 우아함과 효율성을 극대화한 전처리(Pre-processing) 융합 방식을 고안해 냈고, Ardupilot은 무식하지만 절대적으로 안전한 다중 코어 레인(Multi-core Lane) 동시 평가 방식을 아키텍처의 근간으로 삼았다.

본 절에서는 듀얼 GPS 환경을 가정하고 이 두 칼만 필터(EKF) 엔진의 동작 구조를 소스 코드 레벨 디자인 패턴 관점에서 집중적으로 비교한다.

0.1 PX4 EKF2: ’똑똑한 비서(Blender)’를 둔 단일 심사위원 모델

PX4의 센서 융합 모듈, 특히 EKF2는 자신에게 들어오는 입력(Input) 개수를 최소화하려는 강박을 가지고 있다.

  • 구조적 분리: EKF2 메인 필터 외부(front-end)에는 ekf2_gps_blending.cpp (또는 최신 센서 허브)라는 독립된 전처리 모듈이 상주하고 있다. 이 모듈의 역할은 유능한 비서와 같다. 메인 필터가 수많은 GPS 센서 시그널에 파묻혀 혼란스러워하지 않도록, 들어오는 여러 대의 GPS 데이터를 역분산 가중치(Inverse-Variance Weighting)를 사용해 완벽히 하나로 섞어버린다(Blending).
  • EKF2 코어의 시각: 비서(전처리 모듈)가 융합해 낸 단일한 ‘Blended GPS’ 토픽만을 수신하는 EKF2 코어 입장에서는, 드론에 GPS가 1대가 달려 있든 3대가 달려 있든 아무런 차이가 없다. 그저 세상에 가장 완벽한 가상의 단일 GPS 하나가 존재하는 것처럼 가정하고 메인 행렬 연산을 수행한다.
  • 효율성과 수학의 승리: 이 방식은 필터 내부의 상태 변수(State Vector) 차원을 고정시켜 메모리와 CPU 소모를 극적으로 줄인다. 하드웨어 자원이 열악한 환경에서도 훌륭한 융합 성능을 뽐낼 수 있는 수학적 최적화의 결정체라 할 수 있다.

0.2 Ardupilot EKF3: ’무한 경쟁’을 주도하는 다중 코어 레인(Multi-Lane) 모델

반면, Ardupilot EKF3의 철학은 철저히 비관적이다. “미리 섞지 마라. 쓰레기(Garbage)가 조금이라도 섞이면 필터 전체가 오염된다.”

  • 레인(Lane)의 복제: Ardupilot은 다중 센서가 감지되면, 메모리 위에 EKF 코어 연산기 전체를 복제(Clone)하여 여러 개의 레인(Lane) 을 창설한다. 예를 들어 GPS가 2대, IMU가 2대라면, [IMU1+GPS1], [IMU1+GPS2], [IMU2+GPS1] 처럼 서로 다른 센서 조합을 사용하는 독립된 병렬 EKF 필터(Lane)들이 평행 우주처럼 동시에 돌아가게 된다.
  • 동시 평가와 가혹한 선별(Selection): EKF3의 최상단에는 Lane Selector라는 잔혹한 심사위원이 앉아 있다. 심사위원은 매 틱(Tick)마다 각 Lane들이 제출하는 이노베이션(Innovation, 예측과 관측의 오차 격차) 수치와 분산 에러 율을 실시간으로 채점한다.
  • 만약 [IMU1+GPS1] 조합을 쓰던 Lane 1의 에러율이 치솟기 시작하면(GPS1에 다중 경로 간섭 발생 등), Lane Selector는 즉시 조종간을 빼앗아 가장 건강한 [IMU1+GPS2] 조합을 돌리고 있던 Lane 2에게 기체 제어 전권을 넘겨버린다(Lane Switching).
  • 이러한 아키텍처는 에러가 발생한 센서의 데이터를 1%도 섞지 않고 완전히 배제(Isolate)할 수 있으므로, 재앙적인 시스템 오류 앞에서도 기기묘묘한 생존력을 자랑한다. 다만, 무거운 EKF 필터를 여러 개 동시에 돌려야 하므로 STM32 H7급 이상의 고성능 마이크로컨트롤러(MCU)가 필수적으로 요구된다.

0.3 결론: Blending vs Parallel Isolation

PX4의 전처리 블렌딩(Pre-processing Blending) 이 제한된 컴퓨팅 파워를 우아하게 요리하는 소프트웨어 엔지니어링의 정점이라면, Ardupilot의 다중 코어 레인(Multi-core Lane) 구조는 하드웨어의 힘을 빌려 어떠한 에러의 교차 오염(Cross-contamination)도 원천 봉쇄하려는 브루트 포스(Brute-force)적 결함 허용(Fault Tolerance) 철학의 산물이다. 각 오픈소스 진영이 추구하는 신뢰성(Reliability)의 방향성을 엿볼 수 있는 가장 흥미로운 기술적 격전지다.