A la tercera va la vencida. Con esta entrada terminaremos la serie sobre robótica evolutiva. Las dos entradas anteriores se centraron en cómo un robot puede aprender comportamientos que nosotros deseamos, combinando aprendizaje por refuerzo con redes neuronales y algoritmos genéticos. Ahora, veremos que algunos investigadores han aplicado las ideas evolutivas hasta sus últimas consecuencias.
Diseño de robots por evolución
Ya hemos comentado que la robótica evolutiva, al margen de las técnicas utilizadas, trae un cambio de paradigma a la robótica: ¿para qué programar a mano un robot, si él mismo puede aprender? Pues bien, en vez de quedarse en la mera idea de programar comportamientos, hay quien se ha preguntado por qué deberíamos seguir diseñando robots. Es decir, por qué tenemos que pensar nosotros si un robot dado necesita un par de brazos, unas ruedas y una configuración concreta para llevar a cabo una tarea.
Si miramos a la naturaleza, la evolución ha esculpido todas las formas de vida, no solo sus comportamientos, sino también su morfología. La variedad de seres vivos es impresionante, siendo cada uno de ellos una solución para sobrevivir y reproducirse en sus entornos. Y la verdad es que las soluciones generadas por evolución funcionan muy muy bien.
Algunos investigadores han intentado reproducir esos resultados que vemos en la naturaleza. Claro, hacer eso con robots reales es algo muy complicado hoy en día. Pero por suerte, podemos construir simuladores en los que las condiciones son las que nosotros queremos. Podemos definir unas piezas básicas, unas articulaciones para juntar esas piezas e inducir movimentos, podemos definir la gravedad, la fricción y otros aspectos que hagan que los robots simulados se asemejen a la realidad.
Esta corriente de hacer evolucionar robots virtuales en simuladores nos ha traído ya resultados bastante curiosos. Mirad bien el siguiente video. Veréis cómo van evolucionando unas criaturas extrañas con el objetivo de desplazarse de forma más rápida por su entorno simulado. Algo muy interesante del video es que comparan las morfologías de distintas generaciones, enseñando claramente cómo se da una evolución en la forma de la criatura artificial consiguiendo una mayor eficiencia. El «bicho», además, es puesto a prueba en terrenos desiguales. Os dejo con el video:
A continuación os pongo otro ejemplo de hacer evolucionar criaturas virtuales. En este caso, se pueden ver criaturas para entornos acuosos y terrestres. Criaturas cuyo objetivo es perseguir una señal luminosa que un usuario puede ir moviendo por el entorno virtual. Pero lo que a mí más me gusta es la competición que se montan entre distintas criaturas evolucionadas para poder ver quien de ellas puede hacerse con una pieza cuadrada (a partir del minuto 2:10). Vamos, como si esto fuera Pokemon. Y la criatura que más me gusta es ésa que olvidándose de la pieza ¡se centra en atacar directamente al oponente! Lo podéis ver en el minuto 3:20 más o menos:
En el caso de las competiciones, no solo evoluciona la morfología de las criaturas, sino también las estrategias que usan para ganar. A esta clase de evolución por competición, se le llama co-evolución.
Esto no es solo un juego
Puede quedar la impresión de que lo que hemos mostrado hasta ahora es solo un juego para unos cuantos investigadores ociosos. No es así. Es investigación básica sobre una rama de la robótica que además de generar resultados interesantes, genera un conocimiento sobre algoritmos evolutivos muy importante. En un curso de robótica evolutiva al que asistí, el ponente nos explicó que ya habían usado estas técnicas de diseño para un robot que tenía que limpiar cascos de barcos. Los hacían evolucionar en entornos simulados y cuando llegaban a una solución buena, construían el modelo real y lo mejoraban probándolo en situaciones reales. Lamentablemente, no he podido encontrar información sobre ese proyecto.
Como un ejemplo de cómo estas criaturas virtuales evolucionadas pueden trarse al mundo real, tenemos el proyecto Golem. En él intentan crear máquinas que se puedan mover de forma eficiente en la realidad. Para ello, definen unas piezas básicas en el simulador, con unas articulaciones específicas. Esas piezas, tienen pequeñas redes neuronales integradas que son las que implementan la estrategia de control de las articulaciones. Haciendo evolucionar esas redes neuronales y la configuración de distintas piezas, llegan a crear robots reales que se mueven en entornos reales. El salto entre la criatura virtual y el robot real se realiza gracias a impresoras 3D. Pero mejor lo veáis vosotros mismos:
Todavía queda un enorme trabajo para aplicar de forma generalizada estas estrategias de diseño robótico. Éste es un área de la robótica al que no se le dedican tantos esfuerzos como a otros, pero poco a poco se van conseguiendo resultados asombrosos. La idea en sí a mí me parece espectacular. Espero que a vosotros también os haya gustado.
Nos seguimos leyendo…