Que recherchez-vous ?
Engine & platform

Faites progresser l'autonomie de vos robots avec ROS 2 et Unity

DEVIN MILLER / UNITY TECHNOLOGIESContributor
Aug 13, 2021|10 Min
Faites progresser l'autonomie de vos robots avec ROS 2 et Unity
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.

Unity est heureux d'annoncer son soutien officiel à ROS 2, dont le cadre robuste, associé à la simulation, permettra une myriade de nouveaux cas d'utilisation.

Le Robot Operating System (ROS) est un cadre populaire pour le développement d'applications robotiques qui a vu le jour en 2007. Conçu à l'origine pour accélérer la recherche en robotique, il a rapidement été adopté par la robotique industrielle et commerciale. ROS 2 s'appuie sur le cadre fiable de ROS tout en améliorant la prise en charge des applications modernes telles que les systèmes multi-robots, les systèmes en temps réel et les environnements de production. Unity étend son support officiel de l'écosystème ROS à ROS 2.

La robotique moderne s'oriente vers l'"autonomie", l'étude et le développement d'algorithmes capables de prendre des décisions en l'absence de règles strictes définies par un développeur humain, et la simulation soutient cette transition en permettant une plus grande flexibilité et une expérimentation plus rapide que les tests dans le monde réel. Nous avons développé un exemple, Robotics-Nav2-SLAM, pour démontrer comment commencer à simuler la localisation et la cartographie simultanées (SLAM) et la navigation pour une robotique mobile autonome (AMR) avec Unity et ROS 2.

ROS 2, la puissance de la robotique moderne

Bien que ROS reste un excellent cadre pour le prototypage robotique, il arrive à la fin de sa durée de vie et il lui manque certaines fonctionnalités nécessaires pour aller au-delà du prototypage et passer à la production et au déploiement à grande échelle d'un système robotique. La feuille de route technique de ROS 2 a été établie et est maintenue par un comité de vétérans de l'industrie avec des principes explicites définis pour garantir que ROS 2 est un cadre approprié pour les utilisateurs finaux de la robotique. ROS 2 prend en charge davantage de systèmes d'exploitation et de protocoles de communication et est conçu pour être plus distribué que ROS.

La simulation au service de l'autonomie

De nombreux cas d'utilisation émergents pour ROS 2 se concentrent sur l'autonomie. L'introduction de l'autonomie signifie que les décisions prises par un robot et les résultats de ces décisions ne sont pas parfaitement prévisibles à l'aide d'une machine à états et d'une série de formules mathématiques, comme c'est le cas dans de nombreux cas d'utilisation de la robotique industrielle. Comparé aux robots industriels, l'environnement opérationnel d'un robot autonome est exponentiellement plus grand. Les permutations d'entrées qu'il rencontre dépassent de loin ce qui peut être reproduit dans un environnement de laboratoire contrôlé. Pour valider pleinement le comportement d'un robot autonome, vous pouvez soit le faire sur le robot, dans votre propre dimension de poche où le temps n'a pas de sens et où la réalité est tout et rien à la fois, soit avoir recours à ce qui se fait de mieux : une simulation suffisamment robuste.

Si un robot est censé détecter un environnement, une simulation doit être capable de modéliser avec précision ces capteurs sans faire de compromis en ce qui concerne la précision de la topologie et de la physique simulées de l'environnement. S'il y a d'autres agents dans cet environnement, c'est-à-dire des personnes ou d'autres robots, la simulation doit être capable de modéliser le comportement de l'agent, tout en maintenant la précision de la simulation des capteurs, de la représentation de la topologie et de la modélisation physique. Pour exercer pleinement un robot à tous les scénarios qu'il pourrait rencontrer, cette simulation doit être exécutée de très nombreuses fois. Tout cela pour dire que la simulation à l'appui de la robotique autonome nécessite quatre choses qui ne sont pas souvent exigées par la robotique industrielle : la flexibilité, l'extensibilité, l'extensibilité et la fidélité, le tout sans sacrifier les performances. Unity se situe à l'intersection de toutes ces exigences, c'est pourquoi nous intégrons davantage de fonctionnalités dans notre plateforme pour soutenir le développement de robots autonomes.

Avec les paquets Robotics d'Unity, vous aurez accès aux interfaces que nous avons déjà construites pour faciliter la communication avec ROS ou ROS 2. Vous pourrez importer des configurations de robot existantes directement à partir de fichiers URDF grâce à notre importateur URDF, et vous pourrez commencer à exercer votre robot avec le pipeline de rendu de haute qualité et très efficace d'Unity, ainsi qu'une simulation physique performante et précise. Grâce à la boutique d'actifs d'Unity, vous avez accès à une grande variété d'environnements et d'accessoires supplémentaires et préfabriqués pour vous aider à modéliser l'environnement et la tâche spécifiques de votre robot. En quelques clics, la simulation que vous assemblez peut être construite et déployée sur n'importe quel système d'exploitation courant, qu'il s'agisse de Windows 10, de Mac OS ou de Linux. En utilisant des scripts C#, des scripts visuels Bolt ou l'une des nombreuses boîtes à outils de scripts et d'utilitaires disponibles dans l'Asset Store, vous pouvez continuer à personnaliser la fonctionnalité de votre simulation particulière pour l'adapter à votre cas d'utilisation spécifique.

Prise en charge de ROS 2 en un clic

Le passage de votre projet Unity à ROS 2 est simple. Dans le paquet ROS-TCP-Connector, nous avons ajouté un menu déroulant qui vous permet de basculer le paquet entre l'intégration ROS et ROS 2. En cas de changement de protocole, Unity recompilera automatiquement le paquet en fonction des définitions de messages et du protocole de sérialisation que vous avez sélectionnés. Pour le tester, il vous suffit d'effectuer cette modification dans votre propre projet ou de télécharger notre référentiel d'exemples, Robotics-Nav2-SLAM, qui contient les composants nécessaires à l'utilisation de Unity comme source simulée de capteurs et d'informations d'odométrie pour le didacticiel Nav2 Navigating while Mapping.

Paramètres de ros2

Ce projet d'exemple montre comment utiliser Unity pour simuler un système de navigation fonctionnant avec ROS 2. Le concept de navigation est simple et ne change pas beaucoup dans le contexte de la robotique autonome. Les algorithmes de navigation visent à trouver un chemin entre l'endroit où l'on se trouve et l'endroit où l'on veut aller. Cependant, pour aller de l'endroit où l'on se trouve à l'endroit où l'on va, il faut d'abord faire du SLAM - localisation et cartographie simultanées. SLAM décrit un ensemble d'algorithmes conçus pour répondre à la question "Où suis-je, en ce moment, et où ai-je été ?". Les humains effectuent constamment des SLAM, qui font partie intégrante de la chaîne de traitement entre nos sens et notre cerveau. Pour les robots autonomes, la réalisation d'une SLAM précise reste un défi dans la plupart des environnements du monde réel. Ce dont un robot mobile autonome a besoin pour savoir à tout moment où il se trouve, par rapport à tous les endroits où il est passé, fait encore l'objet de recherches actives. La seule façon de répondre à cette question pour un cas d'utilisation donné est d'essayer un grand nombre de choses différentes (capteurs, algorithmes, etc.) et de voir ce qui fonctionne.

Dans notre exemple, vous trouverez un environnement d'entrepôt simple, un modèle entièrement articulé d'un robot mobile Turtlebot 3 avec un LIDAR et des contrôleurs de moteur simulés, et un fichier Docker utilisé pour construire une image contenant toutes les dépendances ROS 2 nécessaires pour exercer les piles Nav2 et slam_toolbox contre notre simulation. Les étapes des tutoriels de Nav2 fourniront un contexte utile si vous n'avez jamais utilisé ROS 2 ou travaillé avec des algorithmes SLAM auparavant. Pour voir cet exemple fonctionner dans Unity, toutes les instructions pour vous permettre de démarrer et de faire fonctionner le projet se trouvent dans notre dépôt.

A gauche : Affichage RViz des messages ROS 2 générés et envoyés par Unity. C'est vrai : TurtleBot 3 effectuant une SLAM et une navigation autonome dans Unity.
Commencez dès aujourd'hui

Les roboticiens qui découvrent Unity et les développeurs Unity qui découvrent la robotique sont encouragés à essayer notre intégration ROS 2 et à effectuer une navigation autonome avec Robotics-Nav2-SLAM. Ce n'est qu'un petit exemple de ce que vous pouvez construire en intégrant nos outils de robotique et les nombreux autres logiciels puissants disponibles dans Unity. En parallèle, l'équipe Unity Robotics continue de développer et de publier des fonctionnalités explicitement destinées à soutenir les cas d'utilisation courants de la robotique, en mettant l'accent sur l'évolutivité et l'extensibilité.

Unity organisera également un atelier à ROSCon cette année qui étend l'exemple Nav2-SLAM pour supporter de multiples robots avec des rôles spécialisés travaillant ensemble pour accomplir une tâche spécifique.