BTS Mesure BTS Mesure
Robot 1Robot 2PortailGPS & AlarmeCapteursTracker solaire

ITER Robots 2017 et 2018


Nous sommes ré-inscrits au concours  ITER Robots 2018.

Cette année Arthur, Aurianne et Rémi avons pu aller piloter le robot à la finale alors que l'année dernière nous étions en stage...

Nous avons reçu le soutien de Anthony, Baptiste, Lilian et Raphaël de TSTL pour l'épreuve stand et de culture générale (4/5 Bravo !).

 Ils ont aussi participé aux réglages PID du robot.

Cette année l'épreuve Ways Master comportait des parcours plus complexes qu'un simple suiveur de ligne.

Nous avons du revoir notre programmation et intégrer des priorités pour gérer ces parcours..

Pour cela nous avons organisé nos idées avec le Mind Mapping et identifié toutes les fonctions nécessaires à notre objectif.

Cette année encore nous avons détecté un manque de fiabilité des capteurs avec les  conditions d'éclairage du concours.

Arthur a confertionné in-extremis une jupette autour des capteurs qui a bien amélioré la fiabilité.

Heureusement l'appli App-Inventor nous a permis de trouver des réglages assez fiables pour réussir tous nos parcours du premier coup lors du passage devant le jury.

  Ainsi nous avons pu emporter l'épreuve Ways 2018 !

Ci-dessous notre expérience en 2017 plus basée sur le programme suiveur de ligne.

 

 

 

 

Le robot suiveur de ligne

L'appli Android suiveur de ligne modifiable (aia).

Cette application communique avec le robot par bluetooth, elle permet :

  • de modifier les paramètres P,I,D du robot ,
  • de démarrer et arrêter le robot à distance,
  • d'afficher les valeurs des capteurs,
  • d'afficher des informations pour debugger,
  • de chronométrer le temps de parcours.

Les parcours :     le réglement 2017

                   

Une vidéo du concours ITER 2016

Le concept

 

Nous avons étudié le principe d’une régulation de température en cours.

Le défi a consisté à adapter ce principe à un robot suiveur de ligne.

Nous avons construit un schéma fonctionnel de notre asservissement.

Nous avons identifié les éléments :

  • de la chaîne directe : actionneur (le hacheur - pont en H), procédé (les moteurs).
  • de la chaîne de retour : les capteurs de lumière.
  • du correcteur  PID : l’Arduino et son programme

Pour notre correction  PID nous avons besoin de capteurs de lumière à sortie analogique. Ainsi la correction ne sera pas du Tout Ou Rien, mais beaucoup plus douce pour obtenir une trajectoire plus stable et fluide.

A partir de là nous avons pu choisir le matériel, nos variables et construire l’algorithme de notre programme.

 

Matériel utilisé

La régulation PID : le pilotage

Les objectifs :

La précision : suivre la ligne sinon on "déligne"...

La stabilité : si le robot oscille trop autour de la ligne c'est que l'on manque de stabilité.

La rapidité : notre objectif est d'optimiser les paramètres afin d'être rapide stable et précis

Entrée perturbatrice :    Les changements de direction vont perturber notre système.
                                              Notre commande a pour objectif de corriger la trajectoire à chaque changement de direction.

Les variables :

La consigne  suivre la ligne est traduite par le fait que le capteur droit (Cd) doit reçevoir la même quantité de lumière que le capteur gauche (Cg)
                          Il faut veiller à bien placer les capteurs à la frontière noir-blanc de chaque coté de la ligne.
                          Attention les capteurs sont très sensibles au relief généré par le déplacement du robot sur la feuille de papier.
                          Il faut bien tendre la feuille...

L'erreur ε : ε = Cd - Cg

dt = 2 ms : la durée du cycle. Un cycle constant est important pour obtenir un comportement cohérent.
                      Il est inutile d'être plus rapide car 2 ms est la période du hacheur (commandé par la PWM Arduino).
                      Par contre il faut veiller à ne pas ralentir le cycle (pas de fonction delay...)
                      Lire le CAN multipléxé avec analogRead() demande environ 140 µs par requête.
                      Pour communiquer il faut utiliser la fonction Serial.print() avec parcimonie.
                      La condition (i%100==0) permet d'envoyer un message tous les 100 cycles soit 200 ms. % : modulo
                      L'analyseur logique nous permet de vérifier sur les chronogrammes la bonne maîtrise du temps.
                      (la patte D13 nous indique le temps de calcul environ 0,6 ms et la durée du cycle 2 ms)
                      Il faut faire attention à ne pas dépasser la taille du buffer série de 64 bits comme le montre ce chronogramme.

 

Les corrections :

La correction Proportionnelle : P = Kp*ε

C'est la correction du moment Présent (toutes les 2 ms en réalité) proportionnelle à l'erreur

Augmenter Kp permet d'augmenter la précision mais génère de l'instabilité.
Tant que la correction intégrale n'est pas stabilisée, c'est la correction proportionnelle qui apporte la précision.
Il faut faire un compromis entre la stabilité et la précision.

La correction Intégrale : I = I + Ki*ε*dt

Elle Intègre toutes les erreurs du passé.

Elle permet l'apprentissage d'une trajectoire et apporte de la précision dans son exécution.

Par contre à un changement de direction (entrée perturbatrice) elle va générer de l'instabilité.
Elle apporte une sorte d'Inertie au système qui a alors tendance à poursuivre dans l'ancienne direction.
C'est là que les corrections Proportionnelle et Dérivée interviennent...

Augmenter Ki permet d'être précis sur une trajectoire mais génère de l'instabilité lorsque celle-ci change.
Pour limiter l'instabilité lors d'un changement de direction on a imposé une butée de 150 à I.
Il faut faire un compromis entre la stabilité et la précision.

La correction Dérivée :  D = Kd*dε/dt = Kd*(εnn-1)/dt

C'est une correction Dynamique qui anticipe le changement de direction.

Elle observe l'évolution de l'erreur.
Elle permet de corriger l'inertie due à la correction Intégrale lors d'un changement de direction.
Sinon le poids du passé nous fait sortir de la trajectoire...

Augmenter Kd apporte de la stabilité notamment en corrigeant l'erreur générée par la correction Intégrale.
Mais cela amplifie aussi le bruit : il ne faut pas en abuser et trouver le bon compromis...

Au bilan la correction PIpermet d'appliquer la bonne vitesse au moteur Droit et au moteur Gauche
pour que la vitesse résultante du robot soit tangente à la ligne...

La robustesse :

Pour augmenter la robustesse du process nous avons mis en place des butées, un frein logiciel et le mode perdu.
Cette robustesse a été acquise après de nombreux essais et mises au point.

Neg : pour limiter l'amplitude des oscillations, on place une butée dans l'action négative (marche arrière)
            Lorsque les accus se déchargent il faut augmenter cette valeur.

frein : on limite la vitesse max (Pleine vitesse) en fonction de ε  Pv = 255 - frein*ε
             Lorsque les accus se déchargent il faut diminuer le frein.

Noir : permet de définir le niveau correspondant  au noir (1) pour la partie logique du programme.

Blanc : permet de définir le niveau correspondant  au blanc (0) pour la partie logique du programme.
               elle permet aussi d'activer le mode perdu...

            

Le 23 mai 2017

A force de pratique et de nombreuses mises au point du programme, notre robot a gagné en fiabilité.

L'application Android nous permet d'ajuster les réglages très rapidement.

En dernier ressort, le mode Perdu nous permet de nous remettre sur la ligne.

Aurianne, Arthur et Rémi ne sont pas là : ils sont en stage BTS.

Mais ils ont bien briefé Sacha et Aymeric (TS SVT option ISN)  sur les subtilités du correcteur PID.

Chloé, Margot, Manon et Laure  (TSTL) ont réalisé de jolies affiches et une belle déco pour le stand.

Tous ensemble, avec l'aide de google doc, nous avons réalisé le Flyer en français et en Anglais de promotion du projet Janetti Ways.

Cela sera-t-il suffisant face aux 23 concurrents de l'épreuve Ways ? La réponse en vidéo :

 

 Félicitations à nos camarades du projet Pape : Pick And Place Express

Un coup de maître de Valentin, Nathan, Nicolas B. et Nicolas C. (Term. SSI de M Djebali) : première participation et déjà gagnants !