Enseñar a los robots a ver con Unity

SARAH WOLF / UNITY TECHNOLOGIESContributor
Mar 2, 2021|8 minutos
Enseñar a los robots a ver con Unity
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.

¡El mundo de la robótica está lleno de incógnitas! Desde el ruido del sensor hasta el posicionamiento exacto de objetos importantes, los robots tienen una necesidad crítica de comprender el mundo que los rodea para funcionar con precisión y solidez. Anteriormente demostramos una tareade selección y colocaciónen Unity usando el robot Niryo One para recoger un cubo con una posición y orientación conocidas. Esta solución no sería muy robusta en el mundo real, ya que las ubicaciones precisas de los objetos rara vez se conocena priori. En nuestra nuevademostración de estimación de la pose de objetos, le mostramos cómo usar elpaquete de percepciónde visión artificial de Unity para recopilar datos y entrenar un modelo de aprendizaje profundo para predecir la pose de un objeto determinado. Luego le mostramos cómo integrar el modelo entrenado con un brazo robótico virtual UR3 en Unity para simular el sistema completo de selección y colocación en objetos con poses desconocidas y arbitrarias.

Los robots en el mundo real a menudo operan en entornos dinámicos y deben adaptarse a ellos. Estas aplicaciones a menudo requieren que los robots perciban objetos relevantes e interactúen con ellos. Un aspecto importante de la percepción e interacción con los objetos es comprender su posición y orientación en relación con algún sistema de coordenadas, también conocido como su “pose”. Los primeros enfoques de estimación de pose a menudo dependían de técnicas clásicas de visión computacional y marcadores fiduciales personalizados. Estas soluciones están diseñadas para operar en entornos específicos, pero a menudo fallan cuando sus entornos cambian o se apartan de lo esperado. Las brechas introducidas por las limitaciones de la visión artificial tradicional se están abordando mediante nuevas y prometedoras técnicas de aprendizaje profundo. Estos nuevos métodos crean modelos que pueden predecir el resultado correcto para una entrada dada aprendiendo de muchos ejemplos.

Este proyecto utiliza imágenes y etiquetas de pose reales para entrenar un modelo para predecir la pose del objeto. En tiempo de ejecución, el modelo entrenado puede predecir la pose de un objeto a partir de una imagen que nunca ha visto antes. Por lo general, es necesario recopilar y etiquetar decenas de miles o más imágenes para que los modelos de aprendizaje profundo funcionen lo suficiente. La recopilación de estos datos en el mundo real es tediosa, costosa y, en algunos casos, como la localización de objetos 3D , intrínsecamente difícil. Incluso cuando estos datos pueden recopilarse y etiquetarse, el proceso puede resultar sesgado, propenso a errores, tedioso y costoso. Entonces, ¿cómo aplicar enfoques potentes de aprendizaje automático a su problema cuando los datos que desea están fuera de su alcance o aún no existen para su aplicación?

Unity Computer Vision le permite generar datos sintéticos como una solución eficiente y efectiva para sus requisitos de datos de aprendizaje automático. Este ejemplo muestra cómo generamos datos etiquetados automáticamente en Unity para entrenar un modelo de aprendizaje automático. Luego, este modelo se implementa en Unity en un brazo robótico UR3 simulado utilizando el Sistema Operativo Robot (ROS) para permitir la selección y colocación con un cubo que tiene una pose desconocida.

Generación de datos sintéticos
Cubos con letras

Los simuladores, como Unity, son una herramienta poderosa para abordar los desafíos en la recopilación de datos mediante la generación de datos sintéticos. Utilizando Unity Computer Vision, se pueden recopilar grandes cantidades de datos perfectamente etiquetados y variados con un mínimo esfuerzo, comose mostró anteriormente. Para este proyecto, recopilamos muchas imágenes de ejemplo del cubo en diversas poses y condiciones de iluminación. Este método de aleatorización de aspectos de la escena se llamaaleatorización de dominio1. Los datos más variados generalmente conducen a un modelo de aprendizaje profundo más sólido.

Para recopilar datos con el cubo en varias poses en el mundo real, tendríamos que mover manualmente el cubo y tomar una fotografía. Nuestro modelo utilizó más de 30.000 imágenes para entrenarse, así que si pudiéramos hacer esto en solo 5 segundos por imagen, ¡nos llevaría más de 40 horas recopilar estos datos! Y ese tiempo no incluye el etiquetado que debe realizarse. Usando Unity Computer Vision, ¡podemos generar 30.000 imágenes de entrenamiento y otras 3.000 imágenes de validación con las etiquetas correspondientes en solo minutos! En este ejemplo, la posición de la cámara, la mesa y el robot son fijas, mientras que la iluminación y la pose del cubo varían aleatoriamente en cada fotograma capturado. Las etiquetas se guardan en un archivo JSON correspondiente donde la pose se describe mediante una posición 3D (x, y, z) y una orientación de cuaternión (qx, qy, qz, qw). Si bien este ejemplo solo varía la pose del cubo y la iluminación del entorno, Unity Computer Vision le permite agregar fácilmente aleatorización a varios aspectos de la escena. Para realizar la estimación de la pose, utilizamos una técnica de aprendizaje automático supervisado para analizar los datos y generar un modelo entrenado.

Uso del aprendizaje profundo para predecir la postura
Gráfico

En el aprendizaje supervisado, un modelo aprende a predecir un resultado específico basándose en el entrenamiento de un conjunto de entradas y salidas correspondientes, imágenes y etiquetas de pose en nuestro caso. Hace unos años, un equipo deinvestigadores presentóuna red neuronal convolucional (CNN) que podría predecir la posición de un objeto. Como nos interesa una pose 3D para nuestro cubo, ampliamos este trabajo para incluir la orientación del cubo en la salida de la red. Para entrenar el modelo, minimizamos el error mínimo cuadrado, o distancia L2, entre la pose prevista y la pose real. Después del entrenamiento, el modelo predijo la ubicación del cubo con una precisión de 1 cm y la orientación con una precisión de 2,8 grados (0,05 radianes). ¡Ahora veamos si esto es lo suficientemente preciso para que nuestro robot realice con éxito la tarea de recoger y colocar!

Planificación de movimiento en ROS
Gráfico

El robot que estamos usando en este proyecto es un brazo robótico UR3 con una pinza Robotiq 2F-140, que se incorporó a nuestra escena de Unity mediante el paquete Unity RoboticsURDF Importer. Para gestionar la comunicación, se utiliza el paqueteROS- TCP Connectorde Unity Robotics, mientras que el paquete ROS MoveIt maneja la planificación y el control del movimiento.

Ahora que podemos predecir con precisión la pose del cubo con nuestro modelo de aprendizaje profundo, podemos usar esta pose prevista como pose objetivo en nuestra tarea de elegir y colocar. Recuerde que en nuestrademostración anterior de Pick-and-Place, nos basamos en la pose real del objeto objetivo. La diferencia aquí es que el robot realiza la tarea de elegir y colocarsin conocimiento previode la pose del cubo y solo obtiene una pose prevista del modelo de aprendizaje profundo. El proceso tiene 4 pasos:

Unity captura una imagen con el cubo de destino

La imagen se pasa a un modelo de aprendizaje profundo entrenado, que genera una pose prevista.

La pose prevista se envía al planificador de movimiento MoveIt

ROS devuelve una trayectoria a Unity para que el robot la ejecute en un intento de recoger el cubo.

En cada iteración de la tarea, el cubo se mueve a una ubicación aleatoria. Aunque conocemos la posición del cubo en la simulación, no tendremos el beneficio de esta información en el mundo real. Por lo tanto, para sentar las bases para transferir este proyecto a un robot real, necesitamos determinar la postura del cubo únicamente a partir de datos sensoriales. Nuestro modelo de estimación de pose hace esto posible y, en nuestras pruebas de simulación, ¡podemos levantar el cubo de manera confiable el 89% del tiempo en Unity!

Conclusión
Brazo robótico recogiendo cosas

Nuestrademostración de estimación de la posición de objetosmuestra cómo Unity le brinda la capacidad de generar datos sintéticos, entrenar un modelo de aprendizaje profundo y usar ROS para controlar un robot simulado para resolver un problema. Utilizamos las herramientas de Unity Computer Vision para crear datos de entrenamiento sintéticos y etiquetados y entrenamos un modelo de aprendizaje profundo simple para predecir la pose de un cubo. La demostración proporciona un tutorial que le muestra cómo recrear este proyecto, que puede ampliar aplicando más aleatorizadores para crear escenas más complejas. Utilizamos las herramientas de Unity Robotics para comunicarnos con un nodo de inferencia ROS que utiliza el modelo entrenado para predecir la pose de un cubo. Estas herramientas y otras le abren la puerta para explorar, probar, desarrollar e implementar soluciones localmente. Cuando esté listo para escalar su solución,Unity Simulationahorra tiempo y dinero en comparación con los sistemas locales.

¿Y sabías que las herramientas Unity Computer Vision y Unity Robotics son gratuitas? ¡Visita lademostración de estimación de pose de objetospara comenzar a usarlos hoy mismo!

Sigue creando

Ahora que podemos recoger objetos con una pose desconocida, ¡imagina de qué otra manera podrías expandir esto! ¿Qué pasa si hay obstáculos en el camino? ¿O varios objetos en la escena? ¡Piensa en cómo podrías manejar esto y estate atento a nuestra próxima publicación!

¿No puedes esperar hasta nuestra próxima publicación? Regístrese para recibir actualizaciones por correo electrónico sobre nuestro trabajo enrobóticaovisión artificial.

También puedes encontrar más proyectos de robótica en nuestroGitHub Unity Robotics.

Para conocer más proyectos de visión artificial, visite nuestra páginaUnity Computer Vision.

¡A nuestro equipo le encantaría saber de usted si tiene alguna pregunta, comentario o sugerencia! Comuníquese conunity-robotics@unity3d.com.

Citas

J. Tobin, R. Fong, A. Ray, J. Schneider, W. Zaremba, P. Abbeel, “Aleatorización de dominios para transferir redes neuronales profundas de la simulación al mundo real” arXiv:1703.06907, 2017

J. Tobin, W. Zaremba y P. Abbeel, “Aleatorización de dominios y modelos generativos para el agarre robótico”, preimpresión de arXiv arXiv:1710.06425, 2017