Saltar al contenido
Guardian EyeTFG · Telecomunicaciones
Placa electrónica con múltiples componentes de superficie

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].

Primer plano de una placa de circuito impreso con componentes electrónicos

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.