controlador difuso para brazo robótico · articulación tiene una libertad de rotación de 180...

17
Controlador Difuso Para Brazo Robótico En la mayoría de los procesos industriales, se emplean sistemas de control PID para gobernar la operación de la maquinaria. Generalmente la finalidad es manejar los actuadores de forma que realicen movimientos rápidos y precisos. El objetivo de este proyecto es desarrollar una alternativa basada en uno de los enfoques principales de la Inteligencia Artificial: Lógica Difusa. La finalidad es generar una descripción completa de un sistema de control difuso mediante el uso de conceptos pertenecientes al ramo de las matemáticas discretas. Un controlador difuso maneja conjuntos, realiza operaciones lógicas con preposiciones y realiza mapeos con funciones. La inteligencia artificial busca imitar la forma del pensamiento humano, alejándose de la lógica tradicional basada en estados binarios y acercándose al manejo de conjuntos de información más abiertos, pues los humanos en la mayoría de los casos pensamos y tomamos decisiones en función de ideas cualitativas. No siempre pensamos en términos de números. La idea del control se basa en lo siguiente: Si un humano tuviese que controlar manualmente las articulaciones de un brazo robótico. ¿Qué consideraciones tomaría en cuenta para controlar la fuerza y la dirección de rotación? El humano no calcula al ojazo los grados, evalúa funciones trigonométricas y aplica ecuaciones diferenciales en su mente para calcular el torque resultante del giro de su muñeca. Hay una especie de ‘’tanteo’’ a la hora de decidir con qué fuerza decide rotar las articulaciones, y eso es precisamente lo que busca emular el modelo que se diseñará, basado en Inteligencia Artificial. El sistema de control que implementaré busca mover las dos articulaciones rotativas de un brazo robótico, para posicionar la punta del mismo en un punto específico del plano cartesiano. Y justo como lo haría un humano, el sistema revisará la posición de las articulaciones y las girará con una fuerza dependiendo de qué tan lejos se encuentre de su posición final. Es un controlador simple cuyas entradas son las posicionales angulares iniciales y finales.

Upload: phungthuy

Post on 14-Oct-2018

231 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

Controlador Difuso Para Brazo Robótico

En la mayoría de los procesos industriales, se emplean sistemas de control PID para gobernar la operación de la maquinaria. Generalmente la finalidad es manejar los actuadores de forma que realicen movimientos rápidos y precisos. El objetivo de este proyecto es desarrollar una alternativa basada en uno de los enfoques principales de la Inteligencia Artificial: Lógica Difusa.

La finalidad es generar una descripción completa de un sistema de control difuso mediante el uso de conceptos pertenecientes al ramo de las matemáticas discretas. Un controlador difuso maneja conjuntos, realiza operaciones lógicas con preposiciones y realiza mapeos con funciones.

La inteligencia artificial busca imitar la forma del pensamiento humano, alejándose de la lógica tradicional basada en estados binarios y acercándose al manejo de conjuntos de información más abiertos, pues los humanos en la mayoría de los casos pensamos y tomamos decisiones en función de ideas cualitativas. No siempre pensamos en términos de números.

La idea del control se basa en lo siguiente:

Si un humano tuviese que controlar manualmente las articulaciones de un brazo robótico. ¿Qué consideraciones tomaría en cuenta para controlar la fuerza y la dirección de rotación?

El humano no calcula al ojazo los grados, evalúa funciones trigonométricas y aplica ecuaciones diferenciales en su mente para calcular el torque resultante del giro de su muñeca. Hay una especie de ‘’tanteo’’ a la hora de decidir con qué fuerza decide rotar las articulaciones, y eso es precisamente lo que busca emular el modelo que se diseñará, basado en Inteligencia Artificial.

El sistema de control que implementaré busca mover las dos articulaciones rotativas de un brazo robótico, para posicionar la punta del mismo en un punto específico del plano cartesiano. Y justo como lo haría un humano, el sistema revisará la posición de las articulaciones y las girará con una fuerza dependiendo de qué tan lejos se encuentre de su posición final. Es un controlador simple cuyas entradas son las posicionales angulares iniciales y finales.

Page 2: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

Descripción Física Del Sistema

El brazo robótico que será controlado por nuestro sistema difuso consta de 2 articulaciones rotativas y su movimiento está restringido a un solo plano. Cada articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. Dos motores de corriente directa se encargarán de girar por separado los ejes de las articulaciones del brazo.

El objetivo del controlador es posicionar la punta del brazo (la punta de la segunda articulación) en las coordenadas que el usuario le indique. A cada par ordenado de coordenadas cartesianas le corresponde un conjunto de dos magnitudes angulares.

El controlador alimentará el voltaje necesario a los motores para que éstos giren las articulaciones hasta que lleguen a la posición angular calculada en función de las coordenadas de entrada.

Anexo imagen del prototipo físico:

Page 3: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

Modelado Del Controlador Difuso

Un sistema difuso genera un mapeo no lineal entre las entradas al sistema y sus correspondientes salidas. El sistema se puede formar con una cantidad de n entradas y m salidas tal que:

𝑢𝑖 ∈ 𝑈

𝑦𝑗 ∈ 𝑌

𝑖 = 1,2, ⋯ , 𝑛

𝑗 = 1,2, ⋯ , 𝑚

𝑢𝑖 = 𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝑑𝑒𝑙 𝑠𝑖𝑠𝑡𝑒𝑚𝑎

𝑈 = 𝐶𝑜𝑛𝑗𝑢𝑛𝑡𝑜 𝑢𝑛𝑖𝑣𝑒𝑟𝑠𝑜 𝑑𝑒 𝑒𝑛𝑡𝑟𝑎𝑑𝑎𝑠

𝑦𝑗 = 𝑆𝑎𝑙𝑖𝑑𝑎 𝑑𝑒𝑙 𝑠𝑖𝑠𝑡𝑒𝑚𝑎

𝑌 = 𝐶𝑜𝑛𝑗𝑢𝑛𝑡𝑜 𝑢𝑛𝑖𝑣𝑒𝑟𝑠𝑜 𝑑𝑒 𝑠𝑎𝑙𝑖𝑑𝑎𝑠

El brazo robótico se compone de dos articulaciones, que se mueven por separado. A cada articulación le corresponde un motor. Cuentan también con un sensor de posición (Potenciómetros de 15 pesos) el cual variará el voltaje en función de la posición angular. Estas señales de voltaje se convierten posteriormente a magnitudes angulares.

Puesto que el sistema solamente necesita girar las articulaciones a una posición angular específica, únicamente se requiere de 2 datos de salida, que contengan la información necesaria para que el driver pueda acondicionar el voltaje que será alimentado a cada motor.

Cada entrada y salida de información se define con una variable. Los controladores difusos trabajan con variables lingüísticas para describir y caracterizar las entradas y las salidas. Así como una variable numérica toma distintos valores numéricos, una variable lingüística puede adoptar diversos valores lingüísticos.

Page 4: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

Las siguientes definiciones son necesarias para familiarizarse con el principio de operación de un controlador difuso. La definición rigurosa de las mismas viene en el libro que uso de consulta.

Conjuntos Universo

Son los dominios de los valores que pueden adoptar las variables de entrada y de salida del sistema. En nuestro caso, los posibles valores de entrada son las magnitudes angulares enteras desde -180 grados hasta 180 grados.

Las variables de salida adoptarán valores enteros desde -255 hasta 255. ¿Por qué estos números?

El voltaje de alimentación que se usará en los motores se controlará con una técnica denominada PWM (Pulse Width Modulation) El rango de variación que nos ofrece el microcontrolador que usaremos va desde 0 hasta 255 puesto que tiene un registro de 8 bits para ajustar la cantidad de PWM. 𝟐𝟖 = 𝟐𝟓𝟔

𝑈 = {−180, −179, −178, ⋯ ,178,179,180}

𝑌 = {−255, −254, −253, ⋯ ,253,254,255}

Variables Lingüísticas

Las reglas de control se especifican con descripciones lingüísticas. Por lo tanto se requieren expresiones lingüísticas para caracterizar a las entradas y salidas del sistema. Para esto se usan las variables lingüísticas. Para los sistemas difusos, se usan variables lingüísticas designadas como �̃�𝑖 para describir los valores de entrada 𝑢𝑖. De igual manera se usa �̃�𝑖 para describir las salidas 𝑦𝑖 .

Valores Lingüísticos

El elemento �̃�𝑖𝑘representa el k-ésimo valor lingüístico que puede tomar una

variable lingüística. N representa la cantidad de valores lingüísticos que puede asumir nuestra variable.

�̃�𝑖 = {�̃�𝑖𝑘: 𝑘 = 1,2, ⋯ , 𝑁}

La letra B se usa para designar los valores correspondientes a la salida.

Page 5: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

�̃�𝑖 = {�̃�𝑖𝑝: 𝑝 = 1,2, ⋯ , 𝑀}

Entonces, sabiendo todo esto, realizamos la descripción del set entradas-salidas con notación de conjuntos y se define lo que representa cada entrada y salida, junto con los posibles valores lingüísticos que pueden adoptar.

𝑢1, 𝑢2 ∈ 𝑈

𝑦1, 𝑦2 ∈ 𝑌

𝑢1 = 𝐷𝑖𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 𝑝𝑜𝑠𝑖𝑐𝑖ó𝑛 𝑎𝑛𝑔𝑢𝑙𝑎𝑟 𝑎𝑐𝑡𝑢𝑎𝑙 − 𝑓𝑖𝑛𝑎𝑙 𝑝𝑎𝑟𝑎 𝑎𝑟𝑡𝑖𝑐𝑢𝑙𝑎𝑐𝑖ó𝑛 1

𝑢2 = 𝐷𝑖𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 𝑝𝑜𝑠𝑖𝑐𝑖ó𝑛 𝑎𝑛𝑔𝑢𝑙𝑎𝑟 𝑎𝑐𝑡𝑢𝑎𝑙 − 𝑓𝑖𝑛𝑎𝑙 𝑝𝑎𝑟𝑎 𝑎𝑟𝑡𝑖𝑐𝑢𝑙𝑎𝑐𝑖ó𝑛 2

𝑦1 = 𝑃𝑜𝑡𝑒𝑛𝑐𝑖𝑎 𝑑𝑒 𝑃𝑊𝑀 𝑝𝑎𝑟𝑎 𝑒𝑙 𝑚𝑜𝑡𝑜𝑟 𝑑𝑒 𝑙𝑎 𝑎𝑟𝑡𝑖𝑐𝑢𝑙𝑎𝑐𝑖ó𝑛 1

𝑦2 = 𝑃𝑜𝑡𝑒𝑛𝑐𝑖𝑎 𝑑𝑒 𝑃𝑊𝑀 𝑝𝑎𝑟𝑎 𝑒𝑙 𝑚𝑜𝑡𝑜𝑟 𝑑𝑒 𝑙𝑎 𝑎𝑟𝑡𝑖𝑐𝑢𝑙𝑎𝑐𝑖ó𝑛 2

�̃�1 = 𝑆𝑒𝑡 𝑑𝑒 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 𝑙𝑖𝑛𝑔ü𝑖𝑠𝑡𝑖𝑐𝑜𝑠 𝑝𝑎𝑟𝑎 𝑑𝑒𝑠𝑐𝑟𝑖𝑏𝑖𝑟 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 𝑑𝑒 𝑢1

�̃�2 = 𝑆𝑒𝑡 𝑑𝑒 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 𝑙𝑖𝑛𝑔ü𝑖𝑠𝑡𝑖𝑐𝑜𝑠 𝑝𝑎𝑟𝑎 𝑑𝑒𝑠𝑐𝑟𝑖𝑏𝑖𝑟 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 𝑑𝑒 𝑢2

�̃�1 = 𝑆𝑒𝑡 𝑑𝑒 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 𝑙𝑖𝑛𝑔ü𝑖𝑠𝑡𝑖𝑐𝑜𝑠 𝑝𝑎𝑟𝑎 𝑑𝑒𝑠𝑐𝑟𝑖𝑏𝑖𝑟 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 𝑑𝑒 𝑦1

�̃�2 = 𝑆𝑒𝑡 𝑑𝑒 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 𝑙𝑖𝑛𝑔ü𝑖𝑠𝑡𝑖𝑐𝑜𝑠 𝑝𝑎𝑟𝑎 𝑑𝑒𝑠𝑐𝑟𝑖𝑏𝑖𝑟 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 𝑑𝑒 𝑦2

�̃�1 = {𝐴𝑙𝑡𝑎 (−), 𝐵𝑎𝑗𝑎 (−), 𝐶𝑒𝑟𝑜, 𝐵𝑎𝑗𝑎 (+), 𝐴𝑙𝑡𝑎 (+)}

�̃�2 = {𝐴𝑙𝑡𝑎 (−), 𝐵𝑎𝑗𝑎 (−), 𝐶𝑒𝑟𝑜, 𝐵𝑎𝑗𝑎 (+), 𝐴𝑙𝑡𝑎 (+)}

�̃�1 = {𝐴𝑙𝑡𝑎 (−), 𝐵𝑎𝑗𝑎 (−), 𝐶𝑒𝑟𝑜, 𝐵𝑎𝑗𝑎 (+), 𝐴𝑙𝑡𝑎 (+)}

�̃�2 = {𝐴𝑙𝑡𝑎 (−), 𝐵𝑎𝑗𝑎 (−), 𝐶𝑒𝑟𝑜, 𝐵𝑎𝑗𝑎 (+), 𝐴𝑙𝑡𝑎 (+)}

Cuando ingresamos las coordenadas a las que queremos posicionar la punta del brazo, el sistema calcula mediante un algoritmo los ángulos a los cuales se necesita posicionar cada una de las articulaciones.

𝑢1: Se refiere a la diferencia que existe entre el ángulo de la posición actual de la articulación 1 y el ángulo de la posición final calculada.

Page 6: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

𝑢2: Se refiere a la diferencia que existe entre el ángulo de la posición actual de la articulación 2 y el ángulo de la posición final calculada.

𝑦1: Representa la cantidad de energía eléctrica que se va a alimentar al motor de la articulación 1.

𝑦2: Representa la cantidad de energía eléctrica que se va a alimentar al motor de la articulación 2.

Se puede observar que los posibles valores de todas las variables lingüísticas se pueden describir como cero, alta o baja. Los signos (+) y (-) funcionan como indicadores de dirección.

Reglas Lingüísticas

El mapeo de los valores de entrada a los valores de salida para un sistema difuso se genera en base a un conjunto de proposiciones if-then. A este conjunto de proposiciones se le conoce como reglas lingüísticas. La operación del controlador se fundamenta en estas reglas.

Para nuestro controlador, una de las reglas lingüísticas sería la siguiente:

Si la articulación 1 se encuentra muy alejada de su posición final, entonces métele toda la potencia.

Es de esta forma que se logra imitar el razonamiento humano con esta técnica de la rama de la inteligencia artificial: el control difuso.

El controlador difuso va a energizar los motores de acuerdo a lo que le dicte el conjunto de reglas lingüísticas.

La declaración de una regla lingüística quedaría de la siguiente forma:

Si Diferencia1 es Baja(+), entonces Potencia1 es Baja(-).

�̃�14 → �̃�1

2

Me apoyo en la ilustración para argumentar esta regla. Definitivamente me hace falta práctica en CorelDraw pero con el diagrama basta.

Page 7: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

Estoy considerando la convención general para desplazamientos angulares, donde se toma la dirección en contra de las manecillas del reloj como positiva, y a favor de las mismas como negativa.

El punto rojo es la posición final y el punto azul es la posición actual del brazo. Se observa que la diferencia angular entre estas dos posiciones es baja y va en contra de las manecillas del reloj. Eso si se toma como punto de referencia la posición final.

En la lógica difusa, los rangos de las magnitudes correspondientes a los valores lingüísticos siempre serán subjetivos, y dependerán del criterio del diseñador.

El control difuso que vamos a implementar es muy simple, puesto que solamente usa una variable de entrada en su proceso de inferencia. Las reglas lingüísticas en las cuales estará basado el control de ambas articulaciones, son las siguientes:

Regla 1:

Si Diferencia es Baja(+), entonces Potencia es Baja(-).

Regla 2:

Si Diferencia es Baja(-), entonces Potencia es Baja(+).

Regla 3:

Si Diferencia es Alta(+), entonces Potencia es Alta(-).

Regla 4:

Si Diferencia es Alta(-), entonces Potencia es Alta(+).

Regla 5:

Si Diferencia es Cero, entonces Potencia es Cero.

La descripción de las reglas se puede compactar usando notación de conjuntos:

𝑅𝑒𝑔𝑙𝑎 1: 𝑆𝑖 𝑢𝑖 𝑒𝑠 �̃�𝑖4, 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 �̃�𝑖

2.

Page 8: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

𝑅𝑒𝑔𝑙𝑎 2: 𝑆𝑖 𝑢𝑖 𝑒𝑠 �̃�𝑖2, 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 �̃�𝑖

4.

𝑅𝑒𝑔𝑙𝑎 3: 𝑆𝑖 𝑢𝑖 𝑒𝑠 �̃�𝑖5, 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 �̃�𝑖

1.

𝑅𝑒𝑔𝑙𝑎 4: 𝑆𝑖 𝑢𝑖 𝑒𝑠 �̃�𝑖1, 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 �̃�𝑖

5.

𝑅𝑒𝑔𝑙𝑎 5: 𝑆𝑖 𝑢𝑖 𝑒𝑠 �̃�𝑖3, 𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 �̃�𝑖

3.

También se puede construir una especie de tabla de verdad donde se registre la consecuencia de cada premisa, es decir, la salida que corresponde a cada tipo de entrada. Es la representación más compacta para las reglas:

𝑢𝑖

�̃�𝑖1 �̃�𝑖

2 �̃�𝑖3 �̃�𝑖

4 �̃�𝑖5

𝑦𝑖 �̃�𝑖5 �̃�𝑖

4 �̃�𝑖3 �̃�𝑖

2 �̃�𝑖1

El dominio de los valores numéricos de los datos de entrada se declara a partir de un conjunto universo 𝑈. Una variable de entrada 𝑢𝑖 toma un valor numérico dentro de este conjunto universo.

Se tiene que �̃�𝑖𝑘 ∈ �̃�𝑖denota un valor lingüístico específico para la variable

lingüística �̃�𝑖.

A cada elemento 𝑢𝑖 le corresponde un valor lingüístico �̃�𝑖𝑘.

Cada valor lingüístico �̃�𝑖𝑘 abarca un rango de valores dentro de U.

Cada valor lingüístico �̃�𝑖𝑝 abarca un rango de valores dentro de Y.

El conjunto universo 𝑈 está conformado por los números enteros desde el -180 hasta el 180, e indica la diferencia, en grados, de la posición angular actual con la posición angular final o deseada.

𝑢𝑖 = ∆𝜃= 𝜃𝐴𝑐𝑡𝑢𝑎𝑙 − 𝜃𝐹𝑖𝑛𝑎𝑙

𝑢𝑖 ∈ 𝑈

𝑈 = {−180, −179, −178, … ,178,179,180}

Page 9: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

A cada elemento 𝑢𝑖 ∈ 𝑈 se le asocia con un valor lingüístico del conjunto �̃�𝑖. Esta asociación la define el diseñador del controlador, y puede ser cambiada deliberadamente para calibrar el comportamiento del sistema.

Estos son los rangos de valores que se escogieron para cada valor lingüístico:

𝐴𝑖1 = [−180, −30]

𝐴𝑖2 = [−60, 0]

𝐴𝑖3 = [−15, 15]

𝐴𝑖4 = [0, 60]

𝐴𝑖5 = [30, 180]

𝐵𝑖1 = [−255, −100]

𝐵𝑖2 = [−160, 0]

𝐵𝑖3 = [−80, 80]

𝐵𝑖4 = [0, 160]

𝐵𝑖5 = [100, 255]

Anexo imagen de las funciones de membresía hechas con el software de MATLAB. Es mucho más fácil visualizar los rangos de esta forma.

Page 10: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

Existe una función 𝜇(𝑢𝑖) asociada a �̃�𝑖𝑘 que mapea el conjunto universo 𝑈 a [0, 1].

Esta función se conoce como función de membresía.

𝜇: 𝑈 → [0,1]

Una función de membresía describe la certeza con la que el valor de 𝑢𝑖 pueda describirse lingüísticamente como �̃�𝑖

𝑘.

Las funciones de membresía se especifican de una forma subjetiva, en base a la experiencia o la intuición del diseñador.

El valor de la función de membresía nos indicará qué tanto aplica una regla. Si se tiene una certeza de un 50% de que la entrada es Baja Negativa, entonces se aplica a un 50% que la salida de nuestro sistema sea una Potencia Baja Positiva.

Cuando hay más de una premisa activa, entonces se usa un método de conclusión basado en centroides para obtener la salida crisp del sistema. La intención de este texto no es explicar cómo funciona el método Mamdani de lógica difusa, sino demostrar de qué forma se puede representar un diseño de un controlador difuso mediante conceptos de matemáticas discretas. En el libro de Fuzzy Control, anexado en la bibliografía, viene toda la información a detalle y explicada con un ejemplo práctico de un péndulo invertido.

En un controlador difuso, del tipo más simple, se evalúa una entrada y se asocia con un valor lingüístico. Este valor lingüístico se usará posteriormente para determinar las reglas lingüísticas que aplican para la entrada del sistema.

Page 11: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

Las reglas lingüísticas forman conjuntos difusos de conclusión, y el valor exacto de la salida del sistema se obtiene evaluando el centroide de la figura formada a partir de los conjuntos difusos generados.

Implementación

Desarrollé en Python un programita que te entrega el valor del crisp output correspondiente a una magnitud de entrada dentro del conjunto universo 𝑈. Lo que hace el código es que, a partir de los rangos y de los tipos de funciones de membresía, consulta las reglas que tú le proporcionas y genera los conjuntos difusos de conclusión. Después obtiene los centroides y las áreas de estos conjuntos para determinar la salida.

Hubiera sido más conveniente hacer un código que trabajara con objetos, pero no sé implementarlos en Python, así que me valí de arrays para proporcionar los parámetros necesarios a las diferentes rutinas.

La función principal del código recibe 3 parámetros. La magnitud del valor de entrada, o sea, la diferencia angular entre posición inicial y final; un vector de reglas lingüísticas, y un vector de variables lingüísticas. Con esta información, la función nos entrega el valor del crisp output.

Los vectores de reglas y variables lingüísticas primero deben de ser definidos por el usuario.

El vector con la información correspondiente a cada valor lingüístico contiene 5 parámetros:

0: Tipo de función de membresía.

Valor 0 para función de membresía de trapecio izquierdo. Valor 1 para función de membresía triangular. Valor 2 para función de membresía de trapecio derecho.

1, 2, 3: Parámetros de la función de membresía. Son los puntos en donde se encuentran los bordes de los trapecios y los triángulos de las F.M.

4: Valor de la función de membresía.

Los pantallazos del código se anexan al final.

Page 12: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

Evaluación

Debido a la naturaleza de los procedimientos de la lógica difusa, resulta difícil describir el funcionamiento de un sistema o controlador difuso simplemente con palabras. Las matemáticas discretas nos sirven como apoyo para poder compactar y visualizar la información de una forma concreta y más digerible. Mi intención con este documento es mostrar cómo se puede describir un controlador difuso haciendo uso de conjuntos y notaciones matemáticas.

Bibliografía

[1] Kevin M. Passino and Stephen Yurkovich, Fuzzy Control. Ohio, Estados Unidos: Addison – Wesley, 1998.

[2] Ralph P. Grimaldi, Discrete and Combinatorial Mathematics: An Applied Introduction. Rose – Hulman Institute of Technology: Addison – Wesley, 2004.

Page 13: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con
Page 14: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con
Page 15: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con

\

Page 16: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con
Page 17: Controlador Difuso Para Brazo Robótico · articulación tiene una libertad de rotación de 180 grados, 90 grados en una dirección, 90 grados en la otra. ... Cuentan también con