Descargar

Cerebro robótico para navegación de búsqueda de objetos (página 2)

Enviado por David Botero Rojas


Partes: 1, 2

La importancia de este estudio se puede definir por la necesidad de crear sistemas autónomos que funcionen sin la intervención humana y que puedan ser aplicados en muchas áreas de la ciencia y la industria. El estudio de estos sistemas llevará al descubrimiento de nuevas tecnologías para mejorar procesos, alcanzar objetivos que todavía no se han alcanzado y además para terminar de entender el comportamiento de estos complejos sistemas en diferentes escenarios.

Este proyecto representa un estudio que puede ser aplicado en muchas áreas de la industria donde se necesiten sistemas que realicen actividades autónomas de algún tipo, como por ejemplo: Sistemas de emergencia, sistemas para la solución de problemas en tiempo real, robots de limpieza de oficinas, robots autónomos que realicen tareas varias, etc. También se pueden aplicar a diferentes áreas de la ciencia, por ejemplo: robots exploradores, robots que puedan realizar actividades de reparación en diferentes tipos de equipos incluyendo otros robots, etc.

El alcance del proyecto es generar un sistema difuso utilizando el método de conductas, evolucionarlo con un algoritmo genético y obtener los mejores resultados para luego simularlos y ver cómo se comporta el individuo obtenido en el ambiente designado.

1.2. OBJETIVO GENERAL

Contribuir al desarrollo inicial del cerebro robótico que permitirá la navegación de manera autónoma para el proyecto del "Scavenger Hunt" de UNITEC San Pedro Sula.

1.3. OBJETIVOS ESPECIFICOS

Investigar los diferentes métodos utilizados para crear sistemas autónomos y aplicar uno de ellos en el desarrollo del cerebro robótico.

Crear una aplicación que permita evolucionar y simular los cerebros robóticos, lo cual permitirá probarlos antes de implementarlos en el robot real.

CAPÍTULO 2

Marco teórico

  • Robots Autónomos

La autonomía de los robots se puede definir como la realización de tareas por parte de éstos sin la supervisión humana. Dentro de la autonomía se consideran muchos aspectos que incluyen: Navegación, planificación de tareas, realización de tareas de reparación a si mismo o a otros robots, etc. Por la complejidad de las tareas y los problemas con los que se encuentran los robots, es importante generar sistemas que manejen de forma eficiente la información que se recibe desde el entorno por medio de los dispositivos de entrada (i.e. Sensores Infrarrojos, Radares, etc.) y como se van a exteriorizar estos datos por medio de los dispositivos de salida (i.e. Motores, otros Sensores, etc.) de tal forma que el robot pueda hacer su tarea con el mínimo error posible.

En Tsourveloudis et al (2005), se describe a los robots autónomos como: ".vehículos capaces de realizar tareas en ambientes no estructurados, desconocidos y que pueden ser peligrosos.". También se describen como ".entes capaces de operar y funcionar de manera semiautónoma o autónoma que no necesitan intervención humana.". Sin embargo, falta mucho para que los robots que no son controlados por humanos se conviertan en entidades completamente autónomas en ambientes variados.

Para Surmann et al (1995), ".un robot autónomo se enfrenta a la incertidumbre del entorno en el que se encuentra y por lo tanto a información incompleta o aproximada.", por esta razón es que los sistemas autónomos deben ser autoreconfigurables, lo que quiere decir que pueden cambiar a medida que el entorno vaya cambiando.

"Las limitantes de los robots actuales están dadas por las limitantes del hardware que se utiliza para construirlos.", por lo tanto hay varios niveles de autonomía que se pueden definir según Tsourveloudis et al (2005). También se pueden relacionar varias características operacionales relacionadas con estos robots: Percepción, Inteligencia y Acción. Por percepción se entiende como ".el uso del conocimiento adquirido a cerca del entorno y de si mismo para realizar tareas que no estén definidas dentro de los parámetros iniciales del sistema.". La inteligencia es ".la capacidad de desenvolverse dentro del entorno sin asistencia humana y resolver los problemas a los que se enfrenta el robot.". Por último tenemos la acción, que simplemente es ".la capacidad de recorrer una distancia e ir de un punto A a un punto B sin la ayuda humana y sin quedar atascado.".

  • Sensores

En los robots autónomos, una de las partes más importantes es el arreglo o conjunto de sensores que proveen la entrada al sistema que rige al robot. Tanto la cantidad como la localización de cada uno de ellos hacen complejo el diseño de dichos robots, también se debe tomar en cuenta cuales son los sensores que ayudan de la forma más eficiente a la interacción del robot con su entorno. El robot debe tener la capacidad de detectar todos los obstáculos que se le presenten en todas las direcciones posibles, dado que dichos obstáculos pueden tener formas variables, y pueden estar en posiciones que crean confusión en el robot si no se detectan de forma correcta.

Según Aboshosha (2003), ".los sensores se pueden dividir en 2 clases: activos y pasivos. Los activos se conocen como sensores reactivos que envían y reciben señales moduladas, por ejemplo: Sonar, Láser, Radar y los Sensores Infrarrojos. Los pasivos miden y detectan cantidades físicas.", también este autor presenta que:

Las ventajas de los sonares sobre el láser lo hacen una de las mejores opciones para los robots autónomos. Los Sensores Sonares son relativamente más baratos comparados con los localizadores de láser. Los Sonares son más pequeños y ligeros, por lo tanto se pueden montar de forma flexible en el cuerpo del robot. En muchas aplicaciones se ha observado que la abertura del ángulo es un factor decisivo en la detección de obstáculos. Y los Sonares no consumen mucha energía, por lo tanto no son una carga para las baterías del robot.

Se puede decir entonces que los Sonares son una de las mejores opciones para implementar la navegación autónoma por su precio, facilidad de instalación y alcance, pero también tienen varias desventajas que los hacen inadecuados para ciertas ocasiones.

En Aboshosha (2003) se presentan varias desventajas para los Sonares:

Como es una onda mecánica que se mueve por el aire, es absorbida y pierde velocidad, esto lleva a un incremento en la distancia estimada y no en el valor actual. Idealmente, el Sonar reflejaría la onda directamente desde el obstáculo hacia el receptor, pero en el mundo real las ondas se reflejan en múltiples obstáculos antes de retornar al receptor, la distancia estimada es mayor que la real. Normalmente, el robot tiene múltiples sensores, entonces varios sonares envían ondas de sonido idénticas, generando un problema de comunicación cruzada, esto se puede evitar dándole a cada sonar una identificación de onda diferente. Los Sonares tienen un rango de medida limitado (~0.30:6.5m) y una dirección angular (~9:39°), fuera de estos rangos la información es incierta. Los cambios en temperatura, humedad y presión influyen en la velocidad de la onda, por lo tanto la distancia al objeto puede ser errónea. Perdida de datos puede ocurrir si la onda reflejada es muy débil para ser detectada por el receptor o si la onda es reflejada fuera del rango de detección. Comparado con el láser, el Sonar es más lento, esto se obtiene por la diferencia de velocidad entre la luz y el sonido.

Para situaciones donde el robot no está expuesto a muchos cambios ambientales el uso de Sonares puede resolver el problema, por ejemplo para robots que se encuentran en cuartos cerrados o en oficinas.

Otro tipo de Sensor es el láser (Light Amplification by Stimulated Emisión of Radiation, que significa Amplificación de Luz por Emisión Estimulada de Radiación). Para Aboshosha (2003) las ventajas del láser son:

El láser es rápido, su precisión es mayor dado que tiene una desviación estándar, para la última generación de láser, de 10 mm y de la resolución angular de 0.25°. La resolución angular es mucho mejor con el láser que con el sonar. La información obtenida por el láser puede ser interpretada directamente desde la distancia al obstáculo en cualquier dirección.

En la navegación de robots se necesita que la respuesta de los sensores sea lo mejor posible, en este caso es mejor el láser que el sonar, pero el láser tiene varias desventajas, que según Aboshosha (2003) son:

El láser provee información limitada a un plano cartesiano, para resolver este problema se pueden montar en plataformas giratorias que le dan un poco de ventaja. El láser consume una cantidad considerable de energía comparado con los otros sensores. Es más costoso que los otros sensores por su complejidad. Algunos obstáculos pueden no ser detectados por el láser, pro ejemplo el cristal no produce reflejo.

En los casos donde los materiales puedan generar interferencia con el láser, como los cristales, se utilizan combinados con otros sensores, como por ejemplo el sonar, dado que el láser presenta una respuesta mayor ante los obstáculos y mayor precisión, pero puede fallar con estos materiales que no reflejan la luz hacia el receptor.

"Los sensores más utilizados en robots miniaturas son los infrarrojos, dado que su alcance es de 10 a 80 cm, también son utilizados como sensores secundarios en sistemas más complejos", según Aboshosha (2003). Además de esto, los sensores infrarrojos son baratos y se pueden montar fácilmente en cualquier tipo de robot. "Estos sensores son insensibles a la luz del ambiente y al tipo de superficie por que dependen de señales infrarrojas moduladas", para Aboshosha (2003) esta es una gran ventaja para los robots que utilizan este tipo de sensores.

Es posible tener otra subdivisión para los sensores según Aboshosha (2003), ".sensores inspirados por la biología y los no inspirados por la naturaleza o sintéticos.". Dentro de esta nueva clasificación se encuentras los siguientes:

Dentro de los sensores de posicionamiento, utilizados para posicionar al robot con respecto a su entorno, se pueden encontrar los sensores reactivos como el sonar, láser, etc., brújulas digitales, visión geométrica, sistemas de posicionamiento global, etc. También se encuentran los sensores de detección de movimiento, utilizados para detectar parámetros de movimiento, dentro de estos se encuentran los sensores de rotación y translación, velocidad rotacional y longitudinal, aceleración, vibración, etc. Los sensores de visión también se pueden encontrar dentro de esta clasificación, utilizados para la vigilancia y el reconocimiento del entorno por parte del robot, dentro de estos sensores se pueden resaltar las cámaras, láser 3D, cámaras infrarrojas, etc. Los sensores inspirados por la biología pueden ser imitaciones de órganos sensoriales, por ejemplo: narices electrónicas para imitar el sentido del olfato, piel artificial o sensores de tacto para reconocer superficies, analizadores de sonido para el reconocimiento de voz, sensores para imitar la visión humana para reconocer el ambiente que rodea al robot. Por ultimo están los sensores ambientales, que se utilizan para reconocer el entorno que rodea al robot y detectar fenómenos físicos por ejemplo: Temperatura, presión atmosférica, radiación, humedad, velocidad y dirección del viento, ondas electromagnéticas, detectar metales, campos magnéticos, etc.

Uno de los modelos estudiados por Tsourveloudis et al (2005) utiliza 12 sensores sonares que se agrupan así: 10 sensores en 2 grupos de 5 responsables de la detección de obstáculos para el frente y la parte trasera, y 6 sensores en 2 grupos de 3 para la entrada de los otros 2 controles difusa que se encargan de la detección de obstáculos a ambos lados del robot.

En el modelo propuesto por Yang et al (2006a), se tiene un robot circular que se divide en 2 áreas simétricas, por lo que desarrollando una de ellas se puede duplicar para la otra. Cada semicírculo se divide en 4 áreas de igual tamaño, colocan en el centro de cada área un sensor, lo que da un total de 4 sensores por cada semicírculo, en total 8 para el robot. Cada uno tiene una función especial en la obtención de datos que utiliza el sistema difuso que utiliza el robot.

En el modelo de Yang et al (2006b) se utiliza un robot Koala manufacturado por K-team equipado con 6 ruedas diferenciales, un motor de corriente directa y velocidad incremental, un microprocesador de 16 MHz Motorota 68331 y un anillo de 16 sensores infrarrojos de proximidad y ambiente. Los sensores infrarrojos proveen un rango de medida de la distancia hacia el objeto de 5 a 20 cm.

En Na et al (2003) se utilizan 8 sensores ultrasónicos agrupados en subconjuntos de 5 sensores y el promedio de las lecturas es la entrada que obtiene la red neuronal que se encarga de la navegación del robot. Las características de estos sensores son: Frecuencia de Operación = 43KHz a 48KHz, Frecuencia de Resonancia = 45KHz, Rango de pulso = 25Hz, Sensitividad = 6 pulgadas a 35 pies y el Angulo de acción = -15 a 15 grados.

El robot que se describe en Surmann (1995), llamado "MORIA", tiene 2 motores de velocidad variable y 8 sensores sonares que se localizan 3 en frente, 3 atrás y 2 a los lados del robot, estos sensores le proporcionan los datos al sistema basado en lógica difusa.

En Yang et al (2006a) se propone un sistema que depende por completo de los sensores localizados en 8 lugares específicos del robot. Los sensores están localizados en lugares estratégicos para darle una mejor percepción al robot, se tienen 2 sensores para revisar el frente, 2 para revisar entre el frente y el lado, 2 para revisar atrás y al lado y 2 para atrás, cada uno de estos se toma en cuenta en cada momento, y haciendo uso de la función NEAR, se decide cual conducta se va a ejecutar.

Se pudo determinar que los mejores sensores que se pueden utilizar, por su facilidad de manejo, precio y funcionamiento, son los sensores ultrasónicos o sonares. Por estas razones se utilizan para la navegación de robots, además los sonares encajan bien donde otros pueden fallar, por esto se escogieron para el modelo que se presenta en este documento.

  • Robótica Basada en Conductas

Según Mitchell (1997), ".hay 2 tipos de aprendizaje para robots: aprendizaje inductivo y analítico.", dentro del aprendizaje inductivo se pueden tomar en cuenta las redes neuronales y los árboles de decisión. Dentro del aprendizaje analítico se encuentra el Prolog-EBG, que funciona con definiciones previas que se van verificando a medida que el robot interactúa con el entorno. Igualmente en Mitchell (1997), ".los métodos de aprendizaje analíticos puros ofrecen la ventaja de generalizar con mayor precisión y menos datos usando el conocimiento previo para el aprendizaje, pero pueden fallar si se les da poca información o información errónea.". Para Mitchell (1997), "Los animales utilizan el aprendizaje por experiencia, experimentan situaciones y aprenden sin necesidad de información previa.", por lo tanto los animales utilizan una forma de aprendizaje inductiva donde las situaciones a las que se enfrentan les permiten aprender los resultados de sus acciones.

Para Nolfi (2005), ".una conducta es un proceso dinámico que resulta de la interacción no lineal entre un agente (natural o artificial), su cuerpo y el ambiente externo (incluyendo el ambiente social).", lo que quiere decir es que cada acción resultante de la influencia del entorno hacia el agente es lo que se puede considerar como una conducta. ".por lo tanto estos sistemas son extremadamente difíciles de diseñar desde la perspectiva de un observador externo, y pueden ser desarrollados eficientemente por medio de métodos de autoorganización (por ejemplo métodos evolutivos).", esto según lo observado por Nolfi (2005).

En Tunstel (2001), ".se utiliza la etología (la etología es la ciencia que analiza los comportamientos animales y desarrolla modelos y explicaciones basada en observaciones externas) como medio para generar sistemas basados en conductas, tomando como referencia las conductas que presentan los animales al ser enfrentados a diferentes actividades que no están acostumbrados a hacer.". Esto permite obtener diferentes conductas para diferentes actividades, por ejemplo evitar obstáculos.

Varios métodos se utilizan para resolver los problemas que se presentan en el arbitraje de conductas, se mencionan 2 modelos en Tunstel (2001), "el primero se basa en prioridades y donde solamente una conducta puede estar activa en un momento dado". "En el segundo modelo, se utiliza la activación concurrente de múltiples conductas, lo que se asemeja a lo observado en varias investigaciones hechas basadas en la etología.".

Una propuesta diferente se describe en Na et al (2003), ".se presenta una arquitectura hibrida que combina el uso de navegación reactiva basada en conductas y la clasificación del entorno basada en modelos, también se utiliza coordinación competitiva y cooperativa para el control de las conductas.".

Para la coordinación competitiva se utiliza el resultado de la clasificación de la red neuronal y determinar cual es la acción a tomar. En el método cooperativo se puede utilizar más de una salida de más de una conducta, pero este método es vulnerable a situaciones como son los Deadlocks, por la cancelación de fuerzas opuestas mientras que el método competitivo tiende a evitar esta situación dado que selecciona una sola conducta para generar la salida.

En el caso anterior se utilizan redes neuronales que se encargan de hacer la clasificación del entorno del robot que se basa en 16 prototipos de mapas topológicos que se utilizan para la navegación del sistema, estos son algunos: Pasillos, puertas, intersecciones, etc. Luego se utiliza un controlador de conductas que se basa en redes neuronales y se entrena para que aprenda los diferentes comandos de la navegación humana para cada uno de los 16 prototipos anteriores, estos comandos son: Continuar recto, girar a la izquierda y girar a la derecha.

Para el arbitraje de las conductas se utiliza un método llamado campo potencial modificado (MPF, Modified Potential Field) donde hay un vector de espacio libre y que en conjunto con la red neuronal entrenada con los comando de navegación se utiliza para seleccionar la conducta a utilizar en ese momento.

Finalmente, se combinan los tres métodos anteriores para generar el sistema hibrido que permite al robot reconocer diferentes tipos de espacios y reaccionar activando una de las conductas para ejecutar el comando correcto. Los 2 sensores del centro se utilizan para detección de casos de emergencia. La conducta de emergencia simplemente agrega una corrección de dirección a la red neuronal para corregir el comando de salida.

  • Lógica Difusa

El termino Lógica Difusa nació de la teoría difusa de conjuntos desarrollada por Lotfi Zadeh en 1965. Según Jantzen (1998), Lofti Zadeh afirma que: "Los conjuntos que vemos en el mundo que nos rodea son definidos por límites que no son distintos.", esto quiere decir que todos los conjuntos que nos rodean tienen un rango de membresía o pertenencia de sus elementos igual para todos, este rango es [0,1].

  • Introducción a la Lógica Difusa

Jantzen (1998) muestra el contraste entre la lógica booleana y la difusa:

La lógica booleana basada únicamente en los valores "Verdadero" y "Falso" es inadecuada, en muchos casos, para describir sucesos como el razonamiento humano, que son imprecisos y que no tienen un valor definido. La lógica difusa utiliza todo el intervalo completo entre 0 ("Falso") y 1 ("Verdadero") para describir estos sucesos.

Según Martín del Brío et al (2002), ".la teoría de conjuntos difusos parte de la teoría clásica de conjuntos, añadiendo una función de pertenencia al conjunto, definida ésta como un número entre 0 y 1".

Como se puede observar, la lógica difusa permite representar valores que no se pueden representar con la lógica clásica o Booleana. Esta característica es muy importante al momento de resolver un problema y obtener diferentes soluciones para resolverlo, pues permite la representación de datos inciertos.

También en Jantzen (1998) se muestra la diferencia entre los conjuntos de la lógica clásica y los conjuntos de la teoría difusa:

Un conjunto, en su definición clásica, es una colección de elementos y puede ser tratado como una entidad dentro de un universo tal que los elementos del universo pueden o no ser miembros de ese conjunto. En la teoría difusa un elemento no solamente tiene el criterio "Verdadero" o "Falso", sino que tiene un nivel de membresía o pertenencia en el conjunto de la teoría difusa, el nivel de pertenencia de todos los miembros del conjunto es lo que describe al conjunto.

Funciones de Membresía

Para el universo X y una función de membresía edu.redel conjunto difuso A se define como: edu.red

La función de membresía µA(x) cuantifica el grado de membresía de los elementos x pertenecientes a X. El valor 0 significa que el elemento no esta incluido en el conjunto, 1 significa que el elemento esta completamente incluido. Los valores entre 0 y 1 son los miembros de la lógica difusa del conjunto.

Hay varios tipos de funciones de membresía que se utilizan comúnmente para diseñar sistemas basados en lógica difusa, algunas de estas son:

edu.rededu.red

Figura 1: Función de membresía Triangular Figura 2: Función de membresía Trapezoidal

edu.red edu.red

Figura 3: Función de membresía Gaussiana Figura 4: Función de membresía Sigma

Por ejemplo, si se toma en cuenta la temperatura podemos decir que 0° es frío y que 40° es caliente, pero que sucede con las temperaturas intermedias? Y las que son menores que 0° y mayores que 40°? Para estos casos es que se utiliza el grado de membresía o pertenencia de la teoría difusa, para que el cambio de un elemento de ser miembro a no serlo sea menos abrupto.

  • Operaciones Difusas

En Hellman (2001), se muestra un ejemplo de las operaciones en la lógica difusa:

edu.red

Figura 5: Ejemplo de Conjuntos difusos.

edu.red edu.red

Figura 6: Ejemplo del operador AND Figura 7: Ejemplo del operador OR

edu.red

Figura 8: Ejemplo del operador NOT

En el ejemplo anterior se muestran 2 conjuntos de lógica difusa y se presentan las operaciones AND, OR y NOT, que son los equivalentes de la unión, la intersección y la negación de la lógica booleana y trabajan de la misma forma, por ejemplo en la Intersección se toman los elementos que pertenecen a ambos conjuntos, en la Unión se toman los elementos que pertenecen a cualquiera de los 2 conjuntos y en la negación se obtienen los elementos que no pertenecen al conjunto.

  • Inferencia Difusa

Al igual que en la lógica Booleana, en la lógica difusa existe un método de inferencia que permite obtener las reglas de difusas que describen el comportamiento de los sistemas basados en lógica difusa. Todas las reglas de inferencia son de la forma:

Si A1 (y/o A2 y/o A3.) entonces B1 (y B2 y B3.)

Donde A1, A2, A3. son funciones de membresía que proveen la entrada al sistema basado en lógica difusa y B1, B2, B3. son las funciones de membresía que equivalen a las combinaciones u operaciones de las funciones de entrada.

También se puede definir la inferencia difusa como el proceso de mapear desde una entrada hacia una salida usando la lógica difusa. El mapeo provee una base desde la cual se pueden tomar decisiones o encontrar patrones. Hay 2 tipos de inferencia difusa: Mamdani y Sugeno. La diferencia más importante entre estos dos tipos de inferencia se encuentra en la forma como se determinan las salidas del sistema.

2.4.4.1. Método de inferencia Mamdani

El método de inferencia Mamdani es el más comúnmente utilizado visto en la metodología difusa. Este método fue uno de los primeros sistemas de control que utilizaba la teoría de conjuntos difusos. Fue propuesto por Ebrahim Mamdani en 1975 en un intento por controlar un sistema combinado de un motor de vapor y un tanque.

En este tipo de inferencia se espera que la función de membresía de salida sea un conjunto difuso. Después del proceso de agregación, hay un conjunto difuso para cada una de las variables de salida que necesita ser defusificada. Es posible, y en muchos casos más eficiente, utilizar una función de membresía con una sola cresta que un conjunto difuso distribuido. Este tipo de funciones de membresía son conocidas como Singletons y pueden ser vistos como conjuntos difusos defusificados.

2.4.4.2. Método de inferencia Sugeno

El método Sugeno, o método Takagi-Sugeno-Kang, fue introducido en 1985 y es similar al método Mamdani por que las primeras 2 fases, proceso de fusificación de las entradas y la aplicación del operador difuso, de ambos procesos son iguales. La diferencia entre estos dos métodos es que las funciones de membresía de salidas del método Mamdani pueden ser lineales o constantes, pero para el método Sugeno, si las entradas son "x" y "y", la salida es z=ax + by + c. La salida final del sistema es el promedio de los valores de las reglas de salida que se calcula de la siguiente manera:

edu.red

  • Reglas Difusas

En Martín del Brío, B. et al (2002), "Las Reglas Difusas combinan uno o más conjuntos difusos de entrada, llamados antecedentes o premisas, y le asocian un con junto borroso de salida, llamado consecuente o consecuencia". De la misma forma "Las reglas difusas permiten expresar el conocimiento que se dispone sobre la relación entre antecedentes y consecuentes". Por lo tanto, las reglas difusas son un conjunto de relaciones entre los elementos de entrada o antecedentes y los de salida o consecuentes.

En Yang et al (2006b) se estudian 2 problemas comunes de los sistemas autónomos basados en la lógica difusa:

El problema GUWLO (Goal-Unreachable with Large Obstacles) ocurre cuando el valor absoluto del ángulo de la meta es grande y la dirección hacia la izquierda o derecha esta completamente bloqueada. Para resolver este problema se utiliza un ángulo temporal considerando la superficie del obstáculo en frente del robot. El problema GUWNO (Goal-Unreachable with Nearby Obstacles) surge cuando los obstáculos están cerca de la meta. Este problema se resuelve incluyendo un eliminador e en el sistema de navegación, tomando en cuenta la distancia relativa entre el robot y la posición de la meta.

En el sistema anterior se calcula d, que es la distancia entre el robot y un obstáculo. En la función NEAR se utilizan los datos obtenidos por los sensores individualmente y estos afectan la velocidad de cada uno de los motores. En el siguiente ejemplo se muestra como afecta cada sensor la velocidad del motor 1, en este caso V1 es el cambio de la velocidad del motor. Para V1 se utiliza el conjunto de la lógica difusa formado por los elementos: NVB (Negativo Muy Grande), NB (Negativo Grande), NS (Negativo Pequeño) y PS (Positivo Pequeño), por lo tanto las reglas de la lógica difusa para el cambio de velocidad son:

– Si d detectada por Sensor-Frontal es NEAR, entonces 1V es NVB.

– Si d detectada por Sensor-Frente-Lado es NEAR, entonces 1V es NB.

– Si d detectada por Sensor-Atrás-Lado es NEAR, entonces 1V es NS.

En Saffiotti(1995) se muestra un conjunto diferente de reglas de lógica difusa para manejar la dirección del robot:

– Si Obstáculo-Enfrente Lejos entonces Seguir-Adelante.

– Si Obstáculo-Derecha Cerca entonces Mover-Izquierda.

– Si Obstáculo-Derecha Lejos entonces Mover-Derecha.

En el caso anterior, las funciones Lejos y Cerca se manejan con las entradas de los diferentes sensores y con las reglas fuzzy se define hacia donde va a seguir moviéndose el robot.

  • Fusificador

Según Martín del Brío, B. et al (2002), "El Fusificador establece una relación entre puntos de entrada no difusos a un sistema y sus correspondientes conjuntos difusos". Esto quiere decir que cada punto de entrada del sistema no difuso tiene un valor dentro de los conjuntos difusos según las funciones de membresía.

  • Fusificador Singleton

"Es el método más utilizado, principalmente en sistemas de control.", según Martín del Brío, B. et al (2002), ".consiste en considerar los propios valores discretos como conjunto difuso". Por lo tanto, cada valor discreto pertenece a un conjunto difuso donde tiene un valor 1 y los demás tienen valor 0.

  • Fusificador no Singleton

Según Martín del Brío, B. et al (2002), "En el caso de los fusificadores no Singleton, se utiliza una función exponencial con forma de campana centrada en un valor x de entrada, de anchura igual a la desviación estándar y amplitud a".

  • Defusificador

Según Martín del Brío, B. et al (2002), "El defusificador es la función que transforma un conjunto difuso en un valor no difuso".

  • Defusificador por máximo

Definido como:

edu.red

Donde y es el punto de V en que edu.redalcanza su valor máximo y edu.redse define como: edu.red

  • Defusificador por media de centros

Definido como: edu.red

Donde y-l representa el centro del conjunto difuso Gl definido como el punto de V en el que edu.redalcanza su valor máximo y edu.redse define como los M conjuntos difusos Bl con l=1,2,.,M y donde cada uno de los cuales es el resultado de aplicar la entrada A" a cada una de las M reglas de la base de reglas difusas que conforman el conjunto de reglas del sistema.

  • Defusificador por centro de área

Definido como: edu.red

Donde Ml es el momento en torno al eje y del universo de discurso de la salida V de la función de inclusión del conjunto difuso Gl, Al es el área y edu.redse define igualmente que en el Defusificador por media de centros.

  • Sistemas Difusos

En el sistema descrito por Surmann et al (1995), utilizan 3 funciones de membresía por cada sensor, lo que hacen un total de 27 reglas difusas. El control basado en la lógica difusa implementado es de unas 180 reglas difusas con 30 entradas y 11 salidas.

Para Tsourveloudis et al (2005), ".el uso de lógica difusa es muy importante en la creación de robots autónomos, sobre todo en los sistemas de navegación para estos por su extensa aplicabilidad y la representación de nociones inherentemente imprecisas.". En el sistema propuesto por estos autores se toma en cuenta un controlador difuso de 2 capas donde la primera capa se encarga de evaluar las lecturas de los sensores e interpreta el entorno del robot y la segunda capa se encarga de controlar el movimiento del robot por medio de la información obtenida de la capa anterior, también se encarga de la posición, velocidad, rumbo, etc.

Para el modelo presentado en Tunstel (2001) se utiliza la lógica difusa, dado que para obtener una inferencia robusta por parte del sistema y razonamiento aproximado bajo la incertidumbre es mejor el uso de una colección de conductas primitivas que se codifican como reglas difusas que son gobernadas por la inferencia difusa.

En Yang et al (2006a) se propone un sistema basado en la lógica difusa que tiene como característica principal una función de membresía llamada NEAR que interpreta la cercanía de los objetos en el entorno del robot y los ángulos a los que se encuentran, luego de hacer uso de las reglas de la lógica difusa determina que tan cerca o lejos está de un obstáculo. En este proyecto se implementa una función NEAR con una estructura diferente a la expuesta en Yang et al (2006a), la diferencia radica en la cantidad de variables de entada y salida.

  • Algoritmos Genéticos

En Amar et al (2000) se definen como:

Los Algoritmos Genéticos son una de las más conocidas y originales técnicas de resolución de problemas dentro de lo que se ha definido como "Computación Evolutiva" (o "Algoritmos Evolutivos"), término que agrupa a los Algoritmos Genéticos, las Estrategias Evolutivas y la Programación Evolutiva. En realidad todas estas técnicas son muy parecidas y comparten muchos aspectos. Un Algoritmo Evolutivo es una técnica de resolución de problemas inspirada en la evolución de los seres vivos.

Por lo tanto, los algoritmos genéticos son una herramienta importante al momento de resolver problemas donde se deben tener en cuenta muchas variables, las cuales se deben ir tomando en cuenta para alcanzar el nivel óptimo en cuanto al resultado que se desea obtener.

Según Wahde (2004):

Los algoritmos genéticos toman ejemplo de la naturaleza en muchos aspectos, pero en realidad son una simplificación de esta, dado que en la naturaleza no se utiliza toda la información almacenada en los cromosomas y parte de esta queda en un estado "Dormido" que se puede ver reflejado en generaciones posteriores. Además, en la naturaleza los cromosomas vienen en pares, por lo que al momento de combinarse hay cromosomas que pueden ser recesivos o dominantes, caso que no se utiliza en los algoritmos genéticos donde un cromosoma contiene la información necesaria a cerca del problema que se desea solucionar.

En efecto, la información que se utiliza para crear los genes en un algoritmo genético es la necesaria para resolver el problema, y cada vez que se hace un cruce entre 2 genes se obtiene los mejores resultados de cada característica para darle la ventaja al gen resultante sobre los otros miembros de la población. Por eso no se necesitan datos que sean recesivos, por que serían obsoletos al momento de hacer el cruce y se perdería esta información. Lo contrario sucede en la naturaleza, donde la información recesiva puede activarse en cualquier momento.

Según Haupt (2004), ".un cromosoma es un arreglo de valores variables que pueden ser optimizados.", también se toma en cuenta que: ".una función de costo toma como entrada un cromosoma y por medio de un proceso matemático o un juego modifica la entrada y la convierte en una salida deseada aproximando los valores de entrada.".

La estructura que deben tener estos algoritmos según Amar et al (2000) es la siguiente:

En un Algoritmo Evolutivo se define una estructura de datos que admita todas las posibles soluciones a un problema. Cada uno de los posibles conjuntos de datos admitidos por esa estructura será una solución al problema. Unas soluciones serán mejores, otras peores. Solucionar el problema consistirá en encontrar la solución óptima, y por tanto, los Algoritmos Evolutivos son en realidad un método de búsqueda.

Ejemplo de un algoritmo genético estándar según Haupt (2004):

  • Definir la función de costo o fitness function, los costos, las variables y la estructura del cromosoma.

  • Crear la población inicial.

  • Decodificar cromosomas.

  • Buscar costo para cada cromosoma.

  • Seleccionar las parejas.

  • Aparear.

  • Mutar.

  • Verificar convergencia, repetir desde el paso 3 hasta que se encuentre el cromosoma óptimo.

En Wahde (2004) se utiliza la siguiente estructura de algoritmo genético:

  • Seleccionar la población inicial.

  • Codificar de forma binaria los genes de cada individuo de la población.

  • Seleccionar la función de costo.

  • Proceso de selección por medio de ruleta rusa.

  • Cruce de un punto (One-point Crossover), donde se selecciona de forma aleatoria un punto de cruce.

  • Calcular las variables de probabilidad de cruce y de mutación.

  • Utilizar elitismo, se copia la estructura del mejor individuo de cada generación y se hace una transferencia hacia la siguiente generación.

  • Reemplazar la generación con la nueva.

En Haupt (2004) se estudian 4 tipos de selección:

Selección desde arriba hacia abajo, lo que se hace es comenzar en el tope de la lista e ir seleccionando en pares hasta que se hayan seleccionado los mejores para luego aparearlos, este método no se apega mucho a la naturaleza, pero es el más fácil de implementar. Selección aleatoria, en este caso se generan números aleatorios que representan las filas donde se encuentran los cromosomas a aparear. Selección aleatoria con peso, para este caso se utiliza la probabilidad asignada al cromosoma e inversamente proporcional al costo, lo que significa que mientras el costo sea mayor, menor la probabilidad de aparear ese cromosoma, para este método hay 2 formas de obtener el costo: por rango, que utiliza el rango que tiene el cromosoma dentro de la población, y por costo, que utiliza el costo del cromosoma en vez del rango. Y el método de selección por competencia, en este caso se toma un subconjunto desde la población y de estos se seleccionan los que están en mejor condición para ser apareados.

Para Wahde (2004), ". Cuando un algoritmo genético se utiliza para resolver problemas de optimización, las variables del problema se codifican en estructuras llamadas Cromosomas. Cada Cromosoma consiste de un número de elementos llamados Genes .", además ". la estructura de los Cromosomas puede cambiar de problema en problema, dependiendo del problema que se desea resolver .".

Según Haupt (2004), ". la optimización es el proceso de hacer algo mejor.". La optimización consiste en hacer variaciones a un concepto inicial y usar la información obtenida para mejorar esa idea. Los algoritmos genéticos han demostrado ser eficientes en cuanto a la optimización de problemas complejos en muchas áreas de las ciencias, en especial en las ciencias de la computación, por que permiten manejar información especifica del problema y obtener los datos óptimos con los que se pueden trabajar. También se define cruce (crossover) como: ".la combinación de genes para producir otros con rasgos (traits) combinados y seleccionar los genes con los mejores rasgos o características.", esto se hace para que los genes o individuos de una población asignados para ser padres, sean los genes que tengan los valores óptimos para que el cruce sea positivo para la generación siguiente. Pero existe otra forma de propagar valores dentro de la población, esta se llama mutación, ".una mutación ocurre cuando los cruces no producen cambios significativos en la población, por lo tanto se pueden incrementar las variables de forma elitista dentro de la población con cierta probabilidad.".

Para Wahde (2004), ". la evolución, dada su naturaleza estocástica, puede encontrar diferentes soluciones para un problema dado .". También se puede observar que para Wahde (2004): ". los usos para los algoritmos genéticos son infinitos, dada la variedad de problemas que se pueden representar en la forma de genes. Además, la cantidad de problemas de optimización es grande y muchos de estos problemas se pueden resolver de forma sencilla por medio de algoritmos genéticos .".

En Haupt (2004) se muestran los diferentes usos de los algoritmos genéticos aplicados a varias áreas de la ciencia, las optimizaciones pueden ser:

1. Optimización de Prueba y Error se refiere al proceso de ajustar las variables que afectan la salida sin conocer mucho sobre el proceso que produce esa salida.

2. Si existe únicamente una variable, la optimización es unidimensional. Un problema que tiene más de una variable, requiere una optimización multidimensional. Las optimizaciones se vuelven más difíciles a medida que se incrementa el número de dimensiones.

3. Optimización dinámica significa que la salida es una función del tiempo, mientras que la estática significa que la salida es independiente del tiempo.

4. Las variables discretas tienen un número finito de valores posibles, mientras que las continuas tienen un número infinito.

5. La optimización controlada incorpora igualdades y desigualdades variables a la función de costo. Las no controladas permiten a las variables tomar cualquier valor.

6. Algunos algoritmos tratan de optimizar el costo iniciando desde un conjunto inicial de valores variables. Estos algoritmos se concentran en los mínimos, pero por lo normal son rápidos.

En este documento se utilizan los algoritmos genéticos para optimizar el sistema basado en la lógica difusa desarrollado para describir las conductas del robot, por lo tanto el gen final debe tener todas las características del sistema con los valores óptimos para el manejo del robot.

Para el modelo propuesto en Mahmoudi et al (2004), se tiene como base los algoritmos genéticos y la planeación de ruta, la función para determinar el mejor robot se basa en 2 parámetros: El primero es el tiempo en que toma el robot en llegar al objetivo, si el robot toma mucho tiempo en llegar al objetivo obtiene más puntos y menos probabilidad de ser elegido como el mejor; el segundo parámetro es penalizar a los robots que choquen con los obstáculos que se encuentran en el entorno, cada vez que un robot choca se le agrega un valor constante a la función del robot, mientras menos valor tenga la función al final del camino mejor es el robot.

En el sistema propuesto por Chronis et al (1999) es un agente controlado por un conjunto dinámico de reglas difusas, donde el conjunto de reglas es aprendido por medio de algoritmos genéticos. Las reglas se van ajustando por medio de sesiones de entrenamiento y se prueban cuando se observa que la conducta obtenida es satisfactoria. Con este método se pueden aprender diferentes esquemas de navegación dependiendo en la conducta requerida por el robot, sin necesidad de hacer muchos cambios al sistema, sino en las funciones que se evalúan.

CAPITULO 3

Sistema propuesto

  • Estructura del Robot

En este proyecto se hace una síntesis de los diferentes casos presentados anteriormente para obtener las conductas que debe tener el robot: Ir a meta, evitar obstáculo, seguir pared, visitar próximo, seguir adelante, girar y comer. Cada una tiene una función especial y está regida por varias reglas difusas que van a ser optimizadas por medio de algoritmos genéticos para desarrollar un sistema autónomo, en forma de un cromosoma, que puede ser implementado en un robot real y funcionar de acuerdo a las especificaciones del robot que se describe en la sección anterior.

El robot propuesto consta de dos motores de velocidad variable los cuales tendrán asociada una función difusa que maneja la velocidad de cada motor dependiendo de la entrada que los sensores envían a las funciones. Se propone un robot con un arreglo de seis sensores ultrasónicos situados en la parte frontal del robot, esto para simplificar el sistema donde el robot podrá girar sobre su propio eje, por lo tanto no se necesitan sensores en la parte de atrás. Las siguientes figuras muestran la posición de los motores y los sensores en el robot físico:

edu.red

Cada uno de los sensores presenta datos de los obstáculos cercanos al robot, al igual que las metas y submetas, los 2 de enfrente permiten al robot detectar obstáculos en su camino, los 2 de los lados permiten la detección de obstáculos para dar vuelta hacia la izquierda o la derecha, y el resto de los sensores permiten detectar otros obstáculos que puedan interferir en el camino del robot. Cada uno de los sensores está a 30° del anterior, por lo que cada uno envía la información del ángulo al que se encuentra el obstáculo. En el caso de la navegación, los sensores deben ser infrarrojos o ultrasónicos, para el reconocimiento de las metas (los obstáculos que el robot debe buscar) se utilizan cámaras digitales.

  • Estructura del Cerebro

Lo que se pretende es crear un sistema de dos capas de reglas difusas para la navegación del robot. La primera capa toma los datos de los sensores y se obtienen tres valores, éstos representan los obstáculos que hay a la izquierda, derecha y enfrente del robot. Estos valores se obtienen tomando el promedio de la entrada de los sensores. La segunda capa se encarga en sí de la navegación tomando en cuenta la salida de la primera capa, es capaz de determinar donde están los obstáculos y cual es la acción a tomar, o sea seguir adelante o evitar obstáculo.

  • Estructura de las Conductas

Obstáculo enfrente: Cuando el grupo de dos sensores frontales se activa, entonces hay un obstáculo enfrente.

Obstáculo al lado derecho: Para determinar si hay un obstáculo a la derecha se toma el promedio de las distancias obtenidas del conjunto de los tres sensores en la parte derecha del robot.

Obstáculo al lado izquierdo: Al igual que la anterior, se toma el promedio de los datos de los tres sensores de la izquierda y se determina si hay un obstáculo en la parte izquierda del robot.

Para determinar si hay obstáculos a los lados o enfrente del robot, se deben leer los sensores y se determina si han detectado un objeto en el camino del robot, esto se logra con la primera capa de funciones difusas, una vez determinado donde están los obstáculos, entran en vigencia las conductas de la segunda capa, esta capa debe ser capaz de orientar al robot de forma que no haya colisión y que pueda llegar a la meta.

Seguir Adelante: En esta conducta lo que se pretende es hacer que el robot continúe hacia adelante mientras no hayan obstáculos en frente. Por lo tanto la información de la primera capa debe ser procesada antes para saber donde están los obstáculos, si no hay obstáculos enfrente, el robot debe seguir adelante.

Girar: Con esta conducta se gira el robot un delta del ángulo hacia donde el robot debe ir, esta corrección puede ser desde 0.1° hasta 180°, dependiendo de la corrección hecha por la primera capa de funciones difusas.

Ir a Meta: Esta función es una combinación de varias características. Ir a meta utiliza el Evitar obstáculo cuando sea necesario, al igual que seguir pared, visitar próximo y seguir adelante. Esta conducta se evoluciona contabilizando el tiempo que tarda el robot en llegar a la meta pasando por los puntos designados, pero como dentro de esta conducta hay otras involucradas, se deben evolucionar todas satisfactoriamente.

Evitar Obstáculo: Con esta conducta el robot puede evitar múltiples obstáculos dado que la primera capa del sistema basado en la lógica difusa le dice a la segunda capa donde están los obstáculos, una vez esta información es procesada, la segunda capa se encarga de hacer las correcciones necesarias al robot para que pueda esquivar el obstáculo o los obstáculos.

Seguir Pared: Una de las características que debe tener un robot autónomo es seguir paredes, puede ayudar en algún momento a resolver problemas donde los obstáculos son muy grandes para determinar donde está la meta, también se evoluciona con el algoritmo genético.

Visitar Próximo: Se utiliza para hacer que el robot vaya hacia el punto más cercano donde puede comer, esto es para la evolución del robot, pero sirve al momento de tener múltiples metas.

Comer: Se utiliza simplemente para el algoritmo genético con el cual se van a evolucionar los robots, el robot que más come es el más fuerte.

  • Estructura de la Evolución

El algoritmo genético utilizado en este proyecto para evolucionar los individuos consta de cinco partes: Un cromosoma con la estructura interna del individuo y de las características a evolucionar, el método de selección de los individuos más aptos, la función de selección, el método para cruzar los individuos que tengan permitido cruzarse y el método para mutar los individuos de cada generación.

3.4.1. Cromosoma

El cromosoma que se debe generar tiene siete características, las mismas características mencionadas anteriormente. Estas se deben evolucionar a medida que las generaciones vayan aumentando para obtener el cromosoma con las mejores características. La función que se utiliza para seleccionar el mejor robot está relacionada con la capacidad de alimentarse, dado que para alimentarse el robot debe esquivar obstáculos estáticos y dinámicos, como son otros robots, ir a un punto especifico donde está la comida y realizar diferentes actividades que le van a dar puntos para ser seleccionado como el mejor robot. En el caso de las colisiones, el robot no obtiene puntos si se choca, pero por el contrario obtiene todos los puntos si no se choca, por lo tanto cada característica se ve de forma diferente y se evoluciona de forma diferente.

El cromosoma utilizado se puede definir como un arreglo donde están almacenadas las variables de entrada y de salida de las conductas y las reglas difusas, cada uno de los conjuntos difusos para las funciones de membresía se encuentra representado en el arreglo y puede ser evolucionado, a continuación se muestra la estructura del cromosoma:

edu.red

Figura 11: Cromosoma utilizado en el algoritmo genético.

Dentro de esta misma estructura, se debe codificar de la misma manera todas las conductas del robot. Por lo tanto, el arreglo tiene una estructura de 1×66, donde cada variable tiene asignados once valores críticos de las funciones de membresía, veintisiete reglas para el movimiento autónomo y seis del sistema difuso que maneja las metas cercanas y que se evolucionan igual que los otros valores.

  • Selección

En este caso se utiliza la selección por competencia, en este tipo de selección, todos los individuos se pueden cruzar de una u otra forma y compiten para ver quien es el más apto. En el caso de los dos individuos con mejor calificación, se cruzan entre sí para tratar de generar un individuo con las mejores características posibles hasta el momento.

  • Función de selección

La función utilizada para obtener la calificación del individuo es la siguiente:

  • 1. 40% de la calificación se obtiene si el robot recorre de forma eficiente el mapa asignado, en este caso se utiliza la formula: (distancia recorrida/iteraciones)x40.

  • 2. 40% de la calificación se obtiene al visitar las metas, la formula utilizada para calcular el porcentaje es: (metas visitadas/total de metas)x40.

  • 3. 20% se obtiene si no hay choques, si el robot se choca, obtiene 0% y además termina la simulación.

En este caso, un robot perfecto obtiene 100%, pero el tiempo que se tarda el algoritmo en obtener un individuo con una calificación perfecta depende de los datos iniciales que se introduzcan al sistema y de la cantidad de individuos y generaciones.

  • Cruce

Para el cruce de la población, se toman los 2 individuos con la mejor calificación y se cruzan de forma que las mejores características quedan entre los individuos resultantes de este cruce, el resto de los individuos se cruzan de forma aleatoria dependiendo del porcentaje especificado por el usuario al inicio de la evolución.

3.4.5. Mutación

En este caso se utiliza un método de mutación donde los datos cambian con una distribución normal o Gaussiana. La distribución normal se utiliza para obtener un valor dentro del rango deseado de evolución, El valor actual se utiliza como media para la función normal y se utiliza una varianza especificada al inicio de la simulación.

  • Estructura del Cerebro Robótico

El cerebro robótico tiene la misma estructura del cromosoma que se propone anteriormente, donde los valores que se manejan dentro de éste son los valores significativos de las funciones de membresía del sistema difuso y los valores de las reglas difusas. La estructura del cerebro se puede representar de la siguiente forma:

Variables de entrada de la función NEAR:

Variable Derecha

edu.red

Figura 12: Función NEAR para la primera variable de entrada del Sistema Difuso, Derecha.

Near: [0.01971 0.04382 0.04471 0.1369]

Médium: [0.06959 0.2314 0.3705]

Far: [0.1256 0.3087 2 2]

Variable Centro

edu.red

Figura 13: Función NEAR para la segunda variable de entrada del Sistema Difuso, Centro.

Near: [0.056 0.06561 0.1633 0.4771]

Médium: [0.3527 0.5882 0.7266]

Far: [0.6444 0.7446 2 2]

Variable Izquierda

 

edu.red

Figura 14: Función NEAR para la segunda variable de entrada del Sistema Difuso, Izquierda.

Near: [0.02224 0.0485 0.1216 0.3533]

Médium: [0.2071 0.5689 0.6072]

Far: [0.4514 0.6288 2 2]

Variable de Salida de la función NEAR:

edu.red

Figura 15: Función de membresía para la variable de salida del Sistema Difuso, Dirección.

Front: [0 0.5 1]

Left: [1 1.5 2]

Right: [2 2.5 3]

Back: [3 3.5 4]

En este caso se utiliza un cerebro evolucionado hasta obtener 100% de calificación, el mapa utilizado es el tres y la cantidad de iteraciones es de 200. Por medio de una heurística donde se hacen las combinaciones de los valores que pueden obtenerse de los diferentes sensores se construye la tabla de reglas difusas, ver Tabla 2 en la página 38.

Una vez construida la tabla, el cromosoma nos permite obtener todos los valores resultantes de las combinaciones de las variables de entrada y las funciones de membresía. En este caso, los valores obtenidos ya se encuentran evolucionados hasta llegar al valor máximo que se puede obtener en el mapa tres, se puede observar que la variable de salida o dirección tiene 4 valores, que se pueden ver en la gráfica anterior, y es la dirección que el robot debe tomar en caso de cumplirse una de las combinaciones de la tabla.

Por lo tanto, el diagrama del cerebro robótico se puede representar según se muestra en el anexo 4 de la página 39, un sistema difuso con tres entradas y una salida que permite al robot moverse libremente sin necesidad de la intervención humana.

CAPITULO 4

Implementación

4.1. IMPLEMENTACIÓN EN MATLAB

El software utilizado para desarrollar la simulación es Matlab. Se utiliza Matlab por que incluye varios módulos que permiten crear sistemas difusos y al mismo tiempo se puede programar y llamar estos sistemas dentro del código. El sistema difuso se genera utilizando el módulo fuzzy de Matlab de la siguiente manera:

  • 1. Se define el tipo de inferencia, las entradas y las salidas.

En este caso se utiliza el tipo Mamdani para la inferencia y el sistema tiene tres variables de entrada y una de salida, las tres variables de entrada representan los datos de los sensores frontales y laterales, la salida es el ángulo de la trayectoria del robot. El método de defusificación que se utiliza es el método por centro de área, para la operación "and" se utiliza el mínimo y para el "or" se utiliza el máximo.

edu.red

Figura 16: Ejemplo de Sistema Difuso en MATLAB.

2. Se definen las funciones de membresía de las variables de entrada y de salida.

Para esto se utiliza un módulo de Matlab donde se pueden especificar los diferentes tipos de funciones de membresía que trae definidas, entre ellas se encuentras: Triangulares, trapezoidales, Gauss y tipo Sigma. Los parámetros se definen manualmente, pero estos valores se van a ir evolucionando con los algoritmos genéticos hasta obtener los valores más efectivos para que el robot se pueda desenvolver de forma eficiente en el ambiente. En el caso de la salida, el ángulo de giro varía entre 0° y 180° dependiendo de las entradas de los diferentes sensores del robot.

edu.red

Figura 17: Definición de la función NEAR.

3. Se definen las reglas difusas que van a regir los comportamientos o conductas del robot.

Las reglas difusas pueden definirse de una forma automática con los algoritmos genéticos, pero en este caso se definen con una heurística inicial y a medida que se va realizando la simulación el sistema va cambiando los valores de forma aleatoria para ver cual configuración cumple con el objetivo de la simulación. Se pueden observar las entradas y las salidas con los diferentes valores difusos. Los valores de entrada utilizados para la función de membresía son: Near, Medium y Far, los que significa que los valores Near son valores que se encuentran cerca del robot, Medium los que están un poco lejos del robot y los valores Far se encuentran lejos del alcance del robot.

edu.red

Figura 18: Editor de Reglas Difusas de MATLAB.

4. Una vez terminado el sistema difuso, seguimos con la creación del algoritmo genético.

El algoritmo utilizado en la simulación consta de cinco pasos:

  • a. Inicializar la población, este proceso se realiza de forma aleatoria, el archivo donde se encuentra el código de esta función es initpop.m, además existe la posibilidad de tomar un robot ya evolucionado y seleccionarlo para evolucionarlo nuevamente.

  • b. Evaluar cada uno de los individuos, el archivo evolucionar.m se encarga de tomar todos los individuos generados en el paso anterior y evaluar cada uno, evaluate_individual.m devuelve el sistema evolucionado y la calificación del individuo, dentro de esta función se ejecuta la función simrobot.m que es la encargada de correr los individuos dentro del mapa seleccionado, pero también se encarga de mostrar la simulación.

  • c. Seleccionar los mejores y cruzar los individuos según el criterio de competencia, el archivo donde se identifican los individuos aptos para ser cruzados es tournament_select.m, en este caso se seleccionan los individuos con mayor porcentaje de calificación y se cruzan, el porcentaje de individuos restante que se especifique al inicio del programa se cruzan de manera aleatoria.

  • d. Mutar los individuos de acuerdo al porcentaje definido de mutaciones, se utiliza una función llamada mutate.m y dentro de ella se utiliza una función interna de Matlab llamada normrnd, genera valores aleatorios en una distribución normal y recibe como parámetros el valor que se quiere mutar y la desviación estándar.

  • e. Se repite hasta que se llegue a la condición de finalización, o sea que se llegue a la última generación.

Se pueden cambiar varios aspectos de la simulación como son: Porcentaje de cruce, porcentaje de mutación, porcentaje de población que participa en el torneo, la cantidad de individuos que se desean tener por cada generación o población y la cantidad de generaciones que se desean analizar. También se puede cambiar la cantidad de iteraciones de la simulación, esto con el fin de analizar entornos más complejos o para prolongar el proceso de evolución. A medida que se aumenten las iteraciones, más tiempo tardará la evolución, pero mayor es la probabilidad de obtener robots mejores, dado que a mayor tiempo de evolución, mayor es la probabilidad de hacer más movimientos y visit

En el programa de simulación se pueden distinguir dos procesos: Evolución del robot y Simulación del mismo. En la evolución del robot se utilizan los datos de la pantalla principal para aplicarlos al algoritmo genético, una vez terminada la evolución, se muestra la gráfica y se obtiene la calificación máxima y los datos del robot.

Una vez terminada la evolución de los datos, se pueden simular los resultados, también se puede aumentar la cantidad de iteraciones para correr la simulación por más tiempo. Del mismo modo se puede cambiar el escenario para probar la simulación en diferentes ambientes y ver como se desenvuelve el robot, aunque el robot sea únicamente evolucionado para correr en un ambiente en específico, pero puede suceder que un robot se desenvuelva de manera eficiente en ambientes diferentes.

edu.red

Figura 19: Pantalla principal del Simulador.

edu.rededu.red

Figura 20: Simulación en diferentes ambientes.

4.2. IMPLEMENTACIÓN EN EL ROBOT FÍSICO

Este proyecto se realizó con el objetivo de crear un cerebro robótico para ser implementado en un robot físico. Aunque no sea uno de los objetivos implementar el cerebro en el robot, se presentan dos formas de migrar. Se utilizó MATLAB por que es una herramienta que permite de forma fácil y rápida la migración de código hacia otros lenguajes como C++ y Java, al igual que existen varios módulos implementados en muchos lenguajes que permiten trabajar con sistemas difusos y algoritmos genéticos.

El primero de los métodos que se sugiere es traducir el código del simulador directamente a C++ o Java para correrlo dentro del sistema operativo que se utilice para manejar los dispositivos del robot. Una vez hecho esto, se traducen los movimientos del robot real hacia los movimientos dentro del simulador. De esta forma, cuando el simulador haga un movimiento, el robot se debe mover del mismo modo. Para finalizar, los cerebros generados por el programa que resulta de esta investigación, se podrán correr directamente ya que tienen la misma estructura que necesita el simulador.

El segundo método consiste en conseguir librerías de lógica difusa, ya sean de C++, Java u otro lenguaje, con las cuales se puedan implementar los cerebros evolucionados ya que su estructura representa las entradas y las salidas del sistema difuso. En este caso también se puede implementar el algoritmo genético y hacer que a medida que el robot vaya caminando, se vaya evolucionando.

Resultados

En esta sección, se presentan dos escenarios para navegación de robots. En el primer escenario no hay obstáculos en el ambiente, esto se hace para probar la conducta del robot de ir a meta. En el caso de no haber obstáculos en el camino del robot, este recorre el ambiente en el que se encuentra buscando las metas que se más cercanas a él, una vez que todas se han encontrado el robot obtiene todos los puntos y por lo tanto se convierte en el mejor adaptado para ir a todos los puntos designados. Se muestran dos gráficas, la primera muestra el mejor robot en una población de 10 individuos en 10 generaciones, el mejor obtuvo una calificación de 94%, en el segundo caso, el mejor robot obtuvo la misma calificación, pero se puede ver que la población se manipula durante 100 generaciones, en este caso el mejor robot se obtiene en la generación 20, es posible que mientras más generaciones haya es posible que tarde más tiempo en obtenerse el mejor individuo.

En el segundo escenario se considera un ambiente con varios obstáculos para observar como se comporta el robot. En este caso, el mejor individuo obtuvo 100% en la generación 55, por lo que se puede decir que a medida que aumenta el número de generaciones se puede llegar a un mejor resultado que el valor obtenido en una simulación con menor número.

edu.rededu.red

Figura 21: Evoluciones de robots en ambientes sin obstáculos.

Figura 22: Evoluciones de Robots en ambientes con obstáculos.

En la primera evolución se utiliza el mapa número 3, que es uno de los más simples, se utiliza un porcentaje de cruce de 0.8, lo que significa que un 80% de la población tiene la oportunidad de ser cruzado. El porcentaje de mutación es de 0.3, o sea que el 30% de la población es afectada por las mutaciones aleatorias. Como se había explicado antes, el proceso de mutación utiliza una varianza que puede ser de 0.01 a 0.1. El porcentaje de torneo es de 0.75, lo que significa que el 75% de la población se selecciona para ser cruzado. La población es de 10 individuos y el número de generaciones es de 10. La cantidad de movimientos o iteraciones es de 200, lo que significa que para obtener una mejor calificación el robot debe recorrer la mayor parte de su entorno con el número de iteraciones dado. En este caso se obtuvo un 80% de calificación final para el cerebro.

En el segundo caso, se utilizan los mismos parámetros que en el caso anterior, únicamente se cambian el número de generaciones, en este caso 100, y el mapa. En este caso se obtuvo una calificación final de 94%, se puede observar que con un número mayor de generaciones es posible obtener un mejor resultado. Para mayor información referente a las pruebas que se hicieron, ver tabla 1 página 38.

Conclusiones

Se creó un sistema capaz de generar cerebros robóticos para diferentes ambientes que pueden o no tener obstáculos y metas que permitan simular ambientes reales donde se desea que el robot se desenvuelva.

Como se ha dicho en este documento, las conductas en los sistemas autónomos son de gran complejidad por que dependen de las propiedades de los ambientes a los que se enfrentan dichos sistemas. En el caso de los robots, mientras más complejo o mientras más obstáculos y metas tenga el ambiente, es más difícil elegir entre las diferentes conductas que se pueden ir descubriendo, por lo tanto se hace más difícil la evolución del robot. Por otro lado, mientras más tiempo pase un robot dentro de un ambiente, es más probable que desarrolle mejor sus conductas y por lo tanto va a tener mejor desempeño.

Tomando en cuenta los dos casos presentados en este documento donde un robot se evolucionó en un entorno simple, sin obstáculos, donde únicamente debía seguir las metas hasta recorrerlas todas y el otro caso donde habían varios obstáculos que le impedían en cierta forma interactuar fácilmente con el entorno, se puede observar que en el ambiente simple puede tomar menos tiempo en conseguirse un individuo que tenga una calificación perfecta, al contrario del otro tipo de ambiente.

Por el otro lado, la evolución del robot se consigue por medio de un algoritmo genético con ciertas características descritas en secciones anteriores de este documento. Se puede observar que mientras mayor es el número de individuos de la población es posible obtener resultados de forma más rápida que cuando no se tienen muchos individuos. Por el contrario, si se toma una población con pocos individuos y se analizan los datos durante un rango grande de generaciones, es posible que al final no se obtenga un individuo que sea el más apto.

Discusión

En este proyecto se utilizó la lógica difusa para desarrollar un sistema autónomo con diferentes características y ser implementado en un robot real. Éste debe desempeñarse de forma eficiente en un ambiente desconocido. A su vez se utilizó un algoritmo genético para buscar los mejores resultados para cada uno de los escenarios propuestos. Como se había dicho antes, la lógica difusa se utiliza en muchos de los sistemas autónomos en proyectos realizados por otros investigadores, es el caso de Saffiotti (1995), Surmann et al (1995), Chronis et al (1999), Mahmoudi et al (2004), Tsourveloudis et al (2005) y Yang et al (2006a y b). Pero en cada uno de ellos se ven diferentes enfoques de evolución, en el modelo de Saffiotti (1995) se utilizan mapas de reconocimiento, sin ningún método de evolución, dado que los mapas se generan desde el principio y el robot se guía por medio de ellos. En el modelo de Surmann et al (1995) se utilizan variables de estado difuso donde se van guardando las conductas que cambian el comportamiento del robot. En Chronis et al (1999) se describe un sistema muy parecido al presentado en este proyecto, un sistema difuso evolucionado por algoritmos genéticos, pero difiere en las variables lingüísticas de entrada y salida, y la estructura del cromosoma. En el enfoque de Mahmoudi et al (2004) se puede observar que utilizan los algoritmos genéticos para la planeación de la ruta de movimiento y evitar los obstáculos. En el caso de Tsourveloudis et al (2005) se utiliza un sistema de dos capas de lógica difusa donde cada capa actúa independientemente, pero ambas ayudan a decidir cual es la conducta que el robot debe utilizar en un momento dado. En Yang et al (2006a) se utilizan mapas de reconocimiento, al igual que en Saffiotti (1995), la diferencia es que Yang et al (2006a) utilizan una función NEAR para asegurar que el robot no choque con los obstáculos, y por último en Yang et al (2006b) se estudian dos problemas de los sistemas difusos y proponen soluciones para ambos problemas, pero siempre utilizando la lógica difusa como método principal para manejar las conductas.

Por lo tanto, la estructura utilizada en este proyecto es un sistema difuso con tres variables de entrada, que son los valores obtenidos por los sensores de las tres direcciones: Frente, Izquierda y Derecha. Luego se obtiene la salida a través del proceso de fusificación donde se obtiene el ángulo de dirección del robot. Estos valores se evolucionan por medio del algoritmo genético, al igual que las funciones de membresía y los valores de las reglas difusas.

En muchos casos, los robots evolucionados presentan problemas de movimiento. La razón de esto es que el sistema difuso desarrollado para el proyecto es muy simple y no cuenta con un árbitro para administrar las conductas. Pero puede ocurrir que al obtener un individuo cuya evolución no sea la adecuada para el ambiente se obtenga el mismo resultado. También se puede observar que hay casos donde el individuo no visita ninguna meta, pero aún así obtiene una calificación alta, esto se da por la forma como se calcula el grado de aptitud, es posible que mejorando la forma de calificación o la función de aptitud se mejore el proceso de selección de los individuos.

Trabajos futuros

Sobre este mismo tema, se pueden destacar varios trabajos relacionados:

  • Implementar los diferentes cerebros robóticos evolucionados por el sistema propuesto en robots reales.

  • Navegación de robots utilizando Lógica Difusa y Redes Neuronales con mapas de Cohoren.

  • Aprendizaje automático de reglas difusas por medio de Algoritmos Genéticos.

  • Aplicar algoritmos de aprendizaje Fuzzy-Q para robots.

  • Navegación de robots por medio de reconocimiento de imágenes capturadas por cámaras digitales.

Anexos

  • 1. Tabla de evoluciones.

 

Cruce

Mutación

Varianza

Torneo

Población

Generaciones

Iteraciones

Calificación

Mapa

1

0.8

0.3

0.01

0.75

100

100

200

100.0%

map3

2

0.8

0.3

0.01

0.75

10

100

200

94.0%

map5

3

0.8

0.3

0.01

0.75

10

10

500

92.0%

map5

4

0.8

0.3

0.01

0.75

10

10

200

82.0%

map3

5

0.8

0.3

0.01

0.75

1000

10

200

80.8%

map5

6

0.8

0.5

0.01

0.5

10

100

200

76.0%

map5

7

1

0.2

0.01

0.8

10

10

200

55.2%

map5

8

0.8

0.3

0.01

0.7

10

10

200

54.60%

map5

9

0.8

0.3

0.01

0.7

10

10

200

28.0%

map

10

0.8

0.3

0.01

0.7

10

10

200

31%

map2

2. Tabla de Reglas Difusas.

Derecha

Centro

Izquierda

Dirección

N

N

N

2

N

N

M

0

N

N

F

1

N

M

N

3

N

M

M

0

N

M

F

1

N

F

N

2

N

F

M

3

N

F

F

2

M

N

N

0

M

N

M

2

M

N

F

2

M

M

N

1

M

M

M

2

M

M

F

2

M

F

N

3

M

F

M

3

M

F

F

0

F

N

N

2

F

N

M

1

F

N

F

1

F

M

N

0

F

M

M

3

F

M

F

0

F

F

N

2

F

F

M

2

F

F

F

3

3. Mapas para evolucionar los robots.

4. Diagrama del cerebro robótico.

Variables de Entrada

Referencias bibliográficas

  • 1. Aboshosha, A. (2003), An Introduction to Robot Distributed Sensors Part I. Dept. of Computer Science, University of Tübingen. Alemania.

  • 2. Amar, E. y Berlandez, I. (2000). Cátedra sobre Algoritmos Genéticos. Consultado en Octubre, 2006 en: http://www.frro.utn.edu.ar/isi/algoritmosgeneticos/html_data/3intro.

  • 3. Chronis, G., Keller, J. y Skubic, M. (1999), Learning Fuzzy Rules by Evolution for Mobile Agent Control. Dept. of Computer Engineering and Computer Science, University of Missouri, Columbia, U.S.A.

  • 4. Haupt, R. y Haupt, S. (2004), Practical Genetic Algorithms: Second Edition. U.S.A: John Wiley & sons, inc.

  • 5. Hellman, M. (2001), Fuzzy Logic Introduction.

  • 6. Jantzen, J. (1998), Tutorial On Fuzzy Logic. Department of Automation, Technical University of Denmark, Lyngby, Dinamarca.

  • 7. Mahmoudi, S., Bitanhsir, A., Forouzandeh, B. y Marandi A. (2004), A new genetic method for mobile robot navigation. Electrical and Computer Engineering Dep. University of Tehran, Iran.

  • 8. Martín del Brío, B., Sans Molina, A. (2002), Redes Neuronales y Sistemas Difusos 2da edición. Mexico. Alfaomega.

  • 9. Matlab 7 (2004), Copyright 1984-2004, The mathworks, inc.

  • 10. Mitchell, T. (1997), Machine Learning. McGraw-Hill Science/Engineering/Math.

  • 11. Na, Y. y Ho, S. (2003), Hybrid Control for Autonomous Mobile Robot Navigation Using Neural Network Based Behavior Modules and Environment Classification. Department of Electrical Engineering, Pohang University of Science and Technology. Pohang, South Korea.

  • 12. Nolfi, S. (2005), Behaviour as a Complex Adaptive System: On the role of Self-Organization in the Development of Individual and Collective Behaviour. Institute of Cognitive Sciences and Technologies, Roma, Italia.

  • 13. Saffiotti, A. (1995), Fuzzy Logic in Autonomus Robot Navigation. Universidad de Bruselas, Bruselas, Bélgica.

  • 14. Surmann, H., Huser, J. y Peters, L. (1995), A Fuzzy System for Indoor Mobile Robot Navigation. German National Research Center for Computer Science, St. Augustin, Alemania.

  • 15. Tsourveloudis, N. C., Doitsidis, L., y Valavanis, K. P. (2005), Autonomous Navigation of Unmanned Vehicles: A Fuzzy Logic Perspective.

  • 16. Tunstel, E. (2001), Ethology as an Inspiration for Adaptive Behavior Synthesis in Autonomous Planetary Rovers. Robotic Vehicles Group, Jet Propulsion Laboratory, Pasadena, CA. U.S.A.

  • 17. Wahde, M. (2004), Biological Basis for Evolutionary Algorithms. Course in Artifitial Intelligence: Biological Methods.

  • 18. Yang, X., Patel, R. V., y Moallem, M. (2006a), A Fuzzy–Braitenberg Navigation Strategy for Differential Drive Mobile Robots. Department of Electrical & Computer Engineering, University of Western Ontario, London, ON, Canadá.

  • 19. Yang, X., Patel, R. V., y Moallem, M. (2006b). A Sensor Based Navigation Algorithm for a Mobile Robot Using Fuzzy Logic. International Journal of Robotics and Automation, Vol. 21, No. 2.

A Dios por darme la vida y permitirme terminar esta fase de mi vida.

A mis padres, Guillermo y Cecilia por su amor y su apoyo incondicional.

Y a mi esposa Elena por su amor y por permanecer a mi lado en cada paso que he dado.

AGRADECIMIENTOS

El autor expresa sus agradecimientos a:

  • Ingeniero Jorge García, Asesor del presente trabajo, por su apoyo durante la realización de este proyecto y por todas sus enseñanzas.

  • A los maestros de UNITEC, por enseñarme todo lo que sé.

 

 

 

 

Autor:

David Botero Rojas

Asesor: Jorge García Bolaños

UNIVERSIDAD TECNOLÓGICA CENTROAMERICANA

CAMPUS SAN PEDRO SULA

INGENIERÍA EN SISTEMAS COMPUTACIONALES

SAN PEDRO SULA

2007

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente