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

Pour expliquer certains fonctionnements, principes et fondements.
Avatar de l’utilisateur
Alban42800
Level 11
Level 11
 
Messages: 2473
Localisation: Loire (42)
Âge: 50 ans
expertgbbexpertnxtvainqueurconcours

Messagepar Alban42800 » Dim Avr 10, 2011 8:38 pm

Pour ton problème de suivi de ligne résolu j'ajouterai 2 choses :
- Le capteur doit rester à une distance de la feuille (5mm environ) donc attention si la feuille n'est pas bien plaquée au sol.
- Le capteur peut être très fortement perturbé par la lumière ambiante, en fonction du lieu d'essai (présence de fenêtres avec soleil direct ou grandes fenêtres) il sera nécessaire de la protéger (voir le dessous de mon robot pour la coupe de France).

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

Messagepar roboleo » Lun Avr 11, 2011 12:56 pm

Kaidaten a écrit:Super, merci pour l'aide
Le robot tourne bien mieux :)
Maintenant, j'ai un tout autre problème,
---------------------
Une fois la ligne trouvée, je lui dit de se placer droit sur la ligne, afin de lancer le suivi de ligne proportionnel.
Malheureusement, la transition ne marche pas.
Le robot s'arrête bien sur la ligne, mais lorsqu'il doit exécuter le calibrage, celui ci ne le fait pas.
Il produit directement le son qui indique son départ, puis avance tout droit avant d'arrêter le programme après quelques secondes.

Content que tu aies résolu ce problème.
Pour la suite, as-tu vérifié que les moteurs sont bien branchés sur les ports correspondants dans les différentes parties du programme?
Affiche l'ensemble du programme pour que je puisse y jeter un œil… ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Kaidaten
Level 3
Level 3
 
Messages: 27

Messagepar Kaidaten » Lun Avr 11, 2011 8:24 pm

Image

Le programme en marche exécute bien Dbut PPE (dsl pour la faute d'orthographe, j'ai tapé un peu vite son nom ^^")
Lorsqu'il passe sur le bloc Auto-calib_photo, il ne l'exécute pas et passe directement au "bip" sonore indiquant la fin du bloc,
Puis le robot avance tout droit quelques secondes avant de s'arrêter...

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

Messagepar roboleo » Mer Avr 13, 2011 2:38 pm

Kaidaten a écrit:Image

Le programme en marche exécute bien Dbut PPE (dsl pour la faute d'orthographe, j'ai tapé un peu vite son nom ^^")
Lorsqu'il passe sur le bloc Auto-calib_photo, il ne l'exécute pas et passe directement au "bip" sonore indiquant la fin du bloc,
Puis le robot avance tout droit quelques secondes avant de s'arrêter...

As-tu vérifié que les variables de ton programme principal sont bien au complet? Tu dois également trouver dans la liste les variables du bloc Auto-calib_photo (Min, Max, Light). De même, si tu utilises des variables dans Dbut PPE, tu dois les retrouver dans cette liste.
Vérifie et fais moi savoir ce qu'elle contient… ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Kaidaten
Level 3
Level 3
 
Messages: 27

Messagepar Kaidaten » Mer Avr 13, 2011 4:17 pm

Je n'ai pas utilisé de variable dans le bloc DébutPPE,
J'ai donc vérifié si toutes les variables présentes dans le bloc principal et le bloc Auto-calib_photo y étaient.
Elles y sont toutes sans exception.

J'ai alors pensé à une chose :
Dans le bloc ppe, j'utilise le capteur de couleur en mode photosensible mais avec une valeur <30
Or, lorsqu'il passe dans le bloc Auto-calib_photo, un autre bloc lui indique de passer à >50
Est-ce que cela peut causer un conflit ? Si oui, il faudrait que je puisse alors réinitialiser le capteur lors de la transition entre les 2 blocs, mais comment ?

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

Messagepar roboleo » Mer Avr 13, 2011 5:04 pm

Kaidaten a écrit:J'ai alors pensé à une chose :
Dans le bloc ppe, j'utilise le capteur de couleur en mode photosensible mais avec une valeur <30
Or, lorsqu'il passe dans le bloc Auto-calib_photo, un autre bloc lui indique de passer à >50
Est-ce que cela peut causer un conflit ? Si oui, il faudrait que je puisse alors réinitialiser le capteur lors de la transition entre les 2 blocs, mais comment ?


Non, il n'y a aucun conflit. On peut utiliser toute une suite de blocs avec des valeurs de comparaison différentes. Mieux, lorsque le bloc est relié par des fils de données, les valeurs qu'il reçoit s'imposent sur l'existant qui est ignoré.
Je ne vois pas ce qui cloche.
As-tu fait une vidéo?
Fais-moi voir ton bloc DébutPPE… ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Kaidaten
Level 3
Level 3
 
Messages: 27

Messagepar Kaidaten » Mer Avr 13, 2011 9:24 pm


Voici une démonstration ;
Le robot tourne pour chercher l'objet, puis il avance vers l'objet afin de l'attraper puis de le soulever.
Il va à l'encontre de la ligne où il fait quelques oscillations pour se placer sur la ligne.
Il s'arrête un temps puis lance Auto-calib_Photo.
On entend le bip annonçant la fin du bloc, mais le robot n'a rien effectué (pas de rotation sur la droite, ni sur la gauche)
Puis il fonce tout droit.
Quand j'effectue les 2 bloc séparément, ils marchent sans aucun problème.
C'est seulement lorsque je les mets ensemble qu'il y a ce problème.
J'espère que vous pourrez m'aider
Voici mon bloc DbutPPE :
Image

Merci encore :)

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

Messagepar roboleo » Jeu Avr 14, 2011 12:02 am

Kaidaten a écrit:
Quand j'effectue les 2 bloc séparément, ils marchent sans aucun problème.
C'est seulement lorsque je les mets ensemble qu'il y a ce problème.
J'espère que vous pourrez m'aider
Voici mon bloc DbutPPE :
Image

Merci encore :)

A quoi sert le mutiplexeur?
Je crois comprendre qu'il commande les moteurs. Tu n'en n'a pas besoin ici puisque tu n'utilises que 3 moteurs.
La pince est activée par le moteur A, non?
Le multiplexeur peut-être la cause du disfonctionnement.
Supprime le multiplexeur, utilise le bloc "Moteur A" branché sur le port A, et révise la première partie du programme. ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Kaidaten
Level 3
Level 3
 
Messages: 27

Messagepar Kaidaten » Jeu Avr 14, 2011 1:00 pm

J'utilise en fait 4 moteurs
Le multiplexeur commande la pince, et le moteur A commande sa levée

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

Messagepar roboleo » Jeu Avr 14, 2011 3:38 pm

Kaidaten a écrit:J'utilise en fait 4 moteurs
Le multiplexeur commande la pince, et le moteur A commande sa levée

Tu n'as pas besoin de 4 moteurs.
Exemple d'un moteur qui accompli les 2 fonctions: saisie et levée,


;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Kaidaten
Level 3
Level 3
 
Messages: 27

Messagepar Kaidaten » Jeu Avr 14, 2011 9:09 pm

En fait, le système de lève en parallélogramme m'a un peu été imposé,
Du coup, pour l'appliquer, je dois ajouter un moteur supplémentaire
Comment est ce que votre robot fait pour détecter que l'objet est bien entre ses pinces ?

Il y a un autre problème, c'est qu'avec une telle pince, il m'est impossible de placer mon capteur de couleur au centre.
Est-il bien de placer celui ci sur un côté ? (pour le programme de suivi de ligne)
Ou à l'arrière ?

Thibaud
Level 6
Level 6
 
Messages: 333
Localisation: Paris
expertnxt

Messagepar Thibaud » Jeu Avr 14, 2011 11:30 pm

pour la levé en parallèle regarde :


il suffit d'ajouter le capteur de suivi de ligne au niveau de l'US ou effectivement à l'arrière de ton robot.
Venez voir mes créations ;) NXTGEN
-----
La team BrickBot

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

Messagepar roboleo » Ven Avr 15, 2011 12:02 pm

Kaidaten a écrit:Il y a un autre problème, c'est qu'avec une telle pince, il m'est impossible de placer mon capteur de couleur au centre.
Est-il bien de placer celui ci sur un côté ? (pour le programme de suivi de ligne)
Ou à l'arrière ?


L'idéal, c'est de le mettre le plus près possible de l'axe des roues motrices.
Il vaut mieux éviter de le mettre en arrière.
Pour le mettre sur le côté, çà complique le programme, parce qu'il n'y a plus de symétrie. Les roues droite et gauche doivent tenir compte du ripage dans le calcul de l'erreur.
Essaies de les mettre tous les deux à l'avant en les superposant. Le capteur photosensible en position basse bien entendu.
L'exemple de Thibaud ( ;)) est une très bonne réponse. Il suffit d'ajouter au robot le capteur Photosensible pour compléter le tableau.
Inconvénient: acheter le bouquin. ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Thibaud
Level 6
Level 6
 
Messages: 333
Localisation: Paris
expertnxt

Messagepar Thibaud » Ven Avr 15, 2011 12:12 pm

roboléo : avec la vidéo on peut déjà reproduire la pince ;)
Venez voir mes créations ;) NXTGEN
-----
La team BrickBot

Kaidaten
Level 3
Level 3
 
Messages: 27

Messagepar Kaidaten » Ven Avr 15, 2011 6:16 pm

ouf, un peu dur de reproduire seulement avec la vidéo ^^"

@Roboléo : Comment est-ce qu'il faudrait que je fasse pour que le robot détecte l'objet afin de fermer la pince ? (Avec un système tel que le votre)


Retourner vers De la théorie à la pratique

Qui est en ligne ?

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