VT2021 ROS2 fiche

From air
Revision as of 12:35, 10 January 2022 by Ethan.Malecot (talk | contribs)
Jump to navigation Jump to search

Robot Operatin System 2 (ROS2)

Auteurs

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

Qu'est ce que c'est ROS ?

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.

PR2.jpg

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...

File:ROS Description.jpg

Quels changements apporte ROS2 ?

ROS2 a été créé 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

Evolution future de ROS2

ROS1 et ROS2 dans le marché de la robotique

Conclusion

Bibliographie

[1] Attention Is All You Need: https://arxiv.org/abs/1706.03762

[2] The true names/sizes of the 4 GPT-2 models (Issue): https://github.com/openai/gpt-2/issues/209

[3] Language Models are Unsupervised Multitask Learners : https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

[4] Le projet sur github pour plus d’informations: https://github.com/kingoflolz/mesh-transformer-jax/

[5] Documentation de GPT-J sur Huggingface: https://huggingface.co/docs/transformers/model_doc/gptj

[6] Documentation de la pile: https://pile.eleuther.ai/

[7] The Pile: An 800GB Dataset of Diverse Text for Language Modeling: https://arxiv.org/pdf/2101.00027.pdf

[8] GPT-J-6B: 6B JAX-Based Transformer (Aran Komatsuzaki): https://arankomatsuzaki.wordpress.com/2021/06/04/gpt-j/

[9] Language Models are Few-Shot Learners: https://arxiv.org/pdf/2005.14165.pdf

[10] How Biased is GPT-3: https://medium.com/fair-bytes/how-biased-is-gpt-3-5b2b91f1177