Articulo de referencia

Enlace MAV

MAVLink o Micro Air Vehicle Link es un protocolo para comunicarse con vehículos pequeños no tripulados . Está diseñado como una biblioteca de ordenación de mensajes de solo enca...

MAVLink o Micro Air Vehicle Link es un protocolo para comunicarse con vehículos pequeños no tripulados . Está diseñado como una biblioteca de ordenación de mensajes de solo encabezado. MAVLink fue lanzado por primera vez a principios de 2009 [1] por Lorenz Meier bajo la licencia LGPL . [2]

Aplicaciones

Se utiliza principalmente para la comunicación entre una estación de control terrestre (GCS) y vehículos no tripulados , y en la intercomunicación del subsistema del vehículo. Se puede utilizar para transmitir la orientación del vehículo, su ubicación GPS y velocidad.

Estructura del paquete

En la versión 1.0 la estructura del paquete es la siguiente:

Después de la versión 2, la estructura del paquete se amplió de la siguiente manera: [3]

Campo CRC

Para garantizar la integridad del mensaje, se calcula una comprobación de redundancia cíclica (CRC) para cada mensaje hasta los dos últimos bytes. Otra función del campo CRC es garantizar que el remitente y el receptor estén de acuerdo en el mensaje que se está transfiriendo. Se calcula utilizando un hash ITU X.25/SAE AS-4 de los bytes del paquete, excluyendo el indicador de inicio de trama (por lo que se evalúan 6+n+1 bytes, el +1 adicional es el valor inicial).

Además, al calcular el CRC se añade un valor inicial al final de los datos. El valor inicial se genera con cada nuevo conjunto de mensajes del protocolo y se codifica de forma similar a los paquetes de cada especificación de mensaje. Los sistemas que utilizan el protocolo MAVLink pueden utilizar una matriz precalculada para este fin. [4]

El algoritmo CRC de MAVLink se ha implementado en muchos lenguajes, como Python [5] y Java. [6] [7] [8]

Mensajes

La carga útil de los paquetes descritos anteriormente son mensajes MAVLink. Cada mensaje se puede identificar mediante el campo ID del paquete y la carga útil contiene los datos del mensaje. Un documento XML en la fuente MAVlink [9] tiene la definición de los datos almacenados en esta carga útil.

A continuación se muestra el mensaje con ID 24 extraído del documento XML.

<message id= "24" name= "GPS_RAW_INT" > <description> La posición global , tal como la devuelve el Sistema de Posicionamiento Global ( GPS ). NO es la estimación de la posición global del sistema , sino un valor de sensor RAW . Consulte el mensaje GLOBAL_POSITION para obtener la estimación de la posición global . El marco de coordenadas es dextrógiro , eje Z hacia arriba ( marco GPS ). </description> <field type= "uint64_t" name= "time_usec" > Marca de tiempo (microsegundos desde la época UNIX o microsegundos desde el arranque del sistema ) </field> <field type= " uint8_t" name= "fix_type" > 0-1: sin corrección, 2: corrección 2D , 3: corrección 3D . Algunas aplicaciones no utilizarán el valor de este campo a menos que sea al menos dos , por lo que siempre complete la corrección correctamente . </field> <field type= "int32_t" name= "lat" > Latitud (WGS84), en grados * 1E7 </field> <field type= "int32_t" name= "lon" > Longitud (WGS84), en grados * 1E7 </field> <field type= "int32_t" name= "alt" > Altitud (WGS84),en metros * 1000 (positivo para arriba) </field> <field type= "uint16_t" name= "eph" > Dilución horizontal GPS HDOP de la posición en cm  
                                                  
                   
                                         
               
               
                  
                  (m*100).  Si  se desconoce,  configúrelo  en:  UINT16_MAX </field> 
<field type= "uint16_t" name= "epv" > Dilución vertical VDOP GPS de la posición en cm (m*100). Si se desconoce, configúrelo en: UINT16_MAX </field> <field type= "uint16_t" name= "vel" > Velocidad terrestre GPS (m/s * 100). Si se desconoce, configúrelo en: UINT16_MAX </field> <field type= "uint16_t" name= "cog" > Rumbo sobre el terreno (NO rumbo, sino dirección del movimiento) en grados * 100, 0.0..359.99 grados. Si se desconoce, configúrelo en: UINT16_MAX </field> <field type= "uint8_t" name= "satellites_visible" > Número de satélites visibles. Si se desconoce, configúrelo en 255 </field> </message>                       
                    
                             
                  

Nota: El documento XML describe el orden lógico de los campos para el protocolo. El formato de cable real (y la representación típica en memoria) tiene los campos reordenados [10] para reducir los problemas de alineación de la estructura de datos . Esto puede ser una fuente de confusión al leer el código generado a partir de las definiciones de mensajes.

MAVLink se utiliza como protocolo de comunicación en muchos proyectos, lo que puede significar que existe cierta compatibilidad entre ellos. Se ha escrito un tutorial que explica los conceptos básicos de MAVLink. [11]

Referencias

  1. ^ "Confirmación inicial · mavlink/mavlink@a087528". GitHub .
  2. ^ "Protocolo de comunicación de microvehículos aéreos MAVLink - QGroundControl GCS". Archivado desde el original el 18 de agosto de 2018. Consultado el 31 de julio de 2013 .
  3. ^ "Serialización · Guía para desarrolladores de MAVLink". mavlink.io . Consultado el 22 de agosto de 2019 .
  4. ^ "Reordenamiento de campos y cálculo adicional de CRC - GCS de QGroundControl". qgroundcontrol.org . Archivado desde el original el 15 de junio de 2013.
  5. ^ "GitHub - ArduPilot/pymavlink: interfaz y utilidades de MAVLink en Python". 18 de agosto de 2019 – vía GitHub.
  6. ^ "GitHub - arthurbenemann/droidplanner: Estación de control terrestre para dispositivos Android". 2 de julio de 2019 – vía GitHub.
  7. ^ "Un generador de código Java y una biblioteca Java para MAVLink: ghelle/MAVLinkJava". 4 de agosto de 2019 – vía GitHub.
  8. ^ "GitHub - dronefleet/mavlink: una API de Java para la comunicación MAVLink". 2 de agosto de 2019 – vía GitHub.
  9. ^ "GitHub - mavlink/mavlink: Biblioteca de comunicación y control para drones". 20 de agosto de 2019 – vía GitHub.
  10. ^ "Reordenamiento de campos y cálculo adicional de CRC - GCS de QGroundControl". qgroundcontrol.org . Archivado desde el original el 15 de junio de 2013.
  11. ^ Balasubramanian, Shyam (15 de noviembre de 2013). "Tutorial de MAVLink para principiantes absolutos (Parte I)". diydrones.com .
Obtenido de "https://es.wikipedia.org/w/index.php?title=EnlaceMAV&oldid=1258770541"