Vous êtes sur la page 1sur 42

UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA

Sistema robusto para control de actitud y posición de un


cuadricóptero, basado en visión odométrica y observadores de
estado de una IMU

ANTEPROYECTO DE TESIS PARA OBTENER EL GRADO DE:

INGENIERO EN MECATRÓNICA

PRESENTA:
NATALIO MENDOZA ROBLES

DIRECTOR:
Dr. Edgardo Yescas Mendoza
CO-DIRECTOR:

HUAJUAPAN DE LEÓN, OAXACA, 01 DE MARZO DE 2019


Contenido
1. Introducción ............................................................................................... 1
2. Marco Teórico ............................................................................................ 2
2.1 Vehículos Aéreos no Tripulados ............................................................ 2
2.1.1 Unidad de Medición Inercial .......................................................... 5
2.1.2 Protocolos de Comunicación R/C ................................................... 7
2.1.3 Controladores de Velocidad Electrónicos ....................................... 9
2.2 Controladores de Vuelo ....................................................................... 10
2.2.1 Pixhawk Mini ................................................................................ 12
2.3 Protocolo MAVLink ............................................................................ 14
2.4 DroneKit............................................................................................... 15
2.5 Raspberry Pi y OpenCV....................................................................... 17
2.5.1 OpenCV ........................................................................................ 18
2.6 Visión odométrica y odometría inercial ............................................... 20
2.6.1 Odometría visual ........................................................................... 20
2.6.2 Odometría inercial ........................................................................ 22
2.6.3 Errores en la odometría ................................................................. 24
2.6.4 Odometría visual-inercial .............................................................. 25
3. Estado del Arte ......................................................................................... 25
3.1 Vuelo controlado por autopilotos comerciales en conjunto con
computadoras de placa simple ..................................................................... 26
3.2 Estimación de posición de un UAV por VIO ...................................... 27
4. Planteamiento del problema ..................................................................... 30
5. Justificación ............................................................................................. 31
6. Objetivos .................................................................................................. 32
7. Hipótesis .................................................................................................. 33
8. Limitaciones ............................................................................................. 33
9. Metodología ............................................................................................. 34
10. Índice Preliminar .................................................................................... 35
11. Diagrama de Gantt (cronograma) .......................................................... 36
12. Referencias ............................................................................................ 37
1. Introducción
Debido a la flexibilidad y diversidad de funciones que ofrecen los vehículos aéreos no
tripulados (UAV, por sus siglas en inglés Unmanned Aerial Vehicle1), su utilidad se ha
extendido; partiendo de su uso exclusivo en el área militar y de investigación espacial
(hace cinco décadas), hasta su distribución en los ámbitos comerciales y sociales. El
contexto actual ofrece alta demanda de drones, debido a la creciente producción de
sistemas y sensores electrónicos más pequeños y sofisticados [1].

Como consecuencia de este hecho, el sistema del UAV incluye cada vez más nuevos
módulos y sensores que brindan mayores funcionalidades, o en todo caso, mejoran alguna
característica de vuelo. Sirva de ejemplo el GPS, que permite realizar vuelos programados
en espacios desconocidos, sensores ópticos y ultrasónicos para la detección de obstáculos,
o las radios de telemetría que envían información de interés desde el drone a una estación
de control y viceversa. Otro aporte es el perfeccionamiento de la fotografía aérea, a causa
de que existen más drones con distintos modos o capacidades de vuelo, los cuales nos
ayudan a realizar capturas profesionales de imagen y video (DJI MAVIC PRO, GoPro
Karma, Xiaomi FIMI, entre muchos otros).

Del mismo modo en que se cuenta con drones sofisticados, existen tarjetas de
desarrollo o sistemas dedicados a las aeronaves no tripuladas, que ofrecen la posibilidad
de ser configuradas para distintos fines de investigación; como el AR Drone del fabricante
Parrot, Qualcomm® Snapdragon™ Flight de Qualcomm Technologies, Inc., QDrone de
Quanser o el Crazyflie de la empresa Bitcraze AB. El uso de esta tecnología ha permitido
desarrollar nuevas bases de la odometría visual-inercial (VIO 2 ), algoritmos para la
localización y mapeo simultáneos (SLAM, Simultaneous Localization And Mapping) [4],
el estudio del subsuelo para los sectores agrícolas o el desarrollo de la visión por
computadora a bordo, sólo por mencionar algunas investigaciones.

1
UAV es la denominación técnica más usual. Se puede denominar también como RPA (Remotely Piloted
Aircraft) y coloquialmente como Drone.
2
Por sus siglas en inglés: Vision Inertial Odometry.

1
Otro apartado con grandes avances, es la diversificación de tarjetas controladoras de
vuelo y su inclusión de varias interfaces, las cuales son una opción para la investigación y
el entretenimiento. Brindan al usuario la capacidad de ensamblar su propia aeronave con
el diseño y las características deseadas. También tienen sus contribuciones a la comunidad
científica, por ejemplo, en la colaboración de las controladoras de vuelo comerciales con
computadoras de placa simple para sistemas de vuelo autónomo, o para generar un sistema
con arquitectura abierta o semi-abierta para múltiples objetivos [2].

La decisión entre trabajar con un drone adquirido directamente con un fabricante


específico (Parrot, Bitcraze AB, DJI, Xiaomi, etc.) o de utilizar controladores de vuelo
estándares (Pixhawk, Ardupilot) depende de la facilidad de adquisición logística y
económica, y también de los objetivos de la investigación. En el caso de este protocolo de
tesis, el drone utilizará un controlador de vuelo de la marca Pixhawk, y se ensamblará
ocupando componentes estándares adquiridos desde plataformas de venta en internet.
Tendrá como objetivo garantizar un vuelo estable y un control de posición, utilizando las
técnicas de odometría mencionadas anteriormente.

2. Marco Teórico
2.1 Vehículos Aéreos no Tripulados.

Los multicópteros son un tipo de UAV, se pueden clasificar de acuerdo con el número
de motores que los impulsan y la forma de su carcasa; depende directamente de la actividad
por realizar para optar por un diseño en específico. La Figura 1 indica el tipo de
multicóptero y la configuración del giro de sus motores (sentido horario-azul y antihorario-
anaranjado). Nota: En la configuración Y6, IY6 y X8, son dos motores por cada brazo.

2
Figura 1. Tipo de multicópteros y las configuraciones de sus carcasas.

Los multicópteros son conformados generalmente, por las siguientes partes (ver
Figura 2):

 Emisora RC. Control de mando para el usuario. Controla el cabeceo, inclinación,


altitud y guiñada3. Utiliza la tecnología de radiofrecuencia a 2.4 GHz, que permite
pilotar el vehículo o robot a una distancia de 300 a 500 metros (dependiendo mucho
de la interferencia electromagnética y obstáculos) [6].

 Radio receptor. Recibe la señal del control de mando, la interpreta y genera como
salida: señales PWM (Pulse Width Modulation) donde cada una corresponde a un
canal de la emisora RC. Algunos radios receptores tienen la funcionalidad de convertir
las señales PWM de todos los canales a señal PPM (Pulse Position Modulation), y
enviarla sobre un sólo cable.

3
Guiñada: Movimiento hacia la derecha o izquierda del eje vertical del vehículo. Inclinación: Movimiento
hacia la derecha o izquierda del eje longitudinal. Cabeceo: Rotación hacia adelante o hacia atrás con
respecto al eje transversal. Altitud: Medida de la elevación o descenso en vertical.

3
 Carcasa (frame). Sostiene los componentes del drone, y dependiendo del diseño
puede contener un tren de aterrizaje (soporte del frame contra el suelo). Es rígido y
generalmente, su estructura reduce las vibraciones ocasionadas por los motores.
 Motores. Los más usados son los Brushless, motores de inducción de tres fases, tienen
una potencia en el rango de 1000 Kv a los 7500 Kv (Kilo volt equivalente a RPM por
Voltio 4).
 Hélices. Generan la propulsión del vehículo, pueden ser de dos o tres aspas. Se
manejan dos diseños, uno para giro horario y otro en antihorario.
 Placa PCB. Distribuye la energía a todos los componentes electrónicos y de acuerdo
con cada diseño, puede indicar al controlador de vuelo el voltaje y corriente de la
batería.
 Controlador de velocidad electrónico. El ESC (Eletronic Speed Controller) recibe
del controlador de vuelo las señales PWM que indican la velocidad para cada motor,
se encarga de modular la corriente directa de la batería a corriente alterna, generando
tres salidas (cada una desfasada 120 grados eléctricos).
 Controladora de vuelo (autopiloto). Es la parte fundamental del drone, la cual
procesa el estado inercial del sistema gracias a una IMU (Inertial Measurement Unit);
y con ello generar las salidas correspondientes (señal PWM a cada ESC) para obtener
estabilidad en el vuelo. Las más sofisticadas aceptan varios tipos de sensores, módulos
e interfaces de comunicación para brindarle al usuario una funcionalidad que va más
allá de sólo volar el UAV.
 Sensor GPS (Global Positioning System). Obtiene información de la posición global
del drone y envía la señal al autopiloto para ser procesada.
 Batería. Fuente de energía del vehículo, generalmente de tipo Polímero de Litio. Se
puede clasificar también por número de celdas (S). Cada batería indica su capacidad
en mAh (mili Amper por hora).

4
La unidad Kv es un valor definido por las características físicas de un motor debido a sus imanes, número
de vueltas de embobinado y su geometría. La magnitud en Kv caracteriza la propiedad de un motor de
transformar la potencia eléctrica que recibe en velocidad o par; por ello, experimentalmente se toma como
una aproximación para indicar la cantidad de RPM en el motor por V de alimentación.

4
 Cámara. Ofrece al usuario la perspectiva del drone para usarse con distintos fines de
acuerdo con las necesidades de vuelo, puede ser desde grabar o fotografiar el entorno,
para investigación, ver lugares inaccesibles, etc.

Figura 2. Componentes básicos de un multicóptero.

2.1.1 Unidad de Medición Inercial.

Conocida comúnmente como IMU, es un módulo electrónico que se integra de un


giroscopio y acelerómetro (ver Figura 3), este conjunto de sensores ofrecen mediciones
como la velocidad del movimiento lineal, orientación y dirección de giro; del dispositivo
sobre el que va acoplado el módulo. Con esta información se puede obtener la posición
relativa del vehículo y conocer cuáles son sus movimientos [5].

5
Figura 3. IMU: a) Acelerómetro b) Giroscopio.

Los acelerómetros (Figura 3-a) detectan o estiman la aceleración lineal del drone en
todos sus ejes. Una de sus funciones es monitorear continuamente la razón de cambio de
velocidad vertical del drone, para detectar y medir el efecto de la fuerza de gravedad sobre
el vehículo [5]. Para estabilizar el vuelo de las aeronaves no tripuladas, es necesario medir
las rotaciones (en todos sus ejes) y corregirlas de acuerdo con la posición estable (paralelo
al plano horizontal) con la ayuda de los motores; aquí es donde se requiere de las
funcionalidades de un giroscopio (Figura 3-b), ya que este permite medir los parámetros
mencionados.

Recientemente, se han fabricado módulos que integran el magnetómetro (Figura 4),


que determina la orientación de acuerdo con el norte magnético de la Tierra. Con esta
funcionalidad, el vehículo o robot, tendrá una referencia externa y global para orientarse.
Esta práctica forma parte del método de localización absoluta5.

Figura 4. Representación del magnetómetro.

5
El método de localización absoluta hace uso de referencias globales como el campo magnético de la
tierra o las señales provenientes de satélites (en el caso del GPS) para calcular la posición de un robot móvil.

6
El conjunto de todos los sensores tratados anteriormente se conoce como Sistema de
Referencia de Actitud y Rumbo, AHRS (por sus siglas en inglés, Attitude and Heading
Reference System). Ya que por integrar el nuevo sensor magnetómetro (el cual funciona
como una brújula de tres dimensiones), puede indicar hacia dónde se dirige y se encuentra
el UAV. También recibe el nombre de Sistema Magnético, de Velocidad Angular y de
Gravedad (Magnetic, Angular Rate, and Gravity -MARG- System) [5].

2.1.2 Protocolos de Comunicación R/C.

Dependiendo del modelo de las radios: emisoras (TX) y receptoras (RX), estas ofrecen
desde 2 hasta 20 canales -restringiéndose las de 2 y 3 canales, para vehículos terrestres-.
Cada canal representa un comando que corresponde a una actividad en específico sobre el
vehículo controlado (como se mencionó en la definición de la Emisora RC). Estas radios
para establecer su comunicación pueden integrar varios protocolos, que se pueden
clasificar en Protocolos TX (para la comunicación entre la emisora y receptora) y
Protocolos RX (que comunican la receptora con el autopiloto) [10].

Se presentan a continuación los protocolos de uso universal en la categoría de Protocolos


RX:

Modulación por ancho de pulso. La modulación PWM es el protocolo usado con


más antigüedad, en el cual la señal de cada canal es transmitida por un cable específico al
autopiloto; es decir, la cantidad mínima de cables a utilizar serían cuatro para indicar las
señales provenientes de la emisora (cabeceo, guiñada, altitud e inclinación).

La señal es analógica (ver Figura 5), donde la longitud del pulso indica la orden de
salida para el servo o canal. La duración del pulso es de 1000µs y 2000µs; siendo estos: el
mínimo y máximo, respectivamente [5].

7
Figura 5. Señal PWM y sus características.

Modulación de posición de pulsos combinados. Este sistema es conocido como


PPM o CPPM (en inglés, Combined Pulse Position Modulation). El método para esta
codificación y reducción a una sola señal consiste en mandar una señal tras otra, sobre un
solo conductor (salida) pero conservando el orden de los canales (ver Figura 6). Por ser
una señal analógica, es susceptible aún a la interferencia y ruido [6]. Tiene compatibilidad
con todos los radios emisores y receptores, sin embargo, trabaja con un máximo de 10
canales.

Figura 6. Decodificación de la señal PPM a PWM.

Modulación por código de pulso. Esta modulación (PCM por sus siglas en inglés,
Pulse Code Modulation) funciona de forma similar al PPM. En este caso la señal es digital.
Cada tren de impulsos (todos los pulsos de los canales) es convertido en una secuencia

8
binaria. El proceso para esta codificación involucra la modulación por amplitud de pulso
de la muestra, su cuantificación digital y codificación a dígitos binarios [9].

Por ser una señal digital, se reducen los errores o fallos de las señales en comparación
con la señal analógica (PWM o PPM). Los receptores que trabajan con este protocolo
suelen ser costosos ya que integran su propio microprocesador y convertidor analógico-
digital.

2.1.3 Controladores de Velocidad Electrónicos.

El ESC es el módulo que controla la potencia suministrada al motor. Como se explicó


en la sección 2.1, los motores más usados para drone son los Brushless (motores eléctricos
de inducción trifásicos). Por ello, la tarea del ESC es generar tres salidas sinusoidales
desfasadas 120 grados eléctricos; a partir de la alimentación de corriente directa (batería).
Podría decirse que se trata de un inversor a una escala muy reducida (ver Figura 7).

Los ESC trabajan bajo las mismas características de la señal PWM de los radios
receptores, por ejemplo, el rango ocupado es de 1ms a 2ms. Lo cual significa que a 1ms el
propulsor no generará empuje mientras que a 2ms efectuará su mayor empuje.

Figura 7. Esquemático de un ESC. Fuente: www.electronoobs.com/circuitos_tut4.php .

9
2.2 Controladores de vuelo.

El controlador de vuelo (conocido también como autopiloto o controladora de vuelo)


se le considera la computadora de un UAV. Se encarga de leer las señales provenientes de
la radio receptora (como PWM, PPM, SBUS, etc.) e interpretarlas para que posteriormente
genere salidas PWM correspondientes a cada ESC, y estos a su vez, modulen la velocidad
de los motores con el fin de generar el movimiento del drone. De acuerdo con la
información que ofrece la IMU, el autopiloto realiza el control para obtener la estabilidad
del UAV. Esta es la descripción más completa de un controlador de vuelo básico, incluso
hay algunos que únicamente trabajan con un giroscopio, omitiendo los demás sensores que
conforman a la IMU.

Por otro lado, existen autopilotos tan sofisticados que integran sensores para
posicionamiento y navegación autónoma. Realizan vuelos programados, retorno al punto
de elevación, seguro de altitud, estabilización de gimbal 6 , respuesta a fallas de
comunicación emisora-receptora, solución al bajo voltaje, telemetría y envió de video en
tiempo real a una estación de control en tierra; en resumen, todo un repertorio de sensores
y funcionalidades que transforman al UAV en un vehículo inteligente.

Existen controladores de vuelo con arquitectura abierta (Open-Source) y cerrada.


Algunas ventajas de trabajar con un autopiloto de código abierto son: la diversidad de
tareas para programarle, realizar nuevas configuraciones a nivel código y desarrollar
numerosas investigaciones por su adaptabilidad de integrar más sensores. En la tabla 1 se
presentan algunos controladores de vuelo de arquitectura abierta con sus características
más importantes.

En la tabla 2 se hace una comparación de las características más importantes para


desarrollar la investigación propuesta. Cada una de las opciones son propuestas que
generalmente se han usado en la investigación, para el desarrollo de trabajos relacionados
con el control de vuelo y posición de un UAV, las cuales incluyen: drones, tarjetas de
desarrollo enfocadas a multicópteros y autopilotos.

6
Se le denomina Gimbal al soporte estabilizador para la cámara.

10
Tabla 1. Autopilotos de arquitectura abierta.

Autopiloto Fabricante Características


CC3D Revolution LibrePilot (OpenPilot) Procesador STM32F4, con ARM
Cortex-M4 a 210 MIPS (millones de
instrucciones por segundo). IMU con
10 grados de libertad (GDL).
APM 2.8 ArduPilot Dev Team Microcontroladores ATMega2560 y
ATMega32U-2. GPS Neo-6M. Radio
telemetría 915 MHz.
DroFly Pro V4 Grupo de Microcontrolador ATMega250
desarrolladores Compatible con módulo Bluetooth y
Multiwii tarjeta micro SD.
Pixhawk 4® Holybro® y Grupo Procesador STM32F427 reloj de 216
PX4 MHz, coprocesador STM32F103 reloj
de 24 MHz, tarjeta SD, 512 KB de
RAM.
3DR® Pixhawk® HobbyKing y 3DR Procesador STM32F427, procesador
Mini para I/O STM32F103, tarjeta micro
SD, IMU con 10 GDL.
Chimera Paparazzi Escuela Nacional de Procesador serie STM32, ARM
Aviación Civil Cortex-M7, puerto serial dedicado a
(Francia) computadoras de placa simple.
Módem XBEE.

Las consideraciones para la selección del componente que mejor se ajusta a las
necesidades de esta investigación son las siguientes: compatibilidad con cámara y
computadoras personales, WiFi, frame modificable y un bajo precio. De acuerdo con lo
anterior, los mejores candidatos son la Pixhawk Mini, APM 2.8 y CC3D, de forma que se
optó por la Pixhawk Mini, siendo esta la controladora con la que se cuenta actualmente.

11
Cabe desatacar que las casillas marcadas en verde indican la capacidad de las tarjetas o
drones de incluir la característica correspondiente.

Tabla 2. Cuadro comparativo y de selección.

Drone Tarjeta de desarrollo Controladora de vuelo


Marca / AR Crazyflie QDrone Qualcomm Chimera Pixhawk Naza M APM 2.8 CC3D
Modelo Drone 2.0 Flight Pro Paparazzi Mini Revolutio
2.0 n
Power
Edition
Procesador ARM STM32 Intel Qualcomm® STM32 STM32 ATMega STM32
Cortex Atom x7 Snapdragon 2560
A8 Z8750 ™ 820
Arquitectura Open Open Open Open Open Open Closed Open Open
Software Software Software Software Software Software Software Software Software
IMU (GDL) 10 10 0 10 9 10 7 7 10
Canales RC 4 16 20 20 20 20 20 8 20
N° máximo 4 4 8 4 8 8 8 8 6
de motores
Cámara         
Bluetooth         
WiFi         
GPS         
Frame         
modificable
Telemetría         
Computadora       
personal
Costo $7,000 $3,600 $17,00 $3,500 $3,180 $2,000 $2,000
(MXN)

2.2.1 Pixhawk Mini.

Se conoce como 3DR Pixhawk Mini (ver Figura 8) al piloto automático o controlador
de vuelo diseñado por 3DR y HobbyKing. Está basado en dos procesadores STM32, uno
para el procesamiento principal y el otro para las entradas-salidas del controlador.

12
Figura 8. Controladora de vuelo 3DR Pixhawk Mini.

La IMU de este autopiloto se compone de un circuito integrado (CI) MPU9250


(acelerómetro, giroscopio y magnetómetro) de la firma TDK InvenSense, un CI ICM20608
(acelerómetro y giroscopio) del mismo fabricante y un CI MS5611 (barómetro) de TE
Connectivity, los cuales dan por resultado un vuelo más estable y más funcionalidades de
vuelo, en comparación con otras controladoras. Las funcionalidades que ofrece esta tarjeta
se pueden ver en programas como QGroundControl o Mission Planner7, donde se muestran
los diferentes tipos de vuelo, y comportamiento del drone en caso de fallas en la
comunicación, agotamiento de la batería, vuelo para interiores y exteriores, entre otros.

Las interfaces de la controladora son las siguientes:

 Puerto serie UART destinado al GPS.


 I2C para sensores digitales.
 CAN para control digital de motor.
 ADC para sensores analógicos.
 Puerto micro USB (para la configuración del controlador desde una computadora).
 Entrada PPM de la señal del RC.
 Entrada RC compatible con Futaba S BUS®.
 Entrada RC compatible con satélite Spektrum DSM/DSM2/DSM-X®.

7
QGroundControl y Mission Planner, son programas de código abierto destinadas a configurar y pilotar
naves a control remoto, mediante puntos de coordenadas o de manera autónoma. Son los más completos
y tienen compatibilidad con todos los controladores de vuelo.

13
La versión de la Pixhawk Mini permite adaptarla a diferentes frames debido a su
reducido tamaño (38*43*12mm.); comparándola con las demás versiones de su familia.
3DR desarrolló un sensor GPS compacto (perteneciente a la serie Neo.M8N) para esta
versión de controladora, dicho GPS es compatible con los sistemas de navegación global
por satélite (GNSS) e incorpora una brújula digital (CI HMC5983) [7].

2.3 Protocolo MAVLink.

MAVLink (Micro Air Vehicle Communication Protocol) es un protocolo de


comunicación desarrollado especialmente para el intercambio de información entre el
UAV y una estación de control en tierra. Consiste en una ligera librería que permite realizar
la comunicación con los vehículos no tripulados, utilizando ficheros con extensión “.xml”.
La manera de almacenamiento de la información da la posibilidad de empaquetar y
estructurar los datos, usando diferentes lenguajes de programación.

La trama de MAVLink tiene la siguiente estructura (Figura 9):

Figura 9. Trama de bytes del protocolo MAVLink. Fuente: www.xdrones.es/mavlink/.

En la Tabla 3 se describen las subsecciones de la cabecera, carga útil y checksum del


protocolo de comunicación MAVLink.

La librería MAVLink cuenta con licencia LGPL (GNU Lesser General Public License)
lo que permite a los usuarios ocuparla en proyectos tanto de Closed Source como de Open

14
Source. Es compatible con muchos microcontroladores y sistemas operativos, por
mencionar algunos como: ARM7, ATMega, dsPic, STM32; y Linux, iOS y Windows [41].

Tabla 3. Descripción de los bytes de MAVLink.

Cabecera Inicio Indica el comienzo de la trama de MAVLink.


Longitud Indica el tamaño del payload en bytes (0 a 255).
Número de Señala el número de paquete enviado según su
secuencia pertenencia.
Identificador del Identifica al sistema para diferenciarlo entre varios de
sistema la misma red.
Identificador del Señala qué componente de este sistema ha enviado el
componente mensaje para diferenciarlo entre los demás.
Identificador del Indica el tipo de mensaje enviado y señala cómo debe
mensaje leerse el payload.
Payload Payload Contiene los datos a transmitir, que puede contener de 0
a 255 bytes.
Checksum Checksum Checksum contiene la información de los errores para
realizar un control sobre ellos.

2.4 DroneKit.

Se trata de una interfaz de programación de aplicaciones (API, por sus siglas en inglés
Application Programming Interfaces), un conjunto de comandos, funciones y protocolos
informáticos que permiten a los desarrolladores crear aplicaciones ejecutables en una
computadora de placa simple (SBC, Single Board Computer) y, se comunican con un
autopiloto (en este caso la Pixhawk) a través de MAVLink, un enlace de baja latencia.

DroneKit permite gestionar el comportamiento del drone así como las misiones, es
capaz de obtener información de telemetría, estado y parámetros del UAV. Esta API utiliza

15
el lenguaje Python y es compatible con todos los vehículos que utilizan el protocolo
MAVLink.

DroneKit está destinado principalmente para su uso en computadoras SBC basadas en


Linux, montadas sobre el vehículo y que se comunican con el piloto automático a través
del puerto serie. También se puede usar en computadoras (desde una estación de control
en tierra) que ejecutan Linux, Windows o Mac OSX; estas computadoras se comunican
directamente con el drone por medio de WiFi o por una radio de telemetría.

Durante el desarrollo de las aplicaciones, es necesario ejecutarlas en una computadora


de desarrollo; comunicándolas con un vehículo simulado que se ejecuta en la misma
máquina (a través de una conexión UDP, User Datagram Protocol). Todo a través del
simulador SITL (Software In The Loop), el cual permite crear y probar aplicaciones sin un
vehículo real.

SITL puede ejecutarse de forma nativa en Linux (solo arquitectura x86), Mac y
Windows, o dentro de una máquina virtual. Se puede instalar en la misma computadora
que DroneKit, o en otra computadora en la misma red [42].

Las SBC compatibles con la API en cuestión son:

 Raspberry Pi.
 Intel Edison.
 BeagleBoneBlack.
 Odroid.

En cuestión de usos, DroneKit proporciona clases y métodos para:

 Conectarse a uno o más vehículos desde un script.


 Obtener y configurar el estado del vehículo.
 Llevar un drone a una posición específica en el modo GUIADO.
 Anular los ajustes realizados desde el canal RC.

16
2.5 Raspberry Pi y OpenCV.

La Raspberry Pi fue lanzada al mercado hace 6 años con fines educativos y de


investigación, por la fundación Raspberry Pi (Universidad de Cambridge, Reino Unido).
Actualmente, es una computadora muy popular en el sector de desarrollo de prototipos y
está directamente relacionada con el Open Software y proyectos Open Source.

Existen dos clasificaciones de esta computadora, una es la familia principal y la otra


es una versión más reducida de la placa (modelo Zero). Las siguientes son todas las
variantes existentes en el mercado:

 Raspberry Pi 1 A, B y B+.
 Raspberry Pi 2 B.
 Raspberry Pi 3 B y B+.
 Raspberry Pi Zero y Zero W.

La SBC que se ocupará en esta investigación es la versión 3 B. Entre sus características


físicas más sobresalientes, se encuentran [43]:

 Procesador Quad Core 1.2 GHz, CI Broadcom BCM2837 de 64bits.


 Memoria RAM de 1GB.
 Un CI BCM43438 de LAN inalámbrica y Bluetooth de bajo consumo (BLE, Bluetooth
Low Energy).
 Puerto Ethernet.
 40 pines GPIO (General Purpose Input/Output).
 4 puertos USB 2.0.
 Salida estéreo de 4 polos y puerto de video compuesto.
 Puerto HDMI.
 Puerto de cámara CSI (para conectar una cámara Raspberry Pi).
 Puerto de pantalla DSI (para conectar una pantalla táctil Raspberry Pi).
 Puerto micro SD (para carga del sistema operativo y almacenamiento de datos).
 Alimentación por micro USB (hasta 2.5A).

17
Hay una contribución enorme por parte de la comunidad de Raspberry Pi. En la red se
pueden encontrar una extensa variedad de prototipos, documentación, librerías y tutoriales
que facilitan la experimentación con esta mini computadora.

2.5.1 OpenCV.

OpenCV (Open Source Computer Vision Library) es una librería de código abierto
para visión y aprendizaje por computadora (Machine Learning). Cuenta con la licencia
BSD (Berkeley Software Distribution) lo cual la hace útil para los desarrolladores y demás
grupos, para ocuparla y modificar su código [11]. OpenCV es un proyecto de software
libre, que Intel® anunció que estaba elaborando con un grupo de investigadores
reconocidos el 13 de junio del 2000, no obstante, fue hasta en el 2006 que se lanzó su
primera versión oficial [12].

Esta librería proporciona un marco de trabajo enfocado fundamentalmente a la visión


por computadora en tiempo real. Contiene más de 500 funciones y 2500 algoritmos
optimizados, los cuales son utilizados para detección de rostros, identificación de objetos
estáticos y en movimiento, búsqueda o rastreo de objetos, clasificación de las actividades
de una persona, seguimiento de objetos, extracción de modelos 3D de objetos,
reconocimiento de paisajes y muchos otros más [13]. OpenCV está escrito en C y C++ y
tiene compatibilidad con Windows, Linux, MacOS X, iOS y Android; brinda también
diferentes interfaces para C, C++, Java y Python.

Es claro que OpenCV no puede ser la única librería de visión por computadora
existente, incluso si se habla del tipo software libre. Gandalf es una librería más, de código
abierto que permite desarrollar aplicaciones enfocadas al procesamiento digital de imagen
y video, contiene paquetes de álgebra lineal, estructuras simples, visión por computadora
y rutinas para operaciones matriciales y vectoriales. Sin embargo, la popularidad de
OpenCV ha crecido y por consiguiente, el aporte de la comunidad [11].

Tanto la librería, como su documentación, foros y tutoriales se ofrecen desde su página


oficial www.opencv.org. De esta plataforma se tomaron los módulos más importantes que
conforman la estructura de OpenCV, los cuales se presentan en la Tabla 4.

18
Tabla 4. Estructura general de OpenCV.

Componente Descripción
Core functionality Contiene la estructura de datos y contenidos básicos que utilizan
el resto de los módulos.
Image processing Módulo de procesamiento de imagen que incluye filtrado lineal
o no lineal, transformaciones geométricas, distorsión, conversión
de espacio de color, etc.
HighGUI Contiene rutinas y funciones de entrada/salida para almacenar y
cargar videos e imágenes.
Video Análisis de video que incluye algoritmos de estimación de
movimiento, resta de fondo y seguimiento de objetos.
Calib3d Algoritmos básicos de geometría de vista múltiple, calibración
de cámara única y estéreo, estimación de posición de objeto,
algoritmos de correspondencia estéreo y elementos de
reconstrucción 3D.
Features2d Módulos para detectores de características salientes, descriptores
y comparadores de descriptores.
Objdetect Algoritmos para detección de objetos e instancias de las clases
predefinidas (por ejemplo: caras, ojos, tazas, personas,
automóviles, etcétera).
VideoOI Módulo para la captura de video y uso de códecs de video.
GPU Algoritmos acelerados por GPU de diferentes módulos de
OpenCV.

Como se ha mencionado, son diversas las utilidades que ofrece la Raspberry Pi. Entre
las que están enfocadas a UAVs se encuentran: la compatibilidad con el protocolo de
comunicación (drone-autopiloto) MAVLink, el sistema operativo orientado a drones
FlyOS -un software basado en Linux y ROS, Robot Operating System- y la posibilidad de
desarrollar proyectos de visión por computadora que utilicen la librería OpenCV. Estos

19
fueron los principales factores por los cuales se eligió la Raspberry Pi para el desarrollo
de esta investigación.

2.6 Visión odométrica y odometría inercial.

La odometría es el estudio o conjunto de técnicas, para la estimación de la posición,


orientación y velocidad de un objeto o vehículo, para determinar su ubicación local 8 .
Actualmente es utilizada en vehículos (acuáticos, terrestres o voladores). El término
odometría tiene sus orígenes en el griego (“hodos” y “metro”, que significan camino y
medir, respectivamente) [16].

Para la obtención de los valores útiles para esta técnica, se emplean sensores de visión
y sensores inerciales. Otra técnica alternativa es el uso de sensores propiocetivos: el
encoder; donde se establece una relación entre las revoluciones de las ruedas y sus
dimensiones, y se le denomina odometría sobre ruedas. Como la investigación propuesta
presenta otras características diferentes a las de trabajar con un vehículo terrestre, se omite
el enfoque en la odometría sobre ruedas.

Tratándose de estimar la posición del vehículo en el aire, los métodos o estudios


empleados serán: la Odometría Visual e Inercial. Si bien, en la literatura se encuentra una
gama de trabajos que fusionan estas técnicas para corregir los errores dados en la posición
del robot [17]-[20] y [27]-[31].

2.6.1 Odometría visual.

La odometría visual o visión odométrica (VO en adelante), es el conjunto de métodos


mediante el cual se cuantifica el movimiento realizado por un objeto (robot móvil,
vehículo), en las direcciones del espacio 2D o 3D. A este proceso se le puede atribuir una
analogía con el funcionamiento de la odometría sobre ruedas. Debido a que ambos estiman

8
De acuerdo con los métodos de localización absoluta y relativa. La odometría corresponde al método de
localización relativa, porque estiman la posición del robot móvil en forma relativa a la posición anterior.
Todas sus mediciones son efectuadas desde el robot.

20
el sentido, dirección y magnitud del movimiento en medidas longitudinales. En el caso de
un vehículo terrestre, hay un conjunto de encoders que registran su movimiento
traslacional y rotacional; de acuerdo con el intervalo de tiempo registrado entre el punto
anterior con el actual, se obtiene el valor longitudinal en términos de cuántas partes del
perímetro o diámetro de la rueda, tuvieron contacto con el suelo. De esta forma, los valores
registrados se interpretan para conocer la ubicación del vehículo [14].

En el caso de la odometría visual se establecen de igual forma, procedimientos para


medir el giro o traslación del robot. Basándose en puntos9 extraídos de la imagen actual
con una imagen previa, se obtiene la distancia recorrida por éstos 10 . También es
imprescindible la medición del tiempo, la cual se registra en intervalos entre la captura de
la imagen actual con la captura anterior. Las matrices de traslación y rotación son una
herramienta fundamental para este contexto [16].

La diferencia abismal entre odometría visual con la odometría sobre ruedas, es el


procesamiento que implica cada uno. Porque si bien, ambos se basan en un registro de
parámetros cambiantes dentro de un intervalo de tiempo, ajustados o calibrados a un valor
longitudinal de referencia. En el de ruedas se trata de la información del encoder con la
medida del diámetro de estas, y en la visual, la distancia digital (pixeles) entre puntos o
regiones clave sobre la imagen. Sin embargo, la obtención de estos puntos o parámetros
de referencia; requiere de un proceso más tedioso que consta de las siguientes etapas:

1. Adquisición de imagen. Captura de la imagen desde el vehículo por medio de


una cámara digital.
2. Pre-procesado. Mejora de la imagen, de forma que se incrementen las
posibilidades de éxito en los siguientes procesos.
3. Segmentación. Etapa en la que se divide una imagen en partes correlacionadas
con su futuro uso.

9
Son referencias obtenidas estratégicamente en la imagen capturada, pueden ser bordes, concentración
de píxeles de un mismo valor, etc.
10
La distancia en la que se mueven los puntos en la imagen no es inherente a la distancia real (del
movimiento del robot). Se tiene que realizar una calibración previa; para obtener el valor que representa
cada medida en la imagen con respecto a nuestro espacio.

21
4. Representación y descripción. Consiste en extraer rasgos con alguna
información cuantitativa de interés.
5. Reconocimiento. Proceso que asigna una etiqueta a un objeto basándose en la
información proporcionada por sus descriptores.
6. Interpretación. Implica asignar un significado a un conjunto de entidades
etiquetadas.

En la última etapa del procesamiento de la imagen, es necesario establecer un marco


de referencia que ofrezca información viable como la propuesta dada en [16], donde
establecen una serie de correspondencias entre los puntos clave “m” con la posición del
centro de la cámara “O” (ver Figura 10).

Figura 10. Relación entre la imagen con el plano de la cámara.

Como se pudo observar, la visión odométrica requiere de un procesamiento de imagen


previo a los cálculos para la estimación de la posición del robot. En cuestiones de sistema
de visión artificial esto requiere de grandes recursos computacionales [15].

2.6.2 Odometría inercial.

El término odometría inercial es usado generalmente por autores anglosajones [17]-


[20] y [27]-[31] en conjunto con la odometría visual. Si bien, existe también en el inglés,

22
el término INS (Inertial Navigation System) para referirse a la misma práctica aunque es
poco utilizado. En el español, el uso de estos términos es lo contrario, los autores en [4],
[23], [24] usualmente hablan de la navegación inercial, lo que es equivalente a INS.

La odometría o navegación inercial (de forma similar a la odometría sobre ruedas o la


visual), se refiere al conjunto de técnicas para estimar la posición, dirección y velocidad
de un móvil [4]. Este estudio se basa en la información entregada por el sistema de
referencia de actitud (attitude)11 y rumbo (giroscopio, acelerómetro y magnetómetro), en
otras palabras, por una IMU [24].

Los sensores como el giroscopio o acelerómetro son insensibles a la radiación y no


requieren de estar sujetos directamente a los mecanismos de los que se pretende tomar una
referencia de movimiento. Sin embargo, esta característica no los hace susceptibles a las
demás perturbaciones. Las entradas a estos sensores conocidas como entradas de
interferencia y entradas modificadoras12, alteran la señal registrada y esto genera un error
acumulativo en la interpretación y lectura de los parámetros inerciales [23].

Para disminuir el error en las mediciones, se hace uso de algoritmos que estiman el
estado del sistema dinámico (como la posición y la velocidad de un vehículo). Un ejemplo
de estos algoritmos es el filtro de Kalman (KF, Kalman Filter). Se trata de un algoritmo
lineal recursivo, que suaviza los estados ruidosos con base en las mediciones erróneas
previas, usando el modelo del sistema. Sigue un proceso estadístico para ponderar el error
entre el valor predicho y el medido, para que finalmente estime el estado filtrado. En
resumidas palabras, filtra los estados actuales y predice los futuros [21].

Se ha usado ampliamente el KF para trabajos de navegación inercial, debido a que ha


probado su efectividad en comparación con otras técnicas como el observador Luenberger.
El factor a favor del filtro de Kalman, es su ganancia K; la cual se elige óptimamente
usando las varianzas de los ruidos que afectan al sistema, en cambio, con el observador de
Luenberger se hace de forma “manual”. Su uso en los sistemas no lineales ha desarrollado

11
El conjunto de los parámetros de la guiñada, cabeceo y giro es conocido como actitud.
12
Las entradas al sistema inercial se clasifican en tres grupos: las deseadas, interferencias y modificadoras.
La primera trata de la velocidad angular en el eje perpendicular al sensor, la segunda trata de vibraciones
y campos magnéticos. La última considera a la temperatura y el voltaje de suministro al sensor.

23
otras variantes, Filtro de Kalman Extendido (EKF, Extended Kalman Filter) y el UKF
(Unscented Kalman Filter) [22].

Existen otras variantes del filtro de Kalman que integran las mediciones de los sensores
inerciales con las del GPS, para generar lo que se conoce como método híbrido de
localización, o bien, fusión sensorial para localización y navegación [25] [26].

2.6.3 Errores en la odometría.

La odometría tiende a una acumulación o arrastre de errores, debido a que existe una
dependencia en cadena desde la referencia o punto de inicio, hasta el último punto
estimado. Es decir, si desde el principio o dentro del proceso de estimación se presenta un
error en el resultado, este es guardado y se usará para la estimación de la siguiente posición;
esto ocasiona que el próximo valor en el resultado contendrá ese error y los futuros valores
también (ver Figura 11).

Figura 11. Acumulación del error (fuente: www.tamps.cinvestav.mx/~mgomez/Odometria).

Los errores surgidos pueden clasificarse en sistemáticos y no sistemáticos. Los errores


sistemáticos suelen presentarse cuando la falla es internamente, sea por hardware o
software (componente dañado, mala calibración, error en la programación, etc.) y por
errores no sistemáticos, se consideran todos aquellos que no dependen del sistema del

24
vehículo en cuestión, sino del exterior. Dada la situación de la odometría, se reduce la
incertidumbre al combinar tanto los resultados de la odometría visual junto con los
resultados de la inercial. He aquí la importancia de fusionar ambas prácticas.

Es imprescindible distinguir los tipos de errores presentados en el sistema, porque


hablando de errores sistemáticos, estos se acumulan constantemente provocando
resultados con desviaciones cada vez más grandes.

2.6.4 Odometría visual-inercial.

Con respecto a los errores acumulativos, propios de la odometría como técnica de


localización relativa; se han presentado nuevas alternativas que han corregido en gran
medida sus estimaciones. Estas propuestas sugieren aprovechar las bondades de la visión
odométrica y fusionarlas con los resultados del sistema de medición inercial [17]-[20],
[27]-[31]. Por ejemplo, inicialmente la IMU apoyándose de algún algoritmo como el EKF;
genera los parámetros de la posición del robot. Estos parámetros se ocupan parcial o
completamente para estimar nuevamente la posición del robot desde la perspectiva de la
VO. Otra técnica es ocupar todos los parámetros medibles de la odometría tanto visual e
inercial, y siguiendo un algoritmo basado en una selección por varianzas, se utiliza el
parámetro que tenga una mayor aproximación a los valores del modelo dinámico.

3. Estado del Arte


Actualmente las universidades y centros de investigación se han centrado en el
desarrollo e implementación de algoritmos para la detección, localización, mapeo o
seguimiento de objetos con los UAV, específicamente con drones cuadricópteros. En las
siguientes subsecciones, se describen los trabajos relacionados con la propuesta de
investigación y los resultados que obtuvieron.

25
3.1 Vuelo controlado por autopilotos comerciales en conjunto con
computadoras de placa simple.

En enero del 2015, Fernández G. F. [35] propone el uso del autopiloto Pixhawk para
desarrollar un sistema de control asistido para el aprendizaje de la navegación de
multicópteros. El uso de este controlador de vuelo se debe a su compatibilidad con el
firmware APM y el protocolo MAVLink. Se diseña un Sistema de Control Asistido para
facilitar el proceso iterativo de aprendizaje, en el usuario con poca experiencia en vuelo
de multicópteros. El asistente se ejecuta desde una estación de control en tierra y envía
comandos por telemetría. En efecto, los operarios lograron concluir las pruebas propuestas
por el experimento gracias al asistente, aunque el simulador presentó poca precisión y
estimaba una altitud considerablemente grande en comparación con la real.

Sk. Noor K. y Satyanarayana G. S. [37], implementan un sistema de detección de


objetos y estiman su ubicación ocupando la visión estéreo, a través de una Raspberry Pi
en conjunto con un autopiloto basado en Arduino. La Raspberry Pi ejecuta algoritmos para
el procesamiento con un paquete de soporte de MATLAB. Al tratar el sistema con un
enfoque de clasificación de píxeles mostró ser rápido en comparación con el enfoque de
análisis por formas.

En 2016, el grupo de investigadores de la Universidad de Queensland [38];


desarrollaron un sistema open-source como guía para los UAV. Está basado en visión por
computadora que toma decisiones en tiempo real sobre el vehículo. El sistema consiste en
una placa Raspberry Pi 2 conectada vía MAVProxy (que utiliza el protocolo MAVLink)
para conectarse con el autopiloto del drone. La SBC ejecuta los algoritmos de
procesamiento (detección) de imagen con OpenCV y envía los comandos a la controladora
de vuelo.

Otras aportaciones donde la Raspberry Pi y los autopilotos conforman un sistema


inteligente para vuelo autónomo de un UAV se presentan en [39]. Donde se realiza un
aterrizaje autónomo a través de la detección de patrones visuales, y la ubicación del drone
con respecto al patrón; gracias al procesamiento de imagen de la SBC. Por ser un patrón
simple, permitió que el ciclo en la ejecución de los algoritmos fuera de 13 Hz, también se

26
destaca que la altura máxima de vuelo depende del tamaño de la plataforma y la calidad
de imagen. Por su parte, la Universidad de Tecnología en Lodz, Polonia [40]; ha
desarrollado un sistema de control para seguimiento de objetos. Utilizando las prestaciones
de ROS con la Raspberry Pi y el controlador de vuelo Pixhawk, este sistema provee un
aterrizaje autónomo basado en el reconocimiento de símbolos, y al depender de la
estructura de ROS, el consumo de recursos no fue tan demandante debido a que partes de
la estructura programada (nodos), fueron reutilizados en otros procesos.

3.2 Estimación y control de posición de un UAV por VIO.

En el 2007, es publicado el trabajo de Oskiper T., et al. [20], donde proponen una
navegación inercial asistida por visión odométrica, ocupando el método RANSAC,
fusionan los valores de la IMU con los de la VO. Debido a la geometría que presentaba el
espacio (carretera), los errores fueron menores en el momento de estimar el giro, y gracias
a la IMU fue posible corregir las estimaciones de la traslación dadas por la VO. En el
mismo año, otro grupo de investigadores propone usar dos cámaras para una visión estéreo,
y adjuntar sus parámetros calculados con los de la IMU, por medio del EKF [28]. Para
reducir los errores, las cámaras fueron acopladas en la parte trasera y frontal del sistema,
mejorando los cálculos de la visión odométrica. Para estimaciones de descenso o ascenso,
la IMU tuvo mayor importancia ya que el sistema de visión no fue adaptado para estas
mediciones.

Para el 2012, se desarrolla un sistema híbrido que ocupa dos algoritmos para mejorar
la estimación de la posición de un objeto móvil [27]. Uno consiste en la fusión de las
técnicas de SLAM (Simultaneous Localization and Mapping) con un EKF, y el otro en un
EKF de ventana deslizante. La práctica consiste en una función que determina en tiempo
real, qué algoritmo es el idóneo para procesar las mediciones visuales e inerciales, de
acuerdo con el costo computacional que cada método requerirá; de esta forma se optimizó
el procesamiento de datos. Se realizó únicamente la estimación de la trayectoria de una
plataforma móvil, debido a que el objetivo de la investigación es: abordar un estudio para

27
la navegación de sistemas pequeños con recursos limitados (en autonomía y capacidad de
procesamiento) en un espacio desconocido.

En el 2016, los investigadores Giuseppe Loianno y Vijay Kumar de la Universidad de


Pensilvania [29], utilizan la Qualcomm Snapdragon Flight Board (tarjeta destinada al
vuelo de drones) para la Estimación, Control y Planeación para el vuelo agresivo de un
pequeño cuadricóptero con una cámara e IMU. Se propone una solución para el vuelo
autónomo en interiores utilizando un algoritmo de estimación de estado robusta; que se
compone de visión odométrica y un filtro de Kalman, para contrarrestar los errores de
movimientos rápidos. En el mismo año, Ceferino O. N. y Contreras B. C. [36], compararon
el observador de estado de orden completo con la técnica LQR13, desde un AR Drone 2.0
Parrot. En la simulación en MATLAB, el observador de estado presentó en la mayor parte
de las pruebas un sobre-impulso, mientras que el LQR mostró ser mejor en el tiempo de
establecimiento. Efectivamente, al implementar las técnicas de control los resultados
fueron los vistos en simulación. Aunque ambas técnicas mejoraron la estabilidad y
robustez frente a las perturbaciones, el LQR tenía por ventaja aproximadamente 5
segundos en el establecimiento de valores.

En [31] Weinstein A. et al., proponen aprovechar las mediciones de la IMU para


determinar la actitud del vehículo, y ocupar la visión odométrica para determinar su
desplazamiento con respecto al suelo, calculando el ángulo de rotación respecto al eje
vertical, es decir, para cada tipo de medición sólo ocuparon los parámetros más confiables,
y posteriormente se fusionaron por medio de un UKF. De manera que esta técnica permitió
no realizar estimaciones sobrantes, ya que al tratarse del control de vuelo de un enjambre
de drones, el procesamiento era excesivo. Los UAV trabajan bajo la estructura de ROS,
permitiendo al sistema de estimación y control en cada robot ejecutarse a 500 Hz
garantizando el vuelo estable. Para el control del conjunto de drones, se creó una red ROS
que permitió transmitir actualizaciones de odometría a 10 Hz.

En la Universidad de Pensilvania en el 2017, Zihao Z. A. et al. [18] desarrollan una


odometría visual-inercial usando cámaras basadas en eventos (EVIO, Event-Based Visual

13
Regulador Lineal Cuadrático (LQR, por sus siglas en inglés Linear-Quadratic Regulator).

28
Inertial Odometry) para plataformas móviles, aprovechando que las iteraciones se
producen aproximadamente a 100 Hz. Sin embargo, el sistema requiere de un procesador
Intel i7 de 6 núcleos para analizar en tiempo real a un máximo de 15 características.
Comparando la EVIO con un algoritmo basado en imágenes que usa el rastreador KLT14,
esta presentó ventaja en situaciones de movimiento constante y escenas de alto rango
dinámico. Aunque registra mayores errores en una imagen extensa ya que se introducen
más desviaciones en la estimación, también se ve afectado por los espacios con poca
textura debido a que no presentan eventos.

Por su parte, en [30] implementan un sistema robusto de VIO, desarrollando un filtro


de Kalman de restricción de múltiples estados (MSCKF, Stereo Multi-State Constraint
Kalman Filter), apoyándose de un sistema de visión estéreo y una IMU. El objetivo de la
investigación es afrontar los cambios bruscos de iluminación, ráfagas de viento, baja
textura o iluminación no uniforme. Para ello, el algoritmo selecciona dos estados de
cámara que se eliminan de acuerdo con una estrategia de selección de fotogramas. En
cuestiones de optimización, se estableció una sincronía para la actualización del vector de
estado entre los estados de la cámara y los de la IMU, de manera que la incertidumbre del
último estado de la IMU no afecte a los estados de cámara existentes en el vector de estado.
En la implementación, el rendimiento de las estimaciones fue afectado en menor medida
aún por la disminución de observaciones (debido a la eliminación de estados de la cámara).
La robustez no fue un éxito notable, porque el sistema mostró la misma precisión en
comparación con otros métodos VIO optimizados, no obstante, mejoró notablemente en la
demanda de recursos de la CPU.

La Universidad Aalto de Finlandia en 2018, mejora el sistema VIO (renombrado IVO15


en su trabajo) para drones [17]. Todas las investigaciones previas descuidaron un
importante aspecto, siempre dieron por hecho la menor obstrucción del sistema de visión
(sea monocular o estéreo). Como respuesta a este problema, la IMU controla el modelo
dinámico y la VO, en cada actualización de la imagen, provee de los parámetros para la
ubicación del UAV. Esto se realiza a través de un filtro de Kalman extendido. El EKF

14
Kanade-Lucas-Tomasi
15
Inertial Visual Odometry

29
siguiendo las varianzas entre las dos contribuciones (IMU y cámara), opta por la que
menor error presente. Esto permitió que aún con la cámara ocluida, la estimación de la
posición se mantuvo en un margen de error aceptable, porque el sistema dependía
directamente de la IMU y únicamente en situaciones aceptables, ocupa las mediciones de
la VO, de ahí el cambio de nombre de la técnica a IVO.

4. Planteamiento del problema


El constante progreso tecnológico ha generado significantes desarrollos en los sistemas
del UAV. Hablando específicamente de multicópteros, estos ofrecen la posibilidad de
desarrollar investigación en múltiples áreas, debido a su capacidad de volar en todos los
puntos disponibles en el espacio a una velocidad controlada. Sin embargo, su
posicionamiento en las coordenadas (x, y, z) se limita por la precisión del receptor GPS, el
número de satélites disponibles y las mediciones del barómetro (para la estimación de la
altura); esto significa que existe una baja confiabilidad en el GPS para interiores y del
barómetro en condiciones meteorológicas cambiantes, al posicionar el drone en algún
punto de interés.

Por lo tanto, el pilotaje de un multicóptero depende en la mayor parte de las


condiciones, únicamente del control de actitud, y desafortunadamente este control ofrece
sólo la estabilidad del UAV en el aire. Aparte, la situación se complica si un usuario poco
experimentado trata de pilotar la aeronave, debido a que este necesita maniobrar los
movimientos de cabeceo, giro, guiñada y aceleración de los motores.

Existen otras opciones que mejoran esta condición, como trabajar en una sala o estudio
dotado de cámaras que retroalimentan la posición del objeto en cuestión, o el uso de drones
de gama alta. La primera opción se restringe sólo para interiores y la segunda presenta
limitaciones dada la arquitectura cerrada de este tipo de drones, aparte, representan costos
muy altos frente a los recursos con los que cuentan los estudiantes universitarios o
docentes-investigadores.

30
Para la solución de esta situación, se propone trabajar con un drone ensamblado
utilizando componentes estándares (frame de fibra de vidrio o de impresión 3D, hélices de
plástico, ESC y motor Brushless para batería de 3 a 4S) para dar posibilidad de trabajar
con un diseño propio y de acuerdo con las necesidades de autonomía, capacidad de carga
y el espacio que ocuparán los componentes a bordo.

Por lo que se refiere al control de vuelo y posición se utilizará el autopiloto Pixhawk


Mini y la computadora Raspberry Pi. El control de actitud de complementará con un
controlador de posición basado en observadores de estado, utilizando las técnicas de
odometría visual e inercial. La odometría inercial se desarrollará en la Pixhawk Mini
ocupando las mediciones de la IMU mientras que la odometría visual (estimación de
ángulo de giro) se realizará gracias al procesamiento de imagen en tiempo real, con
OpenCV desde una Raspberry Pi. Las estimaciones en esta computadora se enviarán al
autopiloto vía MAVLink.

5. Justificación
La odometría visual-inercial garantiza una estimación de la posición de la aeronave,
sin ser afectada en gran medida por errores no sistemáticos como lo es en el caso del GPS
o del barómetro. Reiterando las técnicas mencionadas en las secciones 2.6.2 y 3.2, de cada
sensor (IMU y cámara) se usarán sólo los parámetros más confiables con el fin de reducir
la incertidumbre. La importancia de considerar la VIO para reforzar el control de actitud,
es dado a este hecho.

Utilizar el controlador de vuelo Pixhawk Mini con las herramientas MAVLink,


DroneKit y componentes estándares, permitirá que el sistema sea rediseñado en el proceso
de investigación por la aparición de algún inconveniente o una necesidad nueva. También
facilitará el posterior trabajo con autopilotos de otros fabricantes, y de esa forma, se podrán
comparar los resultados en el uso de cada tarjeta. Por consiguiente, esto brindará mayores
opciones para el armado o diseño de un UAV para los fines de interés de los estudiantes e
investigadores.

31
El trabajo también sentará las bases en la caracterización y modelado de un
multicóptero, y con ello, implementar otras técnicas de control en el vuelo de un drone;
con un diseño propio para trabajos futuros de esta investigación.

6. Objetivos
Objetivo general:

Desarrollar un sistema para controlar el vuelo y la posición de un cuadricóptero; basado


en visión odométrica e inercial.

Objetivos específicos:

 Ensamblar el drone y realizar pruebas de vuelo con el controlador Pixhawk Mini.


 Construir una plataforma16 para pruebas de vuelo.
 Realizar la caracterización y modelado del cuadricóptero.
 Realizar la validación del modelo dinámico.
 Desarrollar el control de actitud y posición (odometría inercial).
 Establecer comunicación serial entre la Raspberry Pi y el controlador de vuelo
Pixhawk Mini.
 Realizar pruebas de vuelo con la librería DroneKit en python.
 Desarrollar odometría visual en un espacio conocido para calibrar la configuración
de la cámara digital.
 Fusionar los resultados de la odometría con los observadores para optimizar la
estimación de la posición.

16
La plataforma consiste en un cuerpo rígido que sostendrá al drone y permitirá realizar giros alrededor
de los ejes x, y, z.

32
7. Hipótesis
El sistema de control de posición y actitud en conjunto con las mediciones de la
odometría visual, permitirán corregir los errores de posición del cuadricóptero en el
espacio; mientras realiza su vuelo. De modo que al dejar el drone en un punto específico,
el sistema mantendrá estable su altura y evitará los movimientos laterales del drone,
ocasionados por el viento.

8. Limitaciones
Los aspectos más significativos que limitan esta investigación son los siguientes:

 El procesamiento de imágenes por la Raspberry Pi consume en gran medida sus


recursos.
 Algunos parámetros medidos por la IMU pueden ser afectados por el ruido
eléctrico.
 La imagen capturada por la Raspberry Pi está expuesta a las vibraciones de los
motores.
 La batería del drone permiten una autonomía de tan sólo 13 minutos
(aproximadamente).
 El peso de todo el conjunto de sensores, módulos y drone; disminuirán el tiempo
de autonomía.

33
9. Metodología

Figura 12. Metodología propuesta

34
10. Índice Preliminar
1. Introducción
1.1 Planteamiento del problema
1.2 Justificación
1.3 Hipótesis
1.4 Objetivos
1.5 Limitaciones

2. Marco Teórico
2.1 Vehículos Aéreos no Tripulados
2.2 Controladores de Vuelo
2.3 Protocolo MAVLink
2.4 Raspberry Pi y OpenCV
2.5 Visión odométrica y odometría inercial

3. Estado del Arte


3.1 Vuelo controlado por autopilotos comerciales en conjunto con computadoras
de placa simple.
3.2 Estimación y control de posición de un UAV por VIO

4. Observador de estados
4.1 Caracterización del cuadricóptero
4.2 Diseño del filtro de Kalman
4.3 Simulación del estimador

5. Odometría inercial-visual
5.1 Caracterización de la cámara
5.2 Programación en Python con OpenCV
5.3 Fusión de parámetros del VIO

6. Pruebas y resultados
6.1 Pruebas en tierra y en vuelo

7. Conclusiones y trabajos futuros

Referencias
Anexo

35
Etapas Meses Marzo Abril Mayo Junio Julio Agosto Septiembre

Semanas

I Construcción de la
plataforma de prueba y
experimentación con el
Soporte para Pixhawk
en Simulink.
II Obtener el modelo
dinámico del drone, su
simulación y validación.
III Diseño del sistema de
control de actitud y
posición basado en

36
observadores de estado.
IV Desarrollar la odometría
visual: calibrar la
configuración de la
cámara digital desde
11. Diagrama de Gantt (cronograma).

OpenCV, estimar el
ángulo Yaw.
V Agrupar los resultados
de la odometría visual
con los observadores.
VI Prueba en campo y
correcciones del
sistema.
VII Redacción de la tesis.
Referencias

[1] E. H. José L., “Los Drones y sus Aplicaciones a la Ingeniería Civil”, Energía y Minas
de la comunidad de Madrid y Fundación de la Energía de la Comunidad de Madrid, Madrid,
España, 2015.
[2] R. M. Pablo, “Diseño y fabricación de un drone”, Proyecto Final de Grado, Escuela
Técnica Superior de Ingeniería del Diseño, Universidad Politécnica de Valencia, España,
2014.
[3] A. A. C. De Los Santos, “Control Difuso del Quadrotor AR Drone 2.0 para el
seguimiento autónomo de trayectorias”, Tesis de Licenciatura, Instituto de Electrónica y
Mecatrónica, UTM, Huajuapan, Oaxaca, México, 2015.
[4] M. D. Díez, “Localización de Robots Móviles en Entornos Tridimensionales Mediante
Visión Estéreo y CUDA”, Proyecto Final de Carrera, Departamento de Ingeniería de
Sistemas y Automática”, Universidad Carlos III de Madrid, Madrid, España, 2014.
[5] Mc. G. David, “Make: Drones, Teach an Arduino to Fly”, 1st. Ed., San Francisco,
California, USA, MAKERMEDIA, 2016.
[6] G. V. Daniel, L. P. Jesús I., P. E. Issac, “Control de un Vehículo Aéreo No Tripulado”,
Proyecto Final de Carrera, Facultad de Informática, Universidad Complutense de Madrid,
España, 2009.
[7] Docs.px4.io. (2018). Pixhawk Mini (Discontinued) · PX4 User Guide. Disponible en:
https://docs.px4.io/en/flight_controller/pixhawk_mini.html
[8] G. R. Mario A., P. M. Fernando, (2011). Odometría. CINVESTAV, México.
Disponible en: https://www.tamps.cinvestav.mx/~mgomez/Odometria/node15.html
[9] B. M. José E., “Transmisión de datos”, 3ra. Ed., Facultad de Ingeniería, Universidad
de los Andes, Departamento de Publicaciones Mérida, Venezuela, 2005.
[10] Hifinsword. (2018). The Beginners’ Guide to RC Protocols. Disponible en:
https://www.rcgroups.com/forums/showthread.php?2301242-The-Beginners-Guide-to-
RC-Protocols
[11] V. M. Arévalo, J. Gonzáles, G. Ambrosio, “La librería de Visión Artificial OpenCV.
Aplicación a la docencia e Investigación” Dpto. de ingeniería de Sistemas y Automática.
Universidad de Málaga, España.
[12] B. Gary, K. Adrian, “Learning OpenCV”, 1rst. Ed., Sebastopol, CA., USA., O’Reilly
Media, Inc., 2008, pp.: 1-7.

37
[13] G. Eric, “Introduction to Computer Vision using OpenCV”, Berkeley Desing
Technology, Inc., Oakland, California USA., 2012.
[14] R. A. De Jesús F., “Un Sistema de Odometría Visual Monocular Bajo Restricciones
de Tiempo Real”, Tesis Doctoral, Departamento de Informática y Automática,
Universidad de Salamanca, España, 2015.
[15] L. T. A. Pedro E., “Una Arquitectura Eficiente de Percepción de Alto Nivel:
Navegación Visual para Robots Autónomos en Entornos Estructurados”, Tesis Doctoral,
Departamento de Ingeniería y Tecnología de Computadores, Facultad de Informática,
Universidad de Murcia, España, 2003.
[16] A. P. Luis E., “Sistema odométrico por visión artificial para UAV”, Trabajo Fin de
Máster, Departamento de Ingeniería de Sistemas y Autómatas, Escuela Técnica Superior
de Ingeniería, Universidad de Sevilla, España, 2018.
[17] S. Arno, C. Santiago, R. Esa, K. Juho, “PIVO: Probabilistic Inertial-Visual Odometry
for Occlusion-Robust Navigation”, 2018 IEEE Winter Conference on Applications of
Computer Vision (WACV), Lake Tahoe, NV., USA., 2018.
[18] Z. Z. Alex, A. Nikolay, D. Kostas, “Event-based Visual Inertial Odometry”, 2017
IEEE Conference on Computer Vision and Pattern Recognition, Honolulu, HI, USA, 2017.
[19] J. P. Claudio, N. Sergio, “Double Coupling Between Inertial Sensors and Visual
Odometry in Multicopters”, 2017 XLII Latin American Computer Conference (CLEI),
Cordoba, Argentina, 2017.
[20] I. M. Anastasios, I. R. Stergios, “A Multi-State Constrait Kalman Filter for Vision-
aided Inertial Navigation”, Proceedings 2007 IEEE International Conference on Robotics
and Automation, Roma, Italy, 2007.
[21] M. M. Michell, “Integración del Filtro de Kalman a un Sistema de Posicionamiento
Global (GPS) para Aplicación en Vehículos Autónomos”, Tesis de Maestría, Instituto
Tecnológico y de Estudios Superiores de Monterrey, Monterrey, México, pp. 2-5. 2003.
[22] P. Alejandro, “EKF y UKF: dos extensiones del filtro de Kalman para sistemas no
lineales aplicadas al control de un péndulo no invertido”, Monografía del Curso:
Tratamiento Estadísticos de Señales, Instituto de Ingeniería Eléctrica, Universidad de la
República, Montevideo, Uruguay, 2004.
[23] G. M. Gilberto, “Sensado Inercial en 3-D, Utilizando Giroscopios, Para la
Navegación de un Vehículo Autónomo”, Tesis de Maestría, División de Ingeniería y
Arquitectura, Instituto Tecnológico y de Estudios Superiores de Monterrey, Monterrey,
México, 2006.
[24] A. F. Thomas, “Fusión de Encoders de Cuadratura, Sensores Inerciales y Magnéticos
para la Localización de Robots Móviles”, Tesis de Maestría. Facultad de Ciencia Exactas
y Naturales, Universidad de Buenos Aires, Argentina, 2014.

38
[25] A. R. María E., “Estudio y Aplicación del Filtro de Kalman en Fusión de Sensores en
UAVs”, Tesis de Licenciatura, Dpto. Ingeniería Electrónica, Escuela Técnica Superior de
Ingeniería, Universidad de Sevilla, España.
[26] C. H. Francisco A., C. R. Juan A., “Comparativa Algoritmos Fusión MoCap-UWB”,
Dpto. De Física, Ingeniería de Sistemas y Teoría de la Señal, Universidad de Alicante,
España, 2008.
[27] M. Li, I. M. Anastasios, “Optimization-Based Estimator Design for Vision-Aided
Inertial Navigation”, Robotics: Science and Systems 2012, Sydney, NSW, Australia, 2012.
[28] O. Taragay, Z. Zhiwei, S. Supun, K. Rakesh, “Visual Odometry System Using
Multiple Stereo Cameras and Inertial Measurement Unit”, 2007 IEEE Conference on
Computer Vision and Pattern Recognition, Minneapolis, MN, USA, 2007.
[29] L. Giuseppe, B. Chris, Mc. Gary, K. Vijay, “Estimation, Control and Planning for
Agressive Flight with a Small Quadrotor with a Single Camera and IMU”, Preprint
Version, IEEE Robotic and Automation Letters, 2016.
[30] S. Ke, M. Kartik, P. Bernd, W. Michael, L. Sikang, M. Yash, J. T. Camilo, K. Vijay,
“Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight”, Preprint Version,
IEEE Robotic and Automation Letters, 2017.
[31] W. Aaron, C. Adam, L. Giuseppe, K. Vijay, “VIO-Swarm: An Autonomus Swarm of
Vision Based Quadrotors”, Preprint Version, IEEE Robotic and Automation Letters, 2018.
[32] Z. Andrew, J. Samuel, “A Review of Control Algorithms for Autonomous
Quadrotors”, Polytechnic of Namibia, Africa, Scientific Research, Open Journal of
Applied Sciences, 2014.
[33] A. Patrick, Gr. Christophe, M. Jean-Baptiste, D. Stéphane, “Nonlinear Attitude and
Position Control of a Micro Quadrotor using Sliding Mode and Backstepping Techniques”,
3rd US-European Competition and Workshop on Micro Air Vehicle Systems (MAV07) &
European Micro Air Vehicle Conference and Flight Competition (EMAV2007), Toulouse,
France, 2007.
[34] G. B. Sara, “Modelado, Simulación Y Control Inteligente de UAVs”, Proyecto Fin
de Carrera, Dpto. De Ingeniería de Sistemas y Automática, Escuela Técnica Superior de
Ingeniería, Universidad de Sevilla, España, 2013.
[35] F. G. Felipe, “Diseño e Implementación de un Sistema de Control Asistido para
Plataforma Aérea Multi-rotor”, Tesis de Licenciatura, Dpto. De Ingeniería Eléctrica,
Facultad de Ciencia Física y Matemáticas, Universidad de Chile, Santiago de Chile, 2015.
[36] C. O. Nataly X., C. B. Carlos A., “Comparación de Técnicas de Control Moderno
(Observadores de Estado Vs LQR) Implementadas Sobre un AR Drone 2.0 Parrot”,
Ingeniería en Control, Facultad Tecnológica, Universidad Distrital Francisco José de
Caldas, Bogotá D.C., Colombia, 2016.

39
[37] K. Sk. Noor, G. S. R. Satyanarayana, “Object Detection and Location Estimation
using SVS for UAVs”, 2016 International Conference on Automatic Control and
Dynamic Optimization Techniques (ICACDOT), Pune, India, 2016.
[38] C. Hyunwoong, G. Mitchell, A. Bilal, G. Felipe, “Open Source Computer-Vision
Based Guidance System for UAVs On-Board Decision Making”, 2016 IEEE Aerospace
Conference, Big Sky, MT, USA, 2016.
[39] J. Hu, Y. Guo, Z. Feng, Y. Guo, “Vision-based Autonomous Landing of Unmanned
Aerial Vehicles”, 2017 Chinese Automation Congress (CAC), Jinan, China, 2017.
[40] S. Paweł, S. Łukasz, G. Grzegorz, “Autonomous drone control system for object
tracking”, 2017 22nd International Conference on Methods and Models in Automation and
Robotics (MMAR), Miedzyzdroje, Poland, 2017.
[41] MAVLink (2015), MAVLink Developer Guide , Disponible en: https://mavlink.io/en/
[42] 3D Robotics (2016). Introducing DroneKit-Python. DroneKit. Disponible en:
http://python.dronekit.io/about/index.html
[43] Raspberry Pi Fundation (2018). Raspberry Pi 3 model B. Specifications. Disponible
en: https://www.raspberrypi.org/products/raspberry-pi-3-model-b/

40

Vous aimerez peut-être aussi