Boletín No. 100
1o. de enero de 2024
CONEXIÓN Y COMUNICACIÓN DEL AUTOPILOTO PIXHAWK CON UNA RASPBERRY PI MODELO 4B USANDO MAVLINK
Alexis Fernando Cruz Baños, Juan Carlos Herrera Lozada, Dr. Miguel Hernández Bolaños, M en C.
Instituto Politécnico Nacional
Centro de Innovación y Desarrollo Tecnológico en Cómputo
México
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
,
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
,
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Resumen
En el presente artículo se explica de manera concreta cómo se realiza la conexión entre un autopiloto PixHawk versión 2.4.8 con una computadora de bajo costo Raspberry Pi versión 4B, esto con el propósito de lograr una arquitectura de sencilla que pueda implementarse en cualquier vehículo de navegación (Dron, rover, carro omnidireccional, hovercrafts, entre otros). Se utiliza comunicación serial a través de los puertos de telemetría del autopiloto o el puerto USB y el protocolo de comunicación MAVlink. Es necesario conocer la arquitectura de ambos dispositivos, y tener conocimientos de configuración y puesta en marcha de una Raspberry Pi así como la previa configuración del autopiloto usando un software de telemetría como Mission Planner lo cual se muestra de manera breve en este documento. Esta arquitectura en conjunto con un Vehículo Aéreo no Tripulado (VANT) puede ser usado en aplicaciones que requieran comunicación de baja latencia y alto procesamiento como son: Procesamiento de imágenes, visión computacional, seguimiento de trayectorias, modelado 3D de terrenos, entre otros.
Abstract
This paragraph explains in a straightforward manner how to connect a PixHawk autopilot version 2.4.8 to a low-cost Raspberry Pi version 4B computer, with the purpose of achieving a simple architecture that can be implemented in any navigation vehicle (drone, rover, omnidirectional car, hovercrafts, among others). Serial communication is used through the telemetry ports of the autopilot or the USB port, using the MAVlink communication protocol. It is necessary to understand the architecture of both devices and have knowledge of configuring and starting up a Raspberry Pi, as well as the prior configuration of the autopilot using telemetry software such as Mission Planner, which is briefly outlined in this document. This architecture, together with an Unmanned Aerial Vehicle (UAV), can be used in applications that require low-latency communication and high processing power, such as image processing, computer vision, path tracking, 3D terrain modeling, among others.
I. Introducción
Desde el siglo pasado, la necesidad de utilizar vehículos de navegación no tripulados ha ido incrementando con el paso del tiempo es por esto surge la necesidad del uso de controladores de navegación que cumplen con funciones como proveer algoritmos de guía o navegación y en algunos casos dependiendo la aplicación que se requiera, establecer una comunicación con estaciones fijas de control como computadoras e incluso dispositivos móviles para el monitoreo de éstos, este módulo que integra las funciones descritas es conocido como autopiloto. Los autopilotos son ampliamente usados en diferentes vehículos no tripulados sin embargo estos tienen limitaciones de memoria y procesamiento y aunque en la mayoría de los casos es posible conectar estos dispositivos con centrales de procesamiento en sitio mediante comunicación inalámbrica, muchas veces se requiere alguna aplicación de otras características que no se logran mediante una comunicación en sitio. Es por esto que para aplicaciones que requieren un alto procesamiento, pero al mismo tiempo una respuesta de comunicación rápida, un autopiloto en conjunto con un sistema embebido o una computadora de compañía permite crear un sistema económico, eficiente y con respuesta de baja latencia para aplicaciones más complejas.
El autopiloto PixHawk es un dispositivo desarrollado por PX4 de bajo costo y con características competitivas que lo hacen un gran dispositivo costo-beneficio frente a otros autopilotos. Este dispositivo tiene amplio uso en la comunidad que se dedica al estudio de los vehículos no tripulado. Aunque este autopiloto mediante el uso de un software de telemetría permite realizar aplicaciones autónomas a los VANT, no tiene la capacidad física de realizar aplicaciones que requieran un alto procesamiento o aplicaciones que requieran el uso de sensores externos, es por eso que, utilizando una computadora portátil como la Raspberry Pi, se puede utilizar el autopiloto como central de comunicación, dejando como unidad central de procesamiento a esta tarjeta single on chip (RPi). [1]
II. Configuración de la Raspberry Pi 4b
Antes de comenzar con la conexión al autopiloto es necesario configurar la RPi 4b para que la comunicación serial sea llevada a cabo con éxito.
- Instalar el sistema operativo a la RPi, el más recomendable es instalar el sistema Raspi OS, en la página de Raspberry se encuentran las instrucciones detalladas de la instalación del sistema operativo en la RPi. [2]
Como recomendación, para la instalación del SO de la RPi es necesario tener un monitor extra para la configuración inicial, posteriormente se puede acceder a la RPi vía protocolo SSH. - Una vez finalizada la configuración inicial, es necesario configurar la RPi para comunicación remota mediante SSH, la cual permite acceder de manera remota a la RPi mediante la terminal de comandos de Raspi OS. En [3] se explica de manera detallada como es la configuración de la RPi para usarla mediante SSH, así como la instalación del software PuTTy en Windows.
En la figura 1 se muestra el acceso remoto a la RPi desde una computadora con Windows. - Configurar el puerto serial (UART). Para esto, dentro de la terminal abierta por SSH se introduce el comando sudo para abrir el RasPi Configuration Utility que se muestra en la Figura 2.
Figura 1. Conexión con RPi vía SSH. |
Figura 2. RasPi Configuration Utility. |
Se sigue la ruta Interface Options/Serial y posteriormente se tendrán 2 ventanas emergentes con las siguientes leyendas:
- Would you like a login Shell to be accesible over serial? Se selecciona No.
- Would you like the serial port hardware to be enabled? Se selecciona Yes.
Finalmente se reinicia la RPi y ya se tendrá activo el puerto serial.
- Instalación de MAVproxy. MAVproxy es una herramienta de código abierto que actúa como intermediario entre la MAVlink y una computadora o estación terrestre. Para instalar MAVproxy en la RPi basta con ejecutar los siguientes comandos desde la terminal:
- Se hace una modificación en el firmware boot para evitar mal conexión entre los puertos seriales de la RPi, para esto se utiliza el comando En la última línea del archivo abierto en la consola se agregan las siguientes 2 líneas de código:
Una vez que los comandos anteriores hayan sido ejecutados, se puede verificar la instalación con el comando si la instalación ha sido exitosa en la terminal aparecerá la versión instalada de MAVproxy en la RPi como se observa en la figura 3.
Figura 3. Instalación de MAVproxy en la RPi. |
Finalmente, con las combinaciones de teclas ctrl+x, ctrl+y y Enter, se guarda el archivo ya modificado.
III. Configuración del autopiloto PixHawk
Para iniciar la configuración del PixHawk es necesario contar con una PC e instalar algún software de telemetría, en este caso, se utilizó el software Mission Planner debido a su alta compatibilidad y desarrollo con la arquitectura PX4.
- Una vez instalado Mission Planner se procede a conectar el autopiloto mediante su puerto USB a la computadora y se instala el firmware que se requiera, en este caso se utilizó el firmware de Quad Copter. En [4] se encuentra información detallada de la instalación del firmware y la puesta en marcha del PixHawk por primera vez.
- Cuando se haya verificado que el autopiloto puede establecer comunicación con el software mission planner de manera correcta, se seleccionara la pestaña CONFIG en la parte superior del software, y en la ventana izquierda se seleccionara Full Parameter List, ambos se encuentran marcados para referencia en la figura 4.
Figura 4. Configuración de mission planner. |
En la ventana central se encuentra la lista de parámetros dentro de los cuales se modificarán los siguientes parámetros con los valores indicados:
- SERIAL2_PROTOCOL = 2 para habilitar MAVlink en el puerto Telem2 del PixHawk.
- SERIAL2_BAUD = 57 de esta manera el autopiloto se comunicará con la RPi a 57600 baudios.
Se procede a reiniciar el autopiloto y de esta manera quedará configurado y listo para la comunicación con la RPi.
IV. Conexión PixHawk – Raspberry
La conexión física entre la RPi y el PixHawk se puede llevar a cabo de 2 maneras, la primera es mediante el uso del puerto de telemetría del PixHawk (TELEM2) a los pines de Rx y Tx de la RPi como se observa en la figura 5. Para que esta conexión funcione de manera correcta es necesario contar con un conector Dupont pre armado, pues si se utiliza alguna adaptación o un cable que no es compatible por completo, puede provocar que la transmisión de datos no sea correcta.
Figura 5. Conexión RPi - PixHawk mediante TELEM2 |
Otra forma de establecer la conexión es mediante el puerto micro USB del PixHawk con un puerto USB de la RPi, esta es la manera mas sencilla y segura puesto que no hay interferencia en la transmisión y los GND de ambos dispositivos se encuentran debidamente conectados.
Finalmente, cuando la conexión física esta correcta, se hace conexión SSH con la RPi, y primero se verifica que la RPi este reconociendo la conexión con el PixHawk, para esto se ingresa el siguiente comando en la terminal del RPi.
Nota: El comando anterior es para la conexión mediante el puerto USB, si la conexión se hace mediante el puerto TELEM2 entonces es necesario sustituir ACM0 por AMA0
Nota: El comando anterior es para la conexión mediante el puerto USB, si la conexión se hace mediante el puerto TELEM2 entonces es necesario sustituir por
Si la RPi reconoce que la PixHawk esta conectada, entonces en la terminal se vera el puerto en color amarillo como se muestra en la figura 6.
Figura 6. RPi reconociendo una conexión serial en el puerto ACM0. |
Ya con la conexión verificada solo queda inicializar MavProxy en la RPi para comenzar la comunicación entre ambos dispositivos. Para inicializar la comunicación es necesario poner el siguiente comando en la terminal.
Nota: Si se está utilizando la conexión por el puerto TELEM2, es necesario sustituir por en el comando anterior.
Si la conexión ha resultado exitosa, en la terminal se indica el reconocimiento de un vehículo y los parámetros preconfigurados en el Mission Planner como se observa en la figura 7.
Figura 7. Conexión RPi - PixHawk mediante MavProxy. |
Una vez que se ha logrado la conexión de manera exitosa, se pueden comenzar a implementar diferentes métodos de control, o arquitecturas. Entre las que más destacan se encuentra DroneKit que es un proyecto de código abierto que en conjunto con el protocolo MavLink, permite crear múltiples aplicaciones para los VANT utilizando lenguaje Python. También se puede utilizar sistemas de visión artificial como OpenCV e incluso arquitecturas mas sofisticadas como son TensorFlow o Pytorch para aplicaciones que requieren el uso de Machine Learning o Deep Learning.
V. Conclusiones
Este trabajo se ha explorado la conexión entre una Raspberry PI4 y un autopiloto PixHawk. Esta integración representa la creación de una arquitectura de bajo costo y versátil que puede ser implementada en una alta gama de vehículos no tripulados. La capacidad resultante de esta arquitectura permite la realización de aplicaciones que demandan comunicación de baja latencia y un alto poder de procesamiento, como la visión computacional, el seguimiento de trayectorias, el modelado 3D de terrenos entre otras aplicaciones posibles. El uso de la comunicación serial a través de los diversos puertos de estos dispositivos, ha demostrado ser una solución efectiva para lograr esta integración, abriendo así la puerta a una variedad de aplicaciones en el campo de los vehículos no tripulados, así como, demostrar el potencial que tiene la tecnología de bajo costo para impulsar la innovación e investigación en esta área. Finalmente esta arquitectura puede ser un punto de partida para que en conjunto con tecnologías emergentes se puedan realizar aplicaciones cada vez más complejas.
Referencias
- Cruz, A., Vazquez, R., Herrera, J., Hernández, M. & Herrera, S. (1 de julio 2023). Un sistema de navegación de bajo costo para vehículos no tripulados:el autopiloto pixhawk Boletín UPIITA. 18 (97). https://www.boletin.upiita.ipn.mx/index.php/ciencia/1045-cyt-numero-97/2176-un-sistema-de-navegacion-de-bajo-costo-para-vehiculos-no-tripulados-el-autopiloto-pixhawk
- (s.f.). Raspberry Pi Web https://raspberrypi.cl/2021/05/13/instalacion-de-sistema-operativo-con-pi-imager/#
- (24 de septiembre 2020). Acceso remoto a una Raspberry Pi con SSH: ¿Cómo habilitarlo? IONOShttps://www.ionos.mx/digitalguide/servidores/configuracion/activar-ssh-en-raspberry-pi/#:~:text=Para%20ello%2C%20abre%20el%20Men%C3%BA,haciendo%20clic%20en%20%E2%80%9CAceptar%E2%80%9D.
- (2023). Mission Planner Overview. Ardupilot DevTeam.Ardupilot.org.https://ardupilot.org/planner/