« Zumo32U4 linefollower » : différence entre les versions

De Wiki TGE CSTwiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 26 : Ligne 26 :


'''7. Brancher le robot Zumo à l’ordinateur à l’aide d’une câble USB et appuyer sur le bouton « Upload » : [[File:Zumo006.png]]'''
'''7. Brancher le robot Zumo à l’ordinateur à l’aide d’une câble USB et appuyer sur le bouton « Upload » : [[File:Zumo006.png]]'''
</br>[[File:Zumo007.png]]
</br>[[File:Zumo007.png]]</br>
Le robot devrait émettre une tonalité. Ignorez le message « Device code : 0x44 ».
Le robot devrait émettre une tonalité. Ignorez le message « Device code : 0x44 ».



Version du 28 novembre 2025 à 19:01

Configuration initiale

1. À partir du bureau de Windows ou du gestionnaire d'application, démarrez Arduino IDE :

2. Dans la barre à gauche, cliquer sur « Library Manager » recherchez « Zumo32U4 » et assurez-vous que la librairie soit installée. Appuyer sur « Install » si ce n’est pas le cas.

3. Allez dans « File => Preferences ». À droite de « Additional boards manger URLs », aussurez-vous d’avoir :
https://files.pololu.com/arduino/package_pololu_index.json
Copier et coller au besoin. Appuyez sur « OK ».

4. Dans la barre à gauche, cliquer sur « Board Manager » recherchez « Pololu A-Star Boards » et assurez-vous d’y retrouver que la plaquette soit installée. Appuyer sur « Install » si ce n’est pas le cas.

5. Allez dans « File => Examples => Zumo32U4 » et cliquez sur « LineFollower ».

6. Modifiez les ligne 27 et 28 pour qu’elles soient ainsi :

Zumo32U4LCD display;
// Zumo32U4OLED display;

Cette modification permet de sélectionner le bon type d’écran qui est installé sur le robot. Le « // » fait ignorer la ligne au compilateur. Ainsi, le OLED est désactiver et le LCD est activé en tant qu’écran.

7. Brancher le robot Zumo à l’ordinateur à l’aide d’une câble USB et appuyer sur le bouton « Upload » :

Le robot devrait émettre une tonalité. Ignorez le message « Device code : 0x44 ».

8. Débranchez le robot du câble USB, assurez vous que le bouton des moteurs soit à « ON » et que la lumière bleue soit allumée et déposer le robot centrer une un ligne d’une parcours quelconque. Voyez comment le robot se comporte avant d’aller à la suite.

Modification du programme

9. Trouvez la ligne

const uint16_t maxSpeed = 400;

Ajoutez les lignes suivante en dessous.

const uint16_t maxSpeed = 400;
// Paramètres PID
const float kp = 1;    // Action proportionnelle qui travaille avec l'erreur actuelle
const float ti = 1;  // Action intégrale (en seconde) qui travaille avec le passé de l'erreur
const float td = 0.05;    // Action dérivé (en seconde) qui travaille avec le futur de l'érreur

10. Trouvez la ligne

int16_t lastError = 0;

et changez la pour

float lastError = 0;

11. Trouvez les lignes

  int16_t speedDifference = error / 4 + 6 * (error - lastError);
  lastError = error;

et changez les pour

float kperreur = kp*error;
float accumulateur = accumulateur + kperreur;
accumulateur = constrain(accumulateur, 0, 5*maxSpeed);
float speedDifference = kperreur + 1/(1000*ti)*kperreur + (td/1000)*(kperreur-lastError);
lastError = kperreur;

12. Ajustez vos paramètres

const uint16_t maxSpeed = 400;
// Paramètres PID
const float kp = 1;    // Action proportionnelle qui travaille avec l'erreur actuelle
const float ti = 1;  // Action intégrale (en seconde) qui travaille avec le passé de l'erreur
const float td = 0.05;    // Action dérivé (en seconde) qui travaille avec le futur de l'érreur

La vitesse maximale est de 400. À cette vitesse, l'algorithme a de la difficulté à opérer le robot. Vous pouvez la diminuez à 200 pour travaille le kp, ki et kd. Faites des tests sur différents circuits et essayer d'augmenter en vitesse par la suite.

Le kp est le paramètre proportionnelle qui réagit directement. C'est comme donner un coup de volant. Le ki est le paramètre de l'action intégral, il corrige lentement des déviate de tajectoire. Sur le robot, est n'est pas très utile car le robot bouge rapidement. Le kd est le paramètre de l'action dérivé, il corrige rapidement les tendences de l'erreurs mais augmente l'instabilité du robot.