Documente Academic
Documente Profesional
Documente Cultură
Tutor/es:
Mutti, Andrés, UADE
Octubre 30 de
2009
Resumen
Como objetivo principal del trabajo final, se pretende desarrollar un sistema para la
aplicación de la Lógica Difusa como rama de la Inteligencia Artificial, para la
implementación de una aplicación que permita simular la navegación autónoma de un
robot, basado en un modelo de reglas y variables difusas diseñadas a tal efecto, en conjunto
con las ecuaciones clásicas de la cinemática utilizadas para la simulación.
Página 2 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Abstract
Like primary target of the final work, it is tried to develop a system for the application of
the Fuzzy logic like branch of the Artificial intelligence, for the implementation of an
application that allows to to this end simulate the autonomous navigation of a robot, based
on a model of rules and designed diffuse variables, altogether with used the classic
equations of the kinematics for the simulation.
The Fuzzy logic is an extended mathematical structure of the conventional logic, that
allows to describe the daily language with ductility, with the attribute of being simple to
simulate some models of problematic scenarios and being also an alternative form to
traditional techniques of programmable control. The diffuse approach of the behavior of an
independent robot allows to visualize to the real world based on rules expressed in
linguistic terms.
Página 3 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Contenidos
RESUMEN.......................................................................................................................................................1-2
ABSTRACT......................................................................................................................................................1-3
CONTENIDOS.................................................................................................................................................1-4
Página 4 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Capítulo 1. Introducción
En el presente trabajo final se pretende realizar la demostración de una implementación
de un sistema de navegación autónoma difusa, realizada a través del uso complementario en
una PC, en primer lugar de un modelo de las funcionalidades del robot, diseñado en un
software comercial de Lógica Difusa llamado AB-Flex y por otro lado de una aplicación
desarrollada a medida en Microsoft Visual Basic, para la simulación del comportamiento
del sistema en tiempo real, mediante interfases entre ambas aplicaciones realizadas en
Microsoft Excel usando DDE , logrando así un prototipo que verifique la solución
planteada y permita poder extrapolar la simulación a un robot real.
Sin duda, el principal campo de aplicación de la lógica difusa es el control, a partir del
empleo de las expresiones de la lógica difusa para formular reglas orientadas al control de
sistemas. Dichos sistemas de control difuso pueden considerarse una extensión de los
sistemas expertos, pero superando los problemas que éstos presentan para el razonamiento
en tiempo real, ocasionados por la explosión exponencial de las necesidades de cálculo
requerido para un análisis lógico completo de las amplias bases de reglas que éstos
manejan.
Las aplicaciones de control difuso de navegación autónoma son utilizadas para simular y
en casos para implementar robots móviles que puedan caracterizarse en términos de su
movilidad, autonomía, inteligencia y conocimiento previo del entorno. El sistema de
navegación del robot incluye tareas de planificación, percepción y control de movimientos.
La primera comprende la planificación de la misión, planificación de la ruta, planificación
de la trayectoria y las funciones específicas para evitar obstáculos imprevistos, no
considerados en las planificaciones anteriores.
Página 5 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
6. Probar el sistema
8. Ajustar el sistema
Este tipo de aplicación es novedosa en el país ya que el único paper referido a esta
tecnología para navegación autónoma fue realizado en la Universidad Nacional de Lujan
por José Luis Caero y el mismo carece de todo modelado y simulación.
Es de destacar que el control difuso, principal aplicación de los sistemas difusos, aparte
de un tema de estudio académico, resulta muy importante desde un punto de vista
industrial, campo en el que existen desde hace tiempo multitud de aplicaciones de estos
sistemas en funcionamiento.
Página 6 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Una importante ventaja de los sistemas difusos es que, gracias a la simplicidad de los
cálculos requeridos (sumas y comparaciones, fundamentalmente), normalmente pueden
realizarse en sistemas baratos y rápidos, con lo que pueden implementarse en sistemas
específicos de control. Este es uno de los motivos fundamentales del hecho constatado de
la existencia en la actualidad de muchas aplicaciones prácticas en funcionamiento basadas
en lógica difusa.
Por otro lado se pretende demostrar como aporte, la fiabilidad del sistema frente al
control humano, evitando posibles errores imprevistos, siendo también más preciso y
rápidamente adaptable a los cambios que se proponen en el ambiente de trabajo.
El problema es la vaguedad del mundo real. El idioma natural abunda con conceptos
inexactos e indistintos, tal como "Juana es alta," o "Esta muy caluroso hoy", tales
declaraciones son difíciles de traducir en el idioma preciso sin perder algún valor
semántico: por ejemplo, la declaración "La altura de Juana es de 152 cm.", no afirma
explícitamente que ella es alta, y la declaración "La altura de Juana es 1.2 desviaciones
estándares sobre la altura para mujeres de su edad en su cultura", esta cargada de
dificultades. ¿Significaría que una mujer con 1.1999999 desviaciones estándares sobre la
Página 7 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
altura para mujeres de su edad es alta? ¿ A que cultura pertenece, y como son los
miembros en la misma?
Página 8 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Con las nuevas teorías se ha conseguido romper la relación única que existía entre
incertidumbre y teoría de la probabilidad, y se ha pasado a considerar la incertidumbre en
los términos mucho más genéricos de la teoría de conjuntos borrosos y de medidas
borrosas. Además, ha quedado demostrado que la incertidumbre puede manifestarse en
diferentes formas o, dicho de otro modo, que existen diferentes tipos de incertidumbre y
que en la teoría de la probabilidad sólo se manifestaba una de ellas.
Los tres tipos de incertidumbre identificados con estas cinco teorías incluidas en la teoría
general de la información son los siguientes:
Fig1
Esta lógica fue inicialmente desarrollada por Peirce, en el siglo pasado, y luego –e
independientemente– por Lukasiewicz. Es como la lógica de las funciones veritativas, con
la particularidad de admitir tres o más de esos llamados valores veritativos, en vez de
limitarse a verdadero y falso. En la década del veinte Bertrand Russell se refería a la lógica
Página 9 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
polivalente con la palabra «vaga»; decía: «Todo es vago en un grado del que no te das
cuenta hasta que no intentas precisarlo», por lo que Russell se convirtió en el abuelo de la
lógica borrosa. Asimismo, por el año 1937, el filósofo cuántico Max Black publicó su
artículo «Vagueness: An exercise in Logical Analysis» que, pese a su enorme importancia,
no logró llamar la atención. Finalmente, en 1965, el ingeniero Lofti Zadeh, iraní educado en
Azerbaiján, publica su artículo «Fuzzy Sets» (no quiso hablar de conjuntos vagos sino de
«conjuntos borrosos» o fuzzy sets), cuando era profesor jefe en la Universidad de
California, en Berkeley. En 1987 publica Fuzzy sets and Applications.
Esta nueva lógica sostiene que hay pocos hechos en el mundo en que pueda encontrarse
cumplidamente lo blanco o lo negro. Sólo hay raros momentos de esos en un mundo gris.
«El principio borroso afirma que todo es cuestión de grado, trata el principio borroso
aplicado a las cosas humanas, de cómo la borrosidad impregna nuestro mundo y la visión
que de él tenemos (porque) cuando abandonamos el mundo artificial de las matemáticas,
reina la borrosidad».
Era Platón quien colocó el fundamento para lo que llegaría a ser lógica difusa, indica que
había una tercera región (más allá de Cierta y Falsa). Otros filósofos más modernos
continuaron notablemente sus pensamientos, Hegel y su dialéctica hegeliana y otros
filósofos materialistas. Pero era Lukasiewicz quien primero propuso una alternativa
sistemática a la lógica bi–valuada de Aristóteles.
A finales del siglo XIX el matemático alemán George Cantor, inició el estudio y la
aplicación de la Teoría de Conjuntos, punto de partida de la matemática moderna. A una
colección de objetos, se le llama conjunto, y los objetos individuales de dicha colección se
dice que son elementos del conjunto o que pertenecen al conjunto.
Página 10 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig2
En los comienzos de los años 1900, Lukasiewicz describió una lógica tri-valuada,
conjuntamente con las matemáticas para acompañarlo. El tercer valor que él propuso puede
mejorarse y se traduce como el término "posible," y él asignó un valor numérico entre
Cierto y Falso. Eventualmente, él propuso una notación entera y el sistema axiomático
desde el cual propuso derivar las matemáticas modernas.
Las bases teóricas de la lógica borrosa (fuzzy logic) fueron enunciadas a principios de
los años 60 por Lofti A. Zadeh, profesor de Ingeniería Eléctrica en la Universidad de
California en Berkeley, en su primera publicación en 1965, pero hasta 1973 Zadeh no
presenta la teoría básica de los controladores borrosos. Aunque el trabajo de Zadeh fue
recibido muy fríamente, especialmente en Estados Unidos, a partir de él otros
investigadores comenzaron a aplicar la lógica borrosa a diversos procesos. Así, desde
Mamdani, quien aplica la lógica borrosa a un sistema de control de vapor, se han venido
Página 11 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
sucediendo muy numerosas aplicaciones. Otra de las más clásicas quizás sea la de Smidth y
otros, que en 1980 aplican esta técnica al control de hornos rotativos en una cementera.
Página 12 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
los sistemas mecanicistas, esto es, aquellos sistemas inanimados cuyo comportamiento se
rige por las leyes de la física, mecánica, química y electromagnetismo. Desafortunadamente
no se puede decir lo mismo para los sistemas que involucran la actuación de las personas,
los cuales tradicionalmente se resisten al análisis matemático clásico y a la modelización
cuantitativa pues tienen dos características que hacen difícil o simplemente imposible su
tratamiento cuantitativo:
En las últimas décadas el uso de estos modelos ha sufrido un gran auge, debido a los
resultados espectaculares obtenidos en distintos campos de la ciencia. Se ha de destacar su
uso dentro de la ingeniería y más concretamente en el control industrial. Estos sistemas se
han beneficiado del uso del razonamiento aproximado permitiendo abordar el control de
sistemas complejos, que tradicionalmente eran tratados de forma exacta con complejas
ecuaciones matemáticas, mediante el uso del conocimiento de expertos humanos expresado
en modelos de razonamiento aproximado.
La idea que subyace en todas estas técnicas consiste en extraer los conocimientos que el
experto posee para identificar una situación concreta del estado del sistema y establecer la
acción adecuada que se ha de realizar. Debido a la complejidad de los sistemas estas
situaciones o estados son expresados en términos lingüísticos o vagos. Por esta razón el uso
Página 13 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
ENTRADA SALIDA
SISTEMA
Fig3
Página 14 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
De igual manera, los valores que toman las variables, tanto las de entrada como las de
salida, pueden clasificarse en dos grandes categorías: cuantitativos, cuando los valores de
las variables son numéricos, o cualitativos cuando los valores de las variables no son
numéricos, que originan nuevas categorías de sistemas.
Las relaciones que unen las variables de salida con las variables de entrada se pueden
modelar de muy diversas formas; entre ellas destacan aquéllas que utilizan mecanismos
formales para su representación, como pueden ser las funciones matemáticas y lógicas.
Otra forma de describir un modelo es mediante relaciones lógicas, donde los elementos
que utilizamos son proposiciones lógicas que unimos mediante conectivas, para formar
nuevas proposiciones. La interpretación de estos modelos lógicos se enmarca dentro de la
aceptación de un sistema de deducción definido mediante un conjunto de axiomas. Este tipo
de modelo ha tenido un gran auge en los últimos 50 años, años en que ha proliferado la
representación lógica fundamentada en el concepto de regla lógica, que tiene la forma "Si A
entonces B", basada en la interpretación de una implicación que permite una fácil
identificación de una relación causa-efecto de los valores de entrada sobre los valores de
salida del sistema.
Página 15 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
-Inferencia: a partir del valor de verdad calculado para las premisas de cada regla se
calcula el de la conclusión de la misma. Este resultado es un subconjunto borroso aplicable
a cada variable de salida de cada regla. Es frecuente hablar de inferencia de tipo MAX-MIN
o de tipo SUMA-PRODUCTO, que deben interpretarse como la combinación de una
composición MAX con una inferencia MIN, o una composición SUMA con una inferencia
PRODUCTO, usando esta división en subprocesos.
Página 16 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Hay que señalar que dentro de los sistemas borrosos se incluyen diversas teorías, como
la teoría de conjuntos borrosos, extensión de la teoría de conjuntos clásica, o la lógica
borrosa, que puede ser considerada una ampliación de las lógicas n-valuadas propuestas por
Lukasiewiez en 1930, y que son, a su vez, extensión de la lógica tri valuada (verdadero,
falso e indeterminado). No obstante, quizás la principal aplicación actual de la lógica
borrosa sean los sistemas de control basados en lógica borrosa o sistemas de control
borroso, que utilizan las expresiones de la lógica borrosa para formular reglas orientadas al
control de sistemas. Dichos sistemas de control borroso pueden considerarse una extensión
de los sistemas expertos, pero superando los problemas prácticos que éstos presentan en el
razonamiento en tiempo real, causados por la explosión exponencial de las necesidades de
cálculo requeridas para el análisis lógico completo de las amplias bases de reglas que
manejan.
Adelantaremos que este control de sistemas puede ser realizado a diferentes niveles. En
el nivel inferior, un controlador borroso puede realizar el control en bucle cerrado de una
determinada magnitud física del sistema, con el fin de mantenerla en tomo a un valor de
referencia. A modo de ejemplo, un controlador de este tipo puede decidir la potencia que se
ha de suministrar al sistema de calefacción de una habitación para mantener la temperatura
en un valor de referencia (por ejemplo, 21°C), utilizando como información la temperatura
actual en la habitación y en el exterior de la casa. Por otro lado, aplicado a los niveles
superiores de planificación, un controlador puede aconsejar los grados de almacenamiento
necesarios para mantener la producción prevista, con los mínimos costes y teniendo en
cuenta los datos históricos.
Página 17 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
En la década del 60 (H. Simon) se creía que en los años venideros el hombre llegaría a
construir máquinas "pensantes", sin embargo, pasadas tres décadas no se ha podido cumplir
con esta meta, y aún los computadores no logran simular el razonamiento de los humanos
porque están facultados para trabajar con matemáticas precisas, mientras el mundo real está
lleno de imprecisión e incertidumbre. Este dilema puede afrontarse desde dos puntos de
vista. Uno es asumir que el problema está en el método de control, y por tanto la solución
es aplicar más matemática. El otro punto de vista consiste en aceptar que la matemática es
el problema, y es allí donde aparece la lógica Difusa. En efecto, la lógica Difusa encuentra
que en el mundo real son muy escasos los conjuntos no Fuzzy o convencionales. Por
ejemplo, el conjunto de los mamíferos encuentra un problema al tratar con el ornitorrinco.
La lógica Difusa no tiene que tratar con este tipo de excepciones debido a que permite una
pertenencia parcial a un conjunto.
Sistemas basados en lógica Difusa pueden controlar más adecuadamente procesos que
estén gobernados por reglas intuitivas que difícilmente puede expresarse matemáticamente.
Por ejemplo, en el control de un ascensor puede determinarse una desaceleración gradual
cuando el ascensor está próximo a su destino.
Página 18 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
sería la posición del ascensor, y como "cerca" es un conjunto difuso, el valor de verdad de
la premisa, y por tanto el de la velocidad varía de acuerdo a dicha posición.
Además puede implementarse en software haciendo uso de herramientas tipo CASE, que
generalmente generan código en lenguaje C o en ensamblador para su uso en
microcontroladores convencionales; convirtiendo al control difuso en una alternativa más
apropiada y económica.
Otra ventaja del control Difuso es la fácil modificación que puede llevarse a cabo
cambiando algunas premisas y operaciones o adicionando reglas (el criterio de
comportamiento del sistema va implícito en las reglas), mientras en un sistema
convencional, un pequeño cambio requiere de la derivación completa de nuevas
ecuaciones. El control difuso no necesita de la etapa de obtención del modelo matemático
del proceso.
Control de un proceso
Página 19 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Para controlar un proceso o sistema se hace uso de un módulo controlador, que recibe
como entradas una o varias variables de control, llamadas generalmente referencias, R, y
una o varias variables de salida del propio proceso, S, produciendo como salida una o
varias variables, que se conocen como actuadores A. Normalmente, el objetivo del control
es mantener R = S. Por ejemplo, en el caso de una calefacción doméstica, el controlador
recibe una consigna de temperatura que fija el usuario, y mide la temperatura de la
habitación por medio de un sensor. En función de los valores de estas dos entradas, el
controlador de temperatura conecta o desconecta el sistema de calentamiento, si la
calefacción es eléctrica, actuando sobre los radiadores de cada habitación, y si es de gas o
fuel, encendiendo o apagando el quemador.
Página 20 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Página 21 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 7
Página 22 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
El entorno fuzzyTECH fue desarrollado por la compañía INFORM Software Corp. Este
entorno surgió del trabajo de un grupo de investigadores dirigido por el profesor Hans
Zimmermann, de la Universidad de Aachen, Alemania. El profesor Zimmermann es uno de
Página 23 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
El entorno fuzzyTECH está formado por un GUI común basado en MS-Windows que,
entre otras cosas, permite la edición gráfica de las variables lingüísticas para cada una de
las variables del sistema, permitiendo hasta 7 adjetivos por cada variable, con una precisión
seleccionable de 8 o 16 bits. Se pueden utilizar funciones de inclusión de tipo S, Z, Lambda
y Pi. Posee también un editor gráfico de reglas, con un formato similar al de una hoja de
cálculo. Se pueden asociar a las reglas diversos métodos de inferencia estándar, y también
pueden asignarse pesos individuales a cada una de las reglas. Admite hasta 8 variables de
entrada y 4 de salida por módulo, y permite el empleo de diversos tipos de
desborrosificación (máximo de centros, centro de áreas, singletons y área central).
El entorno admite la simulación fuera de línea y en tiempo real. Dentro del primer tipo,
permite la depuración interactiva con visualización de los flujos de inferencia y
optimización interactiva de los parámetros del sistema. Admite también la simulación
basada en datos pregrabados del sistema, y visualiza la respuesta del sistema en tiempo real.
El modelado del sistema se realiza a través de la conexión por DDE con un programa
específico para cada aplicación que ha de ser creado por el usuario. Permite el análisis
gráfico, visualizando la superficie de control y la activación de las reglas.
Para la simulación en tiempo real permite la conexión en línea con sistemas basados en
diversos microprocesadores. El sistema así dispuesto recibe los datos del microprocesador,
que los transmite a la aplicación, ésta los procesa y actúa sobre las salidas del
microprocesador para controlar el sistema.
Página 24 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Como cualidad importante de este entorno, hay que destacar que dispone de un gran
número de versiones con una interfaz de usuario común, y adaptadas a un gran número de
implementaciones. La versión MCU-C produce código C según el estándar ANSI, para su
utilización en aplicaciones basadas en estaciones de trabajo o PC. Se dispone también de
versiones que generan código para los microcontroladores STO de SGS Thompson, 8051,
MCS-96 de Intel, 81C99 y 80C166 de Siemens, PIC de Microchip, e incluso para los DSP
de Texas Instruments (familias TMS320C2X Y TMS320C5X de coma fija, y TMS320C3X
y TMS320C4X de coma flotante). Esto supone una ampliación considerable de las
posibilidades de este entorno, dado el bajo costo de los primeros y la gran capacidad de
cálculo de estos últimos microprocesadores, orientados al procesamiento de señal. Además,
este entorno ha sido seleccionado por diversos fabricantes de sistemas industriales como
herramienta para el desarrollo de aplicaciones de control basadas en lógica borrosa sobre
sus sistemas. Entre éstos se encuentra la empresa japonesa OMRON, que lo utiliza para la
programación de sus autómatas programables o PLC.
- Modelado del sistema puede realizarse a través de una conexión DDE, DLL o Active X
(LabView, Matlab/Simulink, Excel, Access, VisualBasic, VisualC, etc).
Página 25 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Algunos libros incluyen librerías o pequeños entornos, como el de Bart Kosko. Por
último, algunos grupos universitarios han elaborado entornos de dominio público, como es
el caso del profesor Herrera, de la Universidad de Granada.
En particular para este trabajo final se utilizará A-B Flex que es un producto de uso
gratuito y con prestaciones suficientes para poder demostrar las bondades de la lógica
difusa en contraste con los métodos tradicionales.
Fig 10
En este trabajo final, la herramienta elegida fue Allen-Bradley Fuzzy Logic EXplorer
beta versión 2.50. (A-B Flex) para Windows 98 (no se asegura compatibilidad en
NT/2000/XP o Vista), esta aplicación permite el modelado simple y sencillo de
controladores difusos, para el armado del sistema experto que llevará a cabo la tarea
propuesta.
Página 26 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 11
a) Entrada o Input: Una entrada es un valor medido desde el sistema a ser
controlado y pasado al controlador difuso como su información de entrada. Este
valor es usado para evaluar las reglas difusas para producir una salida del
controlador. Cada entrada definida en A-B Flex tiene los siguientes atributos:
- Un intervalo que define el rango de valores supuestos a tener en cuenta, o Universo de discurso.
Página 27 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 12
El antecedente es la parte de la regla que consiste en una palabra seguida por uno o
más preposiciones difusas combinadas con operadores difusos. La conclusión es la
parte de la regla que consiste en una palabra seguida por una o mas proposiciones
difusas combinadas con un operador, (coma).
Página 28 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
f) Operadores difusos: Estos son los operadores difusos definidos en A-B Flex:
is - El operador de evaluación del grado de Membresía.
is not - El complemento del operador de evaluación del grado de Membresía.
and - El operador conjunción.
or - El operador disyunción.
( ) - paréntesis
g) Evaluación de las reglas: La evaluación de una regla puede ser dividida en dos
etapas:
(i) Evaluación del antecedente
Los operadores difusos, si existiesen, son aplicados (de acuerdo a su definición, precedencia y asociatividad) a las
proposiciones mencionadas en el antecedente. El resultado es multiplicado por el peso dando el grado de llenado de
la regla (DOF).
(ii) Evaluación de la conclusión
Las funciones de membresía referenciadas en las proposiciones difusas de la conclusión de una regla son aplicadas
al grado de llenado de todas las reglas haciendo referencia a la función de membresía en sus conclusiones.
Ejemplo de evaluación de reglas: La situación presenta dos reglas que describen la relación entre dos entradas
(error_nivel, cambio_nivel) y una salida (válvula).
1.00 if error_nivel is negativo or cambio_nivel is cero and cambio_nivel is llenando then válvula is cerrando
Asumimos que la función minimum es usada como operador and, la función maximum es usada como operador or y
vemos a continuación los grados de membresía para los valores de entrada anteriores:
Página 29 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Evaluación de reglas:
Paso 3) Hay dos reglas con la misma proposición difusa en su conclusión, por lo tanto el operador or debe ser
aplicado al DOF regla1 y DOF regla2. El grado de membresía de los valores de salida de la válvula respecto a la
función de membresía cerrando es MAX( 0.075, 0.36 ) = 0.36 .
Las reglas inactivas son aquellas reglas que están definidas en la base de reglas pero no son usadas por el
algoritmo difuso en el procesamiento. Esta es una manera sencilla de afinar el sistema sin borrar reglas.
- Método del centroide: El método del centroide es un método de defuzzificación que calcula los valores de salida como
un peso de promedios de los centroides de cada función de membresía definida para las salidas. Los factores de peso son
grados de membresía de las correspondientes funciones de membresía.
- Método de pesos de centroide: El método de pesos de centroide es un método de defuzzificación que calcula los
valores instantáneos de salida como pesos del promedio del centroide de las funciones de membresía definidas para la
salida. Los factores de peso son productos del grado de membresía y del área total de la correspondiente función de
membresía.
Página 30 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
k) Salida: Una salida es un valor concreto, una instantánea que es calculada por el
controlador difuso y usado luego como valor de entrada en combinación con algún
otro elemento del controlador. Cada salida definida en A-B Flex tiene los
siguientes atributos:
Un valor por defecto que es usado si ninguna regla esta ejecutándose para proveerla de un valor.
Nombre de hoja de cálculo, campo de entrada. Los tópicos de entrada es donde se especifica la hoja de cálculo
(*.xls) con la que se quiere comunicar. Se puede explorar en el sistema para permitir la selección de la hoja de
cálculo en lugar de insertar el nombre del tópico directamente.
(ii) Lista de mapeos de Ítems:
El mapeo de ítems muestra el mapeo corriente le los puertos de entrada/salida de A-B Flex hacia los ítems
DDE etiquetados con strings. El formato es del tipo <nombre del puerto de E/S>-<Celda de la hoja de cálculo de
MS-Excel>. Se puede modificar el mapeo en cada ítem desde la lista.
Página 31 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Página 32 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Resumiendo, como todo Shell A-B Flex brinda el entorno completo y quizás gráfico para
la construcción del sistema experto de lógica difusa. Es el diseñador el responsable de
codificar el conocimiento del problema dado, acompañado generalmente por el uso de
sintaxis en lenguaje natural para la definición de reglas y algún método gráfico para la
definición de los conjuntos difusos.
Página 33 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Capítulo 3. Aplicaciones
de los sistemas de control
borroso para Soft Computing
Se señalarán a continuación algunas aplicaciones de los sistemas borrosos, tanto
académicas como reales, relacionadas con procesamiento de datos y control para Soft
Computing. Como vimos anteriormente, el campo que claramente cuenta con mayor
número de aplicaciones basadas en lógica borrosa es el de control, con muchas de ellas en
funcionamiento en la industria.
Se expondrá el caso del desarrollo del robot autónomo controlado con reglas borrosas
bautizado como PILAR, diseñado y realizado en la Universidad de Zaragoza.
Los nuevos modelos de procesamiento y control actuales como la lógica borrosa (fuzzy
logic), junto con algunos otros de relativa novedad, se engloban en la denominada soft
computing o tecnologías emergentes, que tienen en común el constituir paradigmas de
procesamiento muy diferentes a la convencional hard computing, basada en computadores
Von Neumann (serie) y la separación de hardware y software. Estas nuevas técnicas se
inspiran en las soluciones que la naturaleza ha encontrado durante millones de años de
evolución a numerosos problemas tecnológicos que involucran el tratamiento de cantidades
masivas de información, redundante, imprecisa y ruidosa, problemas a los que en la
actualidad se enfrenta el ser humano (visión, habla, control en ambiente natural). No
obstante, debe quedar perfectamente claro que estas nuevas técnicas no vienen a suplantar a
las más tradicionales, sino más bien a completarlas en aquellos problemas donde menos
eficacia proporciona.
Es fácil deducir que, tanto las redes neuronales artificiales como los sistemas borrosos,
constituyen en la actualidad áreas de investigación y desarrollo (I+D) muy activas, no sólo
desde un punto de vista académico, sino comercial e industrial. Recordemos que grandes
compañías del sector electrónico e informático, como Intel. Philips, Siemens, Motorola,
SGS-Thomson, Toshiba. National Semiconductors, OMROM, etc., trabajan en redes
neuronales y sistemas borrosos. No obstante, los sistemas borrosos cuentan sin duda con
un mayor número de aplicaciones reales actualmente en explotación.
Era la línea anterior, mención especial merece el interés del mundo empresarial japonés
en la aplicación de la lógica borrosa en la industria y en aparatos de consumo. En Estados
Unidos y Europa solamente se empezó a dar importancia a la lógica borrosa cuando desde
Página 34 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Los sistemas basados en lógica borrosa pueden ser aplicados prácticamente a los mismos
problemas que las redes neuronales. De esta manera, resultarán especialmente interesantes
para los problemas no lineales o no bien definidos. Los sistemas basados en lógica borrosa,
igual que los neuronales, pueden modelar cualquier proceso no lineal y aprender de los
datos haciendo uso de determinados algoritmos de aprendizaje, a veces tomados de otros
campos, como las redes neuronales o los algoritmos genéticos.
La equivalencia que se establece entre ciertos modelos neuronales y borrosos puede ser
empleada para extraer las reglas que una red neuronal ha encontrado en el entrenamiento,
eliminando uno de los grandes problemas clásicamente atribuido a los sistemas neuronales
artificiales, su operación en forma de caja negra. Por todo ello, la combinación de redes
neuronales y sistemas borrosos es un campo de intenso trabajo en la actualidad del que
ambas técnicas se benefician.
Una importante ventaja de los sistemas borrosos es que, gracias a la simplicidad de los
cálculos requeridos (sumas y comparaciones, fundamentalmente), normalmente pueden
realizarse en sistemas baratos y rápidos, con lo que pueden implementarse en sistemas
específicos (por ejemplo, para el control inteligente de un horno microondas o de un
sistema de frenado ABS). Este es uno de los motivos fundamentales del hecho constatado
de la existencia en la actualidad de muchas aplicaciones prácticas en funcionamiento
basadas en lógica borrosa.
Página 35 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Por otra parte, cabe mencionar que el conjunto de reglas puede descomponerse en
subconjuntos relativos a operaciones diferentes (conducir hacia adelante, girar a la
izquierda en intersección, etc.) o bien a maniobras. Se utiliza esta técnica para permitir que
un robot evolucione en el entorno de una oficina.
Página 36 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Si bien la mayor parte de los robots autónomos se basan en topologías clásicas, haciendo
uso de ruedas, también se han estudiado otras posibilidades. Así, para el acceso a terrenos
agrestes resulta de interés el uso de robots con patas. Éstos son capaces de moverse también
en entornos de oficinas e industrias, por ser capaces de subir y bajar escaleras. En los robots
con patas se ha de prestar atención al control del movimiento de las patas para conseguir un
desplazamiento uniforme. Estos estudios se han basado habitualmente en el movimiento de
los animales.
Página 37 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
natural, volcanes, minas, plantas nucleares, fábricas, etc. Cada una de sus patas es
controlada mediante dos servomotores eléctricos. El corazón de PILAR es un
microcontrolador 68HC11; todo el sistema es alimentado mediante una batería de níquel-
cadmio de 9.6 V. En la cabeza móvil incluye un sensor de ultrasonidos, mediante el cual
implementan -+45°. PILAR actúa en función de los obstáculos detectados y de las reglas
borrosas (programadas en el 68HC11) que codifican su comportamiento.
Página 38 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Capítulo 4. Desarrollo
de una aplicación práctica de
Sistemas de Control para Navegación Autónoma
Para ilustrar el diseño de un sistema experto de lógica difusa se considerará el problema
de navegar un carrito por un campo con obstáculos, hasta llegar a destino. Se desarrollará
un sistema de lógica difusa utilizando ABFLEX, pretendiendo identificar y desarrollar cada
uno de los pasos concernientes a la construcción del prototipo. Se verá luego una
descripción de esta metodología que permite su aplicación a cualquier situación que
necesite de un controlador difuso.
Existen entonces ocho tareas primordiales que deberán llevarse a cabo para el desarrollo
de un sistema experto de lógica difusa:
Página 39 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 14
Como todos los sistemas expertos, se necesitará primero de una fuente de conocimiento.
Usualmente esta fuente es un experto en el problema. En nuestro caso se contactará a un
empleado con vasta trayectoria en manejar carritos de golf. Esta persona asegura que el
problema básico es manejar el carrito eficientemente y de forma segura desde el punto
estacionario hasta llegar a la pelota. Se obtiene eficiencia minimizando la distancia
recorrida y el tiempo transcurrido. Se obtiene seguridad esquivando los árboles en el
camino. Para lograr ambos objetivos se necesitará de un sistema de lógica difusa con
control sobre la dirección y la velocidad del carrito. Este tipo de problema es básicamente
un problema de corrección de error. El carrito debe inicialmente girar hacia la pelota
minimizando el error entre la dirección angular del carrito y la dirección de la pelota. El
carrito debe también acelerar, logrando una velocidad máxima para luego disminuir la
misma y eventualmente parar cuando esté próximo a la pelota. Se fija esta distancia como
de 3 metros. Esto minimiza el error entre la ubicación del carrito y la de la pelota de una
forma rápida. Adicionalmente, cuando un árbol está en el camino, el carrito deberá doblar
alrededor del de forma lenta, para luego acelerar orientándose hacia la pelota.
Página 40 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Se le pide al experto las variaciones de estas variables lingüísticas, y sus rangos, a saber:
Fig 15
Para ello se le pregunta al experto cuáles son los adjetivos que usa para identificar y
describir las reglas que representan su conocimiento sobre el tema. Se lleva a cabo este
procedimiento por cada variable lingüística y se arma un diccionario y un vocabulario
propio para este problema.
Se asumen respuestas con cierto grado de vaguedad: “Entre 1 y 3 metros por segundo”.
Se continúa con una pregunta del tipo: ¿Hasta que grado considera que 1 metro por
segundo es lento?
Página 41 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Este procedimiento se lleva a cabo por cada variable lingüística hasta tener un mapa con
los valores de certeza en cada caso:
Fig 16
Fig 17
Estas funciones de membresía pueden variar en cada caso y según las descripciones y
detalles que brinda el experto, dando como resultado una variedad de figuras distintas,
siendo la más común y de fácil cómputo las trapezoidales. Un punto a tener en cuenta en la
definición de los conjuntos difusos es la necesidad de abarcar cada posible valor y asociarle
un valor de membresía al conjunto difuso, para que no existan valores que no sean
correspondidos.
Página 42 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Se utilizan segmentos de rectas lineales por tramo. Se identifican bien los adjetivos que
usa el experto:
Fig 18
Fig 19
Página 43 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 20
Fig 21
Fig 22
Fig 23
Página 44 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 24
Fig 25
Página 45 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 26
Fig 27
Fig 28
Página 46 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 29
Fig 30
Fig 31
Página 47 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 31
Fig 32
Página 48 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 33
Fig 34
Fig 35
Fig 36
Página 49 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 37
Fig 38
Fig 39
Página 50 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 40
Fig 41
Fig 42
Página 51 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 43
Fig 44
Fig 45
Página 52 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 46
Fig 47
Fig 48
Página 53 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 49
Fig 50
Fig 51
Fig 52
Página 54 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 53
Fig 54
Fig 55
Página 55 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 56
Fig 57
Fig 58
Fig 59
Página 56 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 60
Fig 61
Fig 62
Página 57 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Reglas:
1.00 if Angulo_error is cero and Distancia_arbol is not proxima and Angulo_arbol is not cero then
Angulo_direccion is cero
1.00 if Angulo_error is poco_positivo and Distancia_arbol is not proxima and Angulo_arbol is not cero
then Angulo_direccion is poco_derecha
1.00 if Angulo_error is poco_negativo and Distancia_arbol is not proxima and Angulo_arbol is not cero
then Angulo_direccion is poco_izquierda
(NOTA: Angulo_arbol is not cero significa, a pesar de lo confuso que pueda resultar esta variable, que el
angulo_arbol que toma valores entre -180 grados y 180 grados, al ser not cero, significa que el Angulo al
árbol es cualquier valor que no implique que el carrito va en una exacta dirección hacia el árbol, en tal caso
seria Angulo_arbol = 0 grados. Es decir tratamos de significar con Angulo_arbol not 0 que el carrito tenga
una dirección respecto al Árbol que no sea una dirección que se dirija directamente hacia el mismo, sino que
se dirija hacia cualquier otro lado, es decir que no se interponga directamente en su camino hacia la pelota.,
de esta manera no nos importa el árbol, ya que no se encontrara en el camino que en esta regla evalúa el
carrito.)
(NOTA: Velocidad es not rápida significa que una Velocidad es mediana a tan lenta que incluye el valor
cero, se utiliza esta variable para aquellas reglas que necesitan evaluar que aun no se alcanzo la velocidad
máxima, y por ejemplo se necesita corregir drásticamente la dirección del carrito, dado que como no
Página 58 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
desarrollo una velocidad máxima para operar cambios bruscos con la consecuencia de desviarse demasiado,
se pueden realizar desvíos bruscos sin que esto repercuta en un desvío de mucha magnitud en metros, dado
que la velocidad no es la máxima, los metros de desvío tampoco son de gran magnitud, también puede usarse
la Velocidad not rápida si se necesita seguir acelerando para alcanzar la Velocidad Máxima)
1.00 if Distancia_pelota is lejana and Velocidad is not rápida then Aceleración is a_fondo
1.00 if Distancia_pelota is mediana and Velocidad is not rápida then Aceleración is leve
Página 59 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
-- REGLA 11A - Marcha libre
1.00 if Distancia_pelota is cero and Velocidad is not cero then Aceleración is frenar_fuerte
(NOTA: la Velocidad is not Cero. Velocidad es no Cero significa que existe algo de velocidad, mucha o
poca, pero permite esto un frenado brusco si el carrito se paso del objetivo y aun sigue avanzando.)
1.00 if Distancia_arbol is próxima and Angulo_arbol is cero and Angulo_arbol is poco_positivo then
Angulo_direccion is poco_izquierda
1.00 if Distancia_arbol is próxima and Angulo_arbol is cero and Angulo_arbol is poco_negativo then
Angulo_direccion is poco_derecha
Se definen las reglas entonces agrupando las mismas en función de las características
anteriores.
Se tienen en cuenta al principio solo reglas difusas para cada conjunto difuso sin el
agregado de adverbios. Cuando llegue el momento de testear el sistema se harán cambios y
agregaran adverbios o ponderaciones a cada regla, se podrán agregar o eliminar reglas, con
el único propósito de aumentar la performance del sistema.
Página 60 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 64
Fig 65
Página 61 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 66
5. Probar el sistema
El Código Fuente del prototipo se adjunta en el Anexo del presente trabajo, tanto de las
funciones como de los formularios y pantallas del prototipo.
Como primera aproximación vamos a ver un caso de prueba para una situación
particular, estática, con un solo árbol.
a. Caso de prueba 1
Para el primer caso de prueba consideramos una situación donde el árbol no está en el
camino hacia la pelota. El carrito se dirige hacia la pelota en un ángulo_auto de –45º.
Página 62 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 67
Vemos también como varía la velocidad durante la prueba, comenzando desde una
posición estacionaria, el carrito rápidamente aumenta su velocidad por el componente
aceleración, hasta una velocidad de 5mts/s. A medida que aumentan los ciclos o sea el
tiempo, y de esta forma el carrito se aproxima a la pelota este rápidamente desacelera. En
este punto la velocidad empieza a oscilar, siendo esta una situación no deseada que
comentaremos luego:
Fig 68
Página 63 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Para demostrar cuál es el proceso de inferencia que se lleva a cabo dentro del sistema,
analizaremos una situación particular y veremos como se disparan las reglas difusas. Las
condiciones en este caso son:
a- La regla 1M es aplicable.
Aceleración = Marcha_libre = 1
Asumimos que la función minimum es usada como operador and, la función maximum
es usada como operador or. Este operador MAX-MIN se eligió como Operador Difuso, de
forma arbitraria para este ejemplo, pudiendo elegirse sino el operador Producto:
Fig 69
Página 64 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
1.00 if Angulo_error is cero and Distancia_arbol is not proxima and Angulo_arbol is not cero then
Angulo_direccion is cero
Fig 70
Fig 71
Página 65 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Cuando se unen estas dos sentencias con el operador AND, el operador minimum
produce un grado de 0.125 como verdad de los antecedentes.
Usando la técnica de inferencia max-min, este valor es usado para medir la escala de la
función de membresía de la conclusión de la regla 5A “leve” de “Aceleración”. Así
tenemos:
Regla 5A:
1.00 if Distancia_pelota is mediana and Velocidad is not rápida then Aceleración is leve
Página 66 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 72
Los tres conjuntos difusos inducidos para “Aceleración” también son combinados usando el
operador union. Un centroide de este resultado es computado para actualizar la aceleración
del carrito y la instantánea para la aceleración para el modelo dado es - 0,643. Como el
valor final es negativo, el simulador decrementa la velocidad del carrito y el proceso
continúa.
Para las reglas utilizadas en A-B Flex, vemos el mismo comportamiento, pero para tres
árboles.
Página 67 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 73
Fig 74
Y en Excel:
Página 68 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 75
Fig 76
Podemos ver sencillamente aquí como a medida que hay mayor distancia a la pelota
empieza a haber velocidad y aceleración. También se ve como a mayor distancia a la pelota
la aceleración encuentra un valor de reposo=0 y se mantiene, ya que no hace falta acelerar
cuando la velocidad es la máxima (lejos de la pelota), pero si se acelera e incluso frena si la
velocidad va llegando a 0.
Página 69 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 77
b. Caso de prueba 2
Fig 78
Página 70 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
El carrito en un primer momento debe maniobrar para situarse en dirección hacia la pelota
y sigue una trayectoria recta hasta que se aproxima al árbol, en ese momento, vira alrededor
del mismo y luego continúa en línea recta para aproximarse a la pelota hasta unos 3 mts de
la misma.
Fig 79
Página 71 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
procedimiento iterativo se repite hasta alcanzar el estado final estipulado como fin de la
simulación. Dada la característica de la solución los tiempos de respuesta no son óptimos,
pero permite una clara representación del problema físico, en un espacio virtual.
Fig 80
Página 72 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 81
En esta aplicación se debe seguir una convención de medida de ángulos, para la cual se
bosquejan los dos tipos de medidas propuestas, para cada variable lingüística.
Esta conversión es de 360º a un valor entre un rango definido según cada tipo. Esta
conversión se revisa y ejecuta dependiendo del cuadrante desde donde se comenzará la
conversión.
Fig 81
Página 73 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 82
Fig 83
Aquí se listan las variables de entrada, las cuales deben tener datos para exportar a Excel
y comenzar cada iteración en búsqueda de la respuesta borrosa. Esta información se obtiene
a partir del estado inicial y se va modificando con cada iteración.
Fig 84
Las variables de salida son aquellas de las cuales se encarga A-B Flex, que en base a los
datos de entrada, calcula esta salida, que llega al programa de simulación pasando por MS
Excel.
Página 74 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 85
Cuando los valores nuevos de las variables de salida son incorporados al sistema, pasan
a ser la información necesaria para analizar y convertir las mismas en nuevas variables de
entrada al controlador difuso, por medio de una transformación.
Esta transformación es llevada a cabo cada segundo teórico y por lo tanto, norma el tipo
de ecuaciones físicas necesarias para (solamente) ubicar el carrito en una nueva posición en
el plano, para la cual se calculan las nuevas variables de entrada que realimentará el ciclo
hasta llegar al estado final.
Este nuevo ángulo de dirección propuesto por el controlador difuso, es el que pasa a ser
el actual ángulo del auto.
Fig 86
El estado final indica, según las pruebas llevadas a cabo, que se alcanzará cuando la
distancia a la pelota sea de 3 metros, con lo cual la velocidad será 0 m/s. Llegado este
momento (o alguna combinación de distancia pelota y velocidad definida por el usuario), la
Página 75 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Entonces en estos casos, es decir cuando se decide no frenar a los 3 mts y si hacerlo a
10 cm por ejemplo, de forma mas precisa, probablemente mientras el conjunto de
aplicaciones linkeadas por DDE tratan de evaluar el paso (correcto) siguiente a dar después
de conocer la cercanía de 10 cm, ocurrirá un error no previsto por tiempo de procesamiento
de la Aplicación, no un error del Modelo, entonces se obtenga el consecuente y la decisión
de frenar definitivamente, y efectivamente se realizara el frenado pero el simulador se habrá
pasado a 12,15 20 cm. del carrito, por tener esta reacción a destiempo, entonces ocurrirá la
iteración insalvable.
Por eso recomendamos parar el carrito a 3 mts. Ahora bien la oscilación previa a los
3mts. si es problemática y debe resolverse a continuación.
Para efectuar el seguimiento en tiempo real, se lleva a cabo la ejecución de una serie de
aplicaciones que fueron relacionadas a fin de simular dinámicamente y gráficamente el
problema de la navegación autónoma del carrito de golf. Para ello el necesario un perfil de
hardware mínimo y software que describimos a continuación:
PC IBM compatible Pentium III de 500 MHz, con 256 MB de memoria. El sistema
operativo propuesto es Windows 98 (no se asegura compatibilidad en NT/2000/XP o
Vista). Es necesario tener instalado Microsoft Excel 97 ó 5 en castellano (no se asegura
compatibilidad en MS Excel de Office 2000/2003/XP), y el entorno de desarrollo A-B Flex,
suministrado de forma adjunta a este Trabajo Final en el CD, con el instalador de la
aplicación a simular, fuentes .vbp de Visual Basic para ejecutarlo mediante Visual Basic o
en todo caso la alternativa de ejecutarlo mediante el ejecutable .exe compilado, el archivo
Excel del modelo .xls y por ultimo el archivo de proyecto a modelar en A-B Flex , .abf.
Página 76 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
la simulación. El tipo de punto decimal debe ser un punto(.) y el separador de miles ser
coma(,). Una vez configurado es sistema, se podrá proceder a la simulación.
Fig 87
Se deberá ejecutar la aplicación A-B Flex y abrir el archivo golf.abf, que es el proyecto a
simular.
Fig 88
Para comenzar la comunicación DDE con Excel, se procederá a abrir el Libro golf.xls
con Excel y ejecutar en A-B Flex el ítem de menú correspondiente para establecer el
diálogo:
Página 77 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 89
Aquí vemos como las variables ya están cargadas y si la ubicación del archivo golf.xls
fuera otra que la indicada en pantalla, se deberá apuntar al nuevo destino.
Hasta aquí vemos como A-B Flex necesita conectarse a Excel por medio de canales o
tópicos, siendo necesario un tópico por cada variable de entrada/salida.
Fig 90
Para ello es necesario, desde el menú ejecutar el ítem “Ubicar”, que visualizará una
pantalla inicial donde de apreciará una vista desde arriba del campo de Golf, del carrito
(línea blanca), tres árboles y la Pelota de Golf (cuadrado blanco).
La utilidad que presenta esta opción es la de establecer diferentes ubicaciones para cada
elemento componente del problema. Se deberá arrastrar con el Mouse cada uno de ellos
hacia la disposición geográfica deseada:
Página 78 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 91
Una vez diseminados los elementos en la pantalla, se podrá comenzar con la simulación.
Fig 92
Fig 93
Página 79 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 94
En este caso la dirección del carrito se llevará a cabo mediante las flechas izquierda y
derecha. Se podrá ver la variación del ángulo de la dirección en la ventana Fuzzy, así como
una representación gráfica e intuitiva de las ruedas del carrito (disponible también para la
navegación autónoma).
Rojo: Desaceleración
Azul: Aceleración
Página 80 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
En el borde del campo de Golf, se pueden divisar un marcador que indica la posición
del carrito en cada momento, facilitando así la compensión del ángulo del auto:
Fig 95
Página 81 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 96
Dado que el intercambio de datos es intenso, es probable que la pantalla parpadee, pero
esto es un detalle adicional, que no debería causar inconvenientes, salvo los visuales. Para
este gráfico cabe aclarar que los valores representados corresponden a los visualizados en la
aplicación de Visual Basic, pero aquellos que no concuerdan es debido a una demora en la
comunicación con la simulación, que luego de algunos instantes se verán refrescados en la
pantalla. En el caso que el hardware utilizado sea de menores prestaciones que los
recomendados, es probable que la simulación termine abruptamente con un error de
expiración de tiempo de espera para la comunicación DDE entre aplicaciones, en tal caso se
recomienda correr la misma en otra plataforma más rápida.
Página 82 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 97
Aquí vemos el valor de la variable Velocidad, que es igual a 4.63 m/s y su significación
representada sobre el rango de valores definido para esa variable.
Fig 98
Vemos en este caso como las reglas 1,2,3, que son ” -- REGLAS para el manejo de la
dirección “ y que corresponden al conjunto de reglas que fue denominada “-- REGLA 1M -
Mantener la dirección de marcha”, se ven activadas, pero con preponderancia de “1.00 if
Angulo_error is cero and Distancia_arbol_2 is not proxima and Angulo_arbol_2 is not cero
then Angulo_direccion is cero”, debido a que si bien el Angulo_error es casi cero (-1,43), la
Página 83 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Una sumatoria de la afectación de cada una de estas reglas, mas otras reglas afectadas,
nos indica como resultante el valor instantáneo de la dirección del carrito y su aceleración,
obtenidas por el controlador difuso.
Para finalizar vemos que la regla 35 y 38 están activadas levemente, debido a que es
necesario “-- REGLA 2T - Girar ligeramente hacia la derecha para esquivar el árbol “,
porque se cumple levemente la regla “1.00 if Distancia_arbol_3 is proxima and
Angulo_arbol_3 is cero and Angulo_arbol_3 is poco_negativo then Angulo_direccion is
poco_derecha ”, y porque también hay que “-- REGLA 2T - Frenar fuerte para esquivar el
árbol “ , debido a que “1.00 if Distancia_arbol_3 is proxima and Angulo_arbol_3 is cero
then Aceleracion is frenar_fuerte ”, es también medianamente cierto.
Vale la pena dejar en claro, la excelente prestación que tiene esta herramienta para poder
ver no un momento particular, sino la simulación en tiempo real, donde se aprecia a cada
instante cómo las reglas se van activando ante distintas circunstancias y observar
gráficamente los valores puntuales de las variables linguísticas:
Página 84 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 99
Este analisis una vez mas nos puede advertir sobre correctos o incorrectos valores de las
variables, reglas mal conformadas, innecesarias o faltantes, para optimizar el sistema, como
cuando la distancia a la pelota es lejana, vemos como a baja velocidad, la aceleración es
constantemente alta, pero tiende desacelerar a medida que la velocidad aumenta. Este sera
el centro del analisis del problema de la oscilacion detectado en el presente modelo.
Página 85 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 100
Fig 101
Página 86 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 102
Las posibilidades que presenta A-B Flex abarcan hasta la graficación de cada una de las
variables linguísticas o también de los grados de membresía de cada variable, a través del
tiempo. Permite seleccionar cada variable e identificarla por su color y rango de
graficación. Este gráfico se actualiza automáticamente al trabajar en forma estática o en
tiempo real. También es posible exportar los datos a un archivo de texto para posterior
graficación.
Página 87 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 103
Fig 104
Página 88 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 105
Fig 106
En el gráfico siguiente vemos cómo los datos pueden ser visualizados para realizar con
ellos cálculos, gráficos, sumatorias o promedios. Las posibilidades de manipulación de los
mismos se ven limitadas solamente por la imaginación del usuario.
Página 89 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 107
Fig 108
Página 90 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 109
El gráfico para la aceleración es basado en los valores que toma la variable cada segundo
de simulación.
En los primeros segundos se nota claramente necesidad de que la aceleración inicial sea
fuerte para tomar velocidad considerable, dada las distancias a todos los objetos.
El segundo árbol no afecta demasiado a la variable, pero con el tercero se nota una
situación similar a la comentada para el primer árbol.
Página 91 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 110
La variable velocidad tiene una característica gráfica similar a la anterior, ya que es una
variable de entrada que se ve afectada directamente por la aceleración:
Fig 111
Página 92 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 112
Página 93 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 113
Si bien es probable que en este caso no tenga aplicación práctica y real, el hecho de
obtener el coeficiente de correlación ó la curva de regresión de alguna de estas variables, es
provechoso dejar asentado la simplicidad de su obtención utilizando Excel y dar al usuario
una impresión de expansión casi ilimitada de las posibilidades y conclusiones que se
pueden obtenerse y predecir para problemas de distinta naturaleza.
Fig 114
Página 94 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Este es un proceso que comienza con una comparación entre la respuesta del sistema y el
comportamiento esperado, esforzándose por corregir los desvíos.
Las reglas 9A hasta 13A cubren esta situación. La regla 13A causa un incremento de la
velocidad cuando la velocidad se aproxima a cero, se inicia entonces una oscilación. Para
prevenir esta situación se elimina la regla.
Cabe mencionar que el motivo por el cual esta regla es eliminada es por su inclusión
evitable por parte de un experto, que puede prescindir de ella o tal vez simplemente es
errónea. Esta situación puede presentarse aunque en la práctica la afinación de las reglas se
lleve a cabo con intentos de agregar sólo las reglas necesarias para un funcionamiento del
sistema que cumpla con las expectativas del caso.
Podemos decir entonces que esta no es una solución a nuestro problema. En la práctica,
los pasos a tener en cuenta dada esta situación serían volver atrás para hacer algunos
ajustes a los conjuntos difusos o a las reglas para corregir este nuevo problema:
Página 95 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 115
Se da por resultado una mejora a la oscilación, pero el hecho que se para a los siete
metros es una clara muestra de que la solución no es tal porque se pierde efectividad.
Reglas
Con respecto a las reglas, agregar las reglas necesarias para situaciones especiales o
agregar premisas o precondiciones para otras variables lingüísticas, o utilización de
adverbios mediante los operadores:
Página 96 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Vemos entonces como modificamos las reglas para que no exista oscilación:
Fig 116
Página 97 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
En la Regla 9A, se cambia el Frenado Fuerte cuando la pelota es muy próxima y a alta
velocidad, por frenar levemente, logrando una aproximación mas suave al objetivo.
En la Regla 14A, se frena fuerte cuando se llega al objetivo y hay algo de velocidad,
cualquier valor sea este, hay movimiento por lo cual se debe detener urgentemente la
marcha frenando fuertemente. Esta regla se logra precisar aun mas especificando que dicha
acción no se realiza ante cualquier velocidad sino cuando esta es muy lenta, porque no tiene
mucho asidero llegar a la pelota a una velocidad que no sea mínima, por esto esta regla se
refiere a estas velocidades mínimas, desestimando al resto.
Página 98 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Conjuntos difusos
- Pausa para analizar las variables y ejecución de Reglas, por medio de un Doble
Clic
- Posibilidad de mover los objetos del escenario para evaluar múltiples situaciones
cambiantes y movibles en una misma simulación. Por medio de Drag and Drop.
Página 99 de 141
Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa
Guillermo Gabriel Fernández Amado
Fig 117
Fig 118
Fig 119
Fig 120
Fig 121
Fig 122
Fig 123
Por ultimo vemos el Grafico 3D de superficie de decisión para las tres variables
involucradas y como esto vario respecto del modelo anterior.
Fig 124
Podemos afirmar viendo este grafico que no hay oscilación, que la velocidad disminuye
sin valores abruptos y que la velocidad también disminuye una vez sorteados los obstáculos
de forma suave y sin cambios bruscos.
Por ultimo veamos las nuevas posibilidades de análisis de escenarios a partir de las
modificaciones realizadas a la aplicación VB para pausar y relocalizar los elementos del
escenario:
Fig 125
Este grafico muestra que hubo 3 pausas con 3 movimientos del objetivo pelota.
Fig 126
Fig 127
Fig 128
Este trabajo presenta una aportación importante para el desarrollo de sistemas de control
difuso, proveyendo el motor de inferencia difuso, el cual puede ser utilizado en una
aplicación real, con la ventaja de que su memoria de control puede ser definida por el
usuario. Aunque existen microprocesadores difusos como el FC110 de Togai Infralogic,
estos por lo general son caros y difíciles de conseguir; por lo tanto utilizando este diseño y
una computadora personal, es posible lograr la implementación de un sistema de control,
utilizando los beneficios que proporciona la lógica difusa.
Bibliografía
Redes Neuronales y Sistemas Borrosos. Introducción teórica y práctica. B.
Martín del Brío - A. Sanz Molina. RA-MA. Textos Universitarios, 1997.
Applied Fuzzy Systems. Toshiro Terano, Kiyoji Asai, Michio Sugeno. Ap.
Proffesional. 1994.
Anexos
Proyecto A-B Flex
Nombre: Fuzzy.abf
[InferenceOptions]
FuzzyAlgorithm=And=0,Or=0,Defuzz=0
KeywordSet=0
[SystemParameters]
NumberOfInputs=9
NumberOfOutputs=2
NumberOfRules=38
TimeOfLastChange=1157004394
[Input#0]
Name=Velocidad
Range=0,5
DefaultValue=0
Description=Velocidad del carrito
NumberOfMFs=5
MF#0=cero:0,0,0,0.854839
MF#1=muy_lenta:0,0.804839,0.804839,1.87094
MF#2=lenta:0.854839,1.94758,1.94758,3.14919
MF#3=mediana:1.87097,3.17742,3.17742,4.57258
MF#4=rapida:3.14113,5,5,5
[Input#1]
Name=Angulo_arbol_3
Range=-180,180
DefaultValue=0
Description=Angulo al arbol 3
NumberOfMFs=5
MF#0=muy_negativo:-180,-180,-90,-30
MF#1=poco_negativo:-60,-30,-30,0
MF#2=cero:-30,0,0,30
MF#3=poco_positivo:0,30,30,60
MF#4=muy_positivo:30,90,180,180
[Input#2]
Name=Angulo_arbol_2
Range=-180,180
DefaultValue=0
Description=Angulo al arbol
NumberOfMFs=5
MF#0=muy_negativo:-180,-180,-90,-30
MF#1=poco_negativo:-60,-30,-30,0
MF#2=cero:-30,0,0,30
MF#3=poco_positivo:0,30,30,60
MF#4=muy_positivo:30,90,180,180
[Input#3]
Name=Angulo_arbol_1
Range=-180,180
DefaultValue=0
Description=Angulo al arbol 1
NumberOfMFs=5
MF#0=muy_negativo:-180,-180,-90,-30
MF#1=poco_negativo:-60,-30,-30,0
MF#2=cero:-30,0,0,30
MF#3=poco_positivo:0,30,30,60
MF#4=muy_positivo:30,90,180,180
[Input#4]
Name=Distancia_arbol_2
Range=0,1000
DefaultValue=0
Description=Distancia al arbol 2
[Input#5]
Name=Distancia_arbol_1
Range=0,1000
DefaultValue=0
Description=Distancia al arbol 1
NumberOfMFs=1
MF#0=proxima:0,0,0,70
[Input#6]
Name=Distancia_arbol_3
Range=0,1000
DefaultValue=0
Description=Distancia al arbol 3
NumberOfMFs=1
MF#0=proxima:0,0,0,70
[Input#7]
Name=Distancia_pelota
Range=0,600
DefaultValue=0
Description=Distancia a la pelota
NumberOfMFs=5
MF#0=cero:0,0,3,9
MF#1=muy_proxima:0.483871,12.9677,13.4516,27.6774
MF#2=proxima:11.0323,46.8733,46.8733,90.6614
MF#3=mediana:36.712,115.629,115.629,208.05
MF#4=lejana:127.55,217.55,560.265,560.265
[Input#8]
Name=Angulo_error
Range=-180,180
DefaultValue=0
Description=Angulo de error
NumberOfMFs=5
MF#0=muy_negativo:-180,-180,-90,-30
MF#1=poco_negativo:-60,-30,-30,0
MF#2=cero:-30,0,0,30
MF#3=poco_positivo:0,30,30,60
MF#4=muy_positivo:30,90,180,180
[Output#0]
Name=Aceleracion
Range=-2,1
DefaultValue=0
Description=Aceleracion del carrito
NumberOfMFs=6
MF#0=frenar_fuerte:-2,-2,-1.5,-1
MF#1=frenar_levemente:-1.5,-1,-1,-0.5
MF#2=marcha_libre:-1,-0.5,-0.5,0
MF#3=cero:-0.5,0,0,0.5
MF#4=leve:0,0.5,0.5,1
MF#5=a_fondo:0.5,1,1,1
[Output#1]
Name=Angulo_direccion
Range=-45,45
DefaultValue=0
Description=Angulo de direccion
NumberOfMFs=5
MF#0=mucho_derecha:-44.881,-44.881,-37.9762,-27.1429
MF#1=poco_derecha:-35.9524,-17.8334,-17.5953,-0.928605
MF#2=cero:-16.6913,0.119048,0.119048,16.9294
MF#3=poco_izquierda:1.16379,17.8777,17.8777,35.6835
MF#4=mucho_izquierda:26.7857,35,45,45
[Text]
NumberOfItems=69
I#0=C1:-- REGLAS para el manejo de la dirección
I#1=C1:-- REGLA 1M - Mantener la dirección de marcha
Nombre: Fuzzy1.frm
VERSION 5.00
Object = "{7A080CC8-26E2-101B-AEBD-04021C009402}#1.0#0"; "GAUGE32.OCX"
Begin VB.Form Fuzzy1
Appearance = 0 'Flat
AutoRedraw = -1 'True
BackColor = &H00000000&
BorderStyle = 3 'Fixed Dialog
Caption = "Simulacion (Doble Click Pausa para Reubicar)"
ClientHeight = 5565
ClientLeft = 1680
ClientTop = 2460
ClientWidth = 5880
ForeColor = &H00000000&
LinkTopic = "Fuzzy1"
LockControls = -1 'True
MaxButton = 0 'False
MDIChild = -1 'True
PaletteMode = 1 'UseZOrder
ScaleHeight = 200
ScaleMode = 0 'User
ScaleWidth = 200
ShowInTaskbar = 0 'False
Begin VB.PictureBox Arbol_1
BackColor = &H0000FF00&
DragIcon = "Fuzzy1.frx":0000
DragMode = 1 'Automatic
FillColor = &H00FFFFFF&
FillStyle = 0 'Solid
ForeColor = &H00008000&
Height = 135
Left = 1950
ScaleHeight = 0.132
ScaleMode = 0 'User
ScaleWidth = 0.132
TabIndex = 5
Top = 2850
Width = 135
End
Begin VB.PictureBox Arbol_3
BackColor = &H00FF0000&
DragIcon = "Fuzzy1.frx":0442
DragMode = 1 'Automatic
FillColor = &H00FFFFFF&
FillStyle = 0 'Solid
ForeColor = &H00FFFFFF&
Height = 135
Left = 3090
ScaleHeight = 0.132
ScaleMode = 0 'User
ScaleWidth = 0.132
TabIndex = 4
Top = 1680
Width = 135
End
Begin VB.PictureBox Arbol_2
BackColor = &H0000FFFF&
DragIcon = "Fuzzy1.frx":0884
DragMode = 1 'Automatic
FillColor = &H000000FF&
FillStyle = 0 'Solid
ForeColor = &H000000FF&
Height = 135
Left = 2190
ScaleHeight = 0.132
ScaleMode = 0 'User
ScaleWidth = 0.132
TabIndex = 3
Top = 1950
Width = 135
End
DoEvents
End Sub
Nombre: Fuzzy2.frm
VERSION 5.00
Object = "{7A080CC8-26E2-101B-AEBD-04021C009402}#1.0#0"; "GAUGE32.OCX"
Object = "{0BA686C6-F7D3-101A-993E-0000C0EF6F5E}#1.0#0"; "THREED32.OCX"
Begin VB.Form Fuzzy2
AutoRedraw = -1 'True
BorderStyle = 1 'Fixed Single
Caption = "Fuzzy"
ClientHeight = 5760
ClientLeft = 6585
ClientTop = 1815
ClientWidth = 2460
DrawWidth = 1000
LinkTopic = "Fuzzy2"
LockControls = -1 'True
MaxButton = 0 'False
MDIChild = -1 'True
PaletteMode = 1 'UseZOrder
ScaleHeight = 5760
ScaleWidth = 2460
Begin VB.Frame Frame_salidas
Caption = "Salidas"
Height = 2445
Left = 0
TabIndex = 0
Top = 3300
Width = 2445
Begin Threed.SSPanel Aceleracion_flow
Height = 315
Left = 1800
TabIndex = 4
Top = 1020
Width = 375
_Version = 65536
_ExtentX = 661
_ExtentY = 556
_StockProps = 15
Caption = "Aceleracion"
ForeColor = 16777088
BackColor = 12632256
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "MS Sans Serif"
Size = 8.25
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
BorderWidth = 1
BevelOuter = 1
FloodType = 4
End
Begin Threed.SSPanel Frenado_flow
Height = 555
Left = 1800
TabIndex = 5
Top = 1620
Width = 375
_Version = 65536
_ExtentX = 661
_ExtentY = 979
_StockProps = 15
Caption = "Frenado"
ForeColor = 16777088
BackColor = 12632256
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "MS Sans Serif"
Size = 8.25
Charset = 0
Weight = 400
'RECIBE LOS DATOS DESDE EXCEL QUE FUERON PROCESADOS ANTES POR EL
CONTROLADOR DIFUSO
Fuzzy2.Label_Angulo_direccion.Visible = False
Fuzzy2.Label_Angulo_direccion.LinkRequest
DoEvents
Fuzzy2.Label_Aceleracion.LinkRequest
DoEvents
'CONVIERTE ANGULO DE DIRECCION (+45;-45) A (-45;+45) PARA MANTENER LA
'UNIFORMIDAD CON OTRAS CONVENCIONES DE ANGULOS
'GUARDA ANGULO DE DIRECCION
Angulo_direccion = CDbl(Fuzzy2.Label_Angulo_direccion.Caption) * -1
Fuzzy2.Label_Angulo_direccion.Caption = Angulo_direccion
Fuzzy2.Label_Angulo_direccion.Visible = True
'GUARDA ACELERACION
Aceleracion = CDbl(Fuzzy2.Label_Aceleracion.Caption)
Else
'ESCRIBE EN EL FORMULARIO FUZZY LAS VARIABLES DE SALIDA
Fuzzy2.Label_Angulo_direccion.Caption = Angulo_direccion
DoEvents
Fuzzy2.Label_Aceleracion.Caption = Aceleracion
DoEvents
End If
'LLAMA AL ALGORITMO DE TRANSFORMACION AL NUEVO ESTADO
Call actualizar
DoEvents
'CONTINUA O TERMINA EL CICLO PARA EL NUEVO ESTADO, HASTA EL LIMITE DEFINIDO
'PARA EL ESTADO FINAL O HASTA UNA NUEVA PRESION DE UNA TECLA EN LA MODALIDAD
MANUAL
Loop Until (Distancia_pelota <= Dist_ini And Velocidad <= Vel_ini) Or Manual = True
DoEvents
If Distancia_pelota <= Dist_ini And Velocidad <= Vel_ini Then
'ACUMULA LA VELOCIDAD PARA CALCULO DEL PROMEDIO
For j = 1 To Tiempo
Veloc_prom = Veloc_prom + Est_velocidad(j)
Next j
'DESACTIVA EL TEMPORIZADOR PARA LA MODALIDAD MANUAL
MDIFuzzy.Timer1.Interval = 0
'BORRA GUIAS DE COORDENADAS
Fuzzy1.Line (0, Y)-(10, Y), QBColor(0)
Fuzzy1.Line (X, 10)-(X, 0), QBColor(0)
Fuzzy1.Line (Fuzzy1.ScaleWidth, Y)-(Fuzzy1.ScaleWidth - 10, Y), QBColor(0)
Fuzzy1.Line (X, Fuzzy1.ScaleHeight - 10)-(X, Fuzzy1.ScaleHeight), QBColor(0)
Beep
Beep
Beep
'CALCULA VELOCIDAD PROMEDIO
Veloc_prom = Veloc_prom / Tiempo
'MUESTRA MENSAJE DE FINALIZACION DE LA SIMULACION Y ESTADISTICAS
MsgBox "Llego a la pelota en " + Str(Tiempo) + " ciclos de iteracion a una velocidad promedio de " +
Format(Veloc_prom, "0.00") + " m/s"
'DESACTIVA COMUNICACION CON EXCEL PARA ENVIO DE ESTADISTICAS
Fuzzy2.Label_est.LinkMode = 0
Beep
'MENSAJE DE ALERTA PARA EL ENVIO DE ESTADISTICAS A EXCEL
MsgBox "Desactive por favor la comunicación de A-B Flex con Excel, para proceder con la exportacion de
datos y luego presione Aceptar "
'ACTIVA COMUNICACION CON EXCEL PARA ENVIO DE ESTADISTICAS
Fuzzy2.Label_est.LinkMode = 2
DoEvents
Sub BORRAR_DATOS()
'SELECCIONA LA HOJA ESTADISTICAS
Sheets("ESTADISTICAS").Select
'SELECCIONA EL RANGO HASTA EL FONDO DE LA HOJA
Range("A2:G65536").Select
'BORRA EL CONTENIDO DE LA SELECCION
Selection.ClearContents
Range("A2").Select
End Sub
Sub VELOCIDAD()
On Error Resume Next
'SELECCIONA LA HOJA DE ESTADISTICAS
Sheets("ESTADISTICAS").Select
'RECUPERA DE LA CELDA EL RANGO PASADO POR LA APLICACION
RANG = Range("E2")
'SELECCIONA LA HOJA, BORRA EL GRAFICO EXISTENTE Y HACE UN GRAFICO DE LINEAS
Sheets("VELOCIDAD").Select
ActiveChart.ChartArea.Select
Selection.Clear
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("ESTADISTICAS").Range(RANG), _
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="VELOCIDAD"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "VELOCIDAD"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "segundos"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "m/s"
End With
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False
ActiveChart.Legend.Select
End Sub
Sub DISTANCIA_PELOTA()
On Error Resume Next
'SELECCIONA LA HOJA DE ESTADISTICAS
Sheets("ESTADISTICAS").Select
'RECUPERA DE LA CELDA EL RANGO PASADO POR LA APLICACION
RANG = Range("F2")
'SELECCIONA LA HOJA, BORRA EL GRAFICO EXISTENTE Y HACE UN GRAFICO DE LINEAS
Sheets("DISTANCIA PELOTA").Select
ActiveChart.ChartArea.Select
Selection.Clear
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("ESTADISTICAS").Range(RANG), _
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="DISTANCIA PELOTA"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "DISTANCIA PELOTA"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "segundos"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "mts"
End With
Sub ACELERACION()
On Error Resume Next
'SELECCIONA LA HOJA DE ESTADISTICAS
Sheets("ESTADISTICAS").Select
'RECUPERA DE LA CELDA EL RANGO PASADO POR LA APLICACION
RANG = Range("D2")
'SELECCIONA LA HOJA, BORRA EL GRAFICO EXISTENTE Y HACE UN GRAFICO DE LINEAS
Sheets("ACELERACION").Select
ActiveChart.ChartArea.Select
Selection.Clear
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("ESTADISTICAS").Range(RANG), _
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="ACELERACION"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "ACELERACION"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "segundos"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "m/s2"
End With
ActiveChart.Legend.Select
End Sub