Robot Operating System

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
ROS
Logo ROS Jade
Logo ROS Jade

Développeur Willow Garage - OSRF
Dernière version Jade Turtle[1] ()
Écrit en C++ et PythonVoir et modifier les données sur Wikidata
Environnement Linux, Mac OS X
Licence Licence BSD
Site web ROS.org

Robot Operating System (ROS), est un ensemble d'outils informatiques open source permettant de développer des logiciels pour la robotique. À l'origine, il est développé en 2007 par la société américaine Willow Garage, pour son robot PR2 (Personal Robot 2). Son développement est aujourd'hui mené par l'Open Source Robotics Foundation (OSRF). ROS est officiellement supporté par plus de 75 robots[2].

Description[modifier | modifier le code]

Robot Operating System (ROS) est une plateforme de développement logicielle pour robot. Il s'agit d'un méta-système d'exploitation qui peut fonctionner sur un ou plusieurs ordinateurs et qui fournit plusieurs fonctionnalités : abstraction du matériel, contrôle des périphériques de bas niveau, mise en œuvre de fonctionnalités couramment utilisées, transmission de messages entre les processus et gestions des packages installés. 

Le logiciel ROS peut être séparé en trois groupes : 

  1.  les outils utilisés pour créer, lancer et distribuer des logiciels basés sur ROS (roscore[3], roslaunch[4], catkin[5])
  2.  les clients ROS pour des langages : roscpp (C++)[6]  et rospy (python)[7]
  3.  les packages contenant des programmes pour ROS utilisant un ou plusieurs clients ROS

Les outils et les principaux clients ROS (roscpp et rospy) sont publiés sous les termes de la licence BSD. De nombreux packages sont publiés pour ROS avec diverses licences open source (BSD, MIT). Ces packages permettent de lancer des applications, des algorithmes ou encore des programmes pour interfacer ROS avec des robots. L'outil de simulation Gazebo est directement intégré à ROS.

Les principaux clients ROS (C++ et Python) sont compatibles avec des systèmes de type Unix. Ceci est principalement dû à cause de leur dépendance à d'autres logiciels open-source. Pour ces bibliothèques clientes et pour la version Indigo de ROS, Ubuntu est le seul système officiellement supporté. Il existe des versions expérimentales pour les systèmes suivants : OS X, Android, Arch Linux, Debian Wheezy et OpenEmbedded/Yocto[8].

Il existe des clients ROS non officiels. Parmi eux on peut notamment citer :

  • rosjava (Java)[9] qui à permis de faire fonctionner ROS sur le système d'exploitation Android.
  • roslibjs (JavaScript)[10] qui permet d'interagir avec un système ROS depuis un navigateur. Ce client est développé dans le cadre du Robot Web Tools effort.

Fonctionnalités[modifier | modifier le code]

ROS regroupe plusieurs fonctionnalités qui facilitent le développement d'applications souple et modulable pour la robotique.

  • Architecture de communication inter-processus et inter-machine
  • Serveur de paramètre
  • Système d'enregistrement et de rejeu (rosbag[11])
  • Système de test
  • Simulateur (Gazebo[12])

Architecture de communication[modifier | modifier le code]

Schéma de fonctionnement du master sous ROS

ROS offre une architecture souple de communication inter-processus et inter-machine. Les processus ROS sont appelés des nodes et chaque node peut communiquer avec d'autres via des topics. La connexion entre les nodes est gérée par un master et suis le processus suivant : 

  1. Un premier node averti le master qu'il a une donnée à partager 
  2. Un deuxième node averti le master qu'il souhaite avoir accès à une donnée 
  3. Une connexion entre les deux nodes est créée 
  4. Le premier node peut envoyer des données au second 

Un node qui publie des données est appelé un publisher et un node qui souscrit a des données est appelé un subscriber. Un node peut être à la fois publisher et subscriber. Les messages envoyées sur les topics sont pour la plupart standardisés ce qui rend le système extrêmement flexibles. 

ROS permet une communication inter-machine, des nodes s'exécutant sur des machines distinctes, mais ayant connaissance du même master peuvent communiquer de manière transparente pour l'utilisateur. 

Histoire[modifier | modifier le code]

ROS a été initialement développé en 2007 sous le nom switchyard par le Stanford Artificial Intelligence Laboratory dans le cadre du projet Stanford AI Robot STAIR (STanford AI Robot)[13],[14].

De 2008 à 2013, le développement a été effectué principalement par Willow Garage, un institut / incubateur de recherche en robotique. Pendant ce temps, des chercheurs de plus de vingt institutions ont collaborés avec les ingénieurs de Willow Garage dans un modèle de développement fédéré[15],[16].

En février 2013, le développement de ROS est poursuivi par l'Open Source Foundation Robotics[17]. En aout 2013, un blog annonce que Willow Garage sera absorbée par une autre société créée par son fondateur, Suitable Technologies[18]. Le support du robot PR2 créé par Willow Garage a été par la suite repris par Clearpath Robotics[19].

Historique des versions[modifier | modifier le code]

Les versions de ROS peuvent être incompatibles entre-elles et sont souvent désignées par leur nom de code plutôt que leur numéro de version. Les principales versions sont à ce jour :

Distribution Date de publication Image Date de fin de vie
Jade 23 mai 2015 ROS jade logo.png 30 mai 2017
Indigo 22 juillet 2014 Indigoigloo 600.png 30 avril 2019
Hydro 4 septembre 2013 ROS Hydro logo.png 31 mai 2014
Groovy Galapagos 31 décembre 2012 ROS Groovy logo.jpg 31 juillet 2014
Fuerte Turtle 23 avril 2012 ROS Fuerte logo.jpg
Electric Emys 30 août 2011 ROS Electric logo.png
Diamondback 2 mars 2011 ROS Diamondback logo.jpg
C Turtle 3 août 2010 ROS C logo.jpg
Box Turtle 2 mars 2010 ROS Box logo.png
ROS 1.0 22 janvier 2010

Domaines d'application[modifier | modifier le code]

Les packages ROS peuvent s'appliquer à différents domaines d'application :

Robots officiellement compatibles[modifier | modifier le code]

ROS est aujourd'hui officiellement supporté par plus de 75 robots. La grande souplesse de ROS lui permet d'être déployé sur des robots très différents (robot mobile, bras industriel, multicoptère) et qui évoluent dans des milieux variés (terrestre, aérien, marin et sous-marin). Ci-dessous une liste non exhaustive des robots compatibles ROS :

Robot Constructeur
Nao[26] Aldebaran
Pepper[27] Aldebaran
PR2[28] Willow-Garage
Husky[29] Clearpath Robotics
Kingfisher[30] Clearpath Robotics
Turtlebot[31] Yujin Robotics
Shadow Hand[32] Shadow Robot
Robonaut 2[33] NASA
Erle-copter[34] Erle Robotics
Baxter[35] Rethink Robotics

Notes et références[modifier | modifier le code]

  1. http://wiki.ros.org/Distributions
  2. Community Metrics Report 2015 -http://download.ros.org/downloads/metrics/metrics-report-2015-07.pdf
  3. « roscore - ROS Wiki », sur wiki.ros.org (consulté le 28 janvier 2016)
  4. « roslaunch - ROS Wiki », sur wiki.ros.org (consulté le 28 janvier 2016)
  5. « catkin - ROS Wiki », sur wiki.ros.org (consulté le 28 janvier 2016)
  6. « roscpp - ROS Wiki », sur wiki.ros.org (consulté le 28 janvier 2016)
  7. « rospy - ROS Wiki », sur wiki.ros.org (consulté le 28 janvier 2016)
  8. « indigo/Installation - ROS Wiki », sur wiki.ros.org (consulté le 28 janvier 2016)
  9. « rosjava - ROS Wiki », sur wiki.ros.org (consulté le 28 janvier 2016)
  10. « roslibjs - ROS Wiki », sur wiki.ros.org (consulté le 28 janvier 2016)
  11. « rosbag - ROS Wiki », sur wiki.ros.org (consulté le 31 janvier 2016)
  12. « gazebo_ros_pkgs - ROS Wiki », sur wiki.ros.org (consulté le 31 janvier 2016)
  13. « STAIR », sur stair.stanford.edu (consulté le 14 janvier 2016)
  14. http://www.aaai.org/Papers/Workshops/2007/WS-07-15/WS07-15-008.pdf
  15. « ROS Wiki », sur www.ros.org (consulté le 14 janvier 2016)
  16. Morgan Quigley, Brian Gerkey, Ken Conley, Josh Faust, Tully Foote, Jeremy Leibs, Eric Berger, Rob Wheeler, Andrew Ng.http://www.robotics.stanford.edu/~ang/papers/icraoss09-ROS.pdf
  17. « Open Source Robotics Foundation | Willow Garage », sur www.willowgarage.com (consulté le 14 janvier 2016)
  18. « Willow Garage employees join Suitable Technologies | Willow Garage », sur www.willowgarage.com (consulté le 14 janvier 2016)
  19. (en) « Clearpath Welcomes PR2 to the Family - Clearpath Robotics », sur Clearpath Robotics (consulté le 14 janvier 2016)
  20. « navigation - ROS Wiki », sur wiki.ros.org (consulté le 31 janvier 2016)
  21. « amcl - ROS Wiki », sur wiki.ros.org (consulté le 31 janvier 2016)
  22. « moveit - ROS Wiki », sur wiki.ros.org (consulté le 31 janvier 2016)
  23. « hector_slam - ROS Wiki », sur wiki.ros.org (consulté le 31 janvier 2016)
  24. « gmapping - ROS Wiki », sur wiki.ros.org (consulté le 31 janvier 2016)
  25. « robot_localization - ROS Wiki », sur wiki.ros.org (consulté le 31 janvier 2016)
  26. « nao - ROS Wiki », sur wiki.ros.org (consulté le 30 janvier 2016)
  27. « pepper - ROS Wiki », sur wiki.ros.org (consulté le 30 janvier 2016)
  28. « Robots/PR2 - ROS Wiki », sur wiki.ros.org (consulté le 30 janvier 2016)
  29. « Robots/Husky - ROS Wiki », sur wiki.ros.org (consulté le 30 janvier 2016)
  30. « Robots/Kingfisher - ROS Wiki », sur wiki.ros.org (consulté le 30 janvier 2016)
  31. « Robots/TurtleBot - ROS Wiki », sur wiki.ros.org (consulté le 30 janvier 2016)
  32. « Robots/Shadow_Hand - ROS Wiki », sur wiki.ros.org (consulté le 30 janvier 2016)
  33. « Robots/Robonaut2 - ROS Wiki », sur wiki.ros.org (consulté le 30 janvier 2016)
  34. « Robots/Erle-copter - ROS Wiki », sur wiki.ros.org (consulté le 30 janvier 2016)
  35. « Rethink ROS - ROS robotics news », sur www.ros.org (consulté le 30 janvier 2016)

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]