¿Qué estás buscando?
Industry

Hecho con Unity: Creación y entrenamiento de un robot gemelo digital

ANTHONY NAVARRO / UNITY TECHNOLOGIESSenior Technical Product Manager
Oct 11, 2021|8 minutos
Hecho con Unity: Creación y entrenamiento de un robot gemelo digital
Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.

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, presentamos una presentación reciente al concurso OpenCV Spatial AI que muestra robótica, visión artificial, aprendizaje de refuerzo y realidad aumentada en Unity en un conjunto impresionante de ejemplos.

Unity tiene un motor 3D en tiempo real de clase mundial. Si bien el motor y las herramientas que hemos creado tradicionalmente respaldaban a los desarrolladores de juegos, el grupo AI@ Unity está creando herramientas en torno a áreas como el aprendizaje automático, la visión artificial y la robótica para permitir aplicaciones fuera de los juegos, especialmente aquellas que dependen de la inteligencia artificial y los entornos 3D en tiempo real.

La presentación de Gerard Espona y el equipo de Kauda al concurso de IA espacial OpenCV utilizó muchas de nuestras herramientas y paquetes de IA en múltiples ejemplos. Utilizaron nuestro paquete de percepción para ayudar a entrenar modelos de visión por computadora y el kit de herramientas ML-Agents para entrenar sus modelos de aprendizaje automático y hacer una demostración sim2real de un brazo robótico. Entrevistamos a Gerard para descubrir qué le inspiró a construir este proyecto. Continúe leyendo para obtener más información sobre cómo dio vida a este proyecto en Unity y en el mundo real.

Proyecto OpenCV

¿De dónde sacaste el nombre del equipo Kauda?

El equipo Kauda está compuesto por Giovanni Lerda y yo (Gerard Espona) y el nombre proviene del brazo robótico de 5 ejes del tamaño de un escritorio, imprimible en 3D, gratuito y de código abierto que Giovanni creó llamado Kauda. Este es un fantástico brazo robótico de escritorio que cualquiera puede hacer y nos permitió colaborar de forma remota en este proyecto.

Brazo robótico
¿Cómo obtuviste un gemelo digital de Kauda en Unity?

Desarrollamos Kauda Studio, que es una aplicación de Unity que impulsa el gemelo digitalde Kauda. Proporciona una simulación precisa y totalmente funcional de Kauda con control de cinemática inversa (IK), conexión USB/Bluetooth al Kauda real y puede admitir múltiples cámaras OpenCV OAK-D.

¿Qué es la cámara OAK-D y cómo se utilizó con Unity?

La cámara OAK-D combina dos cámaras de profundidad estéreo y una cámara a color 4K con procesamiento integrado (con VPU Intel MyriadX) para procesar automáticamente una variedad de funciones. Como parte del concurso, construimos un complemento de Unity para dispositivos OAK, pero también queríamos tener un gemelo digital en Unity . El gemelo digital OAK-D Unity proporcionó una cámara 3D virtual con una simulación precisa que podría utilizarse para la recopilación de datos sintéticos. También permite que las imágenes virtuales se introduzcan en el canal del dispositivo real. Pudimos utilizar el paquete Unity Perception para recopilar elementos sintéticos personalizados para entrenar con la cámara virtual OAK-D.

Fondo gris con modelos 3D de equipos.
Modelo Unity de la cámara OAK-D
¿Cuál es la importancia de tener un gemelo digital en Unity?

Tener un gemelo digital nos permitió habilitar funciones adicionales en Kauda. También puedes utilizar las funciones de realidad aumentada (RA) de Unity para interactuar con un robot virtual en el mundo real. Una aplicación es aprender a realizar tareas de mantenimiento en un robot sin necesidad de que haya un robot allí. Esto también permite la programación de tareas secuenciales con un enfoque sin código que tiene una representación virtual y precisa del robot.

El gemelo digital nos permitió realizar entrenamiento de aprendizaje de refuerzo (RL). El aprendizaje automático es un proceso que consume mucho tiempo y requiere simulación para cualquier cosa que vaya más allá de ejemplos extremadamente simples. Con Kauda en Unity, utilizamos el kit de herramientas ML-Agents para realizar entrenamiento RL para control.

También comenzamos a probar la colaboración hombre-máquina y los procedimientos de seguridad replicando el robot en Unity y usando las cámaras para medir dónde estaba el humano dentro del área del robot. Puedes imaginar hacer esto con un robot grande que puede causar lesiones a los humanos cuando ocurren errores. El entorno de simulación nos permite probar estos escenarios sin poner en peligro a los humanos.

¿Cómo utilizó el kit de herramientas ML-Agents en este proyecto?

Creemos que RL es un marco poderoso para la robótica y Unity ML-Agents es un excelente conjunto de herramientas que permite a nuestro gemelo digital aprender y realizar tareas complejas. Debido al tiempo limitado del concurso, el objetivo era implementar una tarea “táctil” de RL simple y transformar el modelo resultante para ejecutar inferencia en el dispositivo OAK-D. Utilizando ML-Agents, el robot aprendió la ruta óptima usando el control IK para tocar dinámicamente un objeto 3D detectado.

Capacitación de agentes de Unity ML sobre gemelos digitales

Para lograr esto, primero implementamos un detector de objetos 3D utilizando el diminuto YOLO espacial. El modelo RL (PPO) utiliza la detección resultante y la posición del punto de control IK como observaciones de entrada. Como acciones de salida tenemos el movimiento de 3 ejes del punto de control IK. El sistema de recompensa se basaba en una pequeña penalización en cada paso y una gran recompensa (1,0) cuando el robot tocaba el objeto. Para acelerar el entrenamiento, aprovechamos el aprendizaje simultáneo de múltiples agentes para desarrollar un YOLO espacial diminuto virtual con los mismos resultados que un YOLO espacial diminuto real.

Una vez entrenado el modelo, lo transformamos al formato OpenVino IR y Myriad Blob usando el kit de herramientas OpenVino para cargar el modelo en un dispositivo OAK-D y ejecutar la inferencia. El pipeline final es un modelo espacial diminuto YOLO plus RL. Gracias a nuestro complemento de Unity , pudimos comparar la inferencia utilizando agentes ML-Agents y OAK-D dentro de Unity , uno al lado del otro.

¿Cómo te ayudaron los datos sintéticos con este proyecto?

La primera etapa de nuestro proyecto es un detector de objetos 3D , que es un punto de partida muy común para tareas robóticas y de visión artificial basadas en IA. En nuestro caso, utilizamos un modelo YOLO v3 diminuto previamente entrenado y gracias al paquete Unity Perception pudimos entrenar una categoría personalizada. Nos permitió generar un gran conjunto de datos sintéticos de modelos 3D con etiquetado automático de cuadros delimitadores de verdad fundamental en cuestión de minutos. Generalmente, el proceso de recolección y etiquetado es un proceso humano manual que consume mucho tiempo. Tener la capacidad de generar un rico conjunto de datos con muchas opciones de aleatorización para tener diferentes rotaciones, condiciones de iluminación, variaciones de textura y más es un gran paso adelante.

¿Tuviste alguna dificultad?

A veces, el tiempo necesario para sincronizar los elementos virtuales y del mundo real era un poco desfasado. Creemos que esto podría resolverse utilizando ROS en el futuro y es bueno que Unity admita oficialmente ROS ahora.

Más información

Gerard tiene una lista de reproducción completa de videos que documentan su viaje con algunos videos notables que incluyen un seminario web con OpenCV y el video final de presentación del concurso. También ha lanzado el complemento OAK-D Unity en Github para ayudar a otros a comenzar con su proyecto.

¡Estamos entusiasmados de ver que nuestras herramientas permiten que proyectos como este se hagan realidad! Si estás buscando agregar IA a tus proyectos en Unity, ¡tenemos muchos ejemplos y tutoriales para ayudarte a comenzar! El paquete Unity Perception le permite recopilar fácilmente datos sintéticos en Unity. El Unity Robotics Hub tiene tutoriales y paquetes para ayudarlo a comenzar con la integración de ROS y la simulación robótica. Y el kit de herramientas ML-Agents simplifica el aprendizaje de refuerzo con muchos entornos para comenzar.