1.1.2.2 비행 제어기(Flight Controller)의 두뇌 역할과 연산 처리 구조
무인항공기 시스템(UAS)의 가장 핵심적인 지능(Intelligence)과 물리적 통제력을 담당하는 중심 컴포넌트는 단연 비행 제어기(Flight Controller, FC)이다. 초창기의 단순한 원격 조종(Radio Control) 시대에는 아날로그 자이로스코프(Gyroscope)만을 이용해 기체의 순간적인 기울기만을 수동적으로 보정하는 안정화 장치(Stabilizer)에 불과했으나, 오늘날의 FC는 수십 개의 임베디드(Embedded) 센서 데이터와 상위 레벨의 지리적 임무 명령을 1밀리초(ms) 단위로 병렬 처리하는 정밀한 비행 통제 컴퓨터(Flight Management Computer) 로 진화하였다.
특히 전 세계적인 산업 표준으로 자리 잡은 픽스호크(Pixhawk) 하드웨어와 PX4-Autopilot 소프트웨어 스택(Stack)의 결합은 이러한 진화의 정점을 수미일관하게 대변한다. 본 절에서는 비행 제어기가 기체의 두뇌로서 구체적으로 어떤 논리적 역할을 수행하는지, 그리고 입력 센서에서 모터 출력에 이르는 데이터 연산 아키텍처(Data Processing Architecture)를 심층 분석한다.
1. 비행 제어기의 3대 핵심 역할 (Core Roles)
현대의 비행 제어기는 단순히 프로펠러를 일정한 속도로 회전시키는 기계적 드라이버가 아니다. 비행 제어기의 본질적 역할은 인지(Perception), 판단(Estimation & Control), 행위(Actuation) 의 3단계 제어 루프(Control Loop)로 엄격하게 추상화(Abstraction)된다.
- 동역학적 상태 추정 (State Estimation)
관성 측정 장치(IMU: 가속도계 및 자이로스코프), 지자기 센서(Magnetometer), 기압계(Barometer), GPS 등 잡음(Noise) 특성과 업데이트 주기가 판이한 이기종 센서들의 비동기적(Asynchronous) 신호를 취합한다. PX4의 경우, 확장 칼만 필터(EKF2, Extended Kalman Filter) 알고리즘을 엔진으로 채택하여 센서들의 고유한 열화학적 노이즈를 수학적으로 차폐한다. 이를 통해 기체의 현재 3차원 자세(Attitude), 속도(Velocity), 그리고 글로벌 위치(Position) 벡터를 수천 분의 1초 단위로 정밀하게 역산(Inverse Calculation)해낸다. - 다중 루프 제어 연산 (Multi-loop Control Algorithm)
지상 통제 시스템(GCS)에서 하달된 목표 웨이포인트(Target Waypoint) 연산이나, 조종기의 피치/롤(Pitch/Roll) 스틱 입력과 같은 ’목표 상태(Set-point)’와 앞서 EKF2가 연산한 ‘현재 추정 상태(Estimated State)’ 간의 차이, 즉 오차 행렬(Error Matrix)을 산출한다. PX4는 위치 제어(Position), 속도 제어(Velocity), 자세 제어(Attitude), 각속도 제어(Rate)로 상속되는 캐스케이드(Cascade) 형태의 PID 제어 루프를 가동하여 이 오차를 0으로 극한 수렴시키는 즉각적인 보상 토크(Torque)를 계산해낸다. - 지능형 액추에이션 할당 (Control Allocation)
산출된 물리적 보상 토크를 기체의 기하학적 구조(예: 쿼드콥터, 헥사콥터, 고정익 등) 역학에 맞게 재분할하여 개별 모터나 서보 모터(Servo)의 전기적 출력 신호(PWM 또는 DShot)로 할당(Mixer)한다. 특정 모터가 물리적인 타격을 입어 회전을 상실하더라도, 잔여 모터의 출력을 실시간으로 재분배하여 추락을 막고 기체의 스핀(Spin) 안정성을 유지시키는 페일세이프(Failsafe) 믹싱 로직도 이 단계에서 발현된다.
2. PX4-Autopilot 기반 데이터 연산 파이프라인 (Processing Pipeline)
PX4-Autopilot은 이렇듯 막대한 양의 병렬 부동소수점 연산을 처리함에 있어, 처리 지연(Latency)이 기체 추락으로 직결되는 현상을 막기 위해 범용 OS가 아닌 마감 시간(Deadline) 지정이 보장되는 넛엑스(NuttX) 실시간 운영체제(RTOS) 위에서 동작한다.
graph TD
subgraph 1. 센서 관측부 (Sensor Acquisition)
IMU[IMU <br>가속도 / 자이로]
MAG[지자기 센서 <br>Magnetometer]
GPS[GNSS / RTK <br>위치 / 속도]
end
subgraph 2. PX4-Autopilot 핵심 미들웨어 (uORB Bus)
EKF2[Estimator <br>EKF2 상태 추정 필터]
CTRL[Cascade Controller <br>다중 루프 PID 제어기]
MIX[Control Allocator <br>출력 믹싱 및 할당]
end
subgraph 3. 통신 및 외부 인터페이스
NAV[Navigator <br>임무 및 경로 상태 머신]
LINK[MAVLink <br>GCS 통신 직렬화 노드]
end
IMU & MAG & GPS -->|원시 센서 데이터| EKF2
LINK <-->|Waypoint / Command| NAV
NAV -->|비행 목표 좌표 Set-point| CTRL
EKF2 -->|3D 기체 상태 추정치 Estimated State| CTRL
CTRL -->|물리적 제어 토크 Control Torque| MIX
MIX -->|액추에이터 신호 PWM/DShot| MOTORS[브러시리스 모터 / ESC]
style EKF2 fill:#e3f2fd,stroke:#1565c0,stroke-width:2px,color:#000
style CTRL fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px,color:#000
style MIX fill:#fff3e0,stroke:#ef6c00,stroke-width:2px,color:#000
2.1 uORB 미들웨어 기반 퍼블리시-서브스크라이브 (Pub-Sub) 로직
PX4 아키텍처의 가장 위대한 공학적 성취는 uORB (Micro Object Request Broker)라는 미들웨어 전용 메시지 버스(Message Bus)의 탑재이다. PX4 내의 수많은 연산 모듈(Module)들은 C++ 포인터를 통한 직접 참조를 회피하고 오직 이 uORB 버스를 통해서만 제한적으로 소통한다.
가령 EKF2 모듈이 기체의 자세(Attitude) 추정 연산을 완료하면 이를 uORB 버스에 불특정 다수를 향해 발행(Publish)하고, 자세 제어기(Attitude Controller) 모듈이 이를 구독(Subscribe)하여 즉시 읽어가는 비동기적 전송 방식이다.
이러한 철저한 모듈 간 캡슐화(Encapsulation) 아키텍처는 비행 중 특정 서브루틴(Sub-routine)이나 외부 카메라 동기화 모듈 등에 치명적인 메모리 오류가 발생하더라도, 그 크래시(Crash)가 EKF2나 메인 제어기의 스레드(Thread)를 물고 늘어져 교착 상태(Deadlock)에 빠뜨리는 연쇄 붕괴를 원천 차단하는 가장 강력한 소프트웨어 안전 보장책이다.