VT2021 ROS2 fiche

= Robot Operatin System 2 (ROS2) =

= Auteurs =
 * MALECOT Ethan (ethan.malecot@etu.univ-grenoble-alpes.fr)
 * CIRSTEA Paul (paul.cirstea@etu.univ-grenoble-alpes.fr)

= Résumé =

ROS2 est une plateforme Open Source pour le développement en robotique qui vient succéder à ROS1 (Robot Operating System). L’idée de ROS est de fournir une plateforme d’exécution ainsi qu’un ensemble d’outils de développement qui s’adapte à une multitude de projets en robotique. ROS2 est né avec la volonté de venir s’adapter aux nouveaux besoins qui n’était pas présent au moment de la création de ROS1 : la collaboration entre robots, les contraintes temps réel, l’environnement de production plutôt que de développement, … La première distribution de ROS2 est arrivée en 2017 et près de 8 distributions existent à ce jour.

= Mots Clés = Système d’exploitation pour robots (ROS) : plateforme offrant des services proche de ceux des systèmes d'exploitation comme l'abstraction du matériel, la gestion de la concurrence, gestion des processus, etc... nœuds : c'est l'élément de base des graphes ROS, il correspond à une unité fonctionnelle (ex: contrôle des roues) et il peut envoyer et recevoir des données à d'autres noeuds. topic : Système de transport de l'information basé sur le concept de publisher et subscriber. service : Système de transmission de l'information basé sur une structure client/serveur, où le client fait des requêtes au serveur pour obtenir une donné. action : Système de transmission combinant les topics et les services très utlisés pour les tâches de longues durées car il permet d'avoir un feedback régulier de ce qui est fait par le node pendant la tâche.

= Abstract =

ROS2 is an open source platform for the development of robots that comes after ROS1 (Robot Operating System). The idea behind ROS is to create a platform that can execute the robot’s code while also bringing development tools for any robot developer. ROS2 was created with the will to adapt to new needs that didn’t exist when ROS1 was created : collaboration between robots, real time constraint, production environment, … The first ROS2 distribution arrived in 2017 and 7 other distributions have been created since then.

= Keywords = Robot Operating System (ROS) : platform offering operating systems services like the abstraction of the material, the control of the process, etc... node : basic ROS element around one functional unit (example: control of the wheels). It can send and receive data to other nodes. topic : Data transport system based on subscriber/publisher idea. service : Data transport system based on client/server idea, where the client needs to call for the ressource to get it from the server. action : Data transport system based on service and topic that is used for long task to get regular feedback during the task.

= Synthèse =

Histoire
Willow garage(laboratoire de recherche en informatique de Californie créé en 2006) met au point un robot à taille humanoïde (PR2) en 2010. Pour la création de ce robot, la société décide de mettre en place une pateforme adaptée au besoin de ce robot : ROS (Robot Operating System). Cette plateforme sera ensuite repris par la société Open Robotics (société californienne à but non lucratif) et étendu à plus de 75 robots. Le but était de faire de ROS un standard pour un ensemble de robots.



Description
ROS fonctionne autour de 5 axes majeures : - Logiciel d'exécution - Outils de developpement - Bibliothèques logicielles - Standard robotique - Communauté ROS

ROS offre une plateforme d'exécution dans laquelle on peut exécuter le code destiné au robot. C'est l'aspect système d'exploitation (Operating System) que l'on retrouve dans ROS. On trouve également un ensemble d'outils de plus haut niveau pour le développement allant de la configuration, à la maintenance et aux tests. Le but est donc d'avoir un outil avec lequel programmer. De plus, l'apect communautaire est très fort dans le developpement de ROS, avec un enrichissement et un partage des bibliothèques logicielles pour faciliter l'expansion de ROS pour de nombreux robots. Enfin, ROS se veut comme établissant un standard de règle de bonne pratique, de patterns, etc...



Quels changements apporte ROS2 ?
ROS2 a été créé en décembre 2017 dans le but de répondre à de nouveaux besoins. En effet, lors de la création de ROS1, Willow garage s'est basé sur les besoins qui concernaient leur robot PR2 à l'époque. Cependant avec les années, ROS s'est de plus en plus élargi s'éloignant de ces besoins initiaux. L'idée était aussi que l'API créé datait de 2010 donc passer à ROS2 pouvait aussi permettre de mettre à jour cette API. ROS2 a donc pour but de : - permettre la communication dans une équipe de robots (robot seul dans ROS1) - permettre d'utiliser des systèmes embarqués de très petite taille - permettre la transmission de donnée en temps réel - s'adapter à un environnement de production plutôt que l'environnement académique dans lequel ROS1 avait été créé - s'adapter au réseau instable car ROS1 s'adapte mal à des variations de connection du réseau.

Afin de parvenir à ces buts, ROS2 offre plusieurs nouveautés par rapport à ROS1 : - Plus de système d’exploitation sur lesquels développer (Windows par exemple) - Utilise des version plus récentes de C++ et Python - Possibilité de créer plusieurs noeuds dans un processus - Utilisation d’un DDS (Data Distribution Service) qui permet d’améliorer la transmission - Roslaunch permet d’assurer que tous les noeuds ont été instanciés correctement avant l'exécution de leur comportement - “Une API revue au goût du jour”

Concepts manipulés par ROS2
ROS se base sur 4 concepts de base : les noeuds, les topics, les services et les actions.

Architecture d'un graphe ROS:



Les noeuds sont des unités fonctionnelles qui peuvent contenir plusieurs paramètres comme des entiers, des strings, etc... Par exemple, on pourrait avoir un node associé à la roue d'un véhicule. Les topics sont des systèmes de transmission où des noeuds peuvent s'abonner pour recevoir les changements qui sont publiés par les publishers. Les publishers sont des noeuds qui vont se déclarer au topic commme publishers et partager leur données à tous les subscribers de ce topic.



Les services sont des systèmes de transmission basés sur l'achitecture client/serveur ou un ou plusieurs clients peuvent demander un donnée au serveur. Chaque service ne peut avoir qu'un seul serveur, mais il peut avoir une multitude de clients. De plus, lorsque que le serveur envoie la donnée, il ne l'envoie qu'au client lui ayant demandé cette donnée, pas aux autres.

Les actions sont des systèmes de transmission basés à la fois sur les topics et les services. Le but est d'avoir des feedbacks réguliers lors d'une action longue. Pour cela, le client va envoyer un but et va demander le résultat au serveur, le but étant le résultat de l'action longue et la demande de résultat va donc prendre un certain temps. Pendant ce temps, la serveur va envoyer des notifications régulières via un topic au client pour lui indiquer l'avancée par rapport au but final (les feedbacks).



Evolution future de ROS2
Depuis sa création, ROS2 a été décliné sous 7 distributions : Ardent, Bouncy, Crystal, Dashing, Eloquent, Foxy, Galactic. Les nouvelles distributions sortent entre 6 mois et 1 an après la précédente. La prochaine distribution qui verra le jour sera Humble Hawksbill en mai 2022. L'ajout de nouvelles distributions permet de corriger des problèmes d'anciennent distributions et d'ajouter de nouvelles fonctionnalités ou d'enlever des fonctionnalités inutiles. Les changements restent souvent mineur entre les distributions. Les distributions ont une durée de vie entre 2 et 5 ans en général.

ROS1 et ROS2 dans le marché de la robotique
En regardant le marché de la robotique dans ces deux dernières années, on peut voir différents projets ayant vu le jour qui se basent sur ROS et ROS2, et ce pas uniquement dans le milieu universitaire et dans des petites entreprises. Des entreprises comme Boston Dynamics ou OTTO motors l'utilisent dans leurs projets, ou encore la NASA. Parmi les projets notable de ces dernières années, on retoruve par exemple une collaboration entre Boston Dynamics et OTTO motors pour un projet d'automatisation d'entrepôt avec des robots transportant les cartons à entreposer et des robots avec un bras pour déplacer les cartons et les placer dans l'entrepôt. Ce projet utilise en particulier l'obstacle avoidance fournis par ROS2 Un autre projet intéressant est un projet de la NASA, dans lequel le but est de créer des robots d'aide à la maintenance des stations spatiales pour assister les astonautes dans les bases dans l'espace. Ce projet était dans des phases de test avancées en août 2021. Il se basait sur ROS1. Il existe de nombreux projets basés sur ROS1 et ROS2 et nous vous invitons à consulter les rapports réguliers sur l'état de la robotique pour suivre ces avancés.

= Conclusion =

ROS2 est un assez récent et de ce fait, beaucoup de projet sont encore fait sous ROS1. Cependant, en répondant à des nouveaux besoins, ROS2 a pu commencer à être utilisé pour des nouveaux projets et on peut espérer le voir dans beaucoup de projet dans les années à venir.

= Bibliographie = [1] Why has ROS2 been created: https://design.ros2.org/articles/why_ros2.html (Author: Brian Gerkey, Date : 2014-06)

[2] Monthly report of the state of Robotic: https://ubuntu.com/blog/the-state-of-robotics-XXXX-2021 (remplacer XXX par le mois pour regarder chaque mois de 2021)

[3] ROS description : http://wiki.ros.org/rqt (Author: Thomas Dirk)

[4] Documentation for ROS1 and ROS2 : https://docs.ros.org/ (Author: Open Robotics)

[5] ROS : le standard d'architecture logicielle robotique : https://www.digitalcorner-wavestone.com/

[6] Site marchant de robot - donne aussi des avis sur des technologies: https://www.generationrobots.com/fr/