Objectifs de conception du système ROS
Avec les progrès rapides et la complexité croissante de la robotique, le besoin de réutilisabilité et de modularité du code est devenu de plus en plus pressant. Certains systèmes robotiques open source ont eu du mal à répondre de manière adéquate à ces besoins. En 2007, Willow Garage a lancé le Robot Operating System (ROS), un système open source qui a rapidement suscité un engouement et été largement adopté au sein de la communauté des chercheurs en robotique.
Le système ROS est né d’une collaboration entre un projet lancé en 2007 au Laboratoire d’intelligence artificielle de l’université de Stanford et le programme “ Personal Robots ” de Willow Garage. À partir de 2008, le développement a été pris en charge par Willow Garage. Grâce aux prouesses remarquables des premiers robots ROS, comme le PR2 — qui pouvaient notamment plier des vêtements, brancher des appareils et préparer le petit-déjeuner —, ROS a suscité un intérêt croissant. Willow Garage a exprimé son ambition de tirer parti du développement open source pour transformer le PR2 en un robot « universel ».
Le PR2 affichait un prix élevé, vendu au détail à 1 440 000 TP en 2011. Il est aujourd’hui principalement utilisé à des fins de recherche. Équipé de deux bras comportant chacun sept articulations, le PR2 est doté de préhenseurs comme effecteurs terminaux. Sa mobilité est assurée par quatre roues montées sur sa base. Des caméras haute résolution, des télémètres laser, des unités de mesure inertielle, des capteurs tactiles et d’autres équipements de détection avancés sont installés sur la tête, le torse, les coudes et les pinces du PR2. Deux ordinateurs à 8 cœurs situés au niveau de la base servent de centre de contrôle et de communication pour le matériel du robot. Les deux ordinateurs fonctionnent sous Ubuntu et ROS.
Objectifs de conception du ROS
ROS est un logiciel libre qui fait office de système d’exploitation secondaire pour les robots. Il offre des fonctionnalités similaires à celles d’un système d’exploitation, notamment l’abstraction matérielle, la gestion des pilotes de bas niveau, l’exécution de fonctions partagées, la communication entre programmes et la gestion des paquets. Il propose également des outils et des bibliothèques permettant d’acquérir, de créer, d’écrire et d’exécuter des programmes collaboratifs impliquant plusieurs robots. ROS est un logiciel libre qui sert de système d'exploitation de fond, ou système d'exploitation secondaire, pour les robots. Il offre des fonctionnalités similaires à celles d'un système d'exploitation, notamment l'abstraction matérielle, la gestion des pilotes de bas niveau, l'exécution de fonctions partagées, la communication entre programmes et la gestion des paquets. Il propose également des programmes utilitaires et des bibliothèques permettant d’acquérir, de créer, d’écrire et d’exécuter des programmes collaboratifs multi-robots.
Principales caractéristiques du ROS
L'architecture d'exécution ROS est un cadre de traitement qui utilise les modules de communication ROS pour établir des connexions réseau peer-to-peer faiblement couplées entre les modules. Elle met en œuvre plusieurs types de communication, notamment la communication RPC (appel de procédure à distance) synchrone basée sur les services, la communication asynchrone par flux de données basée sur les sujets, et le stockage de données sur le serveur de paramètres. Cependant, ROS ne dispose pas en soi de capacités en temps réel.
Les principales caractéristiques des ROS peuvent être résumées comme suit :
Conception entre pairs
Un système utilisant ROS se compose d’une série de processus répartis sur plusieurs hôtes distincts et qui communiquent entre eux, pendant leur fonctionnement, via une topologie pair-à-pair. Bien que les frameworks logiciels basés sur des serveurs centraux puissent également offrir les avantages des environnements multiprocessus et multi-hôtes, ces frameworks rencontrent des problèmes liés au serveur de données central lorsque les ordinateurs sont connectés via des réseaux différents. Un système utilisant ROS se compose d’une série de processus qui existent sur plusieurs hôtes différents et communiquent pendant leur fonctionnement via une topologie peer-to-peer. Bien que les frameworks logiciels basés sur un serveur central puissent également offrir les avantages des environnements multiprocessus et multi-hôtes, ces frameworks rencontrent des problèmes avec le serveur de données central lorsque les ordinateurs sont connectés via des réseaux différents.
Assistance multilingue
Lorsqu'ils écrivent du code, de nombreux programmeurs ont tendance à privilégier certains langages de programmation. Ces préférences découlent de facteurs tels que le temps passé à programmer dans chaque langage, l'efficacité du débogage, la syntaxe, l'efficacité d'exécution, ainsi que diverses considérations techniques et culturelles. Pour répondre à ces enjeux, nous avons conçu ROS comme un framework indépendant du langage. ROS prend désormais en charge de nombreux langages différents, notamment le C++, Python, Octave et LISP, et inclut également plusieurs implémentations d'interface pour d'autres langages.
Le caractère unique de ROS se manifeste principalement au niveau de la couche de communication par messages plutôt qu’à des niveaux plus profonds. Les connexions et configurations de bout en bout sont mises en œuvre à l’aide du mécanisme XML-RPC, qui comprend également des implémentations bien documentées pour la plupart des principaux langages de programmation. Notre objectif est que ROS s'implémente plus naturellement dans divers langages, en s'adaptant à leurs conventions syntaxiques respectives, plutôt que de fournir des interfaces basées sur le C pour d'autres langages. Cependant, dans certains cas, il est pratique de s'appuyer sur des bibliothèques existantes pour encapsuler la prise en charge de nouveaux langages. Par exemple, le client Octave est implémenté à l'aide d'une bibliothèque de wrappers en C++.
Afin de faciliter le développement multi-langage, ROS utilise un langage de définition d’interface (IDL) simple et indépendant du langage pour décrire les échanges de messages entre les modules. L’IDL utilise un texte concis pour définir la structure de chaque message et permet la composition de messages. Par exemple, le diagramme suivant illustre un message « point » décrit à l’aide de l’IDL :
Les générateurs de code pour chaque langage produisent les fichiers de code natif correspondants. Lors de la transmission et de la réception de messages, ROS compile et exécute automatiquement ces fichiers en parallèle. Cela permet de gagner un temps considérable en programmation et de réduire les erreurs : le fichier IDL de trois lignes se décompose automatiquement en 137 lignes de code C++, 96 lignes de code Python, 81 lignes de code Lisp et 99 lignes de code Octave. Les messages étant générés automatiquement à partir de simples fichiers texte, de nouveaux types de messages peuvent être facilement définis. À l’heure où nous écrivons ces lignes, les bibliothèques de code basées sur ROS connues contiennent plus de quatre cents types de messages. Ces messages transmettent des données de capteurs, permettant ainsi aux objets de détecter leur environnement.
Il en résulte une gestion des messages indépendante de la langue, permettant de mélanger et d'associer librement plusieurs langues.
Rationalisation et intégration
La plupart des projets actuels d'ingénierie logicielle en robotique contiennent des pilotes et des algorithmes pouvant être réutilisés en dehors du projet. Malheureusement, pour diverses raisons, les couches intermédiaires de la plupart des codes sont trop désordonnées, ce qui rend difficile l'extraction de leurs fonctionnalités et leur application au-delà de la phase de prototypage.
Pour contrer cette tendance, nous encourageons l’évolution progressive de tous les pilotes et algorithmes vers des bibliothèques autonomes, indépendantes des dépendances ROS. Les systèmes développés avec ROS se caractérisent par leur modularité, chaque module pouvant être compilé séparément. L’outil CMake utilisé pour la compilation facilite l’application de ce principe de minimalisme. ROS encapsule essentiellement du code complexe au sein de bibliothèques, ne créant que de petites applications pour illustrer les fonctionnalités de ces dernières. Cela permet de porter et de réutiliser du code simple au-delà de la phase de prototypage. Autre avantage : les tests unitaires deviennent nettement plus faciles lorsque le code est réparti entre plusieurs bibliothèques. Un seul programme de test peut ainsi vérifier plusieurs fonctionnalités au sein d’une même bibliothèque.
ROS s'appuie sur le code de nombreux projets open source existants. Par exemple, il emprunte du code relatif aux pilotes, au contrôle de mouvement et à la simulation au projet Player ; des algorithmes de vision à OpenCV ; des algorithmes de planification à OpenRAVE ; et bien d'autres encore. Dans chaque cas, ROS offre diverses options de configuration et facilite la communication de données entre les composants logiciels tout en n’appliquant qu’un minimum d’enveloppes et de modifications. ROS évolue en permanence grâce à la maintenance assurée par la communauté, qui intègre dans son code source les mises à jour provenant d’autres bibliothèques logicielles ainsi que les correctifs d’applications.
Boîte à outils complète
Pour gérer le cadre logiciel complexe de ROS, nous avons eu recours à de nombreux utilitaires permettant de compiler et d’exécuter divers composants ROS, en les concevant sous la forme d’un noyau plutôt qu’en construisant un environnement de développement et d’exécution massif. Ces outils prennent en charge diverses tâches, telles que l’organisation des structures de code source, la récupération et la définition des paramètres de configuration, la visualisation des connexions topologiques de bout en bout, la mesure de l’utilisation de la bande passante, la représentation claire des données d’information et la génération automatique de documentation. Bien que nous ayons testé des services essentiels tels que l’horloge globale et l’enregistreur pour les modules de contrôle, nous visons toujours à modulariser l’ensemble du code. Nous estimons que les avantages en termes de stabilité et de simplification de la gestion l’emportent largement sur toute perte d’efficacité éventuelle.
Gratuit et libre (open source)
L'intégralité du code source de ROS est mise à la disposition du public. Nous pensons que cela favorisera inévitablement le débogage à tous les niveaux du logiciel ROS et permettra de corriger les erreurs en continu. Bien que les logiciels non open source tels que Microsoft Robotics Studio et Webots possèdent de nombreuses qualités louables, nous restons convaincus qu'une plateforme open source reste irremplaçable. Cela est particulièrement vrai lorsque le matériel et les logiciels, à tous les niveaux, sont conçus et débogués simultanément. L’intégralité du code source de ROS est mise à la disposition du public. Nous pensons que cela favorisera inévitablement le débogage à tous les niveaux des logiciels ROS et permettra de corriger les erreurs en continu. Bien que des logiciels non open source tels que Microsoft Robotics Studio et Webots possèdent également de nombreuses qualités louables, nous considérons qu’une plateforme open source est irremplaçable. Cela est particulièrement vrai lorsque le matériel et les logiciels, à tous les niveaux, sont conçus et débogués simultanément.
Robots représentatifs des modèles ROS courants disponibles sur le marché
Les robots représentatifs utilisant ROS disponibles sur le marché illustrent la manière dont ce cadre open source prend en charge des applications variées. Par exemple, robots mobiles Des robots tels que le TurtleBot et le Husarion ROS sont largement utilisés dans l’enseignement et la recherche ; des robots de service comme le Fetch et le PR2 mettent en avant des capacités avancées de manipulation et de navigation ; tandis que des plateformes industrielles telles que le Husky de Clearpath démontrent l’intégration de ROS dans des environnements difficiles. Ces exemples illustrent la flexibilité et l’évolutivité de ROS tant dans le domaine de la robotique universitaire que commerciale.
La liste suivante présente des exemples représentatifs de robots ROS quadrupèdes, de robots ROS à roues et de robots ROS à chenilles.
Les meilleurs robots quadrupèdes fonctionnant sous ROS
| Nom de Copmay | Pays | Image d'un robot | Demande | Site officiel |
| Unitree Robotics | Chine | ![]() | l'enseignement, la recherche et les activités industrielles | https://www.unitree.com/go2 |
| Boston Dynamics | États-Unis | ![]() | Inspection industrielle | https://bostondynamics.com/products/spot/ |
Le top 5 des robots à roues utilisant ROS
| Nom de Copmay | Pays | Image d'un robot | Charge utile | Site officiel |
| MiR | Danemark | ![]() | 600 kg | https://www.mobile-industrial-robots.com |
| Robotnik Robot | Espagne | ![]() | 150 kg | https://bostondynamics.com/products/spot/ |
| Robotnik | Espagne | ![]() | 250 kg | |
| Clearpath Robotics | Canada | ![]() | 100 kg | https://clearpathrobotics.com |
| Fdata Robot | Chine | ![]() | 1 000 kg | https://www. fdatabot.com |
Les meilleurs robots à chenilles compatibles avec ROS
| Nom de Copmay | Pays | Image d'un robot | Demande | Site officiel |
| Superdroid Robots | Canada | ![]() | Robot tactique Robot tactique | https://www.superdroidrobots.com/store/tracked-robots |
Vous recherchez des solutions robotiques sur mesure ? Contactez-nous
Nous contacter
Fdata est un fabricant chinois de robots mobiles. Nous sommes spécialisés dans les solutions robotiques mobiles sur mesure et accompagnons nos clients de l'idée initiale à la production en série.









