TP1 - Université de Picardie Jules Verne

Université de Picardie Jules Verne
M2 EEAII ViRob
2014-2015
Localisation et navigation de robots
TP1 Contrôle réactif et localisation par odométrie
Durée: 3h + 1h pour le compte rendu
Ce TP traite de l’implémentation d’un contrôleur réactif de navigation pour le robot
mobile Amigobot et de la localisation par odométrie. Le logiciel MobileSim est à utiliser avec
une carte pour avoir un robot virtuel. Le travail consiste à réaliser un programme C++
exploitant la librairie ARIA et se connectant au robot virtuel afin de le contrôler. La librairie
ARIA est aussi employée pour localiser le robot avec les mesures odométriques: Matlab est
utilisé pour tracer la pose du robot. Les exercices sono à valider en simulation (avec le
logiciel MobileSim) avant de pouvoir passer à la pratique sur le robot mobile (appelez le
chargé de TP pour se connecter en WiFi avec un des robots dans la salle).
Un compte rendu avec les méthodes proposées et utilisées ainsi que les résultats
intermédiaires est à rendre à la fin de la séance par chaque binôme d'étudiants. Noter que du
simple code n’est pas un compte rendu: commentez votre code, motivez vos choix et, le cas
échéant, mettez des figures dans votre rapport final.
Attention: Sélectionner la version à 64 bits de Windows au démarrage de l'ordinateur.
Simulation de mouvement du robot dans un environnement complexe (MobileSim)
Exercice 1 : Création de carte (4 pts)
1. Afin de créer un environnement de simulation, utilisez le logiciel Mapper3. Vous
devez réaliser une carte ayant les mêmes dimensions que l’arène de test dans la salle
de TP. Placez au moins une position de départ ("Home") dans l'environnement.
Notez que la carte ainsi crée sera utilisée dans les prochaines TPs pour localiser le
robot, virtuel ou réel, en corrélant ses perceptions extéroceptives, la connaissance de
sa pose à l’instant précédent et la connaissance de cette carte (par le FFCE ou autre).
2. Chargez ensuite cette carte dans MobileSim et lancez le programme « demo.exe » du
dossier C:\Program Files\MobileRobots\ARIA\bin. Testez la carte en modes
téléopération et puis position. Montrez la trajectoire du robot dans la carte, obtenue en
mode position.
Fabio Morbidi
Page 1/2
Université de Picardie Jules Verne
M2 EEAII ViRob
2014-2015
Localisation et navigation de robots
Exercice 2 : Contrôleur réactif de robot mobile (9 pts)
1. Déterminez un ensemble de classes C++/ARIA d’actions de base permettant un
déplacement simple du robot et d’éviter les obstacles.
2. Déclarez les actions et le(s) capteur(s) utile(s) (présents sur l’AmigoBot) pour les
réaliser.
3. Complétez le programme, en activant les moteurs avec la méthode comInit d’un objet
de type ArRobot et ArCommands::ENABLE en premier paramètre, dans le but
d’activer les moteurs. Terminez le programme par un appel à Aria::shutdown() pour
libérer proprement le contexte. Exécutez ce programme et observez les résultats.
4. Quelles autres actions élémentaires pourrait-il être intéressant d’ajouter pour un
meilleur comportement ? Mettez-les en application.
Remarque: La structure d’un programme ARIA est la suivante :
• Définition du robot (ArRobot)
• Définition des capteurs utilisés dans le programme
• Définition des actions
• Initialisation du contexte (Aria::init())
• Ajout des capteurs au robot (méthode addXXXDevice d’un objet de type ArRobot)
• Connexion du programme au robot (méthode connectRobot d’un objet de type
ArSimpleConnector)
• Ajoutez les actions au robot avec un niveau de priorité (méthode addAction d’un objet
de type ArRobot)
• Exécution des comportements (méthode run d’un objet de type ArRobot)
Exercice 3 : Localisation par odométrie de robot mobile (7 pts)
La librairie ARIA gère le calcul de l’état du robot (x, y, θ) au sein de la classe ArRobot et le
met à jour automatiquement à chaque mesure faite sur les encodeurs des roues. La méthode
getRawEncoderPose permet de récupérer l’estimé brut de la pose du robot mobile par
odométrie.
1. Partez du code d’exemple « wander » fourni avec la librairie ARIA pour engendrer un
déplacement automatique et sécurisé du robot mobile.
2. Inspirez-vous du code d’exemple « ExampleThread » aussi fourni avec la librairie
ARIA pour créer et utiliser une tâche asynchrone (classe C++). Cette tâche doit
récupérer les poses brutes et stocker les (x, y, θ) successifs, ainsi que le timing du
relevé, dans un fichier texte jusqu’à la fin de l’exécution. Enregistrez aussi le temps
total durant lequel le robot a bougé.
3. A l’aide de Matlab, chargez le fichier texte des poses, affichez-les dans une figure en
les superposant à la carte de l’environnement crée dans l'Exercice 1.
4. En répétant l’exécution à plusieurs reprises, dans différentes situations initiales du
robot mobile, discutez les résultats de localisation par odométrie brute.
Fabio Morbidi
Page 2/2