INTELIGENCIA ARTIFICIAL
INTRODUCCION AL CONTROL CON FUZZY LOGIC

DESARROLLO DE UN PROTOTIPO DE CONTROL DE BRAZO ROBOTICO POR SEÑALES DE EMG. IMPLEMENTACION EN PICAXE.
Cuando se desea hacer control con las técnicas convencionales, nos encontramos con la necesidad de obtener un modelo matemático del proceso a controlar. Además, se necesita contar con un objetivo en el control, expresado en forma matemática precisa. Si el sistema a controlar es algo complejo, no lineal y con un comportamiento temporal que varía, la tarea de obtener el modelo matemático puede ser complicada. Mediante el empleo de técnicas fuzzy se pueden implementar sistemas de control fácilmente, por medio de reglas provenientes de la experiencia o el sentido común.

INTRODUCCION
¿Quién no ha escuchado en esta época hablar de FUZZY LOGIC o Lógica Difusa? Seguramente a diario vemos y oímos sobre lavarropas y televisores con tecnología fuzzy, software que juega al ajedrez con técnicas fuzzy, satélites con control fuzzy, etc.

Nuestro propósito en este artículo es desmitificar esta técnica, poniéndola en términos muy sencillos al alcance de cualquier aficionado.

Para comenzar tendremos que repasar algo muy conocido, que seguramente todos hemos visto alguna vez, y nos referimos a la Teoría de Conjuntos. Aunque ahora trataremos con un nuevo tipo de conjuntos: los conjuntos fuzzy (difusos o borrosos).

En realidad, los conjuntos ordinarios no son más que un caso particular de los conjuntos difusos. Algunos autores prefieren llamarlos subconjuntos difusos, por razones teóricas válidas, pero nosotros directamente nos referiremos a ellos como conjuntos, ya que el objetivo es simplificar la teoría para facilitar la comprensión y el uso.

 
LOS CONJUNTOS FUZZY

Supongamos que tenemos un conjunto A, y B es un subconjunto de A. En teoría convencional de conjuntos decimos que (B está incluido en A). Y para indicar que un elemento x cualquiera pertenece al conjunto A escribimos: .

Ahora, existe otra forma para expresar esa noción y consiste en el uso de una función de pertenencia. Es decir, una función que mediante su valor nos indique, si x pertenece o no a A. Así, si llamamos µA(x) a dicha función, podemos indicar:

 
 
Aquí estaríamos frente al caso en que la cuestión es si pertenece o no pertenece y listo. Pero extrapolemos esto a la realidad y veamos que no es tan sencillo en la vida cotidiana.

Si por ejemplo quisiéramos clasificar a las personas en altas y bajas, entonces podríamos definir dos conjuntos (figura 1):

Ahora supongamos que imponemos la condición que una persona para ser “alta” tiene que tener 1,70 [m] de altura. Así, si tomamos como x la persona:

µC(x) =1 si la persona tiene una estatura igual o mayor a 1,70 [m] (o sea pertenece al conjunto C)

µC(x) =0 caso contrario

Como podemos apreciar, este método es un poco injusto, porque no es lo mismo decir que es baja una persona que posee 1,50 [m] de altura, que aquella que mide 1,69 [m]. Además, ¿es realmente apreciable la diferencia entre 1,69 [m] y 1,70 [m]?

Así nace la idea de usar funciones que indiquen pertenencia a conjuntos, cuyos resultados no sean exclusivamente unos o ceros, sino que puedan variar libremente en el intervalo [1,0].

Con este método podemos indicar por ejemplo; si la persona x mide 1,69 [m]:

µC(x) = 0,99 (tiene un 99% de pertenencia al conjunto de altos)

y además:

µD(x) = 0,01 (tiene un 1% de pertenencia al conjunto de bajos)

Como vemos, formar parte de un conjunto no excluye la pertenencia a otro, en esta teoría.

Ahora, ¿para qué nos sirve esto? Bueno, como todos sabemos, en la vida normalmente nuestra apreciación de la realidad no es un simple Sí/No. Por ejemplo, la madre que está a punto de bañar a su bebé, tiene la tina preparada, introduce la mano y dice que el agua “está caliente”, pero ¿cuánto es caliente?, ¿exactamente 60 ºC?, ¿o más?

O cuando alguien afirma que un objeto es amarillo, ¿es porque la longitud de onda que refleja es exactamente de 555 [nm]?

La lógica difusa tiene mucho que ver con la precisión. ¿Qué tan importante es ser preciso en lo que uno dice?

Surge la necesidad de expresar estas ideas en el campo de la técnica de alguna manera sencilla y fácil de manipular. La Lógica Difusa se propone como una herramienta para salvar estas ambigüedades. Obviamente no es la única manera, pero sí la más simple.

Así podemos mencionar algunas de sus ventajas:

  • Es fácil de entender conceptualmente. Los conceptos matemáticos detrás de ésta son muy simples. Lo que la hace atractiva es la naturalidad con la que uno puede expresar problemas de cierta complejidad.

  • Es flexible. Una vez diseñado un algoritmo fuzzy es fácil cambiar las reglas de comportamiento.

  • Los datos pueden ser imprecisos y sin embargo, el sistema funcionar igualmente.

  • Se pueden modelizar sistemas no-lineales de complejidad arbitraria.

  • El sistema fuzzy puede ser construido en base a la experiencia de expertos. Esto es una gran ventaja si lo comparamos con las redes neuronales donde la red entrenada es como una caja negra, en problemas complejos.

  • Puede combinarse con técnicas de control convencionales.

  • Se basa en el lenguaje natural. Como veremos en el diseño de los controladores, es sencillo expresar las instrucciones como reglas fuzzy.

Entonces la Lógica Fuzzy es una forma para conseguir los resultados deseados.

Volviendo al ejemplo, podemos expresar el conjunto de personas bajas como (figura 2):

Otra forma de expresar esto es mediante cada elemento con su función de pertenencia asociada, según el ejemplo:

Conjunto de Personas altas = {1|(0,001) ; 1,50|(0,01) ; 1,60|(0,85) ;1,64|(0,99) ; 1,80|(1) ; 1,90|(1) }

Al concepto matemático: C = {x1| (µC(x1)); x2|(µC(x2)); ...; xn|(µC(xn))} se le llama conjunto fuzzy.

Existen varias operaciones sencillas y muy útiles que se pueden realizar con los conjuntos fuzzy. Analicémoslas con mucha atención, ya que son la base para el diseño posterior.

Ver figura 3.5.

Los conjuntos fuzzy pueden ser representados en forma gráfica muy fácilmente como en la figura 3:

O sea para el diseño de controladores fuzzy, los conjuntos se representan con figuras convexas (triángulos y triángulos truncados son una manera sencilla) y normales (en las que al menos uno de sus elementos tenga valor de pertenencia 1, y ninguno más que 1)

Así, por ejemplo, supongamos que tenemos una persona que mide 1,60 [m]; podemos mediante el gráfico saber cuan alta y cuan baja es (observe la figura 4).

También, las funciones de pertenencia podrían ser como las siguientes (figura 5).

Pero por simplicidad, a la hora de implementar, escogemos figuras como éstas (figura 6).

Ahora al expresar las funciones de pertenencia gráficamente, las operaciones que definimos anteriormente también pueden expresarse en forma gráfica (figura 7).

 
DISEÑO DE UN CONTROL FUZZY
Pero, ¿cómo empleamos estos conocimientos?, todo parece complicado. Bueno, ahora veremos que toda esta teoría es muy útil.

En general, en todo proceso de control tenemos (figura 8).

Existe un conjunto de sensores que leen los datos de la porción del mundo real sobre la cual queremos actuar, le envían esta información a un controlador, que posee una referencia acerca de que comportamiento se desea en este proceso. El controlador influye sobre el proceso, basándose en esa referencia y a través de los actuadores procura lograr el comportamiento esperado.

Lo que haremos es construir un controlador, pero basándonos en las técnicas que nos proporcionará la lógica fuzzy. Su referencia serán las reglas fuzzy.

Para estudiar todos los pasos en el diseño de este tipo de controladores, veremos un caso práctico.

 
CASO PRACTICO:
CONTROL DE BRAZO ROBOTICO MEDIANTE SEÑAL DE EMG.
INTRODUCCION AL PROBLEMA
En la actualidad existen muchos individuos con discapacidades sensori- motoras. Con el objetivo de ayudar a la mejora de la calidad de vida de estas personas se han desarrollado numerosos sistemas prácticos. Estos sistemas están orientados, en algunos casos a facilitar sus funciones sensori-motoras, tales como extender la mano, tomar y sostener algo, pararse, caminar, etc. y en otros casos directamente a reemplazar los medios originales por los cuales se lograban estas tareas.

Un caso muy común es el reemplazo de las funciones mínimas de un miembro superior, en una persona amputada, mediante una prótesis electrónica y mecánica.

Aunque quizás todavía nos parezca un producto de la ciencia ficción, hoy en día mediante las técnicas de procesamiento de señales, es factible el diseño de “prótesis inteligentes”. Estas se conectan mediante electrodos al paciente y le permiten, con un entrenamiento adecuado, controlar dicha prótesis.

Un ejemplo convencional de estos dispositivos es el “Utah ARM2”, una prótesis eléctrica diseñada por “Motion Control” (Figuras 9 y 10).

Para el control de estas prótesis se cuenta con las señales generadas en los músculos por las instrucciones que el cerebro les envía para moverlos. Estas se llaman señales electromiográficas (EMG). En nuestro caso, para simplificar, supondremos que utilizaremos estas señales obtenidas de una persona sana, es decir, de músculos normales e intactos.

Enunciaremos el problema entonces: Supongamos que deseamos controlar el movimiento de rotación de un brazo utilizando un controlador difuso.

El brazo robot imitará el movimiento de la articulación del codo de la persona.

Para controlar este movimiento sensaremos las señales de electromiografía correspondientes a los músculos bíceps y tríceps. Y aquí cabe una aclaración. Como no es el propósito de este artículo explicar los requerimientos de un dispositivo electrónico capaz de adquirir electromiograma, simplemente describiremos brevemente en qué consiste dicho aparato.

La señal de electromiograma está constituida por la sumatoria espacio temporal de trenes de potenciales de acción de unidades motoras. En palabras sencillas, los nervios el enviarle señales eléctricas a los músculos esqueléticos, para que se contraigan, generan potenciales eléctricos que pueden ser adquiridos en la superficie del músculo estudiado, mediante electrodos de superficie (figura 11).

Estos electrodos registran esa señal de muy pequeña amplitud y la ingresan a un sistema de adquisición, el cual la amplifica considerablemente, la filtra y la entrega por ejemplo con un rango de excursión de 0-5 voltios- (ver figura12).

Como dijimos anteriormente, por el momento supondremos que nuestro interés está en el controlador del brazo robótico y por lo tanto no nos preocuparemos por el procesamiento que recibirá esta señal, para llegar a ser una señal eléctrica de la amplitud considerada. De manera que nuestro controlador estará compuesto por dos canales de adquisición como el de la figura 12 (ver figura 13).

Así, el controlador recibe la señal proveniente de los músculos tríceps y bíceps.

Ahora veamos en base a esta figura como deberá comportarse el controlador:

Si la contracción del bíceps es superior a la que presenta el tríceps, nuestro brazo robótico deberá moverse en sentido antihorario.

Supondremos que nuestro sistema de acondicionamiento entrega la señal en un voltaje de 0-5V y filtrada como muestra la figura 14.

Para simular el comportamiento de un músculo, la señal procesada varía en un rango de 0-5 [v] y debe considerarse de “poca importancia” si es menor a 1 [v], “pequeña” si se encuentra cerca de los 2 [v], “media” cercana a los 3 [v] y “alta” si es mayor a los 4 [v].

 
DISEÑO DEL SISTEMA DE CONTROL FUZZY
Para la solución de este problema, implementaremos en un microcontrolador Picaxe, un controlador fuzzy.

El esquema típico de un sistema de control fuzzy es el que vemos en la figura 15.

Como observamos en el esquema, inicialmente las variables de entrada reales se convierten en variables lingüísticas mediante un proceso de fuzzificación. Usando esas variables se evalúa un conjunto de reglas de control, las que darán como resultado una serie de valores lingüísticos a su salida. Por último, se desfuzzifican estas variables obteniéndose los valores reales de salida.

1) Fuzzificación:
Mediante este proceso se calcula el grado de pertenencia de la entrada a uno o varios conjuntos fuzzy, digamos el grupo de posibles conjuntos a los que puede pertenecer la variable de entrada. Las funciones de pertenencia se definen a partir de los datos y el sentido común. Las mismas se representarán gráficamente de la forma vista anteriormente.

Entonces, en el ejemplo dividimos el rango de cada variable (las dos señales de EMG) en cuatro conjuntos difusos a los que llamaremos:

PI: poca importancia, P: pequeña importancia, M: media importancia, A: alta importancia. Así tendremos (figura16):

Los posibles movimientos del motor, también tendrán sus funciones de pertenencia y serán:

GA: giro antihorario, GH: giro horario, Q: quieto (ver figura 17).

Así, tanto el valor de la señal del bíceps, como la del tríceps tomadas a intervalos regulares de tiempo, le asignaremos su pertenencia al conjunto que corresponda.

2) Evaluación de las reglas de control (también llamado proceso de inferencia):
Con el objeto de determinar cómo se va a comportar el sistema, se establece una serie de reglas de la forma IF (...) THEN (...) que indican la acción a realizarse según a qué conjunto pertenece la entrada.

Evaluar las reglas significa determinar cuáles de ellas se activarán frente a un subconjunto de valores de pertenencia a los conjuntos fuzzy del dominio de entrada.

Una forma práctica de expresar estas reglas de una manera compacta, es mediante la matriz de memoria asociativa difusa (FAM de sus siglas en inglés).

Basándonos en el enunciado del ejemplo dado, podemos obtener las reglas que determinarán el comportamiento del sistema. Estas serán las que vemos en la tabla 1.

De esta tabla, por ejemplo, la regla 1 se podría expresar según las definiciones vistas anteriormente como:

µGA(x)= min{µAB(EMG1), µMT(EMG2)}

También la regla 9:

µQ(x)= min{µPIB(EMG1), µPIT(EMG2)}

Y así todas las restantes. Podemos ahora armar la matriz FAM de estas decisiones (tabla 2).

3) Desfuzzificación:
La entrada para el proceso de desfuzzificación es un conjunto fuzzy y la salida es un número real simple. Quizás el método más popular de desfuzzificación es el cálculo del centroide, que retorna el centro del área bajo la curva. Hay por lo menos, cinco métodos para construir la salida a partir de éste, usaremos uno de los más sencillos:

 
 
Donde:
µi: grado de pertenencia al conjunto i-ésimo.
CEi: centroide del conjunto i-ésimo.

En nuestro ejemplo será.

 
 
Con el diseño visto lograremos un comportamiento suave y proporcional a todas las combinaciones posibles.

Bueno, creemos que por ahora es suficiente. Dejaremos el tema de los centroides para la próxima edición, con más detalles. Recorreremos el proceso completo viendo cómo funciona, lo que nos ayudará a comprender esta teoría. Así que a no preocuparse.

Además escribiremos el código de implementación de este controlador en un PICAXE 18. De esta manera mostraremos cómo hacer funciones de pertenencia, centroides, etc. Finalmente lo probaremos. ¡Hasta la próxima!

 
Autor: Sergio Raúl Richter - sergioraulrichter@yahoo.com.ar
Con la colaboración de Mariana Ortúzar
FIGURA 1
 
FIGURA 2
 
FIGURA 3
 
FIGURA 3.5
 
FIGURA 4
 
FIGURA 5
 
FIGURA 6
 
FIGURA 7
 
FIGURA 8
 
FIGURA 9
 
FIGURA 10
 
FIGURA 11
 
FIGURA 12
 
FIGURA 13
 
FIGURA 14
 
FIGURA 15
 
FIGURA 16
 
FIGURA 17
 
TABLA 1
 
TABLA 2
 
 
 
 
 
PROMOCIONES
 
 
PROMOCIONES
 
 
PROMOCIONES