EA2012 Langages et Canevas pour la robotique de service

= Présentation =


 * Enseignants: Georges-Pierre Bonneau, Didier Donsez
 * Auteurs: Elizabeth Paz , Salem Harrache 
 * Télécharger (FR):[[Media:Presentation_EA_ROS_URBI_PAZ_%26_HARRACHE.pdf]]

= Abstract =

Keywords
= Résumé =

Mots Clés
= Synthèse =

La robotique de service peut se définir comme la robotique qui exécute des services utiles pour le « bien-être » des personnes et des biens. Cette robotique s'étend au marché grand public : cela va du simple robot jouet au robot d’assistance médicale en passant par des “engins” autonomes qui n’assurent que certaines fonctions domestiques (aspirateurs, tondeuses à gazon, etc.).

Ces robots sont composés de systèmes complexes à base de composants (moteur, détecteurs...) qui ont besoin d'interagir et communiquer entre eux. Il existe de plus en plus de middleware qui tendent à rendre la programmation de ces robots plus facile et compatible entre plusieurs machines. On peut citer YARP (Yet Another Robot Platform) écrit en C++ et qui permet l’interconnexion entre détecteurs, processeurs et articulation, ou encore l'environnement Microsoft Robotics Developer Studio, qui a l’avantage d’offrir deux types de développement : un SDK classique en C#, mais également la possibilité d'utiliser le VPL (Visual Programming Language) pour modéliser et concevoir les comportements avec des graphes.

Nous allons nous intéresser à deux middlware en particulier qui sont ROS et Urbi.

Urbi
Urbi est une plateforme logicielle de developpement pour la robotique développé par Gostaï en 2006. L'entreprise a été fondé en 2006 par Jean-Christophe Baillie, ancien enseignant chercheur à l'ENSTA ParisPolytech où il a créé le laboratoire de Robotique Cognitive.

Démonstration Urbi et NXT Mindstorm
Pour la démonstration on utilise le Lego NXT de Mindstorm.

Avancer et reculer
Global.wheels.speed = 50; sleep (3s); Global.wheels.speed = −50; sleep (2s); Global.wheels.speed = 0;

Tourner
Global.wheelL.speed = - 50 time:1s & Global.wheelR.speed = 50 time:1s; Global.wheelL.speed = 0 time:2s & Global.wheelR.speed = 0 time:2s;

Explorer
var Global.explorer = Tag.new; explorer: {   every(500ms) wheels.speed = 25; },

Arrêter le robot :

explorer.freeze stop;

Reprendre l'exploration :

explorer.unfreeze

Détecter les obstacles
var Global.DistanceDanger = 25; var Global.detecter = Tag.new; detecter: {  at (sonar.val < Global.DistanceDanger) {   explorer.freeze; wheels.speed = - 50 time:1500ms; // Tourner {Global.wheelL.speed = - 50 & Global.wheelR.speed = 50} & sleep(600ms); stop; explorer.unfreeze; }, },

Contrôler
var Global.currentState = 0; at (bumper.val == 1) {  if(Global.currentState == 0) {   echo("On"); Global.currentState = 1; explorer.unfreeze; detecter.unfreeze; }  else {   echo("Off"); explorer.freeze; detecter.freeze; stop; Global.currentState = 0; }| },

Conclusion
= Liens =


 * ROS Website : http://www.ros.org/
 * Gostai website : http://www.gostai.com/
 * Wikipedia : http://fr.wikipedia.org/wiki/Urbi
 * 2-high : http://www.2-high.info/post/2010/10/08/Installer-URBI-pour-Lego-Mindstorm-NXT
 * ardi-rhonealpes : |la robotique de service et son potentiel en rhone-alpes