·
Introducción a la lógica difusa
Desde
su aparición a mediados de los años 60, la teoría de conjuntos difusos se ha
venido aplicando con éxito en la resolución de diversos problemas de control
principalmente aquellos que resultan difíciles de tratar con los métodos
clásicos; esto debido a la presencia de
incertidumbre no aleatoria en la información que manejan. La solución de
problemas con las características antes mencionadas no pueden tener una
solución acotada a una expresión matemática, sin embargo se puede deducir una
solución mediante un conjunto de reglas expresadas en lenguaje natural que es por naturaleza impreciso por la gran
cantidad de reglas y términos que se pueden utilizar.
En
el contexto de la ciencia computacional, una solución difusa es conocida como
sistema lógico difuso, el cual produce salidas en un proceso de tres etapas: fuzzificación, inferencia, defuzzificación. En las subsecciones siguientes se presentan
conceptos básicos sobre lógica difusa y su utilización en la solución de
problemas, además se enfatiza su utilización en este trabajo como parte fundamental
utilizando dicha teoría para el control automático de este sistema.
Esta
sección se compone de la siguiente forma, inicialmente se introduce a la teoría
de los sistemas difusos y su relación con la ciencia computacional como una de
las ramas más utilizadas de la inteligencia artificial, después se identifica
una necesidad en cuanto a este trabajo, se propone una solución automática
utilizando un sistema difuso de control de movimiento del robot lego, y finalmente se detalla el
desarrollo de los componentes que forman al sistema en sus diferentes niveles
de abstracción.
·
Lógica difusa
El
cerebro humano interpreta información sensorial incompleta e imprecisa
proporcionada por sus órganos sensitivos. La teoría de conjuntos difusos se
basa en un cálculo sistemático de salidas a partir de variables lingüísticas, y
a partir de los cálculos con dichas variables se realiza un cálculo numérico de
las salidas usando las restricciones lingüísticas expresadas en reglas y
valores de la función de membrecía.
El
sistema de inferencia difusa es una estructura computacional muy popular basada
en los conceptos de la teoría difusa, en reglas del tipo si-entonces y en
métodos de inferencia difusa. Los sistemas de inferencia difusa, actualmente
han encontrado diversas aplicaciones exitosas dentro de una gran variedad de
áreas tales como el control automático, la clasificación de datos, el análisis
de decisiones, los sistemas expertos, la predicción de series de tiempo, la
robótica y en el reconocimiento de patrones. A causa de su naturaleza
multidisciplinaria, los sistemas de inferencia difusa son conocidos como
sistemas expertos, modelos difusos, controladores lógicos difusos o simplemente
como sistemas difusos.
·
Estructura de los sistemas
difusos
El
uso de los sistemas difusos ha sido aplicado en una gran variedad de áreas
tales como el control automático, el procesamiento digital de señales, las
comunicaciones, los sistemas expertos, la medicina, etc. Sin embargo, las
aplicaciones más significativas de los sistemas difusos se han concentrado
específicamente en el área del control automático.
Esencialmente
un sistema difuso, es una estructura basada en conocimiento definida a través de
un conjunto de reglas difusas del tipo si-entonces, las cuales, a partir de un
valor porcentual de pertenencia de una variable de entrada en un conjunto
difuso generan una salida, utilizando el mismo valor porcentual para el
conjunto de salida dependiendo del propio significado de la regla, es decir, en
la regla se define la correspondencia entre conjuntos de entrada y salida. En
la Figura 1 se muestra la estructura básica de un sistema de control difuso.
Figura 1 Esquema general de un sistema difuso
Como
se mencionó anteriormente, la lógica difusa se compone de los procedimientos de
fuzzificación, inferencia y defuzzificación los cuales son descritos a continuación.
o Fuzzificación
El
proceso de la fuzzificación consiste en una transformación de un dato o de una
variable con algún valor dentro de su dominio, a su correspondiente conjunto
difuso.
o Inferencia
El
mecanismo de inferencia consiste en un conjunto de reglas escritas en la forma
si-entonces para relacionar los conjuntos de entrada con los conjuntos de
salida. La variable o variables de entrada se mapean en un conjunto dependiendo
de su valor y la definición de los intervalos de los conjuntos. El valor
obtenido y la variable lingüística que identifica al conjunto o conjuntos a los
que pertenece se pasan al motor de
inferencia, para obtener una pertenencia a algún conjunto de salida y posteriormente
computar su valor de salida en la defuzzificación.
o Defuzzificación
La
defuzzificación es definida como un mapeo de un conjunto difuso. Conceptualmente,
la tarea de defuzzificar es especificar un punto que refleje la mejor
representación del conjunto difuso. Sin embargo, algunos métodos de defuzzificación
son prácticos. Como es común, a continuación detallaremos dos de las técnicas
más utilizadas para la defuzzificación.
·
Requerimientos de control
En
este trabajo se encuentran una serie de requerimientos, entre los más
importantes tenemos, el control de la potencia de los motores que se resume en
la velocidad a la cual se moverá el Humanoide LEGO. Además se dispone de cuatro
sensores que le permiten al humanoide interactuar con su ambiente, por tal
motivo, se propone un sistema de control
básico de los motores del humanoide que tomen como entrada sus sensores, tal y
como lo hace el cerebro humano procesando información que pudiera estar
incompleta e imprecisa. Con este enfoque en la siguiente subsección se detalla
el sistema propuesto para realizar el control automático del movimiento
del LEGO humanoide basado en lógica
difusa.
La codificación del sistema de control automático se realizó utilizando la herramienta Eclipse SDK 3.6.1 y una computadora de 32 bits corriendo el Sistema Operativo Windows Vista. A continuación se presentan las características funcionales de la interfaz gráfica que trabaja en conjunto al sistema de control basado en lógica difusa.
·
Sistema propuesto
La
codificación del sistema de control automático se realizó utilizando la
herramienta Eclipse SDK 3.6.1 y una computadora de 32 bits corriendo el Sistema
Operativo Windows Vista. A continuación se presentan las características
funcionales de la interfaz gráfica que trabaja en conjunto al sistema de
control basado en lógica difusa.
En
las secciones anteriores se remarcó que el LEGO Humanoide utiliza 4 sensores
para interactuar con su entorno, estos sensores son la analogía de los órganos
sensoriales que existen en los seres humanos. Por lo tanto, para cada sensor
debe existir un sistema de adquisición de datos, un procesamiento de la señal
que es adquirida y a partir de la heurística del sistema ejecutar una acción,
de la misma forma en que sucede en un ser vivo.
En
este trabajo se utilizó como sistema de adquisición de datos el hardware que
proporciona el LEGO Mindstorms conectado a una PC a través de una interfaz USB
o conexión vía Bluetooth según se requiera. Mientras que, la heurística con la
que se indican las acciones que ejecutará el Humanoide consiste en variar la
potencia en los motores A y B que producen el andar o el motor C que produce el
braseo del Humanoide. Los sensores que producirán acciones y la modulación de
estas acciones se dirigen por medio de
los controles que componen a la interfaz gráfica.
En
la parte izquierda de la ventana de la interfaz gráfica se encuentran en orden
descendente y de izquierda a derecha:
a)
los
menús opciones y defuzzificación
b)
los
botones iniciar, detener y salir
c)
los
selectores de sensor de entrada
d)
los
selectores de motores de salida
e)
las
salidas de texto que contienen la lectura del sensor de entrada y el
correspondiente valor de salida y
f)
los
selectores de conjuntos gaussianos tanto para entrada como para salida.
En
la parte derecha de la ventana de interfaz aparecen las gráficas de los
conjuntos difusos de entrada y de salida, finalmente aparecen representadas las
reglas o la heurística del sistema. En los siguientes párrafos se justificará
cada control de la interfaz gráfica y su funcionamiento.
En
la parte superior de la interfaz encontramos el menú opciones y debajo de él
encontramos 3 botones con las etiquetas
Iniciar, Detener y Salir. Estos botones y menú permiten el control general del
sistema, es decir, inician, detienen y permiten salir de la interfaz de control
automático, que en términos de programación, inician, detienen y terminan el
hilo principal del sistema que lee la información de los sensores y la envía al
procesamiento para generar una salida o nivel de potencia en los motores.
El
selector con la etiqueta Ultrasónico se utiliza para que los datos de la
lectura del sensor ultrasónico se utilicen como datos entrada del sistema. En
particular, la prueba para el sensor ultrasónico se basa en que, a partir de la
medición de la distancia a un objeto, el LEGO Humanoide se acerque a dicho
objeto a gran velocidad y la velocidad disminuya gradualmente según se acerca
al objeto, véase la Figura 2.
Figura 2. Selector para el sensor de ultrasónico,
el sensor ultrasónico mide la distancia al objeto más próximo al LEGO
Humanoide.
El
selector con la etiqueta Sonido se utiliza para que los datos de la lectura del
sensor de sonido (brazo izquierdo del humanoide) se utilicen como datos entrada
del sistema. En particular, la prueba para el sensor de sonido se basa en que,
a partir de la intensidad de sonidos que percibe, el LEGO Humanoide
modifique la velocidad de su movimiento
de traslación o ejecute una rutina con pasos de baile y aumente la frecuencia
de sus movimientos según aumenta la intensidad de música (Ver Figura 3).
Figura 3. Selector para el sensor de sonido, el
sensor de sonido obtiene la señal de sonido del ambiente, de la misma forma que
un micrófono.
El
selector con la etiqueta Luz se utiliza para que los datos de la lectura del
sensor de luz (brazo derecho del humanoide) se utilicen como datos entrada del
sistema. En particular, la prueba para el sensor de luz se basa en que, a
partir de la intensidad de luz que percibe, en particular se le cambió de
intensidad de luz en el laboratorio y utilizando una linterna, el LEGO
Humanoide modifique la velocidad del movimiento de sus motores y camine rápido
(Ver Figura 4).
Figura 4. Selector para el sensor de luz, el sensor
de luz obtiene la señal de luz del ambiente.
Los
selectores con las etiquetas Motor C y Motor A, B, permiten dirigir la salida
producida por los conjuntos gaussianos que modulan la salida, al motor que el
usuario seleccione, motor C para el braseo del Humanoide y motores Ay B para
hacer caminar al robot.
En
particular, el valor de salida que se dirige a los motores varía en el
intervalo de 0 a 100, esto porque se maneja un valor porcentaje en la salida
para generalizar la información en la interfaz y en el sistema. Por lo tanto,
con fines más específicos el programador puede elegir la escala de la salida o
dominio del conjunto difuso de salida al definir las variables en las clases de
lógica difusa que se incluyen en este trabajo.
Como
se mencionó anteriormente, las clases de lógica difusa, codificadas para este
trabajo, pueden trabajar con tres tipos de conjuntos tanto para la entrada como
para la salida. En la Figura 5 se muestra la selección de un conjunto triangular
de salida y en la Figura 6 se muestra la selección de un conjunto triangular
como entrada, utilizando el selector con la etiqueta Triangular, dentro del
conjunto de selectores con la etiqueta OutPut Set y el conjunto con la etiqueta
InPut Set. Este tipo de conjunto difuso permite alcanzar la potencia máxima de
salida sólo cuando la entrada se encuentra en el centro de algún conjunto de
entrada.
Figura 5. Selector de un
conjunto triangular de salida.
Figura 6. Selector de un
conjunto triangular de entrada.
Otro
tipo de conjunto con un comportamiento
parecido al conjunto triangular es el conjunto trapezoidal. En la Figura 7 se muestra la selección de un conjunto trapezoidal de salida y en la Figura 8 se muestra la selección de un conjunto trapezoidal como entrada, utilizando
el selector con la etiqueta Trapezoidal, dentro del conjunto de selectores con
la etiqueta OutPut Set y el conjunto con la etiqueta InPut Set. Este tipo de
conjunto difuso permite alcanzar el máximo valor de pertenencia un intervalo,
que es la base menor del conjunto
trapezoidal, para los triángulos extremos del conjunto trapezoidal se tiene un
comportamiento similar al conjunto triangular y depende la pendiente del
conjunto trapezoidal.
Figura 7. Selector de un conjunto
trapezoidal de salida.
Figura 8. Selector de un
conjunto trapezoidal de entrada.
Para
finalizar con los tipos de conjuntos que proporciona este sistema, se tiene a
los conjuntos gaussianos que permiten tener una salida suavizada y permiten
valores de pertenencia que nunca son nulos, mientras que para cualquier valor
dentro del dominio de la entrada o salida se puede tener una distribución
uniforme en la función de pertenencia entre 1 y números infinitamente pequeños
(el tamaño más pequeño es definido por la arquitectura hardware que se
utilice).
Finalmente,
en la parte superior de la interfaz encontramos el menú con la etiqueta
Defuzzification, que permite seleccionar entre los 4 métodos de defuzzificación:
SOM (Smallest of Maximum), MOM (Mean of Maximum), LOM (Largest of Maximum) y
COA (Center of Area), que permiten, como su nombre lo indica, seleccionar solo
un valor del dominio de la variable de salida, a partir de los valores de
pertenencia, remarcados en color verde en la interfaz, esto con la finalidad de
contar con un sistema didáctico y modificar la precisión en la salida o
potencia de los motores, véase la Figura 9.
Figura 9. Representación de la
salida producida por los métodos LOM, SOM, MOM y COA (centroide) para la misma
área de defuzzificación.
Un
ejemplo de la diferencia entre las 4 posibles salidas se puede expresar de
forma gráfica, en la Figura 10 se muestra la salida producida por los métodos
entes mencionados para la misma área de Defuzzificación. Para extender la
información, en [1], [2], [3] y [4] se detalla el funcionamiento de los métodos
de Defuzzificación utilizados en este trabajo.
Figura 10. Representación gráfica
de la salida producida por los métodos LOM, SOM, MOM y COA (centroide) para la
misma área de defuzzificación.
Referencias
[1] Jyh-Shing Roger Jang, Chuen-Tsai Sun, Eiji Mizutani. Neuro-Fuzzy and Soft Computing: A Computational Approach to Learning and Machine Itelligence. Prentice Hall. Upper Saddle River, NJ. ISBN 0-13-261066-3. 1997.
[2] Simon Coupland. Fuzzy Logic in the Real World. Centre for Computational Intelligence De Montfort University The Gateway Leicester United Kingdom. October 22,2009.
[3] Wen Yu, Xiaoou Li, Fuzzy identification using fuzzy neural networks with stable learning algorithms, IEEE Transactions on Fuzzy Systems, 2004.
[4] “Handbook of Intelligent Control: Neural, Fuzzy and Adaptive Approaches”, 1992.
No hay comentarios:
Publicar un comentario