Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Présentation de ROS (Robotics Operating System) : un midleware utilisé en robotique par Adrien Barral

/dev/var/
October 08, 2015

Présentation de ROS (Robotics Operating System) : un midleware utilisé en robotique par Adrien Barral

Présentation de ROS (Robotics Operating System) : un midleware utilisé en robotique.

/dev/var/

October 08, 2015
Tweet

More Decks by /dev/var/

Other Decks in Technology

Transcript

  1. La modularité • Avantages : – Réutilisation de briques plus

    facile – Travail en équipe simplifié – Test unitaires simplifiés • Contraintes : – Nécessité d’une BONNE définition des interfaces – Arriver à faire communiquer tous les programmes entre eux 4
  2. SLAM Annuaire CENTRAL (MASTER) DRIVER LASER Le « publish »

    / « suscribe » SLAM Serv. Central 192.168.0.2:1000 Driver LASER 192.168.0.1:1000 Serv. LASER 192.168.0.1:1234 J’émet une donnée nommée « LASER », me contacter sur 192.168.0.1:1000 Je veux une donnée nommée « LASER » Elle existe, contacter : 192.168.0.1:1000 Je suis intéressé par ta donnée Je te la publie sur 192.168.0.1:1234 Je veux une donnée nommée « LASER » Nouvelle donnée LASER 6 Nouvelle donnée LASER
  3. Publication de données avec ROS J’existe, je m’appelle « driver

    LASER », contactez moi sur 192.168.0.1:1234 Je publie une donnée qui s’appelle « Laser » Voici une nouvelle donnée Laser 7
  4. Abonnement à des données avec ROS J’existe, je m’appelle «

    SLAM », contactez moi sur 192.168.0.1:1235 Je m’intéresse à la donnée « Laser ». Stocker 100 données en tampon. Appeler la fonction « ExploiterLaDoneeCoupeLaser » sur réception d’une donnée En attendant une donnée, ne rien faire. 8
  5. Description d’une donnée : IDL • ROS fourni des types

    de base • Un nouveau type DOIT être définie à partir des types de base. • Une fois décrite, la donnée est transformée en classe C++/Python par ROS point.msg float32 x float32 y float32 z Trajectoire.msg Point[] Trajectoire http://www.ros.org/wiki/msg 9
  6. La notion de « service » • Appelé aussi RPC

    pour « Remote Procedure Call » • Exemple de service : « Planifier une trajectoire » • Un service sera préféré à une publication de donnée si le résultat de la requête est utilisé par le programme qui déclenche le service / la donnée. 11
  7. La notion d’ Actions 12 • Un service asynchrone du

    point de vue de l’appelant. • Un service que l’appelant peut interrompre. • Un service qui publie un état d’avancement. • Se définie par un objectif, une état d’avancement, et une valeur de retour. Exemple : TrajectoryFollow. Objectif : La trajectoire Etat d’avancement : Abscisse curviligne sur la trajectoire en cours de suivi. Valeur de retour : Succès ou échec du suivi (Echec si l’erreur à la trajectoire devient trop grand).
  8. Testabilité (exemple du suiveur de trajectoire) libPathFollowing UT Permet de

    valider : • Les cas triviaux, • La gestion des ressources mémoire Ne valide pas : • Les performances de l’algo (est ce que le robot suit BIEN la trajectoire) x y
  9. Testabilité (exemple du suiveur de trajectoire) Le testeur joue sur

    les paramètres pour minimiser l’intégrale de l’écart à la trajectoire. Nœud ROS (processus) Simulateur (fournit avec ROS) Trajectoire Consignes de vitesses Position Testeur (Humain, ou logiciel) Forçage de position Ecart à la traj. paramètres libPathFollowing UT
  10. Utiliser ROS autrement qu’en C++ • Officiellement (et historiquement) ROS

    est implémenté en C++ et Python • D’autres langages ont été supportés par la suite : LISP, C#, GO, Java, R, Ruby… • Un bridge existe pour utiliser ROS dans des applis WEB : rosbridge_suite : Un serveur websocket permettant à un client JS de s’abonner et de publier n’importe quelle données ROS.