martes, 13 de septiembre de 2022

MAVLink, protocolo de comunicación entre vehículos no tripulados, sus componentes y sistemas de control

Hola de nuevo, voy a dar una breve introducción acerca de MAVLink desde una perspectiva menos técnica.

MAVLink (Micro Air Vehicle Link) es un protocolo que emplea el uso de mensajes y comandos para establecer una comunicación entre uno o varios micro vehículos aéreos o MAV y el sistema o sistemas que lo monitorizan, controlan o simplemente complementan. UV (Unmanned Vehicle/vehículo no tripulado) es un término más general que MAV, pues el protocolo también es usado en vehículos no aéreos.

Figura 1. Arduino Uno (izquierda) conectado mediante serial a puerto de telemetría del autopilot Pixhawk (derecha)

Estos MAV (hablaremos de los aéreos continuamente) cuentan con lo que se conoce como autopilot, el "cerebro" que se encarga de tomar las decisiones finales, o actuaciones, que implican a los diferentes componentes del MAV y lo hacen funcionar. Esto tiene lugar tras considerar una gran cantidad de parámetros que rodean a la misión: características externas (viento, presión atmosférica) e internas al mismo (limitaciones establecidas en algunos de sus parámetros, batería, grado de inclinación de sus ejes), y las instrucciones que reciba desde un sistema de control.

Existen muchos controladores autopilot en el mercado, Pixhawk es uno de los más populares. Estos implementarán el software que más te convenga según tu objetivo. De nuevo, los más conocidos hoy día son ArduPilot y PX4, open-source y que además cuentan con una buena comunidad. Nuestro autopilot irá literalmente pegado a nuestro dron durante su misión. Y repito, que para poder controlarlo y monitorizarlo, necesita de MAVLink para comunicarse con sus sensores y sistemas externos.

En el muy simplificado escenario de la imagen, vemos un autopilot Pixhawk 4 (versión del firmware FMU-V5 )  que implementa el software PX4. Este está conectado a una placa Arduino Uno mediante conexión directa (serial) y ambas se comunican usando como puente el protocolo MAVLink.

Para, por ejemplo, leer los mensajes que PX4 enviaría constantemente a Arduino, flasheamos un simple programa que se encarga de 1. preparar el ecosistema necesario para establecer la conexión Arduino<-->Pixhawk, y 2. capta y decodifica los mensajes recibidos. El programa de Arduino, por supuesto, incluye la librería de MAVLink (en C), sin la que no podría comunicarse con PX4 (quien también implementa soporte para el protocolo de entre todos sus módulos, claro).

Documentación de MAVLink en http://mavlink.io/en/.

Cualquier malentendido o perspectiva errónea descrita anteriormente que sea señalada será abiertamente considerada.

4 comentarios: