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
© Copyright 2024