EA2012 Langages et Canevas pour la robotique de service
Présentation
- Enseignants: Georges-Pierre Bonneau, Didier Donsez
- Auteurs: Elizabeth Paz <Elizabeth.Paz-Hernandez@e.ujf-grenoble.fr>, Salem Harrache <Salem.Harrache@e.ujf-grenoble.fr>
- Télécharger (FR):Media:Presentation_EA_ROS_URBI_PAZ_&_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.
ROS
Urbi
Urbi est une plateforme logicielle de developpement pour la robotique développé par Gostaï [1] 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 : robotique de service et son potentiel en rhone-alpes