Réalisé avec Unity : Création et formation d'un jumeau numérique du robot

ANTHONY NAVARRO / UNITY TECHNOLOGIESSenior Technical Product Manager
Oct 11, 2021|8 Min
Réalisé avec Unity : Création et formation d'un jumeau numérique du robot
Cette page a été traduite automatiquement pour faciliter votre expérience. Nous ne pouvons pas garantir l'exactitude ou la fiabilité du contenu traduit. Si vous avez des doutes quant à la qualité de cette traduction, reportez-vous à la version anglaise de la page web.

Notre site fait avec Unity : La série AI présente des projets Unity réalisés par des créateurs à des fins diverses impliquant nos produits d'intelligence artificielle. Dans cet exemple, nous présentons une soumission récente au concours OpenCV Spatial AI qui met en avant la robotique, la vision par ordinateur, l'apprentissage par renforcement et la réalité augmentée dans Unity dans une suite impressionnante d'exemples.

Unity dispose d'un moteur 3D en temps réel de classe mondiale. Alors que le moteur et les outils que nous avons créés ont traditionnellement soutenu les développeurs de jeux, le groupe AI@Unity construit des outils autour de domaines tels que l'apprentissage automatique, la vision par ordinateur et la robotique pour permettre des applications en dehors des jeux, en particulier celles qui s'appuient sur l'intelligence artificielle et les environnements 3D en temps réel

La présentation de Gerard Espona et de l'équipe Kauda au concours OpenCV Spatial AI a utilisé un grand nombre de nos outils et progiciels d'IA dans de nombreux exemples. Ils ont utilisé notre Perception Package pour aider à entraîner les modèles de vision par ordinateur et la boîte à outils ML-Agents pour entraîner leurs modèles d'apprentissage automatique et faire une démonstration sim2réelle d'un bras robotique. Nous avons interviewé Gérard pour savoir ce qui l'a poussé à réaliser ce projet. Lisez la suite pour en savoir plus sur la façon dont il a donné vie à ce projet dans Unity et dans le monde réel.

Projet OpenCV

D'où vient le nom de l'équipe Kauda ?

L'équipe Kauda est composée de Giovanni Lerda et de moi-même (Gerard Espona). Le nom vient du bras robotique 5 axes de bureau imprimable en 3D, libre et gratuit, que Giovanni a créé et qui s'appelle Kauda. Il s'agit d'un excellent bras robotique de bureau que tout le monde peut fabriquer et qui nous a permis de collaborer à distance sur ce projet.

Bras robotique
Comment avez-vous obtenu un jumeau numérique de Digital Twins dans Unity ?

Nous avons développé Kauda Studio, une application Unity qui alimente le jumeau numérique de Kauda. Il fournit une simulation précise et entièrement fonctionnelle de Kauda avec un contrôle de la cinématique inverse (IK), une connexion USB/Bluetooth au véritable Kauda, et peut prendre en charge plusieurs caméras OpenCV OAK-D.

Qu'est-ce que la caméra OAK-D et comment a-t-elle été utilisée avec Unity ?

La caméra OAK-D combine deux caméras de profondeur stéréo et une caméra couleur 4K avec un traitement embarqué (alimenté par Intel MyriadX VPU) pour traiter automatiquement une variété de caractéristiques. Dans le cadre du concours, nous avons construit un plug-in Unity pour les appareils OAK, mais nous voulions aussi avoir un jumeau numérique dans Unity. Le jumeau numérique OAK-D Unity a fourni une caméra 3D virtuelle avec une simulation précise qui a pu être utilisée pour la collecte de données synthétiques. Il permet également d'introduire des images virtuelles dans le pipeline de l'appareil réel. Nous avons pu utiliser le progiciel de perception Unity pour collecter des collections synthétiques afin de former des objets personnalisés avec la caméra virtuelle OAK-D.

Fond gris avec des modèles d'équipement en 3D
Modèle Unity de la caméra OAK-D
Quelle est l'importance d'avoir un jumeau numérique dans Unity ?

Le fait d'avoir un jumeau numérique nous a permis d'activer des fonctions supplémentaires sur Kauda. Vous pouvez également utiliser les fonctionnalités de réalité augmentée (AR) d'Unity pour interagir avec un robot virtuel dans le monde réel. L'une des applications consiste à apprendre à effectuer la maintenance d'un robot sans qu'il soit nécessaire qu'un robot soit présent. Cela permet également de programmer des tâches séquentielles avec une approche sans code, en ayant une représentation virtuelle et précise du robot.

Le jumeau numérique nous a permis de réaliser un apprentissage par renforcement (RL). Le RL est un processus qui prend du temps et qui nécessite une simulation pour tout ce qui va au-delà d'exemples extrêmement simples. Avec Kauda dans Unity, nous avons utilisé la boîte à outils ML-Agents pour effectuer un entraînement RL pour le contrôle.

Nous avons également commencé à tester la collaboration homme-machine et les procédures de sécurité en reproduisant le robot dans Unity et en utilisant les caméras pour mesurer l'emplacement de l'homme dans la zone du robot. On peut imaginer que ce soit le cas pour un gros robot qui peut blesser des humains en cas d'erreur. L'environnement de simulation nous permet de tester ces scénarios sans mettre l'homme en danger.

Comment avez-vous utilisé la boîte à outils ML-Agents dans ce projet ?

Nous pensons que RL est un cadre puissant pour la robotique et que Unity ML-Agents est une excellente boîte à outils qui permet à notre jumeau numérique d'apprendre et d'effectuer des tâches complexes. En raison du temps limité du concours, l'objectif était de mettre en œuvre une tâche simple de "toucher" RL et de transformer le modèle résultant pour exécuter l'inférence sur l'appareil OAK-D. En utilisant les ML-Agents, le robot a appris la trajectoire optimale en utilisant le contrôle IK pour toucher dynamiquement un objet 3D détecté.

Formation des agents ML-Agents d'Unity sur les jumeaux numériques

Pour ce faire, nous avons d'abord mis en œuvre un détecteur d'objets 3D utilisant le YOLO spatial minuscule. Le modèle RL (PPO) utilise la détection résultante et la position du point de contrôle IK comme observations d'entrée. Comme actions de sortie, nous avons le mouvement sur 3 axes du point de contrôle IK. Le système de récompense était basé sur une petite pénalité à chaque étape et une grande récompense (1,0) lorsque le robot touchait l'objet. Pour accélérer la formation, nous avons tiré parti de l'apprentissage simultané de plusieurs agents en développant un minuscule YOLO spatial virtuel avec les mêmes résultats que le minuscule YOLO spatial réel.

Une fois le modèle entraîné, nous l'avons transformé en format OpenVino IR et Myriad Blob à l'aide de la boîte à outils OpenVino pour charger le modèle sur un appareil OAK-D et lancer l'inférence. Le pipeline final est un minuscule modèle spatial YOLO plus RL. Grâce à notre plugin Unity, nous avons pu comparer l'inférence utilisant les ML-Agents et les agents OAK-D à l'intérieur d'Unity côte à côte.

Comment les données synthétiques vous ont-elles aidé dans ce projet ?

La première étape de notre pipeline est un détecteur d'objets 3D, qui est un point de départ très courant pour les tâches de vision par ordinateur et de robotique basées sur l'IA. Dans notre cas, nous avons utilisé un minuscule modèle YOLO v3 pré-entraîné et, grâce au package Unity Perception, nous avons pu entraîner une catégorie personnalisée. Il nous a permis de générer un vaste ensemble de données synthétiques de modèles 3D avec un étiquetage automatique des boîtes de délimitation en quelques minutes. Habituellement, le processus de collecte et d'étiquetage est un processus humain manuel qui prend beaucoup de temps. La possibilité de générer un riche ensemble de données avec de nombreuses options de randomisation pour obtenir différentes rotations, conditions d'éclairage, variations de texture, et plus encore, est un grand pas en avant.

Avez-vous rencontré des difficultés ?

Le temps nécessaire pour synchroniser les objets virtuels et réels était parfois un peu long. Nous pensons que cela pourrait être résolu en utilisant ROS à l'avenir et il est agréable qu'Unity prenne officiellement en charge ROS maintenant.

En savoir plus

Gérard a une liste complète de vidéos documentant leur voyage avec quelques vidéos notables dont un webinaire avec OpenCV et la vidéo finale de soumission au concours. Il a également publié le plug-in OAK-D Unity sur GitHub pour aider d'autres personnes à démarrer leur projet.

Nous sommes ravis de voir que nos outils permettent à des projets comme celui-ci de voir le jour ! Si vous cherchez à ajouter l'IA à vos projets dans Unity, nous avons de nombreux exemples et tutoriels pour vous aider à démarrer ! Le Unity Perception Package vous permet de recueillir facilement des données synthétiques dans Unity. Le Unity Robotics Hub propose des tutoriels et des packages pour vous aider à démarrer l'intégration de ROS et la simulation robotique. La boîte à outils ML-Agents simplifie l'apprentissage par renforcement en proposant de nombreux environnements pour démarrer.