Arquitectura · Hardware
Dos cerebros mejor que uno
La Pixhawk y la Raspberry Pi no compiten por las mismas tareas: cada una domina un dominio distinto, y se comunican entre sí por MAVLink sobre UART.
Separación de responsabilidades
Por qué dos ordenadores y no uno solo
Podría parecer más simple resolverlo todo con un único ordenador de a bordo. El problema es que un mismo proceso corriendo la inferencia de un modelo de IA no puede garantizar, al mismo tiempo, la latencia de milisegundos que necesita el control de motores. Separar 'lo que no puede fallar' de 'lo que piensa' es una decisión de arquitectura, no una limitación de recursos.
Dominio de vuelo · Reflejos
Pixhawk 6X
Corre en tiempo real (RTOS) con firmware ArduPilot. Su única prioridad es mantenerse en el aire: estabilización crítica, gestión de motores y seguridad de vuelo. Es la parte del sistema que no puede fallar nunca — por eso corre un sistema operativo en tiempo real y no Linux de propósito general.
Dominio de aplicación · Inteligencia
Raspberry Pi 5 — Edge Companion
Corre Linux y se encarga de pensar y ver: visión por computador, las comunicaciones 4G, la gestión de la misión y la conexión con la nube (AWS), sin sobrecargar la controladora de vuelo. Incorpora un acelerador Hailo-8 (26 TOPS) para ejecutar la inferencia de YOLO sin saturar la CPU.
La Raspberry Pi también se conecta a la red segura de Tailscale, lo que permite acceder a ella de forma remota sin necesidad de configurar una IP fija ni abrir puertos en el router — algo especialmente útil trabajando desde el campo, en el club de vuelo.
Cómo hablan los dos cerebros
MAVLink: por qué elegimos Pixhawk y no algo más barato
La Pixhawk 6X no es la controladora de vuelo más económica del mercado — pero es la que nos permite que la Raspberry Pi hable con ella de tú a tú.
Existen controladoras de vuelo bastante más baratas que la Pixhawk 6X. En el mundo del FPV racing es habitual usar controladoras con firmware Betaflight o iNav —por ejemplo una SpeedyBee F405—, pensadas sobre todo para vuelo acrobático manual, con poca o ninguna atención a exponer sus datos y sus órdenes a un ordenador externo. El propio dron que nos prestó José Manuel (ver Colaboradores) monta una controladora DJI Naza: un sistema cerrado, sin firmware abierto ni un protocolo estandarizado para que un ordenador externo la controle. Elegimos la Pixhawk 6X, con firmware ArduPilot, justo por lo contrario: habla MAVLink, un protocolo abierto pensado para que un ordenador externo —en nuestro caso, la Raspberry Pi— pueda enviarle órdenes de vuelo y leer sus datos en tiempo real, con la misma solidez que usaría una estación de tierra profesional.
ArduPilot es el firmware de código abierto que corre dentro de la Pixhawk 6X: el programa que de verdad estabiliza el dron, gestiona sus motores y ejecuta cada orden de vuelo. Es uno de los dos grandes firmwares de autopiloto de código abierto que existen hoy (el otro es PX4), con más de una década de desarrollo detrás — lo que se traduce en documentación madura y un soporte muy completo de MAVLink.
MAVLink (Micro Air Vehicle Link) es un protocolo de mensajería ligero, pensado específicamente para vehículos no tripulados con recursos limitados: en vez de una conexión pesada tipo HTTP, define mensajes muy compactos y de formato fijo. Por ejemplo, un mensaje HEARTBEAT que la Pixhawk envía varias veces por segundo para decir «sigo aquí, y este es mi estado», o un mensaje COMMAND_LONG que se usa para pedir que arme motores, despegue o inicie una misión. Es un estándar abierto —no depende de un único fabricante— adoptado tanto por ArduPilot como por PX4, y es el mismo protocolo que ya usan Mission Planner o QGroundControl para hablar con la Pixhawk por telemetría (ver Comunicaciones).
Físicamente, la Pixhawk 6X saca ese protocolo por varios puertos TELEM (TELEM1, TELEM2...), además de sus puertos dedicados de GPS y de RC. Cada puerto TELEM es una conexión serie UART — un estándar de comunicación simple, de solo dos cables (uno para transmitir y otro para recibir), pensado para conectar dos dispositivos directamente sin necesidad de un bus compartido ni de mucha electrónica intermedia. Es precisamente esa disponibilidad de puertos TELEM libres lo que nos permite, además del enlace de radio de 433 MHz hacia la estación de tierra, conectar un segundo dispositivo por otro puerto TELEM: nuestra Raspberry Pi 5. La propia Raspberry Pi le habla MAVLink a la Pixhawk exactamente igual que lo haría una estación de tierra — solo que por cable, en vez de por radio.
Lo que gana el proyecto por tener un ordenador de a bordo hablando MAVLink: que la Raspberry Pi deje de ser solo un ordenador de vídeo y se convierta en un segundo cerebro de verdad. Al hablar MAVLink directamente con la Pixhawk, puede tanto leer en tiempo real la posición, la altitud o el estado de la batería del dron —los mismos datos que seguiría un GCS— como enviarle órdenes de vuelo: armar o desarmar motores, iniciar una misión, forzar un regreso a casa (RTL). En Guardian Eye, ese canal es exactamente el que usa receptor.py, el proceso que recibe comandos desde el panel de control (PWA) por MQTT y los traduce en órdenes MAVLink reales contra la Pixhawk (ver Datos e IoT y Software & Cloud para el resto del recorrido de un comando).
Todo esto se programa en Python usando pymavlink, la librería de referencia del propio proyecto ArduPilot para hablar MAVLink desde código: permite tanto construir y enviar un mensaje MAVLink concreto —por ejemplo, uno de armado— como escuchar los mensajes que la Pixhawk envía constantemente y extraer de ellos la telemetría. Es esa misma librería, no una reimplementación propia del protocolo, la que usa receptor.py en la Raspberry Pi para traducir cada comando que llega por MQTT en la llamada MAVLink correspondiente.
Pipeline de hardware modular
- Chasis
- Holybro X500 V2 — cuadricóptero de 500 mm en fibra de carbono
- Flight Controller
- Pixhawk 6X (Holybro), firmware ArduPilot
- GPS
- Holybro M10 GPS
- Receptor de radio
- FlySky FS-iA10B (mando FS-i6X)
- Motores
- 4× brushless 2216 (920 KV) con hélices 1045
- ESC
- 4× variadores de 20-30 A
- Batería
- Li-Po 4S (14,8 V), 5.000 mAh
- Acelerador de IA
- Raspberry Pi AI HAT+ — Hailo-8 (26 TOPS), por PCIe
- Cámara
- Raspberry Pi Camera Module 3 (CSI)
- Sensor ambiental
- Bosch BME680 — I2C, temperatura/humedad/presión/VOC
- Módem de datos
- 4G/LTE por USB
- Buses
- MAVLink (UART) · I2C · GPIO
- Peso total al despegue (MTOW)
- 1.817 g, verificado en báscula
Protección térmica física de los componentes críticos: [placeholder — no hay diseño de disipación específico documentado, solo monitorización por software de la temperatura de la Raspberry Pi].
Glosario rápido
RTOS
Sistema operativo en tiempo real: garantiza que una tarea crítica (como mantener el dron estable) se ejecute siempre dentro de un plazo fijo, algo que un sistema operativo de propósito general como Linux no puede prometer.
I2C / GPIO
Dos formas más de conectar electrónica sencilla, junto al UART que la Pixhawk usa para hablar MAVLink: I2C para varios sensores compartiendo el mismo bus (como el BME680), GPIO para señales digitales simples.
¿Por qué un acelerador Hailo-8 y no solo CPU? Ejecutar un modelo de detección de objetos como YOLO fotograma a fotograma es costoso computacionalmente. Un acelerador de IA dedicado descarga ese trabajo de la CPU, permitiendo que la Raspberry Pi siga gestionando comunicaciones y misión a la vez que procesa vídeo en tiempo real, sin cuellos de botella.
Nota: el LiDAR y la visión térmica aparecen en algunos materiales de difusión iniciales del proyecto (tipo pitch-deck), pero están descartados de la arquitectura real — esta página documenta únicamente el hardware efectivamente usado.