Montaje y operaci on de drones de c odigo libre utilizando

Click here to load reader

  • date post

    29-Dec-2021
  • Category

    Documents

  • view

    0
  • download

    0

Embed Size (px)

Transcript of Montaje y operaci on de drones de c odigo libre utilizando

Montaje y operacion de drones de codigo libre utilizando Betaflight y Python
Oscar Andres Daz Caballero
Universidad de Los Andes
Bogota, Colombia
2019
Montaje y operacion de drones de codigo libre utilizando Betaflight y Python
Oscar Andres Daz Caballero
Universidad de Los Andes
Presentado en cumplimiento de los requisitos para el grado de:
Ingeniero Electronico
Trabajo de grado sustentado:
Universidad de Los Andes
Bogota, Colombia
2019
v
Resumen
El presente documento se encarga de mostrar el proceso de montaje y programacion de
drones de codigo libre utilizando Python como interfaz. Esta clase de drones ha ganado
popularidad en la actualidad debido a su reducido costo y facil personalizacion; es posible
cambiar cualquier aspecto del controlador de vuelo, as como realizar el montaje fsico que
sea mas adecuado para la situacion que se encuentre. Como proyecto base se utilizara Beta-
flight (un firmware para controladores de vuelo), debido a su avanzado estado de desarrollo
y su enfasis en control de bajo nivel.
Para el proceso de montaje, se muestra un tutorial paso a paso que incluye las instrucciones
de montado electronico, as como las modificaciones en Betaflight y el proceso de compilacion.
A causa de las imperfecciones que pueden llegar a tener los drones de bajo costo (como el
mostrado en el tutorial), se incluyeron tambien las modificaciones necesarias para mejorar la
calidad de vuelo y respuesta del drone. Finalmente, se construyo una suite de control manual
y autonomo utilizando Django y MSP, la cual puede ser utilizada como base para proyectos
futuros en automatizacion y modelos de enjambre de drones.
Abstract
This document shows the assembly and programming process of open-source drones using
Python as main control interface. This type of drones has gained popularity nowadays due
to its low cost and easy customization; it is possible to change any aspect of the flight con-
troller, as well as perform the physical assembly that is most suitable for a given situation.
The base project that will be used is Betaflight (a firmware for flight controllers), due to its
advanced state of development and its emphasis on low-level control.
For the assembly process, a step-by-step tutorial is shown that includes the electronic as-
sembly instructions, as well as the modifications in Betaflight and its compilation process.
Because of the imperfections that low-cost drones may have (such as the one shown in the
tutorial), the modifications necessary to improve the flight quality and response of the drone
were also included. Finally, a manual and autonomous control suite was built using Django
and MSP, which can be used as a basis for future automation projects and drone swarm
models.
II. Metodologa 3
III.I. Software requerido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
III.III. Configuracion del baudrate para HC-05 . . . . . . . . . . . . . . . . . 7
III.IV. Edicion y compilacion de Betaflight . . . . . . . . . . . . . . . . . . . 8
III.V. Carga de Betaflight (Modo Bootloader) . . . . . . . . . . . . . . . . . 9
III.VI. Conexion y prueba de los motores . . . . . . . . . . . . . . . . . . . . 11
III.VII. Instalacion de helices . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
III.VIII. Configuracion de Betaflight . . . . . . . . . . . . . . . . . . . . . . . . 13
III.IX. Control del drone desde Python . . . . . . . . . . . . . . . . . . . . . 16
III.IX.I. Control Manual . . . . . . . . . . . . . . . . . . . . . . . . . 16
III.IX.II. Control Autonomo . . . . . . . . . . . . . . . . . . . . . . . 17
IV.I. MultiWii Serial Protocol . . . . . . . . . . . . . . . . . . . . . . . . . 19
IV.II. Librera MultiWiiPy3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
VI. Analisis por Histogramas de Tiempo 25
VI.I. Periodo de adquisicion para datos de altura . . . . . . . . . . . . . . . 25
VI.II. Periodo de adquisicion para datos del plano XY . . . . . . . . . . . . 26
Tabla de Contenidos vii
VII. Mejoras al Drone de Codigo Libre 28
VII.I. Betaflight F7 FC (STM32F7) . . . . . . . . . . . . . . . . . . . . . . . 28
VII.II. D-Shot Bullet ESC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
VII.II.I. PWM ESC Protocol . . . . . . . . . . . . . . . . . . . . . . 29
VII.II.II. D-Shot ESC Protocol . . . . . . . . . . . . . . . . . . . . . 30
VII.III. Benewake TFmini Lidar . . . . . . . . . . . . . . . . . . . . . . . . . 30
VIII. Conclusiones y Trabajos Futuros 33
VIII.I. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Lista de Figuras
III-4. Boton para activar el modo AT (HC-05) . . . . . . . . . . . . . . . . . . . 7
III-5. Configuracion del Baudrate con comandos AT . . . . . . . . . . . . . . . 8
III-6. Posicion de los DIP switch para configurar la Illuminati 32 . . . . . . . . 9
III-7. Corto circuito para encender en modo Bootloader . . . . . . . . . . . . . 10
III-8. Cargar firmware modificado (Betaflight 3.2.5) . . . . . . . . . . . . . . . . 10
III-9. Configuracion del protocolo para el ESC . . . . . . . . . . . . . . . . . . 11
III-10. Direccion de los motores para un Cuadricoptero . . . . . . . . . . . . . . 12
III-11. Prueba individual de motores . . . . . . . . . . . . . . . . . . . . . . . . . 12
III-12. Posicionamiento de las helices . . . . . . . . . . . . . . . . . . . . . . . . 13
III-13. Protocolo de comunicacion para el control del drone . . . . . . . . . . . . 14
III-14. Configuracion de los puertos UART . . . . . . . . . . . . . . . . . . . . . 14
III-15. Modos de operacion para el drone . . . . . . . . . . . . . . . . . . . . . . 14
III-16. Configuracion del sonar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
III-17. Vista de sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
III-18. Interfaz grafica para control manual . . . . . . . . . . . . . . . . . . . . . 17
III-19. Interfaz grafica para control autonomo . . . . . . . . . . . . . . . . . . . . 18
IV-1. Estructura de los mensajes en MSP . . . . . . . . . . . . . . . . . . . . . 20
V-1. Diagrama del aplicativo desarrollado . . . . . . . . . . . . . . . . . . . . . 21
V-2. Interfaz para la telemetra del drone . . . . . . . . . . . . . . . . . . . . . 22
V-3. Interfaz para el estado actual de operacion . . . . . . . . . . . . . . . . . 22
V-4. Grafica de posicion del drone . . . . . . . . . . . . . . . . . . . . . . . . . 23
V-5. Seleccionador de controles . . . . . . . . . . . . . . . . . . . . . . . . . . 23
V-6. Configuracion de los controles . . . . . . . . . . . . . . . . . . . . . . . . 24
VI-1. Histograma para la posicion Z . . . . . . . . . . . . . . . . . . . . . . . . 25
VI-2. Histograma para la posicion XY . . . . . . . . . . . . . . . . . . . . . . . 26
VI-3. Histograma para las acciones de control . . . . . . . . . . . . . . . . . . . 26
VII-1. Controlador de vuelo Betaflight F7 . . . . . . . . . . . . . . . . . . . . . . 28
Lista de Figuras ix
VII-3. Protocolo D-Shot para ESC [Philip, 2019] . . . . . . . . . . . . . . . . . . 30
VII-4. Benewake TFmini Lidar . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Lista de Tablas
VII-1. Tabla comparativa entre Naze32 y BF-F7 . . . . . . . . . . . . . . . . . . 29
A-1. Smbolos y acronimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
I. Introduccion
El uso de UAVs en la actualidad se ha expandido a muchos campos de la vida cotidiana.
Hoy en da es posible ver drones realizando desde complejas tareas de exploracion y recono-
cimiento, hasta tareas de entretenimiento. La gran cantidad de aplicaciones que se le pueden
dar a estos dispositivos los convierte en candidatos ideales para explorar implementaciones
en control y automatizacion.
As mismo, en la actualidad el software de codigo libre ha ganado gran popularidad debido a
su facil personalizacion, que permite partir de implementaciones muy complejas y adaptarlas
a una situacion especfica. Plataformas como Github permiten grandes proyectos colabora-
tivos que evolucionan rapidamente y cuyo codigo fuente esta disponible al publico.
En el marco de estas dos tendencias, el presente proyecto muestra el proceso de construccion,
personalizacion y programacion de un drone de codigo libre partiendo de la popular imple-
mentacion Betaflight. De la misma manera, se evaluaran variaciones del drone original para
intentar mejorar la respuesta y la calidad del vuelo. Finalmente, se desarrollara una plata-
forma para el control de dichos drones utilizando Python, Django y MSP. Esta plataforma
sera caracterizada para dar pie a futuras implementaciones en automatizacion, a traves de
histogramas de tiempo en la lectura de telemetra y envo de comandos al drone.
Para lograr lo anteriormente descrito, el documento se estructuro de la siguiente manera:
I) Introduccion, II) Metodologa, III) Construccion y Programacion del Flone con Naze32,
IV) Control Usando MSP y Python, V) Suite para control manual y autonomo desarrollado,
VI) Analisis por Histogramas de Tiempo, VII) Mejoras al Drone de Codigo Libre, VIII)
Conclusiones y Trabajos Futuros, A.I) Tabla de smbolos.
I.I. Objetivos
I.I.I. Generales
Investigar y documentar el funcionamiento de drones de codigo libre utilizando Betaflight y
Python. As mismo, evaluar variaciones sobre el drone para mejorar la respuesta a controla-
dores y dar pie a trabajos futuros sobre la plataforma desarrollada.
2 I Introduccion
Modificacion y compilacion del software de codigo libre Betaflight para acoplarse a la
problematica definida (control).
Desarrollo de una interfaz entre Betaflight y Python utilizando MSP para el control y
telemetra del drone.
Desarrollo de una suite de control manual y autonomo del drone utilizando Django.
Analisis por histogramas de tiempo del retraso de transmision para telemetra y ordenes
de control.
Mejoras sugeridas y probadas para los drones que se dejan a disposicion del Laboratorio
de Ingeniera Electrica y Electronica.
I.II. Alcances del prototipo
Los drones desarrollados como parte de este proyecto tienen las siguientes funcionalidades:
Recibir comandos de pitch, roll, yaw y throttle desde el computador utilizando Multiwii
Serial Protocol y Python.
Realimentar datos de altura, actitud y batera a la interfaz.
Realizar vuelos en modo manual dentro del alcance de bluetooth.
Responder al controlador autonomo de posicion XYZ calibrado en la interfaz
II. Metodologa
El desarrollo de este proyecto de grado se centro en sentar las bases para una lnea de
investigacion orientada a drones en la Universidad de Los Andes. Para lograr esto, fueron
definidos los siguientes procedimientos:
1. Consultar construcciones pasadas de drones de codigo libre en la comunidad, las cuales
pudieran ser utilizadas como base para aprender.
2. Investigar la historia de los drones de codigo libre, partiendo de MultiWii como ante-
cesor comun de todos los proyectos existentes hoy en da, para finalizar en Betaflight,
Cleanflight y iNav.
3. Construir un primer drone de prueba, usando como base el proyecto Flone.cc pero
implementando las primeras mejoras basandose en el aprendizaje obtenido.
4. Lograr personalizar el controlador de vuelo para utilizar un ultrasonido o LIDAR como
realimentacion en la altura del drone (popularmente conocido como Rangefinder.
5. Compilar y comprobar versiones modificadas de Cleanflight y Betaflight en diferentes
controladores de vuelo (se utilizaron Naze32, Illuminati32 y BF-F7).
6. Desarrollar una librera en Python 3 que permitiera comunicarse con drones basados
en MultiWii utilizando MSP.
7. Desarrollar en Python 3 y Django una plataforma intuitiva de control para drones,
que permitiera control manual utilizando un joystick o control autonomo a partir de
la realimentacion y telemetra.
8. Utilizar OpenCV para detectar la posicion del drone (en XY) en tiempo real a traves
de una camara Logitech C920 conectada al computador.
9. Realizar una primera calibracion del controlador autonomo de vuelo utilizando tres
controladores PID clasico (pitch, roll y throttle).
III. Construccion y Programacion del
Flone con Naze32
Dentro del desarrollo del presente proyecto, se construyeron 4 drone funcionales utilizando la
tarjeta Naze32/Illuminati32 con la mnima configuracion posible. A continuacion se muestra
el proceso paso a paso que se debe seguir para replicar los drones construidos.
III.I. Software requerido
MDF model: Frame de MDF para cualquier grosor en el que se quiera cortar (para-
metrizado).
MDF frame instructions: Montaje paso a paso del frame (mecanico).
Betaflight 3.2.5 source code: Codigo fuente del controlador de vuelo a bordo en C++.
USB to UART driver: Drivers para la comunicacion entre el PC y la Illuminati32.
Betaflight configurator: Programa de PC para configurar Betaflight.
Django controller project: Proyecto en Python que incluye la interfaz en Django y
la librera de MSP.
Bluetooth baudrate: Proyecto en Arduino para cambiar el baudrate de un bluetooth.
III.II. Conexion electronica del drone
CONSEJO DE DISENO
No pegue de ninguna manera la placa de MDF que tiene la Illuminati32
hasta que la electronica este totalmente montada y probada.
Una vez terminado el montaje mecanico de flone, se puede iniciar a conectar la electronica.
Los materiales a utilizar se muestran a continuacion:
III.II Conexion electronica del drone 5
Batera LiPo de 3 celdas (11.1V)
ESC (Se asumiran ESC de PWM, pero es recomendable usar de OneShot, MultiShot
o DShot)
Bluetooth HC-05/06
Ultrasonido HC-SR04
En la figura III-1 se muestra el posicionamiento general y representacion grafica de cada
parte.
Figura III-1.: Diagrama general del Drone a construir
La figura III-2 muestra el esquematico de la Illuminati32, priorizando en los canales que
seran utilizados en este tutorial. Es recomendable retirar los cables que no seran utilizados
(puede utilizar un destornillador o cualquier objeto puntiagudo para quitarlos). En esta parte
6 III Construccion y Programacion del Flone con Naze32
del montaje puede conectar toda la parte derecha del esquematico (bluetooth y ultrasonido),
los puertos de la izquierda seran utilizados en el siguiente paso.
Figura III-2.: Esquematico de conexiones para Illuminati 32
CONSEJO DE DISENO
No conecte aun los motores a los ESC, probablemente tendra que re-
soldarlos cuando pruebe la direccion de cada helice.
En este punto debe conectar los 4 ESC a la tarjeta de vuelo, a la potencia y asegurar cada
uno al frame. Alargue los cables de potencia de los ESC (los mas gruesos) de manera que
todos lleguen al conector XT60 que va pegado al frame. Suelde juntos todos los positivos y
negativos al XT60, tambien suelde al positivo el cable de ADC IN que viene de la tarjeta
de vuelo.
Figura III-3.: Conexion del Electronic Speed Controller (ESC)
La figura III-3 muestra el pin-out del ESC a utilizar. En este punto los canales de Battery
GND y Battery VCC deben estar conectados al XT60. Cada ESC tiene un regulador de
III.III Configuracion del baudrate para HC-05 7
5V para alimentar la tarjeta de vuelo, tambien conocido como BEC (Battery Eliminator
Circuit). La salida de este regulador se encuentra en los canales 5V Out y GND, conecte uno
de los reguladores de ESC a la entrada de 5V de la tarjeta de vuelo (+5V In y GND). Los
otros 3 reguladores se pueden dejar desconectados con sus cables cortados.
Cada cable de data (PWM) debe conectarse a su respectivo data en la tarjeta de vuelo. El
frame de flone debe tener marcado el numero de cada motor. Es indispensable seguir ese
orden para conectar los motores segun la figura III-2. En este punto todos los cables de la
Illuminati32 deben estar conectados.
III.III. Configuracion del baudrate para HC-05
Para una correcta comunicacion con el flone, es necesario aumentar el baudrate del modulo
bluetooth a 115200 bauds utilizando comandos AT. Para entrar en este modo se debe prender
el modulo manteniendo presionado el boton de la figura III-4. Una vez el bluetooth este en
modo AT, el LED parpadeara lentamente.
Figura III-4.: Boton para activar el modo AT (HC-05)
Conectar los pines de RX…