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
/ « 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
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
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
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
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).
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
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
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.