NXT-G, leçon n° 14 : Le PID, un contrôleur intelligent

Pour expliquer certains fonctionnements, principes et fondements.
fraisse
Level 5
Level 5
 
Messages: 128

Messagepar fraisse » Mer Jan 19, 2011 8:38 pm

Image

Etant débutant , j'avais fait un programme plus simple . Je suis parti du fait que je mets le capteur sur le noir du test pad 8527 .Si le robot effectue 0.3 rotation sur l'un des moteurs le capteur se retrouve forcément sur blanc 0. Le calcul de la moyenne
s'en trouve facilité .
Dans la boucle principale (fig 12 ) j'ai l'impression que gray est à peu prés à 50 d'où est soustrait la luminosité actuelle qui varie de 0 à 100 soit une valeur de sortie ERREUR de -50 à +50 .Je ne vois pas de plage -5 +5 .

Dans mon programme kp est de l'ordre de 0.7 0.8 (nouvelle version acceptant les nombres à virgule) pour une puissance de 25 dans le bloc déplacer .

Mes questions portent :
-le kp me suis je trompé? entre l'article et la fig 12 je ne comprends pas
- la puissance : comment agit elle sur la précision du parcours ? (inertie des moteurs)
-comment régler le paramètre durée sur le bloc déplacer quand on entre des données par fil ( illimité , degrés , rotations , indifférent )?
-peut on débrancher le robot à chaud ou faut il faire la procédure de débranchement de périphériques ( mais alors il faut arrêter le programme mindstorm) ?

Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Jeu Jan 20, 2011 7:33 pm

Salut à toi et bienvenue parmi les NXTistes, :hello:

Je vais essayer de répondre à toutes tes questions.

Commence par utiliser le programme de la fig. 11 du guide NXT-G 1.1.
Il permet d'afficher la valeur moyenne, histoire de vérifier le calibrage.
Ce programme utilise une routine qui est un MON BLOC, lequel pourra servir dans d'autres programmes.

1 ) Tu as simplifié le calcul en supposant qu'une rotation de 0,3 suffisait pour détecter les zones noire et blanche. Soit, çà peut marcher pendant un moment, correspondant à l'état neuf de ton moteur. Mais avec le temps, il prendra du jeu, il s'encrassera, les frottements augmenteront, etc.. Donc ce réglage de 0,3 il faudra le revoir et le modifier (de combien? Par tâtonnement? …).
Je dis souvent que le NXT doit tout calculer, sans se préoccuper des situations futures. Il faut donc trouver un algorithme qui réponde à TOUTES les situations, actuelles et futures. Le programme peut sembler plus complexe, mais il répond à toutes les situations.

2 ) Tu as oublié (ou tu n'as pas remarqué) que le capteur est placé sur le bord du tracé, puisque par définition il doit le suivre; donc il "voit" la valeur de la luminosité moyenne théorique, c'est-à-dire 50 (qui est le point de déclenchement pour les moteurs). Quand il s'écarte de cette valeur, l'erreur est égale à +/- (50 - gris). Si Gris est de l'ordre de 45, la plage est bien de +/- 5.

3 ) La puissance joue sur la vitesse du moteur, donc sur le facteur temps. Il faut laisser le temps au robot de rectifier sa trajectoire, et quand le moteur tourne trop vite, il risque de partir en vrille. Il faut donc lui trouver la bonne vitesse, ni trop lente, ni trop rapide.

4 ) Le paramètre durée n'est pas utilisé. Le fil de données est raccordé au plot "Direction", qui joue sur le synchronisme des moteurs. Le plot utilise la plage -100 à +100. Quand la valeur est < 0 "Direction" agit sur le moteur gauche, quand elle est > 0, elle agit sur le moteur droit.

5 ) Je présume que ton robot est raccordé à ton PC par un câble USB, et que tu ne disposes pas de la liaison Bluetooth. Il suffit que le programme soit installé sur ton NXT pour qu'il puisse agir.
Tu peux débrancher ton câble USB avant de lancer le programme installé sur le NXT.

N'hésite pas à poser des questions sur le PID qui est un sujet combinant à la fois les calculs et l'expérimentation. ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

fraisse
Level 5
Level 5
 
Messages: 128

Messagepar fraisse » Jeu Jan 20, 2011 11:03 pm

Image

Bonsoir ,


En attendant ta réponse , j'ai pondu un programme minimal ce matin avec 2 simplifications :
-gris est remplacé par une constante (je l'ai bougée de 30 à 70 pour voir ) .
-kp = 1
Ce qui donne une boucle très ramassée (gris -luminosité instantanée >moteur) .ça marche plutôt bien si la puissance moteur est à 25 , et gris compris entre40 et 60 y compris les 2 virages en épingle entourant la zone start .
J'ai fait un " mon bloc " d'affichage avec une tempo de 5 s que j'ai mis juste après Erreur pour voir ce qui se passait .Les moteurs continuant de tourner pendant la tempo , ça ne marche pas .J'ai arrêté les moteurs avant lecture , mais là , ils étaient arrêtés dans le cycle suivant avant d'avoir démarrés .

Donc , j'ai sorti ce qui me sert à la visualisation de " erreur "de la boucle , et la boucle est contrôlée par un compteur .Tous les 1000 cycle , je récupère la valeur
de erreur .Les 3/4 du temps erreur est bien dans une zone -5 +5 , mais le restant ,on se trouve avec des valeurs -20 +20 et même + - 40 de temps en temps .Le robot se dandine mais ne quitte pas la piste noire .
Je vais reprendre tes articles et ta réponse .En attendant , je m'amuse bien . merci

Avatar de l’utilisateur
Mackhdo
Level 3
Level 3
 
Messages: 38

Messagepar Mackhdo » Lun Jan 24, 2011 11:11 am

Sinon aucun rapport direct avec le topic mais une astuce connu qui pourrais te servir fraisse:

Plutôt que de photographier ton écran il existe une touche clavier appelé "Impr écran" en général, situé près de la touche F12 en général.

Cela te permet de copier ce que tu as à l'écran et de le coller dans un éditeur d'image de style Paint.

Ainsi tu peux facilement mettre l'image sur un forum.
Qui fait le malin tombe dans le ravin

Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Lun Jan 24, 2011 2:08 pm

fraisse a écrit:J'ai fait un " mon bloc " d'affichage avec une tempo de 5 s que j'ai mis juste après Erreur pour voir ce qui se passait .Les moteurs continuant de tourner pendant la tempo , ça ne marche pas .J'ai arrêté les moteurs avant lecture , mais là , ils étaient arrêtés dans le cycle suivant avant d'avoir démarrés .

En attendant , je m'amuse bien . merci


Tu peux également, si le coeur t'en dit, enregistrer les données et les récupérer sur un tableur au lieu de les afficher sur le NXT.
Pour réaliser ce travail, jette un oeil sur la "leçon n° 15 : L'enregistrement des données"
topic3791.html ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

JD23
Level 2
Level 2
 
Messages: 12

Messagepar JD23 » Lun Fév 07, 2011 10:39 pm

http://nxtprograms.com/NXT2/segway/steps.html

Bonsoir, j'ai essayer de suivre tout le topic, mais mon niveau est assez faible et je ne comprends pas grand chose !

Je suis en train de faire une sorte d'exposé sur le Segway, pour le finaliser je souhaiterai montrer le principe gyroscopique grâce à un robot segway. Je me suis donc lançais dans le programme ci dessus. J'ai construit le robot en suivant à la lettre les informations. J'ai téléchargé le programme. Malheureusement le programme m'annonce une erreur provenant de "fichiers manquant" à l'entrée dans le boitier. Il est vrai que le programme téléchargé est séparé en trois parties (Pourquoi ???).

Je vous demande plusieurs choses :

L'erreur provient elle de moi ? Ou bien du programme pourtant officiel ?
Si c'est bien moi, que n'ai-je pas fait ? Posez moi des questions ...

J'ai aussi à ma disposition un gyro' NXT. Pensez vous connaitre un programme avec instructions de construction pouvant me permettre d'illustrer le principe gyroscopique en passant par le logiciel sur CD fournie dans la boite v2 ?

Merci & bonne soirée !


Le petit nouveau ...

Avatar de l’utilisateur
Alban42800
Level 11
Level 11
 
Messages: 2473
Localisation: Loire (42)
Âge: 51 ans
expertgbbexpertnxtvainqueurconcours

Messagepar Alban42800 » Mar Fév 08, 2011 12:49 am

Salut,
Passe te présenter dans la section prévue...

Le robot de nxtprograms n'utilise pas le capteur gyro, la mesure est différente (cela dit il marche bien avec le capteur de lumière/couleur, j'ai testé).
Passe voire sur le site hitechnic : http://www.hitechnic.com/blog/gyro-sensor/htway/ pour utiliser leur capteur.

Sinon pour ton erreur je pense que les "blocs" ne sont pas trouvés à la compilation. Il faut les mettre dans le bon répertoire, mais là je n'ai pas l'info... crée un bloc pour voir ou il est sauvegardé. ;)

Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Mar Fév 08, 2011 3:51 pm

Salut,
J'ai également testé ce programme, il fonctionne bien.

Il faut vérifier que les MonBlocs se trouvent bien dans la Palette personnalisée. Sinon, menu "Modifier" > "Gérer la palette personnalisée", et faire le nécessaire. S'assurer également qu'il n'y a pas de "Bloc rompu" dans le programme principal (voir guide de programmation vers.2.0 p.77).

Pour réaliser le programme PID adapté à un segway, il faut que le MonBloc capteur photosensible soit réécrit en fonction du capteur gyroscopique (pour déterminer la valeur de référence).
Il suffira par la suite de le mettre à la place de l'ancien dans le programme principal, en respectant les fils de données.
(un programme principal peut contenir des MonBlocs qui rendent ce programme plus court et plus lisible. Il ne faut jamais hésiter à écrire des MonBlocs, même s'ils ne sont utilisés qu'une seule fois.) ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

JD23
Level 2
Level 2
 
Messages: 12

Messagepar JD23 » Mar Fév 08, 2011 6:32 pm

J'ai en effet compris que ce programme utilisait le capteur de lumière. Mais comme je vous l'ai signalé, à l'entrée au boitier une erreur apparait. :/

Après il est vrai que je n'ai pas déplacé les 3 parties du programme dans un ... bloc ? A partir du moment où je me retrouve avec mon programme officiel séparé en 3 parties dans un fichier neutre. Que dois je faire étape par étape ?

Excusez moi d'avoir si peu de connaissance sur le sujet et de ne m'etre pas encore présenté ! ;)

Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Mar Fév 08, 2011 9:15 pm

JD23 a écrit:http://nxtprograms.com/NXT2/segway/steps.html

Bonsoir, j'ai essayer de suivre tout le topic, mais mon niveau est assez faible et je ne comprends pas grand chose !

Malheureusement le programme m'annonce une erreur provenant de "fichiers manquant" à l'entrée dans le boitier. Il est vrai que le programme téléchargé est séparé en trois parties (Pourquoi ???).


On reprend tout, mon dernier post est inutile.

Je ne comprends rien quand tu parles de boîtier… C'est quoi ce boîtier? :bizarre:
Le programme n'est pas séparé en 3 parties. Il y a 3 programmes distincts.
Le 1er est un programme qui permet de faire tenir le segway en équilibre, sans le faire bouger.
Le 2ème est un autre programme qui permet au robot de le faire tenir en équilibre et de le faire se déplacer à l'aide d'une télécommande.
Le 3ème programme est à installer sur un 2ème NXT qui est le maître et qui sert de télécommande puisqu'il communique par Bluetooth avec le segway, et le dirige dans ses déplacements.
Tu n'as pas compris ce que l'auteur a conçu, ou tu n'as pas lu l'article en entier. :hah:
Si tu veux contrôler le segway, il faut 2 NXT et comprendre comment tout cela fonctionne… Trop de précipitation…!
Avant de faire ton exposé, apprends à utiliser le programme NXT-G fourni dans le set # 8547.

As-tu téléchargé les deux guides de programmation?
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

JD23
Level 2
Level 2
 
Messages: 12

Messagepar JD23 » Mar Fév 08, 2011 10:28 pm

Alors merci de perdre du temps pour moi ! :petuncable:


Le boitier c'est là où on met les piles et où on branche le câble de l'ordi'.
Okay' donc, on a 3 programmes différents. 2 premiers à installer sur le NXT segway. Le troisième sur un deuxième boitier. C'est déjà ça que je ne comprenais pas. Et si j'ai lu, mais la description est entièrement en anglais. Donc pas forcement facile à comprendre dans son intégralité. :pamafote:

Qu'entends tu par guide de programmation ??

(http://nxtprograms.com/help/software.html) ceci ???

Encore merci.

Avatar de l’utilisateur
Alban42800
Level 11
Level 11
 
Messages: 2473
Localisation: Loire (42)
Âge: 51 ans
expertgbbexpertnxtvainqueurconcours

Messagepar Alban42800 » Mer Fév 09, 2011 12:04 am

JD23 :
Je t'ai envoyé un MP ( = message privé ) + à ton inscription sur le forum tu as lu les règles du jeu = passe par la case présentation sinon tu prendra un ban ( = banni du forum ) :fire:

JD23
Level 2
Level 2
 
Messages: 12

Messagepar JD23 » Mer Fév 09, 2011 5:32 pm

C'est fait ! :lolroule:

Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Jeu Fév 10, 2011 3:07 pm

JD23 a écrit:
Le boitier c'est là où on met les piles et où on branche le câble de l'ordi'.

Ce que tu appelles le boîtier, c'est la "brique NXT" en abrégé le "NXT".
Le NXT a un écran qui affiche des messages.
Quand tu dis:
"le programme m'annonce une erreur provenant de "fichiers manquant" à l'entrée dans le boitier", je présume que tu fais allusion à un message affiché sur l'écran du NXT. A quel moment apparaît ce message, pendant le chargement à partir de l'ordinateur ou au moment du "RUN" sur le NXT? As-tu également un message sur l'ordinateur?
Tout cela est très confus dans ta tête, et tu ne sais pas encore t'expliquer d'une manière compréhensible. En technique, il ne faut pas jouer aux devinettes. De plus j'ai le sentiment que tu passes sur le sujet d'une manière très superficielle. Apprends pour commencer, le vocabulaire.

JD23 a écrit:Qu'entends tu par guide de programmation ??

C'est ici:
topic1409.html ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

JD23
Level 2
Level 2
 
Messages: 12

Messagepar JD23 » Jeu Fév 10, 2011 6:43 pm

J'essaye de comprendre à mon niveau ein ...
J'ai enfin réussi à installer les programmes, c'était la version du sofware qui était trop vieille. Par contre j'ai du mal à les connecter en bluetooth. Et le segway robot a vraiment du mal à se tenir debout. Sauf dans le noir :pamafote: . =)


Retourner vers De la théorie à la pratique

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 22 invités