Mi Blog

1 – Conexión – Vuelo controlado mediante Raspberry Pi

por Carlos Escura en 5 agosto, 2014 Sin comentarios

Cómo configurar nuestra Raspberry Pi y conectarla a nuestra controladora de vuelo para poder realizar una comunicación vía MavLink

Introducción

En esta página se explica el proceso de conexión de la Raspberry Pi a nuestra controladora de vuelo y cómo deben configurarse ambas para poder establecer una sesión con el protocolo MavLink que permita dar órdenes a la controladora de vuelo desde la Raspberry Pi, que a su vez puede ser controlada desde un ordenador de forma remota gracias a un adaptador WI-FI.

En esta primera página sólo vamos a mandar unas órdenes muy sencillas, pero la cantidad de posibilidades que nos ofrece el protocolo Mavlink y esta conexión es muy grande

Conexión física

Supondremos que ya disponemos de una radio de telemetría conectada en el puerto Telem1 como indica la siguiente imagen:

3drRadioV1_pixhawk1

Para evitar quebraderos de cabeza, conviene no conectar los cables marcados como RTS y CTS mientras estemos realizando estas pruebas.

 

La conexión de la RaspBerry Pi con la PixHawk sería de la siguiente forma:

Por un lado tenemos el puerto Telem2 con el siguiente pinout (visto de frente tal y como muestra la imagen)

[ +5v, TX(3.3), RX(3.3), CTS, RTS, GND ]

Los que nos interesan en este caso son el pin 2, 3 y 6 que se conectarán a los pines RX, TX y GND de la Raspberry Pi respectivamente (y en ese orden, debemos cruzar TX y RX)

 

RaspberryPi_Pixhawk_wiring

 

Con esto, ya tenemos la conexión física y estamos preparados para poder comunicar la Raspberry Pi con la PixHawk

 

Configuración de la Raspberry Pi

Para configurar los primeros detalles de la Raspberry Pi suponiendo que es la primera vez que se tiene contacto con ella sugiero las siguientes guías:

Tutoriales Raspberry Pi

Instalación del sofware necesario en la Raspberry Pi

Entramos ya de lleno en la parte más interesante del artículo. Vamos a comenzar con la instalación de todos los paquetes de software que necesitaremos para comunicarnos con la controladora de vuelo.

Para ello abrimos un terminal y nos conectamos mediante SSH a nuestra Raspberry Pi.

ssh <usuario>@<direcciónIP>

Una vez dentro actualizamos la lista de paquetes disponibles:

 sudo apt-get update 

Con la lista de paquetes disponibles en los repositorios  actualizada ya podemos instalar los primeros paquetes que nos serán necesarios:

sudo apt-get install screen python-wxgtk2.8 python-matplotlib python-opencv python-pip python-numpy

Ahora usaremos el paquete instalado anteriormente llamado python-pip para instalar el paquete que más nos interesa:

sudo pip install mavproxy

Con el software de mavproxy ya instalado sólo nos falta comenzar a probar la conectividad entre ambos dispositivos. Para ello debemos ejecutar como sudo el programa:

 sudo -s
mavproxy.py --master=/dev/ttyAMA0 --baudrate 57600 --aircraft MyCopter

Los parámetros que estamos pasando a mavproxy.py son:

  • –master=/dev/ttyAMA0 el cual determina el puerto serie para la comunicación. En el caso de la Raspberry Pi, su puerto serie 0
  • –baudrate 57600 es el baudrate que en nuestro caso nos interesa hacer coincidir con el predeterminado de la controladora de vuelo
  • –aircraft MyCopter es el nombre del modelo que pretendemos usar en la sesión y con el que se guardarán los nombres de los logs y configuraciones. Podemos cambiarlo a nuestro gusto, pero recordando cuando usamos cada uno

Si todo ha ido bien, deberíamos ver en la pantalla la información sobre la controladora de vuelo que estamos utilizando una vez la Raspberry Pi detecte algún paquete heartbeat. Si es así, todo funciona como debería.

El siguiente paso es probar a comunicarnos con la controladora enviando unas órdenes sencillas:

param show ARMING_CHECK

Comprueba el estado del “Arming Check” inicial previo al vuelo, el cual debería estar habilitado (1) por defecto. Así que nos vamos a saltar ese paso de revisión y vamos a permitir a la fuerza que la controladora pueda armarse:

param set ARMING_CHECK 0 

Finalmente procedemos al armado de la controladora:

arm throttle
Muy importante realizar recordar realizar todo este proceso en un entorno controlado sin hélices en los motores

Podemos hacer girar los motores mandando un valor específico del canal 3 (acelerador) con un comando como este:

rc 3 1500

Teniendo en cuenta que según las especificaciones del protocolo MAVLINK, 0 significa retomar el control al valor real de la entrada de la radio y los valores aceptados en el rango de operación van desde 1000us siendo un 0% de acelerador, hasta 2000us que suponen un 100%.

Documentación MAVProxy

Otros aspectos importantes de la configuración

Desactivar la consola por el puerto serie de la Raspberry Pi

Con el fin de evitar que la Raspberry Pi intente interpretar la información recibida por la controladora como información de login, debemos deshabilitar el acceso al sistema por el puerto serie. Para ello basta con editar el archivo siguiente:

sudo nano /etc/inittab

Nos desplazamos justo al final del documento y comentaremos la siguiente línea con un # para que quede tal que así:

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Sólo queda guardar los cambios en el archivo (Ctrl + x), Yes, Intro.

Reiniciamos para que se completen los cambios:

sudo shutdown -r now

Iniciar de forma automática MAVProxy al encender la Raspberry Pi

Para evitarnos arrancar de forma manual MAVProxy cada vez que nuestra Raspberry Pi se inicia, podemos modificar el archivo rc.local creando una sesión de screen que mantendrá un segundo terminal en forma de “daemon” y “deatached”.

Abrimos el archivo:

sudo nano /etc/rc.local

Modificamos su contenido en la última línea y añadimos:

(
date
echo $PATH
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/local/bin
export PATH
cd /home/pi
screen -d -m -s /bin/bash mavproxy.py --master=/dev/ttyAMA0 --baudrate 57600 --aircraft MyCopter
) > /tmp/rc.log 2>&1
exit 0

La explicación de lo que hace este script es muy sencilla y deberíamos saber interpretarla si nuestro propósito es controlar una aeronave de forma remota, por lo que no es necesario explicarla más de lo que ya está hecho.

Carlos Escura1 – Conexión – Vuelo controlado mediante Raspberry Pi

Entradas relacionadas

Echa un vistazo a estos posts