Home
Document - RECIT des Samares
Contents
1. poche a L a KpP Kil KdD error PID_ LF MotoControl Fig 10 J Sluka Sept 2009 is the A motor is actually the C motor el and correction TURN power levels for the A and C motors gt gt dy Takes a TARGET power lev and calculates motor Target Turn motor Target Turn If the calculated pov then the motor is re made into a positive number level for a motor is negative ed and the power level is If Target 50 and Turn 10 then 2 A_motor 60 B_motor 40 If a motor actually does reverse the NXT will beep Beeping is just for debugging purposes and should if Target 30 and Turn 40 then be removed eventually A_motor 10 and motor reverses B_motor 70 En entr e TARGET le niveau de puissance et TURN la cor ion apporter calculent le niveau d pour les moteurs et C du moteur est invers et le niveau de puissance transform en valeur positive Si le r sultat du calcul est n gatif le sens re rotation n ra f f Quand le sens du moteur est invers le NXT met un signal sonore Cette particularit permet le debugging et peut tre ventuellement supprim du programme Et enfin le programme principal A t l charger ici http files me com roboleo zntc6v PID Linefol 4 Fig 11 Document prot g au titre du code de la propri t intellectuelle droit d auteur 185 NXT G Lego Mindstorms Guide pratique de progra
2. Prise Type de Plage Signification des valeurs Prise ignor e donn es admise quand a LE a Port Num rique 1 4 1 Port 1 2 Port 2 3 Port 3 4 Port 4 a le Point de Num rique 0 100 Valeur de r f rence de la comparaison d clenchement a zla Sup rieur Inf rieur Logique Vrai Faux Logique utilis e dans la comparaison Vrai Sup rieur Faux Inf rieur a E dBA Logique Vrai Faux Vrai Mode dBA Faux Mode dB a Jila Oui Non Logique Vrai Faux R sultat de la comparaison a ija Niveau sonore Num rique 0 100 Valeur d chelle lue depuis le capteur 2 E Valeur brute Num rique 0 1024 Valeur brute sans mise l chelle lue depuis le capteur Le capteur sonore offre votre robot la facult d entendre des sons En v rit il n entend pas comme un tre vivant mais il est capable de percevoir une pression acoustique qui se traduit par une vibration sonore un niveau plus ou moins fort Cette pression est exprim es en d cibels unit de mesure Document prot g au titre du code de la propri t intellectuelle droit d auteur 49 NXT G Lego Mindstorms Guide pratique de programmation Il existe deux types de d cibels Le d cibel ajust en abr g dBA qui exprime une sensibilit adapt e celle de l oreille humaine C est celle que vos oreilles peuvent entendre Le d cibel standard en abr g dB adapt tous les sons y compris ceux que l ore
3. A 0 Nous allons aborder ici un aspect particulier du 2 contr le des robots notamment la relation entre capteurs et moteurs c est dire la mani re dont ils interagissent les uns sur les autres PID d signe un dispositif un organe de contr le informatis utilis dans l industrie pour une grande vari t de machines incluant les v hicules les robots et m me les engins balistiques Donner ici une d finition math matique du PID est assez difficile pour ceux qui ne disposent pas de connaissances suffisantes et ne ma trisent pas les calculs mais une bonne compr hension du dispositif est n cessaire pour utiliser efficacement un PID Cette le on d crit la fa on de cr er un PID destin aux robots Lego Mindstorms NXT programm s en NXT G version 1 1 Elle est inspir e d un article r dig par James Sluka et publi le 29 septembre 2009 sur le blog NXT STEP htip thenxtstep blogspot com 2009 09 01 archive html CHAPITRE 1 Le plus simple est de prendre un exemple et dans notre cas ce sera un Robot suiveur d un trace Une fois cr le m me PID peut tre employ moyennant quelques modifications mineures pour n importe quelle autre action comme se diriger d une mani re rectiligne ou grimper une rampe o encore se balancer en utilisant seulement 2 roues en contact avec le sol Pour viter de se lancer dans des notions trop compliqu es de calculs et pour que cette approche soit la port
4. programme r cent t OJ TEST moteur A z OK gt gt Vous avez besoin d aide Amenez le pointeur de la souris au dessus d un objet pour afficher une Infobulle qui explique sa fonction Pour plus d informations cliquez sur le lien Aide suppl mentaire Aide suppl mentaire NXT G est l outil de programmation que vous emploierez pour donner vie vos robots Il vous permet de cr er vos programmes qui seront t l charg s install s sur votre robot Ces programmes peuvent tre de simples instructions comme avancer de 60 cm et stop ou bien plus sophistiqu es Les robots NXT peuvent combiner une grande vari t de moteurs et de capteurs mais Sans un bon programme il n accomplira pas ce que vous attendez de lui Vous n aurez entre vos mains qu un objet dans la confusion Document prot g au titre du code de la propri t intellectuelle droit d auteur 8 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 2 SE D PLACER Vous tes tous pass s je l esp re par la MISE en ROUTE de NXT G Vous avez donc vu l espace de travail et toutes les autres parties qui sont les outils votre disposition Mais revenons BONG Vous avez l aussi construit votre BONG selon mes recommandations Il est peut tre diff rent du mien mais qu importe je dirais tant mieux En effet m mes diff rents des BONG peuvent agir de la m me fa on condition que les ports Vous savez ce
5. ni L U L L L s02 j D c l La a U O amp G N H go Retour Suivant Terminer Vous avez votre disposition une collection d ic nes que vous pouvez dimensionner et associer volont Il suffit de choisir l un des motifs puis d arranger selon vos go ts dans la zone d dition carr blanc Le r sultat est visible en haut et droite Quand vous jugez le travail termin appuyez sur le bouton Terminer Document prot g au titre du code de la propri t intellectuelle droit d auteur 126 NXT G Lego Mindstorms Guide pratique de programmation Votre nouveau Mon Bloc est maintenant accessible dans la palette personnalis e et utilisable comme n importe quel autre bloc Figure 10 Ce nouveau bloc est venu s ajouter 2 anciens Mes Blocs d j cr s dans le survol de la palette Chaque fois que vous cr erez un Mon bloc il viendra s ajouter ceux existants C est ainsi que petit petit la collection s agrandit Remarque Tous ces blocs personnalis s sont stock s dans un dossier intitul Mes blocs accessible partir du menu Edition gt G rer la palette personnalis e On notera qu ils sont eux m mes des petits programmes du type rbt Fils et plots de donn es Au del de ce qui vient d tre d velopp il faut aussi noter que Mes Blocs peuvent recevoir et envoyer des donn es par le canal des fils de donn es Cela n est possible que si les blocs s lectionn s pour co
6. 1 Rotations He 1 8 Jy Action suivante Freiner O BY Continuer Q Document prot g au titre du code de la propri t intellectuelle droit d auteur 67 NXT G Lego Mindstorms Guide pratique de programmation Vous avez d j remarqu que le bloc BOUCLE s adapte en s largissant pour recevoir le bloc D PLACER Il en sera toujours de m me chaque fois qu un nouveau bloc sera install l int rieur de la BOUCLE Sauvegardons ce petit programme et faisons le ex cuter par BONG BONG avance d une rotation de moteur puis une tr s courte pause Ensuite BONG avance encore d une rotation puis une nouvelle courte pause Cela se poursuit de la m me fa on jusqu ce que fatigu d attendre ces r p titions je d cide d arr ter le programme La pause survient quand le bloc D PLACER termine son action et que le bloc BOUCLE v rifie sa condition cela se produit tr s rapidement N oubliez pas que la condition est une r gle que le robot doit suivre Pour ce bloc BOUCLE la r gle est ici de continuer pour toujours Cela explique pourquoi le moteur tourne et tourne sans arr t avec la courte pause chaque tour Nous allons maintenant changer la condition Comment dire BONG de faire tourner le bloc D PLACER 4 fois Jetez un coup d oeil sur le panneau de configuration ci dessous Vous remarquerez que la zone Contr le dispose dans le champ de saisie d un menu d roulant avec 5 options Option
7. Fonction 5 G n rer de la lumi re Mais maintenant j ai un probl me Si vous examinez le programme on constate que la boucle se r p te 3 fois avec l int rieur un bloc D PLACER suivi d un bloc SON puis on sort de la boucle Ensuite le bloc CAPTEUR PHOTOSENSIBLE est test Si le niveau lumineux est sup rieur 90 le programme se termine Mais que se passe t il si le niveau est inf rieur 90 Comment puis je obliger le programme red marrer Une des r ponses consiste demander BONG de recommencer le programme Il faudra donc appuyer sur le bouton ENTREE du NXT pour faire red marrer ce programme Cela fonctionnera mais d une fa on laborieuse Il doit bien y avoir une solution plus astucieuse Examinez pr sent cette modification Vous remarquerez que le petit programme se trouve INCLUS dans une autre BOUCLE J ai aussi remplac le bloc CAPTEUR PHOTOSENSIBLE de la palette Commun par le m me capteur mais pris cette fois ci dans la palette Compl te pour disposer des plots de donn es Fig 20 Document prot g au titre du code de la propri t intellectuelle droit d auteur 17 NXT G Lego Mindstorms Guide pratique de programmation Ce que vous avez sous les yeux est une BOUCLE IMBRIQUEE une BOUCLE dans une BOUCLE Quand le programme se d roule chaque bloc l int rieur de la BOUCLE EXTERNE s ex cute D abord les blocs plac s dans la boucle INTERIEURE r p t s 3 fois Blocs DEPLAC
8. W Contr le sp Capteur 1 Afficher Ce bloc COMMUTATEUR utilisera une valeur en ENTREE pour d terminer son chemin Cette valeur peut tre num rique une portion de texte ou une valeur Logique VRAI ou FAUX Mais le plus int ressant est que le nombre de chemins n est pas limit 2 On pourrait par exemple configurer le bloc COMMUTATEUR pour r pondre ce pseudo code LEO gt BONG prends une valeur au hasard comprise entre 1 et 5 LEO gt Si le nombre est 1 tourne droite LEO gt Si le nombre est 2 tourne gauche LEO gt Si le nombre est 3 fais un demi tour LEO gt Si le nombre est 4 fais un tour complet LEO gt Si le nombre est 5 avance Dans cet exemple j ai demand BONG de choisir au hasard un nombre Cela est possible en utilisant un bloc VARIABLE que nous avons d j rencontr dans la le on n 4 nous en reparlerons d une mani re plus d taill e dans une autre le on Mais pour l instant supposons que BONG est capable de g n rer par lui m me ces nombres Bien tant donn que BONG dispose de 5 nombres 1 2 3 4 et 5 il existe 5 actions possibles qui leur sont associ es Je vais aussi utiliser le terme chemin au lieu de action parce que le bloc COMMUTATEUR offre aux robots diff rents chemins possibles chaque chemin suivi par le robot correspond des actions diff rentes Un chemin peut ordonner au robot d avancer de v rifier gr ce au capteur ULTRASONS de
9. dire le d placement de BONGbis 8 rotations Les blocs Envoyer un message et Recevoir un message sont absolument n cessaires pour que 2 robots NXT ou plus puissent communiquer et changer des informations Il est int ressant de signaler qu avec un deuxi me kit NXT il est possible de r aliser une t l commande pour contr ler un autre robot Pour cela vous utiliserez dans la t l commande les blocs Envoyer un message qui adresseront des valeurs num riques au robot comme le nombre de rotations ou de degr s aux moteurs B et C ou d autres param tres comme la vitesse ou la puissance NXT et le t l phone portable Comment faire communiquer un t l phone portable avec un NXT Comment commander un NXT partir d un portable Nous voici devant quelques paris tr s int ressant qui offrent encore plus de possibilit s vos robots Contr ler le NXT de la paume de la main T l commander un robot NXT comme un v ritable racer LEGO Contr ler quelques programmes personnalis s ou faire prendre des photos par un NXT en utilisant un t l phone portable Tout cela est possible l aide d un NXT et d un mobile Et tout se passe comme si ce mobile se comportait comme un 2 me NXT et il peut tre ma tre ou esclave T l charger le logiciel NXT Mobile Application Pour qu une liaison Bluetooth entre un portable et un NXT soit possible il est n cessaire d installer sur le portable un logiciel particulier con u par
10. viter de heurter des obstacles Le point de d clenchement peut galement tre d fini de mani re dynamique l aide d un fil de donn es en entr e Fig 9 Le tableau ci dessous pr sente les diff rentes caract ristiques des prises du plot de donn es du bloc Capteur photosensible Prise Type de Plage Signification des valeurs Prise ignor e donn es admise quand a la Port Num rique 1 4 1 Port 1 2 Port 2 3 Port 3 4 Port 4 a dla Point de Num rique 0 100 Valeur de r f rence de la comparaison d clenchement a zla Sup rieur Inf rieur Logique Vrai Faux Logique utilis e dans la comparaison i Vrai Sup rieur Faux Inf rieur a sala G n rer de la lumi re Logique Vrai Faux D termine si la LED du capteur est allum e ou teinte a jila Oui Non Logique Vrai Faux R sultat de la comparaison a a Intensit Num rique 0 100 Valeur d chelle lue depuis le capteur a mE Valeur brute Num rique 0 1024 Valeur brute sans mise l chelle lue l depuis le capteur Capteur Ultrasons Ce bloc peut d tecter des objets distants au maximum d environ 250 cm Il peut via des fils de donn es envoyer la valeur actuelle correspondant au relev ultrasonique actuel ainsi qu un signal logique vrai faux qui varie selon que le relev ultrasonique actuel est sup rieur ou inf rieur un point de d clenchement Fig 10 Document prot g au ti
11. D Alimentation lt sol 7 faire avancer la main le robot jusqu au point de contact d sir 8 Noter la valeur qui s affiche dans le champ ici 1085 Fig 4 LE Port A s Oc S Contr le O M2 Puissance moteur p Dim OP OP 09 rimi 5 W Action 14 Attendre sa A mentation S sx 9 Noter la couleur des caract res noir sens positif rouge sens n gatif 10 Reporter cette valeur dans la zone Dur e du panneau de configuration en degr s Remarque cette m thode dispense de calculer la distance en fonction du diam tre des roues Deuxi me m thode Proc der de la m me mani re si vous ne souhaitez pas travailler sur un programme existant Cr er un nouveau programme Allumer le robot Brancher le robot au PC c ble USB ou bluetooth Positionner le robot son point de d part Placer un bloc D PLACER au d but du programme Dans le panneau de configuration sous l ic ne D PLACER cliquer sur le bouton R R initialiser La valeur z ro 0 appara t dans les champs B et C des moteurs synchro situ s au dessous PR Fig 5 ETIE i Port _ A y B v C Alimentation S9 75 ve gp g Direction C T L TY Dur e 1 Rotations zj G Diriger c 7j B v dr Action sunente C A Freiner Be Continuer Q y 7 faire avancer la main le robot jusqu au point de contact d sir 8 Noter la valeur qui s affiche dans les champs B et C
12. Mindstorms NXT Salut de BONG Le texte est reproduit automatiquement dans la fen tre encadr e d orange qui est la fen tre de pr visualisation Fig 1 Document prot g au titre du code de la propri t intellectuelle droit d auteur 19 NXT G Lego Mindstorms Guide pratique de programmation Mindstorms NXT IX 12 Y g Salut de BONG Quelques pr cisions sur cette petite fen tre elle repr sente l cran du NXT Le texte que vous venez de taper se trouve sur la ligne 5 sur les 8 que contient l cran Ses coordonn es cart siennes indiquent que la ligne commence au point 5 partir de la gauche et au point 28 en descendant du coin haut gauche qui est l origine des axes L cran est couvert d un ensemble de points lumineux appel s Pixels constituant une sorte de grille II a pour dimension 100 x 64 pixels Ce n est pas tr s grand mais BONG n est pas non plus un g ant Si vous survolez cette zone l aide de votre souris vous constaterez que le curseur prend la forme d un main pointant du doigt En cliquant vous saisissez le texte qui peut tre d plac tr s facilement en n importe quel endroit de la fen tre Par voie de cons quence les indication chiffr e changent C est une mani re ais e de positionner le texte et surtout de visualiser ce que vous verrez sur l cran Sauvegardez ce miniprogramme nomm AFFICHER sur votre ordinateur Allumez le NXT et connectez BONG votre ordinateu
13. Nous allons maintenant compl ter notre tour d horizon avec le bloc Moteur Mais d abord parlons de Palettes Il en existe trois offrant des collections de blocs compl mentaires Elles sont disposition dans l espace de travail Pour r cup rer le bloc Moteur vous allez s lectionner l onglet central qui affiche la palette correspondante Cette palette est dite Compl te parce qu elle dispose plus de blocs que la palette Commun donc adapt e la confection de programmes plus labor s Fig 7 Document prot g au titre du code de la propri t intellectuelle droit d auteur 15 NXT G Lego Mindstorms Guide pratique de programmation DIFFERENTES PALETTES Le bloc Moteur est ICI Bloc Moteur Nous allons comparer ce bloc Moteur avec le bloc D placer z Don Cr Og 09 FY Dui Im t Observez attentivement les panneaux de configuration A priori ils semblent identiques 16 Document prot g au titre du code de la propri t intellectuelle droit d auteur NXT G Lego Mindstorms Guide pratique de programmation Le bloc Moteur est con u principalement pour faire tourner et arr ter UN moteur Vous pouvez pr ciser la dur e du mouvement nombre de rotations ou nombre de secondes pendant lequel il doit tourner mais votre robot peut d passer sa cible Ce d passement peut survenir car le bloc Moteur n est pas programm pour ralentir alors qu il attein
14. gauche Erreur l Tourne 5 1 droite Dans ce graphique on a remplac les valeurs de niveau lumineux de l axe des X par une nouvelle chelle qui est celle des erreurs Et comme cette droite coupe l axe des Y l origine c est dire au point z ro l quation se simplifie et devient y mx Et si on adopte une expression plus g n rale on peut crire Virage m erreur Dans ce qui suit il faut comprendre le mot virage comme correction de la trajectoire Mais nous n avons pas encore d fini la signification de l axe des virages Aussi pour l instant contentons nous de dire que la plage des valeurs se situe entre 1 virage franc droite et 1 virage franc gauche le z ro signifiant tout droit La pente de cette droite peut tre calcul e en utilisant les coordonn es des 2 points rouge situ s aux extr mit s de la droite pente m cart des y cart des x 1 1 5 5 2 10 0 2 soit 0 20 en valeur absolue La pente est une constante proportionnelle qui est le facteur multiplicateur appliquer a l erreur valeur de x pour obtenir celle du virage valeur de y Dans le vocabulaire adopt pour exprimer le PID cette constante est appel e K peut tre pour rappeler la notion de constante On peut l assimiler un facteur de conversion qui partir d un niveau de luminosit ou d une erreur dans notre cas produit une autre valeur comme celle d un virage
15. me ligne et la 13 me colonne ne pas oublier de compter les z ros Fig 7 Axe des x Origine Axe des y w 99 63 En r sum la valeur en x y d un pixel situ en haut et l extr me gauche est 0 0 Sur la m me ligne et l extr me droite sa valeur est 0 99 Souvenez vous que la valeur y cro t au fur et mesure que l on se d place vers le bas de l cran la valeur du pixel situ tout en bas et gauche est 0 63 elle est 99 63 pour un pixel situ tout en bas et l extr me droite Document prot g au titre du code de la propri t intellectuelle droit d auteur 152 NXT G Lego Mindstorms Guide pratique de programmation Revenons la programmation NXT G et examinons le bloc AFFICHER Fig 8 D Y Cercle i ON X 51 Y 31 Rayon 25 Dans la s rie des plots de donn es ceux qui nous int ressent plus particuli rement portent l indication x et y ainsi que _x et _y Par ces plots on contr le la position d un objet graphique affich sur le petit l cran Le panneau de configuration est param tr pour l affichage d un cercle de rayon 25 pixels Sa position dans la fen tre de l cran est fix e par ses coordonn es x 51 et y 31 Si aucun fil de donn es est raccord aux plots x et y l objet sera vu tel quel Par contre si les plots x et y sont reli s en entr es un autre bloc fournissant des valeurs variables l objet sera vu dans la position d finie par ces valeurs varia
16. qe ES Le qe Le Es LA 1 1 Minuteur v 3 Jy Action 5 039 Lire L R initemsr 51 Comparer gt x Ce bloc peut via des fils de donn es envoyer la valeur actuelle du minuteur ainsi qu un Signal logique vrai faux qui varie selon que la valeur du minuteur est sup rieure ou inf rieure un point de d clenchement Le point de d clenchement est la valeur pr cise dans une plage de nombres o se produit un changement de conditions Par exemple vous pouvez programmer votre robot pour qu il s arr te quand le minuteur d passe 20 secondes Le point de d clenchement vaut dans ce cas 20 secondes Vous pouvez d finir le point de d clenchement en entrant un nombre dans la zone de Saisie Pour d finir la plage au dessus ou en dessous du point de d clenchement qui g n rera le signal vrai utilisez le menu d roulant pour choisir l op rateur sup rieur ou inf rieur au point de d clenchement Pour que le bloc Minuteur fonctionne vous devez tirer un fil de donn es depuis le plot de donn es du bloc puis le connecter au plot de donn es d un autre bloc Vous pouvez tirer deux types de fils de donn es en sortie depuis le plot de donn es du bloc Minuteur un fil de donn es logiques qui transmettra un signal vrai faux et un fil de donn es num riques qui transmettra la valeur actuelle du minuteur Si par exemple vous configurez le bloc Minuteur plus grand que 10 seconde
17. t intellectuelle droit d auteur 172 NXT G Lego Mindstorms Guide pratique de programmation Affiche la valeur moyenne calibr e du capteur Photosensible apr s balayage du trac par rotation du robot PID_LF_Calib A B Analyse du programme principal Nous disposons maintenant de tous les l ments n cessaire pour l criture du contr leur P Le programme est intitul Steer_LF_2 rbt Fig 12 ERROR is the light value minus the gray value The gray value should be the center of the light F et la valeur moyenne gray Cette valeur J Sluka Sept 2009 sensor s range with white returning a higher Simple P Controler line follower using the steering control of a MOVE block value then black est au milieu de la plage limit e par les This is setup to follow the left hand edge of a line valeurs blanc et noir lues par le capteur Kp is the proportionality constant that converts ERROR to a steering value for the MOVE block Kp is entered in the multiplication block and the value is entered as 100x the actual value ERREUR est la diff rence entre la valeur lue Kp est la constante proportionnelle qui convertit ERREUR en une valeur de direction transmise au bloc DEPLACER Cette valeur est multipli e par 100 pour tenir compte de l absence de valeur d cimale The proportionality constant Kp will need to be determined for each robot and line The Kp will also depend on if the light sensor is calib
18. tr es Le programme commencera par l installation des 2 blocs capteurs sur le rayon de s quence avec leurs panneaux de configuration Fig 18 Document prot g au titre du code de la propri t intellectuelle droit d auteur 117 NXT G Lego Mindstorms Guide pratique de programmation Lumi re Le 35 M 7 G n rer de la lumi re Si on revient au pseudo code BONG avancera dans le cas unique o les 2 capteurs franchiront simultan ment leurs points de d clenchement Cela signifie que le capteur Photosensible doit r agir une valeur inf rieure 35 pour le niveau lumineux du local ET le capteur Sonore une valeur inf rieure 25 pour le niveau sonore Les 2 conditions doivent tre v rifi es VRAI en m me temps sinon BONG ne bougera pas Que se passe t il si le local est tr s lumineux et l ambiance calme RIEN BONG reste immobile Que se passe t il si le local est dans l obscurit et l ambiance bruyante RIEN galement BONG reste toujours immobile Que se passe t il si le local est lumineux et bruyant Un gros mal de cr ne pour BONG mais il ne bougera toujours pas Comment BONG peut il v rifier rapidement les conditions de luminosit et de bruit du local et d cider d avancer ou pas Simple il utilisera un bloc LOGIQUE et le programme ressemblera ceci Fig 19 Document prot g au titre du code de la propri t intellectuelle droit d auteur 118 NXT G Lego Mindst
19. ultrasons d tecte un obstacle 20 cm au devant Avez vous d autres id es Je souhaite que BONG avance jusqu ce qu une condition particuli re soit appliqu e Et avec NXT G cette condition peut tre satisfaite gr ce aux capteurs un minuteur aux boutons du NXT ou un limiteur de temps Nous allons faire une petite d monstration Vous allez cr er ce petit programme Document prot g au titre du code de la propri t intellectuelle droit d auteur 59 NXT G Lego Mindstorms Guide pratique de programmation Temps v Secondes 10 Le bloc DEPLACER est configur pour une dur e illimit e ce qui signifie qu il fera tourner les moteurs B et C en permanence avec un d placement vers l avant Le bloc ATTENDRE est choisi dans la palette commun il est aussi accessible dans la palette compl te En survolant l ic ne on affiche une petite palette dont on aper oit le contenu dans la figure ci dessous Ce bloc offre plusieurs options correspondant aux diff rents capteurs connus et au capteur Temps Tous ces choix sont associ s cette notion d attente Fig 2 2 lg t Le capteur TEMPS a t choisi pour cet exemple Vous remarquerez dans le panneau de configuration que la zone Contr le dispose justement un champ de saisie s lectionn sur TEMPS La zone Jusque a un champ de saisie dont la valeur a t fix e 10 secondes Sauvegardez ce programme t l chargez le sur votre robot et ex cutez le
20. un des deux NXT le ma tre Acceptez NXT2 Vous serez alors invit choisir un num ro de ligne de communication le NXT peut tre connect 3 appareils diff rents en m me temps Choisissez l un des 3 Document prot g au titre du code de la propri t intellectuelle droit d auteur 135 NXT G Lego Mindstorms Guide pratique de programmation num ros pour notre exemple n 2 Si cela est fait correctement chaque NXT mettra un beep sonore et vous invitera saisir un mot de passe Ce mot est 1234 et doit tre saisi automatiquement sur l cran du NXT faire seulement pour la premi re fois S lectionnez la coche encadr e sur les deux NXT et cliquer sur le bouton orange pour tablir la connexion Cette Connexion peut tre v rifi e en examinant l angle haut gauche de l cran Si le symbole Bluetooth n est suivi que par le signe lt la communication n est pas tablie Si par contre il est suivi par le signe i FT lt gt alors la connexion est tablie voir cercle rouge Cette communication est silencieuse c est dire tablie sans top sonore Pour vous assurer qu elle est bien active il faut v rifier constamment les symboles entour s d un cercle rouge Apr s avoir tabli la connexion vous pourrez effectuer une v rification en choisissant CONNECTIONS du sous menu BLUETOOTH les 2 NXT devraient tre associ s 2 me tape Assurez vous que les 2 robots NXT sont c b
21. Guide pratique de programmation Param trer les capteurs Quelques remarques pr liminaires En premier les capteurs d tectent le changement d une condition qui peut tre le niveau de luminosit le volume d un son la position mouvement Le capteur ne fait qu attendre ce changement Le capteur photosensible par exemple peut d tecter un changement du niveau d clairement d une chambre Deuxi mement les blocs de programmation ne peuvent seulement r pondre qu une condition la fois Un capteur photosensible par exemple ne peut tre configur pour r pondre une valeur en dessous de 70 et au dessus de 30 Pour r aliser ces 2 conditions il faudra utiliser 2 blocs capteur photosensible dans votre programme En fait les capteurs ne fournissent qu un type de r ponse logique Vrai ou Faux Dans l exemple du trafic autos on peut supposer que chaque v hicule dispose d un capteur fix sur son toit Il est programm pour r agir aux couleurs des feux Les v hicules se d placeront si la couleur est au vert et s arr teront au rouge Ils ralentiront si le feu passe au jaune Ces capteurs ne devront d tecter qu une des 3 conditions vert rouge ou jaune Un capteur NXT ne pouvant r pondre qu une condition la fois il faudra donc utiliser 3 capteurs si le 1er capteur d tecte le vert le v hicule continuera son avanc e si le 2 me capteur d tecte le jaune le v hicule ralentira si le 3 me capteur d te
22. LEGO Pour que cette installation soit possible le portable doit tre en mesure de supporter le t l chargement c est dire tre compatible Cette liste fournie par LEGO contient les types d appareils courants compatibles avec le logiciel NXT Mobile Application Nokia http www nokia com 6680 3230 Sony Ericsson htip www sonyericsson com W800i W550i K610i K800i Document prot g au titre du code de la propri t intellectuelle droit d auteur 143 NXT G Lego Mindstorms Guide pratique de programmation K750i Z710i Z550i K510i BenQ Siemens http communications siemens com CX75 S65 Ces appareils t l phoniques ont t v rifi s par LEGO et fonctionnent avec le logiciel NXT MOBILE APPLICATION D autres appareils sont susceptibles de fonctionner en particulier ceux qui disposent une zone r serv e pour t l charger des applications et qui acceptent le langage Java II faudra donc v rifier ce service en examinant le manuel de l utilisateur du portable Le logiciel NXT Mobile Application A t l charger partir du site LEGO http mindstorms lego com eng Overview Mobile 20Application aspx Usage Ce logiciel propose 2 mani res pour contr ler le NXT par t l commande ou par programmation En t l commande il suffit de d placer la molette d orientation pour faire voluer le robot En programmation la molette d orientation sert s lectionner le bon programme puis en appuyant s
23. LEO gt BONGbis compare cette valeur celle lue par ton capteur photosensible LEO gt BONGbis si ces deux valeurs sont gales avance de 8 rotations Et la traduction en programme NXT G est la suivante Fig 15 a Em QE E B S JE a 11 4 ni JES b b Zale k M Gt l Lod ad he AN v V4 4 un message La Message bisma sns 5 7 Boite aux lettres 3 5 Document prot g au titre du code de la propri t intellectuelle droit d auteur 142 NXT G Lego Mindstorms Guide pratique de programmation On observe que BONGbis rel ve la valeur de son capteur photosensible et cette valeur est transmise au bloc Recevoir un message Puis BONGbis v rifie et lit le contenu de sa bo te aux lettres 3 Une comparaison est alors faite entre la valeur stock e et celle lue sur son capteur photosensible Cette comparaison est faite automatiquement parce qu une valeur num rique a t fournie par le capteur au moyen d un fil de donn es en entr e reli au bloc Recevoir un message et qu un autre fil de donn es en sortie logique est reli au plot logique du bloc Commutateur Cette disposition force le bloc Recevoir un message comparer ces 2 valeurs Si ces 2 valeurs sont gales un valeur logique VRAI est alors transmise au bloc Commutateur par le plot OUI NON ne pas confondre avec le plot logique en sortie qui s lectionne le chemin correspondant c est
24. La version particuli re ci apr s est celle du Wiki sur des contr leurs PID Fig 8 Effets sur l accroissement des param tres Param tres Temps de D passeme variation du Erreur r activit nt temps l quilib Kp D croissant Croissant Petit changemt D crois Ki D croissant Croissant Croissant Supprim Ka Non d fini D crois D crois N ant petite crois ou d crois Le temps de r activit correspond la vitesse de rectification de l erreur par le robot Dans notre cas type il correspond la vitesse du robot dans sa tentative de revenir au bord du trac apr s s en tre loign Le temps de r activit est surtout contr l par Kp Plus Kp est grand et plus le robot acc l re ce retour en diminuant le temps de r activit Si Kp est trop grand le robot perd le contr le Le D passement est la distance d cartement par rapport au bord du trac que le robot a tendance prendre alors qu il r agit une erreur Par exemple si le d passant est petit le robot ne vire pas droite du trac il essaye alors de rectifier en virant gauche du trac Si le d passement est grand alors le robot oscille devant le bord du trac et essaye de corriger l erreur Le d passement est en grande partie contr l par le terme Kd mais est fortement affect par les Termes Kp et Ki D habitude pour corriger fortement le d passement vous serez tent d augmenter Kd Rappelez vous notre premier s
25. Lego Mindstorms Guide pratique de programmation chaque passage de la boucle le bloc ALEATOIRE produira au hasard un nombre 1 2 ou 3 qui sera compar aux conditions du bloc COMMUTATEUR lequel ouvrira la chemin du m me n Simple l gant et sans fin Et que se passerait il si le bloc ALEATOIRE devenait fou et produisait une valeur 4 Cette valeur n existant pas dans les conditions c est la valeur de d faut qui serait alors Sollicit e dans ce cas le chemin n 1 valeur coch e De plus quelle que soit la valeur sauf 2 ou 3 c est toujours ce chemin n 1 qui sera choisi Enfin et pour terminer Encore un autre exemple pour se faire plaisir Voulez vous faire voluer un robot l int rieur d un trac ferm Essayez alors ce programme Un bloc BOUCLE avec 2 blocs COMMUTATEUR IMBRIQUEES Fig 15 pour tourner droite ou gauche Jusqu d tecte Avance un trac Recule calcul al atoire Le bloc ALEATOIRE est utilis ici pour choisir au hasard une valeur comprise entre 0 et 100 Cette valeur est ensuite compar e un valeur constante B 25 Selon le r sultat qui est une valeur logique VRAI ou FAUX le robot empruntera le chemin du haut tourne gauche ou celui du bas tourne droite Retenez que le bloc COMMUTATEUR est un bloc puissant qui donne norm ment de possibilit s de d cisions selon le type de donn es en entr es et les capteurs associ s Document prot g au titre du code de la p
26. Que se passe t il Est ce que le moteur tourne pendant 10 secondes puis s arr te Si ce n est le cas v rifiez que le panneau de configuration du bloc Attendre est bien configur sur 10 secondes La 4 me r gle s applique ici Malgr la rotation illimit e du moteur le programme se termine apr s le dernier bloc Bien c est peu pr s tout ce qu il y a dire sur le capteur Attendre TEMPS Voyons maintenant comment r agissent les capteurs physiques Remplacez le bloc Attendre Temps par le bloc Attendre Capteur tactile puis exercez vous sauvegarder et utiliser ce programme modifi Vous remarquerez que les panneaux de configuration changent selon le type de capteur Document prot g au titre du code de la propri t intellectuelle droit d auteur 60 NXT G Lego Mindstorms Guide pratique de programmation Une petite astuce pour remplacer un capteur par un autre sans proc der une suppression puis une nouvelle insertion Il suffit de s lectionner le bloc en place pour faire appara tre le panneau de configuration puis d rouler dans la zone Contr le le champ de saisie et choisir Capteur au lieu de Temps La zone Jusque est alors remplac e par la zone Capteur D rouler le champ et s lectionner l l ment concern Il ne reste plus qu param trer le panneau de configuration selon les conditions li es ce capteur Fig 3 Al A g UE S Contr le BoutonsAXT K Port 1 2 3 4 Ca
27. Tr s simple et tr s puissant Donc en utilisant ces nouvelles conventions on peut crire l quation de cette droite ainsi Virage K erreur Document prot g au titre du code de la propri t intellectuelle droit d auteur 164 NXT G Lego Mindstorms Guide pratique de programmation La valeur Virage est consid r e comme une sortie de notre Contr leur P et d sign e par le terme P Vous avez remarqu que dans le dernier graphique la ligne erreur est dans la plage 5 et 5 En dehors de cette plage il n est plus possible de d terminer l loignement du capteur par rapport au trac Tous les blanc sont identiques si le capteur n est pas en mesure de d tecter un noir Souvenez vous que cette plage est arbitraire car elle est d termin e par les caract ristiques du capteur photosensible les couleurs des supports etc D s que le capteur s loigne trop du trac il rel ve des valeurs constantes cela signifie que les lectures ne sont plus proportionnelles l erreur La d viation par rapport au trac ne peut tre appr ci e que si le capteur est assez proche de ce trac C est l int rieur de cette plage que les valeurs lues sont proportionnelles la distance A l ext rieur de cette plage il nous indique la bonne direction mais l ampleur est fauss e La lecture des valeurs ou l erreur est plus petite qu elle ne l est en r alit et ne fournit donc pas une r ponse satisfaisante Dans la d fi
28. actions et qui r agit avec son environnement Un PROGRAMME Pour l instant BONG ex cute ce qu il fait le mieux c est dire rien Pour le faire agir LEO va lui donner des ordres des instructions d finition un programme est une suite d instructions Programmer c est ce que fait LEO quand il cr e un programme Cela para t simple vous verrez cependant qu il n en est rien Exemple LEO gt BONG avance BONG se d place en avant LEO gt BONG stop BONG s arr te LEO vient de donner BONG deux programmes tr s simples ex cuter Et oui 2 programmes Le premier est d placer en avant le 2 me stop Ils ne comportent chacun qu une seule tape Est il possible de r unir ces 2 tapes en un seul programme LEO gt BONG Avance et stop BONG ne r agit pas Que se passe t il Manque de pr cision Plus exactement les choses se sont d roul es tellement vite que LEO n a rien vu Le moteur n a m me pas eu le temps de d marrer que d j le STOP est intervenu BONG a fait exactement ce que LEO lui a demand Dans le premier cas LEO a attendu que BONG d marre avant de lui demander de s arr ter Il a donc eu le temps de se d placer Dans le 2 cas LEO n a pas pr cis la longueur du trajet ou le temps du d placement Essayons autrement LEO gt BONG avance pendant 5 secondes puis stop BONG se d place en avant pendant 5 secondes puis s arr te OK possible que BONG ne soit pas le probl
29. arri re ou s arr ter Si vous utilisez deux moteurs pour conduire un v hicule un de chaque c t la glissi re Diriger s affiche les lettres des ports s lectionn s sont indiqu es de chaque c t D placez la glissi re si vous voulez d finir un trajet incurv pour votre robot Si la glissi re est tir e enti rement d un c t votre v hicule tournera sur place La zone Alimentation dispose d une glissi re de saisie permettant de d finir le niveau de puissance 0 100 c est dire la vitesse La zone Dur e dispose d un menu d roulant pour indiquer si les moteurs doivent tourner pendant une dur e illimit e ou pendant un nombre pr cis de rotations par d faut de degr s ou de secondes Les options Temps Rotation et Degr s permettent de d terminer la distance que votre robot parcourra La zone Action suivante Indique si les moteurs doivent freiner ou continuer en roue libre apr s avoir termin leur action Choisissez le freinage si vous voulez qu ils s arr tent un endroit pr cis En outre le freinage permet d viter que votre robot ne recule lentement s il se trouve sur une pente Avec tous ces param tres vous pouvez programmer vos moteurs comme vous l entendez Observez nouveau l ic ne bloc D placer vous constaterez la pr sence des minuscules ic nes qui rappellent le contenu du panneau de configuration Changez les param tres ils seront modifi s sur le bloc Exercice reprenons l exemp
30. bloc contiendrait alors ma forme pr f r e La chose qui manque ce bloc c est le moyen de se glisser l int rieur pour changer le CUBE en SPHERE Ce serait bien si je pouvais le faire moi m me et proc der ces changements selon mes d sirs La premi re chose faire c est de connecter ce bloc un minuscule clavier pour changer la FORME Ce clavier tr s particulier comporterait des touches con ues pour choisir seulement une forme cube parall l pip de sph re c ne cylindre anneau tige etc et rien d autre Il n est pas fabriqu pour taper du texte ou autre chose On pourrait l imaginer ainsi Fig 2 Document prot g au titre du code de la propri t intellectuelle droit d auteur 31 NXT G Lego Mindstorms Guide pratique de programmation lt J Z Clavier de forme Parfait Maintenant je peux saisir SPHERE Plus tard si j envisageais de remplacer SPHERE par TIGE je n aurais qu appuyer sur la touche repr sentative de cette autre forme A pr sent j ai la forme SPHERE En dehors de la visualiser je ne peux pas en faire grand chose Tout comme le clavier de forme je vais raccorder au bloc un petit cran factice capable de puiser l information et de l afficher Cet cran est semblable au clavier il ne peut afficher que des formes et rien d autre Notre dispositif pourrait ressembler ceci Fig 3 R sumons Le bloc ne peut contenir qu une seule forme pas de nombre ni de jo
31. d placer le robot grande vitesse et une petite valeur pour Kp pour rendre les virages plus doux Si le trac pr sente des courbes serr es La valeur maximum Tp sera la meilleure Si Tp est sup rieur ce maximum la valeur de Kp importe peu et le robot ratera son virage car il se d place trop rapidement Si Tp est faible la plupart des valeurs de Kp seront acceptables compte tenu du lent d placement du robot L objectif est d avoir un d placement le plus rapide possible sans perdre la capacit de suivre le trac Document prot g au titre du code de la propri t intellectuelle droit d auteur 167 NXT G Lego Mindstorms Guide pratique de programmation Nous avions suppos une valeur de d part pour Kp de 10 Pour Tp vous pourriez choisir une valeur plus faible que celle sugg r e ci dessus peut tre 15 le robot se d place assez lentement Essayez et v rifiez le r sultat Si vous ratez le trac parce que le robot semble virer trop lentement alors augmentez Kp et essayez nouveau Si vous ratez le trac parce que le robot semble trop r actif dans la recherche du trac dans les deux sens diminuez alors Kp Si le robot semble suivre le trac correctement augmentez Tp et assurez vous de pouvoir suivre le trac une vitesse plus rapide Pour chaque nouvelle valeur de Tp vous devrez d terminer une nouvelle valeur correspondante de Kp sachant que Kp pr sente d habitude peu de variation Suivre un trac rectiligne
32. d s qu il est enfonc Choisissez Rel ch si vous voulez que le bouton soit activ d s qu il est rel ch 3 La zone jaune de r troaction affiche 1 lorsque le bouton NXT choisi est heurt enfonc ou rel ch en fonction de la configuration s lectionn e Fig 15 Le tableau ci dessous pr sente les diff rentes caract ristiques des prises du plot de donn es du bloc Boutons NXT Prise Type de donn es Plage admise Signification des valeurs Prise ignor e quand 4 4 am a Bouton Num rique 1 3 1 Droite 2 Gauche 3 S lection L a fas Action Num rique 0 2 0 Enfonc 1 Rel ch 2 Heurt a jia Oui Non Logique Vrai Faux R sultat de la comparaison Bloc Minuteur Le NXT met votre disposition 3 minuteurs chronom tres int gr s qui permettent de d clencher des actions en fonction du temps coul Ces capteurs n existent pas physiquement mais ils sont activ s gr ce un bloc de programmation Lorsque votre programme d marre les trois minuteurs commencent automatiquement compter Ce bloc permet de choisir si vous voulez lire la valeur actuelle d un minuteur ou forcer un minuteur repartir de z ro Fig 16 Document prot g au titre du code de la propri t intellectuelle droit d auteur 56 NXT G Lego Mindstorms Guide pratique de programmation RO OR R R R On D mens R GP Mi m a N LE
33. de suivi de trac la plage d entr e est environ 5 unit s et la plage de sortie de la puissance des moteurs est de 100 unit s donc il semble probable que Kp sera aux alentours de 100 5 20 Dans certains cas Kp attendu ne sera pas aussi grand Et qu arrive t il si le Kp attendu est gal 1 Puisque les variables dans NXT G sont limit es aux entiers quand il s agit de d terminer les valeurs de Kp tout ce qu il est possible d entrer c est 2 1 0 1 2 3 Vous ne pouvez pas entrer 1 3 donc vous ne pouvez pas essayer Kp 1 3 Vous ne pouvez pas utiliser un nombre avec un virgule d cimale Mais il y aura probablement une grande diff rence dans le comportement de robot quand Kp passera brutalement de 1 2 Avec Kp 2 le robot tentera de corriger l erreur deux fois plus durement compar e Kp 1 La puissance du moteur variera de plus du double pour un m me changement de niveaux lumineux Trop brutal Ce que nous recherchons c est un mode de contr le plus fin pour Kp Ce probl me est facile r soudre Tout ce que nous ferons c est de multiplier Kp par dix pour red finr la plage utilisable dans la limite des entiers Si on s attend ce que Kp puisse tre proche de 1 alors une valeur de 100 comme multiplicateur serait un bon pari En effet il est probablement plus judicieux de toujours utiliser 100 Kp comme nombre Document prot g au titre du code de la propri t intellectuelle droit d auteur 169 NXT G Lego M
34. e LEO gt BONG si j appuie et rel che le bouton affiche sur ton cran Enfonc LEO gt Bong si je n appuie pas sur le bouton affiche sur ton cran L ch Document prot g au titre du code de la propri t intellectuelle droit d auteur 100 NXT G Lego Mindstorms Guide pratique de programmation Je commencerai par installer ces deux blocs Un bloc ATTENDRE r gl sur 3 secondes Un bloc BOUTONS NXT configur sur Enfonc Fig 12 ee o se et Boutons NXT B Bouton 2 Bouton Entr e 5 1 IR Action 5 4 Enfonc Q Rel ch O 4 Heurt Je vais maintenant cr er une variable que j appellerai Enfonc du type Logique vous savez comment faire J installe donc la suite ce bloc VARIABLE et dans la zone Action je s lectionne Ecrire On constate l apparition du plot d entr e de donn es sur la gauche de l ic ne Je tire ensuite un fil de donn es entre le bloc BOUTONS NXT et le bloc VARIABLE Fig 13 n aaa Nom Type 3b Action E Lire 5 E crire Logigue 1 Logique Nombre 1 Num rique Valeur V4 Vrai X Faux Texte 1 Texte Enfonce Logique Si le bouton ENTREE du NXT est appuy puis rel ch pendant les 3 premi res secondes le bloc capteur boutons NXT d tectera le changement d tat du bouton et Document prot g au titre du code de la propri t intellectuelle droit d auteur 101 NXT
35. entr e des donn es num riques Tous autres types de donn es sont bien entendu accept s texte et logique Et voici une mani re de l utiliser dans un extrait de programme NXT G plus g n ral Figure 12 Remarque importante Vous noterez que le Mon Bloc intitul Top son1 est travers e par une bande z br e comme si l ic ne tait rompue Cela signifie que le fichier de ce Mon Bloc ne figure pas dans la liste de Mes Blocs en cours d utilisation Il est important de vous assurer que les Mes Blocs utilis s dans vos programmes sont galement stock s dans votre palette personnalis e Si vous t l chargez ou copiez des programmes NXT G vous devez galement t l charger ou copier les Mes Blocs qui les accompagnent sauf s ils figurent d j dans la liste et les installer avant le programme principal Quelques exemples utiles gt Vous pouvez par exemple vous constituer une s rie de modules sonores compos s partir de blocs SON Tonalit Figure 13 3 Action Hifi Fichier audio C J Tonalit JF Remarque A pendant oos secondes ull Volume UT 111 i 100 Fonction O R p ter Ii Attendre 9 en Attendre la fin s quence tonalit tant A A et F Figure 14 Document prot g au titre du code de la propri t intellectuelle droit d auteur 128 NXT G Lego Mindstorms Guide pratique de programmation he Action OH Fichier audio 9 J Tonalit J Rema
36. est d ordinaire assez facile Suivre un trac comportant des courbes douces est un peu plus d licat Suivre enfin un trac comportant des courbes serr es est nettement plus dur Si le robot se d place assez lentement presque n importe quel trac peut tre suivi m me avec un contr leur rudimentaire Nous recherchons un bon suivi de trac avec une vitesse convenable et la capacit d aborder avec succ s les virages doux Les trac s avec virages serr s suivent g n ralement des trajectoires de trac s plus sp cialis es Il est vident que le meilleur contr leur P est sp cifique chaque type de trac largeur rayons des courbes etc et chaque robot En d autres termes un contr leur P ou un contr leur PID en la mati re est con u pour une seule sorte de trac et de robot et ne fonctionnera pas convenablement pour d autres trac s ou robots Il faudra donc adapter les param tres Kp et Tp selon les circonstances Avant d aller plus loin Je vous propose deux exercices dont l utilit se retrouvera par la suite Premier exercice Utiliser le tapis d volution test pad fourni dans le kit 8527 Ecrire un programme NXT G capable de lire les valeurs fournies par le capteur photosensible pour le blanc et le noir partir du trac ovale du tapis d volution Puis calculer la moyenne et la stocker dans une variable cette moyenne permettra de calculer par la suite l erreur Pour accomplir ce travail
37. existant AJOUTE les donn es la fin du fichier au lieu d effacer les donn es existantes Pour ECRASER un fichier il faut tout d abord utiliser un bloc Acc s aux fichiers qui SUPPRIME le fichier puis en employer un second qui ECRIT un nouveau fichier en lui donnant le m me nom Voici quoi pourrait ressembler un programme d enregistrement de donn es Fig 12 Document prot g au titre du code de la propri t intellectuelle droit d auteur 155 NXT G Lego Mindstorms Guide pratique de programmation Et voici comment proc der pour r cup rer ces valeurs l aide d un autre programme Fig 13 PROGRAMMES UTILES Et maintenant vous trouverez ci jointe une s rie de programmes que vous pourrez transformer votre guise pour vos propres robots Certains vous para tront simplistes mais l usage ils vous viteront des recherches inutiles D autres bas s sur un concept diff rent produisent des effets identiques c est une fa on de traiter un m me probl me de plusieurs mani res Tous ces programmes peuvent s int grer dans des ensembles plus complexes Ayez toujours en t te la simplification et n h sitez pas de tester des blocs qui vous paraissent inutiles Ils sont parfois la r ponse une question sans r ponse Enfin je vous invite enrichir cette liste par vos propres contributions Si vous pensez avoir trouv une astuce ou un moyen de simplification n h sitez pas les proposer Quelques exem
38. faciles retenir DEGRES NOMBRE DE ROTATIONS x 360 ROTATIONS NOMBRE DE DEGRES 360 Attention il s agit du nombre de degr s ou de rotations du MOTEUR et non des roues du robot Ces formules de conversion permettent de modifier un programme selon les circonstances et les pr f rences de chacun Document prot g au titre du code de la propri t intellectuelle droit d auteur 149 NXT G Lego Mindstorms Guide pratique de programmation Comment pr sent convertir les degr s ou rotations en DISTANCE La premi re chose faire avant de d terminer la distance parcourir c est de convertir la dur e en nombre de rotations voir la formule ci dessus Si la dur e de votre bloc DEPLACER est exprim e en degr s il suffit de choisir le param tre rotation dans le panneau de configuration le calcul est fait automatiquement Exemple supposons que la dur e soit de 900 degr s le nombre de rotations correspondant est de 900 360 3 5 Le r sultat est exprim en valeur d cimale Ensuite nous avons besoin d une deuxi me valeur celle du diam tre de la roue Il s agit en l occurence du diam tre ext rieur de la roue y compris son pneu Fig 1 La circonf rence est gale D diam tre x 3 14 pi Si vous prenez l une des roues du NXT vous constaterez que le diam tre pneu compris est approximativement de 5 7 cm La valeur de pi a t volontairement limit e 2 chiffres apr s la virgule aussi l
39. h sitez pas d exp rimenter ces blocs vous serez tonn s des r sultats aussi bien dans la diversit que dans la concision Document prot g au titre du code de la propri t intellectuelle droit d auteur 130 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 12 BLUETOOTHI Introduction Qu est ce que Bluetooth La traduction int grale de cette expression signifie dent bleue Quel rapport existe t il entre Bluetooth et la brique NXT Pour r pondre cette question commen ons par un peu d histoire Bluetooth est une sp cification de l industrie des t l communications Elle utilise une technologie sans fils radio courte distance destin e simplifier les connexions entre les appareils lectroniques Elle a t con ue dans le but de remplacer les c bles entre les ordinateurs et les imprimantes les scanners les claviers les souris les t l phones portables les assistants personnels PDA les autoradios et les appareils photo num riques La technologie t cr e en 1994 par le fabricant su dois Ericsson entreprise de t l communications fond e en 1876 Cette marque est devenue avec Sony Corporation Sony Ericsson En 1998 Plusieurs grandes soci t s Agere IBM Intel Microsoft Motorola Nokia et Toshiba s associent pour former le Bluetooth Special Interest Group SIG Ce nom est directement inspir du roi danois Harald Ier an 940 surnomm Harald Bl tan
40. high and low light values Swing the robots nose to putthe light sensor on the line s edge Calvule la moyenne entre les valeurs hautes et faibles de la luminosit Le nez du robot recherche la position de d part pour plac le capteur sur le bord du trac La BO Le capteur lumineux s assure que le niveau est sup rieur la moyenne MidLight c est dire qu il est toujours sur le blanc 1 re boucle et le robot poursuit sa rotation en passant sur le noir 2 me boucle Si le niveau est inf rieur MidLight on est alors s r d tre sur le noir D s que le capteur ne d tecte plus le noir on sort de la boucle petite attente et le robot s arr te Fig 10 Partie 4 bots nose to put the on the line s edge u robot recherche la de d part pour placer ir sur le bord du trac Result Remarques 1 La fin de course se produit sur le blanc apr s avoir franchi le bord du trac 2 Vous observerez un plot de fil de donn es un peu sp cial il est flottant provenant d une sortie de la variable MidLight il porte le nom de Result et contient le signe qui est celui d une valeur num rique Ce type de plot appara t lorsque le programme devient un Monbloc caract ris par une bande verte Donc si vous souhaitez compl ter ce programme par un affichage il suffira de cr er un nouveau programme con u par exemple de cette mani re Fig 11 Document prot g au titre du code de la propri
41. i A A vous maintenant d imaginer une boucle faisant usage du bloc SON Boucles imbriqu es Cette expression est souvent employ e pour signifier que plusieurs boucles charg es d accomplir des actions diff rentes sont astucieusement entrem l es pour relancer un processus complexe le dispositif se r p tant jusqu ce que vous d cidiez d y mettre fin Pour expliquer ce concept je vais imaginer un simple programme pour BONG dont j aimerais bien vous confier la r alisation Mais d abord laissez moi vous expliquer ce que BONG devrait faire en utilisant un pseudo code LEO gt BONG je voudrais une avanc e sur un trac circulaire pendant 3 5 rotations du moteur suivi d un top sonore Recommencer cette manoeuvre encore 2 fois soit 3 au total puis v rifier que le capteur photosensible d tecte un niveau lumineux sup rieur 90 Si le point de d clenchement n est pas atteint recommencer tout le processus Je vais donc concevoir une BOUCLE comprenant un bloc D PLACER et un bloc SON cette boucle sera r p t e 3 fois Fig 18 Document prot g au titre du code de la propri t intellectuelle droit d auteur 76 NXT G Lego Mindstorms Guide pratique de programmation CV ue Compter 5 Compter 3 Je vais maintenant ajouter un bloc CAPTEUR PHOTOSENSIBLE et fixer le point de d clenchement 90 Fig 19 T Y T9 Lumi re gt zJ _
42. int grale le I dans PID Les Int grales sont une partie tr s importante des math matiques sup rieures heureusement pour nous celle dont nous avons besoin est assez simple L int grale est la somme courante des erreurs En effet c est aussi simple Il y a toutefois quelques subtilit s que nous laisserons sous silence pour l instant Chaque fois que nous lirons une valeur fournie par le capteur lumineux et calculerons l erreur qui en d coule nous ajouterons cette erreur une variable nous appellerons int grale intelligent non Int grale int grale erreur Cette quation para t bizarre et elle l est Elle n est pas crite comme une quation math matique courante mais sous une forme commun ment utilis e en programmation pour additionner une s rie de valeurs Math matiquement cela n a aucun sens Dans la programmation informatique le signe gal a une signification quelque peu diff rente que celle des maths C est une expression de programmation et non pas une formule math matique appropri e Le signe signifie en math matiques que l expression situ e droite du signe permet de calculer et de ranger le r sultat dans une variable situ e gauche Ce que nous demandons l ordinateur c est d ajouter l ancienne valeur d int grale celle de l erreur et de ranger le r sultat la place de l ancienne int grale Ensuite comme pour le terme proportionnel P nous multiplierons l int gra
43. intellectuelle droit d auteur 124 NXT G Lego Mindstorms Guide pratique de programmation MINDSTORMS NXT Fichier Outils Aide Oo O Mon Bloc s lec 5 Annuler eZ pi R tablir 0 2 e 00 ouper SOLS gga ajg Couper Copiert Commun o Sans titre 1 Coller ge yy Effacert Cr er un nouveau bloc Mon bloc Modifier le bloc Mon bloc s lectionn TA 8 e7 ic ne Modifier Mon bloc G rer la palette personnalis e G rer les profils D finir les variables W Vous ouvrez une nouvelle fen tre telle que ci dessous Figure 7 Cr ateur de blocs Mon bloc Nom du bloc Mon blocl a A noter dans la zone de travail la pr sence des 2 blocs s lectionn s Compl tez les champs par des expressions facilement identifiables Le nom du bloc est obligatoire la description facultative Figure 8 125 Document prot g au titre du code de la propri t intellectuelle droit d auteur NXT G Lego Mindstorms Guide pratique de programmation Cr ateur de blocs Mon bloc Mon bloc Z nom au bic T Ba f Description du bloc Le ler bloc DEPLACER fait avancer de 3 rotations Les 2 me bloc AVANCER fait virer droite de 90 degr s Cliquez sur le bouton Suivant et choisissez une ic ne pour personnaliser votre nouveau Mon bloc ou le bouton Terminer si vous ne voulez pas personnaliser l ic ne Figure 9 Cr ateur de blocs Mon bloc savais P Cr ateur d ic nes M A 1 t af z
44. la pr sence d un obstacle Un autre chemin pourrait diriger le m me robot vers une direction oppos e attendant que le capteur TACTILE soit heurt tout en comptant le nombre de rotations du moteur C est la grande affaire de ce bloc chaque chemin dispose de blocs de programmation sp cifiques qui donnent au robot encore plus de puissance Vous pouvez m me ajouter Document prot g au titre du code de la propri t intellectuelle droit d auteur 81 NXT G Lego Mindstorms Guide pratique de programmation l int rieur d un chemin un nouveau bloc COMMUTATEUR multipliant l infini les chemins Avant de voir comment fonctionne ce bloc je dois pr ciser un point particulier figurant dans le panneau de configuration pour les besoins d explication j ai choisi dans la zone Contr le du panneau de configuration valeur type Logique j E L nn en fl on un on on on un E S S Contr le Valeur z Conditions l Type Logique z EI Afficher 4 Vue piat Vous noterez dans la zone Afficher que la case Vue plat est coch e D cochez cette case La pr sentation graphique du bloc change quelque peu et se pr sente ainsi Valeur 2 conditions Logique 5 E b A Vue plat Vrai J y T La diff rence r side dans l affichage des chemins Document prot g au titre du code de la propri t intellectuell
45. la valeur 70 Je peux aussi ranger roue dans la variable Texte 1 mais qu en est il d engrenage La r ponse est simple NXT G vous permet de cr er autant de variables que vous le souhaitez Vous pouvez m me renommer la variable pour la rendre plus explicite remplacer Texte 1 par Pi ce ou Nombre 1 par Quantit Voil comment proc der D finir les variables Si vous devez cr er une variable suppl mentaire commencez par d rouler dans la barre de menu de la fen tre du logiciel le menu EDITION puis le sous menu DEFINIR les VARIABLES Fig 7 5 MINDSTORMS NXT Fichier Outils Aide MIN TETE dis Sans titre 1 Collert ge Cr er un nouveau bloc Mon bloc G rer la palette personnalis e G rer les profils D finir les variables O ee ee ne one on mont Document prot g au titre du code de la propri t intellectuelle droit d auteur 98 NXT G Lego Mindstorms Guide pratique de programmation La petite fen tre suivante appara t Fig 8 Modifier les variables L Cr er supprimer ou modifier des variables Liste Cr er Supprimer TA Nom MaVariabe_1 l Type de donn es Logique 5 ema Appuyez sur le bouton Cr er Fig 9 Modifier les variables Cr er supprimer ou modifier des variables Cr er TA Nom MaVariable_1 l Type de donn es Logique 5 Fermer Une 4 me variable appara t sur un bandeau orange il suffit de mo
46. le petit cran a Activation de bluetooth si cette fonction n est pas activ e ce travail est faire sur les deux NXT Allumez le premier NXT le ma tre Bluetooth Bluetooth Document prot g au titre du code de la propri t intellectuelle droit d auteur 134 NXT G Lego Mindstorms Guide pratique de programmation l aide de la fl che droite gris clair d placez vous dans les sous menus jusqu BLUETOOTH S lectionnez BLUETOOTH en appuyant sur le bouton orange Puis sur ON OFF en utilisant les fl che droite gris clair My contacts E Visibility 0n 0ff Search My contacts Connections l fi Pour activer Bluetooth s lectionnez ON OFF en appuyant sur le bouton orange Quand vous s lectionnez ON un petit symbole Bluetooth appara t dans le coin haut gauche de l cran du NXT voir ci dessous b Renommez le NXT si n cessaire Pour identifier plus facilement vos NXT donnez leur des noms diff rents A faire sur votre ordinateur en utilisant le logiciel Lego Mindstorms NXT G c Mise en place d une connexion Bluetooth NXT NXT 1 Assurez vous que BLUETOOTH est activ sur les 2 NXT voir ci dessus 2 Sur l un des 2 NXT le maitre d placez vous et s lectionnez le menu BLUETOOTH l aide des fl ches gris clair 3 Puis choisir SEARCH Activez SEARCH puis l aide des fl ches gris clair choisir l autre NXT NXT 2 Cela demande tre fait par seulement l
47. long pour expliquer ce bloc qui par lui m me est incapable de faire quoi que ce soit mais un bon exemple en situation est n cessaire pour comprendre le m canisme Bloc COMPARER Je vais pr sent cr er un autre RAYON DE SEQUENCE en parall le avec ce dernier Je rappelle cet effet que vous pouvez utiliser le point de d part pour cr er des rayons de s quence suppl mentaires qui permettent votre programme d accomplir des t ches simultan es pour cr er un rayon suppl mentaire voir le menu AIDE du logiciel NXT G Sur ce rayon je glisse un bloc COMPARER pour comparer les valeurs A et B Rappelez vous je veux v rifier l expression A Plus grand que B et m assurer que le r sultat est VRAI ou FAUX Fig 7 Document prot g au titre du code de la propri t intellectuelle droit d auteur 109 NXT G Lego Mindstorms Guide pratique de programmation Inf rieur z Vous avez besoin d aide Amenez le pointeur de la souris au de 0 4 0 sya ES CES ETE A S B 2 une infobulle qui explique sa fonction cliquez sur le lien Aide suppl mentai Observons le panneau de configuration Fig 8 onas E on Ts UDS gal ay Ce bloc dispose d un menu d roulant dans la zone Op ration Trois options sont visibles Si vous choisissez l option Inf rieur le bloc COMPARER d terminera si A est Inf rieur B et traduira l expression par VRAI ou FAUX II proc dera de m me si vous choisiss
48. m me mani re dans le cas o l expression n est pas v rifi e Dans le bloc COMMUTATEUR je s lectionne l onglet X je positionne un nouveau bloc TEXTE contenant le mot FAUX j ajoute un autre bloc AFFICHER sur le rayon de s quence principal reli son tour par un fil de donn es au dernier bloc TEXTE FAUX Et pour terminer Un bloc ATTENDRE pour afficher suffisamment longtemps pour la lecture Fig 10 Document prot g au titre du code de la propri t intellectuelle droit d auteur 111 NXT G Lego Mindstorms Guide pratique de programmation Je vous conseille d crire vous m me et de tester ce programme Il est recommand pour une meilleure compr hension et une bonne pratique des fils de donn es Modifiez le votre guise changez galement les conditions pour Sup rieur ou Egal et observez comment les r sultats se modifient Plage Il arrive parfois que la comparaison entre deux valeurs ne suffit pas pour r soudre une notion de logique O la question est de v rifier si une valeur se trouve l int rieur ou l ext rieur d une plage de nombres Est ce que par exemple 17 est il dans la plage 5 22 Ou bien 40 est il en dehors de la plage 1 10 Quelle utilit demanderez vous peut il y avoir Et bien dans le cas du bloc COMPARER seules 2 valeurs sont en cause et B dans le cas qui nous pr occupe nous affinons l approche logique en y introduisant 3 valeurs B et C Nous testons
49. ne communique qu avec un seul appareil Bluetooth la fois Recherche et se raccorde aux autre appareils Bluetooth M morise la connexion avec le dernier appareil pour un raccordement plus rapide do Rend le NXT visible ou invisible gt par d autres appareils La fonction Bluetooth peut tre d sactiv e pour conomiser la batterie Compatibilit Utilisateurs PC ou MAC Les informations de ce paragraphe proviennent du site LEGO http mindstorms lego com Overview Bluetooth aspx LEGO MINDSTORMS NXT est compatible avec Bluetooth Software inclus dans Microsoft Windows XP Service Pack 2 et WIDCOMM Bluetooth Software pour Windows v 1 4 2 10 SPS ou plus r cent MINDSTORMS NXT est compatible avec Bluetooth Software inclus dans Apple MacOS X 10 3 9 10 4 et 10 5 Il est n cessaire de disposer de l une de ces versions pour tablir une connexion entre votre ordinateur et la brique intelligente MINDSTORMS NXT Le tableau ci dessous liste les appareils disposants de la technologie sans fil Bluetooth qui a t test par LEGO et ses partenaires Nota ces appareils ont t test s seulement avec Widcomm Bluetooth pour la version Windows plus r cente que v 1 4 2 10 SP5 et Bluetooth stacks inclus dans Microsoft Windows XP Service Pack 2 Apple MacOS X 10 3 9 et 10 4 Tableau des compatibilit s Bluetooth et MINDSTORMS NXT Appareils Compatibilit Bluetooth Belkin F8T003 ver 2 short r
50. ne seront effectifs que s ils relient imp rativement des plots de m me type Logique Texte Nombre J attire votre attention sur certains blocs qui par d faut contiennent une valeur Vrai ou Faux Cette valeur peut tre invers e par vos soins pour les besoins de vos programmes Dans le cas de notre exemple elle n a pas t modifi e Le type de donn es Logique se retrouve dans plusieurs blocs et en particulier dans les blocs de capteurs Fig 3 AKI p lil a oio ca o C est dans l utilisation des blocs Boucle et Commutateur que les donn es du type Logique affirment leur puissance Elles sont tr s utiles quand un robot doit d cider une action de sa propre initiative Gr ce ces blocs il peut d velopper des comportements complexes avec un meilleur contr le de lui m me Le robot peut scruter des capteurs moteurs ou autres sources d entr es et en fonction des r ponses Oui Non prendre des d cisions pour les actions suivantes R actions Votre kit Mindstorms NXT comporte une collection de moteurs et de capteurs de plus la brique NXT dispose aussi de boutons et de 3 minuteurs Seriez vous surpris d apprendre Document prot g au titre du code de la propri t intellectuelle droit d auteur 45 NXT G Lego Mindstorms Guide pratique de programmation que ces l ments sont susceptibles de fournir des informations la brique simplement par r action Pour les capteurs cela est vi
51. ont t apport es Les ports PS2 et claviers sont tous deux des ports s rie simplifi s Le RS232 a t utilis norm ment pendant de nombreuses ann es et encore aujourd hui il est pr sent sur toutes les cartes m res Son volution sans fil est l IrDA un protocole qui utilise les ondes lumineuses infrarouges pour transmettre des informations la m me technologie que dans nos t l commandes de t l Ce protocole tout comme le RS232 ne permet que de connecter un seul p riph rique la fois Un port s rie ne permet de ne relier qu une souris ou qu une imprimante oui il y a bien longtemps les imprimantes se branchaient sur les ports s ries ou un autre p riph rique Moyennant bricolage mat riel et logiciel il est possible d en relier plusieurs mais cela reste du bricolage C est ainsi que l USB Universal Serial Bus naquis Pour permettre de brancher plusieurs p riph riques en m me temps sur le m me port Quand on regarde les sp cifications de l USB on se rend d ailleurs compte que ce n est qu un port s rie am lior Restait donc trouver l quivalent de l USB mais sans fil Bluetooth est l volution lointaine sans fil du port s rie L utilisation de p riph riques Bluetooth est donc la m me que celle des p riph riques USB relier un ordinateur de petits p riph riques personnels ou relier entre eux des p riph riques personnels Ce n est donc pas une technologie permettant de monter d
52. ou lue dans un bloc VARIABLE Ici par d faut le bloc est configur pour lire dans la zone Action lire est s lectionn une valeur Logique Cette variable a aussi un nom Logique 1 Cela signifie que si VRAI ou FAUX est rang dans la variable cette valeur ne peut tre que lue Vous remarquerez aussi que la zone Valeur est estomp e donc inaccessible Enfin toujours dans cette zone estomp e la valeur de d faut est FAUX Avant de vous montrer comment modifier ces param tres s lectionnez la variable Nombre 1 Fig 2 00 Document prot g au titre du code de la propri t intellectuelle droit d auteur 94 NXT G Lego Mindstorms Guide pratique de programmation Vous remarquerez que la valeur de d faut dans la zone Valeur estomp e est z ro 0 Ce nombre est la valeur qui sera lue dans la Variable Nombre 1 Enfin choisissez la variable Texte 1 Fig 3 ue D Liste _Nom Type Me Action EL Lire Len crire Logique 1 Logique Nombre 1 Num rique E Texte 1 Texte La valeur de d faut dans la zone Valeur estomp e dans le champ de saisie est vide il n y a aucun texte rang dans cette variable Dans les 3 figures ci dessus on notera que les blocs VARIABLE ne disposent que d un seul plot de donn es le plot de Sortie vident non Dans ces 3 cas les donn es ne peuvent tre que lues Et pour les lire j ai besoin d un autre bloc disposant lui aussi d un plot de donn es
53. pas confondre avec les flux de donn es Ces blocs ne servent qu faire des calculs Fig 13 BLOC LOGIQUE BLOC MATH BLOC COMPARER BLOC PLAGE BLOC ALEATOIRE BLOC VARIABLE Dans les 4 premiers on observe 2 plots A et B en entr e et sortie de donn es A et B sont des cellules internes qui re oivent et fournissent des valeurs Ces valeurs proviennent soit d une saisie manuelle soit d un autre bloc par l interm diaire d un fil de donn es Le r sultat de l op ration est en sortie uniquement logique num rique Les 2 derniers blocs n ont qu une sortie uniquement Blocs avanc s Ils sont donn s ici titre d information utiliser bon escient Fig 14 BLOC TEXTE BLOC NOMBRE BLOC MAINTENIR BLOC ACCES BLOC ETALONNER BLOC REINITIALISER EN TEXTE EN VIE AUX FICHIERS MOTEUR Document prot g au titre du code de la propri t intellectuelle droit d auteur 40 NXT G Lego Mindstorms Guide pratique de programmation Vous connaissez d j le premier bloc le deuxi me ne s utilise que pour l affichage sur cran il transforme une valeur num rique en texte Les autres blocs sont surtout utilis s par les programmeurs confirm s Exemple d utilit des fils de donn es Je souhaite cr er un compteur qui l aide du capteur tactile enregistre chaque coup de bouton et affiche sur cran son num ro d ordre Pour compliquer un peu plus je souhaite que ce compteur revienne z ro chaque fois que l on d passe une vale
54. power powerA transmet la commande avec la nouvelle valeur de puissance dans un bloc MOTEUR MOTOR C direction forward power powerc Commande identique l autre moteur mais en utilisant l autre valeur de puissance end loop forever fin de boucle retour au d but de boucle et recommencer nouveau A Analyse de la routine Mon Bloc PID_LF_Calib Voici quoi ressemble le programme et pour une meilleure lecture ce Mon Bloc sera d coup en 4 parties analys es successivement Fig 7 Partie 1 Swings the robots nose looking for the min and max light levels Returns the average of the min and max Le nez du robot balaye le support pour relever les valeurs lumineuses max et mini Fournit la valeur moyenne PUT THE NOSE ON THE BLACK LINE POSITIONNER LE NEZ DU ROBOT SUR LE TRACE Number 11 Document prot g au titre du code de la propri t intellectuelle droit d auteur 170 NXT G Lego Mindstorms Guide pratique de programmation Deux variables num riques sont cr es pour stocker les valeurs Hautes high et Basses low des niveaux lumineux lu par le capteur lors de son balayage Oninitialise ces variables en y inscrivant les valeurs suivantes 10000 dans High et 10000 dans Low Deux Blocs MOTEUR A et C avec d placement oppos pour un balayage lent fait pivoter le robot sur lui m me Puis on ouvre une boucle dans laquelle on place un Bloc Capteur Photosensible Cette boucle est destin e a enr
55. pr cise encore mieux l information li e aux donn es Ces aides facilitent consid rablement le travail Pour supprimer un fil il suffit de cliquer sur le plot d entr e auquel il est raccord le curseur prend la forme d un doigt point Je vous conseille d aller faire un tour dans l aide et support pour Lego Mindstorms NXT o vous trouverez des explications d taill es sur les diff rents blocs et leurs plots de donn es Exercez vous tirer des fils et observez leurs couleurs afin de vous familiariser avec l interface graphique Une derni re bonne nouvelle vous ne risquez pas de d truire votre programme si par hasard certains plots ne sont pas correctement reli s Il suffit de supprimer les fils incompatibles et de recommencer Entrons maintenant un peu plus dans le d tail Les capteurs Vous avez ici la s rie compl te des blocs capteurs y compris les capteurs int gr s moteur et minuteurs Un seul n y figure pas c est le r cepteur de message bloc particulier qui sera trait dans une le on concernant Bluetooth Fig 11 Document prot g au titre du code de la propri t intellectuelle droit d auteur 38 NXT G Lego Mindstorms Guide pratique de programmation p H r ab 7 i b ae f b b p VS ic N Ad AS Vous remarquerez d abord qu il n ont pas tous le m me nombre de plots Mais aussi que certains plots ne sont qu en sortie seulement signifiant que le c
56. pris en compte dans Kp Kc valeur que vous avez d termin 9 Lancez le programme et observez le comportement du robot 10 Fa tes varier la valeur Kp Ki et des valeurs de Kd pour obtenir la meilleure performance possible Vous pouvez commencer par une assez grande variation disons 30 puis essayez alors une plus petite afin d obtenir une valeur optimale ou au moins acceptable de la performance 11 Une fois r unis un bon jeu d essais de K s d augmenter la valeur de Tp qui contr le la vitesse rectiligne du robot 12 R ajustez K s ou peut tre revenez l tape 1 et r p ter le processus en entier pour une nouvelle valeur de Tp 13 R p ter a nouveau jusqu ce que le comportement du robot vous convienne M thode Ziegler Nichols Fig 7 M thode Ziegler Nichols pour les valeurs K les boucles temps sont consid r es constantes et gales a dT Control Type Kp Ki Kd P 0 50Kc 0 0 PI 0 45Kc 1 2KpdT Pc 0 PID 0 60Kc 2KpdT Pc KpPc 8dT La virgule en exposant sur les Ki s et Kd s sont l juste pour rappeler qu ils sont calcul s en supposant dT constant et compris dans les valeurs de K James Sluka auteur de cet article a test pour son robot certaines valeurs avec les commentaires suivants Pour Kc 200 et quand Kp Kc la fr quence des oscillations du robot tait de 0 8 seconde Donc Pc 0 8 Il a mesur Pc en comptant haute voix chaque fois que le robot oscillait totalement dans une direc
57. puis le cycle reprend tant que la distance entre le capteur fix sur le robot et un obstacle devant lui reste inf rieure 1 m tre D s que cette distance est atteinte la boucle s interrompt et le programme s arr te Voici un autre exemple avec les boutons du NXT Le robot avance d une rotation met un top sonore puis fait une l g re pause Cette action se r p te inlassablement jusqu au moment ou on appuie sur le bouton fl che gauche du NXT la boucle s interrompt alors et le programme se termine Fig 9 Document prot g au titre du code de la propri t intellectuelle droit d auteur 71 NXT G Lego Mindstorms Guide pratique de programmation S Contr le Capteur 482 Bouton SoutonGauhe z sH Capteur s Boutons NXT B ijg Action 4 Enfonc ED C 4 Rel ch 1 Montrer H Compteur 4 Heurt Option Logique C est a derni re option qui interrompt une boucle elle se pr sente ainsi dans l exemple qui suit Fig 10 af i t i G l i Contr le Logique 5 Si Jusque f Vrai X Faux 1 Montrer M si Compteur Plusieurs remarques D abord le plot de donn es gauche de la boucle est visible puisque la case Compteur a t coch e Je rappelle que par ce plot on peut r cup rer en sortie une valeur num rique qui est le nombre de cycles de la boucle Ensuite et c est le seul cas un plot de donn es droite de la boucle
58. qui accepte uniquement en entr e une valeur logique OUI ou NON La valeur de d faut est pr cis e dans la zone Jusque avec VRAI comme choix mais on pourrait choisir aussi FAUX Cela signifie que la boucle s ex cute quand la valeur s lectionn e ici VRAI est re ue c est une entr e de donn e En clair tant que la valeur logique est VRAI la boucle se r p te D s que la valeur passe a FAUX on sort de la boucle et le programme s arr te Document prot g au titre du code de la propri t intellectuelle droit d auteur 72 NXT G Lego Mindstorms Guide pratique de programmation Cet exemple illustre l utilisation de cette option Fig 11 J ai ajout un bloc Ultrasons r gl suivant le panneau de configuration Ensuite j ai ouvert son Hub de plots de donn es pour relier le plot logique celui de la boucle J ai enfin referm le Hub qui ne laisse visible que le plot utilis ici v x Que se passe t il Le robot avance d une rotation met un top sonore puis fait une l g re pause Ensuite le capteur Ultrasons mesure la distance par rapport un obstacle Tant que la distance mesur e est inf rieure 30 cm la boucle se r p te D s que cette valeur est atteinte on sort de la boucle et le programme s arr te Voil une mani re de sortir d une boucle sans intervention autre que celle du robot lui m me On aurait pu utiliser un autre capteur comme le Sonore qui aurait agit en fonction du niveau sono
59. re paire d instructions 3 fois BONG avance de 3 rotations s arr te puis tourne droite BONG avance de 3 rotations s arr te puis tourne droite BONG avance de 3 rotations s arr te puis tourne droite Beaucoup mieux J ai seulement lanc 2 instructions une pour la marche une autre pour la r p tition 3 fois et j ai conomis ma voix Cela n a pas emp ch BONG d ex cuter parfaitement le travail demand Dans le pseudo code j ai donn BONG un ordre et mis une condition Cette condition est tout simplement une r gle que doit suivre BONG Dans notre cas cette r gle consiste r p ter 3 fois ce couple d instructions Tant que BONG a connaissance de la r gle et qu il la suive peu importe le nombre de r p titions cela peut tre 1 ou 100 Au lieu de lui demander de r p ter 3 fois la r gle puis je utiliser une condition diff rente Oui videmment Voici quelques exemples LEO gt BONG r p te ma premi re paire d instructions jusqu ce que le capteur tactile soit heurt LEO gt BONG r p te ma premi re paire d instructions jusqu ce que le Minuteur d passe 45 secondes LEO gt BONG r p te ma premi re paire d instructions ind finiment C est une autre fa on de dire BONG d ex cuter certaines instructions et lui demander de les reproduire jusqu ce que quelque chose survienne cela me rappelle la le on n 6 Et si BONG reproduit encore et encore ces instructions o
60. renvoie la valeur 20 LEO gt BONG affiche le mot Salut jusqu ce que le capteur tactile signale qu il a t appuy puis rel ch LEO gt BONG joue la note DO quand le capteur ultrasons d tecte un objet situ 20 cm devant toi Les moteurs peuvent eux aussi fournir des informations sur leur tat LEO gt BONG fait tourner le moteur A jusqu ce que le moteur B signale une rotation de 10 degr s LEO gt BONG affiche 5 rotations quand le moteur C a tourn 5 fois J ai signal plus haut que le NXT disposait de 3 minuteurs internes plus 3 boutons Je pourrais aussi crire ce pseudo code LEO gt BONG lorsque 20 secondes seront coul es tourne de 90 degr s Ou encore LEO gt BONG joue la note SI quand j appuie sur le bouton fl che gauche et la note DO quand j appuie sur le bouton fl che droite Bien vous constatez que les capteurs moteurs boutons et minuteurs peuvent fournir des donn es en entr es au NXT pour contr ler d autres actions D PLACER SON et autres blocs Lorsque vous programmerez vos robots ils devront accomplir des actions bas es sur les conditions de ces dispositifs Tout comme un interrupteur qui ne conna t que 2 tats vous devez connaitre les diff rentes conditions li es aux capteurs moteurs boutons et minuteurs et qui peuvent tre transmises au NXT Document prot g au titre du code de la propri t intellectuelle droit d auteur 46 NXT G Lego Mindstorms
61. s arr te quand le nombre de rotations devient sup rieur 10 Le point de d clenchement vaut dans ce cas 10 rotations Vous pouvez d finir le point de d clenchement en entrant un nombre dans la zone de Saisie Pour d finir la plage au dessus ou en dessous du point de d clenchement qui g n rera le signal vrai utilisez le menu d roulant pour choisir l op rateur sup rieur ou inf rieur au point de d clenchement Document prot g au titre du code de la propri t intellectuelle droit d auteur 54 NXT G Lego Mindstorms Guide pratique de programmation Par d faut le bloc Capteur de rotation est param tr pour qu un nombre de degr s sup rieur 360 g n re un signal vrai La zone de r troaction compte le nombre de degr s ou de rotations selon lequel votre moteur tourne Par d faut cette zone affiche les degr s Si la propri t Dur e est fix e Rotation le compteur affichera des rotations enti res Cliquez sur le bouton R initialiser pour le remettre z ro Pour recevoir une r troaction assurez vous que le moteur est connect au port appropri et que la communication a t tablie avec le NXT Fig 13 Le tableau ci dessous pr sente les diff rentes caract ristiques des prises du plot de donn es du bloc Capteur de rotation 2147483647 Prise Type de Plage admise Signification des valeurs Prise ignor e donn es quand atkl
62. sont de 2 types soit Texte soit Num rique Les donn es logique n y figurent pas Mais en choisissant une valeur gale 0 ou 1 il est possible de les transformer apr s r cup ration en valeurs logiques Dans la zone Nom vous choisissez un nom caract ristique qui vous permet de retrouver facilement vos donn es stock es Enfin la zone de saisie contient le texte ou la valeur enregistrer dans le fichier que vous avez nomm Ces donn es peuvent galement provenir d autres blocs notamment des blocs VARIABLE l aide de fils de donn es Apr s avoir ECRIT des donn es dans un fichier il faut utiliser un autre bloc Acc s aux fichiers pour FERMER le fichier avant de pouvoir le LIRE ou le SUPPRIMER l aide d un troisi me bloc Acc s aux fichiers Par exemple pour crire dans un fichier puis lire des donn es partir de celui ci le fichier doit tre FERME entre les deux actions Cette t che exigerait trois blocs Acc s aux fichiers le premier pour lequel l option crire est activ e dans le panneau de configuration crit des donn es dans un fichier le deuxi me plac plus loin dans le programme doit tre configur pour fermer ce fichier enfin le troisi me pour lequel l option Lire est activ e dans le panneau de configuration lit le fichier Ces trois blocs peuvent tre plac s c te c te ou tre dispos s diff rents endroits du programme Enfin l criture dans un fichier
63. titre du code de la propri t intellectuelle droit d auteur 10 NXT G Lego Mindstorms Guide pratique de programmation PRENEZ LE TEMPS D ECRIRE LES PSEUDO CODES EN TERMES COURTS et SIMPLES LA PROGRAMMATION EN SERA FACILITEE Nous allons aborder maintenant l utilisation du BLOC D PLACER qui est le plus important dans la programmation d un robot Sans ce bloc vous pourrez construire des mod les mais ils seront tr s limit s et ne feront pas grand chose lls seront immobiles et peu int ressants Tous les robots que vous concevrez et qui comportent un ou plusieurs moteurs utiliseront le BLOC DEPLACER Lancez le logiciel NXT G si ce n est fait et dans la page d accueil Selectionnez D marrer un nouveau programme Fig 1 Demarrer un nouveau programme Vous ouvrez pr sent une nouvelle fen tre dans laquelle nous allons travailler Dans cet espace fa te dispara tre la fen tre Robo Center pour avoir plus de place en appuyant sur la petite croix en haut et droite Dans la palette Commun survolez la premi re ic ne D placer Cliquez dessus et glissez vers le point de d part de l espace de travail L ic ne vient se coller magn tiquement l emplacement D marrer Elle est encadr e d un pointill bleu qui indique qu elle est s lectionn e A Q B C D Alimentation S c T g Y Dur e 1 Rotations j e J 8 B y Action suivante Freiner D Continuer G a J
64. valeur erreur en valeur Virage En d autres termes une variation de 1 de l erreur se traduira par une augmentation de 10 de la puissance d un moteur L autre moteur verra sa puissance diminuer de 10 Document prot g au titre du code de la propri t intellectuelle droit d auteur 166 NXT G Lego Mindstorms Guide pratique de programmation Aussi en pseudo code c est dire sous forme d num rations logiques d actions ind pendamment du langage de programmation utilis NXT G ou autre nous pourrions crire Kp 10 Initialisation de trois variables moyenne 45 Tp 50 Loop forever D but de Boucle pour toujours LightValue valeurlueducapteur Quelle est la valeur lue courante du capteur erreur LightValue moyenne calcul de l erreur par soustraction de la moyenne Virage Kp erreur le terme P de combien veut on modifier la puissance du moteur powerA Tp Virage niveau de puissance pour le moteur A powerCc Tp Virage niveau de puissance pour le moteur C MOTOR A direction forward power powerA transmet la commande avec la nouvelle valeur de puissance dans un bloc MOTEUR MOTOR C direction forward power powerc Commande identique l autre moteur mais en utilisant l autre valeur de puissance end loop forever fin de boucle retour au d but de boucle et recommencer nouveau Bien nous y voil presque Il y a cependant un probl me subtil qui devrait tre corrig Mais laisse
65. visible sur les plots de donn es Il offre plus de souplesse L algorithme interne qui programme le NXT agit sur le tachym tre du moteur et ralentit la vitesse alors qu il s approche de son objectif de dur e Cela est tr s utile quand votre v hicule doit suivre un trac o arriver une distance tr s pr cise d une cible Ce bloc ne contient aucune rubrique Action dans le panneau de configuration pour jouer sur les comportements du moteur Cela est d au fait que ce bloc contient d j une certaine intelligence dans sa conception et qu il int gre les fonctions de ralentissement et d acc l ration Voyons pr sent les plots de donn es Comme vous le constatez Le bloc Moteur dispose de 2 plots particuliers en sortie seulement Cela signifie qu il peut fournir des informations internes sens de la marche rotations en degr s qu on peut utiliser comme informations provenant d un capteur et oui le moteur peut tre aussi un capteur Document prot g au titre du code de la propri t intellectuelle droit d auteur 17 NXT G Lego Mindstorms Guide pratique de programmation a ARS Re jla A MER axe Nous en reparlerons l occasion d un exercice Nous avons peu pr s fait le tour de la question en ce qui concerne les moteurs La meilleure fa on d appr cier les diff rences c est de vous exercer en modifiant les param tres et en testant les r sultats sur les moteurs Mais a
66. votre Mobile en leur donnant des noms distincts Cela vitera toute confusion avec d autres NXT ou Mobiles au moment d une connexion Bluetooth Utilisation courante Une fois le logiciel NXT Mobile Application lanc vous disposez des options suivantes partir du menu principal Info Une br ve description du logiciel NXT Mobile Application o trouver de l aide plus quelques informations et la terminologie employ e dans le logiciel T l commande Elle permet de contr ler 2 moteurs sur le NXT Utiliser la molette d orientation du portable pour avancer reculer et arr ter On peut galement choisir de contr ler un moteur la fois Si votre robot est con u comme un tribot il pourra fonctionner comme un engin t l guid Contr le par programme Ce mode vous permet de contr ler tous les programmes enregistr s sur le NXT D abord choisir le programme contr ler Ensuite vous pouvez d clencher un ordre par un message envoy votre NXT en appuyant sur une touche num rique du portable Ce que fera le NXT apr s avoir appuy sur une touche d pend enti rement de votre programme Donn es enregistr es Collected data Si le NXT est con u pour que votre portable prenne des photos c est l endroit o vous r cup rerez les fichiers aussi bien par exemple que les relev s des capteurs Remarque les donn es r cup r es ainsi que les photos sont supprim es de la cam ra quand on quitte l application Utilisati
67. 100 pour retrouver les valeurs de la plage accept e par les moteurs Le fil de donn es est en final raccord au plot Direction du bloc D PLACER A ce sujet vous noterez que la plage s tend de 100 100 Quand le fil de donn es produit une valeur gale z ro le robot se d place en ligne droite Si la valeur est entre 100 et z ro le robot vire gauche il vire droite si la valeur est entre z ro et 100 Les virages sont plus ou moins serr s selon la valeur absolue transmise Document prot g au titre du code de la propri t intellectuelle droit d auteur 173 NXT G Lego Mindstorms Guide pratique de programmation Remarque lors du premier essai vous serez probablement d u du r sultat Cela signifie que des corrections sont n cessaires puisque Kp et la puissance des moteurs sont variables Comme il a t signal plus haut vous proc derez par correction de ces deux param tres jusqu trouver les valeurs qui produisent le meilleur r sultat N oubliez pas de cr er et d installer dans Mon Bloc le programme PID_LF_Calib rbt avant de cr er le programme Steer_LF_2 rbt Vous pouvez t l charger ces programmes ici PID_LF_Calib rbt files me com roboleo t4kr7s Steer LF_2 rbt fles me com roboleo 0v 18s CHAPITRE 3 Ajouter I au contr leur le contr leur PI Pour am liorer les performances de notre contr leur P nous ajouterons un nouveau terme l quation Ce terme est appel l
68. 135 135 137 138 139 143 143 144 145 145 145 149 152 154 156 160 160 162 165 166 168 170 173 174 174 177 179 180 NXT G Lego Mindstorms Guide pratique de programmation M thode Ziegler Nichols 181 Chapitre 5 un programme complet d un contr leur PID 183 Document prot g au titre du code de la propri t intellectuelle droit d auteur 5 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 1 INTRODUCTION A LA PROGRAMMATION Bonjour tous Ce personnage c est moi et je viens de terminer une partie de mon travail Alors je me repose un instant sur une bauche de mod le on appelle cela un MOC II y a beaucoup de personnes heureuses propri taires du kit 8527 qui souhaitent apprendre mieux programmer le LEGO Mindstorms NXT Je vais donc essayer de vous instruire sur le sujet Mais tout d abord quelques petites r gles de fonctionnement Moi c est Roboleo mais j accepte LEO Je ne suis pas un programmeur gourou mais j aime bien que mes programmes collent parfaitement avec mes MOC s Certains sont l gants d autres affreux mais tous fonctionnent correctement Ils fonctionnent parce que j ai consacr le temps n cessaire au bon usage des outils qui sont fournis dans le logiciel du NXT Premi re r gle familiarisez vous avec les outils de programmation Et pour cela je vous propose des le ons qui s adressent d abord aux d butants 1 Mais avant de com
69. 154 8 70 je 1oy 2 Observez le panneau de configuration d finissant la plage 45 70 ainsi que le fil de donn es liant le bloc ALEATOIRE au bloc PLAGE II ne reste plus qu ajouter un bloc COMMUTATEUR qui contiendra un bloc AFFICHER dans chacun des chemins pour visualiser par les mots VRAI ou FAUX le r sultat du tirage Et pour finir un bloc ATTENDRE avec un bouton NXT fl che Gauche qui permet de maintenir l affichage avant de quitter le programme Ne vous trompez pas de bloc il s agit d un bloc ATTENDRE et non pas un bloc Bouton NXT Document prot g au titre du code de la propri t intellectuelle droit d auteur 114 NXT G Lego Mindstorms Guide pratique de programmation Fig 14 Ligne 3 X 3 Y 40 Texte vide Ligne 4 X 2 Y 32 Texte 45 et 70 oj FP Texte Vous avez besoin d aide Amenez le pointeur de la souris au dessus d un objet 1 Afficher S Effacer une Infobulle qui explique sa fonction Pour plus d infor cliquez sur le llen Alide suppl mentaire aP Texte VRAI URAI X 12IY 8 AA 2 Aide suppl Exercez vous avec ce programme essayez l option Hors de la plage et changez les limites de la plage Poursuivez cet exercice jusqu obtenir une bonne ma trise de l usage de ce bloc Logique Bloc LOGIQUE Ce bloc est tr s proche du bloc COMPARER avec une diff rence fondamentale dans la natures des valeurs Alors que le bloc COMPARER man
70. 40 40 41 43 46 47 47 48 50 51 53 55 56 NXT G Lego Mindstorms Guide pratique de programmation Bloc ATTENDRE Bloc Attendre Capteur Tactile Bloc Attendre Capteur Sonore Bloc Attendre Capteur Photosensible Bloc Attendre Capteur Ultrasons Bloc Attendre Boutons NXT Bloc Attendre Capteur Rotation Bloc Attendre Capteur Minuteur Le on n 7 BOUCLER ENCORE et ENCORE Bloc BOUCLE Option Compter Option Temps Option Pour toujours Option Capteur Option Logique Exemples Exercice n 1 Exercice n 2 Exercice n 3 Exercice n 4 Boucles imbriqu es Le on n 8 CHOISIR DECIDER rappel des r gles A Droite ou Gauche Sortie ou Sortie B bloc COMMUTATEUR Multiples d cisions Le on n 9 VARIABLE la VALISE FOURRE TOUT Le bloc VARIABLE D finir les variables Le on n 10 OPERATION CALCULS Calculs basiques addition soustraction multiplication et division Calculs al atoires Comparaison Plage Bloc PLAGE Logique Bloc LOGIQUE Le on n 11 Mes BLOCS MOI Document prot g au titre du code de la propri t intellectuelle droit d auteur 65 60 93 104 121 59 61 62 62 62 63 63 64 67 68 69 70 70 72 13 73 74 75 76 76 80 80 80 87 93 98 104 105 106 108 112 112 115 115 NXT G Lego Mindstorms Guide pratique de programmation Mon BLOC Cr ation des Mon Bloc s Fils et plots de donn es Quelques e
71. 6 280 168 2 168 0 014 0 7 6 72 soit 7 168 0 7 8 0 014 1050 En appliquant ces valeurs au programme principal nous obtenons 3 modes de comportement du robot dans son parcours Les P et PI des calculs pr c dents donnent une bonne r ponse au parcours de test ovale test pad Par contre le PID donne un parcours m diocre avec une grande quantit de tops sonores Apr s correction de TargetPower 80 les K s suivants sont consid r s comme acceptables PID 170 7 400 Document prot g au titre du code de la propri t intellectuelle droit d auteur 184 NXT G Lego Mindstorms Guide pratique de programmation Le choix du PID complet trouve son avantage dans la puissance cible accrue donc vitesse accrue Pour vous faire une id e des programmes NXT G Les MonBlocs t l charger ici http files me com roboleo m68hec http files me com roboleo 68 amp rrsl LF_PID module de calcul Fig 9 Calculs de base du PID Les param tres Kd Ki et Kp sont consid r es comme de variables globales ils doivent tre d finis dans les routines qui appellent ce MonBloc et doivent J Sluka tre initialis s en valeurs appropri es dans cette routine Sept 2009 A Cette routine stocke 2 valeurs pour le prochain cycle de la boucle L INTEGRALE et le LastError En entr e l Erreur courante En sortie la valeur du PID PROPORTIONNEL INTEGRALE
72. A et C par l interm diaire d un bloc D PLACER A noter que plus le niveau de puissance est lev plus le robot aura de difficult s suivre le trac Ce contr leur est un suiveur gauche de trac left hand edge follower qui active le moteur gauche et le moteur C droite Le capteur photosensible est raccord au port 2 La constante proportionnelle Kp est multipli e par 100 pour tenir compte de la nature des nombres exprim s en valeurs enti res ce qui exclus la notion de virgule flottante La meilleure valeur pour Kp d pends de plusieurs facteurs les roues du robot la plage des valeurs et la hauteur du capteur par rapport la surface d volution Le programme fonctionnera correctement si le capteur se trouve entre 6 et 12 mm environ au dessus du plan et si l clairage du local est uniform ment r parti Mais auparavant il est n cessaire de pr ciser un point particulier celui de la virgule d cimale Il faut rappeler ici que la version NXT G 1 1 ne traite que des valeurs num riques enti res alors que la version 2 0 prend en compte les valeurs d cimales Cette diff rence est cause d une petite complication Dans le processus de r glage du contr leur P la valeur de Kp ne cesse de varier entre des limites La gamme attendue des valeurs que Kp d pend tr s exactement de l action du contr leur P Quelle est la dimension de la plage d entr e et celle de la plage de sortie Pour notre contr leur P
73. A votre avis comment se comporteront ils Document prot g au titre du code de la propri t intellectuelle droit d auteur 74 NXT G Lego Mindstorms Guide pratique de programmation Fig 14 Dans quel cas le top sonore se fera il entendre Pourquoi Exercice n 3 Cette boucle affiche en permanence sur l cran du NXT la distance mesur e par le capteur Ultrasons La distance est stock e dans une variable Nombre 1 puis elle est convertie en mode texte pour tre affich e Le bouton Entr e du NXT permet de sortir de la boucle Cette sortie est confirm e par un top sonore Les deux blocs AFFICHER extr mes comportent des textes fixes pour expliciter la valeur de la distance Distance Objet et cm Fig 16 Va Document prot g au titre du code de la propri t intellectuelle droit d auteur 75 NXT G Lego Mindstorms Guide pratique de programmation Exercice n 4 Cette boucle affiche la valeur du niveau lumineux en passant par le bloc TEXTE Dans A la valeur de l intensit en mode texte en B un texte d accompagnement ici Valeur Capt C vide Le r sultat appara t sous la forme 65 Valeur Capt Une fois le programme lanc la touche ENTREE permet de lire et d afficher la valeur du capteur Pour sortir de la boucle on appuie sur la fl che gauche En r appuyant sur la touche ENTREE on relance la mesure Par le jeu de ces 2 boutons on arr te et relance le programme Fig 17 IO i i L i
74. Bloc ALEATOIRE C est un bloc d usage tr s simple avec peu de param tres de configuration mais importants Fig 4 Document prot g au titre du code de la propri t intellectuelle droit d auteur 106 NXT G Lego Mindstorms Guide pratique de programmation Dans la zone Plage vous remarquerez la pr sence de 2 champs de saisie Minimum A et Maximum B Dans ces champs vous pr ciserez les valeurs haute et basse de la plage dans laquelle le bloc piochera d une mani re al atoire La valeur minimum peut tre inf rieure z ro 0 et la valeur maximum ne peut d passer 32 737 Une autre fa on de choisir ces limites minimale et maximale est de tirer les deux glissi res La limite sup rieure de la glissi re est fix e 100 toutefois si vous entrez une valeur dans la zone de saisie vous pouvez fixer la limite sup rieure au del de 100 Vous pouvez galement entrer un nombre n gatif dans la zone de la limite minimale ce nombre supplantera la valeur de la glissi re Pour fixer les limites minimale et maximale de mani re dynamique branchez des fils de donn es en entr e au plot de donn es du bloc Exemple Nous allons maintenant crire un pseudo code LEO gt BONG affiche sur l cran du NXT et signale par un top sonore un nombre al atoire compris entre 20 et 80 Recommence jusqu ce que j appuie sur le bouton fl che droite pour tout arr ter Et voil quoi ressemble le programme NXT G Fig 5 Do
75. C est ce que nous allons examiner Par ailleurs nous savons que le petit cran du NXT permet l affichage de textes de formes l mentaires et de symboles graphiques Ce que nous savons moins bien c est que cet cran permet une certaine animation gr ce l utilisation des coordonn es cart siennes en x et y C est ainsi par exemple que l on peut associer une variable une barre de progression mobile en fonction des diff rentes valeurs de cette variable Mais pour r aliser ce travail il nous faut conna tre les caract ristiques et les conventions adopt es pour cet cran C est ce que nous verrons par la suite Enfin au fur et mesure que votre biblioth que de programmes s agrandit vous constaterez que certains modules reviennent souvent et sont r utilisables pour des projets diff rents D o l id e de les crire une fois pour toute pour les r utiliser l occasion D placements du robot Retenez d abord ces quelques formules qui expriment les relations entre degr s et rotations Quand il s agit de choisir les param tres de dur e dans le panneau de configuration du bloc MOTEUR ou DEPLACER les 2 l ments les plus souvent utilis s sont l angle en degr s ou le nombre de rotations La dur e en secondes est plus rarement choisie parce que les distances parcourues en 5 secondes par exemple ne seront jamais identiques du fait de la charge de la batterie qui diminue selon l usage Les formules sont simples et
76. Compter 1 3 a CA i Pour toujours Capteur Temos Compter Logique P y 4 Jusque Compter 4 I Montrer OEE compteur Choisissez Compter puis dans la zone de saisie Compter tapez 4 Vous devez taper ici une valeur enti re Les valeurs n gatives ou z ro sont exclues Pour v rifier que le compte est bon nous modifierons le programme en lui ajoutant un top sonore qu il suffira de compter pour la v rification Fig 5 Document prot g au titre du code de la propri t intellectuelle droit d auteur 68 NXT G Lego Mindstorms Guide pratique de programmation Contr le Compter z Si Jusque Compter 4 1 Montrer OES Compteur BONG va donc ex cuter 4 rotations suivies chacune d un top sonore Option Temps Revenons pr sent sur les 5 options propos es et commen ons par la plus simple Temps Fig 6 S2 ke CE Montrer EE Compteur Dans cette option vous pr ciserez dans le champ Secondes le temps allou la boucle ici 25 sec Cela signifie que tous les blocs situ s l int rieur de la BOUCLE agiront pendant ces 25 secondes En fixant cette limite de temps vous avez aussi signifi la Document prot g au titre du code de la propri t intellectuelle droit d auteur 69 NXT G Lego Mindstorms Guide pratique de programmation BOUCLE sa sortie loop break en anglais Au bout de 25 s
77. ER et SON Puis on sort de cette boucle Ensuite le CAPTEUR PHOTOSENSIBLE envoie une information logique VRAI FAUX vers le plot de donn es de la BOUCLE EXTERNE Si le niveau lumineux d tect est inf rieur 90 la boucle n est pas rompue et elle recommence son cycle D s que la valeur 90 est atteinte on sort de la BOUCLE EXTERNE et le programme se termine Vous avez remarqu le fil de donn es reliant le plot v x du bloc CAPTEUR PHOTOSENSIBLE celui de la BOUCLE EXTERNE Dans le panneau de configuration le contr le se fait par une valeur Logique Voici une m thode tr s utile pour sortir d une boucle en utilisant un capteur n importe quel capteur Et pour terminer cette le on je vous propose cet exemple une situation complexe Pouvez vous expliquer ce qu il fait Fig 21 Document prot g au titre du code de la propri t intellectuelle droit d auteur 78 NXT G Lego Mindstorms Guide pratique de programmation Oui c est une BOUCLE dans une BOUCLE dans une BOUCLE 3 blocs BOUCLES IMBRIQUEES Quand on lance le programme que constate t on D abord d bute la boucle du plus bas niveau bloc D PLACER jusqu ce que le capteur TACTILE soit actionn ici Appuy La boucle est alors rompue Puis c est la boucle interm diaire qui se r p te un autre bloc D PLACER jusqu ce que le point de d clenchement du capteur ULTRASONS soit atteint Arriv cette valeur la 2 me boucle est rompue son tour Enfin
78. G Lego Mindstorms Guide pratique de programmation intervertira la valeur logique FAUX par VRAI Une valeur VRAI ou FAUX sera alors crite dans la variable ENFONCE jusqu ce que les 3 secondes soient coul es Au d marrage du programme la valeur initiale est FAUX mais elle peut tre chang e en VRAI si le bouton ENTREE est enfonc Lorsque le bloc ATTENDRE se termine apr s 3 secondes il faut afficher sur l cran du NXT Enfonc ou L ch Pour accomplir cette t che je vais ajouter un autre bloc variable ENFONCE en prenant le soin de s lectionner dans la zone Action l option Lire Ensuite je vais lui associer un bloc COMMUTATEUR param tr en valeur logique avec une repr sentation en onglets case Vue plat d coch e Pour compl ter je tire un fil de donn es entre cette nouvelle variable et le bloc COMMUTATEUR Ce qui donne la figure suivante Vous avez besoi menez le pointe C une infobulle qui exp cliquez sur le ilen Vue plat Vrai Le bloc COMMUTATEUR r agira selon la valeur r sidant dans la variable ENFONCE Dans le chemin VRAI du bloc COMMUTATEUR je place un bloc AFFICHER comportant le mot ENFONCE et dans le chemin FAUX un autre bloc AFFICHER comportant le mot LACHE la case Effacer tant coch e dans les 2 cas Fig 15 e e E OLIS Afficher i a pe 2e r Action TE Texte zJ E _ Position Vous avez besi Amenez le pointeur CI Afficher x
79. I Effacer une infobulle qui ENFONCE ris z TF Texte T eO Tete ENFONC x aly 25 Enfin et pour terminer le programme j installe un bloc ATTENDRE jusqu ce que le bouton fl che Gauche du NXT soit enfonc Document prot g au titre du code de la propri t intellectuelle droit d auteur 102 NXT G Lego Mindstorms Guide pratique de programmation Ce qui donne le r sultat final Fig 16 5 Contr le Capteur I Bouton Bouton Gauche Vous avez besoin d aide Amenez le pointeur de la souris au dess Ha Capteur Boutons NXT IE Action 5 Enfonc une Infobulle explique sa fonction F e qui exp sur le lien Aide suppl mentaire Ex cutez pr sent le programme plusieurs reprises en enfon ant et l chant le bouton ENTREE ou ne faites rien Votre choix d appuyer ou non le bouton convertira en valeur VRAI ou FAUX ce qui est rang dans le bloc variable ENFONCE Apr s 3 secondes la derni re valeur ainsi rang e sera lue par le bloc COMMUTATEUR et le texte appropri affich sur l cran Quel int r t avons nous de proc der ainsi On aurait pu tout simplement relier le bloc BOUTON NXT au bloc COMMUTATEUR En effet si vous n envisagez pas de changer d avis Mais si vous souhaitez inverser votre d cision vous avez 3 secondes pour le faire et dans ce cas c est possible sans tre oblig de modifier votre programme La variable ENFONCE a tout simplement conserv en m m
80. LER ENCORE et ENCORE Nous sommes pratiquement arriv s la fin de l utilisation de la palette commune Nous allons maintenant aborder les blocs et les concepts qui permettent l laboration de programmes plus sophistiqu s que ceux qui consistent faire voluer vos robots par de simples marches avant ou arri re ou trajectoires circulaires Refaites le nouveau Rejoignons nouveau BONG Supposons encore une fois qu il dispose d une paire d oreilles et qu il peut comprendre les ordres verbaux Je vais lui adresser une s rie d instructions inhabituelles LEO gt BONG avance de 3 rotations du moteur arr te toi et tourne droite BONG avance de 3 rotations s arr te puis tourne droite LEO gt BONG avance de 3 rotations du moteur arr te toi et tourne droite BONG avance nouveau de 3 rotations s arr te puis tourne droite LEO gt BONG avance nouveau de 3 rotations du moteur arr te toi et tourne droite BONG avance de 3 rotations s arr te puis tourne droite LEO gt BONG avance nouveau de 3 rotations du moteur arr te toi et tourne droite BONG avance de 3 rotations s arr te puis tourne droite A votre avis o se trouve maintenant BONG C est exact il est revenu son point de d part Le chemin qu il a suivi est celui d un carr et il attend nouveau mes instructions Si vous deviez crire un programme NXT G pour que BONG se d
81. NXT G Lego Mindstorms Guide pratique de programmation LOOL UDAD EN HATAN OTOETL R ZATy SKI htto web mac com roboleo Roboleo Accueil html Adaptation et traduction partielles de l ouvrage de James Floyd Kelly LEGO Mindstorms NXT G Programming Guide dition Apress http www thenxtstep com Document prot g au titre du code de la propri t intellectuelle droit d auteur NXT G Lego Mindstorms Guide pratique de programmation Table des mati res Le on n 1 INTRODUCTION LA PROGRAMMATION 6 Quelques d finitions Le on n 2 SE DEPLACER 9 Structure et programme Les Blocs dans NXT G Les plots de donn es Les Palettes Bloc Moteur Le on n 3 AFFICHER et PLUS 19 Rappel ici des r gles Afficher Le texte L image Le son Bloc TEXTE Le on n 4 PLOTS et FILS de DONNEES 31 Transmettre des informations Types de donn es Fils de donn es Les capteurs Les flux de donn es Les Donn es Blocs avanc s Exemple d utilit des fils de donn es Le on n 5 OUI ou NON Question pour les capteurs 43 L un ou l autre Quelles sont vos conditions Param trer les capteurs Capteur tactile Capteur Sonore Capteur Photosensible Capteur Ultrasons Bloc Capteur de rotation Bloc Boutons NXT Bloc Minuteur Le on n 6 ATTENDRE et ATTENDRE 59 Document prot g au titre du code de la propri t intellectuelle droit d auteur 19 19 22 25 28 31 36 37 38 39
82. Num rique Nous verrons plus loin comment utiliser ce bloc pour des chemins plus nombreux que 2 Je vais pr sent vous montrer comment configurer le bloc COMMUTATEUR J ai choisi un simple bloc en mode Vue plat cela signifie que j ai seulement 2 chemins possibles pour mon robot Le premier chemin symbole V est sur la partie haute du bloc le 2 me chemin symbole X est sur la partie basse Fig 5 Document prot g au titre du code de la propri t intellectuelle droit d auteur 83 NXT G Lego Mindstorms Guide pratique de programmation t L S Contr le Capteur KE rot i ya sH Capteur Ultrasons JD Comparer n 1 N Distance x 30 I 5 A Ce tre Le 1 Afficher Vue plat 14 Montrer cm Centim tres _ Dans la zone Contr le le champ de saisie offre 2 options Capteur et Valeur J ai choisi capteur puis Ultrasons Les symboles V et X ont disparu cela signifie que l option capteur doit pr ciser lequel des 2 chemins doit correspondre au symbole V valeur VRAI quand le point de d clenchement est atteint Dans cet exemple j ai configur le capteur ULTRASONS de telle sorte qu il d tecte un objet moins de 30 cm Si cette condition est v rifi e alors le bloc COMMUTATEUR ex cutera tous les blocs s il y en a plac s sur le chemin VRAI c est dire le chemin du haut Si cette condition n est pas v rifi e distance sup rieure 30 cm le bloc C
83. OMMUTATEUR ex cutera tous les blocs s il y en a plac s sur le chemin FAUX c est dire chemin du bas Je suppose maintenant que BONG dispose d un capteur ULTRASONS et un capteur SONORE fix s sur sa structure Je lui adresse ce pseudo code suivant LEO gt BONG quand le capteur ULTRASONS d tecte un objet moins de 30 cm tourner gauche si le capteur SONORE rel ve un niveau plus grand que 20 J ai d j configur le premier bloc COMMUTATEUR pour d tecter une distance inf rieure a 30cm cela signifie que la suite de mon programme se placera sur le chemin du haut VRAI puisque cette premi re condition est v rifi e Ensuite je veux que BONG tourne gauche si seulement le capteur SONORE rel ve un son plus grand que 20 Comment traduire cela Simplement en utilisant un 2 me bloc COMMUTATEUR D abord je glisse un autre bloc COMMUTATEUR sur le rayon de s quence sup rieur ainsi en prenant le soin de s lectionner par la suite le bon capteur Fig 6 Document prot g au titre du code de la propri t intellectuelle droit d auteur 84 NXT G Lego Mindstorms Guide pratique de programmation k ET Capteur J KE Pot O1 2 O3 Os Son a 5 20 1 Afficher w 3 Vue plat Ensuite je configure le 2 me bloc COMMUTATEUR pour un point de d clenchement 20 Si cette valeur est d pass e alors la suite du programme c est dire tourner gauche trouvera sa place dans
84. a Port Num rique 1 3 1 A 2 8B 3 C ji t t a le Point de d clenchement Num rique 0 Valeur de r f rence de la 2147483647 comparaison a 4la Direction du point de Logique Vrai Faux Direction utiliser pour la d clenchement comparaison Vrai Avant Faux Arri re a zla Sup rieur Inf rieur Logique Vrai Faux Logique utilis e dans la l comparaison Vrai Sup rieur Faux Inf rieur a a R initialiser Logique Vrai Faux Vrai R initialiser Faux Lire a Jila Oui Non Logique Vrai Faux R sultat de la comparaison l a 4e Direction Logique Vrai Faux Vrai Avant Faux Arri re a vla Degr s Num rique 0 Valeur d chelle lue depuis le capteur Bloc Boutons NXT Ce bloc envoie un signal vrai via un fil de donn es lorsqu un des boutons NXT est activ Vous devez s lectionner le bouton et l action qui enverront le signal vrai Fig 14 Document prot g au titre du code de la propri t intellectuelle droit d auteur 55 NXT G Lego Mindstorms Guide pratique de programmation Boutons NXT BY Bouton Bouton Entr e bouton Gauone Bouton Droite 1 Action 5 Enfonc 4 Rel ch tj Heurt Zone Bouton Indiquer quel bouton NXT envoie un signal vrai lorsqu il est activ Zone Action Choisir Heurt si vous voulez que le bouton NXT soit activ lorsqu il est enfonc puis rel ch rapidement Choisir Enfonc si vous voulez que le bouton soit activ
85. a circonf rence gale un tour de roue s tablit 5 7 x 3 14 approximativement 17 9 cm En reprenant notre exemple de 900 degr s la distance parcourue est 17 9 cm x 3 5 62 65 cm approximativement Remarque La distance parcourue est donc fonction du diam tre de la roue Plus la roue est grande et plus la distance parcourue l est galement Comment d terminer avec suffisamment de pr cision une distance parcourir Il existe une m thode qui vite tous ces calculs manuels N oubliez pas que le NXT est aussi un calculateur et que chaque moteur est galement un capteur gr ce son tachym tre interne Nous allons utiliser ces particularit s en les associant aux blocs NXT G Fig 2 Distance parcourir Premi re m thode 1 Ouvrir un fichier en cours d laboration 2 Allumer le robot Document prot g au titre du code de la propri t intellectuelle droit d auteur 150 NXT G Lego Mindstorms Guide pratique de programmation 3 Brancher le robot au PC c ble USB ou bluetooth 4 Positionner le robot son point de d part 5 S lectionner un bloc MOTEUR dans le programme 6 Dans le panneau de configuration sous l ic ne MOTEUR cliquer sur le bouton R initialiser La valeur z ro 0 appara t dans le champ situ au dessus Fig 3 maian LE Port A B C S Contr le f Puissance moteur sv pme en gt ds 2 y Direction T L F2 Illimit x Action d Attendre ns
86. ages Si un num ro de bo te aux lettres contient d j 5 messages l ajout d un message suppl mentaire forcera le NXT effacer le plus ancien Document prot g au titre du code de la propri t intellectuelle droit d auteur 137 NXT G Lego Mindstorms Guide pratique de programmation Bloc Envoyer un message Ce bloc est disponible dans la palette enti re s rie action C est un bloc actif metteur comme le bloc son ou moteur Fig 10 se se OLIS Envo n un an 57 Connexion 0 1 2 3 de Message Num rique nd kile 1 Boite aux lettres 8 L ic ne pr sente une fl che sortante pr cisant qu il s agit d un d part Pour envoyer un message sans fil lorsque tous les NXT ont re u un num ro de connexion s lectionner tout d abord le num ro de connexion du NXT de destination Choisir ensuite le format du message texte num rique ou logique Entrer le message en tapant du texte ou un nombre ou en choisissant une condition logique vrai ou faux Enfin choisir le num ro de boite aux lettres o le message sera stock sur le NXT de destination Le format du message et le message proprement dit peuvent galement tre d finis l aide de fils de donn es en entr e 1 Utiliser les cases d option pour choisir le num ro de connexion du NXT de destination 2 Le menu d roulant permet de s lectionner le type Texte Num rique ou Logique 3 Entrer le message en tapant du t
87. ain de temps Et que pourrait on trouver dans ces morceaux de programme Par exemple le contr le des roues des messages sonores des calculs interm diaires etc Tous ces morceaux constituent une collection de Blocs NXT G qui seront group s dans Mes Blocs pour tre r utilis s volont dans tous les programmes que vous crirez C est ce que je vais essayer de vous expliquer Pour illustrer le propos nous allons reprendre le programme NXT G figurant en t te de la le on n 7 avec le pseudo code qui l accompagne Figure 1 5 ENT a u F 18 CC S Alimentation SP _75 vous avez besoin d aide i 7 J r Amenez le pointeur de la souris au dessus d un objet pour afficher F 7 Dur e 1 Rotators 5 une infobulle qui explique sa fonction Pour plus d informations cliquez sur le lien Aide suppl mentaire B r Action suivante D Freiner Bo Continuer Aide suppl mentaire 0y LEO gt BONG avance de 3 rotations du moteur arr te toi et tourne droite de 90 degr s BONG avance de 3 rotations s arr te puis tourne droite Document prot g au titre du code de la propri t intellectuelle droit d auteur 121 NXT G Lego Mindstorms Guide pratique de programmation LEO gt BONG avance de 3 rotations du moteur arr te toi et tourne droite de 90 degr s BONG avance nouveau de 3 rotations s arr te puis tourne droite LEO gt BONG avance
88. ange BlueFRITZ AVM BT adapter BlueFRITZ USB v2 0 Document prot g au titre du code de la propri t intellectuelle droit d auteur 133 NXT G Lego Mindstorms Guide pratique de programmation Cables Unlimited KKK USB 1520 Dell TrueMobile Bluetooth Module Dell Wireless 350 Fe Bluetooth Internal Card Dlink DBT 120 di MSI Btoes ds MSI StartKey 3X TS faster TDK GoBlue su Qtrek Bluetooth Dee USB Adapter v2 0 Compatible Bonne performance Non compatible Maigre Performance Mettre plusieurs NXT en communication Vous avez peut tre envisag de mettre votre robot NXT en communication ou en partage d informations avec d autres robots NXT Ou alors si vous poss dez un deuxi me kit NXT vous envisagez d associer une t l commande votre robot afin qu il puisse commander cette seconde brique NXT Pour r aliser ce dispositif vous devez utiliser un couple de blocs NXT G que nous allons tudier dans cette le on Certains trouvent ces blocs compliqu s mais en r alit ils sont simples condition de bien comprendre le concept de base de l exp dition et de la r ception des messages Mais pour utiliser ce concept il est n cessaire d abord de mettre en communication via Bluetooth deux ou plusieurs briques NXT C est ce que je vais tenter de vous expliquer pr sent 1 re tape Vous allez d abord travailler directement sur les menus internes du NXT et les boutons en utilisant
89. appara t sur son cran Document prot g au titre du code de la propri t intellectuelle droit d auteur 43 NXT G Lego Mindstorms Guide pratique de programmation LEO gt BONG Le bouton du capteur tactile est il appuy BONG le mot NON appara t sur son cran Bon j ai l impression d avancer BONG pr f re communiquer avec moi par des Oui et des Non en r ponses mes questions Une autre fa on de dire cela est que BONG pr f re communiquer l aide de r ponses logiques une r ponse logique est tout simplement Oui ou Non Poursuivons notre conversation LEO gt BONG votre capteur UltraSons a t il d tect un objet 20 cm en face de vous BONG gt Vrai LEO gt BONG votre bouton fl che droite set il appuy BONG gt Faux Apparemment les capteurs de BONG savent envoyer une r ponse BONG qui peut son tour me la transmettre BONG coute les r actions des capteurs et r pond par Vrai ou Faux En quoi tout cela concerne t il la programmation Et bien retenez ceci votre robot NXT peut envoyer et recevoir des r ponses logiques partir des capteurs moteurs boutons et autres dispositifs Voici un exemple Fig 1 Nom Type he Action Le Lire Le crire Nombre 1 Num rique j Valeur Vrai gt M Fax A Le bloc Capteur tactile que vous apercevez a son Hub d ploy Lorsque vous survolez l aide de la souris la petite ic ne v x v
90. apteur peut fournir une donn e interne IIS disposent tous d une sortie logique oui non signifiant qu ils peuvent agir diff remment selon certaines conditions propres chacun Un seul dispose d une entr e sortie num rique le minuteur Les flux de donn es On entend par flux les mouvements d informations qui circulent soit l int rieur des blocs soit entre blocs Fig 12 BLOC ATTENDRE CAPTEUR BLOC ATTENDRE TEMPS BLOC ARRETER BLOC BOUCLE BLOC COMMUT ATEUR Comme vous le constatez les plots sont ici peu nombreux et pour certains il faut les d busquer Les plots des blocs DEPLACER ne sont pas d ploy s pour la circonstance Le bloc ATTENDRE param tr sur TEMPS n a aucun plot il en est de m me pour le bloc ATTENDRE param tr sur CAPTEUR Le bloc BOUCLE a un plot sortie et un plot entr e l int rieur de la boucle param tr e partir de son panneau de configuration Ce bloc dispose de nombreuses options il faut cocher la case COMPTEUR pour visualiser le plot sortie Pour le plot d entr e il faut choisir l option LOGIQUE pour qu il apparaisse Document prot g au titre du code de la propri t intellectuelle droit d auteur 39 NXT G Lego Mindstorms Guide pratique de programmation Le bloc COMMUTATEUR n a qu un plot d entr e il est aussi param tr partir de son panneau de configuration Le bloc ARRETER n a qu un plot d entr e et un de sortie Les Donn es Ne
91. ar approximations successives que nous proc derons aux r glages Les constantes sont li es trop de param tres variables pour tre fix es une fois pour toutes En clair il faudra faire des s ries d essais en modifiant les param tres Les personnes averties ont d j compris comment r gler un contr leur PID Pour ma pari n tant pas aussi dou j utiliserai ce qu ils ont appris Il s av re que le relev d un couple de param tres permet de calculer des valeurs pour Kp Ki et Kd avec une pr cision suffisante Peu importe le syst me qui contr le les quations de r glage elles fonctionnent presque toujours correctement Il y a plusieurs techniques pour calculer le Ks l une d entre elles est appel e la M thode Ziegler Nichols c est celle que nous utiliserons Une recherche sur Google offrira de nombreuses pages Web qui d crivent cette technique La version utilis e est extraite de la page de Wiki page on PID Controllers le m me traitement est trouv en beaucoup d autres endroits Il y aura juste une petite modification en ins rant la boucle temps dT dans les calculs figurants dans la table ci dessous Pour r gler votre Contr leur PID suivez ces tapes 1 Fixez la valeur z ro aux constantes Ki et Kd Cela force le contr leur se conduire comme un simple contr leur P 2 Attribuez au terme Tp une valeur la plus faible possible Pour nos moteurs 25 serait une bonne valeur de d but 3 Attrib
92. arger sur BONG Allumez le NXT et connectez BONG votre ordinateur par c ble USB ou Bluetooth puis t l chargez le programme BONG 1 Ce travail accompli s lectionnez sur le petit cran du NXT Software files appuyez sur le bouton rouge et recherchez BONG 1 Appuyez une 2 me fois sur le bouton rouge pour ex cuter le programme On peut d j en tirer quelques enseignements Il a fallut 3 blocs pour traduire le pseudo code Les blocs s ex cutent l un apr s l autre dans l ordre Le programme s arr te quand il n y a plus de bloc 3 me r gle Document prot g au titre du code de la propri t intellectuelle droit d auteur 13 NXT G Lego Mindstorms Guide pratique de programmation Un bloc ne peut accomplir qu une seule t che la fois Il faut autant de blocs que de t ches accomplir Nous allons maintenant d tailler le contenu du bloc Les plots de donn es La plupart des blocs comportent un ensemble d outils de connexion qu on appelle PLOTS de DONNEES IIS sont g n ralement invisibles et il faut les activer pour les rendre visibles Fig 4 Fig 5 Pour faire une comparaison un peut dire qu une armoire lectrique vient de s ouvrir Cette armoire comporte de part et d autre de la zone centrale des bornes sur lesquelles vont se raccorder des fils comme des fils lectriques La seule diff rence avec une installation lectrique c est que ces bornes sont virtuelles et ne const
93. bles Et si ces variables suivent une loi math matique l objet se d placera selon cette loi Et pour donner l illusion du d placement il suffira de cr er une boucle contenant le bloc AFFICHER et relier les plots x et y un pourvoyeur de donn es comme par exemple une distance un niveau de luminosit une valeur al atoire etc EXEMPLE Reliez la brique NXT l aide d un c ble de connexion un capteur US sur le port 4 Nous souhaitons afficher une glissi re mobile proportionnelle la distance mesur e par le capteur Pour les besoins de cet exemple nous limiterons la distance capteur objet 100 cm Le r sultat recherch est le suivant Fig 9 Document prot g au titre du code de la propri t intellectuelle droit d auteur 153 NXT G Lego Mindstorms Guide pratique de programmation a Nous tracerons sur l cran 2 lignes parall les fixes l int rieur desquelles se d placera une barre noire mobile partir du bord gauche qui est l origine La longueur de cette barre sera proportionnelle la distance mesur e par le capteur Le programme qui en d coule ressemble ceci Fig 10 lt DAS NC On efface tout ici confectionner la barre mobile Ces 3 blocs servent _s Ces 2blocsservent a _____ gt On affiche ici la encadrer la barre mobile m On trace 3 lignes accol es partant de la gauche le point final tant fourni par le capteur US Ces 3 lignes forment la barre mobile N import
94. c utilisant le m me nom et le m me type 3 Le MonBloc qui contr le les moteurs PID_LF_MotorControl utilise les variables A motor et B motor pour respectivement les moteurs gauche et droit Les moteurs pr sents contr l s sont A et C pauvre choix pour des noms de variables Il aurait mieux valu les appeler Left_motor et Right_motor Le MonBloc PID _LF_MotorControl prend en entr e la valeur du PID de LF_ PID au port Turn et la puissance moteur cible au port Target calcule le niveau de puissance actuel pour chaque moteur et adresse ces valeurs aux moteurs Si le calcul du niveau de puissance est de signe n gatif il est invers et envoy un Bloc MOTOR pour une rotation invers e le Bloc MOTOR ne comprend pas une puissance n gative signifiant une rotation inverse Les 3 constantes Kp Ki et Kd sont inscrites dans les variables valises De plus les niveaux TargLight et TargPower sont galement inscrits dans leurs valises respectives La valeur TargLight est la valeur moyenne entre le blanc et le noir lus par le capteur Le TargPower est le niveau de puissance moyenne pour les 2 moteurs lorsqu ils se d placent en ligne droite Enfin Document prot g au titre du code de la propri t intellectuelle droit d auteur 183 NXT G Lego Mindstorms Guide pratique de programmation PID_lineFol_4 est le programme principal La boucle principale est calibr e pour un nombre de cycles d termin A
95. cement La premi re astuce que nous utiliserons et qui est sans rapport avec un PID sera de suivre non pas le trac mais le bord du trac Pourquoi Parce que si nous suivons le trac lui m me bande noire alors que le robot s carte de la ligne et que le capteur voit blanc nous ne savons pas de quel c t du trac nous nous trouvons Sommes nous droite ou gauche Mais si nous suivons le bord du trac alors nous pouvons savoir de quel c t nous nous trouvons quand le robot d vie Si le capteur voit blanc alors nous savons qu il s agit du bord gauche Et s il voit noir nous savons qu il se trouve droite du bord On appelle cela un suiveur de ligne gauche left hand line follower Nous avons maintenant besoin de conna tre les valeurs fournies par le capteur quand il voit blanc et quand il voit noir D ordinaire un Capteur Photosensible non calibr donne une valeur de 50 pour un blanc et 40 pour un noir chelle de O 100 Si on repr sente ces valeurs sur une ligne gradu e on pourrait r sumer les lectures de la mani re suivante fig 2 Tourne Tourne gauche droite Noir Blanc 40 45 50 Valeurs lues Capteur Photosensible Document prot g au titre du code de la propri t intellectuelle droit d auteur 161 NXT G Lego Mindstorms Guide pratique de programmation Bien on a donc coup la plage de valeurs en 2 tranches gales et on peut dire q
96. cercle sur le plan une hauteur de 12 mm environ le capteur met une tache lumineuse de m me dimension A cette hauteur la plage proportionnelle est trop grande le capteur devant se maintenir entre 12 mm de part et d autre du bord du trac pour obtenir un r sultat proportionnel satisfaisant Malheureusement il y a deux inconv nient pour une position trop lev e du capteur D abord le capteur voit et r agit l clairage ambiant beaucoup plus que s il se trouve en position basse Ensuite il discerne moins bien les nuances entre le noir et le blanc A une certaine distance il donnera une m me lecture au noir et au blanc 2 l ext rieur de la plage proportionnelle le contr leur provoquera un d placement dans une direction correcte mais sous valu e La r ponse proportionnelle du contr leur est limit e par la plage proportionnelle 2 Virage et niveau de puissance r elle du moteur Comment pouvons nous mettre en oeuvre les virages Quel doit tre le niveau de puissance des moteurs Document prot g au titre du code de la propri t intellectuelle droit d auteur 165 NXT G Lego Mindstorms Guide pratique de programmation Une fa on d envisager les virages consiste d finir un Niveau de Puissance Cible que nous appellerons Tp Tp est le niveau de puissance des deux moteurs quand on suppose que le robot se d place tout droit ce qu il fait quand l erreur 0 Quand l erreur n est pas nulle n
97. cte le rouge le v hicule s arr tera A remarquer qu une seule condition ne peut tre Vrai un moment donn les feux ne pouvant tre en m me temps vert et rouge par exemple Il faudra donc proc der par paire en liminant les incompatibilit s rouge et jaune ne peuvent pas provoquer un d clenchement d action Capteur tactile Fig 4 aa ss n 5 J LE en C Enfonc Rel ch A Heurt Notez que le port de connexion est le 1 par d faut Mais rien ne vous emp che d en choisir un autre Document prot g au titre du code de la propri t intellectuelle droit d auteur 47 NXT G Lego Mindstorms Guide pratique de programmation Si vous acceptez le choix de d faut pour tous les capteurs vous pourrez alors vous constituer une petite biblioth que de programmes r utilisables quels que soient les robots con us condition qu ils soient tous c bl s de la m me mani re Dans la zone Action 3 trois cas sont envisag es remarquer que le choix Heurt signifie Enfonc et Rel ch rapidement moins d une demie seconde entre les deux Ce choix est tr s utile quand il s agit de compter par exemple des impulsions Enfin n oubliez pas qu en survolant l aide de la souris sur les plots vous affichez une bulle pr cisant le type de donn e Fig 5 Le tableau ci dessous pr sente les diff rentes caract ristiques des prises du plot de donn
98. culer la d riv e nous prenons l erreur actuelle et soustrayons l erreur pr c dente Document prot g au titre du code de la propri t intellectuelle droit d auteur 178 NXT G Lego Mindstorms Guide pratique de programmation Pseudo codez pour le contr leur PID Pour ajouter le terme d riv e au contr leur nous avons besoin d ajouter une nouvelle variable pour Kd et une variable pour conserver la derni re erreur Et ne pas oublier que nous multiplions Ks par 100 pour r soudre le probl me des valeurs d cimales Kp 1000 Souvenez vous on emploi Kp 100 aussi il est r ellement gal 10 Ki 100 Souvenez vous on emploi K1i 100 aussi il est r ellement gal 1 Kd 10000 souvenez vous on emploi Kd 100 aussi il est r ellement gal 100 offset 45 Initialisation de trois variables moyenne 45 Tp 50 integral 0 l endroit o nous stockerons notre int grale lastError 0 l endroit o nous stockerons la valeur de l erreur pr c dente derivative 0 l endroit o nous stockerons notre d riv e Loop forever D but de Boucle pour toujours LightValue valeurlueducapteur Quelle est la valeur lue courante du capteur erreur LightValue moyenne calcul de l erreur par soustraction de la moyenne integral integral error notre nouveau terme int gral derivative error LastError calcule la valeur d riv e Virage Kp erreur Ki integral Kd derivative le terme P et le ter
99. cument prot g au titre du code de la propri t intellectuelle droit d auteur 107 NXT G Lego Mindstorms Guide pratique de programmation g aj Plage Minimum Maximum mm iria Le bloc NOMBRE EN TEXTE permet l affichage de la valeur al atoire en passant par le bloc TEXTE qui lui contient une description en A et la valeur convertie en B Un top sonore ponctue l affichage du r sultat La boucle recommence la m me op ration avec une autre valeur al atoire jusqu ce que la fl che droite soit appuy e On termine alors le programme Autre application si vous souhaitez faire voluer votre robot d une mani re ind pendante de votre volont vous programmerez en utilisant ce bloc qui fournira justement une valeur fruit du hasard qui conditionnera ses mouvements voir le on n 8 Comparaison Vous connaissez le vieil adage on ne m lange pas les torchons avec les serviettes Mais parfois cela pourrait tre utile de comparer des objets dissemblables Comme par exemple qui est plus lourd qui est plus grand Votre robot peut aussi faire de m me non pas comparer des objets mais des nombres Et cela gr ce une particularit des bloc NXT G qui manipules des valeurs Logiques Supposons que je vous dise 5 est il plus grand que 3 Votre r ponse est sans aucun doute OUI Lorsque vous programmez votre robot de la m me mani re 5 est plus grand que 3 la r ponse ne peut tre que VRAI ou FAUX VRAI dans
100. d la dent bleue connu pour avoir r ussi unifier les tats du Danemark de Norv ge et de Su de Le logo de Bluetooth est d ailleurs inspir des initiales en alphabet runique de Harald Bl tand En 2008 Le SIG pour f ter les 10 ans de Bluetooth annonce la prochaine g n ration de cette technologie sans fil qui sera capable d assurer des d bits cent fois sup rieurs la version actuelle passant donc de 1 Mb s 100 Mb s soit 12 5 Mo s Cette technologie utilis e dans les t l phones mobiles p riph riques informatiques et autres appareils portables comme les assistants personnels PDA va voir sa vitesse de transmission augmenter dans les ann es venir lui permettant alors d tre utilis e pour les vid os haute d finition et l change de fichiers avec un baladeur MP3 par exemple La nouvelle norme incorporera une technologie radio connue comme l ultra wideband ou UWB Document prot g au titre du code de la propri t intellectuelle droit d auteur 131 NXT G Lego Mindstorms Guide pratique de programmation Quelques explications Revenons en arri re de plusieurs ann es au port s rie notre bon vieux port s rie Il a t invent dans les ann es 60 pour permettre de relier des p riph riques claviers terminaux mat riels de mesures des ordinateurs le RS232 Depuis ce standard de l EIA Electronic Industries Association a t rebaptis en 1991 EIA232 et quelques modifications y
101. d to envoyer dans le menu et choisir Bluetooth unit Trouver et s lectionnez votre appareil puis suivez les instructions Document prot g au titre du code de la propri t intellectuelle droit d auteur 144 NXT G Lego Mindstorms Guide pratique de programmation MAC Click sur l ic ne Bluetooth de la barre de menu puis choisir Envoyer un fichier S lectionnez le NXTmobile jar de votre appareil puis clic sur Envoyer Rechercher votre t l phone dans la liste des appareils et clic sur Envoyer Suivre ensuite les instructions D sinstallation du logiciel NXT Mobile Application Se r f rer au manuel d instructions de votre appareil t l phonique pour d sinstaller le logiciel En g n ral il suffit de supprimer le programme du mobile Se connecter 1 lancer le logiciel NXT Mobile Application de votre portable en navigant vers le dossier le contenant g n ralement games ou Applications D s le lancement le programme cherchera automatiquement les appareils NXT La premi re fois que vous connecterez un nouveau NXT il sera n cessaire de umeler ce NXT et le logiciel NXT Mobile Application Sur le NXT accepter la connexion l aide de la coche mot de passe Sur le Mobile Saisir le mot de passe d faut du NXT tant 1 2 3 4 La fois suivante le logiciel trouvera automatiquement votre NXT vous n aurez alors qu le s lectionner pour se connecter Astuce personnalisez votre NXT et
102. dans le bloc Le plot de sortie droite peut tre raccord un cran mais en v rit il peut tre raccord n importe quel plot d entr e qui accepte une forme Aussi au lieu de raccorder un clavier au plot d entr e du bloc TIROIR j utilise je tire un simple fil reliant le plot de sortie FORME du bloc FORME au plot d entr e PIECE du bloc TIROIR Ouf J esp re que vous avez suivi Et voila le r sultat Je peux aussi raccorder un clavier au bloc TIROIR pour saisir un Nombre une quantit de pi ces Et si j emploie ce clavier pour autre chose que taper des valeurs il refusera syst matiquement la saisie Je peux aussi raccorder un clavier logique l entr e Vide Un clavier logique est un peu sp cial il ne peut fournir qu UNE des 2 r ponses OUI ou NON Pas peut tre ni quelques fois Ce que j aimerais faire avec ce bloc TIROIR c est de le raccorder un cran qui affiche une des deux choses mais pas les deux Remplir le Tiroir d un type de pi ce en pr cisant le nombre de pi ces Document prot g au titre du code de la propri t intellectuelle droit d auteur 34 NXT G Lego Mindstorms Guide pratique de programmation Le tiroir n est pas vide Pour r aliser cela j utiliserai un cran qui affichera le type de pi ce et les quantit s qui remplissent le tiroir Mon dispositif ressemblerait cela Fig 8 Mais avant d afficher le type de pi ce et la quantit j ai besoin d
103. de donn es ne sont pas accessibles La raison est simple quel que soit le type d op ration effectuer le r sultat se trouve dans le plot de sortie et si vous voulez l utiliser vous avez besoin d un fil de donn es raccorder un bloc qui vous permettra de lire le r sultat sur un cran d affichage par exemple Calculs al atoires Imaginons un jeu de 52 cartes battues et tal es faces cach es sur une table et que vous en choisissiez une au hasard Vous avez 1 chance sur 52 de tirer celle que vous avez en main Si vous recommencez la m me op ration vous avez toujours 1 chance sur 52 de tirer n importe quelle autre carte y compris celle d j tir e puisqu elle n a pas t retir e du jeu Voyons autrement l aide d une paire de d s jouer Chaque d en roulant a la facult de monter sur chacune de ses faces une valeur de 1 6 Quand vous lancez une paire de d s sur un tapis les valeurs qui apparaissent sont quelconques Les chances d avoir un 3 sur un d sont les m mes que celles d avoir un 6 Elles ont toutes la m me probabilit Al atoire c est ainsi que l on d signe ce ph nom ne de probabilit Il ne suit aucune r gle aucune logique il est impr visible Votre robot est lui aussi capable de g n rer des nombres al atoires Vous pouvez construire un robot susceptible de lancer une paire de d s virtuels ou de tirer au hasard un nombre entre 1 et 1000 C est ce que nous allons voir maintenant
104. dent puisqu ils sont con us pour r pondre des sollicitations externes comme la lumi re le contact ou le son et transmettent ces r actions au NXT Mais qu en est il des moteurs Et comment un minuteur peut il tre utilis comme entr e ou communiquer ses r actions la brique C est ce que je tenterai d expliquer dans ce qui suit Quelles sont vos conditions Nous commencerons avec ce mot CONDITION Prenons un exemple Les feux de circulation automobiles sont soumis trois conditions ils peuvent tre rouge jaune ou vert Un interrupteur lectrique ne comporte que deux conditions de fonctionnement allum ou teint A partir de ces deux exemples nous allons soumettre BONG quelques pseudo codes LEO gt BONG avance jusqu ce que les feux passent au rouge LEO gt BONG affiche le mot ALLUME sur ton cran jusqu ce que l interrupteur soit en position teint Dans ces deux cas je pr sume que BONG a des yeux et qu il peut voir les feux ou l interrupteur Si BONG n a pas d yeux il faut alors trouver un moyen pour que les feux de trafic ou l interrupteur transmettent leur tat BONG Ils pourraient alors communiquer leurs r actions ou leurs entr es BONG Demander des feux de trafic de fournir une entr e n est pas r aliste mais puisque le NXT est en mesure de recevoir des informations partir des capteurs modifions les pseudo codes LEO gt BONG avance tant que le capteur photosensible
105. difier le nom de d faut MaVariable 1 par une autre expression dans le champ Nom et de s lectionner le type utiliser Fig 10 Document prot g au titre du code de la propri t intellectuelle droit d auteur 99 NXT G Lego Mindstorms Guide pratique de programmation Modifier les variables Cr er supprimer ou modifier des variables a a Liste Nom Type Cr er Supprimer T Nom Quantit 1 Type de donn es Num rique i Fermer Cliquez sur le bouton Fermer Vous venez de cr er une nouvelle variable qui vient s ajouter celles existantes Si vous s lectionnez pr sent dans la palette Compl te le bloc VARIABLE voici ce que verrez Fig 11 qu jet et or a 1 a Logique 1 Logique Nombre 1 Num rique Texte 1 Texte Vous avez cr une variable num rique intitul e Quantit et son nom appara t dans l ic ne du bloc C est une mani re d viter aussi toute confusion dans leur utilisation et leur lecture dans les programmes Remarque cette nouvelle variable n existe que dans le programme en cours Bien vous savez maintenant comment crire et lire des donn es dans une variable ainsi qu en ajouter Nous allons aborder la fa on de les utiliser dans vos programmes Prenons le cas de ce morceau de pseudo code pour BONG LEO gt BONG attendre 3 secondes avant que j appuie sur le le bouton rouge Entr
106. dmise Signification des valeurs Prise ignor e donn es quand a lt la Port Num rique 1 4 1 Port 1 2 Port 2 3 Port 3 4 i Port 4 a ila Point de Num rique 0 255 cm Valeur de r f rence de la comparaison d clenchement 0 100 pouces a zla Sup rieur Inf rieur Logique Vrai Faux Logique utilis e dans la comparaison Vrai Sup rieur Faux Inf rieur a Jala Oui Non Logique Vrai Faux R sultat de la comparaison 1 4 4 a sla Distance Num rique 0 255 cm Valeur d chelle lue depuis le capteur l 0 100 pouces Nous allons pr sent aborder les capteurs dit int gr s c est dire existant par construction dans les moteurs ou dans le NXT Inutile de cherchez dans le kit 8527 ils n existent pas sous la m me forme que ceux d j vus Pour y acc der il n y a qu un seul moyen c est par celui des blocs de programmation Bloc Capteur de rotation Ce bloc compte le nombre de degr s une rotation compl te vaut 360 degr s ou de rotations compl tes selon lequel votre moteur tourne Ce bloc peut envoyer via des fils de donn es le nombre actuel de degr s ou de rotations ainsi qu un signal logique vrai faux qui varie selon que le nombre de degr s ou de rotations est sup rieur ou inf rieur un point de d clenchement Fig 12 Document prot g au titre du code de la propri t intellectuelle droit d auteur 53 NXT G Lego Min
107. dstorms Guide pratique de programmation D J nt gt Action 5 C Lire I R initialis P 51 Comparer T L gt 360 Degr s Le Zone Port choisir le port que le bloc doit surveiller A B ou C Zone Action Indiquer s il s agit de lire la valeur actuelle d un capteur de rotation ou remettre la valeur du capteur z ro Zone Comparer d finir la direction surveiller l aide des cases d option vers l avant ou vers l arri re Important veillez choisir la direction correcte faute de quoi le bloc sera incapable de compter jusqu la valeur de d clenchement Utiliser le menu d roulant pour indiquer si le bloc doit compter le nombre de rotations ou de degr s Entrer la valeur de d clenchement dans la zone de saisie puis utiliser le menu d roulant pour indiquer si la r gion vraie doit tre sup rieure ou inf rieure la valeur de d clenchement La zone jaune de r troaction indique le nombre actuel de rotations enti res ou de degr s Cliquer sur le bouton R initialiser pour remettre le compteur z ro La valeur de r troaction est affich e en texte noir pour les rotations ou les degr s dans la direction positive vers l avant et en texte rouge dans la direction n gative vers l arri re Le point de d clenchement est la valeur pr cise dans une plage de nombres o se produit un changement de conditions Par exemple vous pouvez programmer le robot pour qu il
108. e droit d auteur 82 NXT G Lego Mindstorms Guide pratique de programmation Dans le premier cas les 2 chemins sont visibles le bloc tant fractionn en 2 rayons de s quence s par s par un trait horizontal chacune des parties est associ un symbole V pour VRAI et X pour FAUX On placera les blocs de programmation sur chacun de ces 2 rayons selon les actions envisag es La Vue plat case coch e est limit e 2 chemins uniquement L un est associ au symbole V l autre au symbole X Le symbole V est aussi appel chemin de d faut mais il peut tre modifi Dans le 2 me cas le fractionnement a disparu et les symbole V ou X sont visibles gr ce des onglets Chacun rayon de s quence recevra ses blocs de programmation tout en dissimulant l autre Il suffira de cliquer sur l onglet pour faire appara tre le chemin s lectionn Cet inconv nient est compens par un grand avantage celui de d finir plus de 2 chemins En choisissant le bloc COMMUTATEUR et selon le nombre de chemins envisag s vous devrez d cocher ou non la vue plat Rappelez vous du pseudo code pr c dent o 5 choix taient envisag s Voici quoi ressemblerait le bloc COMMUTATEUR dans ce cas e Valeur zj 2 Conditions K N Es b Num rique vj R A WU N n BB UU N Ea sg Vue plat 1 Comme nous sommes en pr sence de 5 choix on ne peut plus appliquer le type Logique limit 2 choix mais
109. e sur l axe des Y et x la valeur correspondante sur l axe des X La constante m est la pente de cette droite et b est la valeur de Y quand cette droite coupe l axe des Y c est dire quand x est gal z ro La pente se d finit comme une valeur r sultant de la division de l cart y Variation de y par l cart x Variation de x correspondante de 2 points rapproch s pris sur cette droite Si VOUS ne savez pas grand choses sur les droites ou si vous avez oubli je ferai donc un petit rappel en simplifiant le graphique et l quation D abord nous remettrons le centre de notre droite de valeurs lues l Axe des X au z ro C est facile faire Aux valeurs Document prot g au titre du code de la propri t intellectuelle droit d auteur 163 NXT G Lego Mindstorms Guide pratique de programmation extr mes 40 et 50 du niveau lumineux nous soustrairons juste 45 qui est la moyenne de 40 et 50 soit 40 50 2 de toutes les valeurs relev es Nous appellerons ce r sultat l erreur Ainsi si la valeur est 47 nous soustrairons 45 et obtiendrons une erreur 2 L erreur nous donne la valeur s parant notre position jusqu au bord du trac Si le capteur est exactement sur la ligne notre erreur est gale z ro puisque nous soustrayons 45 de toutes nos lectures Si le capteur est enti rement dans le blanc notre erreur est gale 5 et enti rement dans le noir gale 5 Fig 6 Ligne Proportionnelle Virage tn Tourne
110. e 1er onglet correspond au chemin n 1 Je vais pr sent introduire un nouveau bloc ALEATOIRE devant le bloc COMMUTATEUR Ce bloc est un bloc math matique qui ne sert qu g n rer une valeur quelconque au hasard comprise entre 2 bornes maximum et minimum qui en font aussi partie Par d faut ces bornes sont 0 et 100 Nous allons les remplacer par 1 et 3 Ensuite nous tirerons un fil de donn es pour obtenir le r sultat suivant Fig 13 Document prot g au titre du code de la propri t intellectuelle droit d auteur 90 NXT G Lego Mindstorms Guide pratique de programmation Al atoire nr Plage Minimum Maximum A 1 B 3 O 1100 Ce bloc a la particularit de produire une valeur 1 2 ou 3 chaque fois qu il sera sollicit Le z ro ayant t limin c est la raison pour laquelle il ne doit pas se retrouver dans la valeur du chemin n 1 On a rendu coh rent les n de chemin avec leurs valeurs associ es Et maintenant on peut ins rer les blocs DEPLACER dans chaque chemin en fonction de l ordre des onglets Onglet 1 tourner gauche Onglet 2 tourner droite Onglet 3 tout droit Fig 14 Valeur LE Conditions Num rique 5 R Vue plat Et si on souhaite que l op ration se r p te il suffira de placer l ensemble dans une BOUCLE pour toujours Document prot g au titre du code de la propri t intellectuelle droit d auteur 91 NXT G
111. e capteur tactile soit appuy et rel ch puis stop 2 Ok BONG tourne maintenant gauche de 90 3 Bon travail BONG Maintenant recule jusqu ce que le capteur photosensible d tecte un objet noir puis stop 4 Maintenant BONG danse un peu Ce que je veux dire par l c est qu avant de programmer avec NXT G vous devez avoir une id e pr cise de ce que BONG doit faire Et la meilleure fa on de l exprimer c est d crire en simple langage les instructions destin es BONG Document prot g au titre du code de la propri t intellectuelle droit d auteur 9 NXT G Lego Mindstorms Guide pratique de programmation En r sum quand vous crivez un pseudo code vous fa tes 2 choses Vous b n ficiez d une meilleure compr hension du travail que BONG doit accomplir Vous cr ez un enclenchement logique de t ches structure que BONG doit suivre Une derni re remarque pensez ce que chaque instruction destin e BONG soit la plus simple possible LEO gt Simple is beautiful Pour appuyer ce que je viens de dire dites moi quel est l exemple qui vous para t le mieux convenir Exemple 1 BONG avance de 30 cm tourne gauche de 90 puis recule ensuite cherche un objet noir l aide du capteur ultrasons parce que je veux un stop situ trouves cet objet alors tourne droite de 90 et recule de 50 cm OK Exemple 2 BONG avance de 30 cm et stop Maintenant tourne droite de 90 Recule
112. e de tous je partirai d un concept simple faisant appel aux math matiques d une mani re tr s limit e UN PID est un outil assez simple et sa description est facilement comprise par tous ceux qui calculent sans trop de difficult s El ments de base Commen ons par fixer les l ments de base d un robot suiveur de trac fig 1 Document prot g au titre du code de la propri t intellectuelle droit d auteur 160 NXT G Lego Mindstorms Guide pratique de programmation Ce robot sch matiquement repr sent dispose de 2 roues arri res A et B entra n es chacune par un moteur l avant une roue folle Ce dispositif permet une direction diff rentielle en jouant sur la vitesse des 2 moteurs Egalement l avant un capteur photosensible pointant vers le bas de telle sorte qu il ne voit que le support sur lequel il est pos La fl che indique le sens de d placement du robot L objectif recherch est de contraindre le robot suivre un trac mat rialis sur le support par une large bande noire Ce robot suiveur de trac peut tre construit avec un capteur photosensible ou plusieurs si vous en disposez Plus vous installerez de capteurs et meilleure sera cette conduite Dans notre cas nous nous limiterons un seul capteur car m me quip de la sorte notre robot pourra suivre le trac avec pr cision quelle que soit sa forme courbes comprises La seule chose que vous perdrez c est la vitesse de d pla
113. e la propri t intellectuelle droit d auteur 36 NXT G Lego Mindstorms Guide pratique de programmation Logique ne peut tre que OUI ou NON une autre mani re de l exprimer tant VRAI ou FAUX Quand vous programmerez vous appliquerez cette r gle Cinqui me r gle les seules donn es qui peuvent circuler entre les blocs sont du TEXTE des NOMBRES et du type LOGIQUE et seulement ces trois Fils de donn es Nous avons vu que les seules donn es chang es entre les blocs rel vent de trois types Texte Nombre et Logique Cela ne signifie aucunement que tous les blocs manipulent en permanence ces trois types Certains comporteront des plots de texte et logique mais pas de plot de nombre d autres n auront pas d entr es mais peut tre 2 plots de sortie fournissant des donn es num riques Tout d pendra des fonctions attribu es ces blocs Il faudra apprendre tirer des fils de donn es entre les plots sans commettre d erreurs Mais l aussi tranquillisez vous la bonne nouvelle est que NXT G ne vous laissera pas tirer des fils entre deux plots non compatibles par exemple d un plot Texte vers un plot Logique Il r agira par une rupture de fil et celui ci appara tra en pointill sur l espace de travail signifiant la rupture donc l incompatibilit Mieux encore si les liens sont correctement effectu s ils appara trons sous trois couleurs distinctes permettant de reconnaitre le type de donn es fil jau
114. e programme AFFICHER MIEUX vous savez comment faire n est ce pas Cette fois ci vous avez le temps de lire Salut de BONG sur le petit cran C est un peu simpliste mais vous avez appris crire un texte sur l cran Remarque l cran peut recevoir jusqu 8 lignes de texte Si l on souhaite le remplir en totalit il faudra autant de blocs que de lignes soit 8 blocs Document prot g au titre du code de la propri t intellectuelle droit d auteur 21 NXT G Lego Mindstorms Guide pratique de programmation L image LEO gt BONG montre maintenant nos amis que tu as un coeur qui bat Nous allons proc der ainsi Ajoutez la suite des blocs un nouveau bloc Afficher Vous allez modifier le contenu du panneau de configuration et lui donner cet aspect Fig 4 LV He Action Illustration DDG Position pa Bi Afficher Effacer T Fier Heat 0l _E Rester sur Illustration dans la zone ACTION Dans la zone FICHIER rechercher et s lectionnez dans le champ d roulant Heart 01 Ce motif s affiche dans la fen tre de pr visualisation Rappelez vous si j ex cute le programme ainsi je n aurai pas le temps de voir ce coeur il faut donc lui adjoindre un d lai En prenant cette pr caution je ne verrai qu un coeur statique Or je souhaite voir son coeur battre Il faut donc faire de l animation Comment En y ajoutant un autre coeur plus petit avec un autre d lai identi
115. e quel capteur peut traduire de cette mani re des valeurs mesur es Il en est de m me pour les servomoteurs pour lesquels on pourrait traduire les puissances et m me le sens de rotation si l origine se situe non plus au bord gauche mais dans l axe vertical de l cran Le sens positif ou n gatif par rapport cet axe indique alors le sens de rotation du moteur Vous remarquerez cependant le nombre important de blocs AFFICHER n cessaires pour r aliser cette repr sentation graphique A noter galement que seul le premier bloc AFFICHER est coch pour effacer l cran chaque passage de la boucle STOCKAGE PERMANENT DE DONNEES dans la m moire du NXT Il est parfois utile dans certains cas de conserver des valeurs afin de les retrouver pour une autre utilisation soit dans un autre programme soit en r cup ration pour un traitement suivant Pour cela il existe dans la palette enti re avanc du logiciel NXT G un bloc intitul acc s aux fichiers Fig 11 Document prot g au titre du code de la propri t intellectuelle droit d auteur 154 NXT G Lego Mindstorms Guide pratique de programmation v Ecrire Type Texte rermer Supprimer Nom ions PATTES aji Texte Ce bloc permet d enregistrer les donn es du robot dans des fichiers sur la brique NXT Dans la zone Action nous avons disposition 4 modes d utilisation possible Dans la zone Type les donn es pouvant tre stock es
116. econdes le programme se poursuivra ou s arr tera si aucun autre bloc ne suit le bloc BOUCLE Facile non La BOUCLE peut s interrompre si vous annulez le programme mais elle peut aussi tre configur e pour s interrompre si elle rencontre une condition particuli re C est le cas d j cit par exemple d un capteur tactile heurt Une remarque importante s il existe une ou des boucles l int rieur d une boucle principale on parle ici de boucles imbriqu es toutes les boucles internes seront ex cut es avant que l on sorte de la boucle principale Si par exemple une boucle interne a une dur e fix e 40 secondes elle sera ex cut e et la boucle externe fix e 25 sec ne sera pas r p t e Autre remarque dans la zone Montrer une case cocher se trouve pr s de la petite ic ne Compteur Si vous cochez cette case un plot de donn es appara t sur la partie gauche du bloc Vous avez activ le plot compteur qui fournit chaque reprise de la boucle le nombre de r p tition Les valeurs correspondantes sont transmises par le plot gr ce un fil de donn es d autres blocs pour les besoins du programme Option Pour toujours Cette option a d j t vue en d but de la le on et elle est aussi simple que la pr c dente La boucle ne fait que r p ter ind finiment les bloc qu elle contient et ne s arr tera que si le programme est interrompu ou si les piles sont hors service Option Cap
117. ecte cette ligne BONG se pr pare lancer une balle dans une cible attendant que le capteur tactile soit appuy puis rel ch BONG se dirige vers le mur attendant que le capteur ultrasons d tecte ce mur BONG est immobile sur la ligne de d part attendant que le capteur sonore re oive mon mot d ordre aller Avez vous saisi qu attendre est une partie importante de la programmation d un robot Que vos robots seront probablement en attente permanente d un ou plusieurs v nements Cela peut tre l attente d un bouton du NXT appuyer ou quelque chose de comparable aux exemples pr c dents Toutes ces attentes seront traduites par l utilisation du bloc ATTENDRE Bloc ATTENDRE Un des principes les plus importants de ce bloc est qu il interrompra cette attente d s que la condition sp cifique sera r alis e Peu importe le capteur capteurs physiques ou int gr s ils sont tous concern s Quand vous emploierez le bloc Attendre vous devrez imp rativement pr ciser quelle condition doit tre r alis e pour mettre fin cette attente Essayons de comprendre ce fonctionnement en adressant BONG quelques instructions en pseudo code LEO gt BONG avance jusqu ce que quelque chose survienne C est vague non Que signifie quelque chose survienne En fait cela peut tre n importe quoi apr s un d lai de 5 secondes D s que le capteur sonore enregistre un bruit intense D s que le capteur
118. egistrer les valeurs lues noir et blanc du test pad en une seule fois Pour cela on utilise une petite astuce en introduisant une nouvelle variable Number 1 qui recueille directement la valeur lue par le capteur au moment du balayage Comme le capteur se d place Number 1 va recevoir plusieurs valeurs successives annulant chaque fois la pr c dente Il faut donc trouver le moyen de conserver la valeur la plus basse avant qu elle ne soit remplac e par la valeur haute Pour cela on compare bloc commutateur Number 1 d abord avec HighLigth qui contient 10000 Si HighLigth est inf rieur Number 1 alors on remplace 10000 par Number 1 Puis on passe au 2 me bloc commutateur en comparant Number 1 avec LowLight qui contient 10000 Si LowLigth est sup rieur Number 1 alors on remplace 10000 par Number 1 Cette boucle est contr l e par le capteur de rotation du moteur Quand le moteur termine ses 180 de rotation on quitte la boucle Fig 8 Partie 2 A la sortie de la boucle le robot s arr te puis l g re attente avant de proc der au calcul de la demi somme qui est stock e dans une 4 me variable appel e MidLight Ce travail r alis le robot reprend sa rotation en sens inverse pour revenir vers le trac Fig 9 Partie 3 Document prot g au titre du code de la propri t intellectuelle droit d auteur 171 NXT G Lego Mindstorms Guide pratique de programmation Calculate the value halfway between the
119. ellectuelle droit d auteur 30 NXT G Lego Mindstorms Guide pratique de programmation gt Lecon n 4 PLOTS et FILS de DONNEES De nombreuses questions pos es par les utilisateurs de NXT G concernent les Plots de Donn es et cela avec raison Les plots de donn es d un Bloc peuvent semer la confusion surtout quand le bloc pr sente plusieurs options D o certaines difficult s pour tirer les bons fils et pour assurer des connexions correctes Nous allons faire une pose dans l tude de la programmation des blocs NXT G et j essaierai de vous donner quelques astuces pour mieux utiliser ces sp cificit s que constituent les Plots et les Fils de donn es Transmettre des informations Voici pour commencer un bloc de programmation factice que j appelle Bloc de FORME Fig 1 CUBE Ce bloc imaginaire est le plus simple que vous puissiez rencontrer Il ne contient qu UNE seule forme un CUBE Un cube et rien d autre et il n existe aucun moyen pour changer cette forme Mais il y a encore pire ce bloc ne dispose d aucun dispositif pour partager cette forme avec un robot C est un bloc vraiment stupide ennuyeux et inutile Que pourrait on faire pour qu il puisse nous rendre service Bien d abord le rendre capable de changer de FORME Celle que je pr f re c est la SPHERE Aussi j aimerai bien qu il puisse remplacer le CUBE par la SPHERE Pour l instant je ne souhaite rien faire d autre que ce changement ce
120. eneur de messages un peu comme un bloc Variable Fig 12 Em 18 a a q R ts B GAS Lod 6 6 6 6 WW a ue RA SE TA un message LA Message Texte Comparer g HP Bo te aux lettres 1 j L ic ne pr sente une fl che entrante pr cisant qu il s agit d une arriv e Document prot g au titre du code de la propri t intellectuelle droit d auteur 139 NXT G Lego Mindstorms Guide pratique de programmation Pour recevoir un message sans fil fixer le type et le num ro de bofte aux lettres afin qu ils correspondent ceux du NXT source La sortie de ce bloc peut tre le message entrant ou une valeur logique vrai faux si on compare le message entrant un message de test R ception d un message Pour recevoir un message sans fil lorsque tous les NXT ont re u un num ro de connexion indiquer tout d abord le format du message entrant texte num rique ou logique Si vous voulez d finir un test qui v rifie si un message pr cis a t re u ce qui am ne le bloc Recevoir message envoyer un signal vrai entrez le texte ou le nombre de test dans la zone de saisie ou s lectionnez l option Vrai ou Faux Si le message entrant correspond au message de test le bloc envoie un signal vrai via sa prise V x 1 Le menu d roulant permet de s lectionner le type Texte Num rique ou Logique du message re u 2 Si on so
121. entre le robot et un obstacle Si la distance est inf rieure 40 cm condition VRAI il prend le chemin du haut et tourne gauche Si la distance est sup rieure 40 cm chemin du bas il se contente de ne rien faire et passe la main Le bloc COMMUTATEUR ayant accompli sa t che on passe au bloc suivant qui est en fait la BOUCLE on recommence donc le processus Le robot va continuer avancer jusqu trouver un nouvel obstacle et ainsi de suite Ce programme tr s simple permet un robot d viter en permanence un obstacle plac devant lui Dans cet exemple le robot tourne toujours gauche nous verrons plus tard comment lui laisser d cider de tourner gauche ou droite 2 choix possibles Remarque Le chemin du bas tant de fait vide il est plus commode pour la lecture du programme de d cocher la case Vue plat Le graphique y gagne en clart Les moteurs relatifs cet exemple ont t mont s l envers d o le sens invers de marche Tenez en compte en cas d emploi pour vos robots Multiples d cisions Voyons pr sent comment votre robot peut d cider pour un plus grand nombre de choix Il existe des tas de situations ayant plus de 2 options non Aussi je prendrai un autre exemple pour BONG Fig 9 Document prot g au titre du code de la propri t intellectuelle droit d auteur 87 NXT G Lego Mindstorms Guide pratique de programmation A pz Le pseudo code LEO gt BONG en ar
122. er Peu importe sa nomination ou ce qu il repr sente nous devons toujours trouver la valeur correcte en grande partie par t tonnement Nous avons donc supprim l l ment temps pour le terme int grale avec la seule restriction qu toutes les tapes les dT sont constants gardent la m me valeur L int grale a une m moire d l phant Un dernier d tail devrait tre mentionn au sujet de l int grale D ordinaire l int grale tend vers z ro c est dire qu elle ne contribue en rien au contr leur puisque des valeurs d erreur cumul es qui sont de signes oppos s pour la plupart d entre elles sont d ja rassembl s dans int grale Par exemple si apres plusieurs cycles les erreurs respectives sont gales 1 2 2 3 2 1 cela donne une int grale de 11 Mais l erreur au dernier cycle de donn es n est seulement que 1 valeur qui est beaucoup plus petite que l int grale en ce point La seule fa on pour l int grale de tendre vers z ro est d obtenir une suite d erreurs n gatives pour contre balancer la suite pr c dente d erreurs positives et atteindre cette limite Par exemple si les prochaines erreurs sont 2 2 3 alors l int grale baissera de 11 4 et nous aurions toujours besoin de plus d erreurs n gatives pour atteindre z ro De plus l int grale demande que l erreur totale soit galement r partie entre des erreurs positives et n gatives Si un v nement d vie notre robot vers la gauche du bord du trac
123. er les valeurs lues par le capteur de lumi re pour le blanc et le noir De ces deux valeurs nous pouvons calculer la moyenne c est dire quelle valeur soustraire celle d une lumi re brute lue pour convertir l ensemble en valeur d erreur La moyenne est la demi somme des lectures blanc et noir Pour la simplicit on supposera que cette moyenne a d j t mesur e et stock e dans une variable appel e moyenne Une correction int ressante consisterait faire calculer la moyenne par le robot partir des mesures lues niveaux blanc et noir Nous aurons aussi besoin d un emplacement de stockage pour la constante K nous l appellerons Kp de constant pour le contr leur proportionnel Ainsi qu une valeur de d part pour Kp II y a plusieurs fa ons pour l obtenir par t tonnement puis corrections successives de l erreur Ou alors vous pouvez essayer d valuer une valeur bas e sur les caract ristiques du capteur et du robot Nous appliquerons cette derni re m thode Nous utiliserons un Tp niveau de puissance cible de 50 quand l erreur est gale z ro les deux moteurs fonctionneront au niveau 50 La plage d erreur se situe entre 5 5 Nous supposerons que la puissance variera de 50 0 quand l erreur passera de 0 5 Cela signifie que Kp la pente souvenez vous la variation de y divis e par la variation de x correspondante est Kp 0 50 5 0 10 Nous utiliserons la valeur 10 de Kp pour convertir une
124. er virtuel qui est rang en m moire Une information peut tre ue partir d un dossier virtuel rang en m moire Ces dossiers virtuels sont g n ralement connus sous le nom de variables Une variable NXT G ne peut recevoir que 3 sortes de donn es Texte Nombre et valeur Logique OUI NON Vous avez d j vu cela n est pas Et bien c est la m me chose pour les variables Un Texte est facile comprendre LEO a demand BONG de ranger roue et engrenage il aurait t aussi simple de lui dire de ranger la lettre A ou la phase Mon nom est BONG Document prot g au titre du code de la propri t intellectuelle droit d auteur 93 NXT G Lego Mindstorms Guide pratique de programmation Pour les Nombres c est un peu diff rent quand un NXT G bloc VARIABLE est param tr pour recevoir un nombre ce ne peut tre qu un nombre entier positif ou n gatif Les nombres comme 8 5 ou 16 7 seront arrondis l entier le plus proche 8 et 17 ici Les valeurs Logiques n ont que 2 choix VRAI ou FAUX Un bloc VARIABLE NXT G param tr pour recevoir une valeur Logique ne peut contenir seulement que VRAI ou FAUX et rien d autre Bien voyons pr sent quoi ressemble le bloc VARIABLE Il est situ dans la palette Compl te au d velopp de l ic ne Donn es Fig 1 O0 B Nom Type Nombre 1 Num Erique Texte 1 Texte J ai signal plus haut qu une valeur pouvait tre crite dans
125. erai 2 blocs LOGIQUE et le r sultat de chacun sera envoy sur un 3 me bloc LOGIQUE qui fournira le r sultat final Compliqu Un peu en effet Mais quand vous utiliserez ce bloc commencez par l associer aux BOUCLES et aux blocs COMMUTATEURS pour donner au robot de meilleures et plus larges possibilit s de d cision Document prot g au titre du code de la propri t intellectuelle droit d auteur 120 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 11 Mes BLOTS MOI Nous abordons ici une partie des plus int ressantes de la programmation NXT G celle qui vous permet d largir consid rablement vos palettes de blocs Parmi toutes les palettes notre disposition il en est une que nous n avons pas encore examin pour cela vous allez choisir la palette personnalis e puis survoler l ic ne Mes Blocs Vous ne voyez pas grand chose n est ce pas En effet Mes Blocs ne contient aucun bloc Et pour cause parce que ce sont les v tres ceux que vous n avez pas encore cr s mais que vous allez cr er Et pourquoi cr er des blocs dans Mes Blocs Parce que vous avez constat en crivant vos programmes NXT G que certaines parties pouvaient tre r utilis es telles quelles dans des programmes diff rents Et que les r crire chaque fois c tait souvent du copier coller pour viter aussi de commettre des erreurs Alors pourquoi ne pas utiliser un moyen de simplification et de g
126. es du bloc Capteur tactile Prise Type de Plage Signification des valeurs Prise ignor e donn es admise quand a lt la Port Num rique 1 4 1 Port 1 2 Port 2 3 Port 3 4 Port 4 a mE Action Num rique 0 2 0 Enfonc 1 Rel ch 2 Heurt 2 HA Oui Non Logique Vrai Faux R sultat de la comparaison a la Valeur Num rique 0 1024 Valeur brute sans mise l chelle lue depuis le _ brute capteur Ce tableau est extrait du Menu Aide du logiciel NXT G et il r sume les valeurs transitant par les plots reli s par des fils de donn es Capteur Sonore Ce bloc est un d tecteur de sons Il peut via des fils de donn es envoyer le niveau sonore actuel ainsi qu un signal logique vrai faux qui varie selon que le niveau sonore actuel est sup rieur ou inf rieur un point de d clenchement Fig 6 51 Comparer ul mms 111 G Document prot g au titre du code de la propri t intellectuelle droit d auteur 48 NXT G Lego Mindstorms Guide pratique de programmation Le port de connexion de d faut est le 2 Le point de d clenchement est la valeur pr cise dans une plage de nombres o se produit un changement de conditions Par exemple vous pouvez programmer votre robot pour qu il n avance que si le niveau sonore d passe 40 Le point de d clenchement vaut dans ce cas 40 Dans la zone Comparer vous choisissez une plage de valeurs de 1 100 l aide de la gliss
127. es r seaux ou de relier entre eux de nombreux ordinateurs sur le site officiel Bluetooth http www bluetooth com vous y trouverez beaucoup d informations utiles Les fonctionnalit s Le NXT est donc quip d un dispositif Bluetooth et pour communiquer sans fil il a besoin d un dispositif semblable install chez ses correspondants Cela signifie entre autre que l ordinateur doit en tre pourvu Dans le cas contraire il est possible d acqu rir une cl sp ciale qui se branche sur un port USB de l ordinateur acquisition sur le site de LEGO En utilisant bluetooth vous pouvez changer des programmes entre plusieurs NXT vous pouvez tablir des connections sans fils entre votre robot et votre ordinateur tester les programmes imm diatement m me si votre robot se trouve l autre bout du local Si vous disposez d un t l phone portable quip d un dispositif bluetooth vous pouvez l utiliser pour contr ler votre robot et m me l employer comme un capteur perfectionn tel que capteur d images Document prot g au titre du code de la propri t intellectuelle droit d auteur 132 NXT G Lego Mindstorms Guide pratique de programmation Il existe diverses applications mobiles aussi je vous invite consulter le site LEGO vous y trouverez des id es et des tutoriaux tr s utiles Pour r sumer les capacit s du NXT se d finissent ainsi Peut tre connect jusqu 3 appareils en m me temps mais
128. et active le capteur ultrasons Stop quand tu trouves un objet noir e Tourne droite de 90 puis stop Maintenant recule de 50 cm et stop Vous avez trouv Bien s r c est le 2 1l faut dire que m me un humain serait perplexe avec le 1 Plus les instructions seront simples et courtes et plus il vous sera facile de les traduire en NXT G Les Blocs dans NXT G Reprenons le pseudo code 3 ci dessus Maintenant recule jusqu ce que le capteur photosensible d tecte un objet noir puis Stop Si je programme en NXT G et si les outils me sont familiers je constate que certains collent parfaitement avec mon pseudo code Quand je demande BONG de reculer il utilisera ses moteurs non Bien j utiliserai alors un outil qui s appelle un bloc DEPLACER Ce bloc D PLACER va me permettre de programmer la rotation des moteurs et des roues en sens inverse et BONG reculera Je veux que BONG recule seulement jusqu ce le capteur photosensible d tecte la couleur noir J emploierai l outil bloc Capteur PH OTOSENSIBLE qui r agit la lumi re Ce bloc sera programm pour d tecter la couleur noir Enfin je veux que BONG stoppe quand le bloc capteur d tecte la couleur noir J utilise pour cela nouveau un bloc DEPLACER qui dira aux moteurs d arr ter la rotation Vous utiliserez ces blocs et bien d autres pour programmer correctement BONG et les autres robots En conclusion retenez de cela Document prot g au
129. exte ou un nombre selon le format choisi Texte ou Num rique ou utiliser les cases d option pour choisir une valeur logique vrai ou faux 4 Choisir le num ro de bo te aux lettres sur le NXT de destination Document prot g au titre du code de la propri t intellectuelle droit d auteur 138 NXT G Lego Mindstorms Guide pratique de programmation Le bloc Envoyer message peut tre contr l de mani re dynamique en connectant son plot de donn es des fils de donn es provenant des plots de donn es d autres blocs Fig 11 Le tableau ci dessous pr sente les diff rentes caract ristiques des prises du plot de donn es du bloc Envoyer message Prise Type de Plage admise Signification des valeurs Prise ignor e donn es quand Connexion Num rique Num ro de connexion de destination du message Si vous choisissez 0 les messages seront envoy s du NXT esclave au NXT ma tre Bo te aux Bo te aux lettres du destinataire o le message sera plac lettres Texte Texte 58 caract res au Message envoyer Le type de message maximum n est pas Texte Num rique Num rique 2147483648 Message envoyer Le type de message 2147483647 n est pas Num rique Logique Logique Vrai Faux Message envoyer Le type de message n est pas Logique Bloc Recevoir un message Ce bloc est disponible dans la palette enti re s rie capteur Il fait donc partie de cette famille et se comporte comme un cont
130. ez une autre option J ai choisi cette option et le bloc fournira la r ponse par le plot de sortie du r sultat Vous remarquerez aussi que le bloc COMPARER dispose de 2 plots d entr e Je vais raccorder par un fil de donn es chacun de ces 2 plots a un plot de chaque bloc NOMBRE EN TEXTE Si nous revenons maintenant au pseudo code BONG doit m afficher le mot VRAI ou FAUX selon les valeurs fournies par le bloc ALEATOIRE et v rifier l expression A plus grand que B Pour accomplir cette t che je vais ajouter un bloc COMMUTATEUR Fig 9 Document prot g au titre du code de la propri t intellectuelle droit d auteur 110 NXT G Lego Mindstorms Guide pratique de programmation Afficher s Vue plat Vrai Dans le panneau de configuration j ai choisi Valeur et Logique et d coch Vue plat J ai de plus tir un fil de donn es entre le plot de sortie du bloc COMPARER et le plot d entr e du bloc COMMUTATEUR Je dois maintenant d cider de ce qu il adviendra lorsque le bloc COMMUTATEUR recevra un signal VRAI ou FAUX du bloc COMPARER Je veux lire le mot VRAI si l expression est v rifi e Je vais donc placer un bloc TEXTE contenant le mot VRAI Mais pour rendre ce mot visible sur l cran je vais ajouter un autre bloc AFFICHER en d cochant Effacer en bout du rayon de s quence principal puis tirer un fil de donn es vers le bloc TEXTE Pour compl ter l exemple je proc derai de la
131. g au titre du code de la propri t intellectuelle droit d auteur 123 NXT G Lego Mindstorms Guide pratique de programmation Les possibilit s sont infinies En utilisant ce concept je peux cr er de nombreuses collections de blocs NXT G destin s des actions sp cifiques Regroup s en paquets dans Mes Blocs ils sont en permanence r utilisables Au bout d un certain temps votre collection s enrichira et de plus vous conomiserez du temps en vitant de r crire certaines modules comme faire un demi tour avancer de 2 rotations etc Nous allons pr sent aborder la cr ation de ces blocs Cr ation des Mon Bloc s La premi re tape consiste crire les actions r p titives qui seront regroup es dans un Mon Bloc 1 Cr ez un nouveau programme NXT G Dans l espace de travail positionnez les blocs qui composeront une action Dans notre cas nous l avons vu 2 blocs D PLACER 3 rotations virage droite de 90 degr s Cette action sera r p titive donc r utilisable 2 S lectionnez ces 2 blocs plusieurs fa ons de proc der la plus facile consiste les inclure dans un rectangle de s lection Figure 5 ent LL L net UU S S On peut aussi s lectionner chaque bloc en maintenant la touche MAJ appuy e 3 A pr sent dans la barre de menu d ployez Edition et choisissez Cr er un nouveau bloc Mon bloc Figure 6 Document prot g au titre du code de la propri t
132. g 6 Document prot g au titre du code de la propri t intellectuelle droit d auteur 97 NXT G Lego Mindstorms Guide pratique de programmation Pour la variable Nombre 1 les valeurs accept es dans le champ valeur sont des nombres entiers positifs ou n gatifs Pour la variable Texte 1 vous pouvez taper des mots des phrases ou des paragraphes entiers dans le champ de saisie valeur Apr s avoir modifi les donn es dans un bloc VARIABLE vous pouvez soit conserver la variable en s lectionnant lire dans la zone Action cela prot ge les donn es de toute fausse manoeuvre soit quitter le bloc en l tat Si vous choisissez Ecrire dans la zone Action vous pouvez alors tirer un fil de donn es entre un autre bloc et le plot d ENTREE du bloc VARIABLE veillez choisir le type de donn es compatible avec le bloc pourvoyeur de donn es logique nombre ou texte Revenons maintenant a notre pseudo code du d but LEO gt BONG Voulez vous ranger les mots roue et engrenage dans votre m moire LEO gt BONG j ai aussi besoin que vous rangiez les nombres 120 et 70 dans votre m moire LEO gt BONG voulez vous ranger un VRAI logique et un FAUX logique dans votre m moire Voyez vous le probl me J ai 2 zones de texte et 2 valeurs stocker Je sais d j qu un bloc VARIABLE ne peut ranger qu une seule donn e Si je range le nombre 120 par exemple dans la variable Nombre 1 o vais je ranger
133. guant avec d autres blocs tels que Boucle Attendre et Commutateur Nous verrons plus tard comment utiliser les Boucles pour r p ter certaines t ches Gr ce a cet outil vous accomplirez des r p titions l infini jusqu au moment o vous d ciderez d arr ter le programme Mais vous pourrez aussi configurer une boucle de telle sorte qu elle s interrompe quand certaine condition est rencontr e Par exemple si le capteur photosensible d tecte un niveau lumineux inf rieur 20 ou le capteur sonore d tecte un bruit sup rieur 80 ou peut tre un moteur ayant subit une rotation sup rieure 20 degr s capteur de rotation Il en sera de m me avec les blocs Attendre et Commutateur qui donneront vos robots les pouvoirs de d cision Avant de nous quitter provisoirement retenez cette nouvelle r gle 6 me r gle Les blocs de programmation ne peuvent r pondre qu une condition la fois en ne fournissant qu un type de r ponse logique Vrai ou Faux Il faut autant de blocs que de conditions satisfaire Document prot g au titre du code de la propri t intellectuelle droit d auteur 58 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 6 ATTENDRE et ATTENDRE Ce que fait votre robot le plus utilement c est attendre Oui vous m avez bien lu Vous ne me croyez pas alors voyons les choses diff remment BONG se dirige vers une ligne noire trac e au sol attendant que le capteur d t
134. guration suivante Attendre que le Moteur A accomplisse une demie rotation 180 degr s en marche arri re Quand cette action est accomplie le moteur A s arr te Bloc Attendre Capteur Minuteur S Contr le Capteur zj Minuteur 2 z SH Capteur C Minuteur 5 He Action lt p gol 15 Il est repr sent ci dessus avec la configuration suivante attendre jusqu ce que le Minuteur 2 d passe 15 secondes Tous les Minuteurs se d clenchent d s le d marrage du programme et le minuteur 2 attendra que 15 secondes soient coul es avant de poursuivre le programme Tant que cette valeur n est pas atteinte BONG avance D s que cette valeur est atteinte les moteurs B et C s arr tent et BONG n avance plus Vous apprendrez plus tard comment remettre z ro les minuteurs sachez pour l instant qu il y a 3 Minuteurs Minuteur 1 Minuteur 2 et Minuteur 3 et que tous les trois commencent compter d s le d marrage du programme Et maintenant laissez moi vous poser une question Vous savez comment faire attendre votre robot mais savez vous comment lui faire ex cuter et r p ter encore et toujours d autres actions Pour faire cela vous emploierez un nouveau bloc le bloc BOUCLE C est ce que nous verrons dans une prochaine le on Document prot g au titre du code de la propri t intellectuelle droit d auteur 64 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 7 BOUC
135. i re ou en entrant une valeur dans la zone de saisie Pour d finir la plage au dessus ou en dessous du point de d clenchement qui g n rera le signal vrai utilisez les cases d option ou le menu d roulant La partie vrai de la plage est color e et la partie faux est gris e Par d faut le bloc Capteur sonore est param tr pour qu un niveau sonore sup rieur 50 g n re un signal vrai Le bouton d option droite de la plage est activ e et la glissi re est r gl e sur 50 Pour activer les parties vraies de la plage d finir les valeurs sous 50 comme tant vraies activez le bouton d option de gauche Astuce r glage du point de d clenchement pour un capteur sonore Si vous voulez qu un applaudissement sonore g n re le signal vrai applaudissez plusieurs reprises et observez les valeurs de niveau sonore affich es dans la zone jaune de r troaction Si vos applaudissement g n rent des niveaux sonores d environ 80 fixez la valeur de d clenchement 70 Ce faisant seuls les niveaux sonores au del de 70 comme vos applaudissements g n reront un signal vrai Les sons moins forts seront ignor s Le point de d clenchement peut galement tre d fini de mani re dynamique via un fil de donn es en entr e Fig 7 Le tableau ci dessous pr sente les diff rentes caract ristiques des prises du plot de donn es du bloc Capteur sonore
136. i on corrigera souvent un contr leur P ou PD qui conserve une erreur constante l quilibre Cela suppose que vous vous souciez m me d une petite erreur restante alors que le robot suit le trac Cela se traduit par une petite correction d un c t ou d un autre par une petite valeur Chapitre 5 un programme complet d un contr leur PID Pour un robot suiveur de trac muni d un simple capteur lumineux Nous abordons enfin l laboration du programme en NXT G Rappelons rapidement les caract ristiques du dispositif Ce contr leur est un suiveur de ligne gauche left hand line follower et dispose d un moteur gauche et un moteur C droite Le capteur lumineux est connect au port 2 Nous utiliserons 4 programmes NXT G pour r soudre le probl me 3 MonBlocs qui devront tre rang s dans la palette perso songez les installer Un Programme principal qui contiendra ces 3 Monblocs 1 Le MonBloc PID_ LF _Calib mesure le niveau lumineux maximum and minimum et calcule le niveau de gris d j vu au chapitre 2 Ce Bloc peut tre supprim et la valeur gray crite directement dans la variable TargLight 2 Le MonBloc LF_PID effectue les calculs du PID En entr e on trouve l erreur courante et en sortie la correction du niveau de puissance des moteurs intitul PID Les Ks sont envoy s au bloc LF_PID comme des variables globales variables d finies la fois dans le programme principal et dans le MonBlo
137. ici 784 et 890 Faire la demi somme soit 784 890 x0 5 837 Document prot g au titre du code de la propri t intellectuelle droit d auteur 151 NXT G Lego Mindstorms Guide pratique de programmation LE Por OA OB c M Alimentation S m 75 Direction OF OL 09 2 Dur e 1 Rotations 5 G Diriger c t 8 fe Action suivante Freiner O PY Continuer 9 9 Noter la couleur des caract res noir sens positif rouge sens n gatif 10 Reporter la valeur 837 dans la zone Dur e du panneau de configuration en degr s Utilisation de l cran NXT L cran LCD a une r solution horizontale de 100 pixels et une r solution verticale de 64 pixels Cela signifie qu on peut placer 100 petite points horizontaux sur chaque ligne et 64 verticaux sur chaque colonne l int rieur de l cran Cela fait donc au total 6400 points Lorsque tous ces points sont plac s la totalit de l cran est noir Pour positionner ces points on adopte une convention qui consiste choisir deux axes de coordonn es perpendiculaires axe des x et axe des y Par d finition l origine de positionnement se trouve en haut et gauche de l cran Les valeurs partent de z ro 0 et croissent vers la droite jusqu 99 pour les x de z ro 0 et descendent jusqu 63 pour les y Un point quelconque est donc caract ris par sa position en x et sa position en y Par exemple un point 20 12 se situe sur la 21
138. ici la valeur A par rapport une s rie d autres valeurs comprises entre B et C pour en d duire une relation logique VRAI ou FAUX Le NXT G dispose cet effet d un bloc particulier que nous allons maintenant aborder Bloc PLAGE Tout comme le bloc COMPARER ce bloc r pond la r gle suivante le r sultat obtenu se pr sente sous la forme Logique VRAI ou FAUX Fig 11 Document prot g au titre du code de la propri t intellectuelle droit d auteur 112 NXT G Lego Mindstorms Guide pratique de programmation Plage Hi Op ration Dans a plage x aj 25 Hd 8 75 0 J g p 1100 H Valeur de test 50 Le bloc PLAGE poss de un plot de donn es avec trois ports d entr e gauche et quatre ports de sortie droite Les ports d entr e peuvent tre connect s d autres blocs l aide de fils de donn es sauf si un ou plusieurs des ports d entr e re oit un nombre que vous entrez La sortie Logique du bloc sera transmise partir de la prise de sortie inf rieure laquelle vous devez connecter un fil de donn es reli au plot de donn es d un autre bloc Les trois prises de sortie en face des prises d entr e permettent si n cessaire de transmettre les nombres en entr e d autres blocs La valeur de test peut tre tap ou fourni de mani re dynamique par un fil de donn es La zone de test est gris e si un fil de donn es est connect Les limites inf rieure et sup rieure peu
139. ille humaine ne peut pas entendre On peut citer par exemple les sons fr quences lev es auxquels les chiens sont sensibles Tous les sons dans ce cas sont mesur s d une mani re identique La mesure des niveaux de pression tant d une grande complexit qu il est impossible d aborder ici les valeurs du capteur sonore sont affich s sur l cran du NXT en pourcentages A titre d exemple 4 5 correspond un local silencieux Un relev de 5 10 s obtient si une personne parle une certaine distance de l appareil 10 30 correspond une conversation normale proximit du capteur ou de la musique d ambiance volume normal Enfin on obtient des relev s de 30 100 si des personnes crient ou si de la musique est diffus e un volume lev Capteur Photosensible Ce capteur d tecte la lumi re ambiante avoisinante Il peut via des fils de donn es envoyer la valeur actuelle correspondant la luminosit mesur e ainsi qu un signal logique vrai faux qui varie selon que la valeur actuelle de la luminosit est sup rieure ou inf rieure un point de d clenchement Fig 8 qu or ou D De sur aw Lumi re gt 50 F Fonction 7 G n rer de la lumi re Le port de connexion de d faut est le 3 Le point de d clenchement est la valeur pr cise dans une plage de nombres o se produit un changement de conditions Par exemple vous pouvez programmer votre robot pour qu il n avance
140. indstorms Guide pratique de programmation entrer dans le programme Une fois Kp multipli par 100 nous pouvons maintenant entrer ce qui aurait t 1 3 comme 130 130 n a aucun point d cimal donc NXT G y trouve son compte Mais cela ne complique t il pas le calcul Oui mais il est facile de corriger Une fois que nous avons calcul le terme de P nous le diviserons par 100 pour faire dispara tre notre multiplicateur Rappelez vous notre quation qui d finit le contr leur P Virage Kp erreur Nous multiplierons Kp par 100 ce qui signifie que notre Virage calcul est 100 fois plus grand que cela devrait tre Aussi avant d utiliser Virage nous devons le diviser par 100 pour rectifier Ainsi notre nouveau pseudo code sera modifi de la mani re suivante Kp 1000 Souvenez vous on emploi Kp 100 aussi il est r ellement gal 10 offset 45 Initialisation de trois variables moyenne 45 Tp 50 Loop forever D but de Boucle pour toujours LightValue valeurlueducapteur Quelle est la valeur lue courante du capteur erreur LightValue moyenne calcul de l erreur par soustraction de la moyenne Virage Kp erreur le terme P de combien veut on modifier la puissance du moteur Virage Virage 100 Souvenez vous pour annuler l effet du facteur 100 dans Kp powerA Tp Virage niveau de puissance pour le moteur A powerCc Tp Virage niveau de puissance pour le moteur C MOTOR A direction forward
141. ion et division Fig 2 Bloc MATH Le type d op ration est s lectionn partir du champ de saisie Ils se comportent tous de la m me fa on Ce bloc emploie 2 valeurs num riques et B Ces valeurs peuvent tre positives n gatives et seulement en entier Cela signifie que les valeurs d cimales ne sont pas accept es Si vous tentez d crire une valeur comme 5 3 ou 8 7 le bloc MATH arrondira cette valeur la valeur enti re la plus proche soit 4 et 9 pour notre exemple Le menu d roulant permettant de choisir l op ration donne ceci Addition A et B sont additionn s Soustraction B est soustrait A Multiplication A est multipli par B Division A est divis par B Vous remarquerez que les plots de donn es acceptent deux entr e pour A et B et trois sortie pour A B et le r sultat de l op ration qui est une valeur num rique Rien d autre ce bloc est tr s simple et facile utiliser Si aucune valeur est saisie dans les champs A et B le z ro 0 est la valeur de d faut Ces nombres peuvent tre saisie la main ou fournis par un autre bloc l aide d un fil de donn es raccord cet autre bloc En voici un exemple Fig 3 Document prot g au titre du code de la propri t intellectuelle droit d auteur 105 NXT G Lego Mindstorms Guide pratique de programmation E Op ration Addition 4 Vous devez comprendre que vous ne pouvez rien faire avec le bloc MATH si les plots
142. ipule des valeurs num riques celui ci compare des valeurs LOGIQUES et donne comme r ponse une valeur logique VRAI ou FAUX Avez vous not la diff rence En effet il est possible de comparer des valeurs logiques on entre ici dans la th orie des Ensembles et on aborde un domaine d op rations particuli res C est le bloc qui a ma pr f rence celui de l l gance celui qui par raisonnement logique permet l criture concise d un programme C est celui qui conomise de longues cha nes de blocs celui de l all gement Fig 15 Document prot g au titre du code de la propri t intellectuelle droit d auteur 115 NXT G Lego Mindstorms Guide pratique de programmation Examinons le panneau de configuration 1 Utilisez les cases d option pour choisir les entr es A et B ou laissez des fils de donn es en entr e fournir les valeurs d entr e de mani re dynamique 2 Le menu d roulant permet de choisir l une des quatre op rations que vous pouvez appliquer aux entr es Op ration Et Op ration Ou Op ration Ou exclusif Op ration Non Ces op rations font r f rence l alg bre de Boole dite alg bre combinatoire Le tableau ci apr s r sume l aide d ic nes repr sentatives les r sultats qui en d coulent Fig 17 Document prot g au titre du code de la propri t intellectuelle droit d auteur 116 NXT G Lego Mindstorms Guide pratique de programmation si les deux va
143. isualisation l aide de la souris ou en modifiant les coordonn es x y Le rayon est aussi modifiable donc adaptable toute sorte de pr sentation On peut aussi faire une animation en s inspirant de l exemple pr c dent d placement d un cercle dans l cran grossissement progressif etc Mais il y a une contrainte il vous faut multiplier le nombre de blocs ce qui alourdit le programme Tranquillisez vous il existe une m thode tr s l gante utilisant un bloc particulier Variable qui calcules les positions x et y Nous en parlerons plus tard Les options Point et Ligne s utilisent de la m me mani re Remarque pour tracer un rectangle il vous faut tracer 4 lignes donc cr er 4 blocs Juste pour m moire voici quoi ressemblent les Plots de Donn es vous pouvez constater que des plots sont pr vus pour les coordonn es x y Comme le NXT est un calculateur il est capable d envoyer des valeurs de positionnement ou de dimension partir de variables lesquelles seront report es sur l cran Le son Vous avez test le bloc AFFICHER Nous allons pr sent donner un peu plus de personnalit BONG et pour cela nous allons introduire un nouveau venu le bloc SON Vous pouvez faire parler BONG mais vous pouvez aussi utiliser les sons pour valuer la progression dans un parcours en employant des tonalit s diff rentes Ou tout simplement jalonner un programme par des tops sonores pour v rifier son bon d roule
144. it Une fois les v rifications faites il ne reste plus qu supprimer ces bloc sons Cr er vos propres sons Ce paragraphe est destin ceux qui ont une bonne pratique de l informatique sur PC Si vous poss dez la version NXT 2 0 sautez ce paragraphe Soyez toujours prudents pensez souvent sauvegarder vos donn es Vous l avez constat votre robot ne sait parler qu anglais et les bruits ou effets sonores sont limit s Rien cependant ne vous emp che de personnaliser la collection de sons en y introduisant la v tre Quelques remarques pr liminaires votre NXT accepte seulement des fichiers dont les noms sont sous la forme monson rso Tous les ordinateurs ne savent pas cr er forc ment ce type de fichier mais la plupart utilisent le format monson wav Ce format est celui qui servira la conversion en fichier rso La premi re d marche consiste donc enregistrer vos nouveaux fichiers sons en wav 27 Document prot g au titre du code de la propri t intellectuelle droit d auteur NXT G Lego Mindstorms Guide pratique de programmation Si vous travaillez sous windows vous utiliserez sans doute Sound Recorder Avec un Mac si vous disposez de la version QuickTime Pro vous pourrez convertir presque tous les fichiers sons en wav Une grande vari t de bruitages sont accessibles sur le Net beaucoup sont gratuits vous pourrez donc en profiter Pour cr er vos bruitages vous utiliserez les logiciels d en
145. ituent que des points d attache des fils eux aussi virtuels qui transportent des donn es Mais chacun de ces points diff re de son voisin par la nature de l information qui transite On les reconna t gr ce un rep re graphique diff rent On remarque qu il y a une entr e gauche et une sortie droite En voici un exemple Fig 6 Document prot g au titre du code de la propri t intellectuelle droit d auteur 14 NXT G Lego Mindstorms Guide pratique de programmation Fy CN r tr t ANE L i i CL AAE R D Deux ou plusieurs blocs pas forc ment c te c te peuvent s envoyer des informations si entre leurs bornes leurs PLOTS un fil les relie Ces fils sont faciles tracer il suffit de pointer sur un plot cliquer et le relier au plot souhait Pour simplifier on peut dire que les fils reli s ces plots constituent un c blage particulier entre deux ou plusieurs blocs La mani re de tracer ces fils et leur utilisation sera d velopp e dans une autre le on Pour l instant ils sont inemploy s car sans objet Pour fermer cette armoire il suffit de cliquer au m me endroit Vous avez appris contr ler par programme le fonctionnement des moteurs gr ce au bloc D placer Il en existe un autre appel Moteur il sera vu l occasion d exercices Essayez d autres combinaisons de blocs en modifiant les param tres et testez nouveau Les Palettes
146. l s correctement Assurez vous que les programmes respectifs sont bien install s sur chaque NXT Placez vos robots sur une surface d volution d gag e Lancez l ex cution des programmes correspondants sur chaque NXT en commen ant par le NXT esclave Remarque Document prot g au titre du code de la propri t intellectuelle droit d auteur 136 NXT G Lego Mindstorms Guide pratique de programmation Pour de plus amples explications je vous invite consulter le menu Aide et support du logiciel NXT G dans les rubriques Bloc Envoyer message et Bloc Recevoir message Les blocs Message Pour communiquer entre eux 2 NXT s envoient et re oivent des messages Celui qui envoie est consid r comme ma tre et celui qui re oit comme esclave Le NXT maitre qui communique avec d autres NXT par l interm diaire de canaux de communications choisit le num ro de connexion 1 2 ou 3 sous lequel le second NXT esclave est identifi Sur le NXT esclave le NXT ma tre est identifi sous le num ro 0 Num ro de connexion Le num ro de connexion de chaque NXT peut tre consid r comme son adresse dans l univers sans fil On peut donc envoyer un message un NXT pr cis en indiquant son num ro de connexion Remarque Il n y a pas de diff rence fondamentale entre un ma tre et un esclave Tous deux disposent de bluetooth pour communiquer mais il est judicieux de confier le r le de ma tre ce
147. l nous faut plus de sortes de Tourne je dirai de Virages Fig 4 2 R gions 3 R gions Tourne Tourne gauche gauche Tourne Tourne droite droite Dans le cas suivant nous sommes en pr sence de ce que nous appellerons une ligne Proportionnelle C est quoi ressemblerait la ligne bleu en escalier lorsque le nombre de r gions gradins augmenterait ind finiment Dans ce cas les virages se produisent avec douceur entre ces deux limites Si la lecture du capteur dit que l on est proche de la ligne alors on ex cute un petit virage Si l on se trouve une plus grande distance de cette ligne alors le virage sera plus important Fig 5 Ligne Proportionnelle Tourne Virage auche Valeurs lues Tourne droite Proportionnel signifie qu il existe une relation lin aire entre 2 variables Pour comprendre ces plus de sortes de Tourne nous allons utiliser une repr sentation graphique dans un syst me d axes en X et Y L axe horizontal axe des X supporte les valeurs lues du niveau de luminosit tel qu il est repr sent L axe Vertical Axe des Y sera celui des Virages Pour simplifier nous dirons que proportionnel signifie qu il existe une relation entre ces 2 variables dont la repr sentation graphique est une ligne droite Vous devez sans doute savoir que l quation alg brique d une ligne droite se pr sente Sous la forme y mx Db O y est la valeur verticale positive ou n gativ
148. la sortie de cette boucle le temps en millisecondes est affich sur l cran du NXT ainsi que le le nombre de rotations du moteur A en degr s Le temps coul et le nombre de boucles sont utilis s pour calculer la dur e d un cycle dT tr s utile pour calibrer le PID La dur e d une boucle est de 14 milisecondes environ Tableau des essais Apr s toute une s rie de tests analys s en fonction du comportement du robot J Sluka a consid r ces valeurs comme un r sultat satisfaisant TargetPower Kp Ki Kd 80 220 7 500 7111 fairly smooth OK speed no beeps Application des formules par la M thode Ziegler Nichols Type Kp Ki Kd P 0 5Kc0 0 0 PI 0 45Kc 1 2 Kp dT Pc 0 PID 0 6Kc 2 Kp dT Pc KpPc 8 dT Ki et Kd sont mis z ro Kp est gal 100 Lancer et observer le suivi de l ovale et les oscillations du robot Augmenter Kp jusqu ce que le syst me oscille d une mani re satisfaisante Cette valeur Kp est alors consid r e comme convenable pour Kc La p riode Pc se d termine partir de ce Kc Dans les conditions des essais on obtient les r sultats suivants par application de la m thode Kc 280 Pc 0 7 et dT 0 014 sec La Puissance TargetPower est limit e 60 Les tops sonores qu on pourrait entendre sont utiles pour l optimisation et le d bugging L id al serait qu aucun top ne se fasse entendre Type Kp Ki Kd P 0 5 280 140 O O PI 0 45 280 126 1 2 280 0 014 0 7 3 O PID 0
149. le n 2 en modifiant quelques param tres BONG avance de 120 cm et stoppe Maintenant tourne droite de 90 Petit calculs pr liminaires D diam tre ext rieur de la roue 5 6 cm env Un tour de roue 3 14 5 6 17 6 cm env Nbre de rotations 120 17 6 6 8 env Le r sultat se pr sente ainsi Fig 3 Document prot g au titre du code de la propri t intellectuelle droit d auteur 12 NXT G Lego Mindstorms Guide pratique de programmation a 1 Bi lt a 2 3 OC made ven Qu Bloc Arr t Bloc rotation sur place sur une distance FIN de PROGAMME avec ses 3 panneaux de configuration Bloc 1 iiis LE Pot a Gs c D Alimentation S 75 OL 09 Y Dur e 6 8 Rotations 5 c E f B r Action sunente D Freiner Y Continuer 4 O Oa Gs c Alimentation F on OP OL 09 2 amp Diriger Jy Action suivante Freiner PY Continuer g y LE Pot a Os c Alimentation m 100 T din OF OL 09 Fh owe 90 Degr s E amp Diriger c z N 8 z 4 Action suivante Freiner Y Continuer G 0 Vous allez maintenant sauvegarder ce programme Choisissez dans la barre de menus gt Enregistrer le Programme et un fen tre vous demande de lui donner un nom BONG 1 ainsi que l endroit du stockage puis validez Ou avez vous enregistr ce programme Evidemment sur votre ordinateur Il faut maintenant le t l ch
150. le par une constante c est un autre terme K Puisque cette constante est associ e avec le terme int gral nous l appellerons Ki Comme pour l expression proportionnelle pr c dente nous multiplions l int grale par la constante Ki pour obtenir une correction Document prot g au titre du code de la propri t intellectuelle droit d auteur 174 NXT G Lego Mindstorms Guide pratique de programmation Ce qui donne notre pr c dente formule du Virage un compl ment additionnel et la modifie ainsi Virage Kp erreur Ki Int grale Nous retrouvons ici l quation de base pour un contr leur PI Le Virage est la correction pour les moteurs Le terme proportionnel est Kp l erreur et le terme int grale est Ki int grale A quoi sert exactement le terme int grale Si l erreur garde le m me signe pendant plusieurs boucles l int grale cro t de plus en plus Par exemple si nous v rifions le capteur lumineux et calculons que l erreur est 1 et qu un peu plus tard nous v rifions nouveau le capteur et l erreur est 2 et la fois suivante encore 2 alors l int grale sera 1 2 2 5 L int grale est gale 5 alors que l erreur cette tape particuli re est seulement de 2 On voit que l int grale peut tre un grand facteur dans la correction mais il lui faut un certain temps avant qu elle ne puisse commencer contribuer Mais l int grale fait aussi autre chose elle supprime les petites erreurs Si dans n
151. le rayon de s quence sup rieur de ce 2 me bloc Fig 7 Document prot g au titre du code de la propri t intellectuelle droit d auteur NXT G Lego Mindstorms Guide pratique de programmation g OA Gs c D Aimentation S m H B 75 Of O4 09 4 Dw e 184 Deors C go g 8 z r Action surante D Freiner D Continuer gU y Cet exemple est l image de ce que nous avons d j vu pour les BOUCLES nous sommes dans un dispositif de blocs COMMUTATEURS IMBRIQUES En combinant ces blocs on devine comment donner BONG la mani re de contr ler de complexes d cisions Un autre exemple combinant le bloc BOUCLE avec celui de COMMUTATEUR Fig 8 Document prot g au titre du code de la propri t intellectuelle droit d auteur 86 NXT G Lego Mindstorms Guide pratique de programmation 1 t Distance inf rieure 40 cm tourne gauche d tecte Avance un objet Distance sup rieure 40 cm ne fait rien poursuit son avance SOS OS OS Commutateu PE LL z i S Contr le Capteur z LR Port 1 2 3 94 i DA aj Capteur D Ultrasons x 51 Comparer 5 a l 1 Afficher Vue plat 1 Montrer cm Centim tres Le premier bloc AVANCER dans la BOUCLE r gl e sur pour toujours provoque le d placement du robot en droite ligne Le capteur ULTRASONS associ au bloc COMMUTATEUR mesure en permanence la distance
152. le terme int gral cherche non seulement le faire revenir sur ce bord mais aussi le faire d passer vers la droite de la m me valeur que celle de la gauche Ainsi l int grale a tendance atteindre par le haut cette limite si de grandes erreurs persistent quelque temps Cela peut aussi causer quelques probl mes avec les contr leurs qui incluent un terme int gral Parfois cette tendance de d passement du terme int gral dans sa tentative de correction d erreur oblige le programmeur intervenir pour neutraliser ces probl mes Si la limite sup rieure de l int grale constitue un probl me deux solutions sont envisageables 1 remettre z ro la variable int grale chaque fois que l erreur est gale z ro ou chaque changement du signe d erreur 2 R duire l int grale en multipliant sa valeur cumul e par un facteur inf rieur 1 quand un nouvelle valeur int grale est calcul e Par exemple int grale 2 3 int grale erreur Cela r duit la valeur int grale pr c dente de 1 3 chaque boucle Si vous consid rez le terme int grale comme la m moire du contr leur alors cet diminution le force oublier des v nements qui se sont produits dans un pass lointain Document prot g au titre du code de la propri t intellectuelle droit d auteur 176 NXT G Lego Mindstorms Guide pratique de programmation Pseudo code pour le contr leur PI Pour ajouter le terme int gral au contr leur nous avons be
153. leurs en entr e sont toutes deux vraies la sortie vaut elle aussi vrai Dans tous les autres cas la sortie vaut faux si l une des valeurs en entr e ou les deux sont vraies la sortie vaut vral si l une des valeurs en entr e est vraie mais pas Ou exclusif les deux la sortie vaut vrai Cette op ration n emploie L op ration Non qu une valeur en entr e Si est parfois cette valeur est vraie la baptis e sorte vaut faux si la inversion valeur est fausse la sorte vaut vrai Cette op ration se contente donc d inverser la valeur en entr e Nous allons cr er un petit sc nario pour BONG et j esp re que cela vous aidera comprendre comment ce bloc fonctionne J ai fix et branch sur BONG un capteur Photosensible et un capteur Sonore Le pseudo code que j imagine est le suivant LEO gt BONG avance de 3 rotations du moteur si ces 2 conditions sont v rifi es VRAI LEO gt La 1 re condition est que le capteur Photosensible d tecte un niveau lumineux inf rieur 35 LEO gt la 2 me condition est que le capteur Sonore d tecte un niveau sonore inf rieur 25 Bien que va t il se passer BONG v rifiera si le capteur lumineux d tecte un faible niveau dans le local lt 35 Il v rifiera galement si le capteur sonore d tecte un niveau calme lt 25 Il enverra une valeur VRAI ou FAUX selon les conditions de configuration qui ont t param
154. lui qui a le plus de responsabilit s Un exemple est celui d un robot qui envoie un signal un autre robot pour le d placer ou pour qu il mette un son ou encore pour relever une valeur d un capteur Parfois plusieurs robots peuvent voluer l aide d un m me programme et s envoient des signaux dans les deux sens dans ce cas choisissez l un d entre eux comme ma tre et les autres concurrence de 3 seront configur s comme esclaves Comme vous disposez de 4 valeurs possibles les 3 briques NXT seront en communication avec une brique NXT ma tresse Ainsi un robot NXT pourra en contr ler jusqu 3 Un NXT dispose donc d un moyen tr s int ressant pour adresser une simple information un autre NXT Par exemple relever le nombre d activations du capteur tactile et l envoyer un autre NXT Et s il tait n cessaire d envoyer plus d informations Par exemple la valeur du niveau de luminosit du capteur photosensible ainsi que que le nombre de rotations du moteur B un autre robot Cela est il possible Si on admet que chaque message potentiel se comporte comme une variable alors la r ponse est oui Les blocs Envoyer un message et recevoir un message peuvent changer entre eux jusqu 10 messages l aide de boites aux lettres Num ro de bo te aux lettres Chaque NXT poss de 10 num ros de boites aux lettres o des messages sans fil peuvent tre d pos s Chaque num ro de boite aux lettres peut contenir 5 mess
155. me Cela signifie que BONG n a aucun talent de devin et qu il faut tre tr s pr cis avec lui Voyons maintenant les choses diff remment Au lieu de lui dire comment agir prenons une feuille de papier et crivons BONG avance de 90 cm tourne gauche de 90 recule de 60 cm fait un tour de 360 sur toi m me et stop LEO donne cette feuille de papier BONG qui la lit Devinez la suite BONG avance de 90 cm recule de 60 cm fait un tour complet sur lui m me et s arr te Si votre Robot NXT est comme le mien alors il est incapable d entendre des ordres vocaux ou lire une feuille de papier Comment dans ces conditions lui transmettre les instructions Facile vous allez utiliser le logiciel de programmation NXT celui fourni dans le kit 8527 appel NXT G G pour graphique signifiant que les suites d instructions ne sont pas crites comme il a t dit pr c demment mais repr sent es autrement Et voici ce que vous d couvrirez apr s avoir lanc le programme Document prot g au titre du code de la propri t intellectuelle droit d auteur T NXT G Lego Mindstorms Guide pratique de programmation 009A LEGO MINDSTORMS NXT Com O1 en Robo Center Mise en route Cette section fournit une pr sentation succincte des notions de base V hicules Leg gt Pr sentation du logiciel Pr sentation succincte du logiciel LEGO MINDSTORMS NXT D marrer un nouveau programme rer un o
156. me I ainsi que le terme D Virage Virage 100 Souvenez vous pour annuler l effet du facteur 100 dans Kp powerA Tp Virage niveau de puissance pour le moteur A powerCc Tp Virage niveau de puissance pour le moteur C MOTOR A direction forward power powerA transmet la commande avec la nouvelle valeur de puissance dans un bloc MOTEUR MOTOR C direction forward power powerCc Commande identique l autre moteur mais en utilisant l autre valeur de puissance lastError Error enregistre la nouvelle valeur de l erreur qui sera la lastError au prochain cycle end loop forever fin de boucle retour au d but de boucle et recommencer nouveau Nous avons maintenant tabli pour notre contr leur PID le pseudo code complet du robot suiveur de trac Reste pr sent aborder la partie la plus d licate du PID le r glage Il s agit en fait de d terminer les valeurs optimales attribuer aux constantes Kp Ki et Kd CHAPITRE 4 r glage d un contr leur PID Sans faire usage aux calculs complexes mais nous devons tout de m me faire un peu de math matiques Nous abordons ici un aspect de la question qui nous r serve des surprises Ou plut t nous choisirons la m thode exp rimentale qui est celle des chercheurs C est par r p tition et Document prot g au titre du code de la propri t intellectuelle droit d auteur 179 NXT G Lego Mindstorms Guide pratique de programmation essais multiples p
157. mencer pr cisons quelques vidences Vous avez acquis ou disposez d un kit 8527 Vous tes sens s disposer d un ordinateur et savoir vous en servir Naviguer sur le Net ne suffit pas Vous devez tre en mesure de lancer un logiciel et de proc der toutes op rations d enregistrement sauvegarde etc Vous avez install le logiciel Mindstorms NXT sur votre ordinateur Votre NXT est quip de son microprogramme et il est pr t fonctionner Si vous ne savez pas fa tes un tour ici http setechnic com Forum viewtopic php t 1256 Pour tester les programmes que nous allons laborer il nous faudra un robot de travail Nous l appellerons BONG Confectionn le plus simplement possible il comportera le NXT mont sur 2 roues motrices actionn es chacune par un servomoteur une roue folle Il sera quip du capteur ultrasons Un exemple sans capteur avec vid o et notice de montage est accessible ICI http www nxtprograms com five minute bot index html Vous allez donc vous fabriquer un BONG LEO va ensuite communiquer de temps en temps avec BONG et BONG r agjira J esp re qu il comprendra les ordres qui lui seront adress s La premi re le on commence ici Document prot g au titre du code de la propri t intellectuelle droit d auteur 6 NXT G Lego Mindstorms Guide pratique de programmation Quelques d finitions Un ROBOT c est un appareil construit pour accomplir d une mani re ind pendante des
158. ment etc Le bloc Son se pr sente ainsi avec son panneau de configuration par d faut Les plots de donn es sont galement visibles pour la circonstance Fig 8 LS PE aj yA gt ei a x S all gt 5 S a jf a se sil a Jf Action 5 MW Fichier audio JP Tonalit J Fichier Good Job B Good S Contr le 9 B Jouer M Arr ter Te Goodmoming Green v ilj Volume ll 75 ee z Pa FY z g f Pas Fonction C7 R p ter Attendre 7 fre Attendre la fin fout Dans la zone ACTION 2 options sont disponibles Le fichier audio est s lectionn par d faut Dans la zone Fichier un menu d roulant vous propose de choisir un fichier son pr enregistr faisant partie d une collection fournie avec le programme NXT G On y Document prot g au titre du code de la propri t intellectuelle droit d auteur 25 NXT G Lego Mindstorms Guide pratique de programmation trouve des bruitages paroles en anglais sons jingle et autres Cette collection peut S agrandir de vos propres enregistrements Vous trouverez quelques explications en fin de cette rubrique Fig 9 Me Action Hit Fichier audio 1 JF Tonalit Jr Remarque A pendant 0 5 J secondes W Contr le E Jouer gij Arr ter 111 Volume ll 75 P Fonction R p ter sP Attendre z pt Attendre la fin 7 _ AS L option Tonalit vous offre une s rie de r glages int ressant
159. mine une fois le dernier bloc ex cut 5 me r gle les seules donn es qui peuvent circuler entre les blocs sont du TEXTE des NOMBRES et du type LOGIQUE et seulement ces trois 6 me r gle Les blocs de programmation ne peuvent r pondre qu une condition la fois en ne fournissant qu un type de r ponse logique Vrai ou Faux Il faut autant de blocs que de conditions satisfaire 7 me r gle dans le cas de BOUCLES IMBRIQUEES le programme commence toujours par la boucle de plus bas niveau l int rieur et se termine par la boucle de 1er niveau l ext rieur A Droite ou Gauche Sortie A ou Sortie B Pour commencer je vais adresser BONG un pseudo code pour cette nouvelle t che LEO gt BONG avance de 3 rotations du moteur puis stop Si le capteur PHOTOSENSIBLE d tecte un niveau lumineux sup rieur 30 tourne droite Sinon tourne gauche Vous savez comment programmer BONG pour le faire avancer l aide du bloc DEPLACER Mais comment saisir la valeur issue du capteur PH TOSENSIBLE et l employer pour aider BONG prendre une d cision tourner droite ou gauche La r ponse est simple vous allez utiliser un nouveau bloc COMMUTATEUR bloc COMMUTATEUR Voici quoi il ressemble pr sent avec ses param tres de d faut Fig 1 Document prot g au titre du code de la propri t intellectuelle droit d auteur 80 NXT G Lego Mindstorms Guide pratique de programmation
160. mmation PID Line Follower 4 Suiveur de ligne gauche left hand line follower Bas sur un capteur lumineux non calibr TargetPower Nous sommes arriv s au terme de cette le on et j esp re que vous aurez assimil le principe du PID C est un outil puissant et il faut rendre hommage J Sluka pour son approche en NXT G ce qui n est pas du tout vident Ses nombreux essais et tests avec commentaires m ont permis d en tirer quelques l ments suffisants pour illustrer cette le on Si le coeur vous en dit rien ne vous emp che de tester plus finement sachant que les r sultats d pendent de chaque trac avec ses propres conditions de luminosit Le programme principal se pr te parfaitement toutes ces mesures et toutes les valeurs des k s Et maintenant bon travail Document prot g au titre du code de la propri t intellectuelle droit d auteur 186
161. n peut penser qu il tourne en rond sur lui m me qu il boucle C est exactement ce qu il fait il BOUCLE sur lui m me Et dans la vie de tous les jours qu est ce une boucle Ce peut tre un chemin circulaire un rebondissement un geste r p titif De plus qu importe la dimension Document prot g au titre du code de la propri t intellectuelle droit d auteur 66 NXT G Lego Mindstorms Guide pratique de programmation Si vous suivez un chemin circulaire vous vous retrouverez forc ment votre point de d part Une boucle de programmation est tout fait semblable elle tourne sur elle m me parfois ind finiment jusqu ce que vous programmiez une sortie de boucle Bloc BOUCLE Et il se trouve que le logiciel NXT G dispose d un bloc sp cialement con u pour l occasion le bloc BOUCLE Fig 2 eS Le 2 o VS r ma ar E f 5 W Contr le Pour toujours z 1 Montrer a CE Compteur Pas tr s s duisant ce bloc Il est configur dans la zone Contr le sur Pour toujours Bien maintenant chaque fois que j introduirai l int rieur de cette boucle un bloc quelconque ce dernier sera r p t en permanence Prenons un exemple Je vais glisser l int rieur du bloc BOUCLE un bloc D PLACER ayant les caract ristiques suivantes moteurs raccord s aux ports B et C avec une rotation moteurs en marche avant G c M Alimentation SP cm 75 F2 Dur e
162. ne C est termin enregistrez ex cutez ce programme BONG coeur et appr ciez le r sultat Nous avons trait dans la zone ACTION que 2 choix Il en reste 2 autres Le choix REINITIALISER permet d effacer tout l cran Cela est utile quand on ne souhaite pas retrouver dans la suite d affichage des traces susceptibles de corrompre le r sultat attendu Il s agirait de valeurs oubli es ou de caract res cach s par exemple Ce choix permet donc de poursuivre en affichant un nouveau travail Enfin le choix DESSIN offre la possibilit de dessiner sur l cran des figures g om triques Ces dessins peuvent tre statiques ou dynamiques et s ils d coulent de formules math matiques ils peuvent tre associ s aux moteurs et capteurs Dans ces cas repr senter par des trac s dynamiques les mouvements ou la pr sence d objets l loignement etc Fig 7 W ma ir k i Loy m AV J gt S anf n ce E S a yf s da Sze a yha To a gf ana i Action gF Dessin S Position pe m A 1 Afficher M S Effacer Point Liane s _ me TRES Nar x sx a jen x Dans la zone Type nous avons notre disposition 3 outils le cercle a t s lectionn Document prot g au titre du code de la propri t intellectuelle droit d auteur 24 NXT G Lego Mindstorms Guide pratique de programmation On peut le d placer dans la fen tre de v
163. ne pour une donn e num rique fil orange pour une donn e textuelle fil vert pour une donn e logique Si le fil appara t en pointill gris cela signifie qu il est rompu et que le lien ne fonctionne pas Relier les plots par des fils requiert une certaine pratique Vous constaterez qu ils prennent parfois des directions inattendues ou adoptent des trajets bizarres Il faudra vous entrainer pour les ma triser correctement Bien il est temps de revenir nos blocs NXT G Nous travaillerons sur la palette compl te de blocs Fig 10 Document prot g au titre du code de la propri t intellectuelle droit d auteur 37 NXT G Lego Mindstorms Guide pratique de programmation a 127529 IS 2 yy my f j f i Le bloc MOTEUR a envoy par ce fil une information logique sur le sens de rotation du moteur OUl marche avant NON marche arri re un bloc VARIABLE configur en LOGIQUE Cette information est stock e dans une case m moire du bloc VARIABLE Cet exemple montre la diversit des donn es qu un bloc peut manipuler Le Hub tant d ploy on remarque la pr sence des plots de part et d autre de la colonne figur s sous forme de crochet Pour chaque entr e correspond g n ralement une sortie On remarque galement entre les plots une minuscule ic ne se rapportant un param tre du panneau de configuration Si l on survole ces ic nes avec la souris une bulle d aide
164. nition du PID la plage qui nous int resse et qui donne une r ponse proportionnelle est appel e Plage Proportionnelle Ce concept est tr s important dans la notion du PID Pour revenir notre suivi de trac la Plage Proportionnelle pour le Capteur Photosensible se situe entre 40 et 50 et pour l erreur elle est comprise entre 5 et 5 On peut galement noter que les servomoteurs ont eux aussi une plage proportionnelle de 100 pleine puissance arri re 100 pleine puissance avant Deux remarques importantes sur la Plage Proportionnelle 1 Vous souhaitez une plage proportionnelle aussi grande que possible La plage proportionnelle du Capteur Photosensible est assez petite cela signifie que le Capteur doit tre assez pr s du bord du trac pour obtenir des valeurs proportionnelles Plus exactement la grandeur de la plage d pend essentiellement de la hauteur du capteur par rapport au plan du trac Si le capteur est tr s proche du plan disons 2 mm environ il met un tr s petit cercle lumineux Un petit d placement du capteur produira une variation de l erreur de 5 5 correspondant notre plage proportionnelle Vous pourriez dire que le capteur a des vues troites et il peut seulement voir une tr s petite partie du plan Le capteur doit tre tr s pr s du bord du trac pour obtenir une lecture qui n est pas blanc ou noir Si le capteur est positionn plus haut la tache lumineuse s tale en un plus grand
165. notre cas De m me si je vous demande la lune est elle de forme cubique votre r ponse serait NON et votre robot r pondrait FAUX la m me question Aussi n oubliez pas qu un robot r pond des ordres des instructions par VRAI ou par FAUX Avant de pr senter le bloc COMPARER nous allons crire un pseudo code pour tester les connaissances de BONG LEO gt BONG je veux que tu cr es 2 nombres al atoires compris entre 1 et 9 nombre A et nombre B affiche les sur l cran et dis moi si A est plus grand que B Je vais donc commencer par glisser 2 blocs ALEATOIRE et les configurer d une mani re identique A 1 et B 9 Apr s avoir convertis les valeurs en mode texte l aide de 2 blocs NOMBRE EN TEXTE identiques je les regroupe dans un bloc TEXTE unique Enfin je les affiche sur l cran du Document prot g au titre du code de la propri t intellectuelle droit d auteur 108 NXT G Lego Mindstorms Guide pratique de programmation NXT ligne 3 x 2 et y 40 J aurai donc une expression sous la forme valeur A Plus grand que valeur B Fig 6 z ss Tr j aji Texte A Vous avez besc B Plus grand que Remarque dans le champ B taper gt pr c d d un espace le texte de la fig 6 est trop long il mange la suite Nous allons maintenant faire dire par BONG si l expression est VRAI ou FAUX et nous sommes pr t pour cela utiliser le bloc COMPARER D sol d avoir t si
166. nouveau de 3 rotations du moteur arr te toi et tourne droite de 90 degr s BONG avance de 3 rotations s arr te puis tourne droite LEO gt BONG avance nouveau de 3 rotations du moteur arr te toi et tourne droite de 90 degr s BONG avance de 3 rotations s arr te puis tourne droite Je peux aussi simplifier cette suite de 8 blocs et la remplacer par une simple BOUCLE solution plus l gante Figure 2 Cette BOUCLE se r p te 4 fois Le premier bloc DEPLACER fait avancer le robot de 3 rotations du moteur Le deuxi me bloc fait virer le robot de 90 degr s droite 1 Montrer H Compteur Bien Mais que se passe t il si j envisageais faire r agir BONG au capteur PHOTOSENSIBLE apr s 2 tours de boucle Il faudrait donc que je modifie le programme de la figure 1 en ins rant au milieu un bloc Capteur PHOTOSENSIBLE ce qui ne pose aucun probl me Mais pour le programme de la figure 2 je dois modifier la BOUCLE en rempla ant Compter 4 par 2 Puis ajouter un bloc Capteur PHOTOSENSIBLE suivi d une 2 me BOUCLE identique la premi re Le programme ressemblerait ceci Figure 3 Document prot g au titre du code de la propri t intellectuelle droit d auteur 122 NXT G Lego Mindstorms Guide pratique de programmation Cette BOUCLE se r p te 2 fois Cette BOUCLE se r p te 2 fois Le premier bloc DEPLACER fait avancer Le premier bloc DEPLACER fait avancer le rob
167. ns la zone CONTROLE le champ est configur sur Compter sous entendu compter le nombre de cycles Ce nombre a t fix 5 Notez galement que la case compteur est coch e ce qui permet d afficher le plot de sortie de la boucle ici inemploy e donc de r cup rer ventuellement cette valeur La boucle va donc se r p ter 4 fois et la 5 me la boucle se termine Le programme se poursuit dans la boucle ext rieure On crit la valeur z ro dans le bloc variable suivit d un top sonore diff rent du premier pour dire qu on recommence partir de z ro Enfin pour quitter le programme on appuie ce moment sur le bouton rouge du NXT Document prot g au titre du code de la propri t intellectuelle droit d auteur 42 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 3 OUI o MON Question pour les capteurs Quelle diff rence trouvez vous entre ces deux questions Quel temps fait il Pleut il Bien il y a pas mal de diff rences la premi re contient 3 mots et la seconde un seul par exemple Mais la v ritable raison c est d attirer votre attention sur la premi re car elle est ce qu on appelle une question ouverte Il peut faire beau venteux brumeux ou toutes autres sortes de r ponses La seconde question n a que deux r ponses possibles Oui ou Non Lorsque vous programmez votre robot vous devez comprendre que la plupart du temps il ne peut vous renseigner que par ces deux r p
168. nstituer Mes Blocs disposent de fils de donn es pr alablement et imp rativement configur s Les ports d entr e ou de Sortie de ces blocs s lectionn s laisseront appara tre des ports de donn es du Mon Bloc nouvellement cr Cet aspect renforce leur puissance et offre une grande souplesse La manipulation des fils de donn es requiert une certaine habilit et je vous conseille de vous exercer pour en d terminer leur opportunit Voici titre d exemple un Mon Bloc intitul Afficher Valeu r Figure 11 Converti la valeur en texte Affiche sur ecran des motifs Affiche sur ecran Attend une fraction de seconde de pr sentation la valeur Pour conserver sue ecran les motifs de pr sentation ne pas oublier de DECOCHER la rubrique Effacer dans le panneau de configuration de chaque bloc AFFICHER Ces blocs constituants un affichage 5 au total ont t s lectionn s dans un programme plus complet qui r p te plusieurs reprises le m me mode d affichage Les plots et les fils de donn es ont t utilis s dans le corps du programme En transformant cette suite en un Mon Bloc Afficher valeur le logiciel a ajout en t te un plot ind pendant Value bien visible dans cet exemple La pr sence de ce plot flottant Document prot g au titre du code de la propri t intellectuelle droit d auteur 127 NXT G Lego Mindstorms Guide pratique de programmation Signifie que ce Mon Bloc peut recevoir en
169. nt r cup r le NON en entr e interdira le remplissage en faisant afficher Tiroir non vide Quelle que soit la pi ce et la quantit le remplissage du tiroir n aura pas lieu Pour qu il puisse se faire il faudra attendre qu un OUI l autorise et dans ce cas l cran affichera Remplir Tiroir avec 4 Roues Types de donn es Je pourrais cr er des dizaines de blocs factices mais j esp re que vous commencez comprendre comment les blocs peuvent recevoir en entr e et donner en sortie des informations Ces 2 types de donn es peuvent tre d termin es par vous soit en tapant les informations soit en les choisissant dans le panneau de configuration des blocs ou fournies par d autres blocs en utilisant les fils de donn es Vous devez savoir aussi que certains blocs ne disposent pas de plots d entr e d autres pas de plots de sortie rares enfin quelques uns sans aucun plot Revenons la programmation et soyez heureux d apprendre que parmi toutes ces sortes de donn es imaginables seuls trois types sont utilis s par le NXT G Texte lettres mots phrases et m me les nombres quand ils sont consid r s comme du texte Nombre les nombres peuvent tre positifs ou n gatifs et quelquefois limit s aux valeurs enti res seulement des nombres comme 3 0 4 8 ou 10 et non pas des nombres d cimaux comme 4 3 ou 8 5 La version NXT 2 0 accepte pr sent des valeurs d cimales Document prot g au titre du code d
170. ntenant Notre contr leur dispose maintenant d un terme proportionnel P qui cherche corriger l erreur courante et un terme int gral 1 qui cherche corriger les erreurs pass es A pr sent existe t il un moyen qui permette au contr leur de pr voir l avance et peut tre d essayer de corriger les erreurs qui ne se sont pas encore produites La r ponse est oui et la solution est un autre concept des math matiques sup rieures appel la d riv e Ah nous y voil c est le fameux D du PID Tout comme l int grale la d riv e repr sente aussi une autre partie tr s importante des math matiques sup rieures heureusement pour nous ce dont nous avons besoin pour le PID est assez simple Nous pouvons pr voir le futur en supposant que la prochaine variation de l erreur est identique la derni re variation de l erreur Cela signifie que la prochaine erreur est suppos e tre l erreur courante plus la variation de l erreur entre deux pr c dentes lectures du capteur La variation de l erreur entre deux points cons cutifs est appel e d riv e La d riv e est quivalente la pente d une droite Document prot g au titre du code de la propri t intellectuelle droit d auteur 177 NXT G Lego Mindstorms Guide pratique de programmation Cela pourrait para tre un calcul un peu complexe mais ce n est vraiment pas le cas ici Un jeu de donn es type aidera mieux comprendre le m canisme Supposons que l er
171. obot Il suffit d utiliser un minuteur chaque relev du capteur photosensible Si nous soustrayons la derni re lecture du temps actualis nous obtenons le temps coul depuis la derni re lecture le dT Il existe une meilleure fa on de le faire mais je l ignorerai puisque cela n est pas n cessaire Mais ne serait il pas plus simple s il n y avait pas la n cessit de mesurer le dT pour faire la multiplication Bien et si le dT avait toujours la m me valeur Chaque fois que int grale cro t nous avons ce m me terme dT Donc nous pouvons faire abstraction de ce facteur dT de l erreur dT et se contenter d appliquer une formule analogue du type Document prot g au titre du code de la propri t intellectuelle droit d auteur 175 NXT G Lego Mindstorms Guide pratique de programmation int grale int grale erreur Seule restriction quand nous ferons un autre calcul avec int grale nous devrons en r alit multiplier le r sultat par dT Mais attendez il y a encore plus Nous pouvons faire mieux pour faire abstraction de l expression du temps Le terme int grale dans l quation du contr leur de PI est Ki int gral dT Mais Ki est un param tre qui doit tre r gl avec pr cision tout comme Kp alors pourquoi ne pas remplacer juste la partie Ki dT par un nouveau Ki Ce nouveau Ki diff re du premier mais puisque nous ne le connaissons pas qu importe celui que nous utilisons ou la mani re de le d sign
172. oire la derni re valeur logique valeur qui a t utilis e par la suite Cette valeur peut tre r utilis e n importe quelle moment jusqu la fin du programme Retenez simplement que les variables constituent un moyen puissant de stockage d informations que votre robot peut utiliser plus tard Document prot g au titre du code de la propri t intellectuelle droit d auteur 103 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 10 OPERATION CALCUILS Ceux qui aiment les maths seront servis Vous verrez comment avec quelques blocs il est possible d effectuer n importe quelle op ration N oubliez pas que le NXT est d abord un calculateur aussi sachez vous en servir dans les programmes Nous allons d ailleurs les examiner d abord pour des op rations simples puis en combinaison avec d autres blocs faisant intervenir quelques notions particuli res Voici quoi ressemble ces blocs Vous les trouverez dans la palette Compl te en survolant l ic ne Donn es Fig 1 1 Calculs basiques Rappelons d abord une r gle fondamentale 3 me r gle Un bloc ne peut accomplir qu une seule t che la fois Il faut autant de blocs que de t ches accomplir Cela signifie un bloc pour chaque op ration Document prot g au titre du code de la propri t intellectuelle droit d auteur 104 NXT G Lego Mindstorms Guide pratique de programmation addition soustraction multiplicat
173. on avanc e et exemples de programmes En compl ment des informations pr c dentes la molette de navigation peut tre compl t e par les touches du portable 1 4 7 et contr le le moteur A 2 5 8 et 0 contr le le moteur B 3 6 9 et 1 contr le le moteur C Document prot g au titre du code de la propri t intellectuelle droit d auteur 145 NXT G Lego Mindstorms Guide pratique de programmation Ces touches permettent d affiner les rotations des moteurs bien mieux que la molette Par exemple faire suivre un trajet courbe par un v hicule ou contr ler les 3 moteurs en m me temps Exemple Appuyer sur 3 active l avanc e du moteur C Appuyer sur 6 fait d marrer le moteur C et en r p tant le geste sur ce m me bouton accro t la vitesse Appuyer sur 9 fera d croitre la vitesse Pour arr ter le moteur appuyer sur 3 Pour activer la marche arri re du moteur C appuyer sur Appuyer nouveau sur 6 augmentera la vitesse et 9 diminuera cette vitesse en marche arri re Appuyer sur 3 stoppe le moteur Astuce pour arr ter et r initialiser les moteurs appuyer sur OK de la molette de navigation Vous pouvez galement changer les param tres de d faut en choisissant Options dans le mode t l commande remote control La valeur de d faut est moteurs B C mais si votre robot est branch diff remment le changement est r alis en utilisant ce mode Contr le par programma
174. onses Oui ou Non En d autres circonstances il ne peut comprendre seulement qu un r ponse Oui ou Non Et cette fa on de renseigner ou de comprendre se fera par les capteurs qui sont justement con us pour r agir dans ce sens C est ce que je vais essayer d expliquer au cours de cette le on Mais d abord rappel des r gles l re r gle familiarisez vous avec les outils de programmation 2 me r gle les capteurs doivent tre connect s aux ports d entr e 1 2 3 amp 4 et les moteurs doivent tre connect s aux ports de sortie A B amp C 3 me r gle Un bloc ne peut accomplir qu une seule t che la fois Il faut autant de blocs que de t ches accomplir 4 me r gle un programme NXT G se termine une fois le dernier bloc ex cut 5 me r gle les seules donn es qui peuvent circuler entre les blocs sont du TEXTE des NOMBRES et du type LOGIQUE et seulement ces trois L un ou l autre Reprenons notre travail avec BONG et jouons nouveau au jeu des questions r ponses LEO gt BONG quelle est la couleur du mur en face BONG ne r agit pas et reste immobile LEO gt BONG quelle est la position du bouton de votre capteur tactile BONG ne r agit pas et reste immobile Humm BONG me semble peu r ceptif aujourd hui Je crois me souvenir que BONG pr f re r pondre aux questions par Oui ou par Non Essayons autrement LEO gt BONG le mur d en face est il bleu BONG le mot OUI
175. orms Guide pratique de programmation CE Le bloc LOGIQUE fonctionne comme un bloc COMPARER avec une particularit c est celle de pouvoir combiner l aide d op rations d un type nouveau des valeurs Logiques transmises par les capteurs et de fournir un r sultat qui est lui aussi une valeur Logique Ces op rations ont t indiqu es dans le tableau ci dessus et dans notre cas nous avons choisi Et dans la Zone correspondante Pour viter toute erreur l ic ne visualise le type de r sultat recherch On remarque ici la partie color e en rouge de la zone commune des 2 cercles Cette zone est bien commune aux 2 valeurs et correspond l objectif recherch Nous compl terons ce programme par un bloc COMMUTATEUR qui orientera vers le chemin r pondant ces 2 conditions chemin contenant un bloc AVANCER Fig 20 Document prot g au titre du code de la propri t intellectuelle droit d auteur 119 NXT G Lego Mindstorms Guide pratique de programmation LE Por OA B c Alimentation S m 75 y z Direction T i L T2 Dur e 3 Rotations 5 4 cl amp Diriger Ge ff 8 z Jy Action surante Freiner J Bb Continuer 9 0 D Ce bloc est un magnifique outil qui combine avec art 2 valeurs Logiques Il permet de manipuler un grand nombre de valeurs dont les r sultats peuvent tre associ s d autres valeurs logiques Pour combiner par exemple 4 valeurs logiques j utilis
176. ot de 3 rotations du moteur le robot de 3 rotations du moteur Le deuxi me bloc fait virer le robot Le deuxi me bloc fait virer le robot de 90 degr s droite de 90 degr s droite Boucle fa mr Controk Compter 5 Vous avez besoin d aide Amenez le pointeur de la souris au de Uf Jusque Compter E une Infobulle qui explique sa fonction cliquez sur le lien Aide suppl menta CT Montrer La si Compteur Modifier ce programme tait relativement facile mais imaginez que le programme devienne de plus en plus long avec d autres contraintes comme tourner droite ou gauche Les ajouts successifs de blocs D PLACER peuvent l alourdir consid rablement C est l que le concept de Mes Blocs entre en jeu Commencez par examiner ce programme je le commenterai par la suite Figure 4 Vous voyez ici 4 blocs Mon Bloc dont les ic nes ne figurent pas dans les palettes courantes Chacun d entre eux contient les 2 premiers blocs DEPLACER de la figure 1 Tout ce que j ai fait consiste les regrouper en un seul Bloc J ai de la sorte r duit la longueur du programme de moiti Ces blocs ont un nom Avance3 D90 et une ic ne personnalis e J ai maintenant un bloc r utilisable que je peux ins rer dans ce programme ou dans n importe quel autre futur programme chaque fois que je souhaiterai faire avancer mon robot de 3 rotations du moteur et le faire virer droite de 90 degr s Document prot
177. otre suivi de trac le capteur lumineux est assez proche du bord du trac mais pas exactement dessus l erreur sera sera petite et la correction de trajectoire sera faible On serait alors tent de modifier le Kp proportionnel mais cela m nera souvent le robot serpenter des oscillations dans les deux sens Le terme int grale est parfait pour rectifier les petites erreurs Alors que l int grale additionne les erreurs plusieurs petites erreurs cons cutives peuvent finalement lui donner assez d importance pour faire une diff rence En d autres termes l int grale est une sorte de m moire du contr leur Elle est l histoire cumulative des erreurs et donne au contr leur un moyen de les corriger quand elles persistent pendant une longue p riode de temps Quelques subtilit s sur les int grales Bien mais l int grale est un peu plus compliqu e Heureusement ce n est pas trop douloureux J ai ignor un param tre secondaire ce n est pas vraiment secondaire mais nous allons le consid rer ainsi le temps L int grale est vraiment la somme de l erreur l cart de temps L cart de temps ou delta dT est le temps coul entre la derni re lecture du capteur et le temps du contr le le plus r cent du capteur Int grale int grale erreur dT Ainsi chaque fois que nous ajoutons int grale un l ment nous devrions lui ajouter les temps d erreur le dT Il est assez facile de faire mesurer le dT par le r
178. ous utilisons l quation virage K l erreur pour calculer le changement des niveaux de puissance des deux moteurs Un moteur obtiendra un niveau de puissance gal Tp Virage l autre moteur obtiendra un niveau de puissance gal Tp Virage A noter que notre erreur est comprise entre 5 5 ce qui signifie que le Virage peut tre positif ou n gatif c est dire correspondant aux virages dans des sens oppos s Il se trouve que c est exactement ce que nous recherchons puisqu il mettra automatiquement un moteur en acc l ration et l autre en ralentissement Un moteur nous supposerons que c est le moteur gauche du robot raccord au port A obtiendra toujours la valeur de Tp Virage comme niveau de puissance L autre moteur le droit raccord au port C obtiendra toujours la Tp Virage comme c est le niveau de puissance Si l erreur est positive alors Virage est positif et Tp Virage est plus grand que Tp la vitesse du moteur gauche augmentera alors que celle du moteur droit diminuera Si l erreur change de signe et devient n gative signifiant qu on a franchi le bord du trac et voit l autre couleur alors Tp Virage est maintenant plus petit que Tp la vitesse du moteur gauche augmente et celle du moteur droit diminue puisque Tp Virage est plus grand que Tp rappelez vous que le produit de 2 valeurs n gatives donne une valeur positive Simple non Poursuivons 3 Pseudo Code pour un Contr leur P D abord nous devons valu
179. ous voyez appara tre une bulle d aide Oui Non Document prot g au titre du code de la propri t intellectuelle droit d auteur 44 NXT G Lego Mindstorms Guide pratique de programmation Cela vous informe que le plot de sortie peut par le moyen d un fil de donn es fournir une donn e de type logique un autre bloc de programmation Mais comment savoir si la sortie est un Oui ou un Non Facile il suffit d examiner le panneau de configuration du bloc Capteur tactile La r ponse r side dans le choix que vous ferez dans la zone action Ici Enfonc est s lectionn Donc si le bouton est enfonc il enverra au bloc voisin une valeur logique Oui ou Vrai les 2 termes ayant souvent la m me signification Le bloc voisin est un bloc Variable que nous tudierons plus tard dont le type est logique il est param tr pour crire une donn e logique dans sa m moire avec une valeur de d faut Faux identique Non Tant que le bouton du capteur tactile est rel ch valeur Faux le bloc Variable garde dans sa m moire une donn e logique Faux Quand le capteur tactile est appuy il envoie une valeur Vrai au bloc Variable qui re oit par le canal du fil de donn es cette valeur Vrai Cette nouvelle valeur remplace la pr c dente et elle est ensuite stock e dans la m moire du bloc Variable pour un autre usage Rappelez vous quand vous connectez des blocs de programmation par des fils de donn es ces fils
180. par exemple le bloc AFFICHER Nous savons que ce bloc dispose d un plot d ENTREE Texte T il suffira donc de tirer un fil de donn es entre ces 2 blocs Fig 4 00 Action TE Texte 1 Position LT Afficher Effacer Mindstorms NXT F Texte k un Mindstonms NXT x 10 Y 26 Ligne 5 x Le texte figurant dans la zone Texte du bloc AFFICHER Mindstorms NXT n appara tra pas sur l cran mais sera remplac par la valeur de la variable ici n ant Par contre si un texte figurait dans la zone valeur de la variable c est alors ce texte qui aurait pris la place sur la ligne 5 bien videmment Document prot g au titre du code de la propri t intellectuelle droit d auteur 95 NXT G Lego Mindstorms Guide pratique de programmation J esp re que vous avez compris ce m canisme et je vais maintenant l illustrer d une autre mani re ne Commutateur Z i gt Lond se CE re EC gt 2 Faux gt Type Logique 5 giy a 1 Afficher 62 Vue plat Vrai v D l Dans cet exemple j ai connect un bloc VARIABLE nomm Logique 1 un bloc COMMUTATEUR dont le panneau de configuration est visible sur la figure Ces 2 blocs sont compatibles puisqu ils n acceptent que des valeurs logiques J ai reli les plots par un fil de donn es La valeur de d faut du bloc VARIABLE est FAUX Quand j ex cute le prog
181. place en suivant un trac de forme carr e vous auriez probablement plac 8 blocs D PLACER sur le rayon de s quence tels que pr sent s ci dessous et configur chaque bloc D PLACER avec les 2 m mes propri t s Exact Un bloc D PLACER qui entraine les moteurs B et C durant 3 rotations et un 2 me bloc DEPLACER pour ex cuter un virage droite Cette paire de blocs tant ensuite r p t e 3 fois soit un total de 8 blocs Fig 1 Document prot g au titre du code de la propri t intellectuelle droit d auteur 65 NXT G Lego Mindstorms Guide pratique de programmation a Pi m r z A O8 c Aimentation SP e _75 Vous avez besoin d aide Amenez le pointeur de la souris au dessus d un objet pour afficher 4 r Inn L L gt r Dur e 1 Rotations zJ une infobulle qui explique sa fonction Pour plus d informations cliquez sur le lien Alde suppl mentaire c y 8 2r Action suwante Freiner DY Continuer Aide suppl mentaire G sE Bien cela aurait sans doute march Mais c est aussi d penser beaucoup d nergie pour que BONG suive un trac en forme de carr pour revenir finalement sa position de d part Y aurait il une meilleure solution Essayons d am liorer le pseudo code LEO gt BONG avance de 3 rotations du moteur arr te toi et tourne droite BONG avance de 3 rotations s arr te puis tourne droite LEO gt BONG r p te ma premi
182. placer le robot le nez sur le trac du tapis Au d but du programme le robot doit accomplir un balayage en pivotant autour de la roue A 1 2 rotation du moteur A Pendant ce balayage capter les valeurs et les stocker dans des variables Arr t du robot Une fois ces valeurs capt es faire revenir le nez du robot proximit du trac Arr t du robot et affichage de la valeur moyenne sur le petit cran Deuxi me exercice Transformer le programme pr c dent en un Monbloc en utilisant la palette Perso Ce Monbloc est une routine qui sera utilis e pour l criture du programme futur du contr leur P Ce bloc est aussi tr s utile pour l criture d autres programmes faisant appel aux valeurs lues du capteur CHAPITRE 2 Un programme simple d un contr leur P ID Nous utiliserons ici un bloc DEPLACER Document prot g au titre du code de la propri t intellectuelle droit d auteur 168 NXT G Lego Mindstorms Guide pratique de programmation Pour crire ce programme nous avons besoin d une routine dans la palette Mon Bloc que nous appellerons PID_LF_Calib Cette routine permet de calibrer le capteur par lecture des valeurs lues mini et maxi Elles S obtiennent par balayage de la zone o se trouve le trac De ces valeurs la routine en tire une moyenne appell e gray Cette valeur est alors reprise par le programme que nous allons pr sent d velopper La valeur gray est transmise aux moteurs
183. ples Contr le direct des moteurs Marche et arr t ee Document prot g au titre du code de la propri t intellectuelle droit d auteur 156 NXT G Lego Mindstorms Guide pratique de programmation D placements lin aires et virages par BRIAN DAVIS MDP LEGO Le BLOC ALEATOIRE fournit une valeur comprise entre O et 100 Cette valeur est compar e avec une valeur B gale 50 Si la condition est VRAI le moteur tourne dans un sens si la valeur est FAUX le moteur tourne en sens invers Contr le par capteurs Inversion de marche par impulsion sur le capteur tactile Fig 4 Contr le des moteurs par 2 capteurs tactiles Fig 5 Document prot g au titre du code de la propri t intellectuelle droit d auteur 157 NXT G Lego Mindstorms Guide pratique de programmation CONTROLE DES MOTEURS A L AIDE DE 2 BOUTONS TACTILES Chaque moteur est command par un bouton appuy Les 2 boutons appuy s simultan ment font avancer tout droit en l chant l un d eux l engin vire D marrage ou arr t par le son Fig 6 D marre en claquant des mains Affiche la distance entre le capteur US et l objet Sortie de boucle en claquant des mains GC J Ce programme d marre en tapant des mains Le capteur Ultrasons affiche en cm la distance qui le s pare d un objet La sortie de boucle se fait galement en tapant des mains D placements particuliers Dans une di
184. pteur sonore H Capteur 7 CPP ETES IQ Action Enfonc md minuteur Photosensible rs Rec message 4 Rel ch Rotation Ultrasons 4 Heurte PF IRUnk Nous allons maintenant examiner chacun de ces blocs li s aux capteurs sauf Rec message qui est un bloc sp cifique li au dispositif Bluetooth et que nous tudierons plus tard Bloc Attendre Capteur Tactile Il est repr sent ci dessus avec la configuration suivante c bl sur le port 1 fin d attente pour Action Heurt D s que le bouton du capteur est heurt les moteurs B et C s arr tent et BONG n avance plus Fig 4 Document prot g au titre du code de la propri t intellectuelle droit d auteur 61 NXT G Lego Mindstorms Guide pratique de programmation Bloc Attendre Capteur Sonore Capteur CJIKE Por O1 2 53 O4 P Capteur sonore 5 S t s a 0 m A Le E CO Ce Il est repr sent ci dessus avec la configuration suivante c bl sur le port 2 fin d attente pour Son lt inf rieur 30 Tant que le niveau sonore est inf rieur 30 BONG avance D s que cette valeur est atteinte les moteurs B et C s arr tent et BONG n avance plus Bloc Attendre Capteur Photosensible Fig 5 Capteur LE Port j1 2 3 O4 D Lumi re z 5 25 P Fonction M 3 G n rer de la lumi re Il est repr sent ci dessus avec la configuration suivante c bl sur le port 3 fin d atten
185. que c est n est ce pas soient raccord s de la mani re suivante 2 me r gle Les capteurs doivent tre connect s aux ports d entr e 1 2 3 amp 4 et les moteurs doivent tre connect s aux ports de sortie A B amp C Si cette r gle n est pas respect e au mieux il ne se passera rien au pire je n en sais pas plus Structure et programme Je n utiliserai pas ici de termes techniques mais pour une fois acceptez que je vous parle de structure de programmation Si les tres humains sont capables par eux m mes d accomplir certaines t ches non dites rappelez vous que BONG n est pas aussi intelligent Les instructions qu il re oit doivent lui tre donn es d une mani re stricte et sp cifique De plus elles doivent tre ordonn es Cet ordonnancement est une fa on de parler de structure de programmation Prenons un exemple BONG est immobile en attente Quant nous nous ne sommes pas encore pr ts t l charger un programme NXT G mais nous pouvons pr plannifier les t ches d un futur programme Nous allons utiliser ce que certains programmeurs appellent un pseudo code Pseudo code C est tout simplement un faux programme Ce pseudo code ne sera pas crit l aide du NXT G mais pour le faire nous supposerons que BONG a des oreilles et qu il est capable d enregistrer les ordres donn s Essayons d crire des pseudo codes suivant une liste num rot e 1 BONG avance jusqu ce que l
186. que Mais ce n est pas encore fini Si j ex cute le programme ce stade je verrai le coeur gros puis petit battre qu une seule fois Insuffisant II me faut donc r p ter en permanence ce passage gros petit pour simuler le battement du coeur Nous le ferons l aide d un bloc BOUCLE Vous allez maintenant composer la suite ainsi Fig 5 Document prot g au titre du code de la propri t intellectuelle droit d auteur 22 NXT G Lego Mindstorms Guide pratique de programmation CE Montrer O Compteur Glissez un bloc BOUCLE entre les blocs il s cartent autom at quem ent pour faire de la place Diustration CE amer O dy a j Fichier Heart 02 Left 02 Glissez le bloc AFFICHER l int rieur de la boucle Proc der ainsi pour les autres Dans le choix du 2 me motif selectionnez bien Heart 02 et r glez le temps 0 5 seconde Il ne reste plus qu s assurer que le premier bloc est bien un texte Ici ce n est pas le cas rectifions en cons quence Et voil le r sultat final Fig 6 Document prot g au titre du code de la propri t intellectuelle droit d auteur 23 NXT G Lego Mindstorms Guide pratique de programmation S es DO a Cu P S y S C gt nm C 1 pra O R e ER mang Me Action TT Texte x I _ Position gt pa aE m EE 1 Afficher S Effacer e ae EJ sam Salut de BONG A LLL J Texte x 9 Y 27 lig
187. que si la luminosit d passe 60 Le point de d clenchement vaut dans ce cas 60 La zone Comparer s utilise comme celle du capteur sonore Document prot g au titre du code de la propri t intellectuelle droit d auteur 50 NXT G Lego Mindstorms Guide pratique de programmation Astuce r glage du point de d clenchement pour un capteur photosensible Si vous voulez qu une torche dirig e vers votre robot g n re le signal vrai dirigez la torche vers le robot plusieurs reprises et observez les valeurs de luminosit affich es dans la zone jaune de r troaction Si la torche g n re des niveaux de luminosit d environ 80 fixez la valeur de d clenchement 70 Ce faisant toute lumi re au del de 70 comme celle de la torche g n rera un signal vrai La lumi re plus faible sera ignor e Si vous activez la case cocher Lumi re g n r e le capteur photosensible allume sa petite source lumineuse et d tecte cette lumi re si elle est r fl chie dans sa direction Cette fonction est particuli rement utile dans des conditions lumineuses difficiles comme une pi ce tr s clair e Cette fonction permet au capteur photosensible de faire office de t l m tre courte port e Lorsque l option Lumi re g n r e est activ e le capteur photosensible d tecte un niveau de lumi re r fl chie plus lev s il approche d un objet r fl chissant Il est d s lors possible d utiliser ce capteur pour
188. r puis t l chargez le programme Ce travail accompli s lectionnez sur le petit cran du NXT Software files appuyez sur le bouton rouge et recherchez AFFICHER Appuyez une 2 me fois sur le bouton rouge pour ex cuter le programme Avez vous vu quelque chose Je ne pense pas Le programme est suppos crire Salut de BONG sur l cran puis se termine L ex cution a t tellement rapide que vous n avez pas eu le temps de voir le texte s afficher Document prot g au titre du code de la propri t intellectuelle droit d auteur 20 NXT G Lego Mindstorms Guide pratique de programmation Quatri me r gle un programme NXT G se termine une fois le dernier bloc ex cut La bonne nouvelle c est qu il existe un moyen tr s facile pour le maintenir Le pseudo code sera donc corrig LEO gt BONG j aimerais que tu affiches sur ton petit cran Salut de BONG pendant 10 secondes Il existe de nombreuses mani res pour maintenir un affichage je vais vous en montrer une vous d couvrirez les autres par vous m mes en pratiquant Survolez la palette Commun arr tez vous sur le bloc Attendre puis dans la palette horizontale s lectionnez Temps Fig 2 1 Ze VD Zl LS dir P N Ce bloc fait exactement ce qu il dit il attend D posez le la suite du bloc Afficher Remarquez que le bloc Afficher a un T pour texte sur l angle inf rieur droit A pr sent enregistrez et lancez l
189. r le capteur d clenche l envoi d un message texte vers le portable hello Remarque vous pouvez retrouver les donn es re ues par le portable dans Collected data RecieveMsg rbt 0 unmas Messe CN D M Comparer og 1 Bo te aux lettres 2 z Document prot g au titre du code de la propri t intellectuelle droit d auteur 147 NXT G Lego Mindstorms Guide pratique de programmation En appuyant sur les touches 1 2 ou 3 du portable fait dire par le NXT le num ro activ Remarque essayez de personnaliser ces 2 programmes tests pour en savoir plus sur la mani re de rendre les programmes compatibles avec le logiciel NXT Mobile Application Document prot g au titre du code de la propri t intellectuelle droit d auteur 148 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 13 TRUCS et ASTUCES PROGRAMMES UTILES Pour programmer votre robot vous utilisez parfois certaines relations math matiques qui conditionnent une parfaite ex cution du d placement Parmi ces relations les deux les plus employ es sont 1 la conversion d un angle exprim en degr s en rotations c est dire en nombre de tours du moteur 2 le calcul d une distance parcourir partir d un angle exprim en degr s ou en nombre de rotations Les utiliser vite des manipulations et corrections successives ou du moins les limite quand on recherche une certaine pr cision
190. ramme le bloc COMMUTATEUR lira le contenu du bloc VARIABLE Si la valeur est VRAI le bloc COMMUTATEUR activera le bloc SON qui se trouve dans la partie haute VRAI si la valeur est FAUX le bloc COMMUTATEUR activera le bloc D PLACER qui se trouve dans la partie basse FAUX Apr s avoir trait le bloc VARIABLE en ecture que se passerait il si je voulais y introduire des donn es Pour cela je dois crire des donn es dans ce bloc et voici comment s y prendre Fig 5 Document prot g au titre du code de la propri t intellectuelle droit d auteur 96 NXT G Lego Mindstorms Guide pratique de programmation Nom Type 1 46 Action O ES Ure Et crire Nombre 1 Num rique Valeur V4 Vrai XC Faux Texte 1 Texte Apr s avoir plac un bloc VARIABLE sur le rayon de s quence j ai choisi Logique 1 comme valeur Dans la zone Action j ai s lectionn Ecrire La zone Valeur devient maintenant accessible et l j ai s lectionn VRAI J ai donc invers les valeurs Vous avez galement remarqu l apparition d un plot d ENTREE Cela signifie que peux disposer d une valeur FAUX ou VRAI par l interm diaire d un fil de donn es reli un autre bloc Dans cet exemple les donn es doivent tre compatibles sinon le lien sera rompu et repr sent par un fil pointill Dans la figure suivante vous pouvez voir quoi ressemblent les panneaux de configuration pour le Nombre 1 et le texte 1 Fi
191. rated or not Power Kp 100 for uncalib sensor range 10 50 190 210 J Sluka Sept 2009 75 220 240 Simple P Controler suivi de trac avec emploi du plot Direction 100 180 too big can t get it to work du bloc DEPLACER Suit le c t gauche du trac for callibrated sensor range 1 30 65 The steering control is La Constante Proportionnelle Kp doit tre d termin e pour chaque between 100 and 100 robot et chaque trac y Le Kp d pend aussi du calibrage ou non du capteur photosensible Le contr le de la direction entre 100 et 100 The gray value is the average of the light sensor s white and black values Move zero point Kp ERROR Divide by 100 to average of The Kp values entered is actually balck and white Kp 100 to help with the integer math Convert the light Remove that here value to an ERROR value Comme vous pouvez le constater gr ce au Monbloc PID_LF_Calib le programme par lui m me est assez simple La variable Gray reprend la valeur moyenne calcul e partir de ce Mon Bloc La boucle se contente de relever la valeur du capteur pendant le d placement du robot de cette valeur est d duite la valeur Gray pour obtenir la valeur de l Erreur Ce r sultat est ensuite multipli par la constante Kp multipli par le facteur 100 pour r soudre le probl me des valeurs d cimales pour obtenir la correction de puissance appliquer aux moteurs Le r sultat est ensuite divis par
192. re frapper des mains par exemple Je vous laisse maintenant crire des programmes selon votre imagination et l quipement de votre MOC Exercez vous pour ma triser ce type d action Nous allons pr sent travailler sur quelques exemples Exemples Exercice n 1 D abord une r ponse une question pos e par un utilisateur Rappel de son probl me ON voit que le robot avance de 10 rotations vers l avant et dit qu il voit quelque chose de trop pr s il recule de 5 rotations mais le probl me c est que la deuxi me action ne se fait que si la premi re est finie et je voudrais que l action de reculer puisse se faire m me pendant les 10 rotations Voici une proposition Fig 12 Document prot g au titre du code de la propri t intellectuelle droit d auteur 13 NXT G Lego Mindstorms Guide pratique de programmation 7 gt lire L R initialis 5 y L 10 Rotations lt 30 om Centim tres mes Le bloc LOGIQUE r unit les conditions de chacun des capteurs dans l op ration OU qui s utilise comme le bloc COMPARER Cela permet justement la simultan it des 2 conditions Je vous laisse le soin de tester ce programme Exercice n 2 Voici deux programmes strictement identiques sauf le fil de donn es qui existe dans le 2 me cas Le bloc STOP fait exactement ce qu il est il arr te le programme l endroit o il se trouve plac
193. re Kd Alors que ce K comme le Ks pr c dent est inconnu et doit tre d termin par t tonnement cela n a pas d importance si l on adopte Kd au lieu de Kd dT Nous pouvons maintenant crire l quation compl te du contr leur PID Virage Kp erreur Ki Int grale Kd d riv e Il est assez vident que la pr vision de l avenir serait une chose utile r aliser mais comment s y prendre Et comment d terminer la pr cision de cette pr vision Si l erreur actuelle est plus grande que l erreur pr c dente alors le terme D essayera de corriger cette erreur S il l erreur actuelle est plus petite que l erreur pr c dente alors le terme D essayera de stopper le contr leur dans sa tentative de correction d erreur C est ce deuxi me cas qui est particuli rement int ressant Si l erreur s approche du z ro alors nous tendons vers le point d arr t de la correction Comme le syst me prend quelque temps pour r pondre aux changements de la puissance des moteurs nous voulons commencer r duire la puissance du moteur avant que l erreur ne tende en r alit vers z ro Sans quoi nous risquons le d passement Dans ces conditions il semblerait que l quation pour le terme D soit plus complexe mais en v rit elle ne l est pas La seule chose dont vous devez vous soucier est de proc der la soustraction dans le bon ordre L ordre correct pour ce type d op ration est actuel moins pr c dent Ainsi pour cal
194. re du code de la propri t intellectuelle droit d auteur 29 NXT G Lego Mindstorms Guide pratique de programmation Afficher Br m F Texte zJ Position CT Afficher S Effacer af Texte Mindstorms NXT Mindstorms NAT X 12 Y 8 Ligne 7 Ce que nous lirons sur l cran sera Je m appelle BONG sur la ligne 7 et non pas Mindstorms NXT II d coule de ceci 3 remarques Le bloc Texte ne contient que du texte les chiffres ne sont pas consid r s comme des valeurs le r sultat c d la concat nation est un texte envoy sur l cran gr ce un fil de donn es Ce texte remplace celui que nous voyons dans la fen tre de visualisation Si la longueur du r sultat d passe la largeur de l cran le texte sera tronqu il n y a pas de passage la ligne Quel int r t avons nous choisir ce bloc alors que le bloc afficher suffit lui tout seul L avantage r side dans l utilisation des champs A B et C qui permettent l affichage de textes diff rents provenant eux m mes de blocs Variable et transmis par des fils de donn es Dans ce cas tout ce qui concerne l affichage reste inchang seul varie le contenu En manipulant avec adresse les variables il est possible d afficher sur cran des messages diff rents associ s par exemple aux capteurs Variables et fils de donn es seront abord s dans une prochaine le on Document prot g au titre du code de la propri t int
195. rection Fig 7 Document prot g au titre du code de la propri t intellectuelle droit d auteur 158 NXT G Lego Mindstorms Guide pratique de programmation 5 Ce programme permet un Moteur de tourner dans une ambiance lumineuse dont le niveau varie peu est constant 5 Valable pour fonctionner proximit d une source lumineuse Quand l engin s loigne il s arr te Le Moteur d marre apr s avoir enregistr une valeur du capteur photosensible dans la variable Xi Dans la boucle qui suit ce capteur rel ve chaque cycle la valeur lumineuse Cette valeur est diminu e de la valeur Xi et la diff rence stock e dans la variable dX dX est compar une plage qui s ttend de 5 100 Si la comparaison est FAUX c d dX compris entre O et 5 le Moteur A continue de tourner Dans l autre cas le Moteur s arr te Suivre un trac Fig 8 1 so a ic is Ol A O D 4 1 A C er ES Ece 5 B D Si le niveau lumineux est compris entre O et 50 ligne noire le Moteur C pivote d un quart de tour moteur bloqu A l int rieur d un trac Fig 9 pour tourner droite ou gauche Le robot se d place l int rieur d une forme sans en sortir Document prot g au titre du code de la propri t intellectuelle droit d auteur 159 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 14 UN CONTROLEUR PID pour ROBOTS
196. registrement du son fourni avec votre ordinateur disposant d un microphone Pour cr er des expressions parl es vous irez sur le site suivant http www research att com ttsweb tts demo php L vous suivrez ces simples tapes S lectionnez une voix hommes femme langue etc tapez un texte expression qui doit tre vocalis e deux mots de pr f rence Le logiciel traduit le texte en langage parl Tester le fichier traduction T l chargez et enregistrer le sur votre ordinateur Donnez lui un nom appropri vous constaterez que le fichier est du type wav Il s agit maintenant de le convertir en fichier rso Allez sur ce lien http bricxcc sourceforge net utilities html T l chargez le programme Wav2Rso Ouvrez Wav2Rso ainsi que votre fichier son wav Ce logiciel convertit ce dernier en fichier rso stock dans votre ordinateur II ne reste plus qu ranger ce fichier rso avec les autres dans le r pertoire suivant l LEGO MINDSTORMS NXT MINDSTOMS NXT engine Sounds Red marrez le logiciel NXT G vous constaterez si vous placez un bloc Afficher dans votre programme l adjonction de tous vos nouveaux sons Bloc TEXTE Pour compl ter ce tour d horizon sur le bloc Afficher je voudrais ici vous pr senter un nouveau bloc intitul bloc Texte Ce bloc a cette particularit de composer des textes en phrases partir de lettres et de mots Fig 12 J se JR Li 00 dE 00 a gf 7e Tex
197. reur actuelle est 2 et l erreur pr c dente 5 Quelle pourrait tre l erreur suivante Bien la variation de l erreur est la d riv e qui s exprime ainsi l erreur actuelle l erreur pr c dente ce qui donne pour nos valeurs 2 5 3 La d riv e actuelle est dans ce cas 3 Pour utiliser la d riv e afin de pr voir l erreur future nous utiliserons la relation suivante l erreur future l erreur actuelle d riv e actuelle qui dans notre cas donnera 2 3 1 Nous supposerons donc que l erreur future sera gale 1 En pratique nous n allons pas syst matiquement calculer l erreur suivante Au lieu de cela nous utiliserons la d riv e directement dans l quation de contr leur Le terme D tout comme le terme I devrait en r alit inclure un l ment temps et le terme officiel de D serait Kd d riv e dT Tout comme les termes proportionnel et int grale nous devons le multiplier par une constante Puisque cette constante accompagne la d riv e nous l appellerons Kd Vous remarquez que pour le terme d riv e nous le divisons par dT tandis que le terme int grale tait multipli par dT Ne vous inqui tez pas trop de cela puisque nous allons adopter la m me astuce pour nous d barrasser du dT du terme d riv tout comme nous avons fait pour le terme int grale La fraction Kd dT est une constante si dT est le m me pour chaque boucle Donc nous pouvons remplacer Kd dT par un aut
198. rivant au croisement choisir un chiffre entre 1 2 et 3 Si le chiffre est 1 tourner gauche Si le chiffre est 2 tourner droite et si le chiffre est 3 aller tout droit En pr alable 2 observations Nous avons 3 choix possibles donc il faut d cocher la case Vue plat Ensuite pour configurer le bloc COMMUTATEUR 3 chemins il faut choisir dans le panneau de configuration Valeur et Num rique Fig 10 CT O e 1 1 Afficher e Vue plat Vous remarquerez que le bloc COMMUTATEUR dispose de 2 onglets et d un plot de donn es en entr e que nous allons utiliser Ce plot accepte les 3 types de donn es d j Document prot g au titre du code de la propri t intellectuelle droit d auteur 88 NXT G Lego Mindstorms Guide pratique de programmation voqu s au cours des derni res le ons Pour la cause j ai choisi Num rique parce que des nombres caract riseront les diff rents chemins Evident non Observez maintenant dans la zone Conditions ce petit tableau comprenant 2 lignes et 2 colonnes La premi re colonne contient le num ro du chemin La 2 me colonne contient une valeur de d faut Ici pour le chemin 1 c est O et pour le chemin 2 c est 1 Donc si par le plot de donn e j entre une valeur 0 le chemin n 1 sera s lectionn Si j entre la valeur 1 c est le chemin n 2 qui sera s lectionn Vous suivez Bien Or mes besoins m impo
199. rmations une forme type de pi ce le nombre de pi ces dans le tiroir et une r ponse OUl si le tiroir est vide ou NON si le tiroir n est pas vide Au lieu de m encombrer de clavier et d cran pour les entr es et sorties j ai imagin une repr sentation plus simple l aide d un socle un HUB comme disent les anglais Fig 5 Vous pouvez voir sur le croquis qu il y a 3 plots d entr e gauche du Hub et 3 plots de sortie droite C est sur ces plots que se raccorderont le clavier l cran et autres dispositifs Tout comme le bloc FORME le bloc TIROIR est tr s pointilleux quant aux dispositifs qui lui sont raccord s Pour le plot d entr e PIECE je ne peux raccorder que des formes Nous savons d j qu un clavier de forme fonctionne Je peux donc lui raccorder ce clavier et changer gr ce lui les pi ces formes remplacer SPHERE par TENON par exemple Mais il y a mieux Rappelez vous le bloc FORME dont on a parl pr c demment Bien il a lui aussi un Hub de donn es mais il tait cach escamot Nous allons le d ployer pour le rendre visible et pour cela nous cliquerons au bas de l angle gauche du bloc FORME rappelez vous le on n 2 Document prot g au titre du code de la propri t intellectuelle droit d auteur 33 NXT G Lego Mindstorms Guide pratique de programmation Le plot d entr e gauche du bloc FORME est la borne de raccordement du clavier qui me permet de changer la forme contenue
200. ropri t intellectuelle droit d auteur 92 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 9 VARIABLE a VALISE FOURRE TOUT Dr le te titre pour une le on Cela signifie t il que l on peut mettre n importe quoi dans une valise mais pour faire quoi En v rit cette le on traite un bloc sp cial appel bloc VARIABLE Vous trouverez ce bloc tr s utile lorsque vous aurez besoin de ranger une information pour un usage ult rieur Le bloc VARIABLE Imaginons un moment que vous voulez donner BONG quelques informations retenir Ces informations peuvent consister en quelques mots quelques nombres et quelques couples de valeurs logiques OUI NON BONG a la facult de ranger chaque morceau d information dans un dossier virtuel existant dans sa m moire Imaginons ce pseudo code LEO gt BONG Voulez vous ranger les mots roue et engrenage dans votre m moire LEO gt BONG j ai aussi besoin que vous rangiez les nombres 120 et 70 dans votre m moire LEO gt BONG voulez vous ranger un VRAI logique et un FAUX logique dans votre m moire Maintenant avant de traduire ce pseudo code en programme NXT G il me faut vous clairer un peu plus sur la mani re dont un programme NXT G range une information la modifie et la retrouve Tout cela est r alis par le bloc VARIABLE Un bloc VARIABLE peut accomplir qu un des 2 choses suivantes Une information peut tre crite dans un dossi
201. rque F pendant 02 Si secondes Vous avez besoin d aide 5 7 Amenez le pointeur de la souris au W3 Contr k O B Jouer O W Arr ter une infobulle qui explique sa fonctia cliquez sur le lien Aide suppl men rs qe fu ion F gt re Ce ou re la fin P Font E R p ter 2 Attend SM Attendre la fi la s quence tonalit tant F A F C A et F vous maintenant de composer les airs musicaux de vos robots gt Un compteur num rique d incr mentation intitul Compteur combin avec un bloc VARIABLE Figure 15 En association avec Mon bloc Affichage valeur permet une r duction notable de la longueur du programme N cessite la cr ation d une variable Compteur Figure 16 Lu J r Action 5 Ure O Ep crire Vous avez besoin d aide Amenez le pointeur de la souris au dessus d Valeur S une infobulle qui explique sa fonction Pour cliquez sur le lien Aide suppl mentaire Document prot g au titre du code de la propri t intellectuelle droit d auteur 129 NXT G Lego Mindstorms Guide pratique de programmation L enrichissement des palettes est loin d tre termin Des d veloppeurs et des constructeurs de capteurs NXT compatibles fournissent eux aussi des blocs sp cifiques qu il est ais d inclure dans le logiciel Le NXT G est loin d avoir montr tout ce dont il est capable et l imagination des utilisateurs loin d tre tarie Exercez vous et n
202. s Dans la zone Remarque vous choisissez d abord une note le plus simple est de cliquer sur une des touches du clavier piano qui met aussit t le son correspondant Vous remarquerez que son nom s affiche dans le champ de saisie sous la forme de lettres A B C D E F pour La Si Do R Mi Fa Ensuite pr cisez la dur e Vous remarquerez enfin que les zones du panneau de configuration situ es gauche sont identiques Si vous cochez R p ter dans la zone fonction la note sera maintenue jusqu la fin du programme ou bien jusqu la lecture d un autre bloc Son r gl sur Arr ter s lectionn dans la zone Contr le Le Volume r glable sera d termin selon l effet recherch On notera cependant que plus le volume est lev plus la batterie d alimentation est sollicit e Enfin dans la zone Attendre si vous cochez attendre la fin le fichier son ou la note seront entendus en totalit avant que le bloc suivant ne soit ex cut Pour conclure reprenons le dernier programme AFFICHER MIEUX et proc dons quelques am liorations LEO gt BONG veux tu dire Hello Lego et mettre le bruit des battements du coeur Glissez 4 blocs Son aux emplacements indiqu s ci dessous en modifiant les blocs Attendre Fig 10 BLOC 3 BLOC 4 Les blocs sont ainsi configur s Fig 11 Document prot g au titre du code de la propri t intellectuelle droit d auteur 26 NXT G Lego Minds
203. s pour le minuteur 1 le plot logique fournira une valeur Faux tant que les 10 secondes ne seront pas coul es Une fois cette valeur d pass e le plot logique fournira une valeur Vrai Vous pouvez galement fournir la valeur de d clenchement de mani re dynamique en connectant un fil de donn es en entr e au plot de donn es du bloc Minuteur Fig 17 Document prot g au titre du code de la propri t intellectuelle droit d auteur 57 NXT G Lego Mindstorms Guide pratique de programmation Le tableau ci dessous pr sente les diff rentes caract ristiques des prises du plot de donn es du bloc Minuteur Prise Type de Plage admise Signification des valeurs Prise ignor e donn es quand a Cl Minuteur Num rique 1 3 1 Minuteur 1 2 Minuteur 2 3 Minuteur 3 a la Point de Num rique 0 100 Valeur de r f rence de la d clenchement comparaison a zla Sup rieur Inf rieur Logique Vrai Faux Logique utilis e dans la comparaison Vrai Sup rieur Faux Inf rieur ag a R initialiser Logique Vrai Faux Vrai R initialiser le minuteur Faux Lire le minuteur a Jila Oui Non Logique Vrai Faux R sultat de la comparaison a a Valeur du minuteur Num rique 0 Valeur du minuteur en 4294967296 millisecondes Vous venez d apprendre comment utiliser ces blocs au travers de leurs panneaux de configuration Le vrai pouvoir de ces blocs se manifeste en les conju
204. sent 3 chemins Il faudra donc que j ajoute un chemin suppl mentaire Pour cela appuyez sur la case Ajouter une nouvelle condition en haut et droite du tableau Fig 11 nant A A7 i JA 4 gt e BJO _ 2 ig A LL L 1 L L Commutateur sta S Contr le Valeur La Conditions 1 0 1 n JE 3 Lej CT Afficher 4 Vue plat 2 J ai pr sent un 3 me chemin avec une valeur de d faut de 2 Les valeurs num riques que j ai d cid d attribuer chaque chemin le seront d une mani re al atoire gr ce un bloc particulier que nous verrons tout l heure Pour le moment il s agit pour chacun des chemins de leur attribuer une valeur de d faut correspondant leur num ro 1 pour le chemin n 1 2 pour le chemin n 2 et 3 pour le chemin n 3 Le tableau se pr sente actuellement ainsi 1 O 2 1 3 2 Nous allons le modifier de la mani re suivante Fig 12 Document prot g au titre du code de la propri t intellectuelle droit d auteur 89 NXT G Lego Mindstorms Guide pratique de programmation gt at Conditions T 1 0 Ne B fi Chaque ligne tant s lectionn e en orange on portera successivement es valeurs dans le champ de saisie au dessous Cette modification a fait dispara tre la valeur z ro nous verrons pourquoi On remarquera que la valeur de d faut est coch e en ligne n 1 cela signifie que l
205. soin d ajouter une nouvelle variable pour Ki et une pour l int grale proprement dite Et ne pas oublier que nous multiplions Ks par 100 pour r soudre le probl me des valeurs d cimales Kp 1000 Souvenez vous on emploi Kp 100 aussi il est r ellement gal 10 Ki 100 Souvenez vous on emploi Ki 100 aussi il est r ellement gal 1 offset 45 Initialisation de trois variables moyenne 45 Tp 50 integral 0 l endroit o nous stockerons notre int grale Loop forever D but de Boucle pour toujours LightValue valeurlueducapteur Quelle est la valeur lue courante du capteur erreur LightValue moyenne calcul de l erreur par soustraction de la moyenne integral integral error notre nouveau terme int gral Virage Kp erreur Ki integral le terme P et le terme I Virage Virage 100 Souvenez vous pour annuler l effet du facteur 100 dans Kp powerA Tp Virage niveau de puissance pour le moteur A powerC Tp Virage niveau de puissance pour le moteur C MOTOR A direction forward power powerA transmet la commande avec la nouvelle valeur de puissance dans un bloc MOTEUR MOTOR C direction forward power powerC Commande identique l autre moteur mais en utilisant l autre valeur de puissance end loop forever fin de boucle retour au d but de boucle et recommencer nouveau Ajouter D au contr leur le contr leur PID au complet D que va t il se produire mai
206. sons la en 3 fig 3 Tout droit Tourne Tourne Noir Blanc 40 45 50 Valeurs lues Capteur Photosensible A pr sent si le niveau lumineux est inf rieur 43 nous voulons que le robot tourne gauche Si le niveau est entre 44 et 47 le robot doit aller tout droit Enfin si le niveau est sup rieur 47 le robot doit tourner droite Cette relation peut tre facilement tablie en programmation NXT G l aide de 2 commutateurs imbriqu s 2 tests faire et non 3 Cette approche fonctionne mieux que la pr c dente Nous savons maintenant que le robot peut avancer quelquefois en ligne droite Si le partage de la ligne des valeurs en 3 r gions donne de meilleurs r sultats qu en 2 r gions qu en est il si on augmente ce nombre d coupage C est ici qu on aborde le PID 1 Le P dans PID P pour Proportionnel Que se passe t il donc si on augmente le nombre de divisions dans la ligne de valeurs Il faut d abord s interroger sur le sens donner au mot Tourne lorsque le nombre de r gions d passe 3 Dans la premi re approche le robot ne pouvait faire que 2 choses tourner droite ou tourner gauche Les virages sont strictement identiques mais de Document prot g au titre du code de la propri t intellectuelle droit d auteur 162 NXT G Lego Mindstorms Guide pratique de programmation sens oppos Dans la 2 me approche on a ajout tout droit aux deux pr c dents Mais Si nous d passons 3 r gions i
207. ssaire au robot pour balayer de part et d autre du trac et revenir son point de d part Pour des robots Lego Pc sera probablement dans la plage d environ 0 5 seconde une seconde ou deux 6 Vous devez aussi conna tre quelle vitesse tournent les cycles du robot au travers de la boucle de contr le On a ici donn arbitrairement la boucle un nombre fixe de tours comme 10 000 ainsi que le temps n cessaire au robot pour accomplir ce travail ou demander au robot de chronom trer et afficher le r sultat le temps par boucle dT est le Document prot g au titre du code de la propri t intellectuelle droit d auteur 180 NXT G Lego Mindstorms Guide pratique de programmation temps mesur divis par le nombre de boucles Pour un contr leur PID complet programm en NXT G sans aucun bloc de sons le dT sera dans la plage de 0 015 0 020 secondes par boucle 7 Utilisez la table ci dessous pour calculer une s rie de valeurs Kp Ki et Kc Si vous voulez juste un contr leur P utilisez alors la ligne dans la table marqu e P pour calculer la valeur correcte Kp Ki et Kd ont tous les deux une valeur z ro Si vous ne voulez qu un contr leur PI utilisez alors la ligne suivante Le contr leur PID complet est le r sultat final la ligne inf rieure 8 Si vous avez d j multipli K par 100 pour tenir compte de l absence de valeurs d cimales ignorez cette op ration pour les calculs Ce facteur de 100 est d j
208. t tre affich es en centim tres ou en pouces Si vous activez le bouton d option gauche de la glissi re le bloc sera d clench lorsqu il d tecte un objet plus proche que la distance de d clenchement activez le bouton d option droite pour d clencher le bloc lorsqu il d tecte un objet plus loign que cette distance Utilisez la glissi re pour d finir la distance de d clenchement ou entrez directement une valeur dans la zone de saisie 0 250 si le bloc est configur en centim tres et 0 100 s il est configur en pouces La plage de d tection se situe entre O distance la plus proche et 255 cm distance la plus loign e environ pr cision 3 cm N oubliez pas que les surfaces tr s r fl chissantes peuvent tre d tect es de plus grandes distances que les surfaces non r fl chissantes Remarque si plusieurs capteurs d ultrasons fonctionnent dans la m me pi ce il se peut qu ils perturbent leurs relev s respectifs Document prot g au titre du code de la propri t intellectuelle droit d auteur 52 NXT G Lego Mindstorms Guide pratique de programmation Vous pouvez contr ler le bloc Capteur d ultrasons de mani re dynamique en connectant son plot de donn es des fils de donn es provenant des plots de donn es d autres blocs Fig 11 Le tableau ci dessous pr sente les diff rentes caract ristiques des prises du plot de donn es du bloc Capteur d ultrasons Prise Type de Plage a
209. t pas vide a Tla Texte en Texte 58 caract res au Donn es du message Le type de message sortie maximum n est pas Texte Nombre en Num rique 2147483648 Donn es du message Le type de message sortie 2147483647 n est pas Num rique a Jila Logique en Logique Vrai Faux Donn es du message Le type de message sortie n est pas Logique Voici pr sent un exemple pour illustrer ce dispositif d envoi et de r ception de messages Commen ons par le pseudo code LEO gt BONG avance jusqu ce que le capteur US d tecte un objet 25 cm puis arr te toi LEO gt BONG lit la valeur de ton capteur photosensible LEO gt BONG envoie la valeur relev e de ce capteur BONGbis en utilisant la bo te aux lettres 3 Voici quoi ressemble le programme crit en NXT G Fig 14 Document prot g au titre du code de la propri t intellectuelle droit d auteur 141 NXT G Lego Mindstorms Guide pratique de programmation 2e Message Num rique 5 HP Bo te aux lettres 3 z La valeur du capteur photosensible est adress au bloc Envoyer un message dans la bo te aux lettres 3 l aide d un fil de donn es reliant le plot Intensit du capteur photosensible au plot num rique du bloc Envoyer un message Maintenant si je dispose d un second robot appel BONGbis je peux imaginer un autre pseudo code LEO gt BONGbis v rifie la valeur num rique d pos e dans ta bo te aux lettres 3
210. t son objectif de dur e de telle sorte que son lan peut l emmener au del de sa destination Examinons maintenant la rubrique Action dans le panneau de configuration Le champ d roulant nous offre 3 choix Constante Acc l ration progressive Ralentissement progressif La s lection Constante signifie que le moteur tournera vitesse constante du d but la fin de son activation telle que programm e dans le panneau de configuration Cette disposition est int ressante quand le robot doit se d placer vitesse constante La s lection Acc l ration progressive d clenche la rotation du moteur d une mani re progressive jusqu ce qu il atteigne la vitesse programm e c est un peu comme une p dale d acc l rateur avec un limitateur de vitesse La s lection Ralentissement progressif entraine le ralentissement progressif du moteur jusqu son arr t Cette disposition est soumise une r serve Elle peut tre utilis e seulement quand le bloc Moteur est pr c d d un autre bloc Moteur r gl lui vitesse constante et sur Continuer dans la rubrique Action Suivante Il faut une vitesse initiale pour permettre au bloc Moteur d effectuer le ralentissement Cela ressemble un freinage de v hicule Sans ce bloc Moteur le pr c dant le Ralentissement progressif aura une vitesse nulle et par cons quent sera incapable de ralentir Le bloc D placer gt peut faire tourner jusque 3 moteurs la fois Cela est
211. te B i c Document prot g au titre du code de la propri t intellectuelle droit d auteur 28 NXT G Lego Mindstorms Guide pratique de programmation Fig 13 JL Texte A Je SZ g m appelle C BON Il para t tout simple mais il est puissant Nous utiliserons un nouveau terme intitul Chaine Une cha ne est une collection de lettres chiffres espaces caract res sp ciaux ou une combinaison d entre eux Voici quelques exemples CECIESTUNECHAINE Qu il en soit ainsi 123456789 IR E Chaque ligne est une cha ne y compris celle ci Ce bloc a cette particularit de contenir 3 cha nes diff rentes et de les r unir en une seule sous forme de phrase ou de longue cha ne On appelle cela une concat nation Trois champs sont mis votre disposition et ont comme rep res A B et C Ces champs peuvent tre saisis manuellement par vous m me ou tre remplis par l interm diaire des plots de saisies Gardez en m moire que le champ A est toujours droite le champ B au centre et le champ C droite de la concat nation Cet ordre ne peut pas tre chang Dans l exemple ci dessus A contient Je B contient m appelle et C contient BONG ces 2 derniers pr c d s d un espace Le r sultat sera Je m appelle BONG quand il sera affich sur l cran Et si je souhaite lire le r sultat les blocs seront assembl s ainsi Fig 14 Document prot g au tit
212. te pour Lumi re lt inf rieur 25 Tant que le niveau lumineux est inf rieur 25 BONG avance D s que cette valeur est atteinte les moteurs B et C s arr tent et BONG n avance plus A noter que le g n rateur de lumi re est activ Bloc Attendre Capteur Ultrasons Fig 6 Document prot g au titre du code de la propri t intellectuelle droit d auteur 62 NXT G Lego Mindstorms Guide pratique de programmation EI Montrer cm Centim tres z Il est repr sent ci dessus avec la configuration suivante c bl sur le port 4 fin d attente pour Distance lt inf rieur 60 cm Tant que cette distance est inf rieure 60 cm BONG avance D s que cette valeur est atteinte les moteurs B et C s arr tent et BONG n avance plus Bloc Attendre Boutons NXT Fig 7 Bouton Entr e Bouton Gauche Capteur z Ey Bouton A yf Bouton Droite 3 a Botons 2 UR Action O Enfonc ER O 4 Rel ch O 4 Heurt Il est repr sent ci dessus avec la configuration suivante Attendre jusqu ce que le bouton fl che droite du NXT soit rel ch Quand cet v nement survient les moteurs B et C s arr tent et BONG n avance plus Bloc Attendre Capteur Rotation Fig 8 Document prot g au titre du code de la propri t intellectuelle droit d auteur 63 NXT G Lego Mindstorms Guide pratique de programmation Il est repr sent ci dessus avec la confi
213. teur Vous allez pr sent choisir dans la zone Contr le l option capteur Vous remarquerez que le Capteur tactile est s lectionn par d faut Mais dans la zone Capteur le champ de saisie gr ce un sous menu d roulant permet de s lectionner celui utile pour votre programme On y trouve m me ceux que vous avez acquis et install s en compl ment du kit 8527 PF IRLink dans notre cas en fin de liste Fig 7 Document prot g au titre du code de la propri t intellectuelle droit d auteur 70 NXT G Lego Mindstorms Guide pratique de programmation IIS ont t d ja vus dans la le on n 5 et sont d un usage simple La seule chose que vous devez d terminer est le point de d clenchement qui provoquera la sortie de boucle Ceci a t galement abord dans cette le on Nous allons prendre l exemple du capteur ultrasons Fig 8 aj W Contr le Capteur x LE Port 1 2 3 94 sH Capteur E Ultrasons z TY Jusque EE em mt A P d OF PE N Distance lt 7 100 1 Montrer v H Compteur 1 Montrer cm Centim tres x Dans cet exemple le capteur ultrasons est param tr avec un point de d clenchement 1 00 m tre A noter galement l activation de la case compteur le plot est visible l entr e de la boucle pour permettre de r cup rer la valeur du nombre de cycles Les bloc D PLACER fait avancer le robot d une rotation suivi d une l g re pose
214. tion Lorsque le logiciel NXT Mobile Application d marre il recherche tous les programmes de votre NXT de mani re les rendre accessibles Vous pouvez alors activer l un d entre eux en s lectionnant dans le menu options du portable ou utiliser ces raccourcis Sur la molette de navigation Up Down Left Right Sur le clavier 4 Pour personnaliser les raccourcis 1 choisir Options 2 s lectionner le programme concern et appuyer sur More puis sur Move Prg 3 S lectionner la touche associer au programme et choisir More puis sur Place Prg Quand un programme est activ des messages peuvent tre adress s en appuyant sur les touches num riques de 0 9 Exemple A t l charger partir du site LEGO NXT Mobile Application Documentation zip zip 1MB Ouvrir partir de votre ordinateur les 2 programmes tests en utilisant le logiciel NXT G puis installez les sur votre NXT vous savez comment faire n est ce pas SendMsg rbt Document prot g au titre du code de la propri t intellectuelle droit d auteur 146 NXT G Lego Mindstorms Guide pratique de programmation Raccorder le capteur tactile au port 1 Quand le capteur est appuy le NXT adresse un message votre portable pour prendre une photo si votre potable dispose de cette fonction Raccorder ce m me capteur au port 2 et appuyer Cela d clenche une sonnerie sur votre portable Raccord au port 3 appuyer su
215. tion particuli re Il a alors compar sa perception du comptage 1 potato 2 potato 3 potato Ce n est peut tre pas de la m canique de pr cision mais cela fonctionne assez bien dans ce que nous appellerons l ing nierie pratique La boucle de temps dT est de 0 014 secondes par cycle d termin e en ex cutant simplement le programme 10 000 fois et en affichant sur l cran du NXT le temps coul En utilisant la table ci dessus pour un contr leur PID on arrive au r sultat suivant Kp 0 60 Kc 0 60 200 120 Ki 2 Kp dT Pc 2 120 0 014 0 8 4 2 arrondi 4 Kd Kp Pc 8 dT 120 0 8 8 0 014 857 Document prot g au titre du code de la propri t intellectuelle droit d auteur 181 NXT G Lego Mindstorms Guide pratique de programmation Apr s plusieurs essais et r glages les valeurs suivantes ont t retenues 220 7 et 500 pour respectivement Kp Ki et Kd Sans oublier que tous les K s taient affect s du facteur 100 ce qui signifie que les valeurs r elles sont respectivement 2 2 0 07 et 5 Comment les variations des Kp Ki et Kd modifient les performances des robots Le tableau et la m thode d crits ci dessus constituent un bon point de d part pour optimiser votre PID C est aussi une aide pour une meilleure compr hension du r sultat selon l augmentation ou la diminution de l un des trois Ks La table ci dessous est disponible sur beaucoup de sites Web
216. torms Guide pratique de programmation Bloc 1 Choisir fichier LEGO Son nain ChFoerau e O J Torani EJ rave C Jom 2 Contr le Jouer F Arr ter Loud Ail Volume d sil 75 Metre Pg Fonction Lei R p ter d Attendre sl Attendre la fin Bloc 2 Choisir fichier HELLO Action Mb Fichier audio JP Tonait C Fichier CCR Hooray D Contr le b Joue E Arte nes Laughing 02 a dl Volume ail 5 _ P Fonction T R p ter d Attendre 2 f Attendre la fin D Bloc 3 Choisir son Click Son Hy Action Wh Fichier audo J gt Tonsi C Fichier AL j Error 02 Canfas B Jouer E Arr te noan Hydraullc 02 rydraulc 03 g sl 25 C7 R p ter d AMtendre y ANo Attendre la fin LL Bloc 4 J ne D Choisir son Blips25 Son i Hy Actior Wij Fichier aucio J gt Tonat C Fichier ALL Cic r Corne W Contoe B Jouer M Arr ter Sr Fanfare Hara un ilf Volume Ml a nction E R p ter Attendre f PA Attendre a fin Vous savez maintenant ajouter des sons pour personnaliser encore plus votre robot mais sachez aussi que les sons peuvent tre de pr cieux auxiliaires pour tester vos travaux Placer un son l int rieur d un programme complexe facilite vos recherches en cas de correction De m me placer un son en t te d un bloc moteur en donnant des tonalit s diff rentes permet de v rifier le mouvement droite gauche ou tout dro
217. tout se termine sur la boucle EXTERNE un dernier bloc DEPLACER jusqu ce que le point de d clenchement du capteur SONORE est atteint ce moment c est la sortie de boucle et le programme s arr te Rappelez vous dans le cas de BOUCLES IMBRIQUEES le programme commence toujours par la boucle de plus bas niveau et se termine par la boucle de 1er niveau En conclusion retenez que le bloc BOUCLE est un bloc puissant et tr s utile Aussi je vous conseille de vous exercer en utilisant toutes les options vous l emploierez souvent pour les nombreuses t ches r p titives de vos robots Document prot g au titre du code de la propri t intellectuelle droit d auteur 19 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 5 CHOISIR DECIDER Cette le on couvre un dernier bloc de la palette Commun Lorsque vous l aurez assimil e vous serez en mesure d offrir vos robots des talents suppl mentaires notamment de faire des choix parmi de multiples et possibles actions Mais d abord rappel des r gles Premi re r gle familiarisez vous avec les outils de programmation 2 me r gle les capteurs doivent tre connect s aux ports d entr e 1 2 3 amp 4 et les moteurs doivent tre connect s aux ports de sortie A B amp C 3 me r gle Un bloc ne peut accomplir qu une seule t che la fois Il faut autant de blocs que de t ches accomplir 4 me r gle un programme NXT G se ter
218. tre du code de la propri t intellectuelle droit d auteur 51 NXT G Lego Mindstorms Guide pratique de programmation EI Montrer cm Centim tres Le port de connexion de d faut est le 4 Le point de d clenchement est la valeur pr cise dans une plage de nombres o se produit un changement de conditions Par exemple vous pouvez programmer votre robot pour qu il attaque quand un objet s approche de moins de 50 cm de la port e maximale du capteur d ultrasons Le point de d clenchement vaut dans ce cas 50 La zone Comparer s utilise comme celle du capteur sonore Astuce r glage du point de d clenchement pour un capteur d ultrasons Si vous voulez qu un intrus approchant de votre robot g n re le signal vrai orientez le capteur d ultrasons vers l intrus ou tout objet poss dant la m me r flectivit en pla ant celui ci diff rentes distances du capteur Observez les relev s ultrasoniques affich s dans la zone jaune de r troaction Si l intrus g n re un relev ultrasonique d environ 127 cm la distance la plus proche selon laquelle vous voulez l autoriser approcher du robot fixez la valeur de d clenchement 127 De la sorte si un objet poss dant la m me r flectivit s approche de plus de 127 cm le bloc Capteur d ultrasons g n re un signal Vrai En connectant un fil de donn es un bloc D placer ou Moteur vous pouvez ordonner votre robot d attaquer ou de reculer Les valeurs peuven
219. ue si la valeur relev e est inf rieure 45 le robot tournera gauche et si elle est sup rieure 45 il tournera droite Pour l instant la mani re de virer ne sera pas abord e Disons que sur une ligne plut t rectiligne les virages seront mieux ma tris s Pour un trac pr sentant de nombreuses courbes il faudra pr voir des virages plus serr s Dans le cas d une trajectoire rectiligne on pr voira un niveau de puissance gal 50 pour la roue rapide et 20 pour la roue lente Pour des virages plus serr s sur une trajectoire courbe on choisira un niveau de 30 pour la roue rapide et un freinage pour la roue lente Quels que soient les niveaux de puissance il seront identiques pour les 2 virages droite et gauche il faudra seulement inverser les valeurs des 2 moteurs Cette mani re de suivre un trac manque d l gance Elle peut para tre suffisante pour des trajectoires peu pr s rectilignes mais quand il s agit de trajectoires sinueuses il faut demander au robot de serpenter le long du trac puisqu il ne sait faire que 2 choses tourner gauche ou droite De plus ce dispositif ralenti le temps de parcours et offre un spectacle d solant Dans cette approche le robot ne suit jamais une trajectoire rectiligne m me s il est parfaitement align sur le bord du trac Cela ne para t pas tr s efficient n est ce pas Proc dons autrement Au lieu de diviser la ligne gradu e fig 2 en 2 parties divi
220. uez au terme Kp une valeur raisonnable Qu est ce qui est raisonnable a choisissez la valeur maximale du contr le de puissance du moteur 100 et divisez la par la valeur d erreur utilisable maximale Pour notre robot suiveur de trac nous avons suppos que l erreur maximale tait de 5 donc notre projection pour Kp est 100 5 20 Quand l erreur est gale 5 la puissance du moteur sera de 100 unit s Quand l erreur sera gale z ro la puissance du moteur sera assise au niveau de Tp b Ou alors fixez la valeur de Kp 1 ou 100 et notez le r sultat c Si vous avez introduit un multiplicateur pour les K s de 100 fois leur valeur r elle vous devez en tenir compte ici 1 sera saisi comme 100 20 comme 2000 100 comme 10000 4 Lancez le programme et observez le comportement du robot S il ne peut pas suivre le trac et se d place l aveuglette alors augmentez la valeur de Kp S il oscille d une mani re extravagante alors diminuez la valeur de Kp Continuez modifier la valeur de Kp jusqu ce que vous trouviez celle qui fournit une oscillation sur le trac acceptable Nous appellerons ce Kp Kc le gain critique dans la litt rature PID 5 Utilisez la valeur Kc comme Kp Lancez le programme du robot et essayez de d terminer la vitesse de l oscillation Cela peut tre d licat mais heureusement le relev n a pas besoin d une grande pr cision La p riode d oscillation Pc repr sente le temps n ce
221. uhaite comparer le message entrant un message de test entrer le texte ou le nombre de test si vous avez respectivement choisi le format Texte ou Num rique ou utilisez les cases d option pour choisir la valeur logique vrai ou faux du test 3 Choisissez le num ro de bofte aux lettres o le message entrant sera stock Le bloc Recevoir message peut tre contr l de mani re dynamique en connectant son plot de donn es des fils de donn es provenant des plots de donn es d autres blocs Fig 13 Document prot g au titre du code de la propri t intellectuelle droit d auteur 140 NXT G Lego Mindstorms Guide pratique de programmation Le tableau ci dessous pr sente les diff rentes caract ristiques des prises du plot de donn es du bloc Recevoir message Type de Plage admise Signification des valeurs Prise ignor e donn es quand a le Bo te aux Num rique 1 10 Bo te aux lettres consulter _ lettres a Wla Texte en Texte 58 caract res au Valeur de r f rence de la Le type de message entr e maximum comparaison n est pas Texte a zla Nombre en Num rique 2147483648 Valeur de r f rence de la Le type de message _ entr e 2147483647 comparaison n est pas Num rique a 41e Logique en Logique Vrai Faux Valeur de r f rence de la Le type de message entr e comparaison n est pas Logique Message Logique Vrai Faux Vrai si un message est re u re u c est dire que la bo te aux lettres n es
222. uivi de trac le plus simple celui qui ne fait rien d autre que virer droite ou gauche Ce dispositif a un tr s mauvais d passement Variation du temps est le temps pris par le robot pour prendre en compte un grand changement Dans notre cas un grand changement survient quand le robot proc de un virage Alors que le robot r pond la courbe il corrigera l erreur puis le d passement par une certaine valeur Il doit alors corriger ce d passement et revenir dans l autre sens Il doit alors corriger ce d passement bien vous avez l id e Pour r agir une erreur le robot aura tendance osciller autour de la position souhait e Variation du temps est le temps pris par cette oscillation pour revenir z ro Variation du temps r pond fortement tant au terme de Kd qu celui de Ki Plus Ki est grand et plus Variation du temps est long Plus Kd est grand et plus Variation du temps est court Document prot g au titre du code de la propri t intellectuelle droit d auteur 182 NXT G Lego Mindstorms Guide pratique de programmation L Erreur l quilibre est l erreur restante alors que le dispositif fonctionne sans tre d rang Pour notre suivi de trac ce serait comme suivre une trajectoire rectiligne Les contr leurs P et PD r solvent souvent cette sorte d erreur Elle peut tre r duite en augmentant Kp mais cela peut d clencher une oscillation du robot Incluant un terme I et en augmentant K
223. un bloc sp cial capable d appr cier le contenu du tiroir et de signaler s il est vide ou non Il ne me reste plus qu vous r v ler ce nouveau bloc que j ai baptis INSPECTEUR Le bloc INSPECTEUR est tr s astucieux Il r cup re une r ponse OUI ou NON logique et selon cette r ponse d clenche 2 actions diff rentes L action 1 est prise en compte si la r ponse est OUI l action 2 si cette r ponse est NON nous verrons cela plus en d tail l occasion d une autre le on Je peux utiliser ce bloc pour valuer le contenu du bloc TIROIR J examinerai d abord les plots de la rubrique Vide Si le contenu les informations ou tout simplement les donn es data en anglais fournies sont OUI Le bloc INSPECTEUR confirmera un OUI sur l cran Si les donn es sont NON l INSPECTEUR confirmera un NON sur l cran La figure ci apr s illustre bien la situation quand le programme est ex cut L cran affiche Remplir Tiroir avec 7 Tenons parce que l inspecteur a r cup r en entr e un OUI provenant de la rubrique VIDE donne l ordre de remplir un tiroir qui est vide Fig 9 Document prot g au titre du code de la propri t intellectuelle droit d auteur 35 NXT G Lego Mindstorms Guide pratique de programmation Remplir Tiroir avec 7 Tenons Tiroir non vide Inspecteur non Je souhaite maintenant changer la pi ce par ROUE et le nombre par 4 Mais aussi changer la r ponse logique par NON L inspecteur aya
224. ur ni de nom Ensuite au bloc FORME est raccord un clavier qui permet de changer seulement et uniquement la forme contenue dans ce bloc Enfin un cran sp cial raccord au bloc ne peut afficher que la forme et rien d autre ni un nom ni des l gumes ou ingr dients Et maintenant quelques questions Si je d branche le clavier puis je afficher la forme conserv e dans le bloc Oui mais condition que l cran soit raccord Si je d branche l cran puis je toujours changer la forme l int rieur du bloc Oui nouveau mais condition que le clavier reste raccord On pourrait aussi d finir le bloc de cette fa on Le bloc FORME re oit une Forme comme une ENTREE partir du clavier Le bloc FORME donne une Forme comme une SORTIE sur l cran Il y a dans cette description 2 termes que vous devez m moriser Entr e et Sortie input et output en anglais Document prot g au titre du code de la propri t intellectuelle droit d auteur 32 NXT G Lego Mindstorms Guide pratique de programmation Chaque fois que vous penserez bloc rappelez vous toujours qu une information re ue dans un bloc est une Entr e et qu une information donn e ou partag e est une Sortie Nous allons maintenant travailler sur un bloc offrant quelques options suppl mentaires Voici un nouveau bloc factice que j appelle TIROIR Il est destin recevoir des pi ces LEGO Ce bloc peut contenir 3 sortes d info
225. ur plafond Pour vous faire une id e voici quoi ressemble ce programme Fig 15 a Nous allons nous int resser la boucle int rieure Fig 14 Bloc 1 Bloc Boucle Bloc 1 capteur tactile chaque fois qu il est activ il met un top sonore bloc 2 Bloc 3 variable num rique initialis e la valeur z ro valeur de d part dans ce bloc on ne fait que lire le contenu de la variable Bloc 4 Math option pour effectuer une addition Ce bloc comporte 2 cases A et B Je tire un fil entre Bloc 3 et A pour mettre dans A la valeur crite dans le bloc c d z ro Dans B j cris une valeur 1 Le r sultat devient A B 1 Bloc 5 on crit dans la variable la nouvelle valeur qui devient 1 en tirant un fil entre les plots des blocs 4 et 5 Bloc 6 on transforme la valeur num rique en texte pour l afficher dans le bloc 7 Un fil est tir du plot bloc 4 vers plot bloc 6 Bloc 7 On tire un fil entre plot T bloc 6 vers plot T bloc 7 qui affiche 1 Cette boucle vient d tre ex cut e une fois Elle va se r p ter plusieurs fois tr s exactement 4 fois puisque je l ai d cid ainsi Examinons maintenant le panneau de configuration de la boucle Fig 15 Document prot g au titre du code de la propri t intellectuelle droit d auteur 41 NXT G Lego Mindstorms Guide pratique de programmation Pour toujours Caoteur Temos Comoter Logique Compter 5 GEE Compteur Da
226. ur un num ro envoie le programme correspondant sur le NXT Proc dure 1 Vous devez pouvoir disposer de bluetooth sur votre ordinateur afin d installer le logiciel NXT Mobile Application sur votre appareil t l phonique portable 2 Votre t l phone portable doit pouvoir fonctionner en bluetooth et interpr ter le langage Java JSR 82 Assurez vous que votre op rateur vous alloue une zone r serv e aux applications et que la configuration de votre appareil vous permet d installer java Vous devrez peut tre modifier la configuration pour utiliser les applications java consulter le manuel de l appareil www mindstorms com bluetooth Un tableau r capitulatif des appareils compatibles est inclus dans le paquet de t l chargement du logiciel 3 Le logiciel NXT Mobile Application est compatibles avec la brique NXT versions FW 1 03 AVR 1 01 BC4 1 01 et suivantes T l chargement et installation 1 Assurez vous que votre t l phone portable est en mesure de fonctionner avec cette application 2 T l chargez le logiciel NXT Mobile Application sur votre ordinateur 3 Assurez vous que la liaison Bluetooth est activ e sur votre t l phone et le NXT 4 Recherchez sur votre ordinateur le fichier NXTmobile jar sp cifique votre appareil ils sont rang s dans des dossiers par type et marque puis installez le sur votre t l phone PC rechercher l application t l charg e puis clic droit sur le fichier Choisir Sen
227. vec les moteurs ce n est jamais fini Il y a encore d autres astuces notamment des capteurs internes comme le chronom tre et la rotation Nous en reparlerons l occasion d une le on sur les capteurs Document prot g au titre du code de la propri t intellectuelle droit d auteur 18 NXT G Lego Mindstorms Guide pratique de programmation Lecon n 3 AFFICHER et PLUS Rappel ici des r gles Premi re r gle familiarisez vous avec les outils de programmation 2 me r gle les capteurs doivent tre connect s aux ports d entr e 1 2 3 amp 4 et les moteurs doivent tre connect s aux ports de sortie A B amp C 3 me r gle Un bloc ne peut accomplir qu une seule t che la fois Il faut autant de blocs que de t ches accomplir La coutume tant de se pr senter les premiers mots seront pour donc pour la communaut du Mindstorms NXT LEO gt BONG aimerais tu te pr senter et dire qui tu es J aimerais que tu affiches Salut de BONG sur ton petit cran Afficher Le programme ne peux pas tre plus simple Pour cela nous allons utiliser le bloc AFFICHER choisir dans la palette Commun Voici quoi ressemble ce bloc quand il s affiche par d faut Dans la zone Action vous avez un menu d roulant qui nous offre plusieurs options Choisissons Texte Le texte Le panneau de configuration change d aspect Dans la zone Texte encadr e de rouge tapez la place de
228. vent tre d finies l aide de la glissi re tre entr es ou tre fournies de mani re dynamique par des fils de donn es Les zones de Saisie sont affich es en gris lorsque des fils de donn es sont connect s Le menu d roulant permet de choisir l une des deux op rations disponibles Dans la plage Hors de la plage Ce bloc v rifiera les instructions suivantes A est l int rieur de la plage qui commence par B et se termine par C A est en dehors de la plage qui commence par B et se termine par C La r ponse sera VRAI ou FAUX en fonction de ces v rifications Un petit exemple en pseudo code pour illustrer son utilisation LEO gt BONG G n res un nombre al atoire compris entre 1 et 100 affiches cette valeur sur ton cran et dis moi moi si cette valeur est comprise entre 45 et 70 Commencez par crire ce d but de programme Fig 12 Document prot g au titre du code de la propri t intellectuelle droit d auteur 113 NXT G Lego Mindstorms Guide pratique de programmation Ligne 3 Li 4 X 3 Y 40 hair pa A Texte vide Texte 45 et 70 He Action a Texte 5 Position 1 Afficher w Effacer 45 et 7 ai Texte 215 45 et 70 x 2 Y 3 Ligne 4 Ajoutez pr sent le bloc PLAGE configur ainsi Fig 13 Ligne 3 Ligne 4 X 3 Y 40 a EE Texte vide St RHE 70 Hi Op ration Dans la page a s
229. xemples utiles Le on n 12 BLUETOOTH 131 Introduction Les fonctionnalit s Compatibilit Mettre plusieurs NXT en communication a Activation de bluetooth si cette fonction n est pas activ e b Renommez le NXT si n cessaire c Mise en place d une connexion Bluetooth NXT NXT Les blocs Message Bloc Envoyer un message Bloc Recevoir un message NXT et le t l phone portable T l charger le logiciel NXT Mobile Application T l chargement et installation Se connecter Utilisation courante Utilisation avanc e et exemples de programmes Le on n 13 TRUCS et ASTUCES PROGRAMMES UTILES 149 D placements du robot Utilisation de l cran NXT STOCKAGE PERMANENT DE DONNEES dans la m moire du NXT PROGRAMMES UTILES Le on n 14 UN CONTROLEUR PID pour ROBOTS 160 CHAPITRE 1 El ments de base 1 Le P dans PID P pour Proportionnel 2 Virage et niveau de puissance r elle du moteur 3 Pseudo Code pour un Contr leur P CHAPITRE 2 Un programme simple d un contr leur P ID A Analyse de la routine Mon Bloc PID_LF_Calib B Analyse du programme principal CHAPITRE 3 Ajouter l au contr leur le contr leur PI Ajouter D au contr leur le contr leur PID au complet CHAPITRE 4 r glage d un contr leur PID Pour r gler votre Contr leur PID Document prot g au titre du code de la propri t intellectuelle droit d auteur 123 124 127 128 131 132 133 134 134
230. y Observez maintenant la fen tre du bas Elle est tr s importante c est le panneau de configuration du bloc D placer Chaque fois que vous s lectionnerez un bloc dans la zone de travail son panneau de configuration sera automatiquement affich Bien entendu il est diff rent pour chaque bloc Document prot g au titre du code de la propri t intellectuelle droit d auteur 11 NXT G Lego Mindstorms Guide pratique de programmation C est dans ce panneau que le param trage du bloc D placer se fera C est ici que vous choisirez les caract ristiques des moteurs que vous voulez contr ler C est une sorte de tableau de bord Les indications qui apparaissent sont celles de d faut Ce bloc est d j op rationnel Si les param tres ne vous conviennent pas vous pouvez les modifier Examinons le d tail Vous remarquerez que chaque zone est caract ris e par une minuscule ic ne qu on retrouve sur le bloc La zone Port indique les moteurs que vous voulez contr ler Ici B et C On peut les modifier en cochant d cochant les cases correspondantes Si on conserve B et C il faut que les connexions entre les moteurs et le NXT soient respect es Dans ce cas les moteurs seront synchronis s et tourneront en marche avant ou en marche arri re la m me puissance Si vous s lectionnez trois moteurs les moteurs B et C seront synchronis s La zone Direction indique si les moteurs doivent tourner en marche avant ou en marche
231. z de toute mani re une chance votre robot S il semble s carter du bord du trac au lieu de s en rapprocher la cause la plus probable est que vous avez invers les sens des Virages Corrigez Kp 10 et v rifiez le r sultat Si cela rectifie les sens de Virage alors revenez Kp en conservant 10 et changent les signes dans les deux lignes de la mani re suivante powerA Tp Virage powerC Tp Virage II y a deux param tres variables et une constante dans ce contr leur P La constante est la valeur moyenne la moyenne des lectures du capteur photosensible pour le blanc et le noir Vous devrez donc crire un court programme pour valuer les niveaux lumineux sur votre surface d volution de votre robot Vous avez besoin de d terminer une valeur noir et une valeur blanc Calculez la moyenne et placez la dans le programme du contr leur P dans la variable Moyenne La plupart des lignes qui vont suivre supposent que vous avez r alis ce petit programme ex cut par le robot La valeur de Kp et la puissance cible Tp sont des param tres variables Un param tre variable doit tre choisi par t tonnements et approximations successives Kp contr lera la vitesse du contr leur dans ses mouvements de retour au bord du trac quand il s en est loign Tp contr lera la vitesse du robot dans son d placement le long du trac Si la ligne est pratiquement rectiligne vous pouvez utiliser une grande valeur pour Tp afin de
Download Pdf Manuals
Related Search
Related Contents
Harrington Hoists CF4 User's Manual User`s Information Manual - Weil Der D-Link Wireless Connection Manager Parole à l`exil janvier 2014 Exhibitor Service Manual - Financial Planning Institute Emerson SR600 Owner's Manual USER MANUAL Serviços de Comunicações DIFF`AIRGEL Copyright © All rights reserved.
Failed to retrieve file