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

Pour expliquer certains fonctionnements, principes et fondements.
Avatar de l’utilisateur
TrEvIzE
Level 4
Level 4
 
Messages: 81
Localisation: Victoriaville, Québec
Âge: 41 ans

Messagepar TrEvIzE » Ven Avr 15, 2011 6:55 pm

Question pour un champion.

Je me suis construit une voiture de course avec un NXT. Les fonctions sont assez simple, il tourne a droite si le capteur de distance gauche détecte de quoi à moins de 24po et tourne a gauche si le capteur de distance droite détecte de quoi à moins de 24po. Arret et recul si les distances sont de moins de 6po. Programme disponible au besoin.

Mon problème est le suivant, les capteurs de distance souffrent de certains problème, parfois il s'y glisse des donnés erroné sur la distance. La voiture dans le cas présent se retrouve donc à tourner sans la présence d'un obstable.

Existe-t-il une façon de diminuer ses erreurs sans ralentir le programme, car c'est avant tout une voiture de course? Présentement il mesure en permanence la distance, une section debug du programme me permet de voir les valeurs en tout temps.

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

Messagepar roboleo » Ven Avr 15, 2011 7:55 pm

@ Kaldaten
Avec le capteur US (que l'on voit fixé sur le haut du robot) et en le positionnant le plus bas possible. C'est faisable juste au-dessus de la pince …
Pour régler la distance avec précision, voir plus bas. ;)

@ TrEvIzE
Pour améliorer la précision, on peut utiliser le bloc PLAGE, donc l'ajouter à la suite du bloc ULTRASONS
il suffit de raccorder le plot "Distance" du bloc Ultrasons au plot "#" du bloc Plage, et dans ce bloc préciser les valeurs min et max. Par exemple 20 et 24. Si la distance est comprise entre 20 et 24 la relation est vérifiée donc "Vrai"; dans l'autre cas c'est "Faux". On obtient une précision bien meilleure que celle donnée directement par le bloc Ultrasons.
Le plot de sortie du bloc Plage est du type logique. Ce plot sera raccordé à celui d'un bloc suivant "Commutateur" qui décidera de la suite à donner: si Oui alors le moteur change de comportement, si Non alors il continue sans changement.
Et pour le débug c'est nettement simplifié. ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Avatar de l’utilisateur
TrEvIzE
Level 4
Level 4
 
Messages: 81
Localisation: Victoriaville, Québec
Âge: 41 ans

Messagepar TrEvIzE » Ven Avr 15, 2011 8:28 pm

Merci de la réponse si rapide, par contre le problème n'est pas tout à faite là. Mais plutôt au niveau de valeur fantôme. Des 16po par exemple qui apparaissent une fraction de seconde alors qu'il n'y a absolument rien devant. Le problème va persister même en utilisant un système de plage car la donné erroné est quand même dans la plage mais non réel.

J'ai penser utiliser un système qui attendrais que la donné sois moins de 24po durant un temps donné, mais vu la vitesse du bolide c'est l'accident à coup sur.


Edit: Problème régler. Enfin si on veut.Après avoir jaser avec Bazmati il m'a fait réaliser que l'interférence venais du fait que j'utilisais 2 capteurs ultrasonic à environ 45deg l'un de l'autre, donc parfois l'onde de un étais capteur par l'autre, ce qui faussait les données.
Dernière édition par TrEvIzE le Dim Avr 17, 2011 5:09 pm, édité 1 fois au total.

Kaidaten
Level 3
Level 3
 
Messages: 27

Messagepar Kaidaten » Dim Avr 17, 2011 4:40 pm

Hello
J'ai changé le système de pince et installé le même que vous m'avez proposé
Mais le problème persiste. J'ai pourtant changé le programme DébutPPE, et supprimé le multiplexeur.

Je pense que le problème ne viendrait donc pas du multiplexeur, mais alors pour savoir où, je suis incapable de le dire...

Se peut-il que le programme soit trop long ? (3 Monblocs => DébutPPE, Auto-calib_Photo et suivi de ligne)

Toujours le même problème : Il exécute DébutPPE, s'arrête 10secondes comme je lui ai imposé, mais ne lance pas auto-calib et avance tout droit après le "bip" sonore annonçant la fin de ce dernier bloc...
Ha, parfois il a esquissé un mouvement de rotation, mais dans le mauvais sens, et sans vouloir s'arrêter...

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

Messagepar roboleo » Dim Avr 17, 2011 6:29 pm

Kaidaten a écrit:Toujours le même problème : Il exécute DébutPPE, s'arrête 10secondes comme je lui ai imposé, mais ne lance pas auto-calib et avance tout droit après le "bip" sonore annonçant la fin de ce dernier bloc...
Ha, parfois il a esquissé un mouvement de rotation, mais dans le mauvais sens, et sans vouloir s'arrêter...


Le programme principal n'est pas trop long.
Supprime le bloc "Déplacer CB" en position STOP entre les monblocs DebutPPE et Auto-calib_Photo… ;)

EDIT: erreur de ma part:
supprime la boucle finale du Monbloc DebutPPE (blocs "Moteurs" C et B) et conserve le bloc "Déplacer" en position STOP du programme principal ci-dessus.
Cette boucle empêche le programme de continuer, puisqu'elle tourne en rond indéfiniment.
Quand ce Monbloc fonctionne tout seul, il exécute convenablement tout ce qui précède, puis se met attente en stoppant les moteurs B et C grâce à cette boucle. Cela signifie que ce programme n'a pas de fin. Pour sortir tu es obligé d'appuyer sur la touche Annulation.
Variante: sans supprimer cette boucle, au lieu de la faire tourner "pour toujours", tu peux utiliser le paramètre "capteur" > "bouton du NXT". En appuyant sur le bouton rouge "Entrée" par exemple, tu sort de la boucle et le programme se poursuit.
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Kaidaten
Level 3
Level 3
 
Messages: 27

Messagepar Kaidaten » Dim Avr 17, 2011 9:27 pm

Après de nombreux essais, encore et toujours le même problème...
Voici mon bloc DébutPPE remanié
Image

La dernière boucle dure 5secondes.
J'ai placé entre les blocs DébutPPE et Auto-calib_photo, 1bloc Déplacer "STOP" pour B et C ainsi qu'une pause de 2secondes.
Sans succès...

J'espère ne pas trop vous déranger avec mes soucis, mais je ne sais pas à qui m'adresser d'autre
Merci encore pour toute votre aide

EDIT : Je me pose également une question : Est-il possible de détecter une fin de ligne avec le capteur en mode photosensible ?

Avatar de l’utilisateur
Klean
Level 1
Level 1
 
Messages: 6
Localisation: Le Mans
Âge: 40 ans

Messagepar Klean » Mar Jan 10, 2012 10:58 am

Petit message à l'attention de Roboleo :

Bravo pour tout ton travail sur les PID (et les autres sujets) ! C'est un peu difficile à comprendre la première fois mais avec un peu de calme (et pas ma fille dans les pattes :bougeotte: ...) c'est super clair ! Je vais pouvoir passer d'un système P à PID :lolroule:

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

Messagepar Alban42800 » Mar Jan 10, 2012 12:30 pm

Tiens, encore un eurobotteur qui viens sur ST :clap:
Bienvenu sur le forum, n'oublie pas de passer par le topik de présentation, c'est la règle ici ;)

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

Messagepar roboleo » Mer Jan 11, 2012 1:30 pm

Klean a écrit:Petit message à l'attention de Roboleo :

Bravo pour tout ton travail sur les PID (et les autres sujets) ! C'est un peu difficile à comprendre la première fois mais avec un peu de calme (et pas ma fille dans les pattes :bougeotte: ...) c'est super clair ! Je vais pouvoir passer d'un système P à PID :lolroule:

Merci à toi. Pour un esprit un peu matheux, on s'y fait rapidement… ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Avatar de l’utilisateur
Klean
Level 1
Level 1
 
Messages: 6
Localisation: Le Mans
Âge: 40 ans

Messagepar Klean » Mer Jan 11, 2012 2:25 pm

Oui c'est clair !
C'est bien d'avoir réussi à vulgariser le sujet en tout cas. ;)

Technomer
Level 1
Level 1
 
Messages: 5
Localisation: Finistère Nord, Le phare ouest...
Âge: 48 ans

Messagepar Technomer » Mer Juil 24, 2013 5:12 pm

Bon, j'ai commencé la lecture de ce post... C'est une mine d'informations... Je n'ai pas encore fini...

Je vais essayer d'appliquer le PID au produit dont j'ai fait l'acquisition dernièrement : Le light sensor array
une petite image avec un réglet pour avoir une échelle...
Image
C'est l'équivalent de huits capteurs photosensibles cote à cote. Donc 8 valeurs en lecture et je ne sais pas trop comment les exploiter...

Je suis plus mécanicien de formation plus que programmeur. Donc on va voir...

Pour info je programme avec le logiciel en NXT-G.
J'ai téléchargé le NXT-G bloc j'ai regardé les exemples... maintenant voici mon problème...
Faire un suiveur de ligne le plus rapide possible...
:grad: Je ne sais pas si je dois ouvrir un post spécifique sur le produit et son utilisation. :grad:

Peut-être que l'un d'entre vous à déjà bosser sur ce capteur ?

Je serais preneur pour maitriser le capteur et réussir à le transmettre aux roboticiens en herbe de mon collège...

Merci d'avance...


Retourner vers De la théorie à la pratique

Qui est en ligne ?

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