Becarios de Unity AI 2021: Afrontar los retos de la robótica

AI@Unity trabaja en asombrosas investigaciones y productos de robótica, visión por ordenador y aprendizaje automático. Nuestros becarios de verano trabajaron en proyectos de IA con un impacto real en los productos.
A medida que los robots se vuelven más sofisticados y sus tareas más complejas, aumenta la necesidad de simulación. La simulación permite a los desarrolladores escalar, ya que no necesitan tener un robot físico para representar cada escenario que necesitan probar. También permite desarrollar y probar determinadas tareas durante el desarrollo, especialmente aquellas que no pueden llevarse a cabo hasta que el robot esté totalmente desplegado. Nuestro equipo de Unity Robotics se centra en hacer posible la simulación robótica aprovechando la potencia, los activos y la capacidad de integración del motor Unity, al tiempo que crea herramientas y paquetes específicos de robótica que amplían la capacidad de simulación. El Unity Robotics Hub incluye demos, tutoriales y paquetes para que empieces a simular tu robot hoy mismo.
Durante el verano de 2021, nuestros becarios trabajaron diligentemente para crear valiosas contribuciones a nuestro trabajo en Unity. Lea sobre sus proyectos y experiencias en las siguientes secciones.
Este verano, tuve la increíble oportunidad de trabajar en la integración de cinemática inversa y controladores de robots en Unity como parte del equipo de robótica. Cuando los usuarios necesitan simular robots, en particular brazos robóticos, necesitan controlar el robot utilizando las mismas API o similares que utilizarían para controlar los robots reales. Estas API se conocen como controladores robóticos, y proporcionan una gran variedad de funcionalidades, como mover el robot de una posición a otra, mover una sola articulación (en el espacio de articulación) o incluso mover el robot en círculo. Los controladores de robots funcionan principalmente en el espacio de las articulaciones, es decir, las órdenes se dan como ángulos objetivo para cada articulación. Sin embargo, a los humanos sólo nos importa la posición y orientación del efector final en el espacio cartesiano (es decir, las coordenadas X, Y y Z en nuestro mundo tridimensional). Así, el objetivo de la cinemática inversa es determinar qué ángulos de articulación corresponden a una posición y orientación dadas en el espacio cartesiano. La cinemática inversa es una parte crucial del conjunto de herramientas de un robotista, por lo que este paquete hace que Unity sea aún más capaz y fácil de usar como plataforma de simulación robótica.
Integrar estas funciones en Unity resultó ser un reto inmenso que me obligó a repasar mis conocimientos de álgebra lineal, física, cálculo, informática e incluso pre-cálculo, a la vez que diseñaba el software de la forma más sencilla para el usuario. También aprendí a simular robots industriales en RV creando una demo en la que los usuarios pueden mover un cubo en RV que el brazo robótico sigue. Sin embargo, un reto conlleva una gran oportunidad, y diseñar, construir y distribuir sin ayuda una pieza de código tan fundamental para permitir la robótica en Unity ha sido un verdadero honor. Es increíblemente raro que los empleados se sientan ilusionados y desafiados por su trabajo diario, ¡y tengo la suerte de poder decir que he encontrado esa experiencia en Unity!

En las aplicaciones industriales, varios robots con distintas capacidades especializadas deben trabajar de forma concertada para llevar a cabo tareas complejas. Este proyecto muestra cómo puede lograrse la coordinación entre varios robots mediante el editor Unity y paquetes de simulación robótica, junto con ROS 2, para llevar a cabo una tarea de búsqueda y transporte en un almacén. Esta demostración también pone de relieve la ventaja de utilizar Unity frente a otras herramientas de simulación robótica, ya que este tipo de simulaciones multiagente son difíciles de llevar a cabo. Nuestra simulación consta de dos tipos de robots, a los que llamamos Findbot y Ferrybot. Múltiples Findbots se encargan de encontrar cubos de destino en un entorno de almacén mediante aprendizaje automático, y un único Ferrybot navega hasta estos cubos, los recoge y los deja en un lugar designado. Para ello, cada Findbot está equipado con una cámara para detectar el cubo, mientras que el Ferrybot tiene un brazo robótico para recogerlo. Este proyecto de ejemplo será útil para desarrolladores e investigadores de robótica que deseen utilizar las herramientas de robótica de Unity en sus propias simulaciones.
En general, fue una gran experiencia porque pudimos utilizar e integrar una amplia gama de paquetes de Unity en nuestro proyecto. Por ejemplo, utilizamos el paquete Computer Vision Perception para recopilar datos con los que entrenar nuestro modelo de estimación de la pose. También utilizamos un paquete de cinemática inversa (mencionado anteriormente en el proyecto de Jacob) en Ferrybot para recoger los cubos. Depender de un proyecto que se desarrollaba en paralelo al nuestro también supuso un gran reto, pero fue una gran oportunidad para aprender colaboración y comunicación. También es muy gratificante saber que nuestro proyecto servirá para preparar un taller de la ROSCon 2021.
Si estás interesado en adquirir experiencia real trabajando con Unity en desafiantes proyectos de inteligencia artificial, consulta nuestra página de carreras universitarias. Puedes empezar a construir tu experiencia en casa a través de nuestras demos y tutoriales en el Unity Robotics Hub.
