Open Source Robotics

Une collection organisée de projets, outils et logiciels robotiques open source de haute qualité.

Robowflex: Robot Motion Planning with MoveIt Made Easy

Auteurs: Zachary Kingston, Lydia E. Kavraki · IROS 2022

Licences

  • Accès libre
  • Article: CC BY 4.0

Tout ce qui suit s'appuie sur l'article complet sous sa licence CC BY 4.0 ; sa figure est montrée en citant les auteurs.

En bref

Robowflex charge les robots, scènes et planificateurs de MoveIt directement dans un programme C++ plutôt que via des messages ROS, ce qui rend scriptables le développement de planificateurs, l'évaluation comparative et la planification de tâches et de mouvements.

Pourquoi c'est important

Comme MoveIt prend déjà en charge de nombreux robots, une équipe peut scripter des expériences de planification pour un robot existant dans un court programme et se connecter malgré tout à un système ROS si nécessaire. L'accès direct aux mécanismes internes des planificateurs permet aux chercheurs de remplacer des échantillonneurs ou planificateurs OMPL sans recompiler MoveIt, et d'exécuter de nombreuses requêtes de planification avec des scènes différentes pour la planification de tâches et de mouvements. La NASA l'a utilisé pour évaluer des saisies de mains courantes et la planification de mouvement de Robonaut 2 sur la Station spatiale internationale.

Problème

La plupart des utilisateurs de MoveIt planifient via le programme MoveGroup, configuré par des fichiers launch et des paramètres ROS et interrogé par messages ROS. Cela fonctionne pour la planification de base, mais rend difficile le profilage des planificateurs, la modification de leurs composants, l'extraction d'informations internes ou l'exécution de nombreuses requêtes de planification au sein d'un algorithme plus large. Modifier le comportement de MoveIt implique d'écrire des classes de plugin, ce qui est difficile pour les personnes qui ne connaissent pas ses mécanismes internes.

Solution proposée

Robowflex est une bibliothèque C++ qui encapsule la bibliothèque centrale de MoveIt, charge les robots (URDF, SRDF, limites articulaires, cinématique) sans fichiers launch et expose scènes, requêtes de mouvement et planificateurs comme des objets dans un seul programme. Elle ajoute des utilitaires d'entrée et de sortie pour YAML, XACRO, les bags ROS et les paramètres ROS, un outil d'évaluation comparative à sortie compatible OMPL, et des modules pour les mécanismes internes d'OMPL, DART, TrajOpt de Tesseract, un MoveGroup en fonctionnement et le rendu avec Blender. Des adaptateurs permettent au code de compiler de ROS Indigo à ROS Noetic.

Idées clés

  • Encapsuler MoveIt comme bibliothèque, plutôt que de dialoguer avec MoveGroup par messages ROS, donne un accès complet aux structures de données internes tout en laissant l'intégration ROS facultative
  • De nombreux robots, scènes et planificateurs peuvent être chargés dans un seul programme, ce dont la planification de tâches et de mouvements a besoin pour essayer de nombreux plans de mouvement dans des scènes différentes
  • Les résultats d'évaluation au format de journal OMPL se branchent sur des outils existants comme Planner Arena, et les scènes et requêtes stockées sous forme de fichiers simples facilitent la constitution de jeux de données
  • L'évaluation comparative propre à MoveIt nécessite ROS Warehouse et ne prend pas facilement en charge les scènes aux obstacles variés dont ont besoin les planificateurs fondés sur l'apprentissage
  • Des modules d'intégration permettent des comparaisons entre bibliothèques, par exemple RRTConnect de MoveIt contre TrajOpt de Tesseract sur la même scène dans un court script

Principaux résultats

  • Planification de mouvement de base démontrée sur un robot Fetch dans un script d'environ 40 lignes, sans aucun message ROS
  • Exemple d'évaluation comparative : 200 exécutions de RRT* sur le robot Fetch, en enregistrant le meilleur coût de chemin au fil du temps comme propriété de progression
  • Module DART utilisé pour la planification multi-robots avec deux robots Fetch dans un espace composite et comme composant de planification de mouvement d'un cadre de planification de tâches et de mouvements multi-robots
  • Utilisé par la NASA pour évaluer des solveurs de cinématique inverse, des configurations de saisie de mains courantes et la difficulté de planification pour Robonaut 2 grimpant le long de mains courantes
  • L'évaluation comparative ou les modules de Robowflex avaient été utilisés dans huit publications ([12]–[19]) au moment de la rédaction ; le code compile de ROS Indigo à ROS Noetic

Limites

  • L'article ne comporte pas de section déclarée sur les limites ; les cas d'usage sont des démonstrations, sans comparaison mesurée de l'effort ou du temps d'exécution par rapport à MoveGroup
  • Il repose sur MoveIt et ROS, donc chaque robot nécessite toujours ses fichiers de configuration MoveIt (URDF, SRDF, limites articulaires, cinématique)
  • Les auteurs signalent l'existence d'autres interfaces simplifiées de MoveIt (MoveIt CPP, moveit_boilerplate) ; leur comparaison avec Robowflex est qualitative
  • Le cas d'usage Robonaut 2 est décrit comme une évaluation de planification visualisée dans RViz ; aucun résultat d'exécution sur matériel n'est rapporté

Impact sur le domaine

Finaliste du IROS 2022 Best Paper Award for Industrial Robotics Research for Applications, avec 31 citations. Robowflex est publié en open source sur GitHub avec une documentation en ligne.

Résumé

Robowflex est une bibliothèque logicielle de planification de mouvement pour robots, destinée aux applications industrielles et de recherche, qui s'appuie sur la bibliothèque répandue MoveIt et sur l'intergiciel Robot Operating System (ROS). Robowflex tire parti de la facilité de la planification de mouvement avec MoveIt tout en offrant une API enrichie pour construire et manipuler des requêtes de planification de mouvement au sein d'un seul programme. L'API de haut niveau de Robowflex simplifie de nombreux cas d'usage courants tout en donnant accès à la bibliothèque MoveIt sous-jacente. Robowflex est particulièrement utile pour 1) le développement de nouveaux planificateurs de mouvement, 2) l'évaluation de planificateurs de mouvement et 3) les problèmes complexes qui font appel à la planification de mouvement (par exemple, la planification de tâches et de mouvements). Robowflex offre également des capacités de visualisation, des intégrations avec d'autres bibliothèques de robotique (par exemple, DART et Tesseract), et est complémentaire de nombreux autres paquets de robotique. Avec notre bibliothèque, l'utilisateur n'a pas besoin d'être un expert de ROS ou de MoveIt pour configurer des requêtes de planification de mouvement, extraire des informations des résultats et interagir directement avec une variété de composants logiciels. Nous présentons quelques exemples de cas d'usage qui démontrent son efficacité.

Liens

  • arXiv 2103.12826: https://arxiv.org/abs/2103.12826
  • DOI 10.1109/IROS47612.2022.9981698: https://doi.org/10.1109/IROS47612.2022.9981698
  • PDF: https://arxiv.org/pdf/2103.12826v1
  • Code: https://github.com/KavrakiLab/robowflex
  • Page du projet: https://kavrakilab.github.io/robowflex/

Ce site nécessite JavaScript. Veuillez activer JavaScript pour explorer nos projets de robotique open source.