- Introduction
Dans la robotique moderne, atteindre un contrôle précis et une fiabilité élevée requiert des tests rigoureux. NVIDIA Omniverse Isaac Sim offre l’environnement essentiel à haute fidélité où les tâches robotiques complexes peuvent être testées, optimisées et validées de manière exhaustive. Cette plateforme facilite le développement de jumeaux numériques précis et de cadres de test évolutifs basés sur la physique, une capacité essentielle qui réduit activement l’écart de performance entre les mondes virtuel et réel.
Cet article détaille le flux de travail de bout en bout que l’équipe HCLTech Kinetic AI a utilisé pour configurer le bras robotisé Trossen Solo AI dans ce puissant simulateur. Il vous guidera à chaque étape technique, de l’importation URDF de base jusqu’à l’intégration fluide de la planification de mouvements ROS 2 MoveIt, en fournissant un aperçu clair des principaux défis et des solutions efficaces rencontrés tout au long de ce parcours de développement avancé. - Configuration de l’environnement
Pour faire fonctionner ce système, vous aurez besoin d’une plateforme Linux stable intégrée à une distribution compatible de ROS 2, ainsi qu’une version récente de NVIDIA Omniverse Isaac Sim. Côté matériel, un GPU de la série RTX est requis pour le rendu haute fidélité. Enfin, l’extension de pont ROS 2 doit être activée dans Isaac Sim pour assurer une fonctionnalité totale et une intégration transparente entre la simulation et la pile de contrôle. - Configuration de l’espace de travail ROS 2 du bras Trossen
Pour commencer, créez un nouvel espace de travail ROS 2 et placez le référentiel trossen_arm_ros de TrossenRobotics dans son dossier src, amenant tous les fichiers sources nécessaires pour le bras Trossen dans l’environnement. Une fois l’espace de travail construit et ses dépendances installées, le fichier URDF du robot peut être converti en USD pour une utilisation dans Omniverse et le paquet MoveIt inclus peut être intégré à la plateforme via l’extension ROS 2 Bridge pour la simulation et la planification des mouvements. Importation de l’URDF
Dans Isaac Sim, vous pouvez intégrer le modèle de votre robot dans la scène en ouvrant le menu Fichier → Importer à partir de la barre d’outils supérieure, ce qui lance un explorateur de fichiers pour sélectionner des ressources. À partir de là, naviguez jusqu’au fichier URDF de votre robot, choisissez les paramètres appropriés et confirmez la sélection. Isaac Sim va alors analyser l’URDF et générer automatiquement le robot complet à l’intérieur de la scène virtuelle, affichant ses liaisons, articulations et maillages directement dans la vue 3D.
À cette étape, vous devriez voir la structure complète du robot dans l’arborescence de la scène (« Stage Tree »). Ceci valide que votre URDF a bien été interprété au format USD.
Après l’importation de l’URDF et la génération du modèle USD, il faut régler précisément les paramètres d’articulation du robot afin d’améliorer la stabilité du mouvement et de réduire les risques de glissement. Cela passe par la configuration du type d’entraînement de l’articulation en mode Force. Des ajustements critiques sont ensuite réalisés sur les valeurs de rigidité (« Stiffness ») et d’amortissement (« Damping ») pour contrôler la réponse et la stabilité de l’articulation. Pour un mouvement sûr et fiable, il est également essentiel de définir une valeur de force maximale (« Max Force ») appropriée, qui sert de plafond à la force que peut appliquer le moteur. L’ajustement de ces paramètres, en plus d’un réglage précis de la distance de contact entre les liaisons, permet d’obtenir des interactions plus fluides et plus fiables en simulation et garantit une meilleure compatibilité avec MoveIt pour la planification des trajectoires.Configuration de MoveIt 2 pour Isaac Sim
Pour permettre au puissant cadre de planification de mouvement ROS 2 MoveIt de contrôler votre modèle de robot dans un environnement virtuel comme NVIDIA Isaac Sim, il faut configurer conditionnellement l’interface matérielle au sein de la définition ros2_control de votre robot. Cette étape est essentielle pour spécifier la façon dont les commandes calculées par MoveIt sont transmises et exécutées par les articulations simulées.<xacro:if value="${ros2_control_hardware_type == 'isaac'}">
<plugin>topic_based_ros2_control/TopicBasedSystem</plugin>
<param name="joint_commands_topic">/isaac_joint_commands</param>
<param name="joint_states_topic">/isaac_joint_states</param>
</xacro:if>Le bloc de configuration pour ros2_control_hardware_type == 'isaac' active un pont logiciel crucial pour tester la pile de contrôle de votre robot dans l’environnement haute fidélité de NVIDIA Isaac Sim. Plutôt que de communiquer avec des moteurs et capteurs physiques, il charge le plugin topic_based_ros2_control/TopicBasedSystem. Ce plugin sert de couche de communication ROS 2, demandant au gestionnaire de contrôle de publier les commandes d’articulations (comme les positions souhaitées ou les couples) sur un topic particulier (/isaac_joint_commands) auquel Isaac Sim s’abonne. Réciproquement, le plugin s’abonne à un autre topic (/isaac_joint_states) où Isaac Sim publie l’état actuel du robot tel que calculé par son moteur physique interne. Cette utilisation astucieuse des topics permet aux contrôleurs ROS 2 standards de fonctionner sans accroc, en considérant le simulateur comme un matériel virtuel, ce qui est crucial pour un flux de développement indépendant du matériel.
Après avoir mis à jour votre configuration, les étapes clés sont de reconstruire votre espace de travail puis de lancer votre application robotique (par exemple, ros2 launch trossen_arm_moveit moveit.launch.py robot_model:=wxai ros2_control_hardware_type:=isaac). Ce processus active les nouveaux paramètres d’interface et initialise les composants de contrôle.
L’apparition des topics /isaac_joint_states et /isaac_joint_commands lors du listage des topics ROS 2 confirme que le pont d’interface matériel est opérationnel. Ces topics représentent le canal de communication en temps réel entre vos contrôleurs ROS 2 et la simulation Omniverse exécutant Isaac Sim. Le topic /isaac_joint_commands est celui sur lequel votre système de contrôle publie les mouvements souhaités vers le simulateur, et le topic /isaac_joint_states est celui sur lequel le simulateur publie les positions et vitesses résultantes du robot en retour à vos contrôleurs ROS 2. Cette communication bidirectionnelle établit une boucle de contrôle fermée, assurant que la planification et l’exécution du mouvement sont parfaitement synchronisées entre l’outil de planification et le robot virtuel.
Configuration de l’Action Graph dans Omniverse
L’étape finale, cruciale, de l’intégration de ROS 2 avec Isaac Sim consiste à relier visuellement les nœuds au sein de la simulation grâce à l’Action Graph. Ce graphe agit comme un véritable pont, dictant le flux de données en temps réel entre vos contrôleurs ROS 2 de haut niveau et le moteur physique d’Omniverse.Commencez par accéder à l’Action Graph puis faites glisser-déposer les widgets nécessaires sur l’espace du graphe. Les nœuds clés sont :
- on_playback_tick : Garantit l’exécution continue du graphe, maintenant la synchronisation avec les pas de temps de la simulation.
- isaac_read_simulation_time : Fournit les informations temporelles nécessaires pour estampiller avec précision les messages ROS sortants.
- articulation_controller : Gère les articulations physiques du robot. Ce nœud doit avoir son paramètre Target Prim réglé sur la racine du robot (par exemple, manipulator/base_link) et surtout, la case « usePath » décochée pour un contrôle fiable des articulations.
La communication elle-même est assurée par deux nœuds dédiés, garantissant une bonne boucle de contrôle :
- Entrée (Commandes) : Le nœud ros2_subscribe_joint_state écoute les commandes calculées par vos contrôleurs ROS 2. Vous devez configurer son nom de topic pour qu’il corresponde au topic émis depuis ROS 2 : /isaac_joint_commands.
- Sortie (Rétroaction) : Le nœud ros2_publish_joint_state récupère la position et la vitesse actuelles du robot dans la simulation et les renvoie à ROS 2. Il faut configurer son nom de topic à /isaac_joint_states.
En reliant correctement les broches d’exécution et de données de ces nœuds, vous complétez la configuration de l’interface matérielle, permettant à la pile de contrôle ROS 2 de piloter le robot virtuel.

Ces nœuds assurent la communication bidirectionnelle entre la simulation et ROS 2 MoveIt.
Exécution de la simulation
La séquence commence par une étape essentielle : cliquer sur le bouton Lecture dans Isaac Sim. Cette action est nécessaire pour établir le pont de communication ROS 2 en direct entre l’environnement de simulation et votre pile logicielle robotique. Une fois la simulation lancée, elle commence immédiatement à s’abonner au topic désigné, /isaac_joint_commands, et devient ainsi prête à recevoir les instructions de mouvement précises générées par MoveIt 2. En parallèle, le simulateur publie les données de position en temps réel via le topic /isaac_joint_states, ce qui permet au planificateur de mouvement de recevoir un retour exact concernant la configuration courante du robot.
Une fois ce lien de communication robuste vérifié, l’utilisateur passe à RViz 2 pour charger la configuration MoveIt, définir l’objectif de mouvement souhaité et, en cliquant sur Lecture et Exécuter, envoyer la trajectoire entièrement calculée, exempte de collision, pour une exécution synchronisée dans l’environnement virtuel.

Le mouvement du robot exécuté sera visualisé simultanément dans RViz 2 et la simulation Omniverse, vous permettant d’observer la trajectoire planifiée en temps réel sur les deux interfaces.
Défis et principaux enseignements
L’intégration de MoveIt avec l’écosystème Omniverse exige souvent une résolution systématique des problèmes afin d’assurer une haute fidélité et un contrôle stable. Le défi le plus important que nous avons rencontré a été d’obtenir un mouvement précis et stable, ce qui a nécessité un réglage minutieux de la physique des articulations. Cela passait notamment par la configuration du type d’entraînement en mode Force et l’ajustement minutieux des valeurs de rigidité et d’amortissement jusqu’à ce que la dynamique simulée du robot corresponde à la stabilité de réponse requise.Bien que le réglage de la physique ait été essentiel, une mise en œuvre réussie demandait également de répondre à plusieurs exigences d’intégration courantes. Par exemple, lors de l’établissement du modèle de base, nous avons dû garantir une importation correcte de l’URDF en supprimant les balises spécifiques à Gazebo problématiques et corriger les pivots articulaires incorrects via l’ajustement des transformations dans l’étape USD, assurant que les positions d’articulation par défaut étaient bien nulles. Par ailleurs, nous avons résolu les risques de discordance des topics du ROS 2 Bridge en vérifiant les noms de topics entre la configuration MoveIt et l’Action Graph d’Omniverse. Enfin, pour accélérer l’itération, nous avons optimisé l’environnement en désactivant les extensions inutilisées afin de limiter les goulets d’étranglement de performance.
L’intégration de ROS 2 MoveIt avec Isaac Sim est une révolution, permettant une planification de mouvement précise, une détection de collision et une exécution fiable des trajectoires dans un monde virtuel hautement photoréaliste. Ce lien transparent entre la simulation et la pile de contrôle est déterminant pour accélérer les tests et la validation des robots, réduisant radicalement à la fois le temps d’itération et les coûts avant un déploiement sur matériel réel.
- Conclusion
Le flux de travail complet décrit ici a permis de démontrer comment un système complexe, tel que le Trossen Solo AI (ou des bras robotiques similaires), peut être importé, configuré minutieusement et contrôlé avec précision dans l’environnement NVIDIA Omniverse Isaac Sim via ROS 2 MoveIt. En réalisant les tâches clés rendues possibles, dont la personnalisation des fichiers URDF, la mise en place du TopicBasedSystem nécessaire pour la gestion des messages et la connexion intelligente des topics ROS 2 au travers des Action Graphs d’Omniverse, l’équipe HCLTech Kinetic AI est parvenue à un robot pleinement opérationnel, capable d’exécutions de mouvements précises et en temps réel. Ce flux de travail intégré représente une étape de transformation. Il améliore non seulement la fidélité de la simulation, mais fournit également une plateforme robuste et accélérée qui rationalise considérablement la recherche et le développement en robotique dans les environnements exigeants d’aujourd’hui, propulsés par l’IA.

