Una forma muy común de enturar los datos que genera el protocolo Mavlink desde el Piloto Automático hacia nuestro Software de Control en Tierra (GCS) es utilizando Módulos RF dedicados para la transmisión de este protocolo el cual pueden trabajar sobre bandas UHF, estos módulos se conocen normalmente como Modulos de Telemetria

A raíz de la evolución sobre los métodos y protocolos para la transmisión de datos, han surgido diversas formas de poder encaminar el trafico generado por MavLink hacia la estación en tierra, por eso es posible en este instante enviar/recibir el trafico Mavlink vía TCP o UDP desde o hacia Internet si se configuran las reglas en los puertos y si las IPs son alcanzables públicamente.

Debido a esta evolución, podemos transferir datos Mavlink por redes cableadas (Ethernet) o inalambricas (Wlan), logrando utilizar tasas de transferencia y frecuencias muy elevadas "En el orden de las frecuencias SHF como WiFi a 5.8Ghz y tasas de hasta 1300Mbps con el actual estándar 802.11ac"

Esto extiende el uso de estas tecnologías ya que podríamos utilizar el mismo canal para el envió/recepción de datos adicionales a los de la temeraria Mavlink como transferencia de vídeo en tiempo real utilizando el protocolo RTSP,  podríamos extender el enlace sobre una red GSM ya sea 3G o 4G y tambien a través de Satélites.

Con esto podríamos crear un Dron/UAV el cual pueda alcanzar distancias mucho mayores (mas de 100KM) a las obtenidas con algunos módulos de temeraria como los SIK o RFD900+.

Laboratorio

Para este laboratorio, queremos conectar nuestro piloto automático Mini PIX v1.0 de RadioLink vía USB a una Raspberry Pi 3 que ha sido flasheada previamente con el SO Maverick en su v1.1.6 con el fin de poder enrutar el trafico MavLink via TCP utilizando una red WiFi 2.4GHz hacia el Software de Control en tierra Mission Planner de RadioLink.

Herramientas

Instalando Maverick OS

Omitiremos el proceso de instalación del SO sobre Raspberry ya que no es la intención en este post, de una manera muy rapida se explicara.

$ wget -c http://www.maverick.one/maverick/downloads/maverick-1.1.6-raspberry.img.xz
  • Descargar la ISO de Maverick sobre el PC Ubuntu
  • Conectar la MicroSD al PC Ubuntu y detectar la particion primaria del disco para proceder con la montura de la imagen, esta de sebe de formatear en FAT32
  • Descomprimimos la Imagen de Maverick sobre el directorio actual
sudo dd bs=4M if=maverick-1.1.6-raspberry.img of=/dev/mmcblk && sync
  • Montamos el SO en la MicroSD, para este caso el punto de montura fue /dev/mmcblk
    se puede validar con el comando "df -h"
$ ssh mav@192.168.2.114
  • Montado el SO en la memoria SD, procedemos a conectarla sobre la Raspberry.
    si esta se encuentra conectada a la red Local vía Ethernet automáticamente podremos acceder al Sistema utilizando el usuario "mav" y su clave "wingman", la ip Local depende de la RED, se recomienda escanear todo el rango de red con "nmap -sn 192.168.2.1-254"  para encontrar la ip o se puede acceder al Router y validar sobre DHCP la IP que ha tomado la Raspberry.

Configurando Maverick con el entorno FLIGHT

Confirmado que el acceso a la Raspberry PI es correcto y que esta tiene salida hacia Internet "ping 8.8.8.8", procedemos a configurar el entorno en modo "Flight"

$ sudo apt update && sudo apt upgrade
  • Actualizamos el Repositorio e instalamos las ultimas actualizaciones disponibles para toda la paqueteria
$ maverick self-update
  • con el comando, indicaremos a maverick que obtenga del repositorio principal en Github la ultima actualizacion a todos los modulos y paquetes contenidos en el mismo.
$ maverick configure --env=flight
  • Alzamos en maveric el entorno Flight, este proceso puede tardar un buen rato, tener mucha paciencia ya que la instalacion actual se esta realizando sobre un SoC con Raspbian.
    Echo esto reiniciar el sistema.

Estatus del sistema Maverick

Una vez configurado el entorno, nos conectamos de nuevo a la Raspberry vía SSH y validamos la versión de Maverick, el Entorno y sus respectivos módulos Arriba y Abajo sobre el SO.

$ maverick status


#Salida del sistema
[flight] [mav@maverick-raspberry ~]$ maverick status

Maverick - UAV Companion Computer System - Version 1.1.6

Maverick Environment:    flight 

Service                       Description               Status | At Boot
------------                  ------------             ------------------
Flight Controller Services
mavlink-router@fc             Mavlink (FC)             Running | Enabled
rosmaster@fc                  ROS (FC)                 Stopped | Enabled
mavros@fc                     Mavros (FC)              Running | Enabled
api@fc                        API (FC)                 Stopped | Disabled
------------                  ------------             ------------------
Web Services
webdev                        Maverick Web Devserver   Stopped | Disabled
nginx                         Webserver                Running | Enabled
cloud9                        Cloud9 IDE               Running | Enabled
mavcesium                     MavCesium                Stopped | Disabled
webvision                     Web Vision               Running | Enabled
------------                  ------------             ------------------
Analysis Services
grafana                       Analysis Dashboard       Running | Enabled
mavlogd                       Log Import Daemon        Running | Enabled
influxd                       Time Data DB             Running | Enabled
collectd                      System Metrics           Running | Enabled
uploader                      Log Uploader Daemon      Running | Enabled
------------                  ------------             ------------------
Network Services
wifibc_tx                     WifiBC TX                Stopped | Disabled
wifibc_rx                     WifiBC RX                Stopped | Disabled
------------                  ------------             ------------------
Vision Services
visiond                       Vision Daemon            Running | Enabled
csd                           Camera Streaming Daemon  Stopped | Disabled
vision_landing                Vision Landing           Stopped | Disabled
vision_seek                   Seek Thermal Vision      Stopped | Disabled
flirone                       Flir One Vision          Stopped | Disabled
coav                          Collision Avoidance      Stopped | Disabled

Adjuntamos la salida del sistema al ejecutar el comando

Configurando mavlink-router@fc

Para esta prueba, utilizaremos MavLink-router sobre nuestro AutoPilot ya que es la versión recomendada para enrutar el trafico.

$ sudo dmesg


#Salida del sistema
[  901.434955] usb 1-1.2: new full-speed USB device number 6 using dwc_otg
[  901.754560] usb 1-1.2: New USB device found, idVendor=26ac, idProduct=0016
[  901.754579] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  901.754587] usb 1-1.2: Product: PX4 FMU v4.x
[  901.754596] usb 1-1.2: Manufacturer: Radiolink
[  901.754604] usb 1-1.2: SerialNumber: 0
[  901.764063] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device

  • Conectamos a la Raspberry Pi 3 el AutoPilot con el Cable USB V3 y validamos que se monte el dispositivo sobre el sistema.  
    Como podemos observar la interfaz usb que subió responde al dispositivo "/dev/ttyACM0" sobre el SO, este parámetro se configurara.
$ nano /srv/maverick/config/mavlink/mavlink-router-fc.conf
  • Dentro del directorio del usuario mav, vamos a buscar la carpeta config/mavlink/ y editaremos el archivo "mavlink-router-fc.conf"
[UartEndpoint serialin]
    Device=/dev/ttyAMA0
    Baud=115200,57600,115200,921600
    FlowControl=false


  • Buscamos el apartado "[UartEndpoint serialin]" y sus parametros.
Device=/dev/ttyAMA0
  • Modificamos la linea correspondiente al dispositivo USB conectado y cambiamos el actual /dev/ttyAMA0 por nuestro dispositivo, por ahora no modificaremos los baudios para la conexión ya que Maverick realiza un escaneo sobre el puerto con todas las velocidades disponibles y se conecta con la que vea adecuada.
    Guardamos los cambios sobre el documento.
$ maverick restart mavlink-router@fc
  • Echo esto, sera necesario reiniciar solo el modulo "mavlink-router@fc" para que tome correctamente el puerto que ha sido configurado.

Sobre el siguiente GIF se puede apreciar la configuración aplicada

Configurando el modulo mavlink-router@fc en Maverick OS

Conectando el AutoPilot Mini PIX v1.0 con Mission Planner de RadioLink

Si todo ha salido correcto hasta este momento, podremos realizar la conexión con el piloto automático utilizando el socket que ha subido sobre Maverick, para ellos nos conectaremos vía RDP desde Ubuntu al HOST Windows con el que actualmente realizamos la configuración del AutoPilot y configuraremos Mission Planner para aceptar la conexión ya sea UDP o TCP logrando de esta manera  recibir todos los datos de Mavlink correspondientes a la temeraria que provee el dispositivo.

Enlazando via TCP

  • Lanzamos Mission Planner por RadioLink en Windows 7 y configuramos la aplicación para que se enlace con la Raspberry PI 3 utilizando la red local en la interfaz WiFi con el protocolo TCP sobre el puerto 5770.
Configurando Mission Planner para conexión TCP

Referencias:

https://goodrobots.github.io/maverick/current/#/?id=usage
https://goodrobots.github.io/maverick/current/#/?id=self-update
https://goodrobots.github.io/maverick/current/#/modules/fc
https://goodrobots.github.io/maverick/current/#/modules/mavlink