Robot Operating System (ROS), est un ensemble d'outils informatiques sous forme de logiciels libres 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. Son développement est aujourd'hui mené par l' (anciennement Open Source Robotics Foundation ou OSRF). En 2024, ROS est utilisé par plus de 1250 entreprises.
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, roslaunch, catkin) les clients ROS pour des langages : roscpp (C++) et rospy (python) 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) étaient à l'origine uniquement compatibles avec des systèmes de type Unix en raison de leur dépendance à d'autres logiciels open-source.
En la version de ROS Jazzy Jalisco prends en charge les principales distributions Linux (Ubuntu, Debian, RHEL) mais aussi les systèmes Windows 10, MacOS et OpenEmbedded Yocto. Cette version (appelée distribution à la manière des systèmes Linux) prends en charge les architectures de processeur AMD64, ARM32 et ARM64.
Il existe des clients ROS non officiels. Parmi eux on peut notamment citer : rosjava (Java) qui a permis de faire fonctionner ROS sur le système d'exploitation Android. roslibjs (JavaScript) 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 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) Système de test Simulateur (Gazebo)
Architecture de communication thumb|350x350px|Schéma de fonctionnement du master sous ROSROS 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)http://www.aaai.org/Papers/Workshops/2007/WS-07-15/WS07-15-008.pdf.
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é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.
En , le développement de ROS est poursuivi par l'Open Source Robotics Foundation.. En , un blog annonce que Willow Garage sera absorbée par une autre société créée par son fondateur, Suitable Technologies.. Le support du robot PR2 créé par Willow Garage a été par la suite repris par Clearpath Robotics..
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 :
ROS 1 +DistributionDate de publicationImageDate de fin de vieROS 1.0Box Turtleframeless|70x70pxC Turtleframeless|70x70pxDiamondbackframeless|93x93pxElectric Emysframeless|70x70pxFuerte Turtleframeless|91x91pxGroovy Galapagosframeless|97x97pxHydro Medusaframeless|75x75pxIndigo Iglooframeless|70x70pxJade Turtleframeless|74x74pxKinetic Kame Lunar LoggerheadMelodic MoreniaNoetic Ninjemys(dernière version de ROS 1)
ROS 2 +DistributionDate de publicationImageDate de fin de vieRolling Ridleyprogressing since June 2020 N/AKilted Kaiju.23 Mai 2025 Novembre 2026Jazzy Jalisco23 Mai 2024 Mai 2029Iron Irwini23 Mai 2023. Novembre 2024Humble Hawksbill23 Mai 2022. Mai 2027Galactic Geochelone23 Mai 2021. Décembre 2022Foxy Fitzroy5 Juin 2020. Juin 2023Eloquent Elusor22 Novembre 201992x92px|The release poster ROS 2 Eloquent Elusor.Novembre 2020Dashing Diademata31 Mai 2019104x104px|The release poster ROS 2 Dashing Diademata.Mai 2021Crystal Clemmys14 Décembre 201879x79px|The release poster ROS 2 Crystal Clemmys.Décembre 2019Bouncy Bolson2 Juillet 2018 Juillet 2019Ardent Apalone8 Décembre 2017 Décembre 2018
Domaines d'application Les packages ROS peuvent s'appliquer à différents domaines d'application : Navigation : navigation stack, amcl Manipulation : moveit Perception : hector_slam, gmapping Fusion de données : robot_localization Robots officiellement compatibles ROS est aujourd'hui officiellement pris en charge 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 avec ROS : RobotConstructeurNaoAldebaranPepperAldebaranPR2Willow-GarageHuskyClearpath RoboticsKingfisherClearpath RoboticsTurtlebotWillow GarageTurtlebot 2.Yujin RoboticsTurtlebot 3RobotisShadow HandShadow RobotRobonaut 2NASAErle-copterErle RoboticsBaxterRethink RoboticsAutorally.Georgia TechStan (robot voiturier).Stanley Robotics
Notes et références
Voir aussi
Articles connexes logiciel libre matériel libre
Liens externes https://www.ros.org/wiki/, le site officiel
Catégorie:Logiciel de robotique Catégorie:Système d'exploitation