Aller au contenu


Photo
- - - - -

Découvrir ROS


  • Veuillez vous connecter pour répondre
6 réponses à ce sujet

#1 Oliv

Oliv

    Membre

  • Membres
  • 10 messages
  • Gender:Male
  • Location:Strasbourg

Posté 17 décembre 2013 - 12:21

Bonjour

Ce post vise à faire un peu de pub pour le logiciel ROS (Robot Operating System, http://www.ros.org).
Davantage qu'un logiciel, c'est une architecture visant à bénéficier des contributions des utilisateurs (dont de nombreux labos et entreprises).

L'idée de base est qu'il est très compliqué de faire le programme complet d'un robot. En effet on aura besoin de compétences différentes pour la commande, la modélisation, la vision, la planification, etc.

Dans ROS, on programme uniquement la partie qui nous est propre. On utilise librement les librairies mises à disposition par les autres, et ces différents programmes communiquent entre eux en faisant chacun ce pour quoi ils sont faits. Un programme de base est appelé un node, les canaux de communication sont les topics. Un ou plusieurs nodes peuvent publier (envoyer des données) ou souscrire (recevoir) sur un topic. Par exemple :
- un node se connectant à une caméra et publiant les images
- un node recevant les images et publiant les informations extraites (position des points, détection de visage...)
- un node recevant les informations et publiant la commande à effectuer pour que le robot suive le visage détecté
- un node recevant ces commandes et les envoyant sur les actionneurs

Il y a notamment pas mal de simulateurs avec de nombreux robots déjà modélisés, vous permettant de découvrir comment on contrôle un bras, un robot mobile, un humanoïde, un robot sous-marin...

J'ai un cours deprésentation ici.
J'ai également mis en ligne un TP que j'encadre, récupérable via git :
git clone https://github.com/oKermorgant/tpRobots.git

De mon point de vue ROS est un très bon support pour découvrir les divers aspects logiciels de la robotique. La programmation se fait en C++ ou en Python.
Le gros intérêt est que si vos nodes sont bien conçus, ils fonctionnent aussi bien en simulation que sur un vrai robot : par exemple un node de traitement d'image se moque de recevoir de vraies images ou bien des images générées par un simulateur. Il va les traiter et envoyer l'information désirée. Idem pour le node de commande, de planification, etc. Seuls les nodes liés à des capteurs ou des actionneurs sont à modifier.

Le site comprend de nombreux tutoriaux (en anglais) et pour commencer je conseille de s'amuser avec un robot mobile sous Rviz, qui est le simulateur de base de ROS.
Enfin, ce logiciel est particulièrement adapté à Ubuntu puisqu'il est dispo sous forme de paquets pour cette distribution, ce qui simplifie grandement l'installation.
Pour ceux qui ne veulent pas installer Ubuntu, il est possible de faire tourner ROS dans une machine virtuelle : http://wiki.ros.org/groovy/Installation (en haut de la page).
C'est ce que je fais sous Mac et ça marche très bien.

N'hésitez pas si vous avez des questions.

#2 nvaste

nvaste

    Habitué

  • Membres
  • PipPip
  • 265 messages
  • Gender:Male
  • Location:Lyon, France
  • Interests:La robotique, l'électronique et la réalisation de projets concrets

Posté 17 décembre 2013 - 09:37

Ça à l'air très utile :3
01110.01001.00011.01111.01100.00001.10011

#3 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 18 décembre 2013 - 11:31

Salut !

Je me permets d'apporter quelques petites précisions :

Davantage qu'un logiciel, c'est une architecture visant à bénéficier des contributions des utilisateurs (dont de nombreux labos et entreprises).

Je ne sais pas ce que tu entends par architecture, mais je parlerais plus volontiers de "Framework" que d'architecture (au sens robotique du terme). La logique est effectivement de réexploiter les modules fonctionnels écrits par les autres, de manière transparente.

Dans ROS, on programme uniquement la partie qui nous est propre. On utilise librement les librairies mises à disposition par les autres, et ces différents programmes communiquent entre eux en faisant chacun ce pour quoi ils sont faits. Un programme de base est appelé un node, les canaux de communication sont les topics. Un ou plusieurs nodes peuvent publier (envoyer des données) ou souscrire (recevoir) sur un topic. Par exemple :
- un node se connectant à une caméra et publiant les images
- un node recevant les images et publiant les informations extraites (position des points, détection de visage...)
- un node recevant les informations et publiant la commande à effectuer pour que le robot suive le visage détecté
- un node recevant ces commandes et les envoyant sur les actionneurs

Il existe également un système de "services", où un noeud appelle explicitement le service fournit par un autre noeud, ce qui garantit le moment où se produit l'appel et permet une certaine synchronie. Les topics sont au contraire un système de communication asynchrone, où la communication se fait sans vérification, mais du coup assez flexible (créer des canaux dynamiquement est possible).


De mon point de vue ROS est un très bon support pour découvrir les divers aspects logiciels de la robotique. La programmation se fait en C++ ou en Python.

Oui sauf que je restreindrais cette remarque aux aspects logiciel suffisamment haut-niveau de la robotique. ROS ne garantit pas le temps réel sauf dans certains cas particuliers.

Le site comprend de nombreux tutoriaux (en anglais) et pour commencer je conseille de s'amuser avec un robot mobile sous Rviz, qui est le simulateur de base de ROS.

RViz n'est pas le simulateur de base de ROS, c'est un outil de visualisation, qui permet de récupérer les données capteurs pour avoir un aperçu de ce que "voit" le robot. C'est également une interface d'interaction qui permet par exemple de définir des positions but dans une tâche de navigation.
Le simulateur "de base" de ROS est Gazebo. Dans les versions précédentes de ROS, il était fourni avec l'install de ROS, mais je crois que depuis Groovy, il faut l'installer à part.

Enfin, ce logiciel est particulièrement adapté à Ubuntu puisqu'il est dispo sous forme de paquets pour cette distribution, ce qui simplifie grandement l'installation.
Pour ceux qui ne veulent pas installer Ubuntu, il est possible de faire tourner ROS dans une machine virtuelle : http://wiki.ros.org/groovy/Installation (en haut de la page).
C'est ce que je fais sous Mac et ça marche très bien.

À noter d'ailleurs que ROS s'organise en distributions (la dernière est Hydro) qui sortent environ tout les 6 mois (mais je crois qu'il était question de ralentir ce rythme, ce qui permettrait à tous de rester à jour). D'expérience, la dernière version est très souvent expérimentale dans les quelques semaines qui suivent sa sortie. Par ailleurs, depuis Groovy, l'outil de compilation intégré à ROS a pas mal changé. Si vous découvrez ROS, mieux vaut prendre directement l'habitude de catkin (à moins que vous n'utilisiez votre propre outil).
Notons enfin que la documentation est parfois lacunaire ou pas à jour, même si les tutos restent une bonne base pour démarrer.

J'avoue que je suis curieux de savoir comment tu as procédé pour installer ROS sous Mac. J'avais testé ça il y a un an (presque deux en fait ...) et ça ne marchait pas du tout. C'est plutôt une bonne chose qu'ils aient amélioré ça.
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#4 TitiMoby

TitiMoby

    Membre

  • Membres
  • 73 messages
  • Gender:Male
  • Location:Villeurbanne

Posté 19 décembre 2013 - 11:19

je ne sais pas si ça s'installe au final sous Macosx, mais pour un developpeur Java, ça fait du merdier à installer ;)
et que je te colle 3 tonnes de mises à jour brew (oui, je l'utilise peu) et que je te demande les xcode commande line tools...
bref, ça a l'air de marcher mais je souffre un peu :)

#5 Oliv

Oliv

    Membre

  • Membres
  • 10 messages
  • Gender:Male
  • Location:Strasbourg

Posté 20 décembre 2013 - 01:20

Comme je le disais, sous Mac j'utilise simplement une machine virtuelle Ubuntu.
J'ai aussi passé du temps à essayer de faire marcher le tout en natif, mais j'ai laissé tomber. Certaines choses fonctionnaient, mais c'était assez lourd en terme de manips alors que sous Ubuntu on peut tout installer via les paquets.

Effectivement Rviz est davantage un outil de visualisation qu'un simulateur. Ceci dit je m'en sers très souvent pour des simulations simples (contrôle en position ou en vitesse) où c'est moi qui code la simu et où Rviz m'affiche la position du robot. Gazebo est un vrai simulateur mais peut se révéler assez lourd à instancier pour les simu simples.

La faible gestion du temps réel peut être un souci dans certains cas. En pratique, les robots que je connais utilisant ROS possèdent un module temps réel pour la gestion des actionneurs, et reçoivent les consignes de la part des nodes plus haut niveau. Quand le robot a des dynamiques très importantes (drones) il est possible que ça coince. Pour le reste, j'ai déjà contrôlé un sous-marin muni d'un bras manipulateur (cf mon avatar) et tout baignait.

#6 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 934 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 22 décembre 2013 - 10:32

Intéressant tout ça ... Je ne connaissais pas je vais faire un peu plus de recherche dessus wink.gif
Par contre j'ai du mal à visualiser quel type d'hardware se cache derrière pour le moment ...
Si j'ai bien compris ( avec les recherches que j'ai faite pour le moment mais que je n'ai pas finie ^^ ) il faut décomposer son robot en brique élémentaire toutes capable de communiquer les données au ROS master ? En pratique vous utilisez quoi pour la communication ? Et puis si les topics sont unidirectionnel comment on peut être sur que le message a bien été reçu ? Il faut échanger les "subscriber" et les "Publisher " pour faire des accusés de réceptions ?

Bref ça me semble à la fois très intéressant mais peu applicable tant qu'on entre pas dans la réalisation d'un robot vraiment complexe ...

Perso ce que je fais et qui se rapproche un peu au protocole de ROS par module autonome + unité centrale maitre c'est avec une hexapode, chaque patte représente un module qui communique en I2C avec une raspberry pi qui commande les déplacement. Un PC envoit des ordres à la pi par wifi et on pourrait très bien imaginer la même chose avec deux hexapode connecté à un seul PC... Dans mon cas les pattes ne sont donc pas directement commandé par le PC... C'est peut être ce que vous appelleriez une gestion par node de plus bas niveau ... Je me trompe ?

Grosso modo, serait il possible/utile d'équiper mon hexapode pour qu'il fonctionne avec ROS ?
Et que faudrait il ajouter ? x)

Car là j'ai vraiment du mal à voir comment ROS peut être utiliser dans le domaine de la robotique du particulier...
A moins qu'il existe déjà des module tout fait qui fonctionne avec ROS mais cela n'est pas encore apparu dans mes recherches ^^


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#7 Oliv

Oliv

    Membre

  • Membres
  • 10 messages
  • Gender:Male
  • Location:Strasbourg

Posté 10 janvier 2014 - 09:56

ROS est sans doute plus adapté à la robotique haut-niveau.
Simulation, planification de mouvement ou de trajectoire, contrôle référencé capteur...

Je pense que pour ceux qui veulent essayer la robotique sans avoir l'atelier nécessaire pour fabriquer un vrai robot, il y a de quoi apprendre beaucoup juste avec des simulateurs qui peuvent être très variés. Le robot sous-marin de mon avatar existe sous ROS, par exemple, alors que le fait chez soi c'est un peu plus compliqué.




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users