DESARROLLO DE CONTROL AUTOMÁTICO DE LEGO "ALPHA REX"



·         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