Está en la página 1de 15

Tecnológico Nacional de México.

Instituto Tecnológico de La Laguna

División de Posgrado e investigación


Maestría en ciencias en Ingeniería Eléctrica
Instrumentación Electrónica

Inteligencia Artificial

Ivan Alejandro López Mercado


# Control: M1813047

Reconocimiento Difuso de Objetos

30/05/2019
Introducción.

Recientemente, la cantidad y variedad de aplicaciones de la lógica difusa


han crecido considerablemente. LA lógica difusa es una lógica alternativa a la
lógica clásica que pretende introducir un grado de vaguedad en las cosas que
evalúa. En el mundo en que vivimos existe mucho conocimiento ambiguo e
impreciso por naturaleza. El razonamiento humano con frecuencia actúa con este
tipo de información. La lógica difusa fue diseñada precisamente para imitar el
comportamiento del ser humano.

La lógica difusa se inició en 1965 por Lotfi A. Zadech profesor de la


universidad de california en Berkeley. Surgió como una herramienta importante
para el control de sistemas y procesos industriales complejos, así como también
para la electrónica de entretenimiento y hogar, sistemas de diagnóstico y otros
sistemas expertos.

La lógica difusa en comparación con la lógica convencional permite trabajar


con información que no es exacta para poder definir evaluaciones convencionales,
contrario con la lógica tradicional que permite trabajar con información definida y
precisa.
Marco Teórico.

Lógica Difusa

La lógica difusa se puede aplicar en procesos demasiado complejos,


cuando no existe un modelo de solución simple o un modelo matemático preciso.
Es útil también cuando se necesite usar el conocimiento de un experto que utiliza
conceptos ambiguos o imprecisos. De la misma manera se puede aplicar cuando
ciertas partes de un sistema a controlar son desconocidas y no puede medirse de
forma confiable y cuando el ajuste de una variable puede producir el desajuste de
otras. No es recomendable utilizar la lógica difusa cuando algún modelo
matemático ya soluciona eficientemente el problema, cuando los problemas son
lineales o cuando no tienen solución.

La lógica difusa permite tratar con información que no es exacta o con un


alto grado de imprecisión a diferencia de la lógica convencional la cual trabaja con
información precisa. El problema principal surge de la poca capacidad de
expresión de la lógica clásica.

La necesidad de trabajar con conjuntos difusos surge del hecho que existen
conceptos que no tienen límites claros. Un conjunto difuso se encuentra asociado
por un valor lingüístico que está definido por una palabra, etiquete lingüística o
adjetivo. En los conjuntos difusos la función de pertenencia puede tomar valores
del intervalo entre 0 y 1, y la transición del valor entre cero y uno es gradual y no
cambia de manera instantánea como pasa con los conjuntos clásico.

Donde 𝜇𝐴 (𝑥) es la función de pertenencia de la variable x, y U es el


universo en discurso. Cuando mas cerca este la pertenencia del conjunto A al
valor de 1, mayor será la pertenencia de la variable x al conjunto A.
Fig.1 Ejemplo de un Conjunto Difuso.

Funciones de Pertenencia.

Aun cuando cualquier función puede ser válida para definir un conjunto
difuso, existen ciertas funciones que son mas comúnmente utilizadas por su
simplicidad matemática, entre estas se encuentran as funciones de tipo triangular,
trapezoidal o gaussiana como podemos ver de ejemplo en las figuras 2 y 3.

Fig. 2 Ejemplo de una función de Membresía tipo triangular

Fig. 3 Ejemplo de una función de Membresía tipo Trapezoidal


Fusificacion

La fusificacion tiene como objetivo convertir valores crisp o valores reales


en valores difusos. En la fusificacion se asignan grados de pertenencia a cada una
de las variables de entrar con relación a los conjuntos difusos previamente
definidos utilizando las funciones de pertenencia asociadas a los conjuntos
difusos.

Inferencia

La inferencia relaciona los conjuntos difusos de entrada y salida para


representar las reglas que definirán el sistema. En la inferencia se utilizara la
información de la base de conocimiento para generar reglas mediante el uso de
condiciones, por ejemplo: si Caso1 y Caso2, entonces Accion1.

Defusificacion

La defusificacion realiza el proceso de adecuar los valores difusos


generados en la inferencia en valores crisp, que posteriormente se utilizaran en e
proceso de control. En la defusificacion se utilizan métodos matemático simples
como el método del centroide, Método del promedio ponderado y Método de
Membresía del Medio del Máximo.
Sensores Utilizados.

Sensor ultrasónico

Miden la distancia mediante el uso de ondas ultrasónicas. El cabezal emite


una onda ultrasónica y recibe la onda reflejada que retorna desde el
objeto. Los sensores ultrasónicos miden la distancia al objeto contando el
tiempo entre la emisión y la recepción.

Fig. 4 Funcionamiento del Sensor Ultrasónico.

Un sensor óptico tiene un transmisor y receptor, mientras que un sensor


ultrasónico utiliza un elemento ultrasónico único, tanto para la emisión como la
recepción. En un sensor ultrasónico de modelo refractivo, un solo oscilador emite y
recibe las ondas ultrasónicas, alternativamente. Esto permite la miniaturización del
cabezal del sensor.

Galga Extensiométrica

Las galgas extensiométrica son


sensores cuya resistencia varía con la
fuerza aplicada. Estos sensores convierten
la fuerza, presión, tensión, peso, etc, en un
cambio de la resistencia eléctrica el cual
puede ser medido.

Este tipo de sensores son los

elementos más importantes en el diseño de Fig. 5 Galga Extensiométrica.


transductores de presión y células de carga.
La correcta utilización de la galgas para medir fuerzas y deformaciones es
una de las herramientas más importantes en la ingeniería o la
construcción.

Sensor RGB

El sensor de color RGB es un dispositivo


electrónico que nos permite interpretar el color de
una manera equivalente a la del ser humano. El
principio básico es que este sensor dispone de
unos fotoreceptores a modo de matriz que nos
permite identificar los colores Rojo -Verde -Azul.

La matriz de los sensores está formada por


16 fotodiodos con un filtro rojo, 16 con un filtro Fig. 6 Sensor RGB
verde, 16 con un filtro azul y otros 16 sin filtrar.
Los 64 fotodiodos no funcionan de manera simultánea sino que se activan
por grupos de color antes de realizar la medición de la intensidad de luz
que incide en ellos. Para elegir qué filtros deben activarse en cada
momento, los TCS3200 disponen de dos patillas, S2 y S3, con las que
configurarlos.

Una vez obtenida la lectura de la iluminación, la corriente se


convierte a frecuencia en forma de onda cuadrada con un ciclo de trabajo
del 50% (mitad pulso alto, mitad pulso bajo).

Librería EFLL

La biblioteca eFLL (Embedded Fuzzy Biblioteca Logic) es una opción


versátil, ligero y eficiente de trabajar con la lógica difusa en sistemas
embebidos.

 Escrito en C ++ / C , sólo utiliza la biblioteca lenguaje C estándar


" stdlib.h ", por lo que eFLL es una biblioteca diseñada no sólo para
el Arduino, sino para cualquier sistema embebido o debido a sus
comandos escritos en C.

No tiene limitaciones explícitas sobre la cantidad de conjuntos


difusos, reglas difusas, entradas o salidas, la única limitante que
se debe a la capacidad de procesamiento y almacenamiento de cada
microcontrolador

En la bliblioteca de utiliza el proceso de :

 MAX-MIN para la fusificacion.


 Mamdani para la inferencia.
 Centro para defusificacion.

Objeto Fuzzy - Este objeto abarca la totalidad del sistema Fuzzy, a través de ella, se
puede manipular los conjuntos difusos, las reglas lingüísticas, entradas y salidas.

Fuzzy *fuzzy = new Fuzzy();

Objeto FuzzyInput - Este objeto literalmente reúne todos los conjuntos de entradas
Fuzzy que pertenecen al mismo dominio

FuzzySet *BajoC = new FuzzySet(0, 0, 30, 40);


FuzzySet *MedioC = new FuzzySet(35, 45, 65, 75);
FuzzySet *AltoC = new FuzzySet(70, 80, 100, 100);

FuzzyInput *COLOR= new FuzzyInput(1);


COLOR->addFuzzySet(BajoC);
COLOR->addFuzzySet(MedioC);
COLOR->addFuzzySet(AltoC);
fuzzy->addFuzzyInput(COLOR);

Objeto FuzzyOutput - Se utiliza para todos los grupos de salida que pertenecen al
mismo dominio.
FuzzySet *BoteB = new FuzzySet(0, 0, 40, 60);
FuzzySet *BoteA = new FuzzySet(40, 60, 100, 100);

FuzzyOutput *ObjetoBote = new FuzzyOutput(1);


ObjetoBote->addFuzzySet(BoteB);
ObjetoBote->addFuzzySet(BoteA);
fuzzy->addFuzzyOutput(ObjetoBote);

Objeto FuzzySet- Este es uno de los principales objetos de la Biblioteca Fuzzy, con el
es posible modelar cada conjunto del sistema en cuestión.

fuzzy->setInput(1, Color);
Objeto FuzzyRule - Este objeto se utiliza para montar las reglas difusas

Object FuzzyRuleAntecedent - Este objeto se utiliza para componer el objeto


FuzzyRule.

Objeto FuzzyRuleConsequente - Este objeto se utiliza para componer el objeto


FuzzyRule, responsable del montaje de la expresión de salida de un FuzzyRule

// Reglas de fuzzificacion
// 1 // Antecedente
FuzzyRuleAntecedent *Regla11Bote = new FuzzyRuleAntecedent(); // Regla para Reconocer Bote
Regla11Bote -> joinWithAND(AltoC, AltoT); // Si el color esta en Alto y el tamaño en Alto
FuzzyRuleAntecedent *Regla12Bote = new FuzzyRuleAntecedent();
Regla12Bote -> joinWithAND(Regla11Bote,MedioP); // Si el peso es Medio
// Consecuente
FuzzyRuleConsequent *thenObjetoBote = new FuzzyRuleConsequent(); // Entonces
thenObjetoBote ->addOutput (BoteA); // Bote es Alto
thenObjetoBote ->addOutput (MaizB); // Maizena en Bajo
thenObjetoBote ->addOutput (PureB); // Pure en Bajo
FuzzyRule *fuzzyRule1 = new FuzzyRule(1, Regla12Bote, thenObjetoBote); // Se relacionan el Antedecente y el consecuente
fuzzy->addFuzzyRule(fuzzyRule1); // Se egrega la Regla al Sistema

Sistema Difuso Desarrollado.

Fig. 7 Diagrama del sistema desarrollado.


Se puede observar en la fig.7 el esquema final del sistema de reconocimiento de
objetos que se desarrolló consta de 3 diferentes variables de medición las cuales
son obtenidas mediante los sensores antes descritos y la salida tenemos 3
variables, es decir los 3 diferentes objetos que podremos reconocer. Recordemos
que se utilizó un tipo de lógica difusa Mandani y la técnica de centroide para la
fusificacion

Fig.8 ejemplo Función de membresía de la variable “Peso”

Fig. 9 Ejemplo de Función de Membresía de salida para “Puré”


Como podemos observar en la fig. 8 y 9 podemos observar como ejemplo hecho
en MATLAB como quedó una variable de entrada y de salida que se utilizaron en
el sistema.

En la siguiente tabla podemos observar las reglas desarrolladas para el


reconocimiento de los objetos.

1.- If (Color is Alto) AND (Tamaño is Alto) AND (Peso is Medio)


Then (Bote is Alto)(Pure is Bajo)(Maizena is Bajo)
2.- If (Color is Medio) AND (Tamaño is Medio) AND (Peso is Alto)
Then (Bote is Bajo)(Pure is Alto)(Maizena is Bajo)
3.- If (Color is BAjo) AND (Tamaño is Medio) (Peso is Bajo)
Then (Bote is Bajo)(Pure is Bajo)(Maizena is Alto)

La primera regla nos dice que si el tamaño de encuentra dentro del rango Alto ,su
tamaño igual y su peso es Medio entonces podemos decir que se trata del
objeto”Bote”. Las siguientes reglas son para los otros dos objetos y dependiendo
de sus carcateristicas el sistema reconocerá de que objeto se trata.
En la fig. 10 Podemos observar un ejemplo de la evaluación de las reglas que se
propusieron y vemos como al variar los valores de las entradas tendremos efectos
en las salidas, en este caso el sistema está indicando que se trata del objeto
“Bote”.

Fig. 11 Superficie de Respuesta para “Maizena”


Resultados

Fig. 12 Imagen del sistema en funcionamiento

Fig. 13 Terminal en Arduino imprimiendo el resultado.


Fig. 14 Valores utilizados y obtenidos en el sistema

En esta ocasión únicamente imprimiremos el resultado en la misma terminal de


arduino, el sistema tardara unos segundo en empezar a funcionar debido a la
calibración de la galga extensiométrica y el sistema empezara a imprimir hasta
que detecte un cierto peso en la plataforma.

En los primero momentos de impresión puede ser que imprima un resultado


diferente pero es solo cuestión de que el sistema se estabiliza y llegara al
resultado que queremos..

En la fig. 14 se aprecian los valores utilizados como entradas (Color, Tamaño y


Peso) para el sistema y las salidas obtenidas (Bote blanco, Pure y Maizena).

Para declarar las entradas, salidas y evaluar la reglas de utiliza el siguiente


procedimiento:

fuzzy->setInput(1, Color);
fuzzy->setInput(2, Distancia);
fuzzy->setInput(3, peso);

fuzzy->fuzzify();

int ObBote = fuzzy->defuzzify(1);


Conclusiones
int ObPure = fuzzy->defuzzify(2);
int ObMaiz = fuzzy->defuzzify(3);
Le indicamos cuales son las entradas, setInput() donde el numero indica la
entrada antes ya declara y la variable son los valores obtenidos directamente de
los sensores, después hace la fusificacion fuzzy->fuzzify(); y finalmente la
defusificacion de cada objeto usando fuzzy->defuzzify()

Conclusiones

Este sistema se utilizó tanto para redes neuronales como para lógica difusa, y en
este caso debido a las muy diferentes características de los objetos reconocidos
no fue muy necesario definir tantas funciones de membresía y basto con poner
pocos rangos para las funciones, en el caso de que la características fueran más
similares tal vez habría de definir rangos o más funciones de membresía por lo
que fue sencillo desarrollar esta aplicación.

Sin embargo creemos que fue mejor la aplicación hecha con redes neuronales
debido que los resultados siempre eran más precisos, ya que como habíamos
mencionado el sistema tarda un poco en reconocer correctamente el objeto sin
embargo se llega al resultado deseado.

También podría gustarte