Diseño y desarrollo de un entorno de simulación dinámico para robots evolutivos

Roa Humanes, Gonzalo (2016). Diseño y desarrollo de un entorno de simulación dinámico para robots evolutivos. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S.I. Industriales (UPM).

Descripción

Título: Diseño y desarrollo de un entorno de simulación dinámico para robots evolutivos
Autor/es:
  • Roa Humanes, Gonzalo
Director/es:
  • Rossi, Claudio
Tipo de Documento: Proyecto Fin de Carrera/Grado
Grado: Grado en Ingeniería en Tecnologías Industriales
Fecha: 2016
Materias:
Escuela: E.T.S.I. Industriales (UPM)
Departamento: Automática, Ingeniería Eléctrica y Electrónica e Informática Industrial
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

[img]
Vista Previa
PDF (Document Portable Format) - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (4MB) | Vista Previa

Resumen

El presente Trabajo Fin de Grado tiene como fin la creación de un entorno de simulación dinámico para robots evolutivos. Robots modulares que cuentan entre sus características con servo-motores en las uniones de sus módulos dotados de tres grados de libertad en el giro y con sensores de distancia, los cuales deber ser capaces de adquirir por sí solos (mediante el uso de algoritmos evolutivos a sus controladores) tres habilidades muy concretas. La locomoción básica o capacidad de caminar en línea recta; esquivar obstáculos o ser capaces de desviar momentáneamente su trayectoria para salvar impedimento en el camino, y el alcance de puntos Objetivo, es decir, la habilidad de dirigir según se desee su trayectoria hacia un punto concreto. El entorno de simulación, además de ser capaz de entrenar a los robots en estas aptitudes, ha de contar con un “Mundo Real” en el que éstos, ya entrenados previamente, convivirán como si de una población de una especie natural se tratara. Dentro de dicho “mundo” los robots contarán con un nivel energético determinado que irá disminuyendo hasta causarle la “muerte” si no lo reponen consiguiendo recursos (“comida”). Además, en este “mundo” los robots podrán “aparearse” dando lugar a un nuevo robot, fruto del cruce de sus geometrías y cromosomas. Con esto se pretenden obtener nuevos robots con geometría a priori desconocidas y estudiar la evolución de la nombrada población inicial, en cuanto a geometrías y habilidades predominantes, así como en cuanto al crecimiento a decrecimiento del número de individuos. Por estas razones se exige el dinamismo del entorno de simulación. Su capacidad de introducir o eliminar robots en los diferentes zonas de entrenamiento y “mundo real” sin necesidad de detener la simulación y que el flujo de robots, nacimiento-entrenamiento-muerte, sea un flujo constante, imitando lo más posible lo que sucede en la naturaleza. Para llevar a cabo la construcción de este entorno de simulación se ha hecho uso, como herramientas de software primigenias, de las bibliotecas del simulador de físicas y colisiones de licencia libre ODE (Open Dynamics Engine) y del lenguaje de programación C++. A partir del estudio previo de todas las posibilidades que ofrecía ODE se decidió crear un primer software basado en la filosofía de clases de C++ y en la memoria dinámica. Esta última imprescindible para asegurar el dinamismo de la simulación, no acotando con su uso el tamaño alcanzando por las poblaciones o los robots tras largos tiempos de simulación. En cuanto a las C++ y su filosofía de programación orientada a objetos, fue usada para facilitar la estructura del código y el manejo de la enorme cantidad de datos y variables que supone el entorno de simulación deseado. El primero en ser definido como una clase fueron los propios robots, siendo posteriormente -en la simulación- cada individuo un objeto instanciado de la propia clase robot. Gracias a esto se pudieron definir cómodamente como atributos de la clase punteros raíz de listas de memoria dinámica que albergarían tantos módulos como la geometría del robot exigiera, así como tantos servo-motores necesitara su estructura. También la propia descripción de la geometría del robot, realizada mediante una codificación de símbolos en cadena de caracteres, es almacenada en forma de árbol de nodos (siendo los nodos una clase agregada de la clase robot) en memoria dinámica, siendo este árbol así mismo sostenido por un puntero raíz atributo de la clase robot. El constructor de la clase Robot ha sido aprovechado como organizador de la construcción y situación del Robot en el entorno de simulación. Es el constructor el encargado de inicializar todos los atributos e ir llamando a todos los métodos privados internos de la clase, encargados de generar las estructuras en ODE a partir de la cadena de caracteres definitoria y del árbol de nodos posteriormente creado. La definición de clase también permitió incorporar el software controlador del robot como un método público, que en cada llamada se encarga de mover los servos de los robots según una función periódica, cuyos parámetros son los cromosomas del robot. También cuenta entre sus funcionalidades el controlar los sensores de distancia y calcular la posición que ocupa el robot en el entorno de simulación. La aplicación de los algoritmos evolutivos usados para el aprendizaje de las habilidades comentadas corre también a cuenta de otro método público definido en la clase Robot, siendo éste encargado de calcular la Fitness, encaminada a evaluar los progresos del robot y de llamar a los métodos privados internos encargados de mutar los cromosomas según corresponda. La supervisión global de la simulación queda relegada al programa principal, la función main, que se encarga de inicializar el entorno de simulación e instanciar los objetos robot necesarios, que a su vez son también guardados en lista de memoria dinámica no acotando así su número. El controlador global también se encarga del bucle principal de la simulación, en que llama a los métodos públicos de los robots para que estos se muevan, muten o desaparezcan si deben ser eliminados. Por último entre sus funciones más destacadas está el salvar las simulaciones en fichero cada cierto tiempo y el control de los sistemas de comunicación. Tras el desarrollo de este software inicial y realizando modificaciones y adiciones se crean los programas que compondrán el entorno de simulación dinámico objeto de este TFG. A saber: -Mundo Real: que representa el hábitat donde convive la población de robots, buscan comida y se reproducen. -Entrenamiento 1: Programa en el que los robots resultado del cruce en el “Mundo Real” aprenden la locomoción básica. -Entrenamiento 2: Programa en el que los robots provenientes del Entrenamiento 1 aprenden la habilidad de alcanzar puntos Objetivo. -Entrenamiento 3: Programa en el que los robots provenientes del Entrenamiento 2 aprenden la habilidad de esquivar obstáculos. -Entrenamiento Único: Alternativa a que funde en uno todos los Entrenamientos antes mencionados. Los programas se comunican de forma circular (“Mundo Real”-->Entrenamiento1-->Entrenamiento2-->Entrenamiento3-->”Mundo Real”, o “Mundo Real”-->Entrenamiento Único-->”Mundo Real”) mediante colas de mensajes. Es un método que permite a los programas enviarse de unos a otros los robots que tengan que pasar de una fase a otra del entrenamiento. El envío se realiza mediante el directorio del fichero que contiene los datos del robot a traspasar para no acotar así el volumen de datos necesario para completar el envío de un robot y mantener el ya tan mencionado dinamismo.

Más información

ID de Registro: 44101
Identificador DC: http://oa.upm.es/44101/
Identificador OAI: oai:oa.upm.es:44101
Depositado por: Biblioteca ETSI Industriales
Depositado el: 12 Dic 2016 08:42
Ultima Modificación: 12 Dic 2016 08:42
  • Open Access
  • Open Access
  • Sherpa-Romeo
    Compruebe si la revista anglosajona en la que ha publicado un artículo permite también su publicación en abierto.
  • Dulcinea
    Compruebe si la revista española en la que ha publicado un artículo permite también su publicación en abierto.
  • Recolecta
  • e-ciencia
  • Observatorio I+D+i UPM
  • OpenCourseWare UPM