ROS : Robot Operating System 

ROS : Robot Operating System

Aujourd’hui, lorsqu’on parle de développement robotique, ROS est devenu un incontournable. Cette plateforme open-source facilite l’intégration des différents modules logiciels qui constituent un système robotique et propose un standard pour la communauté de développeurs.

Issu d’un projet du Stanford Artificial Intelligence Laboratory, ROS a initialement été développé en 2007. Le projet est né dans le but de répondre au besoin d’avoir un moyen de relier tous les processus logiciels qu’un système robotique peut contenir. Mais pourquoi est-ce qu’un tel outil est nécessaire?

Typiquement, un robot est composé de 3 principaux types de modules: la perception, la planification et le contrôle.

Perception

Avant de pouvoir interagir avec son environnement, le robot a besoin de le comprendre. Cela peut nécessiter une grande quantité de capteurs, selon la tâche que le robot doit accomplir. Par exemple, une voiture autonome peut utiliser des caméras, des LIDAR, des GPS, des centrales inertielles, etc.

Planification

Ensuite, une fois que le robot comprend ce qu’il se passe autour de lui, il doit prendre des décisions et utiliser l’information qui lui est présentée pour agir de manière optimale. Si on reprend notre voiture autonome, celle-ci doit savoir comment réagir si elle détecte un piéton qui se trouve devant elle!

Contrôle

Finalement, le robot doit être en mesure d'exécuter les actions qu’il a déterminé comme étant optimales. Cela signifie de convertir des commandes abstraites en action concrètes qui auront des conséquences dans le monde réel, comme accélérer et freiner par exemple.

Par contre, ces 3 catégories de tâches englobent souvent une multitude de processus, qui ne fonctionnent pas nécessairement de façon linéaire et qui interagissent tous les uns avec les autres de manière complexe. C’est là que ROS entre en jeu. Il permet de suivre tous les modules (appelés des noeuds) et gère les transferts d’information entre eux.Suite aux premiers développements de ROS, Willow Garage, un incubateur de recherche robotique, a pris en charge le développement de la plateforme et a contribué grandement à sa croissance. La communauté open-source de ROS compte aujourd’hui un grand nombre de contributeurs à travers le monde.

Comment ça fonctionne?

Le nom Robot Operating System peut porter à confusion. En fait, ROS n’est pas un système d’exploitation en soi, comme le sont Windows et Linux par exemple. C’est plutôt un middle-ware, une plateforme qui offre une abstraction pour faciliter l’interaction et la communication entre différents processus qui peuvent être indépendants et même rouler sur des machines différentes.L’idée générale derrière ROS est qu’ils s’agit d’un système distribué. Chaque noeud fonctionne de manière indépendante, mais se rapporte au master, qui coordonne les interactions.

Le master accomplit plusieurs tâches. Il accorde aux noeuds des noms uniques, et garde un registre des canaux de communications entre ceux-ci. Le master met ce registre à la disposition des noeuds, qui sont ensuite capables de communiquer entre eux de manière peer-to-peer une fois qu’un premier contact est établi.

La communication inter-noeuds peut se faire de différentes manières. Les deux mécanismes les plus utilisés sont les topics et les services.

D’une part, les topics sont des canaux de communication ayant chacun un identifiant unique. Ils permettent aux noeuds de se transmettre des messages sous forme de publisher/subscriber. Il n’y a donc pas de notion d’expéditeur ni de destinataire. Tous les noeuds du système ont accès à l’information qui est envoyée par des topics.

D’autre part, il y a les services. Ceux-ci permettent de faire des appels de procédures à distance entre les noeuds. Les données circulent sous forme de messages et ont des formats qui sont préétablis par le noeud qui offre le service en question.

Outils

En plus de ses fonctionnalités de base, ROS offre plusieurs outils pour faciliter le développement de systèmes robotiques.

rqt

L’outil rqt est une interface utilisateur modulable. C’est une plateforme qui gère le déploiement de plugins basés sur Qt. Certains plugins de base sont fournis par ROS et il est aussi possible de développer des modules personnalisés.

rqt_graph

Un des plugins fournis par ROS qui est très utile est rqt_graph. Il s’agit d’une interface qui permet de visualiser les noeuds actifs ainsi que les transferts d’information entre ceux-ci. C’est un excellent outil pour déboguer un programme ROS et valider son bon fonctionnement.

rviz

L’outil rviz (ROS Visualization Tool) est un outil de visualisation 3D très puissant. Il permet de visualiser les données provenant de capteurs, qu’ils soient réels ou simulés, ainsi que le modèle du robot lui-même. Ceci est très utile pour comprendre le comportement du robot selon ce qu’il voit à travers ses capteurs. Par exemple, on peut voir en temps réel des points détectés par un LIDAR en 3D et valider que les actions du robot respectent le comportement désiré.

Gazebo

Gazebo, pour sa part, est un simulateur. Il permet de créer des modèles de robots ainsi que des scénarios et des environnements réalistes qui respectent les lois de la physique. Il est également possible de simuler tous types de capteurs. C’est un outil idéal pour tester ses algorithmes avant de les déployer sur un robot réel.

Installation

Maintenant que vous connaissez ROS, il est temps de commencer à l’utiliser. La plateforme officiellement supportée pour son utilisation est Ubuntu, mais il est également possible de l’installer sur d’autres distributions de Linux. Présentement, la version la plus récente de ROS pour laquelle du support à long terme est offert est ROS Melodic, conçu pour Ubuntu 18.04.

L’installation est très bien détaillée ici et se fait assez facilement. Ensuite, il faut configurer son environement de travail en suivant ces étapes, puis tout est prêt pour commencer à développer. De très bons tutoriels sont également disponibles pour tous les niveaux.

Conclusion

Bien que ROS soit extrêmement utile pour le développement de systèmes robotiques, il peut aussi être difficile à maîtriser au départ. Son utilisation nécessite certainement de bonnes connaissances de base du système d’exploitation Linux, puis, idéalement, des bases du fonctionnement de systèmes réseau. Heureusement, le wiki et les tutoriels offerts sont assez utiles. Et bien sûr, comme pour tout logiciel, il y a aussi beaucoup de ressources disponibles en ligne.J’espère que cet article vous a permis de mieux comprendre ce qu’est ROS et comment il fonctionne. Si les projets de Robotique UdeS vous intéressent, ou si vous voulez simplement discuter de robotique, n’hésitez pas à nous contacter, nous sommes toujours ouverts à de nouveaux défis!

Sources

Nous aimerions remercier tous nos commanditaires, sans qui nos activités ne seraient pas possibles. Nous vous sommes très reconnaissants. Merci de nous permettre de réaliser des projets concrets, d’avoir un impact sur la communauté, et de nous épanouir tout en nous développant personnellement et professionnellement. 

Un merci tout particulier à Merkur grâce à qui nous pouvons redonner davantage a la communauté.