5
 T ravaux Prat ique s M´ ecat roni que ENSPS 1A TP1 : Lego Mindstorms T ribo t : exploratio n, ´ evitement et odom´ etrie Ce TP est une initiation ` a l’utilisation de la briqu e NXT pour traiter des probl ` emes simples de robotique mobile. Dans ce TP vous allez travailler enti` erement sous Linux, environnement sous lequel vous programmerez les interactio ns selon deux m´ ethodes : soit loc alement, en prog rammant en NXC et en chargeant votre progra mme avant de l’ex´ ecuter. Alors vous n’aurez plus la main sur la brique durant l’ex´ ecution du programme ; soit en utilisan t la communica tion Bluetoo th entre le PC et la brique. Par ailleurs, vous disposez d’un PC Linux : login : tpmec atroX av ec X votre num´ ero de groupe ; mot de passe : marco polo% logi ciel s pr´ e-i nsta ll´ es : nbc : compilateur NXC linxt : utilita ires de commun icati on via USB av ec le NXT gcc et la libra irie nxtlibc l’´ editeur de tex te ged it resso urces dispon ibles :  $HOME/Docs : NXC guide.pdf (API NXC), presentation.pdf (le cour s), nxtlibc.0.1. htm (API nxtlibc : Bluet ooth command ), LEGO MINDSTORMS NXT Direct commands.pdf (trames Bluetooth) mais aussi internet et le manuel Linux :  man  ´ evidemme nt . . . 1 Prise en Main Allumer l’ordinateur et booter sous Linux Ubuntu 8.10. 1.1 Lego Tribot Assembler le robot en suivant le petit document d’assemblage. Le mat´ eriel est rang´ e dans les tiroirs suivants : tiroir 1 : docume nt d’assem blage du Tribo t tiroir 2 et 3 : brique NXT et pi` eces LEGO pour le Tribot tiroir 4 : pi` eces additionnelles (pour xer le capteur ultrason ` a l’avant du Tribot par exemple) Dans l’int´ erˆ et de chacun, il est demand´ e de veiller au bon rangement de votre espace de travail et du mat´ erie l mis ` a dis po sit ion. Ceci ser a eri ´ e en n de eance et le calcul de la note ob´ eira ` a l’alg orithme suivant :  final_mark=if(not _clean)*mark. 1.2 NXT ba si que 1. Allumer le NXT. 2. Men u View : ex´ ecuter le s tests ca pteurs ”Touch”, ”Ul trasonic cm”, ”Mo tor degre es”. Tourner `a la main le moteur p our tester la mesure d’angle (il est r´ eversible). 3. Men u  NXT Progr am  : cr´ eer un programme ”Forw ard” - ”Object” - ”Back Right 2” - ”Wait 2” - ”Loo p” et l’ex´ ecuter. 1.3 Premiers prog rammes en NXC Pour chacun de vos p rogrammes , il est b on d’org aniser votre r´ eperto ire  $HOME en sous -r´ epe rtoi res aux noms facilement identiables (commande mkdir dans une console ou en utilisant le navigateur). Remarque : le epertoi re  $HOME  ne sera eac´ e qu’une fois les TP termin´ es. L. Cuvillon, B. Bayle 1

tps_mecatro_1a

Embed Size (px)

Citation preview

5/17/2018 tps_mecatro_1a - slidepdf.com

http://slidepdf.com/reader/full/tpsmecatro1a 1/4

 

Travaux Pratiques MecatroniqueENSPS 1A

TP1 : Lego Mindstorms Tribot : exploration, evitement et odometrie

Ce TP est une initiation a l’utilisation de la brique NXT p our traiter des problemes simples derobotique mobile. Dans ce TP vous allez travailler entierement sous Linux, environnement souslequel vous programmerez les interactions selon deux methodes :

– soit localement, en programmant en NXC et en chargeant votre programme avant de l’executer.Alors vous n’aurez plus la main sur la brique durant l’execution du programme ;

– soit en utilisant la communication Bluetooth entre le PC et la brique.

Par ailleurs, vous disposez d’un PC Linux :

– login : tpmecatroX avec X votre numero de groupe ; mot de passe : marcopolo%– logiciels pre-installes :– nbc : compilateur NXC– linxt : utilitaires de communication via USB avec le NXT– gcc et la librairie nxtlibc– l’editeur de texte gedit

– ressources disponibles :– $HOME/Docs : NXC guide.pdf (API NXC), presentation.pdf (le cours), nxtlibc.0.1.htm

(API nxtlibc : Bluetooth command ), LEGO MINDSTORMS NXT Direct commands.pdf (trames Bluetooth) mais aussi internet et le manuel Linux : man evidemment . . .

1 Prise en Main

Allumer l’ordinateur et booter sous Linux Ubuntu 8.10.

1.1 Lego Tribot

Assembler le robot en suivant le petit document d’assemblage. Le materiel est range dans lestiroirs suivants :

– tiroir 1 : document d’assemblage du Tribot– tiroir 2 et 3 : brique NXT et pieces LEGO pour le Tribot– tiroir 4 : pieces additionnelles (pour fixer le capteur ultrason a l’avant du Tribot par exemple)

Dans l’interet de chacun, il est demande de veiller au bon rangement de votre

espace de travail et du materiel mis a disposition. Ceci sera verifie en fin de seance et

le calcul de la note obeira a l’algorithme suivant : final_mark=if(not_clean)*mark.

1.2 NXT basique

1. Allumer le NXT.

2. Menu View : executer les tests capteurs ”Touch”, ”Ultrasonic cm”, ”Motor degrees”. Tournera la main le moteur pour tester la mesure d’angle (il est reversible).

3. Menu NXT Program : creer un programme ”Forward” - ”Object” - ”Back Right 2” - ”Wait2” - ”Loop” et l’executer.

1.3 Premiers programmes en NXC

Pour chacun de vos programmes, il est bon d’organiser votre repertoire $HOME en sous-repertoiresaux noms facilement identifiables (commande mkdir dans une console ou en utilisant le navigateur).Remarque : le repertoire $HOME ne sera efface qu’une fois les TP termines.

L. Cuvillon, B. Bayle 1

5/17/2018 tps_mecatro_1a - slidepdf.com

http://slidepdf.com/reader/full/tpsmecatro1a 2/4

 

1.3.1 Capteurs en NXC

1. Creer un fichier *.nxc avec l’editeur gedit.

2. Recopier le programme du cours de demonstration de lectures des capteurs (transparent

”Input API : Sensors and rotation”).

3. Analyser son fonctionnement.

4. Compiler le programme avec nxc (nbc *.nxc -O=*.rxe).

5. Connecter le NXT au PC avec le cable USB.

6. Charger le programme en mode super-utilisateur (sudo).

7. Verifier le bon fonctionnement du programme.

1.3.2 Une application avec moteurs et capteurs

Reprendre la seconde implementation de l’exemple ”Move forward with obstacle avoidance”(colonne droite) et analyser son fonctionnement. Experimenter.

2 Navigation

2.1 Mouvement pseudo-aleatoire avec evitement d’obstacles

1. Ecrire une tache main qui :– initialise le capteur ultrason– demarre une tache move

2. Ecrire une tache move qui :– fait avancer le robot tant qu’aucun obstacle n’est detecte– fait subir une rotation du robot comprise entre 90 et 270 degres (utiliser une des fonctions

de generation d’un nombre aleatoire de NXC) si un obstacle est detecte

– reprend sa marche en avant

2.2 Arret automatique par minuterie

Modifier la tache move precedente pour qu’au-dela d’un temps d’execution predefini (TIME OUTde 20s), les moteurs soient forces a l’arret. Utiliser pour cela la fonction CurrentTick().

3 Odometrie

Le processeur ARM du NXT n’a pas d’unite de calcul en virgule flottante : on ne

peut faire que des calculs sur des entiers. Comme aux premiers temps de l’informatique, oucertains jugeaient inutile le calcul en virgule flottante, a vous de transformer vos calculs pour en

tenir compte (ex : −100 < sin(angle en degres) < 100 avec NXC pour eviter la valeur a virgule).

Premier exemple Deuxieme exemplelong x=50,res; long x=1,res;

res=x*32/100; //res=16 en m res=x*32/100;//res=0 en m

res=x*(32/100); //res=0 en m res=x*1000*32/100; //res=320 en mm

Tab. 1 – Calcul de x*0.32 sur un processeur sans virgule flottante

L. Cuvillon, B. Bayle 2

5/17/2018 tps_mecatro_1a - slidepdf.com

http://slidepdf.com/reader/full/tpsmecatro1a 3/4

 

3.1 Vitesse de rotation des roues ϕr et ϕl

1. Ajouter au programme precedent une seconde tache odom, qui realise l’estimation odometrique.Cette tache sera demarree dans le main. Il s’agit d’une tache repetitive infinie, qui continuera

a s’executer apres l’arret de la tache move par minuterie. Pour la definir, a chaque iterationde la boucle il faut :

(a) Ecrire un algorithme permettant de calculer les vitesses des roues droite ϕr et gaucheϕl (a exprimer en deg/s). Attention a la convention de sens definie dans le cours pourchacune des roues.

(b) Effacer l’ecran et afficher les 2 vitesses.

(c) Definir une periode proche de 50 ms (au temps des executions precedentes pres) pourla tache en forcant l’attente par l’instruction Wait(50).

2. Tester et valider (aussi peu approximativement que possible).

3.2 Vitesse lineaire v et de rotation ω

Dans la tache odom, a la suite du calcul des vitesses angulaires des roues :

1. Calculer v et ω, respectivement vitesse lineaire (mm/s) et angulaire du robot (deg/s). Ledemi-entraxe vaut L = 56 mm, le rayon des roues r = 56 mm (c’est le hasard . . .).

2. Afficher ces vitesses a la place des vitesses de rotation des roues.

3. Tester et valider.

3.3 Odometrie : position x, y et orientation θ du robot

Dans la tache odom, a la suite du calcul des vitesses lineaire et angulaire du robot :

1. Calculer θ en millidegres par integration de ω.

2. Exprimer ensuite θ en degres et compris entre 0 et 360 deg a partir de θ (% = operateurmodulo en NXC).

3. Calculer x et y en mm par integration, a l’aide de v et θ precedemment calcules.

4. Afficher la position et l’orientation du robot.

5. Tester l’odometrie en faisant deplacer le robot au sol et valider le resultat.

4 Bluetooth et nxtlibc

L’objectif est de pouvoir recuperer sur le PC la position du robot pour realiser une carte del’environnement ou de la planification de trajectoires.

4.1 Appariement du PC avec le NXT1. Connecter le dongle Bluetooth sur un port USB du PC. Une applet Bluetooth apparaıt dans

la barre de taches.

2. Utiliser la methode d’appariement decrite dans le cours.

3. Relever dans le popup l’adresse Bluetooth du NXT.

4.2 Principe d’echange de messages entre le PC et le NXT

Le PC initie la connexion. Il est le maıtre et donc seul capable d’initier une connexion :– le PC peut poster des messages dans les boites aux lettres numero i, i=0 a 9, disponibles

sur le NXT par message write(i,. . .) de la nxtlibc– le PC peut aller lire la reponse que le NXT a depose dans les boites de numero 10+i par

message read(10+i,. . .) de la nxtlibc

L. Cuvillon, B. Bayle 3

5/17/2018 tps_mecatro_1a - slidepdf.com

http://slidepdf.com/reader/full/tpsmecatro1a 4/4

 

– le NXT p eut lire et ecrire dans ses boites aux lettres avec les fonctions SendMessage etReceiveMessage de l’API NXC

Une boite aux lettres i peut contenir jusqu’a 5 messages et peut etre vide ou pleine. Si elle estpleine, le plus ancien message est efface.

mailboxes

O

9

3

19

10

message_read(10+3,0,....,reponse)

13

char* buf 

char* res

SendMessage(10+3,res)

message_write(3,size,message)

PC

NXT−NXC

−NxtLibC

ReceiveMessage(3,true,buf)

Fig. 1 – Principe des boites aux lettres

Pour quelques details supplementaires, voir documentation Bluetooth NXT LEGO. . .

4.3 Communication de l’odometrie au PC

1. Tester le programme d’exemple de connexion PC→NXT du cours en modifiant l’adresseBluetooth par celle de votre NXT.

2. Compiler avec gcc et tester l’ouverture de la connexion.

3. Modifier alors le programme de navigation/odometrie sur le NXT pour deposer dans uneboite aux lettres de votre choix un message contenant la configuration actuelle du robot.

4. Modifier le fichier C de connexion Bluetooth sur le PC pour regulierement lire le messagedepose par le NXT dans la boıte aux lettres.

L. Cuvillon, B. Bayle 4