Noticia MAVLink: protocolo de comunicación para drones

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-mavlink-1.png
Como 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:

Byte Explicació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.

Por otra parte, todos los mensajes creados usando este protocolo poseen la siguiente dentro de cada archivo xml:
MAVLINK-XML.png

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.

Autopilotos Principal / 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
Software Sistema 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





















Se han empleado iconos realizados por Roundicons de www.flaticon.com

La entrada MAVLink: protocolo de comunicación para drones aparece primero en El mundo de los drones en tus manos..

Continúar leyendo...