Download - Montaje y operaci on de drones de c odigo libre utilizando ...

Transcript
Page 1: Montaje y operaci on de drones de c odigo libre utilizando ...

Montaje y operacion de drones de codigo libreutilizando Betaflight y Python

Oscar Andres Dıaz Caballero

Universidad de Los Andes

Facultad de Ingenierıa, Departamento de Ingenierıa Electrica y Electronica

Bogota, Colombia

2019

Page 2: Montaje y operaci on de drones de c odigo libre utilizando ...
Page 3: Montaje y operaci on de drones de c odigo libre utilizando ...

Montaje y operacion de drones de codigo libreutilizando Betaflight y Python

Oscar Andres Dıaz Caballero

Universidad de Los Andes

Presentado en cumplimiento de los requisitos para el grado de:

Ingeniero Electronico

Asesor:

Prof. Fredy Enrique Segura Quijano

Trabajo de grado sustentado:

Julio 25, 2019 - 2:00 pm

Universidad de Los Andes

Facultad de Ingenierıa, Departamento de Ingenierıa Electrica y Electronica

Bogota, Colombia

2019

Page 4: Montaje y operaci on de drones de c odigo libre utilizando ...
Page 5: Montaje y operaci on de drones de c odigo libre utilizando ...

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 fısico 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.

Page 6: Montaje y operaci on de drones de c odigo libre utilizando ...

Tabla de Contenidos

Lista de Figuras VIII

Lista de Tablas X

I. Introduccion 1

I.I. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

I.I.I. Generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

I.I.II. Especıficos . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

I.II. Alcances del prototipo . . . . . . . . . . . . . . . . . . . . . . . . . . 2

II. Metodologıa 3

III. Construccion y Programacion del Flone con Naze32 4

III.I. Software requerido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

III.II. Conexion electronica del drone . . . . . . . . . . . . . . . . . . . . . . 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. Control Usando MSP y Python 19

IV.I. MultiWii Serial Protocol . . . . . . . . . . . . . . . . . . . . . . . . . 19

IV.II. Librerıa MultiWiiPy3 . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

V. Suite para control manual y autonomo desarrollado 21

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

Page 7: Montaje y operaci on de drones de c odigo libre utilizando ...

Tabla de Contenidos vii

VI.III. Periodo de comandos de control . . . . . . . . . . . . . . . . . . . . . 26

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

VIII.II. Trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Bibliografıa 34

A. Anexos 36

A.I. Tabla de sımbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Page 8: Montaje y operaci on de drones de c odigo libre utilizando ...

Lista de Figuras

III-1. Diagrama general del Drone a construir . . . . . . . . . . . . . . . . . . . 5

III-2. Esquematico de conexiones para Illuminati 32 . . . . . . . . . . . . . . . 6

III-3. Conexion del Electronic Speed Controller (ESC) . . . . . . . . . . . . . . 6

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 telemetrıa 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

Page 9: Montaje y operaci on de drones de c odigo libre utilizando ...

Lista de Figuras ix

VII-2. Protocolo PWM para ESC . . . . . . . . . . . . . . . . . . . . . . . . . . 29

VII-3. Protocolo D-Shot para ESC [Philip, 2019] . . . . . . . . . . . . . . . . . . 30

VII-4. Benewake TFmini Lidar . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Page 10: Montaje y operaci on de drones de c odigo libre utilizando ...

Lista de Tablas

VI-1. Desviacion estandar y media para cada experimento . . . . . . . . . . . . 27

VII-1. Tabla comparativa entre Naze32 y BF-F7 . . . . . . . . . . . . . . . . . . 29

A-1. Sımbolos y acronimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Page 11: Montaje y operaci on de drones de c odigo libre utilizando ...

I. Introduccion

El uso de UAVs en la actualidad se ha expandido a muchos campos de la vida cotidiana.

Hoy en dıa 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 especıfica. 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 telemetrıa y envıo de comandos al drone.

Para lograr lo anteriormente descrito, el documento se estructuro de la siguiente manera:

I) Introduccion, II) Metodologıa, 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 sımbolos.

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.

Page 12: Montaje y operaci on de drones de c odigo libre utilizando ...

2 I Introduccion

I.I.II. Especıficos

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

telemetrıa 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 telemetrıa y ordenes

de control.

Mejoras sugeridas y probadas para los drones que se dejan a disposicion del Laboratorio

de Ingenierıa 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 baterıa a la interfaz.

Realizar vuelos en modo manual dentro del alcance de bluetooth.

Responder al controlador autonomo de posicion XYZ calibrado en la interfaz

Page 13: Montaje y operaci on de drones de c odigo libre utilizando ...

II. Metodologıa

El desarrollo de este proyecto de grado se centro en sentar las bases para una lınea 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 dıa, 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 librerıa 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 telemetrıa.

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).

Page 14: Montaje y operaci on de drones de c odigo libre utilizando ...

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 mınima 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 librerıa 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:

Page 15: Montaje y operaci on de drones de c odigo libre utilizando ...

III.II Conexion electronica del drone 5

Baterıa LiPo de 3 celdas (11.1V)

ESC (Se asumiran ESC de PWM, pero es recomendable usar de OneShot, MultiShot

o DShot)

Conector macho XT60

Motores EMAX CF2812

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

Page 16: Montaje y operaci on de drones de c odigo libre utilizando ...

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

Page 17: Montaje y operaci on de drones de c odigo libre utilizando ...

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 y TX del modulo al los pines del arduino especificados en el

softserial del programa Bluetooth-Baudrate.ino. Una vez conectado, abrir el terminal serial,

configurar el envıo como Both NL & CR, el baudrate como 9600 y escribir los siguientes

comandos:

1 AT

2 AT+UART =115200 ,0 ,0

3 AT+UART

El primero comprobara la conexion (se debe recibir un OK en respuesta), el segundo cambiara

el baudrate y el tercero comprobara el cambio. En al figura III-5 se muestra lo esperado.

Page 18: Montaje y operaci on de drones de c odigo libre utilizando ...

8 III Construccion y Programacion del Flone con Naze32

Figura III-5.: Configuracion del Baudrate con comandos AT

III.IV. Edicion y compilacion de Betaflight

Este proceso activara el uso del ultrasonido dentro de Betaflight, que por defecto se encuentra

deshabilitado para reducir el tamano del programa compilado.

CONSEJO DE DISENO

Realice estos pasos en un computador con Mac OS X o Ubuntu insta-

lados, en Windows tendra que instalar el comando make.

Ubıquese en el siguiente directorio dentro del codigo fuente de Betaflight:

/betaflight-3.2.5/src/main/target/NAZE/target.h

Dentro de este archivo, busque las siguientes lıneas:

1 //#define SONAR

2 //#define SONAR_TRIGGER_PIN PB0

3 //#define SONAR_ECHO_PIN PB1

4 //#define SONAR_TRIGGER_PIN_PWM PB8

5 //#define SONAR_ECHO_PIN_PWM PB9

Des-comente las primeras 3, de manera que el codigo se vea de la siguiente manera:

Page 19: Montaje y operaci on de drones de c odigo libre utilizando ...

III.V Carga de Betaflight (Modo Bootloader) 9

1 #define SONAR

2 #define SONAR_TRIGGER_PIN PB0

3 #define SONAR_ECHO_PIN PB1

4 //#define SONAR_TRIGGER_PIN_PWM PB8

5 //#define SONAR_ECHO_PIN_PWM PB9

Busque las siguiente lıneas:

1 #define BARO

2 #define USE_BARO_MS5611 // needed for Flip32 board

3 #define USE_BARO_BMP280

Comente las 3 de manera que se vea de la siguiente manera:

1 //#define BARO

2 //#define USE_BARO_MS5611 // needed for Flip32 board

3 //#define USE_BARO_BMP280

En una terminal, ubıquese en el directorio de Betaflight y ejecute los siguientes dos comandos:

1 make arm_sdk_install

2 make TARGET=NAZE

El primero descargara algunas librerıas necesarias para la compilacion, el segundo compilara

Betaflight para tarjetas basadas en la Naze32 (como la Illuminati32). El archivo compilado

quedara guardado en el siguiente directorio:

/betaflight-3.2.5/obj/betaflight_3.2.5_NAZE.hex

III.V. Carga de Betaflight (Modo Bootloader)

El hexadecimal del paso anterior debe cargarse a la tarjeta de vuelo a utilizar. Para que sea

posible configurarlo, los DIP switch de la Illiminati32 se deben poner en la posicion descrita

en la figura III-6. Esto conectara el RX y TX del STM32 al puerto USB.

Figura III-6.: Posicion de los DIP switch para configurar la Illuminati 32

Page 20: Montaje y operaci on de drones de c odigo libre utilizando ...

10 III Construccion y Programacion del Flone con Naze32

Despues de cambiar los DIP switch, se debe iniciar la tarjeta en modo bootloader, para ello

se debe encender mientras se realiza un corto entre los dos pads mostrados en la figura III-7.

Si se ha iniciado correctamente en modo bootloader ningun LED de la tarjeta debe prender.

Una vez encedida, se puede retirar el corto de los pads.

Figura III-7.: Corto circuito para encender en modo Bootloader

CONSEJO DE DISENO

Recuerde instalar el driver de USB to UART y Betaflight Configurator

antes de continuar.

Inicie el Betaflight Configurator, seleccione en la esquina superior derecha la tarjeta e ingrese

en el menu Firmware Flasher. Baje hasta el final y haga clic en Load Firmware [Local],

una vez se muestre el recuadro de seleccion, abra el archivo .hex de Betaflight que compilo.

Posteriormente oprima Flash Firmware y espere a que el proceso se termine. En la figura

III-8 se muestra el menu en el que se debe realizar la operacion.

Figura III-8.: Cargar firmware modificado (Betaflight 3.2.5)

Una vez termine el proceso, podra acceder a Betaflight y toda su configuracion al seleccionar

el UART de la tarjeta, el baudrate y oprimir Connect.

Page 21: Montaje y operaci on de drones de c odigo libre utilizando ...

III.VI Conexion y prueba de los motores 11

III.VI. Conexion y prueba de los motores

Para la conexion y prueba de los motores del drone, es necesario configurar el protocolo a

utilizar. Conectese a la tarjeta utilizando el Betaflight Configurator. En el menu Configuration

seleccione las opciones mostradas en la figura III-9.

CONSEJO DE DISENO

Para un mejor rendimiento de drone, configure la opcion Minimum Th-

rottle al comando que logra la mınima velocidad en sus motores.

Figura III-9.: Configuracion del protocolo para el ESC

Una vez configurados, podra utilizar los ESC junto con la Illuminati32. Para comenzar a

conectar los motores es necesario tener en cuenta que de manera obligatoria los motores

deben girar en el sentido de la figura III-10, esto asegurara que el drone este en yaw-lock.

Page 22: Montaje y operaci on de drones de c odigo libre utilizando ...

12 III Construccion y Programacion del Flone con Naze32

Figura III-10.: Direccion de los motores para un Cuadricoptero

El numero correspondiente a cada motor se encuentra marcado en el frame para mayor

facilidad. Ingrese a la pestana Motors y active la opcion I understand the risks, con

esto podra manipular la velocidad de los motores manualmente (NO PONGA AUN LAS

HELICES). Suelde los tres cables de cada motor, un motor a la vez, y pruebe la direccion

y funcionamiento del motor con cada slider. En caso de que algun motor gire en sentido

contrario intercambie cualesquiera 2 cables, esto invertira el giro del motor. Pude ver una

referencia de esta interfaz en la figura III-11.

Figura III-11.: Prueba individual de motores

Page 23: Montaje y operaci on de drones de c odigo libre utilizando ...

III.VII Instalacion de helices 13

III.VII. Instalacion de helices

CONSEJO DE DISENO

Tenga cuidado al encender los motores con helices y pruebe uno a uno

antes de cada vuelo. Un golpe de una de ellas puede causar heridas

graves.

Las helices deben ser instaladas con el frente (parte mas elevada) mirando hacia la direccion

que se produce el movimiento. En la figura III-12 se muestra esta situacion para el motor

2.

Figura III-12.: Posicionamiento de las helices

III.VIII. Configuracion de Betaflight

CONSEJO DE DISENO

Recuerde oprimir SAVE despues de cada cambio. Si esta utilizando

modo CLI escriba el comando save.

En esta seccion se configuraran los parametros de Betaflight para el correcto vuelo y control

desde python. Conectese a la tarjeta a traves de Betaflight. En la figura III-13 se muestra

el apartado Receiver que se encuentra en Configuration, este permite el control desde el

Bluetooth.

Page 24: Montaje y operaci on de drones de c odigo libre utilizando ...

14 III Construccion y Programacion del Flone con Naze32

Figura III-13.: Protocolo de comunicacion para el control del drone

En la pestana Ports se debe configurar la conexion bluetooth de la manera mostrada en la

figura III-14.

Figura III-14.: Configuracion de los puertos UART

La figura III-15 muestra la configuracion que se utiliza para volar el drone. Esto se encuentra

en la pestana Modes y depende de la forma en la que usted desee volar el drone. Para

principiantes, se recomienda seleccionar los modos ARM y HORIZON. En modos de vuelo

mas avanzado se puede utilizar ARM y ACRO. La diferencia entre HORIZON y ACRO

es que el primero activa la estabilizacion automatica del drone, mientras que el segundo la

desactiva otorgando mayor libertad sobre el vuelo.

Figura III-15.: Modos de operacion para el drone

Junto a las modificaciones realizadas en el archivo fuente, es necesario activar el sonar en el

menu de Other Features, este se encuentra en la pestana Configuration y se muestra en la

figura III-16.

Page 25: Montaje y operaci on de drones de c odigo libre utilizando ...

III.VIII Configuracion de Betaflight 15

Figura III-16.: Configuracion del sonar

Finalmente, se puede probar el funcionamiento del sonar en la pestana Sensors tal y como

se ve en la figura III-17.

Page 26: Montaje y operaci on de drones de c odigo libre utilizando ...

16 III Construccion y Programacion del Flone con Naze32

Figura III-17.: Vista de sensores

III.IX. Control del drone desde Python

Utilizando Python 3, Django y Pygame, se programo una interfaz grafica que permitiera el

control manual y autonomo del drone. La operacion en modo manual se hace a traves de un

Joystick Genius Metalstrike 3D, sin embargo cualquier joystick de 4 ejes puede ser utilizado.

CONSEJO DE DISENO

Es recomendable utilizar Mac OS X o Ubuntu para evitar problemas de

compatibilidad.

III.IX.I. Control Manual

Para utilizar el Django controller project, edite el archivo consumers.py para que sus primeras

lineas queden de la siguiente manera:

1 NO_CONNECTION = 0

2 AUTO_CONNECTION = 1

3 MANUAL_CONNECTION = 2

4

Page 27: Montaje y operaci on de drones de c odigo libre utilizando ...

III.IX Control del drone desde Python 17

5 droneConnection = MANUAL_CONNECTION

Una vez realiza esta modificacion ingrese a una terminal, ubıquese en la ruta del proyecto y

escriba el comando python3 manage.py runserver 0:8000. Ingrese a la direccion http://←↩localhost:8000/. Debe observar en la pagina lo que se ve en la figura III-18.

Figura III-18.: Interfaz grafica para control manual

CONSEJO DE DISENO

Si esta teniendo problemas con la ejecucion, es probable que no tenga

las librerıas necesarias instaladas. Asegurese de tener Redis y todas las

librerıas que se requieren.

III.IX.II. Control Autonomo

El modo autonomo permite calibrar un PID clasico y uno adaptativo para el control de la

posicion en XYZ del drone. Para iniciar este modo debe hacer la siguiente modificacion en

el archivo consumers.py:

1 NO_CONNECTION = 0

2 AUTO_CONNECTION = 1

3 MANUAL_CONNECTION = 2

Page 28: Montaje y operaci on de drones de c odigo libre utilizando ...

18 III Construccion y Programacion del Flone con Naze32

4

5 droneConnection = AUTO_CONNECTION

6

7 Z_CONTROLLER = 0

8 PITCH_ROLL_CONTROLLER = 1

9 BOTH_CONTROLLERS = 2

10

11 droneControllers = BOTH_CONTROLLERS #Choose controller to use

La configuracion de modo autonomo permite seleccionar entre controlador de altura, de

plano XY o ambos. Una vez iniciado el servido debe obtener una pagina como la mostrada

en la figura III-19.

Figura III-19.: Interfaz grafica para control autonomo

Page 29: Montaje y operaci on de drones de c odigo libre utilizando ...

IV. Control Usando MSP y Python

Los controladores de vuelo basados en MultiWii, tal como Betaflight, son compatibles con

gran variedad de comandos de control, los cuales suelen provenir de un control RC disenado

para drones. En este caso, dado que se desea obtener la telemetrıa y controlar el drone

utilizando un PC y Python como lenguaje de desarrollo, es necesario utilizar MSP. A conti-

nuacion se presenta una explicacion de este protocolo y como sera utilizado desde el aplicativo

desarrollado.

IV.I. MultiWii Serial Protocol

El MultiWii Serial Protocol (MSP) es la forma de comunicacion mas completa que ofrecen los

controladores de vuelo provenientes del proyecto MultiWii, un proyecto de codigo libre que

buscaba el control de un drone utilizando el dispositivo Wii Motion Plus. [MultiWii, 2019]

Este protocolo es altamente personalizable, se encuentra en constante cambio y provee todas

las funciones que se esperarıan en un drone desde el punto de vista de operacion y telemetrıa.

Esto implica que es posible enviar comandos de movimiento ası como obtener datos de los

sensores utilizando este protocolo. [A.Quarter.To.Seven, 2015] En MSP, existen 3 tipos de

mensajes, estos se describen a continuacion:

Command: Es un mensaje entrante al controlador de vuelo que no requiere una

respuesta explıcita del mismo (response).

Request: Es un mensaje entrante al controlador de vuelo que requiere una respuesta de

parte del mismo, es el tipo de mensaje que se utiliza para solicitar datos de telemetrıa.

Response: Es la respuesta del controlador de vuelo a un mensaje de tipo request.

La estructura de cada tipo de mensaje se muestra en la figura IV-1, esta se utilizo para

construir la librerıa de Python MSP, parte esencial del aplicativo.

Page 30: Montaje y operaci on de drones de c odigo libre utilizando ...

20 IV Control Usando MSP y Python

Figura IV-1.: Estructura de los mensajes en MSP

De esta estructura es importante resaltar:

El header es un mensaje estandar que se debe enviar con cada mensaje de MSP.

El size es el tamano en bytes del payload a enviar.

El type es el mensaje especıfico definido en [Betaflight, 2019].

El payload son los argumentos de los comandos a enviar, por ejemplo, un comando de

control de pitch, roll, yaw y throttle.

El crc se calcula como el XOR entre los bytes de size, type y payload.

IV.II. Librerıa MultiWiiPy3

Para realizar la implementacion de la suite de control manual y autonomo, se implemento

una librerıa para Python 3 que permitiera comunicarse bidireccionalmente con el drone de

manera facil. Esta partio de una proyecto pasado en Python 2 como esqueleto, ya que no

incluıa funcionalidades para telemetrıa de sonar ni baterıa. El archivo MultiWiiPy3.py←↩correspondiente a la librerıa se puede encontrar adjunto al documento o en el proyecto

de Python que se desarrollo. Este ultimo esta disponible en GitHub: Django controller

project.

Page 31: Montaje y operaci on de drones de c odigo libre utilizando ...

V. Suite para control manual y

autonomo desarrollado

Como parte de la investigacion en drones de codigo libre, se desarrollo un aplicativo basado

en Python 3 y Django que pudiera controlarlos utilizando cualquier computador con blue-

tooth. Este programa facilita la labor de desarrollar controladores autonomos, ya que permite

utilizar rapidamente cualquier implementacion existente en Python (i.e. ROS, numpy, scipy,

tensorflow, etc...). Estas funcionalidades fueron incluidas dentro de la primera version de la

aplicacion:

Telemetrıa y control remoto del drone a traves de pyserial (bluetooth).

Control manual utilizando un Joystick Metalstrike 3D y pygame.

Controladores autonomos para los 3 ejes del drone, calibrables desde la interfaz de

usuario (Kp, Ki, Kd).

Reconocimiento en el plano XY utilizando filtros HSV en OpenCV y un patron de

color en el drone.

Interfaz web amigable con el usuario.

La figura V-1 muestra un diagrama de la aplicacion desarrollada.

Django Python Server

Conexión Bluetooth con el drone

Entrada Joystick

PID de altura

Filtros HSV en OpenCV

PID de pitch/roll

Websocket

Page 1

localhost

Figura V-1.: Diagrama del aplicativo desarrollado

Page 32: Montaje y operaci on de drones de c odigo libre utilizando ...

22 V Suite para control manual y autonomo desarrollado

A continuacion se muestran canda una de las secciones desarrolladas en la interfaz para

interactuar con el usuario operador del drone. La figura V-2 muestra la pestana de telemetrıa

del drone. En esta se puede ver la pose estimada del drone en XYZ, los comandos de control

enviados (ya sea en modo manual o autonomo) y las constantes del controlador configurado

en caso de encontrarse en modo autonomo.

Figura V-2.: Interfaz para la telemetrıa del drone

En la figura V-3 se puede ver el panel de estado del done. En este se puede activar la

parada de emergencia, ver si el drone esta conectado al PC y si se encuentra en modo

manual o autonomo. Adicional a esto, debido a que la interfaz esta disenada para calibrar

controladores, es posible activar la parada de emergencia con la barra espaciadora. Otro

mecanismo de seguridad en Betaflight es el apagado del drone en caso de que no se reciban

ordenes por mas de 1 segundo (failsafe mode).

Figura V-3.: Interfaz para el estado actual de operacion

Para observar la telemetrıa de posicion de una manera facil de entender, en la figura V-4 se

muestra un grafico 3D que esta incluido en la interfaz para visualizar la posicion del drone

Page 33: Montaje y operaci on de drones de c odigo libre utilizando ...

23

y del objetivo (controlador). Las distancias en los ejes estan dadas en centımetros. Para

realizar la conversion de pıxeles en la imagen a centımetros, se utiliza la distancia fija entre

los puntos del patron de color en el drone como referencia. Esta referencia se actualiza cada

vez que la altura cambia.

Figura V-4.: Grafica de posicion del drone

Tambien es posible incluir varios controladores en la interfaz, entre los cuales se puede

seleccionar el que se quiera utilizar. En el momento estan incluidos un PID clasico y un PID

adaptativo como base. La figura V-5 muestra las opciones de control en el seleccionador de

la interfaz.

Figura V-5.: Seleccionador de controles

Para finalizar, la calibracion de los controladores es una opcion esencial, esto se puede realizar

sin tener que modificar el codigo fuente a traves del menu principal. La figura V-6 muestra

Page 34: Montaje y operaci on de drones de c odigo libre utilizando ...

24 V Suite para control manual y autonomo desarrollado

la pestana de calibracion.

Figura V-6.: Configuracion de los controles

Page 35: Montaje y operaci on de drones de c odigo libre utilizando ...

VI. Analisis por Histogramas de Tiempo

Para evaluar la factibilidad de la aplicacion desarrollada, se realizaron histogramas de tiem-

po para 3 funciones fundamentales de la misma. Estos histogramas permiten ver con que

frecuencia (sobre un 100 %) se presenta un tiempo de retardo entre el inicio y el fin de una

accion. Para todos los graficos realizados, las condiciones de prueba estan dadas a continua-

cion:

Naze32 conectada a un computador MacBookAir7,2 utilizando el modulo bluetooth

HC-06.

Periodos de muestreo/accion tomados en milisegundos por la funcion time.time() de

Python 3.

La unica carga computacional fue la aplicacion de Django conectada al navegador

Google Chrome.

VI.I. Periodo de adquisicion para datos de altura

La figura VI-1 muestra el histograma para datos de altura. Este es el mas afectado por

retrasos ya que incluye la transmision Bluetooth y la toma de datos con ultrasonido.

[67, 90] (90, 113] (113, 136] (136, 159] (159, 182] (182, 205] (205, 228] (228, 251]

Periodo (ms)

0

5

10

15

20

25

30

35

Frec

uenc

ia (%

)

Histograma para la telemetría de altura

Figura VI-1.: Histograma para la posicion Z

Page 36: Montaje y operaci on de drones de c odigo libre utilizando ...

26 VI Analisis por Histogramas de Tiempo

VI.II. Periodo de adquisicion para datos del plano XY

En segundo lugar se muestra en la figura VI-2 el histograma para la posicion en el plano

XY. El principal causante de este retraso es el tiempo computacional que utiliza OpenCV,

por lo que es altamente sensible al computador en el que se ejecute el programa.

Periodo (ms)[28, 47] (47, 66] (66, 85] (85, 104] (104, 123] (123, 142] (142, 161] (161, 180]

Frec

uenc

ia (%

)

0

5

10

15

20

25

30

35Histograma para detección de XY

Figura VI-2.: Histograma para la posicion XY

VI.III. Periodo de comandos de control

Por ultimo, la figura VI-3 muestra los retrasos en enviar acciones de control al drone. Estos

son los menos afectados ya que solo requieren comunicacion unidireccional (no hay respuesta

del drone).

Periodo (ms)[49, 62] (62, 75] (75, 88] (88, 101] (101, 114] (114, 127] (127, 140] (140, 153] (153, 166] (166, 179]

Frec

uenc

ia (%

)

0

10

20

30

40

50

60Histograma para comandos de control

Figura VI-3.: Histograma para las acciones de control

Page 37: Montaje y operaci on de drones de c odigo libre utilizando ...

VI.III Periodo de comandos de control 27

En conclusion, el envıo de datos de control es la operacion estadısticamente mas rapida que

realiza la interfaz. Esto se debe a que en Betaflight, la recepcion de mensajes de control es una

de las tareas de mayor prioridad. Ademas, esta tarea no requiere comunicacion bidireccional.

Para finalizar, la tabla VI-1 muestra la informacion estadıstica resumida que se obtuvo de

los histogramas.

Tabla VI-1.: Desviacion estandar y media para cada experimento

Prueba Media (ms) Desviacion estandar (ms)

Telemetrıa altura 118.66 31.00

Deteccion XY 97.55 24.93

Comandos 65.13 16.64

Page 38: Montaje y operaci on de drones de c odigo libre utilizando ...

VII. Mejoras al Drone de Codigo Libre

El drone propuesto en el capıtulo III describe la mınima configuracion posible para drones

basados en Betaflight, esto implica que el control de vuelo puede tener una mejor respuesta si

se realizan algunas modificaciones. Aparte de esto, la telemetrıa podrıa obtenerse con mayor

frecuencia y serıa posible aprovechar al maximo las personalizaciones posibles en Betaflight si

se tuviera mas capacidad de procesamiento. En este capıtulo se muestran algunas mejoras que

se realizaron sobre un drone de la misma filosofıa descrita para obtener mejores resultados.

VII.I. Betaflight F7 FC (STM32F7)

En primer lugar, se cambio el controlador de vuelo de Naze32 a Betaflight F7-FC. Esto

implica un cambio representativo en la capacidad de procesamiento ya que el primero utiliza

el STM32F1 como microcontrolador mientras que el segundo utiliza una version mas moderna

del mismo, el STM32F7.

Figura VII-1.: Controlador de vuelo Betaflight F7

La figura VII-1 muestra la tarjeta de vuelo mencionada, como se puede ver todo el montaje

sobre la misma es superficial lo cual permite mejores resultados en el cableado. Esta tarjeta

tiene ademas 2 giroscopios aislados del ruido mecanicamente, ya que estan almacenados en

el plastico que se ve encima de la tarjeta. La tabla VII-1 muestra una comparacion mas

detallada entre estos dos controladores.

Page 39: Montaje y operaci on de drones de c odigo libre utilizando ...

VII.II D-Shot Bullet ESC 29

Tabla VII-1.: Tabla comparativa entre Naze32 y BF-F7

Criterio Naze32 Betaflight F7 FC

Sensado de Baterıa - Voltaje y corriente

Master Clock 72 MHz 216 MHz

Microcontrolador STM32F103 STM32F7

Compatibilidad ESC MultiShot D-Shot

Compatibilidad RangeFinder Ultrasonido LIDAR - GPS

BEC - 5V - 1200 mA

Version de Betaflight 3.2.5 4.0.4 (Ultima version)

VII.II. D-Shot Bullet ESC

Para mejorar la respuesta en vuelo es necesario permitirle al controlador realizar cambios muy

rapidos en la velocidad de los motores, aprovechando ası toda su capacidad de procesamiento.

Para lograr esto, se cambiaron los antiguos ESC de protocolo PWM que responden cada 20ms

a unos mas modernos compatibles con D-Shot, el cual responde cada 26.7µs, la referencia de

estos es EMX-SC-1772 D-SHOT Bullet Series 15A. A continuacion se explica la diferencia

entre protocolos.

VII.II.I. PWM ESC Protocol

Figura VII-2.: Protocolo PWM para ESC

Page 40: Montaje y operaci on de drones de c odigo libre utilizando ...

30 VII Mejoras al Drone de Codigo Libre

Este protocolo utiliza el ciclo util de una senal PWM tradicional para enviar comandos de

velocidad al ESC. Debido a los tiempos de reaccion existentes en el momento de creacion de

este protocolo solo se puede enviar un nuevo mensaje cada 20ms, lo cual permite un maximo

de 50 comandos por segundo. En la figura VII-2 se muestra el principio de funcionamiento

de este protocolo, donde la mınima velocidad se alcanza con un duty cycle de 1ms y la

maxima con un duty cycle de 2ms.

VII.II.II. D-Shot ESC Protocol

Figura VII-3.: Protocolo D-Shot para ESC [Philip, 2019]

Este segundo protocolo es de naturaleza completamente digital a diferencia de sus antece-

sores. Como se muestra en la figura VII-3, los primeros 11 bits corresponden al comando

de control para el ESC, el bit 12 permite solicitar telemetrıa del motor al ESC y de los bits

13 a 16 se compone el checksum para verificar el mensaje. Debido a su naturaleza digital,

es posible enviar un nuevo paquete cada 26.7µs, lo cual permite un aproximado de 37453

comandos por segundo. Esto equivale a 750 veces la cantidad de mensajes que se pueden

enviar con PWM.

VII.III. Benewake TFmini Lidar

La ultima modificacion implica cambiar el RangeFinder incorporado, del ultrasonido a un

sensor LIDAR. Este tipo de sensores son mas precisos, mas rapidos, tienen mayor rango y

funcionan en situaciones mas adversas (como un mayor angulo de sensado). La referencia

elegida para la prueba fue Benewake TFmini Lidar, debido a que es soportado de manera

nativa por Betaflight 3.3.0. Esta version de Betaflight se puede encontrar en el siguiente

enlace: Betaflight 3.3.0 source code. El LIDAR seleccionado se muestra en la figura VII-

4.

Page 41: Montaje y operaci on de drones de c odigo libre utilizando ...

VII.III Benewake TFmini Lidar 31

Figura VII-4.: Benewake TFmini Lidar

Ya que esta version de Betaflight es fundamentalmente diferente, las instrucciones de com-

pilacion cambian radicalmente. A continuacion se muestran los cambios necesarios para im-

plementar y configurar el LIDAR en cuestion.

1. Modificar el target.h de la tarjeta a utilizar. En este caso se encuentra en betaflight←↩-3.3.0/src/main/target/OMNIBUSF7. Se deben agregar las siguientes lineas:

1 #define USE_RANGEFINDER

2 #define USE_RANGEFINDER_TF

2. Modificar el rangefinder_lidartf.c el cual se encuentra en betaflight-3.3.0/src←↩/main/drivers/rangefinder. Este archivo contiene el driver para manejar el sensor

LIDAR y permite hacer modificaciones sobre toda la logica de sensado. Los siguientes

cambios son necesarios para adaptar los lımites del sensor al datasheet real:

1 #define TF_MINI_RANGE_MIN 40

2 ...

3 #define TF_DETECTION_CONE_DECIDEGREES 900

Debe ser cambiado por:

Page 42: Montaje y operaci on de drones de c odigo libre utilizando ...

32 VII Mejoras al Drone de Codigo Libre

1 #define TF_MINI_RANGE_MIN 30

2 ...

3 #define TF_DETECTION_CONE_DECIDEGREES 1200

3. Compilar Betaflight 3.3.0 utilizando:

1 make arm_sdk_install

2 make TARGET=BOARD_NAME

Donde BOARD NAME corresponde al identificador del controlador de vuelo que se

este utilizando.

4. Una vez cargado el firmware en la tarjeta, entrar en el configurador de Betaflight y

seleccionar el menu CLI. En este terminal se deben escribir los siguientes comandos:

1 serial <n> 32768 115200 57600 0 115200

2 set rangefinder_hardware = TFMINI

3 save

Donde <n> corresponde al numero de serial donde se encuentra conectado el TFmini

Lidar. Una vez completados estos pasos, se podran observar los datos del sensor de la

misma manera que el ultrasonido, en la pestana Sensors.

CONSEJO DE DISENO

Se utiliza la version 3.3.0 de Betaflight ya que es la ultima en incluir

soporte nativo para RangeFinders, en caso de querer utilizar una version

mas moderna se debe activar la tarea para sensado de altura manual-

mente.

Page 43: Montaje y operaci on de drones de c odigo libre utilizando ...

VIII. Conclusiones y Trabajos Futuros

VIII.I. Conclusiones

A partir del trabajo realizado, se puede concluir que se dio una descripcion completa de

la funcionalidad y el montaje de drones de codigo libre basados en Betaflight. Debido a

que se evaluaron variaciones del montaje original, tambien se pudieron proponer mejoras

al drone basado en Naze32 lo cual permitira desarrollar mejores prototipos a futuro. Otro

punto importante que se trato fue la utilizacion de MultiWii Serial Protocol como medio de

comunicacion con el drone, ya que garantiza la compatibilidad de la aplicacion desarrollada

con cualquier firmware basado en MultiWii, tales como Betaflight, Cleanflight y iNav. Esto

puede ser util en caso de que se quieran explorar otras opciones de control con drones, como

vuelo en espacios abiertos, ya que iNav hace especial enfasis en localizacion GPS y es com-

pletamente compatible con la interfaz realizada.

En cuanto a la aplicacion, se pudo comprobar que es completamente funcional tanto en modo

manual como en modo autonomo. Ademas garantiza tiempos relativamente fijos en cuanto

al retraso de acciones de control y de telemetrıa. Es importante denotar sin embargo que no

fue posible la calibracion de los controladores de posicion, debido a limitantes tecnicas y de

tiempo, quedando ası como un trabajo futuro a desarrollar.

VIII.II. Trabajos futuros

Controlador de posicion: Utilizando las opciones y controladores ya programados,

es necesario sintonizar las constantes Kp, Ki y Kd para cada uno de los ejes. Esto

permitira llevar al drone a un conjunto de posiciones XYZ de manera autonoma, lo

cual abre gran cantidad de aplicaciones.

Interceptacion de objetos: Una de las aplicaciones posibles para el controlador de

posicion es utilizarlo, junto a OpenCV, para identificar e interceptar un objeto en el

aire.

Enjambre de drones: Finalmente, la interfaz podrıa ser expandida a la conexion de

varios drones facilmente, con el objetivo de realizar ejercicios de control multiagente

en drones.

Page 44: Montaje y operaci on de drones de c odigo libre utilizando ...

34 VIII Conclusiones y Trabajos Futuros

Componente Precio aproximado (USD)

Illuminati32 (FC) 19.95

Motores CF2812 x4 26.84

ESC D-Shot x4 25.56

Set de helices 3.49

HC 06 7.99

HC-SR04 4.00

LiPo 3S 1800 mAh 21.89

MDF+Laser 5.00

TOTAL 114.72

Page 45: Montaje y operaci on de drones de c odigo libre utilizando ...

Bibliografıa

[A.Quarter.To.Seven, 2015] A.Quarter.To.Seven (2015). Msp – the multiwii serial protocol.

[Betaflight, 2019] Betaflight (2019). Msp list bf. https://github.com/betaflight/

betaflight/blob/master/src/main/msp/msp_protocol.h.

[MultiWii, 2019] MultiWii (2019). The history of multiwii.

[Philip, 2019] Philip, S. (2019). Dshot—digital esc signal. https://blog.seidel-philipp.

de/dshot-digital-esc-signal/.

Page 46: Montaje y operaci on de drones de c odigo libre utilizando ...

A. Anexos

A.I. Tabla de sımbolos

Tabla A-1.: Sımbolos y acronimos

Sımbolo o acronimo Significado

BF Betaflight

MSP MultiWii Serial Protocol

UAV Unmanned aerial vehicle

ESC Electronic speed controller

LIDAR Light Detection and Ranging

MDF Medium-density fibreboard

LiPo Baterıa lithium polymer

PWM Pulse Width Modulation