ROS est le middleware incontournable dans le développement logiciel robotique. En constante amélioration, une nouvelle version nommée ROS2 Humble, a récemment été lancée par la fondation OSRF. A quoi doit s’attendre la communauté de développeurs robotiques ? Awabot fait le point.
Qu’est-ce que ROS ?
Si vous vous intéressez à la robotique et plus particulièrement, au développement robotique, alors vous avez déjà entendu parler de ROS. Ce sigle, qui signifie Robot Operating System, n’est autre qu’un méta-système d’exploitation robotique, créé par la société américaine Willow Garage en 2007 à l’occasion du développement de son robot PR2. Celui-ci est aujourd’hui utilisé par tous types de robots, qu’ils soient industriels, agricoles ou encore de service.
ROS constitue un ensemble de ressources et d’outils logiciels open source pouvant être utilisés pour développer des applications robotiques. Il fait ainsi le lien entre tous les process qu’un écosystème logiciel robotique peut agréger. En outre, ROS fédère une large communauté de chercheurs et développeurs robotiques, et compte de nombreux contributeurs à travers le monde.
ROS : quelle architecture de communication ?
A l’origine, le middleware ROS dispose d’une architecture de communication basée sur un certain nombre de nœuds (appelés “nodes”), pouvant communiquer entre eux via des canaux (appelés “topics”). Un node peut à la fois souscrire aux données d’un topic en tant que “subscriber”, ou publier des données en tant que “publisher” . En outre, il y a souvent plusieurs “subscriber” et “publisher” par node.
C’est notamment ce mécanisme qui permet un développement modulaire efficace : chaque nœud se spécialisant dans une tâche, les données produites et consommées par chaque nœud sont alors très mobiles. Il est ensuite très simple d’ajouter ou d’enlever un nœud dans l’architecture afin de consommer et produire de nouvelles données et ainsi prototyper rapidement des architectures logicielles complexes.
ROS concrètement
”“Chez Awabot, nous travaillons avec ROS depuis plusieurs années maintenant. Nous avions choisi ce middleware lors des premières étapes de développement de notre prototype de robot compagnon, EmoxOne, l’occasion pour l’équipe Intelligence de faire connaissance avec ce vaste outil et de découvrir la pléthore de modules mis à disposition par la communauté open-source.
explique Florian Cantori, Lead Robotics Software Engineer chez Awabot
Forte d’une première expérience complète (contrôle, navigation, perception, interaction homme-robot), l’équipe accompagne depuis quelques années maintenant de nombreux constructeurs dans le développement et le prototypage de leur plateforme robotique.”
De ROS à ROS2 : le changement, c’est maintenant !
En 2014, Dirk Thomas, ingénieur logiciel de l’Open Source Robotics Foundation (récemment rachetée par Intrinsic), annonçait l’arrivée d’une nouvelle version de ROS. Ce middleware est à l’époque plébiscité pour sa facilité d’utilisation, sa flexibilité et son adaptabilité aux scénarios robotiques, ou encore pour sa capacité de prototypage. Malgré tout, certains cas d’usages robotiques restent encore à adresser tels que le décrit cet article rédigé par la communauté ROS2 Design.
ROS1 vs ROS2
Selon Florian Cantori, Lead Robotics Software Engineer chez Awabot, “l’ambition de ROS2 est tout simplement de maintenir tout ce que ROS1 a fait de bien, en améliorant la fiabilité du système et en le préparant à une application industrielle plus large et plus robuste.”
ROS2 n’est donc pas une simple amélioration de l’existant : il est un nouveau système à part entière et nécessite à ce titre une migration du code source de ROS vers ROS2.
En effet, la fin de vie et de support de la version ROS1 Noetic a été annoncée pour Mai 2025. Celle-ci reste exploitable jusque-là et assure encore quelques belles années pour ROS1 mais à cet horizon une transition vers ROS2 est fortement recommandée par l’OSRF. Afin de faciliter cette transition, une cohabitation est possible par l’interconnexion des outils ROS1 et ROS2 via des ‘ponts’ (bridges). Les changements entre ROS1 et ROS2 sont décrits dans un article publié par Dirk Thomas.
La plateforme ROS2 utilise en grande partie les mêmes composants de base, outils et bibliothèques que son prédécesseur et comprend un certain nombre de nouvelles fonctionnalités, s’appuyant notamment sur le protocole DDS (service de distribution de données en temps réel). DDS agit comme un intergiciel pour la communication entre les nœuds et utilise le profil de qualité de service (QoS) pour fournir des avantages en matière de communication en temps réel, d’évolutivité, d’amélioration des performances et de sécurité.
ROS 1 Melodic goes end of life in 2023 and ROS 1 Noetic goes end of life in 2025.
— Robot Operating System (ROS) (@rosorg) June 1, 2022
If you don't have a ROS 2 transition plan for your ROS packages now is the time to make one. Don't get left behind! https://t.co/kTmr9T2hCY
ROS2 : liste des fonctionnalités majeures
- Découverte, transport et sérialisation sur DDS
- Prise en charge de plusieurs implémentations DDS
- Support de la sécurité DDS
- Paramètres de qualité de service pour les réseaux instables
- Composition des exigences des nœuds (compilation, liaison, chargement, exécution)
- Prise en charge des nœuds avec des cycles de vie gérés
- Système de lancement pour la coordination de plusieurs nœuds
- Prise en charge des espaces de noms pour les nœuds et les topics
- Remapping statique pour les noms ROS
- Support préliminaire pour le code temps réel
- Support préliminaire pour les microcontrôleurs bare-metal
ROS2, concrètement
”“Deuxième semestre 2021, nous avons accompagné IC Green dans la conception de son robot mobile, un AGV outdoor pour le désherbage mécanique de tous types de terrains. Au début du projet s’est posée la question de la version de ROS à mettre en œuvre. ROS1 disposait encore de quelques années devant lui avec l’assurance d’une stack de contrôle et de navigation fonctionnelle et robuste et l’ajout de fonctionnalités appréciables dans sa dernière version Noetic (enfin Python 3 !). ROS2 montrait quant à lui d’excellents signes de développement, particulièrement dans la communauté nav2, et l’assurance d’un choix stratégique long terme. Le choix paraissant limpide pour l’équipe comme pour notre client, c’est ainsi que le projet a été initié et que l’équipe a pu se confronter à ROS2. Après plusieurs mois de développement et d’intégration, nous faisions le constat suivant : le cœur applicatif de ROS2 est opérationnel et plutôt stable, la transition depuis ROS1 est très bien documentée et plutôt aisée. Léger bémol cependant : certains modules essentiels n’ayant pas tous fait la transition, des efforts supplémentaires ont été nécessaires pour atteindre notre objectif.”
Florian Cantori, Lead Robotics Software Engineer chez Awabot
RESSOURCES disponibles
- pour la justification des choix de conception de ROS2 :
https://design.ros2.org/ - pour l’ensemble de la documentation ROS2 :
https://docs.ros.org/en/foxy/index.html# - pour des concepts techniques spécifiques :
https://docs.ros.org/en/foxy/Concepts.html - tous les talks concernant ROS2 aux différentes ROSCon depuis 2014 (premiers concepts et développements de ROS2) :
https://docs.ros.org/en/foxy/The-ROS2-Project/ROSCon-Content.html
Vous souhaitez échanger sur un projet en lien avec le sujet abordé dans cet article ? Dotée de savoir-faire et compétences complémentaires couvrant l’ensemble des problématiques liées à la robotique, l’équipe Awabot Intelligence vous accompagne. Contactez-nous dès maintenant.