Chapitre 1 : Système d'exploitation du robot
Le système d'exploitation robotisé, parfois connu sous le nom de ROS ou ros, est une suite de middleware open source pour l'informatique robotique. Bien que ROS ne soit pas un système d'exploitation (OS), mais plutôt un ensemble de cadres logiciels pour le développement de logiciels robotiques, il offre des services destinés à un cluster informatique hétérogène. Ces services comprennent l'abstraction matérielle, le contrôle de périphérique de bas niveau, l'implémentation de fonctionnalités couramment utilisées, la transmission de messages entre les processus et la gestion de packages. L'architecture graphique est utilisée pour représenter des ensembles en cours d'exécution de processus basés sur ROS. Le traitement s'effectue dans des nouds qui peuvent recevoir, post-publier et multiplexer des données de capteur, des signaux de contrôle, d'état, de planification, d'actionneur et d'autres signaux. L'architecture graphique est également utilisée pour représenter l'architecture du réseau. ROS n'est pas un système d'exploitation en temps réel (RTOS), malgré le fait que la réactivité et la faible latence sont extrêmement importantes dans le contexte d'un système de contrôle de robot. Néanmoins, il est possible d'incorporer ROS avec du code utilisé pour le calcul en temps réel. L'absence de prise en charge des systèmes en temps réel a été résolue par le développement de ROS 2, qui est une mise à niveau importante de l'interface de programmation d'application (API) ROS. ROS 2 utilisera des bibliothèques et des technologies contemporaines pour les tâches ROS de base, et il ajoutera également la prise en charge du code d'application en temps réel et du matériel de système embarqué.
Les logiciels de l'écosystème ROS peuvent être divisés en trois catégories, qui sont les suivantes :
En raison de leur disposition selon les règles de la licence BSD, les outils indépendants du langage ainsi que les bibliothèques clientes primaires (C++, Python et Lisp) sont des logiciels open source qui peuvent être utilisés gratuitement dans des contextes commerciaux et de recherche. La grande majorité des autres packages sont sous licence open source différente. Ces packages supplémentaires sont responsables de la mise en ouvre de fonctionnalités et d'applications qui sont souvent utilisées. Il s'agit notamment de pilotes matériels, de modèles de robots, de types de données, de planification, de perception, de localisation et de cartographie simultanées (SLAM), d'outils de simulation et de divers algorithmes.
Les bibliothèques clientes ROS primaires sont conçues pour fonctionner avec un système similaire à Unix. Cela est principalement dû au fait qu'ils dépendent d'un ensemble complet d'applications logicielles open source. La distribution Linux Ubuntu est appelée « prise en charge » pour certaines bibliothèques clientes, tandis que d'autres systèmes d'exploitation, tels que Fedora Linux, macOS et Microsoft Windows, sont qualifiés d'« expérimentaux » et sont pris en charge par la communauté. Des applications basées sur ROS peuvent désormais être créées pour le système d'exploitation Android grâce à la bibliothèque cliente native Java ROS connue sous le nom de rosjava. Cette bibliothèque ne partage pas ces contraintes avec d'autres bibliothèques clientes ROS. De plus, rosjava a permis d'intégrer ROS dans une boîte à outils MATLAB officiellement prise en charge. Cette boîte à outils est compatible avec Linux, macOS et Microsoft Windows. De plus, une bibliothèque cliente JavaScript connue sous le nom de roslibjs a été développée. Cette bibliothèque permet d'incorporer des applications dans un système ROS en utilisant n'importe quel navigateur Web conforme aux normes.
L'Université de Stanford a été l'endroit où les premiers composants de ce qui allait devenir plus tard ROS ont commencé à se rassembler à un moment donné avant 2007. À l'époque, le programme de robotique personnelle était dirigé par Eric Berger et Keenan Wyrobek, tous deux doctorants à l'Université de Stanford et travaillant dans le laboratoire de robotique de Kenneth Salisbury. Alors qu'ils travaillaient sur des robots pour effectuer des tâches de manipulation dans des environnements humains, les deux étudiants ont remarqué que beaucoup de leurs collègues étaient gênés par la nature diversifiée de la robotique. Par exemple, un excellent développeur de logiciels peut ne pas avoir les connaissances nécessaires en matière de matériel, et quelqu'un qui développe une planification de trajectoire de pointe peut ne pas savoir comment effectuer la vision par ordinateur nécessaire. Dans le but de trouver une solution à ce problème, les deux étudiants ont décidé de créer un système de base qui servirait de base sur laquelle d'autres universitaires pourraient construire leurs propres systèmes. Selon Eric Berger, « quelque chose qui n'était pas nul, dans toutes ces différentes dimensions » résume bien la situation.
Les deux personnes ont fait leurs premiers pas vers ce système unificateur en construisant le PR1 comme un prototype matériel, puis en commençant à travailler sur un logiciel basé sur celui-ci. Ils l'ont fait en empruntant les meilleures pratiques à d'autres cadres logiciels robotiques open source, en particulier switchyard, un système sur lequel Morgan Quigley, un autre doctorant de Stanford, avait travaillé à l'appui du Stanford Artificial Intelligence Robot (STAIR) du Stanford Artificial Intelligence Laboratory. Le financement initial d'un montant de cinquante mille dollars américains a été fourni par Joanna Hoffman et Alain Rossmann, ce qui a facilité la création du PR1. Alors qu'ils cherchaient des fonds pour poursuivre leur développement, Eric Berger et Keenan Wyrobek ont rencontré Scott Hassan, le fondateur de Willow Garage, un incubateur technologique qui travaillait sur un SUV autonome et un bateau autonome solaire. Ces deux projets étaient en cours d'élaboration. Le concept que Berger et Wyrobek avaient d'un « Linux pour la robotique » était partagé par Hassan, et il les a invités à accepter un emploi chez Willow Garage. Willow Garage a été créé en janvier 2007, et le 7 novembre de la même année, le tout premier commit de code ROS a été fait sur SourceForge.
Dans le prolongement du PR1, Willow Garage a commencé à travailler sur le robot PR2, et ROS devait être le logiciel qui serait utilisé pour le faire fonctionner. Un nombre croissant de progiciels qui se sont intégrés à ROS pour établir un écosystème logiciel plus large ont été développés avec des contributions de plus de vingt institutions différentes. Ces contributions comprenaient à la fois le logiciel de base et le nombre croissant de progiciels. En raison du fait que des personnes extérieures à Willow contribuaient à ROS, en particulier du projet STAIR de Stanford, ROS a été conçu dès le départ pour être une plate-forme capable de supporter plusieurs robots. Bien que Willow Garage ait travaillé sur d'autres projets dans le passé, ces projets ont été abandonnés en faveur du programme de robotique personnelle. L'objectif principal du programme était de développer le PR2 en tant que plate-forme de recherche pour les institutions universitaires et ROS en tant que pile robotique open source qui servirait de base à la recherche universitaire et aux startups technologiques. C'était similaire à la façon dont la pile LAMP a servi de base aux startups basées sur le Web.
Le premier des trois jalons internes de Willow Garage a été accompli en décembre 2008, et il consistait en une navigation continue pour le PR2 sur une période de deux jours et une distance de pi kilomètres. Peu de temps après, une première version de ROS, connue sous le nom de 0.4 Mango Tango, a été mise à la disposition du public. S'en est suivi la documentation initiale de RVIZ et le premier document sur les ROS. La deuxième étape interne a été franchie au début de l'été, à savoir que le PR2 était capable de naviguer sur le lieu de travail, d'ouvrir des portes et de se brancher simultanément. Le lancement du site Web de ROS.org a eu lieu dans la foulée de cet événement, qui a eu lieu en août. Lorsque ROS 1.0 a été publié en janvier 2010, les premières leçons sur le système d'exploitation ont été publiées en décembre, en préparation de sa sortie. Il s'agissait de la troisième étape, qui consistait à développer une grande quantité de documentation et de tutoriels pour les énormes capacités que les ingénieurs de Willow Garage avaient produites au cours des trois années précédentes.
Grâce à cela, Willow Garage a pu accomplir l'un de ses objectifs de longue date, qui était de faire don de dix robots PR2 à des établissements d'enseignement supérieur prestigieux. Depuis le début, c'était l'un des principaux objectifs des créateurs, car ils pensaient que le PR2 avait le potentiel d'initier la recherche en robotique dans le monde entier. Ils ont fini par attribuer onze PR2 à différentes institutions, dont l'Université de Fribourg (Allemagne), Robert Bosch GmbH, le Georgia Institute of Technology, la KU Leuven (Belgique), le Massachusetts Institute of Technology (MIT), l'Université de Stanford, l'Université technique de Munich (Allemagne), l'Université de Californie à Berkeley, l'Université de Pennsylvanie, l'Université de Californie du Sud (USC) et l'Université de Tokyo (Japon). Tout cela, en conjonction avec le programme de stage extrêmement fructueux offert par Willow Garage (que Melonee Wise a supervisé de 2008 à 2010), a contribué à la diffusion de l'information sur les ROS dans la communauté de la robotique. ROS Box Turtle, la première...