18.8.1.1. 픽스호크 보드 내 메인 MCU(FMU)와 코프로세서(IO MCU) 간의 상태 및 액추에이터 명령 전송 구조

18.8.1.1. 픽스호크 보드 내 메인 MCU(FMU)와 코프로세서(IO MCU) 간의 상태 및 액추에이터 명령 전송 구조

전통적인 픽스호크(Pixhawk) 하드웨어 아키텍처는 항공 비행의 절대적 안정성과 예기치 못한 시스템 패닉에 대비한 페일세이프(Failsafe)를 담보하기 위해, 고차원 사고를 관장하는 뇌(Brain)와 기초 반사를 담당하는 척수(Spinal Cord)를 엄격히 분리하는 듀얼 마이크로프로세서(Dual-MCU) 디자인을 채택하고 있다. 복잡한 추정 상태 연산을 담당하는 메인 MCU (FMU, Flight Management Unit)와, 구조는 단순하지만 시스템 전원이 끊기기 전까진 절대 멈춰서는 안 되는 PWM 모터 입출력을 전담하는 보조 코프로세서 (IO MCU)가 바로 그것이다. 본 절에서는 이 두 분리된 칩셋이 uORB 오프보드 브릿지 파이프라인을 통해 어떻게 각자의 상태(Status)를 실시간 교환하고, 드론의 운명을 결정짓는 액추에이터(Actuator) 제어 명령을 상호 전송하는지 구조적으로 해부한다.

1. 척수(IO MCU)로부터 뇌(FMU)로 향하는 상향(Upstream) 통신

IO MCU 플라잉 보드는 조종기(Radio Control)의 무선 수신기와 가장 최전선 핀(Pin) 레벨에서 직접 결선되어 있으며, 메인 FMU가 연산 과부하로 일시적으로 크래시(Crash)되거나 먹통이 되더라도 하드웨어적으로 기체를 추락시키지 않고 즉각 수동 트랜션(Manual Transit) 모드로 살려내기 위한 RC 인터럽트 하드웨어 반사 로직을 독점 관리한다.

  1. RC 인풋 원시 데이터 송출: IO MCU는 S.BUS, PPM, 혹은 Spektrum 프로토콜로 끊임없이 들어오는 원시 외부 조종기 신호를 실시간으로 파싱하여 정제된 input_rc 혹은 rc_channels uORB 토픽 C++ 구조체로 1차 포장한다. 이를 고속 시리얼 버스를 통해 메인 FMU로 쏘아 올리면, FMU 측의 수신 백그라운드 에이전트(px4io 직렬 드라이버 프로세스)가 인터럽트로 이를 받아 FMU 로컬 RAM의 VFS uORB 공간에 정식 퍼블리시(Publish)하여 뇌에 전달한다.
  2. IO 코프로세서 상태 및 저전압 보고: IO MCU는 단순히 명령을 수행하는 노예가 아니라 스틱 입력 및 페일세이프 전환 여부, 배터리 서보 레귤레이터 보드 전압 알람 상태, 내부 하드웨어 건강 정보 등을 꽉꽉 눌러 담은 io_status 전용 토픽을 FMU로 지속 패키징 리포트(Report)하여, 메인 뇌가 하위 척추 신경망의 데드락 건강 상태를 10Hz~50Hz 단위로 모니터링할 수 있게 돕는다.

2. 뇌(FMU)로부터 척수(IO MCU)로 향하는 하향(Downstream) 통신

고차원 비행 안정성 알고리즘 연산(EKF 추정 및 PID/LQR 자세 제어)은 오직 고성능 FMU에서만 이루어지며, 이곳에서 최종 산출된 블레이드 모터 및 서보 제어 명령은 일체의 오버헤드나 지연(Latency) 없이 IO MCU 버스로 하달되어야만 실제 하드웨어 전압 PWM 신호로 변환된다.

  1. 액추에이터 제어 명령(actuator_outputs) 수송: FMU의 믹서(Mixer) 혹은 할당(Allocation) 모듈에서 각 개별 모터별로 정교하게 계산된 -1.0 ~ 1.0 사이의 정규화된 제어 값(혹은 마이크로초 단위 PWM 펄스폭)은 actuator_outputs 또는 논리적 actuator_controls 멤버 구조체 세트로 세팅된다.
  2. 시리얼 버스 병목 브레이커 (Down-sampling Rate Constraining): 멀티로터의 하드 리얼타임 제어 루프는 최대 1,000Hz 이상으로 도달할 수 있으나, IO MCU와의 하위 하향 버스(통상 1.5Mbps UART)는 이를 1:1로 모두 수용하기엔 물리적으로 벅찰 수 있다. 따라서 FMU의 병합 브릿지 드라이버 로직은 모터 명령 업데이트 인터벌 빈도를 하단 ESC의 PWM 물리적 수신 한계 주파수(예: 400Hz 기본)에 맞추어 지능적으로 다운샘플링(Down-sampling) 변환한 뒤 시리얼 인터페이스 패키징을 밀어내어, 물리 버스 포화(Saturation)를 예방하는 스마트 밸브 역할을 충실히 수행한다.

3. 하드웨어 매크로: 믹싱 릴레이(Mixing Relay) 지상주의 아키텍처

최신의 진보된 PX4 모터 제어 인프라에서는 단순히 무식하게 8개 핀의 PWM 수치만을 1차원적으로 넘기는 릴레이를 넘어, 객체 지향 다형성을 확보할 수 있도록 진화했다.
FMU 측에서는 자신의 하드웨어가 무슨 모양인지 세세히 신경 쓰지 않고 제어 그룹의 순수 논리적 조향 토크(Torque) 신호 배열(예: Roll, Pitch, Yaw, Thrust)만을 actuator_controls 통합 토픽으로 뭉뚱그려 보내기만 한다. 이를 수신한 IO MCU는 내부 프로세서 공간에서 자기가 메모리로 관장 중인 물리적 기체 형상(예: 쿼드콥터 X형, 헥사콥터, 혹은 VTOL) 믹서 매트릭스에 맞추어 **로컬 하드웨어 믹싱 행렬 연산(Local Hardware Matrix Mixing)**을 독립적으로 수행해 실제 1번부터 8번까지의 핀(Pin) 단위 PWM 물리 출력 전압으로 최종 환산 분배하기도 한다.

이러한 수직적 믹싱 설계 분리는, 상위 FMU 입장에서는 자신이 매달린 기체 프레임이 무엇이든 변경 없이 통일된 비행 논리 명령만 내리면 되게끔 압도적인 추상화(Abstraction)를 선사하며, 동시에 칩셋 이종 간 통신 I/O 데이터 바이트 사이즈를 극한으로 다이어트(Diet)시켜 시리얼 여유 대역폭을 창출해 주는 임베디드 소프트웨어 공학의 찬란한 백미라 할 수 있다.