Robot Operating System
Robot Operating System (ROS), est un ensemble d'outils informatiques sous forme de logiciels libres (le système est sous licence BSD) 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 Robotics », sur www.openrobotics.org (consulté le )(anciennement Open Source Robotics Foundation ou OSRF). ROS est officiellement supporté par plus de 75 robots[3].
Créateur | Keenan Wyrobek (d) |
---|---|
Développé par | Willow Garage - OSRF - Open Robotics |
Première version | |
Dernière version |
Noetic Ninjemys ()[1] Iron Irwini ()[2] |
Dépôt | github.com/ros2 |
Écrit en | C++ et Python |
Système d'exploitation | Linux |
Environnement | Linux, Mac OS X |
Type | Framework |
Licence | Licence BSD |
Site web | ROS.org |
Description
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 :
- les outils utilisés pour créer, lancer et distribuer des logiciels basés sur ROS (roscore[4], roslaunch[5], catkin[6])
- les clients ROS pour des langages : roscpp (C++)[7] et rospy (python)[8]
- 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û à leur dépendance à d'autres logiciels open-source. En , pour ces bibliothèques clientes et pour la version de ROS Indigo, Ubuntu est le seul système officiellement supporté par défaut. Il existe alors des versions expérimentales pour les systèmes suivants : OS X, Android, Arch Linux, Debian Wheezy et OpenEmbedded/Yocto[9].
Pour la version (appelée distribution dans le jargon ROS), Melodic Morenia, les architectures de processeur AMD64, ARM32 et ARM64 sont supportées (version de à )[10]
Il existe des clients ROS non officiels. Parmi eux on peut notamment citer :
Fonctionnalités
ROS regroupe plusieurs fonctionnalités qui facilitent le développement d'applications souples et modulables pour la robotique.
- Architecture de communication inter-processus et inter-machine
- Serveur de paramètre
- Système d'enregistrement et de rejeu (rosbag[13])
- Système de test
- Simulateur (Gazebo[14])
Architecture de communication
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 suit le processus suivant :
- Un premier node avertit le master qu'il a une donnée à partager
- Un deuxième node avertit le master qu'il souhaite avoir accès à une donnée
- Une connexion entre les deux nodes est créée
- 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 à des données est appelé un subscriber. Un node peut être à la fois publisher et subscriber. Les messages envoyés sur les topics sont pour la plupart standardisés ce qui rend le système extrêmement flexible.
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
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)[15] - [16].
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é avec les ingénieurs de Willow Garage dans un modèle de développement fédéré[17] - [18].
En , le développement de ROS est poursuivi par l'Open Source Robotics Foundation[19]. En , un blog annonce que Willow Garage sera absorbée par une autre société créée par son fondateur, Suitable Technologies[20]. Le support du robot PR2 créé par Willow Garage a été par la suite repris par Clearpath Robotics[21].
Historique des versions
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 |
---|---|---|---|
ROS 1.0 | |||
Box Turtle | |||
C Turtle | |||
Diamondback | |||
Electric Emys | |||
Fuerte Turtle | |||
Groovy Galapagos | |||
Hydro Medusa | |||
Indigo Igloo | |||
Jade Turtle | |||
Kinetic Kame | |||
Lunar Loggerhead | |||
Melodic Morenia | |||
Noetic Ninjemys (dernière version de ROS 1) |
Domaines d'application
Les packages ROS peuvent s'appliquer à différents domaines d'application :
- Navigation : navigation stack[22], amcl[23]
- Manipulation : moveit[24]
- Perception : hector_slam[25], gmapping[26]
- Fusion de données : robot_localization[27]
Robots officiellement compatibles
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[28] | Aldebaran |
Pepper[29] | Aldebaran |
PR2[30] | Willow-Garage |
Husky[31] | Clearpath Robotics |
Kingfisher[32] | Clearpath Robotics |
Turtlebot [33] | Willow Garage |
Turtlebot 2[33] | Yujin Robotics |
Turtlebot 3 [33] | Robotis |
Shadow Hand[34] | Shadow Robot |
Robonaut 2[35] | NASA |
Erle-copter[36] | Erle Robotics |
Baxter[37] | Rethink Robotics |
Autorally[38] | Georgia Tech |
Stan (robot voiturier)[39] | Stanley Robotics |
Notes et références
- « http://wiki.ros.org/noetic »
- « https://docs.ros.org/en/iron » (consulté le )
- Community Metrics Report 2015 -http://download.ros.org/downloads/metrics/metrics-report-2015-07.pdf
- « roscore - ROS Wiki », sur wiki.ros.org (consulté le )
- « roslaunch - ROS Wiki », sur wiki.ros.org (consulté le )
- « catkin - ROS Wiki », sur wiki.ros.org (consulté le )
- « roscpp - ROS Wiki », sur wiki.ros.org (consulté le )
- « rospy - ROS Wiki », sur wiki.ros.org (consulté le )
- « indigo/Installation - ROS Wiki », sur wiki.ros.org (consulté le )
- « REP 3 -- Target Platforms (ROS.org) », sur ros.org (consulté le ).
- « rosjava - ROS Wiki », sur wiki.ros.org (consulté le )
- « roslibjs - ROS Wiki », sur wiki.ros.org (consulté le )
- « rosbag - ROS Wiki », sur wiki.ros.org (consulté le )
- « gazebo_ros_pkgs - ROS Wiki », sur wiki.ros.org (consulté le )
- « STAIR », sur stair.stanford.edu (consulté le )
- http://www.aaai.org/Papers/Workshops/2007/WS-07-15/WS07-15-008.pdf
- « ROS Wiki », sur www.ros.org (consulté le )
- 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
- « Open Source Robotics Foundation | Willow Garage », sur www.willowgarage.com (consulté le )
- « Willow Garage employees join Suitable Technologies | Willow Garage », sur www.willowgarage.com (consulté le )
- (en-US) « Clearpath Welcomes PR2 to the Family - Clearpath Robotics », sur Clearpath Robotics (consulté le )
- « navigation - ROS Wiki », sur wiki.ros.org (consulté le )
- « amcl - ROS Wiki », sur wiki.ros.org (consulté le )
- « moveit - ROS Wiki », sur wiki.ros.org (consulté le )
- « hector_slam - ROS Wiki », sur wiki.ros.org (consulté le )
- « gmapping - ROS Wiki », sur wiki.ros.org (consulté le )
- « robot_localization - ROS Wiki », sur wiki.ros.org (consulté le )
- « nao - ROS Wiki », sur wiki.ros.org (consulté le )
- « pepper - ROS Wiki », sur wiki.ros.org (consulté le )
- « Robots/PR2 - ROS Wiki », sur wiki.ros.org (consulté le )
- « Robots/Husky - ROS Wiki », sur wiki.ros.org (consulté le )
- « Robots/Kingfisher - ROS Wiki », sur wiki.ros.org (consulté le )
- « Robots/TurtleBot - ROS Wiki », sur wiki.ros.org (consulté le )
- « Robots/Shadow_Hand - ROS Wiki », sur wiki.ros.org (consulté le )
- « Robots/Robonaut2 - ROS Wiki », sur wiki.ros.org (consulté le )
- « Robots/Erle-copter - ROS Wiki », sur wiki.ros.org (consulté le )
- « Rethink ROS - ROS robotics news », sur www.ros.org (consulté le )
- « Robots/Autorally - ROS Wiki », sur wiki.ros.org (consulté le )
- « Ingénieur Robotique Senior », sur stanley-robotics.welcomekit.co (consulté le )