Hecho con Unity: Robots de fútbol con ML-Agents

Nuestro Hecho con Unity: AI La serie muestra proyectos de Unity realizados por creadores para una variedad de propósitos que involucran nuestros productos de inteligencia artificial. En este ejemplo, ML-Agents empoderó a los desarrolladores de IA al permitirles configurar de manera rápida y sencilla entornos de aprendizaje automático y entrenar a un agente para jugar al fútbol antes de transferir finalmente ese agente a un robot real.
El kit de herramientas de agentes de aprendizaje automático de Unity (ML-Agents) permite a los usuarios comenzar fácilmente con el aprendizaje de refuerzo (RL) utilizando Unity. ML-Agents ofrece a los usuarios una variedad de entornos de muestra y arquitecturas de modelos que pueden usar para comenzar a trabajar con RL. Los usuarios pueden luego ajustar los hiperparámetros para experimentar y mejorar los modelos resultantes. Todo esto puede suceder sin que el usuario tenga que preocuparse por crear un entorno Unity o importar activos, y no hay necesidad inmediata de codificación. Este proyecto japonés de Ghelia Inc. utilizó el entorno de fútbol ML-Agents para entrenar a un agente para jugar al fútbol. El modelo RL resultante se implementó luego en robots Sony Toio reales para jugar al fútbol. Este es un ejemplo interesante de simulación del mundo real con robótica que utiliza ML-Agents para entrenar.
Entrevistamos a Ryo Shimizu, CEO y presidente de Ghelia; Hidekazu Furukawa, programador principal de la Oficina de Innovación y Estrategia de Marca; y Masatoshi Uchida, gerente de la Sección de Innovación de la Oficina de Innovación y Estrategia de Marca para descubrir qué los inspiró a construir este proyecto. Continúe leyendo para descubrir cómo utilizaron ML-Agents Toolkit para entrenar a un robot del mundo real a jugar al fútbol y cómo una pelota de golf encaja en este escenario.
¿Qué te inspiró a crear tu proyecto?
Ghelia es una empresa que se centra en aplicaciones de aprendizaje de refuerzo. El fundador de Ghelia, Hiroaki Kitano, lanzó RobocupSoccer y desarrolló el AIBO en Sony. Nuestro equipo había construido previamente una demostración de air hockey, pero como constaba de muchos componentes diferentes, no era muy portátil. Cuando empezamos a discutir la creación de otra demostración para explicar a los clientes qué es el aprendizaje de refuerzo, queríamos algo que fuera más fácil de llevar a cabo. Como ML-Agents ya contaba con un entorno de fútbol, tenía sentido utilizar los pequeños y portátiles robots toio de Sony para crear un juego de fútbol, que también podría generar contenido viral.

Para aplicar el aprendizaje de refuerzo a un robot real, el robot debe existir en un entorno de simulación. Afortunadamente, toio ya tiene un simulador llamado toio SDK para Unity. Al agregarle el paquete ML-Agents , pudimos usarlo para capacitación de inmediato. Si bien el SDK de toio proporcionó los modelos de robot para Unity, aún necesitábamos crear la pelota. Utilizamos el motor de física de Unity para recrear la pelota en el simulador y necesitábamos encontrar una pelota del mundo real que coincidiera con los resultados de la simulación. Resulta que una pelota de golf produjo resultados reales que reflejaban los resultados del entrenamiento. La posición de la pelota se detectó en la simulación utilizando el valor de transformación de Unity , y en el mundo real mediante el reconocimiento de imágenes utilizando OpenCV y una cámara.

Usamos una pelota de golf para representar la pelota de fútbol, pero para aumentar la tasa de reconocimiento, la pintamos de rojo. Sorprendentemente, pudimos usar solo un iPhone y su cámara para detectar la pelota, controlar los ocho robots (era un partido de fútbol de cuatro contra cuatro) y realizar inferencias con el modelo ML-Agents .

Al principio había muchos goles en propia puerta, así que intentamos ofrecer una recompensa negativa por cada gol en propia puerta. Sin embargo, esto provocó que los porteros no defendieran su portería. Cuando intentamos dar una recompensa positiva por mover la pelota, ambos equipos simplemente iban de un lado a otro, sin meter la pelota en el arco, básicamente ganando tiempo. Finalmente decidimos premiar con un punto a quien metiera el balón en la portería contraria y quitar un punto a quien marcara.
A veces era difícil determinar por qué los robots reales no funcionaban tan bien como en la simulación. Por ejemplo, a veces la inferencia no funcionaba porque operábamos el robot en un piso ligeramente inclinado. Otras veces, la pelota rebotaba de forma diferente a la simulación, por lo que los robots no respondían como se esperaba. El posicionamiento de la cámara también era bastante sensible y requería una precisión milimétrica, lo que dificultaba su ajuste en el lugar del evento todos los días. Después de cada conjunto importante de mejoras al modelo, entrenamos durante unos tres días. Al final tuvimos alrededor de seis sesiones de entrenamiento para lograr nuestros resultados.
En la demostración de ML-Agents , después de un gol, los agentes se alinean en su posición original, pero no es tan simple para los robots reales. Algunos problemas, como evitar colisiones entre toios, eran difíciles de resolver únicamente mediante el aprendizaje de refuerzo. Aunque inicialmente intentamos diseñar una función de recompensa para este escenario, finalmente lo resolvimos heurísticamente.

Si hubiera demanda, definitivamente consideraríamos hacer este proyecto de código abierto. Puede encontrar detalles adicionales sobre este proyecto en nuestra publicación de blog (en japonés).
La IA, especialmente el aprendizaje profundo, es fascinante, pero no se comprende bien. No puedes apreciar completamente su belleza y complejidad hasta que trabajas con él de primera mano, y eso es una pena, por eso alentamos a los desarrolladores de Unity de todo el mundo a que lo prueben. Quiero destacar lo divertido que es el aprendizaje automático y que Unity ML-Agents es un sistema que te permite comenzar a trabajar con el aprendizaje automático fácilmente o incorporarlo a tu proyecto.
Comience a utilizar Unity ML-Agents o conozca más sobre los paquetes de Unity Robotics hoy mismo. Si su proyecto requiere que inicie varias sesiones de capacitación en paralelo, contáctenos para obtener más información sobre nuestra oferta de ML-Agents Cloud .
Hidekazu Furukawa también ha publicado un libro japonés llamado Unity ML-Agents Practical Game Programming que detalla cómo comenzar con el aprendizaje de refuerzo utilizando ML-Agents.
