### 0.0.1 다중 센서 융합(Fusion) 알고리즘 처리 체계 비교

### 0.0.1 다중 센서 융합(Fusion) 알고리즘 처리 체계 비교

드론의 두뇌라 불리는 비행 제어기(FC)의 진정한 실력은, 수집된 여러 센서 데이터를 어떻게 요리하여 “현재 나는 공간상 어디에, 어떤 자세로 떠 있는가?“를 추정해 내는 센서 융합(Sensor Fusion) 알고리즘에서 판가름 난다.

PX4와 Ardupilot 모두 칼만 필터(Kalman Filter)의 확장판인 EKF(Extended Kalman Filter) 계열을 주력으로 사용하고 있다. PX4는 EKF2를, Ardupilot은 EKF3를 표준 융합 코어로 삼고 있는데, 두 커뮤니티는 다중(Multi) 센서가 장착된 레드 던전(Redundant) 시스템을 수학적으로 처리하는 설계 철학에서 완전히 다른 해법을 내놓았다.

본 절에서는 동일한 센서 조건 아래서 두 알고리즘 아키텍처가 데이터를 소화하고 결론을 도출해 내는 극명한 체계적 차이를 분석한다.

0.1 전처리 기반의 단일 필터(Single Filter) 방식: PX4-Autopilot (EKF2)

PX4의 센서 융합 철학은 “필터 내부의 수학을 최대한 단순하게 유지하라“는 명제에서 출발한다.

  • 관측치(Observation)의 사전 병합: PX4 기체에 두 대의 번쩍이는 GPS 안테나가 달려 있다고 가정해 보자. 앞서 12.6.2절에서 다루었듯, PX4의 EKF2 (또는 센서 허브 모듈)는 이 두 쌍의 좌표계가 필터 내부의 코어 알고리즘(State Estimation)으로 밀려 들어오기 전에, 이미 밖에서 역분산 가중 평균(Inverse-Variance Weighted Blending)을 통해 단 하나의 ’완벽에 가까운 가상의 단일 센서 좌표’로 뭉뚱그려(Flatten) 버린다.
  • 단일 칼만 필터 코어: EKF2 메인 연산 루프는 오로지 한 세트의 IMU 데이터와, 한 세트의 정제된(Blended) 관측 데이터만을 입력받아 거대한 자코비안(Jacobian) 행렬 연산을 수행한다.
  • 장점: 메인 필터가 하나뿐이므로 메모리 사용량(RAM)과 CPU 연산 부하가 극적으로 적다. 융합의 차원(Dimension)이 고정되어 있어 수학적 안정성이 높으며, 코드의 기하급수적인 복잡성 폭발을 막을 수 있다.
  • 단점: 밖에서 미리 데이터를 섞어버리므로, 특정 센서가 고장 났을 때 필터 코어 내부의 정밀한 이노베이션(Innovation, 예측과 실제의 오차) 수치를 센서별로 독자적으로 추적하여 냉혹하게 걸러내기가 까다로울 수 있다.

0.2 다중 필터 레인(Multi-Lane) 병렬 평가 방식: Ardupilot (EKF3)

PX4의 방식이 ’믹서기(Blender)’라면, Ardupilot의 EKF3는 똑같은 설계도를 가진 여러 개의 개별 ’심사위원단(Multi-lane)’을 병렬로 운용하는 무식하지만 극히 강력한 방식이다.

  • 동시 다발적 섀도우(Shadow) 필터링: Ardupilot 기체에 두 대의 GPS와 두 대의 IMU가 달려 있다면, EKF3는 메모리 상에 칼만 필터 코어 연산기(Lane이라 부름)를 2개 이상 복제(Clone)하여 띄운다.
  • Lane 1은 (IMU1 + GPS1) 조합으로 궤적을 추정하고, Lane 2는 (IMU1 + GPS2), 잠재적인 Lane 3은 (IMU2 + GPS1) 조합으로 각자 독립된 평행 우주 속에서 3차원 위치 행렬을 맹렬히 계산해 낸다.
  • 레인 선별기(Lane Selector)의 등극: 이렇게 각 Lane들이 자신만의 답안지를 제출하면, EKF3의 최고 결정권자인 Lane Selector 가 각 답안지의 오차 분산(Variance)과 이노베이션 건강도(Innovation Health)를 통합 평가하여 가장 성적이 우수한 단 하나의 Lane의 결과값만을 채택(Selection)해 기체 제어 루프에 던져준다.
  • 장점: 특정 파이프라인(예: IMU2나 GPS1)이 서서히 미쳐가더라도, 이미 완벽히 오염도가 격리된 다른 Lane이 묵묵히 정답을 내고 있으므로 에러의 간섭(Cross-contamination)이 물리적으로 차단된다. 최고 수준의 생존성(Survivability)과 결함 허용도(Fault Tolerance)를 제공한다.
  • 단점: 무겁다. 무지막지하게 무겁다. 거대한 행렬 역전(Matrix Inversion) 연산을 수행하는 EKF 코어를 메모리에 두세 개씩 띄워놓고 매 틱마다 동시에 계산해야 하므로 구형 STM32F4 CPU 환경에서는 연산 지연(Latency)의 주범으로 내몰리기도 했다. 최신 프로세서(H7 시리즈 등)로 오면서 이 단점은 상쇄되었으나, 여전히 아키텍처의 비만도는 높다.

0.3 단일(Single)의 정밀함 vs 다중(Multi)의 생존성

두 방식 중 무엇이 완벽한 정답이라 말할 수는 없다.
PX4의 EKF2는 한정된 컴퓨팅 파워를 영리하게 아껴 쓰며, 전처리 과정에서 정교한 수학적 믹싱(Mixing)을 통해 노이즈를 깎아내는 우아한 마에스트로(Maestro) 에 가깝다.
반면 Ardupilot의 EKF3는 넉넉한 하드웨어 자원을 무기 삼아, 될 수 있는 모든 조합의 필터를 싹 다 돌려본 뒤 가장 강한 놈 하나만 살려내는 배틀로얄(Battle Royale) 식의 원초적 생존주의를 대변한다 할 수 있다.