Вы находитесь на странице: 1из 6

CONTROL DE VELOCIDAD Y POSICIONAMIENTO DE UN

DRONE MEDIANTE LÓGICA DIFUSA


Richard Navas Jácome Harley Lovato Huertas Pablo Salazar Montalvo

Universidad de las Fuerzas Universidad de las Fuerzas Universidad de las Fuerzas


Armadas ESPE Extensión Armadas ESPE Extensión Armadas ESPE Extensión
Latacunga Latacunga Latacunga

rfnavas1@espe.edu.ec harleypatricio@espe.edu.ec ppsalazar@espe.edu.ec

del proyecto es el control de la velocidad en función


de la posición del objeto, cuando esté cerca, o lejos, la
RESUMEN velocidad será lenta o muy rápida para posicionarse en
En la presente investigación se describe un controlador la ubicación del objeto reconocido.
difuso, este tipo de control es una de las técnicas de la La implementación del control borroso se realizó
Inteligencia Artificial y posee muchas aplicaciones, en mediante un algoritmo de programación en python sin
el presente trabajo se aplicará al control de la utilización de librerías, en cambio, para el control del
velocidad de un drone. Esta aplicación puede ser de drone, se utilizaron librerías de este lenguaje de
mucha utilidad en la industria inteligente, por ejemplo programación.
en la fumigación de cultivos por medio de drones, en
la vigilancia de territorios extensos, etc. 2. MARCO TEÓRICO

PALABRAS CLAVE: Control borroso, drone, Lógica borrosa


inteligencia artificial, aplicaciones.
La lógica borrosa permite utilizar el lenguaje ordinario
ABSTRACT como variable para un computador. El conocimiento
se interpreta como una colección de restricciones
In the present investigation a fuzzy controller is difusas sobre un grupo de variables. Esta lógica es
described, this type of control is one of the techniques ampliamente utilizada en sistemas de ayuda a la
of the Artificial Intelligence and has many decisión. [3]
applications, in the present work it will be applied to
the control of the speed of a drone. This application La lógica difusa permite a un computador razonar en
can be very useful in the intelligent industry, for términos lingüísticos y reglas de forma similar a como
example in the spraying of crops by means of drones, lo realizan los seres humanos. [3]
in the surveillance of extensive territories, etc.
Conjuntos borrosos
1. INTRODUCCIÓN
Un conjunto borroso es un conjunto de pares
La lógica borrosa es un lenguaje matemático que ordenados de un elemento ‘x’ que pertenece a un
representa valores no cuantificables. En la lógica universo U, y su grado de pertenencia. [4]
clásica, un elemento pertenece o no pertenece a un
conjunto, en cambio en la lógica borrosa cada Las funciones de membresía, que dan el grado de
elemento tiene grados de pertenencia [1]. Este tipo de pertenencia, pueden definirse de forma funcional, que
control es propio de la Inteligencia Artificial, donde se tiene distintas formas como trapezoidal, triangular, de
intenta emular el comportamiento humano. [2] campana, etc. [4]

Para el diseño del controlador borroso se utiliza el La figura 1 muestra un ejemplo de conjuntos borrosos
conocimiento y experiencia del diseñador; una de las con variables lingüísticas y funciones de membresía:
ventajas de éste control es que no se necesita un
modelo matemático del proceso a controlar. [2]

El presente trabajo expone el control de la velocidad


de un drone por medio de lógica difusa, los
controladores clásicos presentan un problema ya que
solamente admiten una entrada y una salida. Para ésta
aplicación se necesita analizar dos entradas, la
posición en ‘x’ y la posición en ‘y’ de un objeto que
será reconocido mediante visión artificial. El objetivo Figura 1 Conjunto borroso [3]
Operaciones borrosas

En los conjuntos clásicos existen operaciones que se


pueden aplicar a los conjuntos borrosos, como son:

 Unión (OR), ecuación 1:

𝜇𝐴∪𝐵 (𝑥) = max⁡[𝜇𝐴 (𝑥), 𝜇𝐵 (𝑥)] (1)

 Intersección (AND), ecuación 2:

𝜇𝐴∩𝐵 (𝑥) = min⁡[𝜇𝐴 (𝑥), 𝜇𝐵 (𝑥)] (2) Figura 4 Plano de referencia

 Complemento (NOT), ecuación 3: 3. Consideraciones para el diseño del


controlador Fuzzy para la variación de
𝜇𝐴̅ (𝑥) = 1 − 𝜇𝐴 (𝑥) (3) velocidad (ver figura 5).
Control borroso: Mamdani

La figura 2 muestra la arquitectura de un controlador


tipo Mamdani:

Figura 5 Conjuntos borrosos en el plano de referencia

4. Asignación de los parámetros a tomar en


Figura 2 Arquitectura Mamdani [5] cuenta para cada eje en el diseño del
controlador (ver figura 6).
El diseño del controlador tiene el siguiente
procedimiento:

1. Se seleccionan las funciones de pertenencia


que realizarán la difusificación. [5]
2. Se establecen las reglas a partir de
proposiciones condicionales. [5]
3. Se seleccionan las funciones de pertenencia
para la desdifusificación y el método para
encontrar el valor de salida que es el del Figura 6 Parámetros para definición de variables lingüísticas
centroide, se utiliza la ecuación 4. [5]
5. Creación de los conjuntos a considerar en el
∑ 𝜇(𝑥).𝑥 diseño del controlador Fuzzy con respecto a
∑ 𝜇(𝑥)
⁡(𝑑𝑖𝑠𝑐𝑟𝑒𝑡𝑜) (4.1)
las dos entradas dadas por cada eje para el eje
∫ 𝜇(𝑥).𝑥𝑑𝑥 x (deltax) y para eje y (deltay) (ver figura 7).
⁡⁡(𝑐𝑜𝑛𝑡𝑖𝑛𝑢𝑜) (4.2)
∫ 𝜇(𝑥)𝑑𝑥

3. PROCEDIMIENTO
1. Tamaño de imagen a procesar es de 640x480
(ver figura 3).

Figura 7.1 Conjuntos borrosos en el eje 'x'

Figura 3 Tamaño de la imagen

2. Plano de referencia a ocupar en el proceso


(ver figura 4).
8. Aplicación de las reglas (ver figura 10)

Figura 7.2 Conjuntos borrosos en el eje 'y'

Figura 10 Verificación del controlador


6. Funciones de membresía para el control
Fuzzy en donde la velocidad dada para el 9. Como aplicación del código del controlador
drone es de 0m/s a una máxima de 15 m/s, de lógica difusa en el drone, se cambiaron los
considerando los tres parámetros para lento, parámetros de programación a Python en
medio y alto (ver figura 8). Linux por ser el lenguaje de desarrollo nativo
en el drone. Siempre bajo los mismos
parámetros de diseño del Fuzzy para el
control de velocidad (ver figura 11).

Figura 8 Conjuntos borrosos para la salida

7. Reglas del controlador Fuzzy para la


variación de velocidad en donde las
consideraciones para lejos el drone aumente Figura 11 Programación en Python

su velocidad y a medida que se acerque pase 10. Se definen matematicamete los conjutnos:
por normal la velocidad será media y al llegar
a cerca su velocidad sea lenta con respecto al Para la variación pixeles en X:
punto centro (ver figura 9).
 Cerca:
∆𝑥
+ 1,⁡⁡⁡⁡⁡⁡ − 80 < ∆𝑥 < 0⁡⁡
𝐶𝑒𝑟𝑐𝑎 = { 80
∆𝑥
− + 1⁡,⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡0 < ∆𝑥 < 80⁡⁡
80
 Normal Derecha
∆𝑥
− 0.5,⁡⁡⁡⁡⁡⁡40 < ∆𝑥 < 120⁡
80
𝑁𝑜𝑟𝑚𝑎𝑙𝐷 = ⁡⁡⁡⁡⁡1,⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡120 < ∆𝑥 < 200⁡⁡⁡⁡⁡
∆𝑥
{ 40 + 6,⁡⁡⁡⁡⁡⁡200 < ∆𝑥 < 240⁡⁡

Figura 9 Establecimiento de las reglas  Normal Izquierda


∆𝑥
−− 0.5,⁡⁡⁡⁡⁡ − 40 < ∆𝑥 < −120⁡
80
𝑁𝑜𝑟𝑚𝑎𝑙𝐼 = ⁡⁡⁡⁡⁡1⁡⁡,⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡ − ⁡120 < ∆𝑥 < −200⁡⁡⁡⁡⁡
∆𝑥
{ 40 + 6⁡,⁡⁡⁡⁡⁡⁡⁡⁡ − 200 < ∆𝑥 < −240⁡⁡
 Lejos Derecha
∆𝑥
𝐿𝑒𝑗𝑜𝑠𝐷 = {40 − 5,⁡⁡⁡⁡⁡⁡200 < ∆𝑥 < 240⁡⁡
1⁡⁡,⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡240 < ∆𝑥 < 320⁡⁡

 Lejos Izquierda
∆𝑥
𝐿𝑒𝑗𝑜𝑠𝐼 = {− 40 − 5⁡,⁡⁡⁡⁡ − 200 < ∆𝑥 < −240⁡⁡
1.⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡ − 240 < ∆𝑥 < −320⁡⁡
Figura 12 Implementación y pruebas
Para la variación pixeles en Y:

 Cerca:
∆𝑦
+ 1.⁡⁡⁡⁡⁡⁡ − 60 < ∆𝑥 < 0⁡⁡
𝐶𝑒𝑟𝑐𝑎 = { 60
∆𝑦
− + 1.⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡0 < ∆𝑥 < 60⁡⁡
60
 Normal Derecha
∆𝑦
− 0.5.⁡⁡⁡⁡⁡⁡30 < ∆𝑥 < 90⁡
60 Figura 13 Implementación y pruebas
𝑁𝑜𝑟𝑚𝑎𝑙𝐷 = ⁡⁡⁡⁡⁡1.⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡90 < ∆𝑥 < 150⁡⁡⁡⁡⁡
∆𝑦
− + 6.⁡⁡⁡⁡⁡⁡150 < ∆𝑥 < 180⁡⁡
{ 30

 Normal Izquierda
∆𝑦
− − 0.5.⁡⁡⁡⁡⁡ − 30 < ∆𝑥 < −90⁡
60
𝑁𝑜𝑟𝑚𝑎𝑙𝐼 = ⁡⁡⁡⁡⁡1.⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡ − ⁡90 < ∆𝑥 < −150⁡⁡⁡⁡⁡
∆𝑦
+ 6.⁡⁡⁡⁡⁡⁡⁡⁡⁡ − 150 < ∆𝑥 < −180⁡⁡
{ 30

 Lejos Derecha
Figura 14 Implementación y pruebas
∆𝑦
𝐿𝑒𝑗𝑜𝑠𝐷 = { 30 − 5.⁡⁡⁡⁡⁡150 < ∆𝑥 < 180⁡⁡ 4. ANÁLISIS DE RESULTADOS
1,⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡180 < ∆𝑥 < 240⁡⁡
A continuación, se analiza si es que el resultado del
 Lejos Izquierda control borroso es coherente con los requerimientos,
∆𝑦 es decir si el valor de velocidad crece y crece conforme
𝐿𝑒𝑗𝑜𝑠𝐼 = { 30 − 5,⁡⁡⁡⁡⁡ − 150 < ∆𝑥 < −180⁡⁡
− a la posición del objeto detectado. Posteriormente los
1,⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡ − 180 < ∆𝑥 < −240⁡⁡ valores de velocidad son comparados con los valores
obtenidos a través de MatLab para corroborar si el
Para la velocidad de salida código implementado responde correctamente.

 Velocidad lenta Para hacer las pruebas, se ejecuta el código usando la


WebCam de la misma computadora y a un objeto con
𝑢𝑋 1
𝑉𝑒𝑙 = {⁡− + ,⁡⁡⁡⁡⁡0 < 𝑉 < 7 color similar al que se desea implementar se ubica en
7 7 diferentes posiciones en la pantalla para obtener
 Velocidad media resultados.

5 ∗ 𝑢𝑋 + 3.⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡3 < 𝑉 < 8⁡ Prueba 1:


𝑉𝑒𝑙 = { ⁡⁡⁡⁡⁡⁡
−5 ∗ 𝑢𝑋 + 13.⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡8 < 𝑉 < 13⁡⁡ Se ubica el objeto lo más próximo al punto central de
la pantalla (figura 15).
 Velocidad rápida
4 ∗ 𝑢𝑋 + 8.⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡8 < 𝑉 < 12⁡
𝑉𝑒𝑙 = { ⁡⁡⁡⁡⁡⁡
𝑢𝑋 = 1⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡⁡12 < 𝑉 < 20⁡⁡
es decir la velocidad del drone es media. El resultado
es aceptable para esta prueba.

Prueba 4

En esta prueba se ubica el objeto en una posición entre


los rangos normal y lejanas (figura 18).

Figura 15 Prueba 1

El objeto está en una posición (1,0) y la velocidad es


0.04375, tendiendo a cero. Por lo tanto el resultado es
aceptable ya que en esta posición el Drone debería
permanecer estático.

Prueba 2: Figura 18 Prueba 4

En esta prueba se ubica el objeto en una posición muy El objeto está en una posición (-276,166) una y la
cercana al centro (figura 16). velocidad es 13.49. Los valores de las coordenadas X,
Y están entre los rangos lejanos de normal y lejos, y se
espera que la velocidad este entre los rangos de media
y rápida. La velocidad entregada en esta prueba
satisface los requerimientos.

Prueba 5

En esta prueba se ubica el objeto en una posición entre


los rangos normal y lejanas (figura 19).

Figura 16 Prueba 2

El objeto está en una posición (-69,43) una y la


velocidad es 5.9885. Las dos coordenada están en
valores extremos de los conjuntos cerca y normal por
lo tanto se infiere que la velocidad debe estar entre el
rango de velocidades lentas y medias. El valor de
velocidad es aceptable para esta prueba.

Prueba 3 Figura 19 Prueba 5

En esta prueba se ubica el objeto en una posición El objeto está en una posición (-290,199) una y la
normal entre los extremos y en centro (figura 17). velocidad es 14.25. Ambos valores de coordenadas se
encuentran en rangos lejanos, y la velocidad es la
máxima que puede proporcionar el algoritmo. El
resultado es óptimo en este caso.

A continuación, se ubica en una tabla los valores de


velocidades y se los compara.

Velocidad
Prueba MatLab Código
1 2.333 0.04375
2 6.88 5.9885
3 8 8
Figura 17 Prueba 3
4 12.2 13.49
El objeto está en una posición (-123,75) una y la 5 14.25 14.25
velocidad es 8. Las dos coordenadas están en valores
pertenecientes a los conjuntos de posición normales,
Como se puede ver, los resultados varían ligeramente, [4] M. Santos Peñas y E. M. Suescun, «Aplicación
a pesar de que la tendencia de crecimiento es similar. de la lógica difusa en el ámbito de las energías
La causa probable es que MatLab use un método renovables,» 3 Mayo 2012. [En línea].
diferente para desborrosificar el resultado final que el Available:
usado para la implementación del código (Método https://dialnet.unirioja.es/descarga/articulo/508
centroide discreto). 5360.pdf. [Último acceso: 20 11 2017].
5. CONCLUSIONES: [5] P. Constante, «LÓGICA BORROSA,» 4
Los conjuntos borrosos facilitan la definición de noviembre 2015. [En línea]. Available:
variables que no pueden ser cuantificables, por http://mctronic-
ejemplo, si un objeto está cerca o lejos. ingenieria.blogspot.com/2015/11/control-
difuso.html. [Último acceso: 20 11 2017].
El lenguaje de programación en python es un lenguaje
híbrido de alto nivel, el cual tiene menor cantidad de
instrucciones que los lenguajes C o C++, el cual
resulta fácil de entender y aplicar al control difuso,
además de que es el lenguaje de desarrollo del drone.

Los conjuntos y funciones de membresía están


correctamente definidos, ya que la velocidad y
posicionamiento del drone con respecto al objeto
reconocido es el deseado.

6. RECOMENDACIONES

Verificar que las condiciones de vuelo sean óptimas


para el drone.

Comprobar que el tamaño del objeto de interés tenga


el tamaño adecuado para su reconocimiento por visión
artificial.

Definir números impares de conjuntos, además de


formas que sean sencillas para su implementación en
la programación.

7. REFERENCIAS

[1] N. Ramírez Pérez y M. Laguna Estrada, «La


lógica borrosa: conjuntos borrosos,
razonamiento aproximado y control borroso,»
2012. [En línea]. Available:
http://pistaseducativas.itc.mx/wp-
content/uploads/2013/01/6-RAMIREZ-PE-
100-55-65.pdf. [Último acceso: 20 11 2017].

[2] «LÓGICA DIFUSA Y SISTEMAS DE


CONTROL,» [En línea]. Available:
http://www.biblioteca.udep.edu.pe/bibvirudep/t
esis/pdf/1_185_184_133_1746.pdf. [Último
acceso: 20 11 2017].

[3] C. González Morcillo, «Lógica Difusa. técnicas


de Softcomputing,» [En línea]. Available:
http://www.esi.uclm.es/www/cglez/downloads/
docencia/2011_Softcomputing/LogicaDifusa.p
df. [Último acceso: 20 11 2017].

Вам также может понравиться