179
PROYECTO FINAL DE INGENIERÍA SISTEMA DE NAVEGACIÓN AUTÓNOMA PARA UN ROBOT UTILIZANDO LÓGICA DIFUSA Guillermo Gabriel Fernández Amado – LU 88328 Ingeniería en Informática Tutor/ es: Mutti, Andrés, UADE Octubre 30 de 2009 UNIVERSIDAD ARGENTINA DE LA EMPRESA FACULTAD DE INGENIERÍA Y CIENCIAS EXACTAS

GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Embed Size (px)

DESCRIPTION

Logica dufusa borrosa fuzzy logic navegacion autonoma uade guillermo gabriel fernandez amado inteligencia artificial

Citation preview

Page 1: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

PROYECTO FINAL DE INGENIERÍA

SISTEMA DE NAVEGACIÓN AUTÓNOMA PARA UN ROBOT UTILIZANDO LÓGICA DIFUSA

Guillermo Gabriel Fernández Amado – LU 88328 Ingeniería en Informática

Tutor/es: Mutti, Andrés, UADE

Octubre 30 de 2009

UNIVERSIDAD ARGENTINA DE LA EMPRESA

FACULTAD DE INGENIERÍA Y CIENCIAS EXACTAS

Page 2: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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.

La Lógica Difusa es una estructura matemática ampliada de la lógica convencional, que

permite describir el lenguaje cotidiano con ductilidad, con el atributo de de ser sencilla la

simulación de modelos de algunos fenómenos y problemáticas, de forma alternativa a las

técnicas tradicionales de control programable. El enfoque difuso del comportamiento de un

robot autónomo permite visualizar al mundo real en función de reglas expresadas en

términos lingüísticos.

Página 2 de 143

Page 3: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 ap-

plication 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 al-

lows 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 tradi-

tional techniques of programmable control. The diffuse approach of the behavior of an in-

dependent robot allows to visualize to the real world based on rules expressed in linguistic

terms.

Página 3 de 143

Page 4: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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

CAPÍTULO PRIMERO. INTRODUCCIÓN.........................................................................................1-5

CAPÍTULO SEGUNDO. IMPLEMENTACIÓN DE SISTEMAS BORROSOS.....................2-22

CAPÍTULO TERCERO. APLICACIONES DE LOS SISTEMAS DE CONTROL BORROSO PARA SOFT COMPUTING...................................................................................................................3-33

CAPÍTULO CUARTO. DESARROLLO DE UNA APLICACIÓN PRÁCTICA DE SIS-TEMAS DE CONTROL PARA NAVEGACIÓN AUTÓNOMA...................................................4-38

Página 4 de 143

Page 5: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Capítulo First. IntroducciónEn 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.

La percepción se ocupa de las tareas relacionadas con la detección de obstáculos,

construcción de mapas y modelado del entorno. Por último, el control de movimientos

convierte en acciones las órdenes de control, utilizando para ello la diferencia (error) entre

la posición deseada y la estimación de la posición actual del robot. Se incluyen también

tareas de monitorización de la ejecución.

Se definen entonces las siguientes etapas respecto a la descripción de la organización

del proyecto:

1. Definición del problema

2. Exhibición de las variables lingüísticas

3. Definición de los conjuntos difusos

Página 5 de 143

Page 6: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

4. Definición de las reglas

5. Construcción del sistema

6. Probar el sistema

7. Simulación dinámica del sistema

8. Ajustar el sistema

9. Conclusiones y trabajo futuro

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.

Los sistemas basados en lógica difusa se vienen utilizando en aplicaciones procedentes

de diversos campos. Así, en el área médica se emplea en diagnóstico, acupuntura, análisis

de ritmos cardíacos o de la arterioestenosis coronaria. Dentro del apoyo a la toma de

decisiones, otra de las grandes áreas de aplicación de estos sistemas, se han utilizado, por

ejemplo, en la búsqueda de caminos críticos en la ejecución de proyectos y asesoramiento a

la inversión.

En el campo del control de sistemas en tiempo real, destaco como antecedentes el

control de un helicóptero de filmación para escenas de travelling o por órdenes

pronunciadas de viva voz y el control con derrapaje controlado de un modelo de coche de

carreras. Dentro del sector del automóvil existe gran número de patentes sobre sistemas de

frenado y cambios de marcha automáticos. El área de la aparatos de consumo es otra de las

más destacables, en el sector de los electrodomésticos se ha diseminado un buen número de

aplicaciones difusas, como lavadoras (Matsushita, Hitachi, Siemens), tostadoras de pan,

controles de calefacción y aire acondicionado.

Para el control de maquinaria, destaca el ya clásico control de frenado del metro de

Sendai (Japón), realizado por Hitachi, y que funciona desde Julio de 1987. Se han aplicado

sistemas difusos en el control de una máquina de perforación de túneles y en el control de

ascensores (Mitsubishi-Elec., Hitachi, Fuji Tech) y grúas para contenedores (Hitachi). Se

han aplicado también al procesado de imágenes y reconocimiento de caracteres; por

ejemplo un sistema que reconoce los números de los cheques bancarios.

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 143

Page 7: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

En términos generales y resumiendo el uso de técnicas difusas para el control

automático, trata de imitar el comportamiento consciente de un operador humano,

controlando procesos no-lineales complejos o plantas de producción las cuales difícilmente

pueden ser modeladas por reflexiones físico-matemáticas. Estas circunstancias deshabilitan

el diseño sistemático de un controlador basado en modelos convencionales. Ejemplos de

esta clase de procesos son procesos de producción bio-tecnológicos, procesos químicos,

procesamiento de imágenes, plantas de tratamiento de aguas residuales, entre otros…

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.

Incertidumbre en el conocimiento, compejidad y vaguedad del mundo real

Se presentan en la actualidad nuevas aportaciones y reflexiones científicas en torno al

estudio de fenómenos difícilmente abordables desde concepciones clásicas, que manifiestan

una ambigüedad entre los supuestos epistemológicos que constituyen las perspectivas

complejas de investigación científica y las consideradas como visiones clásicas de la

ciencia, como ser la Teoría del Caos , la geometría fractal (o teoría geométrica de la

medida) y a la llamada lógica borrosa o más propiamente teoría de conjuntos borrosos.

Los Sistemas difusos son una alternativa a nociones tradicionales de lógica y de

pertenencia a conjuntos, que tiene sus orígenes en la filosofía Griega antigua, y

aplicaciones en inteligencia artificial. Aún, a pesar de sus orígenes, es un campo

relativamente nuevo, y como tal mucho campo para el desarrollo. Aquí se presentará las

bases de sistemas difusos, conjuntamente con algunas de las objeciones más notables a su

uso, con ejemplos sacados de la investigación actual en el campo de inteligencia artificial.

Finalmente, se demostrará que el uso de sistemas difusos hace una aporte viable al campo

de inteligencia artificial, y quizás más generalmente a las matemáticas formales como una

totalidad.

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

Página 7 de 143

Page 8: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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

altura para mujeres de su edad es alta? ¿ A que cultura pertenece, y como son los

miembros en la misma?

Mientras que podría argumentarse que tal vaguedad es un obstáculo a la claridad de

significar, únicamente los tradicionalismos más fieles sostendrían que no hay pérdida de

riqueza de significado cuando las declaraciones tal como "Juana es alta" son significados

perdidos en un lenguaje. Este es un caso simple de qué sucede cuando uno trata de traducir

idioma humano en la lógica clásica. Tal pérdida no es notada en el desarrollo de un

programa de nómina, quizás, pero cuando uno quiere preguntas de lenguaje natural, o

"representación de conocimiento" en sistemas expertos, los significados perdidos por

vaguedad son frecuentemente los buscados y útiles.

La Lógica Borrosa o Difusa (fuzzy logic) se pronuncia respecto a la complejidad de la

siguiente manera: «A medida que aumenta la complejidad de un sistema, nuestra

capacidad de hacer enunciados precisos y significantes sobre su comportamiento decrece

hasta un umbral más allá del cual la precisión y la significatividad (o pertinencia) se

vuelven casi características mutuamente excluyentes. ...A modo de corolario hay un

principio que se puede enunciar sucintamente así: «Cuanto más de cerca se mira un

problema del mundo real, tanto más borrosa se vuelve su solución».».

Se pueden diferenciar dos etapas en la evolución del conocimiento: un esfuerzo

orientado a conocer aspectos del mundo y un posterior esfuerzo por conocer aspectos del

propio conocimiento. Se puede suponer que ésta segunda etapa, en la que nos encontramos

hoy en día, surge a consecuencia de los fallos de la primera, para delimitar el alcance y

validez del conocimiento adquirido previamente. Nuestra preocupación no se centra en la

mera adquisición de conocimiento, sino que, además, se intenta determinar en qué medida

conocemos algo, qué grado de certeza podemos asignar a nuestro conocimiento. Hemos

desviado nuestros problemas desde cómo manipular el mundo a cómo manipular el

conocimiento (y la ignorancia) en sí mismo.

Se ha calificado a la nuestra como la sociedad de la información, y se destinan gran

cantidad de recursos a la adquisición, manejo, procesado, selección, almacenamiento,

distribución, protección, recopilación, análisis y clasificación de la información, para lo

cual el ordenador resulta una herramienta de gran ayuda.

La gran cantidad de información de que disponemos, unida al grado de incertidumbre

que lleva asociada, constituye la base de muchos de los problemas actuales: la complejidad.

Página 8 de 143

Page 9: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Desde comienzos de los 80 se han realizado diferentes avances orientados a la

construcción de una teoría general de la información. Dentro de ésta se incluyen, además de

la teoría clásica de conjuntos y de la teoría de la probabilidad, otras como la teoría de

conjuntos borrosos, la teoría de la posibilidad y la teoría de la evidencia.

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:

-Borrosidad: resultante de la existencia de conjuntos borrosos, con límites vagamente

definidos.

-Imprecisión o falta de especificidad: relacionada con el tamaño de conjuntos de

alternativas.

-Discordia: producida por conflictos entre varios conjuntos de alternativas.

La imprecisión y la discordia pueden considerarse como diferentes modos de

ambigüedad, asociando esta última con cualquier situación en la que no quede clara la

alternativa correcta de un conjunto de ellas. Ésta puede deberse a una defectuosa

caracterización de un objeto (imprecisión) o a distinciones conflictivas (discordias). Por

otro lado, la borrosidad es diferente de la ambigüedad, y se produce cuando existen

conceptos cuyos límites no están perfectamente determinados.

Fig1

Página 9 de 143

Page 10: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Breve historia de los sistemas Borrosos

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

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».

La precisión de matemáticas adeuda su éxito en gran parte a los esfuerzos de Aristóteles

y los filósofos que lo precedieron. En sus esfuerzos para idear una teoría concisa de la

lógica, y luego matemática, se postularon los llamados "Derechos de Pensamiento". Uno

de estos, el "Derecho de los medios excluidos”, dice que cada propuesta debe o ser Cierta o

Falsa. Aun cuando Parmínedes propuso la primera versión de esta ley (alrededor 400 A.C.)

había objeciones inmediatas y fuertes: por ejemplo, Heráclitus propuso que las cosas

podrían ser simultáneamente Ciertas y no Ciertas.

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 143

Page 11: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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.

Luego, él exploró lógicas cuatro-valuadas, lógicas cinco-valuadas y entonces declaró

que en principio nada había para prevenir la derivación de una lógica infinita-valuada.

Knuth propuso una lógica tri-valuada parecida a Lukasiewiczs. Su conocimiento,

aparentemente inspirado por Lukasiewiczs, utilizó la gama entera [-1, 0, +1] más bien que

[0, 1, 2]. Sin embargo, esta alternativa fracasó en su búsqueda de aceptación, y pasó a una

oscuridad relativa.

En 1965, Lofti Zadeh, profesor de Ingeniería Eléctrica y Ciencias de la Computación, de

la Universidad de Berkeley, basándose en el trabajo de Lukasiewicz, introduce la Lógica

Difusa basada en una Teoría de Conjuntos Difusos (publicó su trabajo de Seminario "Fuzzy

Sets" que describió las matemáticas de teoría difusa de conjuntos, y por extensión Lógica

Difusa.). Donde un elemento no necesariamente pertenece o no pertenece a un conjunto,

sino que hay un continuo de "grados de pertenencia ". Esta teoría propuso hacer una

función de membresía o pertenencia operando sobre la gama de números reales [0.0, 1.0].

Las operaciones nuevas para el cálculo de la lógica se propusieron, en un principio como

generalización de la lógica clásica.

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 143

Page 12: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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.

Especial mención merece la creación de LIFE (Laboratory for International Fuzzy

Engineering research) en marzo de 1989, auspiciado por el Ministerio de Comercio

Internacional e Industria de Japón (MITI). Su capital es al 50% de compañías privadas

japonesas y del propio Ministerio, y su presidente está en el Instituto de Tecnología de

Tokio (TIT). En su sede trabajan en la actualidad alrededor de 30 investigadores a tiempo

completo. En Estados Unidos (y Europa) solamente se empezó a dar importancia a la lógica

borrosa cuando desde Japón empezó a llegar información sobre numerosas aplicaciones

prácticas. A partir de entonces, empresas norteamericanas como NASA, Boeing, Ford,

Rockwell o Bell comenzaron a aplicar la lógica borrosa; por ejemplo, Ford Motor Co.

experimenta en la actualidad con un sistema de aparcamiento automático para camiones

con remolque.

Modelado y Simulacion de Sistemas Borrosos

Estas formulaciones imprecisas y vagas han sido frecuentemente desdeñadas en aras de

la exactitud y la precisión, abordándolas mediante modelos matemáticos que intentan

describir la vaguedad e imprecisión inherente a los sistemas económicos por medio de

técnicas de la estadística.

Un sistema es un modelo que caracteriza un tipo apropiado de relación entre entidades

abstractas. El término “relación” es utilizado aquí en general para representar no sólo el

concepto bien definido de relación matemática, sino a una clase más amplia de ideas tales

como restricción, interdependencia, estructura, cohesión y similares. El modelado de

sistemas es, en general, el conjunto de actividades, métodos y técnicas mediante las cuales

se aborda la construcción de sistemas que sean modelos adecuados de algún aspecto de la

realidad.

Un modelo de un sistema debe contener un conjunto de variables descriptivas, cada una

con valores en un cierto espacio o dominio, junto con un conjunto de relaciones, que

establecen entre otras cosas un conjunto de restricciones que deben cumplirse para

cualquier asignación de valores a las variables descriptivas. Pueden definirse diferentes

modelos de un mismo sistema, cambiando las variables descriptivas, los espacios de

valores, y las relaciones involucradas. Cada uno de estos modelos podía representar una

visión distinta del mismo sistema mostrándonos diferentes aspectos del mismo o distintos

niveles de abstracción.

Dada la veneración histórica por lo preciso, riguroso y cuantitativo en contraposición a

lo difuso, inexacto, no riguroso y cualitativo, no ha de sorprender el auge que los

computadores han tenido en el uso de los métodos cuantitativos de la mayoría de las

Página 12 de 143

Page 13: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

ciencias. Indiscutiblemente los computadores se han mostrado muy eficientes en relación a

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:

a) El razonamiento y la toma de decisiones de las personas se suelen llevar acabo

empleando el lenguaje natural, que juega un papel fundamental como mecanismo de

expresión y definición dentro de las ciencias sociales. Esto aporta una vaguedad o

incertidumbre propia del lenguaje natural que los modelos matemáticos no pueden

expresar en toda su plenitud.

b) La complejidad de los sistemas abordados impiden una formulación matemática

exacta. Esta característica viene expresada en el principio de incompatibilidad

expresado por Zadeh. Este principio dice que una gran precisión en el modelo de un

sistema es incompatible con su capacidad para manejar una complejidad grande. En

otras palabras, la complejidad de un sistema mantiene una relación inversa con la

exactitud con la que podemos determinar dicho sistema.

Un forma de abordar problemas con estas características es la utilización del

denominado Razonamiento Aproximado donde los modelos dejan de ser cuantitativos para

transformase en modelos cualitativos. Estos modelos cualitativos intentan capturar el

razonamiento humano mediante el uso de relaciones causa-efecto expresada en términos

lingüísticos o vagos. La teoría de los conjuntos difusos formulada por Zadeh en su trabajo

“Fuzzy Sets y posteriormente completada con sus aportaciones del concepto de variable

lingüística es el intento de introducir un marco de trabajo bien definido para el tratamiento

de estos modelos cuantitativos en donde los términos difusos, vagos e imprecisos son

consustanciales.

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

Página 13 de 143

Page 14: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

situaciones o estados son expresados en términos lingüísticos o vagos. Por esta razón el uso

de los conjuntos difusos, variables lingüísticas y en general los mecanismos de

representación utilizados por el Razonamiento Aproximado se muestran adecuados para su

modelización.

En general la creación de estos modelos difusos se realiza expresando en forma de regla

lingüística el conocimiento deductivo que emplea el experto. Este puede hacerse (y así se

hizo en los comienzos) mediante complicadas técnicas de Ingeniería del Conocimiento pero

más modernamente, el uso de los computadores, así como la mejora en la potencia de

cálculo y la cantidad de almacenamiento de datos que éstos han sufrido en los últimos años,

han originado la proliferación de técnicas inductivas para la obtención de tales modelos de

sistemas a partir de datos conocidos (Aprendizaje Inductivo). Este enfoque inductivo ha

posibilitado la creación de modelos para los cuales no es posible disponer de expertos que

nos proporcionen el conocimiento sobre los mismos.

Estas técnicas se emplean en la construcción de modelos, y más concretamente, en la

construcción de modelos difusos o vagos, los cuales son enfocados en el sentido del

razonamiento aproximado y la relación causa-efecto con el objetivo de identificar los

estados del sistema a partir de un conjunto de valores conocidos del mismo.

Un “sistema” puede visualizarse como el conjunto de "relaciones", en el sentido más

amplio de la palabra, entre unas variables de entrada y otras variables de salida. Estas

relaciones provocan el cambio temporal de los valores de las variables de salida al

modificarse los valores de las variables de entrada.

Esquemáticamente un sistema se representa mediante una “caja negra” donde

encontramos variables de entrada que introducen sus valores en la misma y variables de

salida que toman sus valores de ella.

Fig3

Página 14 de 143

Page 15: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Características como el tipo de valores de las variables de entrada y salida, el número de

éstas, su dependencia del tiempo, la retroalimentación de las salidas hacia las entradas, etc.,

originan una multitud de clasificaciones de los sistemas.

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.

Un objetivo de la ciencia es la definición de modelos de los sistemas existentes en la

realidad. Un modelo es la abstracción y simplificación de un sistema real, que sintetiza de

alguna forma las variables y sus relaciones más significativas. Este proceso de abstracción

que se produce en un modelo se realiza por dos motivos: el primero de ellos es la

comprensión del sistema y de los fenómenos asociados al mismo, el segundo, posibilitar su

manipulación para alcanzar algún fin concreto.

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.

Cuando un modelo se expresa mediante una función matemática, lo que se trata de

describir en términos precisos es la relación existente entre los valores de entrada y salida.

Estos modelos matemáticos han de estar descritos sobre variables con valores cuantitativos,

en cuyo caso su interpretación es inmediata. Sin embargo, cuando los valores de las

variables no son numéricos es necesario un proceso de abstracción anterior para trasladar

los valores cualitativos a unos valores cuantitativos.

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.

En la mayoría de los actuales sistemas expertos se presenta este problema: es necesario

representar en la máquina los conocimientos y procedimientos inciertos e imprecisos que

utilizan los expertos humanos para resolver problemas, y para ello se adoptan normalmente

técnicas ad hoc. Pero existen intentos teóricos para introducir en la lógica formal la

Página 15 de 143

Page 16: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

imprecisión y subjetividad característica de la actividad humana, y puede esperarse que en

el futuro el diseño de sistemas expertos se base en tales teorías.

Parece claro que el conocimiento humano se basa en apreciaciones tanto de naturaleza

probabilística (basada en la repetición de un fenómeno) como de tipo subjetivo o particular,

que hacen necesario trabajar simultáneamente con probabilidades y con posibilidades para

modelar de forma adecuada este conocimiento. Por ejemplo, en medicina es frecuente

encontrar reglas probabilísticas como "la medicina X provoca vómitos en un 2 por 1000 de

los casos", basadas en un estudio previo de pacientes a los que se ha suministrado dicha

medicina. Sin embargo, reglas como "una persona es atractiva si tiene buena presencia y es

divertida e inteligente", están basadas en apreciaciones más o menos subjetivas sobre la

atracción de las personas. Por tanto, es deseable utilizar un modelo en el que se puedan

manipular conjuntamente ambos tipos de incertidumbre.

En un sistema experto borroso, el proceso de inferencia es una combinación de cuatro

subprocesos, que se ampliará más adelante en la construcción del prototipo:

-Borrosificación o Fuzzificación: proceso por el que se aplican las funciones de

pertenencia definidas en las variables de entrada sobre los valores reales de los atributos,

para determinar el grado de verdad de las premisas de cada regla. La determinación de los

grados de pertenencia suele realizarse mediante métodos empíricos.

-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.

-Composición: se combinan los subconjuntos borrosos obtenidos para las variables de

salida en un único subconjunto borroso para cada variable. Para ello se suele usar una

composición de tipo MAX o de tipo SUMA.

-Desborrosificación o Desfuzzificación: A veces es útil examinar los conjuntos borrosos

resultantes del proceso de composición, aunque otras veces se necesita convertir el valor

borroso en un valor no borroso, para lo que se aplica un proceso de desborrosificación. Dos

de las técnicas más usadas de desborrosificación son la del CENTROIDE y el valor

MÁXIMO, aunque existen diferentes variantes de ellas.

En un plano de mayor abstracción cabe mencionar una nueva arquitectura para la

construcción de un entorno de desarrollo de sistemas expertos. Esta arquitectura está

diseñada para ser utilizada en dominios en los que la incertidumbre es un factor esencial a

Página 16 de 143

Page 17: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

considerar. Mediante esta arquitectura se pretende facilitar la aplicación de distintas

metodologías de razonamiento aproximado, entre ellas la basada en conjuntos y lógica

borrosa, el enfoque probabilista, etc.

Introducción a los Sistemas de control borroso

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.

Fig4: Ejemplo de conjuntos borrosos para la variable estatura.

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

Página 17 de 143

Page 18: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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.

Estos métodos de control pueden aplicarse también en brazos articulados y vehículos

autónomos, en los cuales los modelos matemáticos significativos son muy complejos. En

muchos de estos casos interesa combinar las propiedades de un control basado en el modelo

del sistema con el de reglas heurísticas, las cuales pueden emplearse para seleccionar o

ajustar automáticamente sus parámetros. Asimismo, las técnicas de razonamiento

aproximado resultan interesantes para los niveles superiores de control y planificación de

robots cuando el entorno no es conocido de forma precisa.

Para desarrollar estos sistemas de control se precisan herramientas de diseño de

controladores que faciliten la adquisición de conocimiento y el análisis del sistema de

control resultante, incluyendo las propiedades dinámicas de estabilidad y robustez.

En caso contrario, el diseño puede convertirse en un proceso muy tedioso, y no

garantizarse el comportamiento correcto del sistema de control.

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.

A partir de la Teoría de Conjuntos se desarrolló la lógica binaria, soporte matemático de

los sistemas digitales. Similarmente, la Teoría de Conjuntos Difusos ha desarrollado

sistemas de control electrónico, procesadores, coprocesadores, tarjetas y computadores. Y

la implementación puede llevarse a cabo exactamente igual a la lógica binaria.

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 143

Page 19: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

La gran potencia de esta metodología programable se debe a la posibilidad de expresar

operaciones y controlar las reglas del sistema mediante palabras de uso cotidiano.

Volviendo al ejemplo anterior, podría programarse: SI esta cerca a un piso Y hay orden de

parar ENTONCES disminuir la velocidad. En este caso una entrada al sistema de control

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.

La Lógica Difusa elimina los altos contenidos de matemática y física de un proceso y va

directo al nivel en que el sistema trabaja, esto permite aproximarse intuitivamente a la

solución de un problema mediante la formulación de reglas.

La forma de expresar las reglas de operación mediante palabras permite controlar

procesos sencillos con una decena de reglas, y procesos complejos con 30 o 40, reduciendo

considerablemente la cantidad de código de programación, y por tanto el tiempo de diseño,

el tiempo de desarrollo de un prototipo, la cantidad de memoria para almacenarlo, etc.

La descripción de un proceso mediante la formulación de reglas derivadas de la

experiencia en vez de ecuaciones matemáticas ha llevado a sustituir implementaciones con

procesadores de 32 bits por microcontroladores de 8 bits.

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.

Descripcion de la Estructura y Procesos de un Sistema de control borroso

Los sistemas expertos de control borroso basados en reglas, conocidos como

controladores borrosos o FLC (Fuzzy Logic Controllers), o también sistemas de inferencia

borrosa o FIS (Fuzzy lnference Systems, FIS), son sin duda la aplicación más extendida de

la lógica borrosa.

Página 19 de 143

Page 20: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Control de un proceso

Fig5: Estructura del controlador (el núcleo FLC es el controlador borroso)

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.

La estructura típica de un controlador basado en un sistema borroso consta de un primer

bloque que realiza un preprocesado de las variables de entrada, que proporciona el vector

de entradas al controlador borroso o FLC. El controlador borroso aplica la entrada que

recibe a la base de reglas para obtener la salida. Finalmente, esta salida puede requerir un

procesado final (post procesado) con el fin de adecuarla al proceso que se ha de controlar.

El tipo de preprocesado y post procesado determina la clase de controlador, e influye de

forma considerable en sus propiedades.

La estructura interna de un controlador borroso o FLC consta de un primer elemento,

llamado borrosificador, realiza la conversión de valores discretos a términos borrosos. Su

salida es utilizada por el dispositivo de inferencia borrosa para aplicarla a cada una de las

reglas de la base de reglas, siguiendo el método de inferencia seleccionado. La salida de

este bloque pueden ser M conjuntos borrosos Bl, con l=1, 2.... M, reglas del tipo Mamdani,

o también de tipo Sugeno o bien un único conjunto borroso B', que es la unión de los M

conjuntos borrosos. Finalmente, el desborrosificador transformará estos conjuntos borrosos

en un valor no borroso y V.

Página 20 de 143

Page 21: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 6: Estructura de un controlador borroso o FLC

En términos generales y resumiendo el uso de técnicas difusas para el control

automático, trata de imitar el comportamiento consciente de un operador humano,

controlando procesos no-lineales complejos o plantas de producción las cuales difícilmente

pueden ser modeladas por reflexiones físico-matemáticas. Estas circunstancias deshabilitan

el diseño sistemático de un controlador basado en modelos convencionales. Ejemplos de

esta clase de procesos son procesos de producción bio-tecnológicos, procesos químicos,

procesamiento de imágenes, plantas de tratamiento de aguas residuales, entre otros…

Este controlador borroso entonces, consiste básicamente en tres elementos.

• Fuzzificación: La primer tarea de un controlador Difuso es la traducción de las

entradas numéricas en variables lingüísticas las cuales van a ser posteriormente utilizadas,

etiquetando el valor crisp de la variable de entrada (variable numérica) con un término

lingüístico y determinando el correspondiente grado de pertenencia, esto es llamado

fuzzificación. Se asume que la variable de salida y puede ser medida en un control estándar

de lazo cerrado, en los siguientes pasos solo las correspondientes variables lingüísticas con

términos como negativo grande, negativo pequeño, etc. serán procesados. Por tanto es

necesario que se definan funciones de pertenencia para la salida y.

• Inferencia: De acuerdo con las definiciones usadas en inteligencia artificial, la

determinación de conclusiones o la generación de hipótesis basados en el estado de una

entrada es llamado inferencia. Para la operación del control en lazo cerrado, esto significa,

que las reglas definen las dependencias entre los valores lingüísticos de entrada y los

valores lingüísticos de salida. El resultado una variable manipulada (µ) que varia de

acuerdo a una situación de entrada. Principalmente los componentes de la inferencia imitan

las estrategias de un operador humano, pero estas acciones simbólicas de control no pueden

ser usadas para una planta real, a menos que la variable lingüística obtenida sea

defuzzificada.

• Defuzzificación: La Defuzzificación es el proceso de llevar los resultados simbólicos

obtenidos a valores que puedan ser utilizados para que las acciones de control sean

activadas.

Página 21 de 143

Page 22: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Capítulo Segundo. Implementación de sistemas borrosos

Se expondrán las diversas maneras disponibles para realizar en la práctica un sistema

basado en lógica borrosa. Se considerarán los entornos de desarrollo de sistemas borrosos,

mostrando el por qué son necesarios, así como algunos de los actualmente disponibles, que

serán descritos con cierto detenimiento. Se verán después diversos métodos de realización

hardware de sistemas borrosos, incluyendo los denominados aceleradores de

procesamiento.

1. Introduccion a la Implementacion de Sistemas Borrosos

El diseño de un controlador basado en lógica borrosa supone establecer un compromiso

entre diversos criterios de diseño: velocidad, precisión y flexibilidad. Para conseguir los

resultados deseados, debe plantearse la velocidad de respuesta del sistema de control, la

cual vendrá limitada por otros factores, como el grado de precisión requerido o la

flexibilidad del diseño. Así, si se desea una alta precisión en el control, se necesitará una

gran cantidad de conjuntos para cada variable y un alto número de reglas, lo que exigirá

una elevada cantidad de cálculos, causando aumento del tiempo de respuesta.

Si además el sistema de control tiene flexibilidad de adaptación a los caminos del

sistema y aprende de los errores cometidos, serán necesarios muchos más cálculos

adicionales, que también aumentarán el tiempo de respuesta. Evidentemente, estas opciones

influyen en el costo del sistema final, y en muchos casos será ésta la mayor restricción del

diseño.

Fig 7

Una vez decididas las prestaciones requeridas, se ha de utilizar una herramienta de

desarrollo para el diseño del sistema y seleccionar la plataforma de implementación

(entorno de desarrollo) adecuada que contengan a grandes rasgos los siguientes elementos:

Página 22 de 143

Page 23: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 8: Prestaciones de un Sistema para el diseño de un controlador borroso

Las herramientas de desarrollo suelen utilizar un lenguaje de descripción para

independizar el diseño de la plataforma (C++, Mathlab, etc), pero también existen múltiples

aplicaciones o paquetes comerciales ya compilados (entornos de desarrollo), citando a

continuación alguno de los mas utilizados: FuzzyTECH, TILShell, AB-Flex y FIDE.

2. Entornos de desarrollo comerciales , academicos y gratuitos

El continuo aumento de complejidad de los sistemas de desarrollo ha forzado a

introducir el concepto de entorno de desarrollo. Los sistemas iniciales de base puramente

textual se limitaban a conjuntos de programas aislados que procesaban ficheros,

produciendo otros ficheros. Estos sistemas resultaban muy complejos de manejar, y

requerían un largo período de aprendizaje y de alta especialización. Todo ello limitaba la

productividad de los equipos de desarrollo y, en último término, la dimensión máxima de

los sistemas que pueden realizarse a un coste razonable. Los primeros entornos de

desarrollo se orientaban a lenguajes textuales, e incluían editores básicos y ayudas para

automatización de las tareas de depuración. Paulatinamente se han ido mejorando tanto las

herramientas de edición como las de depuración, y se han desarrollado sistemas

automáticos de optimización y depuración tanto de las fuentes como del código final

generado. Este continuo aumento del número de herramientas y utilidades implicadas en el

desarrollo de sistemas ha hecho cada vez más necesario el uso de entornos que integren y

faciliten la tarea del programador individual, y la integración del trabajo de los equipos de

desarrollo.

Las nuevas tecnologías de desarrollo de aplicaciones se han beneficiado de la

experiencia de los sistemas clásicos y, por orientarse a aplicaciones complejas y requerir la

integración con técnicas clásicas, se han diseñado mayoritariamente con el apoyo de

entornos de desarrollo más o menos elaborados. Por ser tecnologías recientes y de origen

diverso, apenas se dispone aún de sistemas que faciliten la integración en un mismo sistema

de las diversas metodologías de trabajo disponibles (redes neuronales, sistemas borrosos,

algoritmos genéticos, etc.).

Página 23 de 143

Page 24: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Describiremos a continuación uno de los entornos comerciales más difundidos

orientados específicamente a lógica borrosa:

3. FuzzyTECH (INFORM Software Corp.)

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

los pioneros de lógica fuzzy en Europa, presidente y fundador de la International Fuzzy

Systems Association (IFSA), la principal organización internacional para la investigación y

aplicación de los sistemas basados en lógica borrosa. Es también editor principal de la

revista Fuzzy Sets and Systems Journal, una de las principales publicaciones científicas del

sector.

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).

Fig 9: Entorno FuzzyTECH

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.

Página 24 de 143

Page 25: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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.

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.

Resumen de características principales:

- Desarrollado por la compañía INFORM Software GmbH

- Versiones para Windows y Linux

- Potente interfaz gráfico.

- Edición gráfica de las variables lingüísticas.

- Gran cantidad de funciones de inclusión para conjuntos borrosos.

- Editor gráfico de reglas.

- Ajuste automático de los pesos de las reglas.

- Diversos tipos de desborrosificación.

- Generación automática de documentación según formato estándar IEC1131-7.

Página 25 de 143

Page 26: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

- Depuración interactiva off-line con visualización de los flujos de inferencia y activa-

ción de reglas.

- Optimización interactiva de los parámetros del sistema.

- Simulación en tiempo real con datos pregrabados.

- 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).

- Produce código C según el estándar ANSI, código VHDL, código para microprocesa-

dores (SGS-Thompson, 8051, MCS-96 de Intel, 81C99, 80C166 de Siemens, PIC de Mi-

crochip, DSP de Texas Instruments, etc).

- Posibilidad de Debugger en tiempo real en sistemas con microprocesadores.

- Recomendable para el desarrollo de sistemas prácticos en tiempo real.

- Recomendable para Sistemas de mayor Complejidad, uso de variables Intermedias y

Generación de código JAVA y C++.

Existen también diversos entornos experimentales para el desarrollo de sistemas

borrosos propuestos por centros universitarios. Hasta el momento hay relativamente pocos

entornos académicos de dominio público en el área de los sistemas basados en lógica

borrosa. Es de destacar que la mayoría de los sistemas comerciales han surgido de grupos o

profesores universitarios, como TILSell, del profesor Togai, o fuzzyTECH, del profesor

Hans Zimmermann, que han fundado empresas para la comercialización de estas

tecnologías.

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 el caso de FuzzyTECH vemos la posibilidad de obtener gratuitamente una versión

STUDENT para estudiantes que permite solo 2 variables de entrada y 1 de salida, así como

limitaciones en números de reglas y preprocesados.

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.

Página 26 de 143

Page 27: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

4. A-B Flex (Rockwell Automation - Allen Bradley.)

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.

Describiremos a continuación un detalle de los elementos componentes del programa

AB-Flex, muchos de los cuales son conceptos genéricos y definiciones que deberán tenerse

en cuenta en la simulación, ya sea en AB-Flex como en FuzzyTech u otro Sistema de Mo-

delado de Lógica Difusa:

Fig 11

a) Entrada o Input: Una entrada es un valor medido desde el sistema a ser controla-

do 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. Ca-

da entrada definida en A-B Flex tiene los siguientes atributos:

- Un nombre que sirve como identificador de la entrada.

- Un intervalo que define el rango de valores supuestos a tener en cuenta, o Universo de discurso.

- Un valor por defecto usado como valor de estado inicial.

Página 27 de 143

Page 28: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

- Una breve descripción.

b) Función de Membresía o Membership function para las entradas: Una función

de Membresía o conjunto difuso es una función matemática que mapea valores

concretos desde un dominio específico a un número entre 0 y 1 (Grado de Mem-

bresía). Cada función de Membresía definida en A-B Flex tiene un nombre que es

único en la totalidad de las funciones de Membresía definidas para un puerto par-

ticular de entrada/salida.

c) Fuzzificación: La Fuzzificación es el primer paso en el proceso del controlador

de lógica difusa. Comprende el cómputo de los grados de Membresía de los valo-

res de entrada respecto a las funciones de Membresía definidas para las entradas:

Fig 12

Grados de pertenencia respecto a la función de Membresía zero y negative.

d) Grado de Membresía (Membership grade): El grado de Membresía o MG es un

número entre 0 y 1 que representa el grado en donde un valor concreto es compati-

ble con la función de Membresía.

e) Base de Reglas: Una regla difusa es una sentencia if-then que describe el com-

portamiento de salida del controlador como una función de las entradas. Por ejem-

plo: 1.00 if nivel is bajo and temperatura is not alta then interruptor is prendido,

válvula is abriendo.

Cada regla en A-B Flex consiste en tres partes básicas:

1.00 - El peso de la regla

if nivel is bajo and temperatura is not alta - El antecedente (preposición)

then interruptor is prendido, valve is abriendo - El consecuente (conclusión)

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 143

Page 29: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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.

El operador and y or, Sintaxis:

Proposición difusa and Proposición difusa

Proposición difusa or Proposición difusa

El operador and tiene más alta precedencia que el operador or (como la lógi-

ca booleana). Se utilizan los paréntesis para desestimar esta precedencia. La

asociatividad entre los operadores and y or es de izquierda a derecha.

Las palabras se definen como todos los símbolos que puedan aparecer en las

reglas difusas excepto los identificadores. Las palabras definidas en A-B

Flex son:

If - etiqueta predecesora de la preposición de una regla

then - etiqueta separadora de las preposiciones y conclusiones de una regla

is - operador de evaluación de un grado de membresía

is not - operador de evaluación de complemento de un grado de membresía

and - operador de conjunción difusa

or - operador de disyunción difusa

, - separador de proposiciones difusas de salida

( ) - 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).

0.30 if error_nivel is positivo and cambio_nivel is llenando then válvula is cerrando

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 ve -

mos a continuación los grados de membresía para los valores de entrada anteriores:

Página 29 de 143

Page 30: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Evaluación de reglas:

Paso 1) Descripta en la tabla anterior.

Paso 2) DOF regla1 = 0.3 * MIN( 0.25, 0.36 ) = 0.075

DOF regla2 = 1.0 * MAX( 0.0, MIN( 0.6, 0.36) ) = 0.36

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 .

(iii) Regla inactiva, Inactive rule

Las reglas inactivas son aquellas reglas que están definidas en la base de reglas pero no son usadas por el algorit -

mo difuso en el procesamiento. Esta es una manera sencilla de afinar el sistema sin borrar reglas.

h) Métodos de Defuzzificación: La Defuzzificación debe ser usada para encontrar

los valores instantáneos y concretos de salida de la válvula para la válvula. En esta

versión de A-B Flex se soporta los siguientes métodos de defuzzificación:

- 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 valo-

res 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.

i) Función de membresía para las salidas: Cada función de membresía definida en

A-B Flex tiene un nombre único dentro de todas las funciones de membresía defi-

nidas para un puerto particular de entrada/salida.

Página 30 de 143

Page 31: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

j) Defuzzificación: La defuzzificación es el último paso en el procesamiento del

controlador de lógica difusa. En este paso algunos métodos son usados para deri-

var una salida concreta desde los grados de membresía respecto a las funciones de

membresía definidas para una salida. Las funciones de membresía que tienen un

grado de membresía de 1 en el rango de salida son extendidas por encima del ran-

go. La zona triangular de dicha función es un reflejo del centro de los picos y está

unida en el final de la función de membresía. Esto permite a los centroides de estas

funciones de membresía limitar los puntos del rango de salida.

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 siguien-

tes atributos:

Un nombre que sirve como identificador de la salida.

Un intervalo que define el rango de los valores que puede tomar.

Un valor por defecto que es usado si ninguna regla esta ejecutándose para proveerla de un valor.

Una breve descripción.

l) Simulación con MS-Excel: A-B Flex fue provisto de una herramienta de comu-

nicación de datos con otras aplicaciones (en esta versión hojas de cálculo de MS-

Excel solamente), para que el módulo de simulación permita monitorear el control

del proceso. Esta opción tiene el propósito de la demostración de que el modelo se

ajusta a la solución buscada. Permite crear un modelo simple y discreto de un sis-

tema usando MS-Excel y proceder a una simulación dinámica de control difuso.

A-B Flex tiene el rol de servir como controlador al sistema dinámico modelado en

MS-Excel o en alguna aplicación desarrollada a tal efecto que le asigna a MS-Ex-

cel el rol de intermediario en los vínculos de datos. A-B Flex es un cliente en la

comunicación que periódicamente lee los valores de salida desde el modelo del

sistema en Excel (Libro y Hoja de cálculo) llevando a cabo una inferencia difusa y

escribiendo los valores de entrada al modelo.

m) Excel DDE: Permite especificar puertos de entrada/salida hacia un Libro de

MS-Excel y mapear sus celdas para un intercambio de datos DDE.

(i) Tópicos:

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ál -

culo 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 143

Page 32: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

n) Gráficos: Los gráficos muestran las variables monitoreadas por el controlador

difuso durante el proceso de control. Las siguientes variables del controlador difu-

so pueden ser monitoreadas:

- Valores de entrada y valores de salida

- Grados de pertenencia de estos valores respecto al conjunto difuso correspondiente

- Grado de llenado de cualquier regla definida en la base de reglas

Los valores a ser representados en pantalla son obtenidos en línea o monito-

reando desde un archivo Log que fue salvado desde un gráfico previo. Hasta 32

valores podrán ser representados al mismo tiempo en la ventana del gráfico. Los

ejes verticales (Y) muestran información sobre los valores seleccionados. Una des-

cripción de cada valor es presentada cada vez. La visualización del eje Y axis es

opcional. Los valores numéricos visualizados en la parte superior del gráfico son

los valores de cada iteración determinados por el valor de la posición del marcador

en pantalla. El marcador es la línea vertical con pequeños triángulos en las puntas,

el cual se puede mover libremente. Los valores numéricos correspondientes a las

intersecciones del marcador y de los gráficos seleccionados son visualizados con-

juntamente según el tiempo transcurrido en la barra superior de la ventana. La vi-

sualización de los valores numéricos del marcador es opcional.

o) Gráfico de superficie (Mesh plot):

X : corresponde a la entrada que será graficada a lo largo del eje X

Y : corresponde a la entrada que será graficada a lo largo del eje Y

Z : corresponde a la salida que será graficada a lo largo del eje Z

Los valores de otras entradas pueden ser seleccionados de la lista y de sus

valores que serán usados para el gráfico de superficie. Pueden especificarse valores

constantes según sus rangos. Los valores iniciales son equivalentes a los valores ac-

tuales para cada entrada.

X - From : entrada, valor mínimo del rango en el eje x

( X -) To : entrada, valor máximo del rango en el eje x

( X -) Grid : entrada, se especifica el numero de puntos de grilla (mas de 80) en el eje x

Y - From : entrada, es donde se especifica el mínimo del rango en el eje y

( Y -) To : entrada, valor máximo del rango en el eje y

( Y -) Grid : entrada, se especifica el numero de puntos de grilla (mas de 80) en el eje y.

Página 32 de 143

Page 33: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 codi-

ficar 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 143

Page 34: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Capítulo Tercero. 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.

Se hará un análisis de resultados que llevará a conclusiones comunes a todo sistema de

lógica difusa.

1. Soft Computing, o imitando a la naturaleza

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.

Página 34 de 143

Page 35: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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

Japón empezó a llegar abundante información sobre numerosas aplicaciones prácticas de

esta técnica, desarrolladas y comercializadas por compañías japonesas.

2. Interés del empleo de la lógica borrosa. Fusión de tecnologías

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.

El otro gran denominador común de ambas técnicas es su orientación hacia el

tratamiento de tareas que involucran el procesamiento de cantidades masivas de

información de tipo redundante, imprecisa y con ruido, que aparecen en problemas

tecnológicos cruciales a los que en la actualidad se enfrenta el ser humano.

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.

No obstante, frente a las características comunes citadas, existen también importantes

diferencias. Por ejemplo, los sistemas basados en lógica borrosa permiten utilizar el

conocimiento de que disponen los expertos sobre un tema, bien directamente, bien como

punto de partida para una optimización automática. En el caso de las redes neuronales, esto

resulta más difícil o menos directo. La lógica borrosa permite formalizar tanto el

conocimiento ambiguo de un experto como el sentido común de una forma

tecnológicamente realizable.

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 143

Page 36: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

3. Robots móviles y navegación autónoma

Los robots móviles pueden 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.

La percepción se ocupa de las tareas relacionadas con la detección de obstáculos,

construcción de mapas, modelado del entorno y reconocimiento de objetos. Por último, el

control de movimientos convierte en acciones las órdenes de control, utilizando para ello la

diferencia (error) entre la posición deseada y la estimación de la posición actual del robot.

Se incluyen también tareas de monitorización de la ejecución.

Existen diversas posibilidades de aplicación de técnicas de control borroso. La mayoría

de los trabajos existentes parten de una identificación del escenario, con extracción de

características del entorno y obtención de valores de variables de situación del robot

(distancia a la pared, distancia a la entrada de estacionamiento, etc.). Las reglas de control

borroso relacionan valores cualitativos de estas variables con las acciones de control,

típicamente, el ángulo de dirección del vehículo.

En algunos casos, en vez de utilizarse directamente la variable de control en los

consecuentes de las reglas, se emplea una combinación lineal de los valores de las variables

de situación, empleando unos coeficientes que se calculan mediante la identificación de las

actuaciones de un operador humano trabajando en simulación. En este punto, conviene

mencionar el interés de la aplicación de técnicas de aprendizaje. En cualquier caso, una vez

obtenidos los valores inferidos por cada regla, la acción final de control resulta de una suma

ponderada normalizada de los resultados de cada regla.

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.

Las aplicaciones mencionadas anteriormente cabe considerarlas como de control borroso

directo. Otra posibilidad consiste en aplicar las técnicas de razonamiento aproximado para

seguir una trayectoria previamente definida. Considérese un sistema de navegación que

realiza sucesivamente los siguientes pasos: planificación de la ruta, generación de un

camino con buenas propiedades cinemáticas y, finalmente, control de seguimiento de la

trayectoria. Para este último paso existen, a su vez, diferentes métodos. En efecto, la

Página 36 de 143

Page 37: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

generación del ángulo de dirección (curvatura) puede realizarse mediante métodos

geométricos o considerando también la dinámica y la velocidad utilizando cinemática.

De acuerdo con el esquema anterior, la aplicación de métodos de control borroso puede

realizarse directamente (sustituyendo los métodos geométricos, dinámicos y cinemáticos) o

en combinación con ellos. De esta forma, es posible compensar errores de seguimiento

mediante reglas que tienen como antecedentes la desviación de ángulo y la variación de la

desviación del ángulo, y como consecuentes, la modificación de la dirección para

compensar el error.

Asimismo, otra estrategia muy interesante consiste en seleccionar mediante técnicas de

razonamiento aproximado los parámetros del control, que típicamente se eligen mediante

consideraciones heurísticas. Por ejemplo, los métodos geométricos o dinámicos de

seguimiento de trayectorias tienen como parámetro importante el número de puntos o la

distancia sobre el camino que se pretende seguir (lookahead). Este parámetro puede

elegirse mediante técnicas de razonamiento aproximado, teniendo en cuenta las

características del camino, la velocidad y la posición del vehículo con respecto al camino.

Los comentarios anteriores se refieren fundamentalmente al control de la dirección.

Existe también el problema del control de la velocidad del vehículo. Aunque hay un

evidente acoplamiento cinemático y dinámico con el anterior, se ha demostrado que en

diversas aplicaciones prácticas pueden realizarse desacoplamientos. En cualquier caso, el

problema de planificación y control de velocidad es notablemente complejo, y suele

realizarse con criterios heurísticos. Por consiguiente, la aplicación de técnicas de

razonamiento aproximado resulta particularmente interesante.

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.

4. El robot autónomo PILAR

El diseño del control de este robot autónomo en la Universidad de Zaragoza, se ha

realizado de forma completamente jerárquica, haciendo uso del modelo Sistema de

Respuesta Autónoma (ARS). El control de mayor nivel, el de navegación, implementa dos

comportamientos diferentes posibles:

a) Seguir a un objeto y detenerse a una distancia predefinida.

Página 37 de 143

Page 38: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

b) Movimiento libre en un entorno genérico, evitando obstáculos y tendiendo al área

libre más amplia.

En el contexto de este control jerárquico, se propone, además, un método para la

eliminación de bloqueos en el planeamiento de la trayectoria. El prototipo de robot

autónomo de seis patas ha sido bautizado PILAR (Programmable Intelligent Legged

Autonomous Robot), está ideado para que pueda moverse en cualquier ambiente, terreno

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

mide la distancia a los obstáculos; aunque su capacidad de giro es de -+80°, solamente se

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.

Fig 13: Robot autónomo PILAR, desarrollado en la Universidad de Zaragoza

El sistema se ha diseñado modularmente, de modo que pueda ser fácilmente expandible

y reconfigurable. Absolutamente autónomo, puede caminar en terrenos accidentados. De la

misma manera que el modelo ARS está inspirado en el sistema nervioso de los insectos, el

patrón de coordinación del movimiento de las seis patas de PILAR está basado en el de los

insectos, presentando su misma secuencia temporal.

Página 38 de 143

Page 39: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Capítulo Cuarto. Desarrollo de una apli-cació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 descrip-

ción de esta metodología que permite su aplicación a cualquier situación que necesite de un

controlador difuso.

Debido a la elección de un entorno de diseño del controlador difuso para el modelado y

prueba del controlador difuso, de forma paulatina se ira incorporando pantallas del entorno

gráfico elegido, acompañando los conceptos teóricos, a fin de resaltar los componentes del

proceso, la carga de datos y la construcción del modelo en el entorno. Se destaca así la ver -

satilidad del producto y la facilidad de uso, de esta forma se ilustra como llevar a la práctica

un modelo teórico.

Existen entonces ocho tareas primordiales que deberán llevarse a cabo para el desarrollo

de un sistema experto de lógica difusa:

1. Definición del problema

Describir un sistema experto de lógica difusa basado en un problema conciso y pasible

de ser llevado a la realidad mediante un robot, que consiste en guiar un carrito de golf por

ejemplo hasta la posición donde se encuentra el objetivo-destino, en este caso una pelota de

golf, a través de un campo donde hay obstáculos como árboles. El ejemplo se baso en un

ejemplo teórico de la cursada con el profesor Ing. Luis Arana, Profesor Titular de las cáte-

dras de Inteligencia Artificial de la Facultad de Ciencias de la Administración de la Univer-

sidad Argentina de la Empresa, durante la cursada en el año 2000, y es el punto de partida

para ampliar el ejemplo y desarrollar adicionalmente el mismo con mas obstáculos, con el

modelado en un entorno difuso y con la simulación y ajuste final del modelo implementado

en un lenguaje de programación.

Página 39 de 143

Page 40: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 es-

tacionario 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 lo-

grar ambos objetivos se necesitará de un sistema de lógica difusa con control sobre la direc-

ción y la velocidad del carrito. Este tipo de problema es básicamente un problema de co-

rrección de error. El carrito debe inicialmente girar hacia la pelota minimizando el error en-

tre la dirección angular del carrito y la dirección de la pelota. El carrito debe también acele-

rar, 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, pa-

ra luego acelerar orientándose hacia la pelota.

2. Exhibición de las variables lingüísticas

Se trata de conducir al carrito de modo eficiente y seguro desde la posición donde se en-

cuentra hasta la pelota. Eficiente por el recorrido más corto y en menos tiempo. Seguro por-

que va esquivando obstáculos como por ejemplo árboles.

El recorrido más corto se cumple ejerciendo un control sobre la dirección.

El recorrido en menos tiempo se cumple ejerciendo un control sobre la velocidad.

Página 40 de 143

Page 41: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Esquivar los obstáculos se logra controlando la dirección y la velocidad.

Se le pide al experto las variaciones de estas variables lingüísticas, y sus rangos, a saber:

En nuestro caso puntual, ampliaremos el problema a la navegación del carrito por un

campo con tres obstáculos, puestos estos en cualquier posición que obstaculice el camino a

la pelota de golf, tenemos entonces 3 árboles:

Fig 15

3. Definición de los conjuntos difusos

Para ello se le pregunta al experto cuáles son los adjetivos que usa para identificar y des-

cribir las reglas que representan su conocimiento sobre el tema. Se lleva a cabo este proce-

dimiento por cada variable lingüística y se arma un diccionario y un vocabulario propio pa-

ra este problema.

Se hacen preguntas como: ¿Qué velocidad se considera lenta?

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 se-

gundo es lento?

Página 41 de 143

Page 42: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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

Estos últimos medidos en Grados.

Fig 17

En mts/seg, mts/seg2, mts y mts, respectivamente.

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, sien-

do la más común y de fácil cómputo las trapezoidales. Un punto a tener en cuenta en la de-

finició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 corres-

pondidos.

Página 42 de 143

Page 43: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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

Volcado al Entorno seria:

Fig 19

Página 43 de 143

Page 44: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 143

Page 45: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 24

Fig 25

En el caso desarrollado como dijimos anteriormente se tendrán en cuenta la existencia de

tres árboles que serán ubicados en distintos lugares para posibilitar la construcción de un

escenario más real y complejo. Los adjetivos y los grados de pertenencia a tener en cuenta

para cada árbol son las mismas que para el Árbol_1.

Aquí vemos el primer caso volcado al entorno:

Página 45 de 143

Page 46: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 143

Page 47: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 143

Page 48: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 143

Page 49: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 143

Page 50: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 37

Fig 38

Página 50 de 143

Page 51: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 39

Fig 40

Dado la limitación de AB-Flex al utilizar figuras trapezoidales (4 puntos a definir) , en este

caso, se da el valor a Low Peak =0 y High Peak=0 para indicar que a velocidad cero la fun-

ción de membresía en cuestión, parte de la máxima pertenencia que es 1.

Fig 41

Página 51 de 143

Page 52: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 42

Fig 43

Fig 44

Página 52 de 143

Page 53: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 45

Fig 46

Fig 47

Página 53 de 143

Page 54: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 48

Fig 49

Fig 50

Fig 51

Página 54 de 143

Page 55: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 52

Fig 53

Página 55 de 143

Page 56: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 54

Fig 55

Fig 56

Página 56 de 143

Page 57: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 57

Fig 58

Fig 59

Página 57 de 143

Page 58: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 60

Fig 61

Página 58 de 143

Page 59: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 62

4. Definición de las reglas

Se necesita a continuación la definición de las reglas difusas. Se hacen preguntas al ex-

perto sobre cómo se controla la:

- Dirección del carrito hacia la pelota.

- Velocidad del carrito.

- Dirección del carrito para esquivar los árboles.

Reglas:

-- REGLAS para el manejo de la dirección

-- REGLA 1M - Mantener la dirección de marcha

1.00 if Angulo_error is cero and Distancia_arbol is not proxima and Angulo_arbol is not cero then An-

gulo_direccion is cero

-- REGLA 2M - Modificar la dirección de marcha ligeramente hacia la derecha

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

-- REGLA 3M - Modificar la dirección de marcha ligeramente hacia la izquierda

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.,

Página 59 de 143

Page 60: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

de esta manera no nos importa el árbol, ya que no se encontrara en el camino que en esta regla evalúa el

carrito.)

-- REGLA 4M - Modificar la direcci6n de marcha ligeramente hacia la derecha

1.00 if Angulo_error is muy_positivo and Velocidad is rapida then Angulo_direccion is poco_derecha

-- REGLA 5M - Modificar la dirección de marcha mucho hacia la derecha

1.00 if Angulo_error is muy_positivo and Velocidad is not rápida then Angulo_direccion is

mucho_derecha

(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

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)

-- REGLA 6M - Modificar la dirección de marcha ligeramente hacia la izquierda

1.00 if Angulo_error is muy_negativo and Velocidad is rápida then Angulo_direccion is poco_izquierda

-- REGLA 7M - Modificar la direcci6n de marcha mucho hacia la izquierda

1.00 if Angulo_error is muy_negativo and Velocidad is not rápida then Angulo_direccion is

mucho_izquierda

-- REGLAS para la Aceleración

-- REGLA 1A – Frenar levemente

1.00 if Angulo_error is muy_positivo and Velocidad is rápida then Aceleración is frenar_levemente

-- REGLA 2A – Frenar levemente

1.00 if Angulo_error is muy_negativo and Velocidad is rápida then Aceleración is frenar_levemente

-- REGLA 3A - Acelerar a fondo

1.00 if Distancia_pelota is lejana and Velocidad is not rápida then Aceleración is a_fondo

-- REGLA 4A - Hacer Aceleración cero

1.00 if Distancia_pelota is lejana and Velocidad is rápida then Aceleración is cero

-- REGLA 5A - Aceleración leve

1.00 if Distancia_pelota is mediana and Velocidad is not rápida then Aceleración is leve

-- REGLA 6A - Hacer Aceleración cero

1.00 if Distancia_pelota is mediana and Velocidad is rápida then Aceleración is cero

Página 60 de 143

Page 61: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

-- REGLA 7A – Frenar levemente

1.00 if Distancia_pelota is próxima and Velocidad is rápida then Aceleración is frenar_levemente

-- REGLA 8A - Aceleración leve

1.00 if Distancia_pelota is próxima and Velocidad is cero then Aceleración is leve

-- REGLA 9A - Frenar fuerte

1.00 if Distancia_pelota is muy_proxima and Velocidad is rápida then Aceleración is frenar_fuerte

-- REGLA 10A – Frenar levemente

1.00 if Distancia_pelota is muy_proxima and Velocidad is mediana then Aceleración is frenar_levemente

-- REGLA 11A - Marcha libre

1.00 if Distancia_pelota is muy_proxima and Velocidad is lenta then Aceleración is marcha_libre

-- REGLA 12A - Aceleración cero

1.00 if Distancia_pelota is muy_proxima and Velocidad is muy_lenta then Aceleración is cero

-- REGLA 13A - Aceleración leve

1.00 if Distancia_pelota is muy_proxima and Velocidad is cero then Aceleración is leve

-- REGLA 14A – Frenar fuerte

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.)

-- REGLA 15A - Marcha libre

1.00 if Distancia_pelota is proxima and Velocidad is mediana then Aceleración is marcha_libre

-- REGLA 16A - Aceleración cero

1.00 if Distancia_pelota is próxima and Velocidad is lenta then Aceleración is cero

-- REGLAS para esquivar el árbol

-- REGLA 1T - Girar ligeramente hacia la izquierda para esquivar el árbol

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

-- REGLA 2T - Girar ligeramente hacia la derecha para esquivar el árbol

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

Página 61 de 143

Page 62: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

-- REGLA 2T – Frenar fuerte para esquivar el árbol

1.00 if Distancia_arbol is proxima and Angulo_arbol is cero then Aceleracion is frenar_fuerte

Se considera la utilización de los adjetivos definidos previamente y de la inclusión de

nuevos adjetivos si fuesen necesarios, creando un conjunto difuso nuevo por cada uno.

Se definen las reglas entonces agrupando las mismas en función de las características an-

teriores.

Se tienen en cuenta al principio solo reglas difusas para cada conjunto difuso sin el agre-

gado 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.

Fig 64

Página 62 de 143

Page 63: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 65

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.

Página 63 de 143

Page 64: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

A continuación vemos como se puede testear distintas situaciones particulares aunque

no esto exactamente lo que entendemos por simulación, sino el paso previo.

Como primera aproximación vamos a ver un caso de prueba para una situación particu-

lar, estática, con un solo árbol.

Todos los tests fueron corridos utilizando inferencia Max-Producto.

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º.

A continuación vemos el camino del carrito durante la simulación bosquejada y notamos

que tiene una pequeña dificultad en el momento inicial para maniobrar y situarse en posi-

ción hacia el objetivo, hasta que lo logra y a partir de allí sigue en línea recta hacia la pelo-

ta. No existen desviaciones dada la lejanía del árbol. El carrito se detiene a unos 3 metros

de la pelota:

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:

Página 64 de 143

Page 65: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 68

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:

Distancia a la Pelota = 28,5 mts. (Próxima, Mediana)

Velocidad = 4,5 m/s (Rápida)

Angulo del error = Cero (No interviene)

Distancia Árbol = Lejos (No interviene)

Angulo de árbol = Muy Positivo (No interviene)

Angulo dirección = Cero (No interviene)

Se procede a recorrer las reglas aplicables:

a- La regla 1M es aplicable.

b- La regla 5A es aplicable así como también la 6A y 7A.

Distancia de la pelota = 28.5 mts. (Próxima = 0.625 ; Mediana = 0.125)

Página 65 de 143

Page 66: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Velocidad = (Rápida = 0.8 ; No Rápida = 0.2)

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

Bajo estas condiciones solo cuatro reglas se aplican:

Analizando la Regla 1M (1,2,3 de A-B Flex), vemos que:

1.00 if Angulo_error is cero and Distancia_arbol is not proxima and Angulo_arbol is not cero then An-

gulo_direccion is cero

Se cumple el Angulo_error is cero, se cumple Distancia_Arbol is not proxima, dado que

interviene el valor Distancia_Arbol es Lejos.

Reglas 5A, 6A y 7A (18, 19 y 20 para A-B Flex)

Para evaluar la regla 5A, las funciones de membresía “mediana” de “Distancia_pelota” y

“rápida” de “Velocidad” deben ser evaluadas.

La “Distancia_pelota” de 28.5 mts pertenece a la clasificación de “mediana” en un grado

de 0.125.

Página 66 de 143

Page 67: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 70

La “Velocidad” de 4.5 m/s es considerada “rápida” en un grado de 0.8

Fig 71

Asimismo es “NOT rápida” en un grado de 0.2.

Cuando se unen estas dos sentencias con el operador AND, el operador minimum produ-

ce 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í tene-

mos:

Regla 5A:

-- REGLA 5A - Aceleraci6n leve

1.00 if Distancia_pelota is mediana and Velocidad is not rápida then Aceleración is leve

grado de llenado de la regla (DOF): 1.00 * MIN(0.125,0.2) = 0.125

Cuando la regla 6A es evaluada, usando los valores de verdad de “mediana” y “rápida”

para las mismas variables lingüísticas anteriores, los antecedentes se combinan nuevamente

y se obtiene un valor de verdad de 0.125. El valor de pertenencia de “cero” de “Acelera-

ción” es medida en escala por este valor.

Página 67 de 143

Page 68: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

-- REGLA 6A - Hacer Aceleración cero

1.00 if Distancia_pelota is mediana and Velocidad is rápida then Aceleración is cero

grado de llenado de la regla (DOF): 1.00 * MIN(0.125,0.8) = 0.125

Cuando se evalúa la regla 7A, la distancia a la pelota de 28.5 mts es considerada “próxi-

ma” en un grado de 0.625 y la “Velocidad” es “rápida” en un grado de 0.8. Consecuente-

mente “frenar_levemente” se convierte en un valor de 0.625.

-- REGLA 7A – Frenar levemente

1.00 if Distancia_pelota is proxima and Velocidad is rapida then Aceleracion is frenar_levemente

grado de llenado de la regla (DOF): 1.00 * MIN(0.625,0.8) = 0.625

La ejecución en paralelo de estas tres reglas se pueden ver a continuación:

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

Página 68 de 143

Page 69: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

del carrito y la instantánea para la aceleración para el modelo dado es - 0,643. Como el va-

lor 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.

Fig 73

Página 69 de 143

Page 70: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 74

Y en Excel:

Fig 75

También podemos observar el grafico 3D que denota la superficie de decisión o relación

entre las tres variables que estamos estudiando en este caso de prueba.

Página 70 de 143

Page 71: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 76

Podemos ver sencillamente aquí como a medida que hay mayor distancia a la pelota em-

pieza 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.

Fig 77

Rotando el Grafico vemos claramente el problema de la oscilación creciente a medida

que la velocidad llega a 0 (que es nuestro problema de oscilación brusca cuando se llega a

la pelota) inherente al problema de correlación entre estas tres variables. Ya desde el Grafi-

co anticipamos un problema. Lo resolveremos luego estudiando esta oscilación y tratando

de menguarla.

Página 71 de 143

Page 72: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

b. Caso de prueba 2

En el próximo caso de prueba se considerará la situación donde un árbol está en el ca-

mino hacia el carrito. El carrito se ubica en un Angulo_auto de 60 º respecto a la pelota.

Fig 78

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.

Página 72 de 143

Page 73: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 79

El carrito rápidamente aumenta la velocidad hasta que se aproxima al árbol, donde

disminuye cautelosamente la velocidad mientras lo esquiva, para luego acelerar

nuevamente hasta su aproximación final a la pelota. Aquí este reduce significativamente la

velocidad para detenerse. Desafortunadamente, tal como se observó en el caso de prueba 1,

la velocidad del carrito oscila cuando se aproxima demasiado a la pelota, antes de

detenerse. También resolveremos esto a continuación, esta vez ampliando los casos de

estudio para conocer cual es el origen del problema.

6. Simulación dinámica del sistema

Para observar innumerables casos de prueba y evaluar como se comporta el modelo, es

casi ineludible realizar una simulación dinámica, para lo cual se desarrolló un programa en

Visual Basic y AB-Flex que envía los datos de entrada según el estado actual del sistema a

Excel y este hace de interfase hacia el controlador difuso, el programa compilado en Visual

Basic (.exe) recibe los datos de Excel, los interpreta, los transforma en datos representativos

y computa el nuevo estado del sistema, para enviar así los nuevos valores de entrada. Este

procedimiento iterativo se repite hasta alcanzar el estado final estipulado como fin de la si-

mulación. Dada la característica de la solución los tiempos de respuesta no son óptimos, pe-

ro permite una clara representación del problema físico, en un espacio virtual.

Página 73 de 143

Page 74: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

El desarrollo de la simulación se hizo como prototipo, y vemos a continuación un resu-

men de los elementos y de su comportamiento que dio origen a la aplicación. En cuanto al

código fuente en Visual Basic y macros de MS Excel, se adjuntan en el Anexo y en el CD

Adjunto al trabajo final.

a. Borrador del problema

A continuación se detallan elementos que acompañan al borrador que fue confeccionado

para llegar a una primera aproximación informal al problema.

Vemos a continuación un gráfico en el plano, que indica centralmente, como se miden

los ángulos respecto al carrito de golf, la pelota y el árbol (único hasta el momento).

Tienen una distancia medida respecto al carrito y se obtiene su magnitud utilizando fun-

ciones trigonométricas, según los datos aportados por la posición de cada elemento en el

campo.

Fig 80

A continuación vemos como el tiempo teórico que equivale a cada iteración es de 1

segundo y por lo tanto corresponde a un cambio de estado.

A cada segundo se obtienen los ángulos correspondientes por medio de la función

ArcoTangente respecto a las coordenadas del carrito, pelota y árbol en cada caso. Con esta

información se permite calcular las magnitudes de las distancias (diagonales en el gráfico).

Página 74 de 143

Page 75: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 75 de 143

Page 76: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 82

El estado inicial fue definido como un angulo_auto de 0º respecto al sistema de

coordenadas, de velocidad cero y una ubicación determinada, a partir de la cual se obtienen

los datos necesarios para establecer el estado inicial de partida para la simulación.

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.

Fig 85

Página 76 de 143

Page 77: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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.

Para el caso de la aceleración, la transformación es encontrar la nueva velocidad, y

consecuentemente mover el carrito hasta la posición indicada por la magnitud del vector.

El espacio recorrido en ese lapso (según la velocidad) es necesario descomponerlo en

desplazamiento sobre X e Y en el campo de Golf.

El ángulo de la dirección indica una corrección al estado inmediatamente anterior, en

particular al ángulo del auto. Por este motivo el signo del ángulo de la dirección es

cambiado, en lugar de expresar la transformación del ángulo del auto como el ángulo del

auto anterior menos el ángulo de dirección.

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 dis-

tancia a la pelota sea de 3 metros, con lo cual la velocidad será 0 m/s. Llegado este momen-

to (o alguna combinación de distancia pelota y velocidad definida por el usuario), la simu-

lación finalizará siendo el estado último el que quedará almacenado en el controlador difu-

so.

Si el estado final fuese de características más exquisitas que lo aceptado según la reali-

dad planteada por el experto, la naturaleza del sistema será continuar con la iteración inde-

finidamente hasta llegar a ese punto, y si no llegase nunca se estará en una situación de

Página 77 de 143

Page 78: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

inestabilidad infinita por no satisfacer la demanda del usuario, hasta que se lleve a cabo al-

guna modificación al controlador o se de por terminada la simulación de forma forzosa.

Probablemente este escenario de mayor precisión ocasione numerosas iteraciones de or-

den distinto a las observadas antes, pues estas ultimas serán aceleraciones y frenadas breví-

simas, dado que el tiempo de proceso y de decisión es mayor que el tiempo manejado por el

vinculo DDE con Excel y su posterior proceso por la Aplicación VB.

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 aplica-

ciones 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.

b. Seguimiento de un ciclo completo

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 pro-

blema de la navegación autónoma del carrito de golf. Para ello el necesario un perfil de har-

dware mínimo y software que describimos a continuación:

PC IBM compatible Pentium III de 500 MHz, con 256 MB de memoria. El sistema ope-

rativo 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 compatibili-

dad en MS Excel de Office 2000/2003/XP), y el entorno de desarrollo A-B Flex, suminis-

trado de forma adjunta a este Trabajo Final en el CD, con el instalador de la aplicación a si -

mular, 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 mode-

lo .xls y por ultimo el archivo de proyecto a modelar en A-B Flex , .abf.

Inicialmente, debemos destacar la importancia de configurar las opciones internacionales

de Windows para lograr una compatibilidad con los productos necesarios para llevar a cabo

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.

Página 78 de 143

Page 79: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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álo -

go:

Fig 89

Página 79 de 143

Page 80: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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.

Las variables listadas se corresponden a nombres de celdas asignadas en la hoja de cál-

culo Fuzzy, siendo “Tópicos” para DDE. En este caso sé de nombraron de la misma forma

(aparecen listados entre comillas).

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.

Una vez establecida la comunicación, se puede comenzar el envío y recepción de datos

para comenzar a simular.

Luego de esto y ya con la pantalla de Simulación Abierta (Simulación Manager), se de-

berá establecer el tiempo de iteración para el intercambio de datos con DDE, que se estable-

ció de 1 milisegundo, y el tiempo real equivalente a cada milisegundo, el cual se estableció

de 1000 milisegundos, equivalente a un segundo de simulación.

Fig 90

A continuación y como tercer paso, previa instalación de la Aplicación de simulación

Golf06.exe, se debe ejecutar la misma y comenzar a establecer los parámetros indispensa-

bles para establecer el estado inicial del sistema.

Para ello es necesario, desde el menú ejecutar el ítem “Ubicar”, que visualizará una pan-

talla 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 ha-

cia la disposición geográfica deseada:

Página 80 de 143

Page 81: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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.

El programa requerirá información a ser suministrada por el usuario, a fin de establecer

los valores de los parámetros de corte en la simulación que por defecto serán los siguientes:

Para la distancia a la Pelota, 3mts.

Fig 92

Para la velocidad, 0 mts./s

Fig 93

Página 81 de 143

Page 82: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Una vez establecida esta característica elemental, la aplicación ofrecerá la posibilidad al

usuario de manejar manualmente el carrito hacia la pelota y parar cuando se alcancen los

valores indicados anteriormente.

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).

De igual manera se podrá visualizar la aceleración y permitir su variación por medio de

las teclas arriba y abajo.

Al llegar al estado final, se informarán algunas conclusiones estadísticas y se podrá co-

menzar con una nueva simulación manual o automática a fin de establecer comparaciones

de rendimiento y por qué no, tratar de alcanzar el objetivo del problema en menos y mejor

forma, compitiendo así con el experto virtual.

Para la navegación autónoma, utilizando el controlador difuso, lo único necesario es

presionar una tecla y observar cómo el carrito llega al objetivo, esquivando los obstáculos y

en tiempo óptimo. Se deberá prestar atención a la dinámica de las variables, para así enten-

der el funcionamiento de la simulación y de los posibles ajustes a llevar a cabo para depurar

el sistema.

En la ventana Simulación, se puede apreciar cómo a medida que transcurre el tiempo, el

carrito varía su ángulo (representado por la línea blanca) para dirigirse directamente hacia

la pelota o en caso de tener próximo un árbol, esquivarlo.

También se procuró dejar un rastro de la trayectoria llevada a cabo, para notar el com-

portamiento del carrito ante cada situación particular. Como elemento adicional, a fin de

proveer de mayor significado a la simulación gráfica, se incorporó a la traza del trayecto

efectuado por el carrito una serie de colores que indican:

Blanco: Aceleración nula

Rojo: Desaceleración

Azul: Aceleración

Página 82 de 143

Page 83: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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

En el gráfico anterior para un momento en particular, cuando el carrito se va acercando a

un árbol que se encuentra en su camino, comienza a virar en un ángulo de 1,07 para esquiv-

arlo y también disminuye su velocidad, primero con aceleración cero para que en el instante

visualizado desacelere a razón de –0,31 m/s2.

Los valores de las variables de salida y de entrada se pueden corroborar accediendo a

Excel, en la hoja Fuzzy.

Página 83 de 143

Page 84: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 re-

comendados, es probable que la simulación termine abruptamente con un error de ex-

piració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.

Retomando el momento específico para el cual estamos analizando el comportamiento

del sistema, vemos que parando la simulación en A-B Flex se obtienen datos gráficos rele-

vantes, como ser valores puntuales de las variables linguísticas:

Página 84 de 143

Page 85: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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.

También se puede observar la base de reglas definida para el problema y en especial,

cómo se ven activadas, cada una de ellas, con su diferente afectación pero conjuntamente,

por la situación actual o estado de observación:

Fig 98

Vemos en este caso como las reglas 1,2,3, que son ” -- REGLAS para el manejo de la di-

recció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

Página 85 de 143

Page 86: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

then Angulo_direccion is cero”, debido a que si bien el Angulo_error es casi cero (-1,43), la

relación con el árbol 3 es de proximidad y se ve en la pobre activación de la regla 1; tam-

bién es baja la afectación de la regla 3 debido a que el ángulo de error al mismo es casi cero

(-2.15) aunque su distancia sea no próxima.

La regla de mayor activación se debe entonces a que el árbol 2 no es próximo y está sig-

nificativamente apartado del camino que pretende seguir el carrito.

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.

Se continúa analizando las otras reglas activadas.

Las reglas 16 y 17, que son “ -- REGLAS para la Aceleración ” y correspondientes al

grupo “ -- REGLA 3A - Acelerar a fondo “ y “-- REGLA 4A - Hacer Aceleración cero “, se

activan porque:

“1.00 if Distancia_pelota is lejana and Velocidad is not rapida then Aceleracion is

a_fondo ” es medianamente cierta, dado que la velocidad es medianamente rápida.

“1.00 if Distancia_pelota is lejana and Velocidad is rapida then Aceleracion is cero “ es

bastante acertada por la misma condición de la regla 16.

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_ar-

bol_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.

Se recuerda la importancia conceptual que tiene la necesidad de tomar en cuenta la

sumatoria de todas estas activaciones para obtener un valor central (centroide).

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áfica-

mente los valores puntuales de las variables linguísticas:

Página 86 de 143

Page 87: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 99

Los gráficos de superficie, permiten ver la superficie de decisión de dos variables de en-

trada contra una de salida.

Vemos por ejemplo, cómo actúa la aceleración en función de la distancia a la pelota y la

velocidad.

Una aceleración baja y casi constante se da cuando la distancia a la pelota es cercana a

cero y para cualquier velocidad.

Cuando la distancia a la pelota se incrementa la aceleración tiende (oscilando) a dismin-

uír ante una velocidad alta. Vemos cómo la relación velocidad-aceleración es fluctuante in-

necesariamente al aproximarse a la pelota. Analíticamente nos damos cuenta de una os-

cilación indeseada, objeto de análisis posterior e identificada en los casos de Prueba. Si esta

deficiencia no es corregida, la simulación responderá consecuentemente, acelerando y de-

sacelerando en los últimos metros. Denotamos la importancia de un análisis detallado de es-

tas superficies de decisión que nos previenen de problemas futuros.

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 87 de 143

Page 88: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 100

Si este análisis lo extendemos a otros gráficos, se pueden obtener valiosas conclusiones,

para cada combinación de variables linguísticas y valores puntuales de las otras variables

de entrada.

Fig 101

Página 88 de 143

Page 89: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Como complemento destacamos la existencia de una herramienta que permite distinguir

los valores de las variables linguísticas que no fueron explotados en profunddidad, pudi-

endo agregar nuevas funciones de membresía para cubrir estos huecos, o bien ampliar el

rango de inclusión de las existentes:

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 grafi-

cació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 89 de 143

Page 90: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 103

Finalizada la simulación podemos observar un pequeño resumen estadístico que nos da

una primera pauta de la eficiencia del sistema.

Indica la velocidad promedio y el tiempo (iteraciones) necesarias para llegar al objetivo.

Estos datos pueden ser de utilidad al compararlos con una navegación manual y ver que tan

cercanos o distantes están los resultados entre sí, para obtener conclusiones del tipo Experto

Hombre vs. Experto Máquina Difusa y ver posibilidades de entenamiento y perfec-

cionamiento de ambos.

Fig 104

También es posible observar la trayectoria completa y los tramos de aceleración, frenado

y aceleración constante.

Finalizada la simulación, se dispone a exportar los datos recolectados en cada iteración

para llevar a cabo un análisis estadístico más exhaustivo con la ayuda de MS Excel. Para

esto es preponderante detener un instante la simulación de A-B Flex hasta terminado este

proceso de envío de datos de forma masiva a Excel.

Página 90 de 143

Page 91: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 105

A continuación se aprecia el estado final de aproximación deseada a la pelota y los resul-

tados gráficos de la simulación. La barra de estado informa el porcentaje de completitud del

proceso de exportación de datos:

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 91 de 143

Page 92: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 107

Una vez finalizado el proceso de exportación de datos, se informa el procedimiento a

seguir para la graficación de las variables Velocidad, Aceleracion y Distancia_pelota que

fueron seleccionadas arbitrariamente para su análisis en Excel, para demostrar la capacidad

que tienen estas herramientas cuando trabajan conjuntamente.

Fig 108

Para esto es necesario presionar en la hoja de cálculo Fuzzy el botón correspondiente.

Seguidamente, respecto al programa de simulación en Visual Basic, se puede proceder a

iniciar una nueva simulación o bien salir de la aplicación definitivamente.

Página 92 de 143

Page 93: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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.

Promediando los 30 segundos de comenzada la misma, se observa ante la proximidad

del Arbol 3, como la aceleración disminuye primero hasta hacerse constante, para luego

frenar cuando se lo está esquivando y retomar velocidad, acelerando una vez sorteado el

obstáculo.

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.

Terminando la simulación, vemos nuevamente el problema de la oscilación indeseada

ante la proximidad de la pelota ( frena, acelera, frena, acelera, etc.), que fue detectada previ-

amente en el análisis de los gráficos y de las reglas, como así también en los casos de

prueba. Es evidente la necesidad de corregir este problema, ya que fue identificado y lograr

que desacelere lenta y suavemente hasta disminuir la velocidad a cero, llegado a los 3 met-

ros o menos (situación ideal). Esta corrección es comentada debidamente en otros párrafos

y pasaremos ahora si a corregirla y comentarla.

Página 93 de 143

Page 94: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 94 de 143

Page 95: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

La distancia a la pelota, se comporta a primera vista de forma correcta. Pero se debe no-

tar dos pequeñas oscilaciones al aproximarse a los árboles 3 y 1, ya que tuvo que alejarse

un poco de su curso y distanciarse un poco de la pelota al momento de esquivarlos.

En cuanto a la pendiente de la curva, significativamente menos pronunciada al final de la

simulación, se debe decir que este comportamiento es atribuído al hecho de acompañar a

las oscilaciones indeseadas de las otras variables que cambian de posición al carrito y lo

alejan o acercan repetidamente al objetivo. Por consiguiente llega a la pelota más lenta-

mente y la distancia a la pelota disminuye en menor magnitud.

Fig 112

Aquí vemos como se selecciona una línea de tendencia Polinomial de grado 6 y se pro-

cede a su graficación y cálculo para la variable distancia a la pelota:

Página 95 de 143

Page 96: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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

De esta manera damos fin al proceso de simulación dinámica, brindando la posibilidad

de ejecutar estos programas y modificarlos o analizar diversas situaciones posibles. Para

ello se adjunta al trabajo, el CD necesario para la instalación de los programas utilizados,

salvo el caso de Microsoft Excel que es una aplicación registrada y de dominio comercial.

Página 96 de 143

Page 97: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

B. Ajustar el sistema, el problema de la Oscilación Final

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.

En la mayoría de los desarrollos el tiempo que demanda la construcción de conjuntos y

reglas difusas, es pequeño comparado con el que se destina a la afinación del sistema.

Usualmente la primera versión de conjuntos y reglas se obtiene rápidamente, ésta es una

de las principales ventajas de los sistemas de lógica difusa, las bases de conocimiento que

tienden a proporcionar resultados rápidos y razonables se forman usando sentido común, en

este caso el examen de los resultados de las pruebas, satisfacen la mayor parte de las expec-

tativas iniciales, el carrito llega exitosamente hacia la pelota y evite los choques con árboles

y obstáculos, pero el estudio de las gráficas muestra que podemos estar frente a un proble-

ma, cuando el carrito está próximo a la pelota, la velocidad oscila entre cero y algún valor,

para corregir este problema, examinamos las reglas de control de velocidad, en particular

las reglas que controlan la velocidad cuando el carrito está muy próximo a la pelota.

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 evi-

table 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.

Se ve a continuación la variación de la velocidad con la regla 13A eliminada, para el ca-

so de prueba 1. La eliminación de esta regla ha prevenido la oscilación de la velocidad. A

consecuencia de esto, la simulación nos muestra que el carrito se detiene a 7 mts de la pelo-

ta contra los 3 mts anteriores.

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 ajus-

tes a los conjuntos difusos o a las reglas para corregir este nuevo problema:

Página 97 de 143

Page 98: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

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 me-

tros es una clara muestra de que la solución no es tal porque se pierde efectividad.

Antes de visualizar la solución óptima para esta oscilación, definimos la afinación o

Tunning de un sistema en lógica difusa como la ejecución de una o más de las siguientes

operaciones:

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 adver-

bios mediante los operadores:

- Eliminación de reglas prescindibles o que provocan oscilaciones en el rendimiento.

- Modificación de Reglas, en particular las intervinientes identificadas en el problema.

- Agregado de reglas para una situación especial.

Página 98 de 143

Page 99: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

- Agregado de premisas para otras variables lingüísticas.

- Uso de adverbios para los operadores o pesos de llenado en las reglas.

Vemos entonces como modificamos las reglas para que no exista oscilación:

NOTA: Cada Regla es comentada a fin de observar donde se realizaron cambios y por-

que.

Fig 116

Desde el sentido común, vemos que el problema de la oscilación es debido a que se fre-

na antes de lo necesario ante la aproximación al objetivo, por lo cual la solución seria ajus-

Página 99 de 143

Page 100: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

tar las decisiones en esta instancia, tratando de no frenar tan bruscamente para luego acele-

rar cíclicamente y en lugar de esto suavizar la llegada. Vemos a continuación la solución:

En la Regla 7A, en lugar de frenar levemente, se modifica la misma y en lugar de frenar

levemente se deja en marcha libre, esto es una desaceleración muy leve, la cual se ejercería

por la fuerza de rozamiento.

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 10A, se cambia el Frenado Leve al aproximarse muy próximamente a la pe-

lota pero a velocidad mediana, por marcha libre, logrando una aproximación mas suave al

objetivo. También se corrige el peso de la regla de 1 a 0,75.

En la Regla 11A, se cambia la marcha libre cuando la velocidad es lenta y la distancia

muy próxima a la pelota, por una aceleración cero que es equivalente a una aceleración

constante que no incremente la velocidad, contrarrestando apenas a la fuerza de rozamiento.

En la Regla 13A, cuando se esta prácticamente sobre el objetivo, y no hay velocidad, se

debe frenar fuertemente para no avanzar mas Se supone que apenas una frenada bastaría,

por lo cual para evitar decisiones débiles, ya que el objetivo es detenerse del todo, se frena

fuertemente. Esta regla reemplaza a la regla que analizaba una proximidad muy próxima, y

aceleraba levemente a velocidad cero. Esto es porque las reglas de frenado total, eran insu-

ficientes. También se corrige el peso de 0,5 de la regla a 1.

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 mar-

cha frenando fuertemente. Esta regla se logra precisar aun mas especificando que dicha ac-

ció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.

En la Regla 15A, cuando se aproxima a la Pelota y la Velocidad es mediana, se cambia

la aceleración de marcha libre por la aceleración en Cero. Preservando la velocidad y no

disminuyéndola. Se trata de mantener constante la Velocidad hasta un estadio de mayor

proximidad donde otras decisiones ya se deban tomar y abandonar la Velocidad constante.

Las Reglas de Girar Ligeramente se mantienen, aunque se desestima la evaluación de

Angulo Árbol 2 y 3 cuando es cero y se evalúan solo si son poco positivos o negativos.

Página 100 de 143

Page 101: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Conjuntos difusos

En materia de conjuntos difusos, agregando conjuntos a una determinada variable lin-

güística, dilatar o estrechar los conjuntos existentes, desplazamiento lateral de los puntos o

mediante el ajuste de la forma de los subconjuntos, en general cuando se requiere un valor

fino sobre una variable, conviene agregar conjuntos difusos estrechos centrados alrededor

de un conjunto de interés, los conjuntos difusos anchos proporcionan un control grueso.

- Agregado de conjuntos en una variable lingüística particular.

- Aproximación o distanciamiento de conjuntos difusos existentes con respecto a

sus rangos.

- Ajustes laterales de los conjuntos existentes, estiramiento o encogimiento.

En esta afinación no se requirió la modificación de los conjuntos difusos.

Mostramos a continuación pantallas que evidencian la mejora, para lo cual se modificó

la Aplicación VB y se agregaron las siguientes funciones:

- Se elimina la opción de manejo manual, ya que nos interesa resolver la oscilación.

- 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.

Así podemos ver cuales reglas se ejecutan en cada situación relevante:

Situación 1: Esquivar el primer Árbol:

Página 101 de 143

Page 102: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 117

Situación 2: Esquivar el último Árbol:

Fig 118

Página 102 de 143

Page 103: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Situacion3: Proximidad al objetivo:

Fig 119

Situación 4: Se llego a la pelota con una precisión de medio metro:

Página 103 de 143

Page 104: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 120

Ahora vemos si hubo o no oscilación analizando los gráficos de Excel:

Fig 121

Página 104 de 143

Page 105: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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.

Página 105 de 143

Page 106: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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.

La Aceleración nuevamente decimos no sufre oscilación alguna, cuando se aproxima al

objetivo, nunca acelera, nunca supera el eje x=0, siempre desacelera mas o menos, frenando

mas o menos, hasta que esta tan cerca del objetivo que frena abruptamente hasta detener la

marcha, tal cual lo haría un Chofer que lentamente va presionando mas o menos el pedal

del freno del carrito hasta frenar fuertemente al llegar a destino.

Consideramos resuelto el problema de oscilación.

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:

Situación 1: Variación de la ubicación de la pelota:

Página 106 de 143

Page 107: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 125

Este grafico muestra que hubo 3 pausas con 3 movimientos del objetivo pelota.

Página 107 de 143

Page 108: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 126

Velocidad fluctuando ante los 3 movimientos de la ubicación de la pelota.

Fig 127

Aceleración acorde a los 3 movimientos de la pelota.

Situación 2: Variación de la posición de los árboles:

Página 108 de 143

Page 109: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fig 128

Cambiamos aquí la ubicación de los 3 árboles y de la pelota también. Así podemos

establecer numerosas situaciones de prueba.

Finalizando, debemos afirmar que se demostró fehacientemente la simpleza y enorme

utilidad de la lógica difusa en una aplicación real de Control.

C. Conclusiones y trabajo futuro

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.

Se pueden mencionar las siguientes propuestas de mejora:

- Mezclar funciones de membresía triangular con trapezoidal, o utilizar otra de las

formas conocidas.

Página 109 de 143

Page 110: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

- Realizar la definición de funciones de membresía utilizando técnicas de inteligencia

artificial, tal como algoritmos genéticos.

- Permitir al usuario elegir entre diferentes métodos de defuzzificación.

- Utilizar redes neuronales artificiales y algoritmos genéticos para la definición de la

base de reglas lingüísticas y para su evaluación.

El paso inmediato en cuanto a la mejora de la simulación es utilizar una interfase de

adquisición de datos, para proporcionar las lecturas de los sensores, utilizando los puertos

de entrada de la misma y utilizar los puertos de salida de la interfase para las acciones del

controlador.

Página 110 de 143

Page 111: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

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.

Fuzzy Logic & Neurofuzzy Applications Explained. Constantin Von Altrock.

Pensamiento borroso: La nueva ciencia de la lógica borrosa, Barcelona,

Grijalbo/Mondadori.

G. Fernández y F. Sáez-Vacas. Fundamentos de Informática, Alianza-

Informática, Madrid, 1987.

Arquitectura para sistemas expertos con razonamiento aproximado, Tesis

Doctoral, J. C. González. Dpto. Ing. Sistemas Telemáticos, E.T.S.I.

Telecomunicación, Universidad Politécnica, Madrid, 1989.

An Interface Between Logic and Human Reasoning. Kosko, B. 1995.

Ingeniería de Control Moderna, Ogata, Katsuhiko, Prentice Hall

Hispanoamericana, México, D.F., 1980.

Fuzzy Logic: Concepts to constructs , Viot Greg, AI Expert, Noviembre 1993.

La Física en preguntas y respuestas. J. Goldstein, E. Insogna. Buenos Aires

1953.

Diseño de un controlador difuso para temperatura, Tesis profesional, Andrade

G. Enrique, Ingenieria en Electrónica y Computadoras, Universidad de las

Américas, Puebla, México, 1996.

La esencia del caos, Lorenz, E. N. Madrid, Debate. 1995.

Fuzzy Expert Systems, E. Horstkotte. 1996.

Desarrollo del software para controlar la temperatura y humedad relativa en

invernaderos usando logica difusa. J.Isabel Galvez Esteban, Universidad

Autonoma de Tlaxcala, Mexico, 1997.

Abstracts y Articulos varios en IEEE Expert, Intelligent Systems & Their Appli-

cations. A Fuzzy Logic Symposium.

Página 111 de 143

Page 112: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Anexos

Proyecto A-B FlexNombre: Fuzzy.abf[InferenceOptions]FuzzyAlgorithm=And=0,Or=0,Defuzz=0KeywordSet=0

[SystemParameters]NumberOfInputs=9NumberOfOutputs=2NumberOfRules=38TimeOfLastChange=1157004394

[Input#0]Name=VelocidadRange=0,5DefaultValue=0Description=Velocidad del carritoNumberOfMFs=5MF#0=cero:0,0,0,0.854839MF#1=muy_lenta:0,0.804839,0.804839,1.87094MF#2=lenta:0.854839,1.94758,1.94758,3.14919MF#3=mediana:1.87097,3.17742,3.17742,4.57258MF#4=rapida:3.14113,5,5,5

[Input#1]Name=Angulo_arbol_3Range=-180,180DefaultValue=0Description=Angulo al arbol 3NumberOfMFs=5MF#0=muy_negativo:-180,-180,-90,-30MF#1=poco_negativo:-60,-30,-30,0MF#2=cero:-30,0,0,30MF#3=poco_positivo:0,30,30,60MF#4=muy_positivo:30,90,180,180

[Input#2]Name=Angulo_arbol_2Range=-180,180DefaultValue=0Description=Angulo al arbolNumberOfMFs=5MF#0=muy_negativo:-180,-180,-90,-30MF#1=poco_negativo:-60,-30,-30,0MF#2=cero:-30,0,0,30MF#3=poco_positivo:0,30,30,60MF#4=muy_positivo:30,90,180,180

[Input#3]Name=Angulo_arbol_1Range=-180,180DefaultValue=0Description=Angulo al arbol 1NumberOfMFs=5MF#0=muy_negativo:-180,-180,-90,-30MF#1=poco_negativo:-60,-30,-30,0MF#2=cero:-30,0,0,30MF#3=poco_positivo:0,30,30,60MF#4=muy_positivo:30,90,180,180

[Input#4]Name=Distancia_arbol_2Range=0,1000DefaultValue=0

Página 112 de 143

Page 113: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Description=Distancia al arbol 2NumberOfMFs=1MF#0=proxima:0,0,0,70

[Input#5]Name=Distancia_arbol_1Range=0,1000DefaultValue=0Description=Distancia al arbol 1NumberOfMFs=1MF#0=proxima:0,0,0,70

[Input#6]Name=Distancia_arbol_3Range=0,1000DefaultValue=0Description=Distancia al arbol 3NumberOfMFs=1MF#0=proxima:0,0,0,70

[Input#7]Name=Distancia_pelotaRange=0,600DefaultValue=0Description=Distancia a la pelotaNumberOfMFs=5MF#0=cero:0,0,3,9MF#1=muy_proxima:0.483871,12.9677,13.4516,27.6774MF#2=proxima:11.0323,46.8733,46.8733,90.6614MF#3=mediana:36.712,115.629,115.629,208.05MF#4=lejana:127.55,217.55,560.265,560.265

[Input#8]Name=Angulo_errorRange=-180,180DefaultValue=0Description=Angulo de errorNumberOfMFs=5MF#0=muy_negativo:-180,-180,-90,-30MF#1=poco_negativo:-60,-30,-30,0MF#2=cero:-30,0,0,30MF#3=poco_positivo:0,30,30,60MF#4=muy_positivo:30,90,180,180

[Output#0]Name=AceleracionRange=-2,1DefaultValue=0Description=Aceleracion del carritoNumberOfMFs=6MF#0=frenar_fuerte:-2,-2,-1.5,-1MF#1=frenar_levemente:-1.5,-1,-1,-0.5MF#2=marcha_libre:-1,-0.5,-0.5,0MF#3=cero:-0.5,0,0,0.5MF#4=leve:0,0.5,0.5,1MF#5=a_fondo:0.5,1,1,1

[Output#1]Name=Angulo_direccionRange=-45,45DefaultValue=0Description=Angulo de direccionNumberOfMFs=5MF#0=mucho_derecha:-44.881,-44.881,-37.9762,-27.1429MF#1=poco_derecha:-35.9524,-17.8334,-17.5953,-0.928605MF#2=cero:-16.6913,0.119048,0.119048,16.9294MF#3=poco_izquierda:1.16379,17.8777,17.8777,35.6835MF#4=mucho_izquierda:26.7857,35,45,45

[Text]NumberOfItems=69

Página 113 de 143

Page 114: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

I#0=C1:-- REGLAS para el manejo de la direcciónI#1=C1:-- REGLA 1M - Mantener la dirección de marchaI#2=C1:-- La Distancia_arbol is not proxima indica el complemento del unico valor para esta variable. Se en-tiende por esto que Distancia_arbol es LejanaI#3=C1:-- El Angulo_arbol is not cero indica que el carrito no tiene en su camino ningun arbol, si lo tuviese enfrente el angulo seria cero y no podria mentener la marchaI#4=R1:1.00 Angulo_error = cero & Distancia_arbol_1 <> proxima & Angulo_arbol_1 <> cero --> Angulo_direccion = ceroI#5=R1:1.00 Angulo_error = cero & Distancia_arbol_2 <> proxima & Angulo_arbol_2 <> cero --> Angulo_direccion = ceroI#6=R1:1.00 Angulo_error = cero & Distancia_arbol_3 <> proxima & Angulo_arbol_3 <> cero --> Angulo_direccion = ceroI#7=C1:-- REGLA 2M - Modificar la dirección de marcha ligeramente hacia la derechaI#8=R1:1.00 Angulo_error = poco_positivo & Distancia_arbol_1 <> proxima & Angulo_arbol_1 <> cero --> Angulo_direccion = poco_derechaI#9=R1:1.00 Angulo_error = poco_positivo & Distancia_arbol_2 <> proxima & Angulo_arbol_2 <> cero --> Angulo_direccion = poco_derechaI#10=R1:1.00 Angulo_error = poco_positivo & Distancia_arbol_3 <> proxima & Angulo_arbol_3 <> cero --> Angulo_direccion = poco_derechaI#11=C1:-- REGLA 3M - Modificar la dirección de marcha ligeramente hacia la izquierdaI#12=R1:1.00 Angulo_error = poco_negativo & Distancia_arbol_1 <> proxima & Angulo_arbol_1 <> cero --> Angulo_direccion = poco_izquierdaI#13=R1:1.00 Angulo_error = poco_negativo & Distancia_arbol_2 <> proxima & Angulo_arbol_2 <> cero --> Angulo_direccion = poco_izquierdaI#14=R1:1.00 Angulo_error = poco_negativo & Distancia_arbol_3 <> proxima & Angulo_arbol_3 <> cero --> Angulo_direccion = poco_izquierdaI#15=C1:-- REGLA 4M - Modificar la dirección de marcha ligeramente hacia la derecha, no hace falta doblar mucho porque si la velocidad es rapida es porque esta lejos de la pelota.I#16=R1:1.00 Angulo_error = muy_positivo & Velocidad = rapida --> Angulo_direccion = poco_derechaI#17=C1:-- REGLA 5M - Modificar la dirección de marcha mucho hacia la derecha, hace falta doblar mucho porque si la velocidad no es rapida es porque esta cerca de la pelota.I#18=R1:1.00 Angulo_error = muy_positivo & Velocidad <> rapida --> Angulo_direccion = mucho_derechaI#19=C1:-- REGLA 6M - Modificar la dirección de marcha ligeramente hacia la izquierdaI#20=R1:1.00 Angulo_error = muy_negativo & Velocidad = rapida --> Angulo_direccion = poco_izquierdaI#21=C1:-- REGLA 7M - Modificar la dirección de marcha mucho hacia la izquierdaI#22=R1:1.00 Angulo_error = muy_negativo & Velocidad <> rapida --> Angulo_direccion = mucho_izquier-daI#23=C1:-- REGLAS para la AceleraciónI#24=C1:-- REGLA 1A - Frenar levemente porque se alejaI#25=R1:1.00 Angulo_error = muy_positivo & Velocidad = rapida --> Aceleracion = frenar_levementeI#26=C1:-- REGLA 2A - Frenar levemente porque se alejaI#27=R1:1.00 Angulo_error = muy_negativo & Velocidad = rapida --> Aceleracion = frenar_levementeI#28=C1:-- REGLA 3A - Acelerar a fondo porque la pelota esta lejos y puede alcanzar mas velocidadI#29=R1:1.00 Distancia_pelota = lejana & Velocidad <> rapida --> Aceleracion = a_fondoI#30=C1:-- REGLA 4A - Hacer Aceleración cero, no acelera mas porque va a velocidad maximaI#31=R1:1.00 Distancia_pelota = lejana & Velocidad = rapida --> Aceleracion = ceroI#32=C1:-- REGLA 5A - Aceleración leve, aun faltando llegar a la pelota, se acelera levemente porque hay velocidad que incrementarI#33=R1:1.00 Distancia_pelota = mediana & Velocidad <> rapida --> Aceleracion = leveI#34=C1:-- REGLA 6A - Hacer Aceleración cero, no acelera mas porque va a velocidad maximaI#35=R1:1.00 Distancia_pelota = mediana & Velocidad = rapida --> Aceleracion = ceroI#36=C1:-- REGLA 7A - Frenar levemente, como se aproxima al objetivo, desacelera muy poco dejando en marcha_libre, suponiendo que se frena por rozamiento.I#37=R1:1.00 Distancia_pelota = proxima & Velocidad = rapida --> Aceleracion = marcha_libreI#38=C1:-- REGLA 8A - Aceleración leve, cerca de la pelota, y al quedarse sin velocidad, acelera levementeI#39=R1:1.00 Distancia_pelota = proxima & Velocidad = cero --> Aceleracion = leveI#40=C1:-- REGLA 9A - Frenar fuerte, casi en el objetivo y con velocidad rapida, va frenandoI#41=R1:1.00 Distancia_pelota = muy_proxima & Velocidad = rapida --> Aceleracion = frenar_levementeI#42=C1:-- REGLA 10A - Frenar levemente, casi en el objetivo y con velocidad mediana, frena de a pocoI#43=R1:0.75 Distancia_pelota = muy_proxima & Velocidad = mediana --> Aceleracion = marcha_libreI#44=C1:-- REGLA 11A - Marcha libre, casi en el objetivo y con velocidad lenta, minima aceleracion para detenerse por rozamiento.I#45=R1:1.00 Distancia_pelota = muy_proxima & Velocidad = lenta --> Aceleracion = ceroI#46=C1:-- REGLA 12A - Aceleración cero, casi en el objetivo, y casi sin velocidad, mantiene la misma al no acelerar.I#47=R1:1.00 Distancia_pelota = muy_proxima & Velocidad = muy_lenta --> Aceleracion = ceroI#48=C1:-- REGLA 13A - Aceleración leve, cuando llego al objetivo sin velocidad, freno apenas para dete-nerme.I#49=R1:1.00 Distancia_pelota = cero & Velocidad = cero --> Aceleracion = frenar_fuerteI#50=C1:-- REGLA 14A - Frenar fuerte, cuando llego asl objetivo con minima velocidad, freno para detener-me.

Página 114 de 143

Page 115: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

I#51=R1:1.00 Distancia_pelota = cero & Velocidad = muy_lenta --> Aceleracion = frenar_fuerteI#52=C1:-- REGLA 15A - Marcha libre, si falta poco para llegar al objetivo y tengo algo de velocidad, acele-ro poco.I#53=R1:1.00 Distancia_pelota = proxima & Velocidad = mediana --> Aceleracion = ceroI#54=C1:-- REGLA 16A - Aceleración cero, si estoy proximo a llegar y la velocidad es lenta, no innovo y mantengo velocidad crucero.I#55=R1:1.00 Distancia_pelota = proxima & Velocidad = lenta --> Aceleracion = ceroI#56=C1:-- REGLAS para esquivar el árbolI#57=C1:-- REGLA 1T - Girar ligeramente hacia la izquierda para esquivar el árbol, al comenzar a aproxi-marse al arbolI#58=R1:1.00 Distancia_arbol_1 = proxima & Angulo_arbol_1 = poco_positivo --> Angulo_direccion = po-co_izquierdaI#59=R1:1.00 Distancia_arbol_2 = proxima & Angulo_arbol_2 = poco_positivo --> Angulo_direccion = po-co_izquierdaI#60=R1:1.00 Distancia_arbol_3 = proxima & Angulo_arbol_3 = poco_positivo --> Angulo_direccion = po-co_izquierdaI#61=C1:-- REGLA 2T - Girar ligeramente hacia la derecha para esquivar el árbol, al comenzar a aproximarse al arbolI#62=R1:1.00 Distancia_arbol_1 = proxima & Angulo_arbol_1 = poco_negativo --> Angulo_direccion = po-co_derechaI#63=R1:1.00 Distancia_arbol_2 = proxima & Angulo_arbol_2 = poco_negativo --> Angulo_direccion = po-co_derechaI#64=R1:1.00 Distancia_arbol_3 = proxima & Angulo_arbol_3 = poco_negativo --> Angulo_direccion = po-co_derechaI#65=C1:-- REGLA 2T - Frenar fuerte para esquivar el árbol, que esta cerca y en el camino del carrito.I#66=R1:1.00 Distancia_arbol_1 = proxima & Angulo_arbol_1 = cero --> Aceleracion = frenar_fuerteI#67=R1:1.00 Distancia_arbol_2 = proxima & Angulo_arbol_2 = cero --> Aceleracion = frenar_fuerteI#68=R1:1.00 Distancia_arbol_3 = proxima & Angulo_arbol_3 = cero --> Aceleracion = frenar_fuerte

Página 115 de 143

Page 116: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Archivo de Inicialización para proyecto A-B FlexNombre: Fuzzy.ini[ProjectWindow]Window=X=149,Y=33,W=415,H=302,Iconic=0,Zoomed=0ProjectWindowState=SelInput=8,SelOutput=0[LastMatlabGen]TargetFile=c:\guille\fuzzyl~1\tesis\fuzzy.mTemplate=LastChangeTime=117901063HasRangeMap=0[RuleWindow]Window=X=125,Y=102,W=680,H=484,Iconic=0,Zoomed=0RuleWindowState=ShowGraph=1,TextRatio=0.7[InputWindow:Velocidad]Window=X=148,Y=330,W=199,H=179,Iconic=0,Zoomed=0PortState=MF=1,ViewRange=0,5[InputWindow:Angulo_arbol_1]Window=X=92,Y=100,W=199,H=179,Iconic=0,Zoomed=0PortState=MF=0,ViewRange=-180,180[InputWindow:Distancia_arbol_1]Window=X=23,Y=25,W=199,H=179,Iconic=0,Zoomed=0PortState=MF=0,ViewRange=0,1000[InputWindow:Distancia_pelota]Window=X=0,Y=0,W=199,H=179,Iconic=0,Zoomed=0PortState=MF=3,ViewRange=0,600[OutputWindow:Aceleracion]Window=X=537,Y=233,W=199,H=179,Iconic=0,Zoomed=0PortState=MF=0,ViewRange=-2,1[OutputWindow:Angulo_direccion]Window=X=598,Y=73,W=199,H=179,Iconic=0,Zoomed=0PortState=MF=0,ViewRange=-45,45

Página 116 de 143

Page 117: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Código Fuente de Visual Basic para los Formularios del Proyecto Nombre: MDIFuzzy.frmVERSION 5.00Object = "{0BA686C6-F7D3-101A-993E-0000C0EF6F5E}#1.0#0"; "THREED32.OCX"Begin VB.MDIForm MDIFuzzy BackColor = &H8000000C& Caption = "Carrito de Golf" ClientHeight = 6555 ClientLeft = 1215 ClientTop = 2205 ClientWidth = 10530 LinkTopic = "MDIFuzzy" Begin VB.Timer Timer1 Left = 0 Top = 330 End Begin Threed.SSPanel Barra_est Align = 1 'Align Top Height = 315 Left = 0 TabIndex = 0 Top = 0 Width = 10530 _Version = 65536 _ExtentX = 18574 _ExtentY = 556 _StockProps = 15 Caption = "Exportando datos al Excel" BackColor = 9476264 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 BevelInner = 1 FloodType = 1 End Begin VB.Menu Ubicar Caption = "Ubicar" End Begin VB.Menu Comenzar Caption = "Comenzar" End Begin VB.Menu Salir Caption = "Salir" End Begin VB.Menu Reiniciar Caption = "Reiniciar" EndEndAttribute VB_Name = "MDIFuzzy"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False

Private Sub Comenzar_Click()'ACEPTA SEGUIR SI FUERON UBICADOS LOS OBJETOSIf Ubica = False Then Exit SubOn Error Resume Next

Página 117 de 143

Page 118: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

'ACEPTA ENTRADA DE DISTANCIA MINIMA Y VELOCIDAD MINIMA PARA PARAR LA SIMULA-CION'Dist_ini = InputBox("Ingrese distancia minima a la pelota para parar la simulacion:", "Distancia Pelota", Str(5))Dist_ini = 5

'Vel_ini = InputBox("Ingrese velocidad minima para parar la simulacion:", "Velocidad", Str(0))Vel_ini = 0On Error GoTo 0'SETEA POSICION Y TAMAÑO FORMULARIO FUZZYFuzzy2.Top = 100Fuzzy2.Left = 6600'REDEFINE X E Y SEGUN EL TAMAÑO DEL CUERPO DEL CARRITOX = Fuzzy1.Carrito.Left + Fuzzy1.Carrito.Width / 2Xinicial = XY = Fuzzy1.Carrito.Top + Fuzzy1.Carrito.Height / 2Yinicial = Y'GUARDA EN LAS VARIABLES LAS POSICIONES DE LOS OBJETOSX11 = Fuzzy1.Arbol_1.Left + Fuzzy1.Arbol_1.Width / 2Y11 = Fuzzy1.Arbol_1.Top + Fuzzy1.Arbol_1.Height / 2X12 = Fuzzy1.Arbol_2.Left + Fuzzy1.Arbol_2.Width / 2Y12 = Fuzzy1.Arbol_2.Top + Fuzzy1.Arbol_2.Height / 2X13 = Fuzzy1.Arbol_3.Left + Fuzzy1.Arbol_3.Width / 2Y13 = Fuzzy1.Arbol_3.Top + Fuzzy1.Arbol_3.Height / 2X2 = Fuzzy1.Pelota.Left + Fuzzy1.Pelota.Width / 2Y2 = Fuzzy1.Pelota.Top + Fuzzy1.Pelota.Height / 2'ACEPTA ENTRADA PARA MANEJO MANUAL O POR EL CONTROLADOR DIFUSO ' RESPUESTA = MsgBox("¿Desea manejar el carrito de forma manual?", vbYesNo + vbCritical + vbDefaul-tButton2, "Seleccionar opcion de comienzo: ")RESPUESTA = 1If RESPUESTA = 6 Then'SI ES MANUAL DETECTA EVENTOS DEL TECLADO PARA LA NAVEGACION CADA SEGUNDO Manual = True Timer1.Interval = 1000 Fuzzy1.KeyPreview = True Fuzzy2.KeyPreview = TrueElse'SI ES POR MEDIO DEL CONTROLADOR DIFUSO NO DETECTA EVENTOS DEL TECLADO Manual = False Timer1.Interval = 0 Fuzzy1.KeyPreview = False Fuzzy2.KeyPreview = False'ESTABLECE LA COMUNICACION DDE CON EXCEL Fuzzy2.Text_Velocidad.LinkMode = 2 Fuzzy2.Text_Angulo_arbol_1.LinkMode = 2 Fuzzy2.Text_Distancia_arbol_1.LinkMode = 2 Fuzzy2.Text_Angulo_arbol_2.LinkMode = 2 Fuzzy2.Text_Distancia_arbol_2.LinkMode = 2 Fuzzy2.Text_Angulo_arbol_3.LinkMode = 2 Fuzzy2.Text_Distancia_arbol_3.LinkMode = 2 Fuzzy2.Text_Angulo_error.LinkMode = 2 Fuzzy2.Text_Distancia_pelota.LinkMode = 2 Fuzzy2.Label_Angulo_direccion.LinkMode = 2 Fuzzy2.Label_Aceleracion.LinkMode = 2'COMIENZA EL CICLO DE SIMULACION Call iteracionEnd IfEnd Sub

Private Sub MDIForm_Load()Ubica = False'OCULTA BARRA DE ESTADO PARA ESTADISTICASMDIFuzzy.Barra_est.Visible = FalseCall Ubicar_ClickCall Comenzar_ClickEnd Sub

Private Sub Reiniciar_Click()Call MDIForm_LoadX = Xinicial

Página 118 de 143

Page 119: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Y = YinicialEnd Sub

Private Sub Salir_Click()'TERMINA LA APLICACIONEndEnd Sub

Private Sub Timer1_Timer()'POR CADA SEGUNDO LLAMA AL ALGORITMO DE SIMULACION, AUNQUE NO'SE HAYA PRESIONADO UNA TECLA PARA CAMBIOS EN LA NAVEGACIONCall iteracionEnd Sub

Private Sub Ubicar_Click()Ubica = True'MAXIMIZA FORMULARIO PRINCIPAL'Me.WindowState = 2'SETEA POSICION Y TAMAÑO DEL FORMULARIO SIMULACIONFuzzy1.Left = 0Fuzzy1.Top = 0Fuzzy1.ShowFuzzy1.ScaleMode = 0'TAMAÑO DEL CAMPO DE GOLFFuzzy1.ScaleHeight = 600Fuzzy1.ScaleWidth = 600Fuzzy1.RefreshEnd Sub

Página 119 de 143

Page 120: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Nombre: Fuzzy1.frmVERSION 5.00Object = "{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

Página 120 de 143

Page 121: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

End Begin VB.PictureBox Pelota BackColor = &H00FFFFFF& DragIcon = "Fuzzy1.frx":0CC6 DragMode = 1 'Automatic FillColor = &H00FFFFFF& FillStyle = 0 'Solid ForeColor = &H00FFFFFF& Height = 135 Left = 660 ScaleHeight = 0.132 ScaleMode = 0 'User ScaleWidth = 0.132 TabIndex = 2 Top = 4140 Width = 135 End Begin GaugeLib.Gauge Carrito DragIcon = "Fuzzy1.frx":1108 DragMode = 1 'Automatic Height = 330 Left = 4140 TabIndex = 8 Top = 210 Width = 360 _Version = 65536 _ExtentX = 635 _ExtentY = 582 _StockProps = 73 ForeColor = 65280 InnerTop = 0 InnerRight = 0 InnerBottom = 0 Max = 360 Style = 3 NeedleWidth = 2 End Begin VB.Label Label1 BackStyle = 0 'Transparent Caption = "Angulo_auto=" ForeColor = &H00FFFFFF& Height = 255 Left = 4230 TabIndex = 10 Top = 5280 Width = 1065 End Begin VB.Label Label_angulo_auto BackStyle = 0 'Transparent ForeColor = &H00FFFFFF& Height = 255 Left = 5370 TabIndex = 9 Top = 5280 Width = 495 End Begin VB.Label Label4 BackStyle = 0 'Transparent Caption = "Y=" ForeColor = &H00FFFFFF& Height = 255 Left = 5010 TabIndex = 7 Top = 300 Width = 225 End Begin VB.Label Label3 BackStyle = 0 'Transparent Caption = "X=" ForeColor = &H00FFFFFF& Height = 255

Página 121 de 143

Page 122: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Left = 5010 TabIndex = 6 Top = 30 Width = 225 End Begin VB.Label Label_y BackStyle = 0 'Transparent ForeColor = &H00FFFFFF& Height = 255 Left = 5310 TabIndex = 1 Top = 300 Width = 495 End Begin VB.Label Label_x BackStyle = 0 'Transparent ForeColor = &H00FFFFFF& Height = 255 Left = 5310 TabIndex = 0 Top = 30 Width = 495 EndEndAttribute VB_Name = "Fuzzy1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False

Private Sub Form_DblClick()If Ubica = True Then Ubica = FalseElse Ubica = TrueEnd If

Do While Ubica = False DoEventsLoopEnd Sub

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)'CAMBIA POSICION DEL OBJETO ARRASTRADO SOBRE EL FORMULARIOSource.Left = X + Source.Width / 2Source.Top = Y + Source.Height / 2X11 = Fuzzy1.Arbol_1.Left + Fuzzy1.Arbol_1.Width / 2Y11 = Fuzzy1.Arbol_1.Top + Fuzzy1.Arbol_1.Height / 2X12 = Fuzzy1.Arbol_2.Left + Fuzzy1.Arbol_2.Width / 2Y12 = Fuzzy1.Arbol_2.Top + Fuzzy1.Arbol_2.Height / 2X13 = Fuzzy1.Arbol_3.Left + Fuzzy1.Arbol_3.Width / 2Y13 = Fuzzy1.Arbol_3.Top + Fuzzy1.Arbol_3.Height / 2X2 = Fuzzy1.Pelota.Left + Fuzzy1.Pelota.Width / 2Y2 = Fuzzy1.Pelota.Top + Fuzzy1.Pelota.Height / 2

DoEventsEnd Sub

Private Sub Form_DragOver(Source As Control, X As Single, Y As Single, State As Integer)''End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Página 122 de 143

Page 123: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

'SI SE PRESIONA UNA TECLA EN LA MODALIDAD MANUAL:Select Case KeyCode'ACELERA=FLECHA ARRIBACase 38 If Aceleracion < 1 Then Aceleracion = Format(Aceleracion + 0.1, "0.00")'DOBLA IZQUIERDA=FLECHA IZQUIERDACase 37 If Angulo_direccion > -45 Then Angulo_direccion = Angulo_direccion - 1'DOBLA DERECHA=FLECHA DERECHACase 39 If Angulo_direccion < 45 Then Angulo_direccion = Angulo_direccion + 1'DESACELERA=FLECHA ABAJOCase 40 If Aceleracion > -2 Then Aceleracion = Format(Aceleracion - 0.1, "0.00")End SelectEnd Sub

Página 123 de 143

Page 124: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Nombre: Fuzzy2.frmVERSION 5.00Object = "{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

Página 124 de 143

Page 125: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty BorderWidth = 1 BevelOuter = 1 FloodType = 3 FloodColor = 255 End Begin Threed.SSPanel Constante_flow Height = 255 Left = 1800 TabIndex = 7 Top = 1350 Width = 375 _Version = 65536 _ExtentX = 661 _ExtentY = 450 _StockProps = 15 ForeColor = 16777215 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 Begin VB.Label Label36 BackStyle = 0 'Transparent Caption = "0" Height = 195 Left = 120 TabIndex = 47 Top = 30 Width = 165 End End Begin GaugeLib.Gauge Rueda1 Height = 405 Left = 390 TabIndex = 51 Top = 990 Width = 495 _Version = 65536 _ExtentX = 873 _ExtentY = 714 _StockProps = 73 BackColor = 4210752 InnerBottom = 10 Max = 90 Style = 2 NeedleWidth = 4 End Begin GaugeLib.Gauge Rueda2 Height = 405 Left = 870 TabIndex = 52 Top = 990 Width = 495 _Version = 65536 _ExtentX = 873 _ExtentY = 714 _StockProps = 73 BackColor = 4210752 InnerBottom = 10

Página 125 de 143

Page 126: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Max = 90 Style = 2 Autosize = -1 'True NeedleWidth = 4 End Begin VB.Shape Shape5 FillColor = &H00C0C0C0& FillStyle = 0 'Solid Height = 225 Left = 1110 Shape = 4 'Rounded Rectangle Top = 1890 Width = 105 End Begin VB.Shape Shape3 FillColor = &H0080FFFF& FillStyle = 0 'Solid Height = 165 Left = 1020 Shape = 2 'Oval Top = 930 Width = 255 End Begin VB.Shape Shape4 FillColor = &H00C0C0C0& FillStyle = 0 'Solid Height = 225 Left = 510 Shape = 4 'Rounded Rectangle Top = 1890 Width = 105 End Begin VB.Shape Shape14 BackColor = &H00FFFFFF& FillStyle = 0 'Solid Height = 855 Left = 390 Top = 1380 Width = 975 End Begin VB.Shape Shape6 FillColor = &H0080FFFF& FillStyle = 0 'Solid Height = 165 Left = 480 Shape = 2 'Oval Top = 930 Width = 255 End Begin VB.Label Label14 Caption = "0" Height = 195 Left = 810 TabIndex = 55 Top = 750 Width = 105 End Begin VB.Label Label12 Caption = "45" Height = 195 Left = 1380 TabIndex = 54 Top = 1260 Width = 225 End Begin VB.Label Label11 Caption = "-45" Height = 195 Left = 120 TabIndex = 53 Top = 1260

Página 126 de 143

Page 127: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Width = 285 End Begin VB.Label Label37 Caption = "-2" Height = 195 Left = 1890 TabIndex = 48 Top = 2190 Width = 285 End Begin VB.Label Label35 Caption = "1" Height = 255 Left = 1920 TabIndex = 46 Top = 780 Width = 225 End Begin VB.Label Label8 Caption = "Angulo_direccion" ForeColor = &H000000FF& Height = 255 Left = 270 TabIndex = 30 Top = 270 Width = 1305 End Begin VB.Label Label_Angulo_direccion ForeColor = &H00000000& Height = 255 Left = 1620 LinkItem = "Angulo_direccion" LinkTopic = "Excel|fuzzy" TabIndex = 29 Top = 270 Width = 435 End Begin VB.Label Label13 Caption = "º" ForeColor = &H00000000& Height = 195 Left = 2040 TabIndex = 28 Top = 300 Width = 165 End Begin VB.Label Label1 Caption = "m/s2" ForeColor = &H00000000& Height = 255 Left = 1800 TabIndex = 6 Top = 510 Width = 405 End Begin VB.Label Label7 Caption = "Aceleracion" ForeColor = &H000000FF& Height = 255 Left = 270 TabIndex = 2 Top = 510 Width = 885 End Begin VB.Label Label_Aceleracion ForeColor = &H00000000& Height = 255 Left = 1290 LinkItem = "Aceleracion" LinkTopic = "Excel|fuzzy" TabIndex = 1

Página 127 de 143

Page 128: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Top = 510 Width = 405 End Begin VB.Shape Shape15 FillColor = &H000000FF& FillStyle = 0 'Solid Height = 165 Left = 480 Shape = 4 'Rounded Rectangle Top = 2100 Width = 195 End Begin VB.Shape Shape7 FillColor = &H000000FF& FillStyle = 0 'Solid Height = 165 Left = 1080 Shape = 4 'Rounded Rectangle Top = 2100 Width = 195 End End Begin VB.Frame Frame_entradas Caption = "Entradas" Height = 3315 Left = 0 TabIndex = 3 Top = -30 Width = 2445 Begin VB.TextBox Text_Velocidad Appearance = 0 'Flat BackColor = &H00C0C0C0& BorderStyle = 0 'None Height = 285 Left = 1590 LinkItem = "Velocidad" LinkTopic = "excel|fuzzy" TabIndex = 43 Top = 2940 Width = 435 End Begin VB.TextBox Text_Distancia_pelota Appearance = 0 'Flat BackColor = &H00C0C0C0& BorderStyle = 0 'None ForeColor = &H00000000& Height = 195 Left = 1470 LinkItem = "Distancia_pelota" LinkTopic = "excel|fuzzy" TabIndex = 40 Top = 1500 Width = 675 End Begin VB.TextBox Text_Angulo_error Appearance = 0 'Flat BackColor = &H00C0C0C0& BorderStyle = 0 'None ForeColor = &H00000000& Height = 195 Left = 1470 LinkItem = "Angulo_error" LinkTopic = "excel|fuzzy" TabIndex = 37 Top = 1710 Width = 675 End Begin VB.TextBox Text_Angulo_arbol_1 Appearance = 0 'Flat BackColor = &H00C0C0C0& BorderStyle = 0 'None

Página 128 de 143

Page 129: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

ForeColor = &H00000000& Height = 195 Left = 1470 LinkItem = "Angulo_arbol_1" LinkTopic = "excel|fuzzy" TabIndex = 20 Top = 240 Width = 675 End Begin VB.TextBox Text_Distancia_arbol_1 Appearance = 0 'Flat BackColor = &H00C0C0C0& BorderStyle = 0 'None ForeColor = &H00000000& Height = 195 Left = 1470 LinkItem = "Distancia_arbol_1" LinkTopic = "excel|fuzzy" TabIndex = 19 Top = 450 Width = 675 End Begin VB.TextBox Text_Distancia_arbol_2 Appearance = 0 'Flat BackColor = &H00C0C0C0& BorderStyle = 0 'None ForeColor = &H00000000& Height = 195 Left = 1470 LinkItem = "Distancia_arbol_2" LinkTopic = "excel|fuzzy" TabIndex = 18 Top = 870 Width = 675 End Begin VB.TextBox Text_Angulo_arbol_2 Appearance = 0 'Flat BackColor = &H00C0C0C0& BorderStyle = 0 'None ForeColor = &H00000000& Height = 195 Left = 1470 LinkItem = "Angulo_arbol_2" LinkTopic = "excel|fuzzy" TabIndex = 17 Top = 660 Width = 675 End Begin VB.TextBox Text_Distancia_arbol_3 Appearance = 0 'Flat BackColor = &H00C0C0C0& BorderStyle = 0 'None ForeColor = &H00000000& Height = 195 Left = 1470 LinkItem = "Distancia_arbol_3" LinkTopic = "excel|fuzzy" TabIndex = 16 Top = 1290 Width = 675 End Begin VB.TextBox Text_Angulo_arbol_3 Appearance = 0 'Flat BackColor = &H00C0C0C0& BorderStyle = 0 'None ForeColor = &H00000000& Height = 195 Left = 1470 LinkItem = "Angulo_arbol_3" LinkTopic = "excel|fuzzy" TabIndex = 15

Página 129 de 143

Page 130: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Top = 1080 Width = 675 End Begin GaugeLib.Gauge Velocimetro Height = 495 Left = 735 TabIndex = 8 Top = 2385 Width = 870 _Version = 65536 _ExtentX = 1535 _ExtentY = 873 _StockProps = 73 ForeColor = 0 BackColor = 0 Max = 5 Style = 2 NeedleWidth = 2 End Begin VB.Label Label3 Caption = "Velocidad" ForeColor = &H00FF00FF& Height = 255 Left = 90 TabIndex = 45 Top = 2940 Width = 795 End Begin VB.Label Label25 Caption = "m/s" ForeColor = &H00000000& Height = 255 Left = 2100 TabIndex = 44 Top = 2940 Width = 315 End Begin VB.Shape Shape2 BackColor = &H00FFFFFF& BorderStyle = 0 'Transparent FillColor = &H00C0C0C0& FillStyle = 0 'Solid Height = 375 Left = 60 Top = 2880 Width = 2355 End Begin VB.Label Label34 Caption = "m" Height = 255 Left = 2190 TabIndex = 42 Top = 1500 Width = 195 End Begin VB.Label Label5 Caption = "Distancia_pelota" ForeColor = &H00FF00FF& Height = 195 Left = 90 TabIndex = 41 Top = 1500 Width = 1455 End Begin VB.Label Label33 Caption = "º" Height = 255 Left = 2190 TabIndex = 39 Top = 1740 Width = 165

Página 130 de 143

Page 131: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

End Begin VB.Label Label6 Caption = "Angulo_error" ForeColor = &H00FF00FF& Height = 165 Left = 90 TabIndex = 38 Top = 1710 Width = 1005 End Begin VB.Label Label32 Caption = "m" Height = 255 Left = 2190 TabIndex = 36 Top = 1290 Width = 195 End Begin VB.Label Label31 Caption = "m" Height = 255 Left = 2190 TabIndex = 35 Top = 870 Width = 195 End Begin VB.Label Label30 Caption = "m" Height = 255 Left = 2190 TabIndex = 34 Top = 450 Width = 225 End Begin VB.Label Label29 Caption = "º" Height = 255 Left = 2190 TabIndex = 33 Top = 1110 Width = 165 End Begin VB.Label Label28 Caption = "º" Height = 255 Left = 2190 TabIndex = 32 Top = 690 Width = 165 End Begin VB.Label Label27 Caption = "º" Height = 255 Left = 2190 TabIndex = 31 Top = 270 Width = 165 End Begin VB.Label Label26 BackColor = &H00404040& Caption = "m/s" BeginProperty Font Name = "Small Fonts" Size = 6.75 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00FFFFFF&

Página 131 de 143

Page 132: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Height = 255 Left = 1020 TabIndex = 27 Top = 2220 Width = 285 End Begin VB.Label Label2 Caption = "Distancia_arbol_1" ForeColor = &H0000FF00& Height = 195 Left = 90 TabIndex = 26 Top = 450 Width = 1455 End Begin VB.Label Label4 Caption = "Angulo_arbol_1" ForeColor = &H0000FF00& Height = 225 Left = 90 TabIndex = 25 Top = 240 Width = 1185 End Begin VB.Label Label15 BackColor = &H00C0C0C0& Caption = "Angulo_arbol_2" ForeColor = &H0000FFFF& Height = 225 Left = 90 TabIndex = 24 Top = 660 Width = 1215 End Begin VB.Label Label16 BackColor = &H00C0C0C0& Caption = "Distancia_arbol_2" ForeColor = &H0000FFFF& Height = 195 Left = 90 TabIndex = 23 Top = 870 Width = 1455 End Begin VB.Label Label17 Caption = "Angulo_arbol_3" ForeColor = &H00FF0000& Height = 165 Left = 90 TabIndex = 22 Top = 1080 Width = 1215 End Begin VB.Label Label18 Caption = "Distancia_arbol_3" ForeColor = &H00FF0000& Height = 165 Left = 90 TabIndex = 21 Top = 1290 Width = 1455 End Begin VB.Label Label24 BackColor = &H00404040& BackStyle = 0 'Transparent Caption = "4" ForeColor = &H00FFFFFF& Height = 255 Left = 1620 TabIndex = 14 Top = 2250

Página 132 de 143

Page 133: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Width = 165 End Begin VB.Label Label23 BackColor = &H00404040& BackStyle = 0 'Transparent Caption = "3" ForeColor = &H00FFFFFF& Height = 255 Left = 1290 TabIndex = 13 Top = 2040 Width = 165 End Begin VB.Label Label22 BackColor = &H00404040& BackStyle = 0 'Transparent Caption = "2" ForeColor = &H00FFFFFF& Height = 255 Left = 870 TabIndex = 12 Top = 2040 Width = 165 End Begin VB.Label Label21 BackColor = &H00404040& BackStyle = 0 'Transparent Caption = "1" ForeColor = &H00FFFFFF& Height = 255 Left = 540 TabIndex = 11 Top = 2250 Width = 165 End Begin VB.Label Label19 BackColor = &H00404040& BackStyle = 0 'Transparent Caption = "0" ForeColor = &H00FFFFFF& Height = 255 Left = 510 TabIndex = 10 Top = 2610 Width = 165 End Begin VB.Label Label20 BackColor = &H00404040& BackStyle = 0 'Transparent Caption = "5" ForeColor = &H00FFFFFF& Height = 255 Left = 1650 TabIndex = 9 Top = 2580 Width = 165 End Begin VB.Shape Shape1 FillStyle = 0 'Solid Height = 1155 Left = 360 Shape = 2 'Oval Top = 1980 Width = 1545 End End Begin VB.Label Label_ref ForeColor = &H00808080& Height = 255 Left = 630 LinkTopic = "Excel|estadisticas"

Página 133 de 143

Page 134: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

TabIndex = 50 Top = 0 Visible = 0 'False Width = 465 End Begin VB.Label Label_est ForeColor = &H00808080& Height = 255 Left = 30 LinkTopic = "Excel|estadisticas" TabIndex = 49 Top = 30 Visible = 0 'False Width = 465 EndEndAttribute VB_Name = "Fuzzy2"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)'SI SE PRESIONA UNA TECLA EN LA MODALIDAD MANUAL:Select Case KeyCode'ACELERA=FLECHA ARRIBACase 38 If Aceleracion < 1 Then Aceleracion = Format(Aceleracion + 0.1, "0.00")'DOBLA IZQUIERDA=FLECHA IZQUIERDACase 37 If Angulo_direccion > -45 Then Angulo_direccion = Angulo_direccion - 1'DOBLA DERECHA=FLECHA DERECHACase 39 If Angulo_direccion < 45 Then Angulo_direccion = Angulo_direccion + 1'DESACELERA=FLECHA ABAJOCase 40 If Aceleracion > -2 Then Aceleracion = Format(Aceleracion - 0.1, "0.00")End SelectEnd Sub

Página 134 de 143

Page 135: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Código Fuente de Visual Basic para el Módulo del Proyecto Nombre: Fuzzy.basAttribute VB_Name = "Fuzzy"Global Ubica As BooleanGlobal Dist_ini As DoubleGlobal Vel_ini As DoubleGlobal Veloc_prom As DoubleGlobal Est_aceleracion(1 To 1000) As DoubleGlobal Est_velocidad(1 To 1000) As DoubleGlobal Est_distancia_pelota(1 To 1000) As DoubleGlobal Angulo_nuevo As DoubleGlobal Espacio As DoubleGlobal Manual As BooleanGlobal Tiempo As IntegerGlobal X As DoubleGlobal Y As DoubleGlobal Xinicial As DoubleGlobal Yinicial As DoubleGlobal X11 As DoubleGlobal Y11 As DoubleGlobal X12 As DoubleGlobal Y12 As DoubleGlobal X13 As DoubleGlobal Y13 As DoubleGlobal X2 As DoubleGlobal Y2 As DoubleGlobal A As DoubleGlobal B As DoubleGlobal C1 As DoubleGlobal D1 As DoubleGlobal C2 As DoubleGlobal D2 As DoubleGlobal C3 As DoubleGlobal D3 As DoubleGlobal Angulo_pelota_aux As DoubleGlobal Angulo_auto_aux As DoubleGlobal Angulo_arbol_1_aux As DoubleGlobal Angulo_arbol_2_aux As DoubleGlobal Angulo_arbol_3_aux As DoubleGlobal Angulo_arbol_1 As DoubleGlobal Distancia_arbol_1 As DoubleGlobal Angulo_arbol_2 As DoubleGlobal Distancia_arbol_2 As DoubleGlobal Angulo_arbol_3 As DoubleGlobal Distancia_arbol_3 As DoubleGlobal Distancia_pelota As DoubleGlobal Angulo_error As DoubleGlobal Angulo_direccion As DoubleGlobal Aceleracion As DoubleGlobal Velocidad As Double

Public Function Angulo_180(ANGULO As Double) As Double'CONVERSION DE ANGULOS DE 360º A (-180º;+180º)If ANGULO > 0 Then If ANGULO > 180 Then Angulo_180 = (360 - ANGULO) * -1 Else Angulo_180 = ANGULO End IfElseIf ANGULO < 0 Then If ANGULO < -180 Then Angulo_180 = (360 + ANGULO) Else Angulo_180 = ANGULO End IfElse Angulo_180 = 0

Página 135 de 143

Page 136: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

End IfEnd Function

Public Function grados(var As Double) As Double'CONVERSION DE RADIANES EN GRADOSgrados = var * 180 / 3.14159265358979End Function

Public Function radianes(var As Double) As Double'CONVERSION GRADOS EN RADIANESradianes = 3.14159265358979 * var / 180End Function

Public Function Angulo_180_auto(ANGULO As Double) As Double'SE CALCULAN LOS ANGULOS A PARTIR DEL ANGULO DEL AUTO COMO REFERENCIA DE 0º GRADOSIf Angulo_auto_aux > ANGULO Then Angulo_180_auto = (Angulo_auto_aux - ANGULO) * -1ElseIf Angulo_auto_aux < ANGULO Then Angulo_180_auto = ANGULO - Angulo_auto_auxElse Angulo_180_auto = 0End IfAngulo_180_auto = Angulo_180(Angulo_180_auto)End FunctionPublic Sub actualizar()'SETEA GROSOR DEL PINCEL PARA EL GRAFICO DE COORDENADAS DE GUIAFuzzy1.DrawWidth = 1'GRAFICA COORDENADAS DE GUIAFuzzy1.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)'CALCULA LA NUEVA VELOCIDADVelocidad = Velocidad + Aceleracion * 1'LIMITA LA VELOCIDAD A LOS LIMITES DEFINIDOSIf Velocidad > 5 Then Velocidad = 5If Velocidad < 0 Then Velocidad = 0'CARGA MATRIZ UNIDIMENSIONAL PARA LAS VARIABLES ESTADISTICASEst_velocidad(Tiempo) = VelocidadEst_aceleracion(Tiempo) = AceleracionEst_distancia_pelota(Tiempo) = Distancia_pelota'CALCULA EL ESPACIO RECORRIDO POR ECUACION DE CINEMATICA'PARA MOVIMIENTO UNIFORMEMENTE VARIADOEspacio = Velocidad * 1 + 1 / 2 * Aceleracion * 1'CALCULA NUEVO ANGULO DEL AUTO (VARIABLE INTERNA AUXILIAR) A PARTIR DEL'ANGULO DEL AUTO ANTERIOR Y EL CAMBIO DE DIRECCION RECIBIDOAngulo_auto_aux = Angulo_180(Angulo_auto_aux + Angulo_direccion)'CALCULO DE LA NUEVA COORDENADA PARA LA POSICION DEL CARRITOX = X - Espacio * Cos(radianes(Angulo_auto_aux))Y = Y - Espacio * Sin(radianes(Angulo_auto_aux))'ESTABLECE LA NUEVA DIRECCION DEL CARRITO EN EL FORMULARIO DE SIMULACIONIf Angulo_auto_aux > 0 Then Fuzzy1.Carrito = Angulo_auto_auxElseIf Angulo_auto_aux < 0 Then Fuzzy1.Carrito = 360 + Angulo_auto_auxElse Fuzzy1.Carrito = 0End If'ESTABLECE EN EL FORMULARIO DE SIMULACION EL VALOR DEL ANGULO DEL AUTOFuzzy1.Label_angulo_auto.Caption = Angulo_auto_aux'ESTABLECE EN EL FORMULARIO DE SIMULACION LAS COORDENADAS DEL CARRITOFuzzy1.Label_x.Caption = XFuzzy1.Label_y.Caption = Y'ESTABLECE EN EL FORMULARIO FUZZY LA INCLINACION DE LAS RUEDAS SEGUN EL'ANGULO DE DIRECCIONFuzzy2.Rueda1 = Angulo_direccion + 45Fuzzy2.Rueda2 = Angulo_direccion + 45'POSICIONA EL CARRITO EN LA NUEVA UBICACION DE COORDENADAS,'TENIENDO EN CUENTA EL GROSOR Y LA ESCALA DEL CARRITOFuzzy1.Carrito.Left = X - Fuzzy1.Carrito.Width / 2

Página 136 de 143

Page 137: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fuzzy1.Carrito.Top = Y - Fuzzy1.Carrito.Height / 2'ESTABLECE LAS NUEVAS COORDINADAS GUIAFuzzy1.Line (0, Y)-(10, Y), QBColor(10)Fuzzy1.Line (X, 10)-(X, 0), QBColor(10)Fuzzy1.Line (Fuzzy1.ScaleWidth, Y)-(Fuzzy1.ScaleWidth - 10, Y), QBColor(10)Fuzzy1.Line (X, Fuzzy1.ScaleHeight - 10)-(X, Fuzzy1.ScaleHeight), QBColor(10)'CAMBIA EL GROSOR DEL PINCEL PARA GRAFICAR LA TRAYECTORIAFuzzy1.DrawWidth = 3'GRAFICA LA TRAYECTORIA CON DISTINTOS COLORES:If Aceleracion < 0 Then'BLANCO PARA LA ACELERACION NULA Fuzzy1.PSet (X, Y), QBColor(12)ElseIf Aceleracion > 0 Then'AZUL PARA LA ACELERACION POSITIVA Fuzzy1.PSet (X, Y), QBColor(9)Else'ROJO PARA LA DESACELERACION Fuzzy1.PSet (X, Y), QBColor(15)End If'INICIALIZA LOS GRAFICOS DE ACELERACIONFuzzy2.Aceleracion_flow.FloodPercent = 0Fuzzy2.Frenado_flow.FloodPercent = 0Fuzzy2.Constante_flow.BackColor = &HC0C0C0'ESTABLECE GRAFICAMENTE EL GRADO DE ACELERACION EN EL FORMULARIO FUZZYIf Aceleracion > 0 Then Fuzzy2.Aceleracion_flow.FloodPercent = Aceleracion * 100 / 1ElseIf Aceleracion < 0 Then Fuzzy2.Frenado_flow.FloodPercent = Abs(Aceleracion) * 100 / 2Else Fuzzy2.Constante_flow.BackColor = QBColor(15)End If'ESTABLECE GRAFICAMENTE LA VELOCIDAD EN EL FORMULARIO FUZZYIf Velocidad > 0 Then Fuzzy2.Velocimetro = VelocidadEnd Sub

Public Sub iteracion()Do'SUMATORIA DEL TIEMPO O ITERACIONES TRANSCURRIDAS Tiempo = Tiempo + 1'LAS VARIABLES_AUX SON DE USO INTERNO EN LA SIMULACION'CALCULA COORDENADAS DE LA PELOTA A = X - X2 B = Y - Y2'PARA CADA CUADRANTE SE CALCULA DESDE EL CARRITO:'EL ANGULO A LA PELOTA Y LA DISTANCIA A LA PELOTA'LAS VARIABLES_AUX SON DE USO INTERNO EN LA SIMULACION If B > 0 And A > 0 Then Angulo_pelota_aux = grados(Atn(B / A)) Distancia_pelota = B / Sin(radianes(Angulo_pelota_aux)) ElseIf B < 0 And A > 0 Then Angulo_pelota_aux = grados(Atn(B / A)) Distancia_pelota = B / Sin(radianes(Angulo_pelota_aux)) ElseIf B < 0 And A < 0 Then Angulo_pelota_aux = 180 + grados(Atn(B / A)) Distancia_pelota = B / Sin(radianes(Angulo_pelota_aux)) ElseIf B > 0 And A < 0 Then Angulo_pelota_aux = 180 + grados(Atn(B / A)) Distancia_pelota = B / Sin(radianes(Angulo_pelota_aux)) End If'EL ANGULO DE ERROR SE CALCULA A PARTIR DEL ANGULO DE LA PELOTA Angulo_error = Angulo_180_auto(Angulo_pelota_aux)'CALCULA COORDENADAS DEL ARBOL 1 C1 = X - X11 D1 = Y - Y11'PARA CADA CUADRANTE SE CALCULA DESDE EL CARRITO:'EL ANGULO AL ARBOL 1 Y LA DISTANCIA AL ARBOL 1 If D1 > 0 And C1 > 0 Then Angulo_arbol_1_aux = grados(Atn(D1 / C1)) Distancia_arbol_1 = D1 / Sin(radianes(Angulo_arbol_1_aux))

Página 137 de 143

Page 138: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

ElseIf D1 < 0 And C1 > 0 Then Angulo_arbol_1_aux = grados(Atn(D1 / C1)) Distancia_arbol_1 = D1 / Sin(radianes(Angulo_arbol_1_aux)) ElseIf D1 < 0 And C1 < 0 Then Angulo_arbol_1_aux = 180 + grados(Atn(D1 / C1)) Distancia_arbol_1 = D1 / Sin(radianes(Angulo_arbol_1_aux)) ElseIf D1 > 0 And C1 < 0 Then Angulo_arbol_1_aux = 180 + grados(Atn(D1 / C1)) Distancia_arbol_1 = D1 / Sin(radianes(Angulo_arbol_1_aux)) End If'EL ANGULO DEL ARBOL 1 SE CALCULA A PARTIR DE LA VARIABLE AUXILIAR DE ANGULO DEL ARBOL 1 Angulo_arbol_1 = Angulo_180_auto(Angulo_arbol_1_aux)'CALCULA COORDENADAS DEL ARBOL 2 C2 = X - X12 D2 = Y - Y12'PARA CADA CUADRANTE SE CALCULA DESDE EL CARRITO:'EL ANGULO AL ARBOL 1 Y LA DISTANCIA AL ARBOL 2 If D2 > 0 And C2 > 0 Then Angulo_arbol_2_aux = grados(Atn(D2 / C2)) Distancia_arbol_2 = D2 / Sin(radianes(Angulo_arbol_2_aux)) ElseIf D2 < 0 And C2 > 0 Then Angulo_arbol_2_aux = grados(Atn(D2 / C2)) Distancia_arbol_2 = D2 / Sin(radianes(Angulo_arbol_2_aux)) ElseIf D2 < 0 And C2 < 0 Then Angulo_arbol_2_aux = 180 + grados(Atn(D2 / C2)) Distancia_arbol_2 = D2 / Sin(radianes(Angulo_arbol_2_aux)) ElseIf D2 > 0 And C2 < 0 Then Angulo_arbol_2_aux = 180 + grados(Atn(D2 / C2)) Distancia_arbol_2 = D2 / Sin(radianes(Angulo_arbol_2_aux)) End If'EL ANGULO DEL ARBOL 2 SE CALCULA A PARTIR DE LA VARIABLE AUXILIAR DE ANGULO DEL ARBOL 2 Angulo_arbol_2 = Angulo_180_auto(Angulo_arbol_2_aux)'CALCULA COORDENADAS DEL ARBOL 3 C3 = X - X13 D3 = Y - Y13'PARA CADA CUADRANTE SE CALCULA DESDE EL CARRITO:'EL ANGULO AL ARBOL 1 Y LA DISTANCIA AL ARBOL 3 If D3 > 0 And C3 > 0 Then Angulo_arbol_3_aux = grados(Atn(D3 / C3)) Distancia_arbol_3 = D3 / Sin(radianes(Angulo_arbol_3_aux)) ElseIf D3 < 0 And C3 > 0 Then Angulo_arbol_3_aux = grados(Atn(D3 / C3)) Distancia_arbol_3 = D3 / Sin(radianes(Angulo_arbol_3_aux)) ElseIf D3 < 0 And C3 < 0 Then Angulo_arbol_3_aux = 180 + grados(Atn(D3 / C3)) Distancia_arbol_3 = D3 / Sin(radianes(Angulo_arbol_3_aux)) ElseIf D3 > 0 And C3 < 0 Then Angulo_arbol_3_aux = 180 + grados(Atn(D3 / C3)) Distancia_arbol_3 = D3 / Sin(radianes(Angulo_arbol_3_aux)) End If'EL ANGULO DEL ARBOL 3 SE CALCULA A PARTIR DE LA VARIABLE AUXILIAR DE ANGULO DEL ARBOL 3 Angulo_arbol_3 = Angulo_180_auto(Angulo_arbol_3_aux)'ESCRIBE EN EL FORMULARIO FUZZY LAS VARIABLES DE ENTRADA Fuzzy2.Text_Velocidad.Text = Velocidad Fuzzy2.Text_Angulo_arbol_1.Text = Angulo_arbol_1 Fuzzy2.Text_Distancia_arbol_1.Text = Distancia_arbol_1 Fuzzy2.Text_Angulo_arbol_2.Text = Angulo_arbol_2 Fuzzy2.Text_Distancia_arbol_2.Text = Distancia_arbol_2 Fuzzy2.Text_Angulo_arbol_3.Text = Angulo_arbol_3 Fuzzy2.Text_Distancia_arbol_3.Text = Distancia_arbol_3 Fuzzy2.Text_Angulo_error.Text = Angulo_error Fuzzy2.Text_Distancia_pelota.Text = Distancia_pelota'SI EL PROCESO ES POR EL CONTROLADOR DIFUSO If Manual = False Then'ENVIA LOS DATOS DEL FORMULARIO FUZZY A EXCEL POR MEDIO DE DDE Fuzzy2.Text_Velocidad.LinkPoke DoEvents Fuzzy2.Text_Angulo_arbol_1.LinkPoke

Página 138 de 143

Page 139: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

DoEvents Fuzzy2.Text_Distancia_arbol_1.LinkPoke DoEvents Fuzzy2.Text_Angulo_arbol_2.LinkPoke DoEvents Fuzzy2.Text_Distancia_arbol_2.LinkPoke DoEvents Fuzzy2.Text_Angulo_arbol_3.LinkPoke DoEvents Fuzzy2.Text_Distancia_arbol_3.LinkPoke DoEvents Fuzzy2.Text_Angulo_error.LinkPoke DoEvents Fuzzy2.Text_Distancia_pelota.LinkPoke'DA LUGAR A LA CONVERSACION ENTRE APLICACIONES PARA QUE EL CONTROLADOR DI-FUSO RECIBA LOS DATOS DE EXCEL DoEvents 'RECIBE LOS DATOS DESDE EXCEL QUE FUERON PROCESADOS ANTES POR EL CONTROLA-DOR 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 MANUALLoop Until (Distancia_pelota <= Dist_ini And Velocidad <= Vel_ini) Or Manual = TrueDoEventsIf 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 " + For-mat(Veloc_prom, "0.00") + " m/s"'DESACTIVA COMUNICACION CON EXCEL PARA ENVIO DE ESTADISTICAS Fuzzy2.Label_est.LinkMode = 0 Beep

Página 139 de 143

Page 140: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

'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 On Error Resume Next'EJECURA MACRO PARA BORRAR LOS DATOS ESTADISTICOS ANTERIORES EN EXCEL'EXCEL 97 O 5 EN ESPAÑOL Fuzzy2.Label_est.LinkExecute "[EJECUTAR(" & Chr$(34) & "MODULO_FUZZY.BORRAR_DATOS" & Chr$(34) & ")]" On Error GoTo 0'MUESTRA BARRA DE ESTADO PARA EL ENVIO DE ESTADISTICAS MDIFuzzy.Barra_est.Visible = True For i = 1 To Tiempo'CALCULA Y MUESTRA PORCENTAJE DE ENVIO DE ESTADISTICAS MDIFuzzy.Barra_est.FloodPercent = i * 100 / Tiempo On Error Resume Next'ENVIA AL EXCEL POR MEDIO DE DDE, POR CADA ITERACION O SEGUNDO, LOS DATOS DE:'LA ACELERACION Fuzzy2.Label_est.Caption = Est_aceleracion(i)'EXCEL 5 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "L" + Trim(i + 1) + "C1" Fuzzy2.Label_est.LinkPoke DoEvents'EXCEL 97 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "F" + Trim(i + 1) + "C1" Fuzzy2.Label_est.LinkPoke DoEvents'LA VELOCIDAD Fuzzy2.Label_est.Caption = Est_velocidad(i)'EXCEL 5 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "L" + Trim(i + 1) + "C2" Fuzzy2.Label_est.LinkPoke DoEvents'EXCEL 97 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "F" + Trim(i + 1) + "C2" Fuzzy2.Label_est.LinkPoke DoEvents'LA DISTANCIA A LA PELOTA Fuzzy2.Label_est.Caption = Est_distancia_pelota(i)'EXCEL 5 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "L" + Trim(i + 1) + "C3" Fuzzy2.Label_est.LinkPoke DoEvents'EXCEL 97 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "F" + Trim(i + 1) + "C3" Fuzzy2.Label_est.LinkPoke DoEvents Next i'DESACTIVA COMUNICACION CON EXCEL PARA ENVIO DE ESTADISTICAS Fuzzy2.Label_est.LinkMode = 0'ACTIVA COMUNICACION CON EXCEL PARA ENVIO DE ESTADISTICAS Fuzzy2.Label_est.LinkMode = 2 DoEvents'ENVIA AL EXCEL POR MEDIO DE DDE, EL RANGO A TENER EN CUENTA PARA LA ACELERA-CION Fuzzy2.Label_est.Caption = "A2:A" + Trim(i + 1)'EXCEL 5 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "L2C4" Fuzzy2.Label_est.LinkPoke DoEvents'EXCEL 97 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "F2C4" Fuzzy2.Label_est.LinkPoke DoEvents'ENVIA AL EXCEL POR MEDIO DE DDE, EL RANGO A TENER EN CUENTA PARA LA VELOCI-DAD Fuzzy2.Label_est.Caption = "B2:B" + Trim(i + 1)'EXCEL 5 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "L2C5"

Página 140 de 143

Page 141: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Fuzzy2.Label_est.LinkPoke DoEvents'EXCEL 97 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "F2C5" Fuzzy2.Label_est.LinkPoke DoEvents'ENVIA AL EXCEL POR MEDIO DE DDE, EL RANGO A TENER EN CUENTA PARA LA DISTANCIA A LA PELOTA Fuzzy2.Label_est.Caption = "C2:C" + Trim(i + 1)'EXCEL 5 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "L2C6" Fuzzy2.Label_est.LinkPoke DoEvents'EXCEL 97 EN ESPAÑOL Fuzzy2.Label_est.LinkItem = "F2C6" Fuzzy2.Label_est.LinkPoke DoEvents'DESACTIVA COMUNICACION CON EXCEL PARA ENVIO DE ESTADISTICAS Fuzzy2.Label_est.LinkMode = 0 Beep'MENSAJE DE FIN DE ENVIO DE ESTADISTICAS A EXCEL MsgBox "Proceso terminado: para ejecutar la graficación presione el boton en la hoja Fuzzy en Excel." Fuzzy2.Label_est.LinkMode = 0'BORRA BARRA DE ESTADISTICAS DEL FORMULARIO PRINCIPAL MDIFuzzy.Barra_est.Visible = False Beep Beep Beep'INICIALIZACION DE LA VARIABLE TIEMPO Tiempo = 0'DESCARGA Y OCULTA LOS FORMULARIOS DE SIMULACION Unload Fuzzy1 Unload Fuzzy2End IfEnd Sub

Página 141 de 143

Page 142: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

Código Fuente de Macro para Microsoft Excel 5 97Nombre: Fuzzy.xls (MODULO_FUZZY)Sub Rectángulo1_AlHacerClic()'GRAFICA ACELERACIONCall ACELERACION'GRAFICA VELOCIDADCall VELOCIDAD'GRAFICA DISTANCIA_PELOTACall DISTANCIA_PELOTAEnd Sub

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").SelectEnd 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.SelectEnd 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"

Página 142 de 143

Page 143: GF Informe Final PFI Logica Difusa Nav Aut ENTREGABLE 5 Tesis Final

Sistema de Navegación Autónoma para un robot utilizando Lógica Difusa Guillermo Gabriel Fernández Amado

.Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "mts" End With ActiveChart.Legend.SelectEnd Sub

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.SelectEnd Sub

Página 143 de 143