Introduction à ROS (Robot Operating System)
Framework destiné aux applications robotiques et systèmes embarqués

NB : Pour comprendre et utiliser ROS efficacement, cela nécessite des connaissances en bash et en C++ ou Python.

Nom : rosorg-logo1.png
Affichages : 2446
Taille : 4,7 Ko

ROS est un framework écrit spécialement pour des applications destinées à la robotique et aux systèmes embarqués. Ce projet est totalement open source, et évolue constamment afin de prendre en charge de plus en plus de cartes et avec de plus en plus de fonctionnalités. Stable sous Ubuntu, certaines versions de ce framework sont installables sur Raspberry Pi et sur Arduino.

Très bien, mais à quoi ça peut me servir ?

La robotique d'aujourd'hui devient de plus en plus complexe et comprend de plus en plus d'algorithmes devant fonctionner au bon moment, un peu comme un orchestre, afin d'obtenir des résultats optimaux. Par exemple, un robot imitant un humain et marchant sur ses deux jambes devra mettre un pied après l'autre, sinon il tombe. De plus, les robots modernes comprennent beaucoup de capteurs, et pour la plupart plusieurs unités de calculs.
Le rôle de ROS est de jouer le chef d'orchestre et de gérer tous ces algorithmes/composants/unités de calculs afin de coordonner tout cela et de faire fonctionner plusieurs entités complexes comme une seule entité bien maîtrisée. Il sera donc possible de créer de manière simple, BEAUCOUP plus simple, des robots complexes.

Ça m'a l'air intéressant, mais comment ça marche ?

Le principe de ROS est extrêmement simple, il fonctionne à la manière d'un abonné/publieur.
Il y a ce qu'on appelle des NODES, c'est à dire des nœuds qui correspondent à des algorithmes, des capteurs ou tout autre composant faisant partie intégrante du robot. Il y a ensuite ce qu'on appelle les TOPICS, ce sont des sujets dans lesquels des NODES vont poster des informations, et d'autres NODES qui se seront abonnés à ces TOPICS pourrons récupérer les informations postées. Et enfin, il y a les SERVICES, qui sont des cas particuliers des TOPICS étant donné qu'un seul NODE peut y postuler et un seul NODE peut s'y abonner.
Pour prendre un exemple concret, vous avez un accéléromètre qui fournit des données d'accélération, et un algorithme veut récupérer ces informations afin de les traiter de manière intelligente. L'accéléromètre est un NODE qui va poster ses informations dans un TOPIC, et le second NODE correspond à l'algorithme qui va pêcher les informations dans le TOPIC afin de les traiter.

Nom : Sans titre2.gif
Affichages : 2407
Taille : 10,6 Ko

Ce principe simple est pourtant redoutable pour la coordination des fonctions d'un robot, des vidéos sur internet montrent des compétitions avec un niveau très élevé de robot fonctionnant sous ROS, preuve que ce framework open source est puissant.

Une bibliothèque d'algorithmes est disponible sur le site, et il est de même possible de poster soi-même ses propres algorithmes pour des robots spécifiques.

Voici les sources:
Explications ROS (Français)
Site Officiel ROS (Anglais)
ROS sur Raspberry Pi (Anglais)
ROS sur Arduino (Anglais)

Et vous ?
Avez-vous déjà utilisé ROS ?
Que pensez-vous de ce framework ?