Artículos

MAVLink: protocolo de comunicación para drones

MAVLink
En este artículo te mostraremos todo aquello que necesitas saber para conocer a profundidad el protocolo de comunicaciones para drones MAVLink.

¿Qué es MAVLink?

MAVLink es un protocolo de comunicación especialmente desarrollado para el intercambio de información entre las estación de control en tierra y micro UAVs.  Este protocolo de comunicación ha sido diseñado a modo de una librería muy ligera que posee la información necesaria para el intercambio de mensajes llevados a cabo en la comunicación con micro UAVs. Dicha información se encuentra contenida en ficheros con extensión .xml, lo que permite que esta pueda ser estructurada y empaquetada empleando diferentes lenguajes de programación, consiguiendo así a facilitar el desarrollo de soluciones software para drones.

MAVLink es muy fácil de integrar en cualquier sistema tanto de en el vehículo como en la estación de control ya que la definición de los mensajes se realiza mediante cabeceras en lenguaje C. A pesar  de que la librería contiene una útil variedad de mensajes, es posible crear nuevos mensajes personalizados. Mavlink posee licencia LGPL (GNU Lesser General Public Licencense) lo que posibilita su uso tanto en proyectos close-source como open-source.

Paquete MAVLink

El paquete MAVLink consiste en una secuencia codificada de bytes.  Los protocolos Controller Area Network bus (CAN bus) y SAE AS-4 sirvieron de inspiración para la creación de la estructura de los paquetes de este protocolo para drones.  En la siguiente figura se presenta la estructura de un paquete MAVLink.

paquete mavlinkComo se puede observar en la figura anterior, la cabecera esta conformada por un conjunto de 6 bytes que indican diferentes metadatos asociados al mensaje. En la tabla siguiente se explica la función de cada byte de la cabecera:

ByteExplicación
Inicio Este byte indica el comienzo del paquete MAVLink.
Longitud Indica el número de bytes que se van a enviar como payload del mensaje. Puede tomar un valor entre 0 y 255.
Número de secuencia Muestra el número de paquete enviado según su pertenencia a la secuencia de los mismos con el objetivo de reordenar éstos en el destino (por si fuera éste de gran tamaño) o detectar paquetes perdidos. Puede tomar un valor entre 0 y 255.
Identificación del sistema Identifica el sistema, mediante un número natural, que ha enviado el mensaje permitiendo diferenciar entre varios sistemas de la misma red. Puede tomar un valor entre 0 y 255.
Identificación del componente del sistema Señala, mediante un número natural, el componente de dicho sistema que ha enviado el mensaje permitiendo de este modo diferenciar varios componentes dentro del mismo sistema. Puede tomar un valor entre 0 y 255.
Identificación del mensaje Indica el tipo de mensaje enviado, señalando cómo se tiene que leer el payload que viene a continuación. Utilizando un símil, es una leyenda que indica cómo se debe leer y traducir la carga útil del mensaje. Puede tomar un valor entre 0 y 255.

En el Payload o carga útil del paquete es donde se encuentra la información que se desea transmitir. Su tamaño se espefica en el segundo byte de la cabecera correspondiente a la longitud del mensaje. Puede transportar desde 0 hasta 255 bytes de datos.
El control de errores se realiza gracias a la información del Checksum.

Mensajes MAVLINK

Por otra parte, todos los mensajes creados usando este protocolo poseen el siguiente formato dentro de cada archivo xml:

Como se puede ver en la figura anterior, todos los mensajes son encerrados dentro de las etiquetas <message></message>. El byte de identificación del mensaje viene representado por el parámetro id. El nombre que ha sido dado al mensaje es indicado en el parámetro name. Para describir la funcionalidad del mensaje se emplea la etiqueta <description></description> parámetro name indica el nombre que toma el mensaje dentro del protocolo MAVLINK. 20 La etiqueta indica la funcionalidad del mensaje y cualquier información que fuera necesaria para que éste pueda ser entendido por el desarrollador. En cada etiqueta <type></type>  se indica cada parámetro (junto a su descripción) que necesita el mensaje para su correcta implementación. El campo type indica indica el tipo de dato aceptado por un determinado parámetro del mensaje. Estos parámetros pueden ser de tipo integer de 8, 16, 32 y 64 bit de longitud y de tipo float. El campo name indica el nombre del parámetro utilizado dentro del mensaje.

Autopilotos y paquetes software que soportan MAVLink

A continuación se muestran los autopilotos y paquetes software que soportan el uso del protolo MAVLink para intercambiar información entre la estación de control en tierra y el dron.

AutopilotosPrincipal / Opcional
ArduPilotMega Protocolo Principal
pxIMU Autopilot Protocolo Principal
SLUGS Autopilot Protocolo Principal
FLEXIPILOT Protocolo Opcional
UAVDevBoard/Gentlenav/MatrixPilot Protocolo Opcional
SenseSoar Autopilot Protocolo Principal
SmartAP Autopilot Protocolo Principal
AutoQuad 6 AutoPilot Protocolo Principal
SoftwareSistema Operativo
iDroneCtrl iOS
QGroundControl Windows/Mac/Linux
HK Ground Control Station Windows
APM Planner Windows/Mac
QGroundControl w/ AutoQuad MainWidget Windows/Mac/Linux
Mission Planner Windows
MAVProxy Windows/Mac/Linux

Seguridad

El Protocolo Mavlink no ofrece ninguna seguridad. No hay confidencialidad en el intercambio de datos, o mecanismos de autenticación y si bien existen mecanismos de integridad (CRC) son solo para la pérdida de datos y no para realizar una comprobación de manipulación.

En el siguiente vídeo se muestra como con un simple módulo de telemetría y una Raspberry Pi derribar un dron debido a una vulnerabilidad estructural del protocolo MAVLink en cuanto al manejo de los NETID.

Si bien el Protocolo Mavlink no es seguro, se puede encapsular en otros protocolos que ofrecen estándares más altos de seguridad, como DTLS (Datagram Transport Layer Security), para así garantizar que los paquetes MAVLink se entregan de forma segura.

Se han empleado iconos realizados por Roundicons

Ernesto Santana

Soy editor y administrador de XDrones.es, un portal web especializado en todo lo referente al mundo de las aeronaves no tripuladas (UAVs por su sigla en inglés) y/o drones.

Agregar un Comentario

Da un click para dejar un comentario

Suscríbete a nuestra Newsletter
Sumérgete en el emocionante mundo de los drones.
Privacidad garantizada. No hacemos spam.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

CERRAR