EA2012 Langages et Canevas pour la robotique de service
- Enseignants: Georges-Pierre Bonneau, Didier Donsez
- UE/Module: EAR (HPRJ9R4B) en RICM5
- Etudiants: Elizabeth Paz, Salem Harrache
La version PDF de la présentation (FR) est disponible ici : Media:Presentation_EA_ROS_URBI_PAZ_&_HARRACHE.pdf
Résumé
Abstract
Synthèse
Introduction
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