Self balancing programmation #51515

La modélisation 3D des Lego, entre autres.
Sifflotte
Level 6
Level 6
 
Messages: 342
Localisation: 49
Âge: 42 ans

Messagepar Sifflotte » Dim Sep 05, 2021 2:58 am

Bonjour,

Dans la liste de mes défis à réaliser en lego, il y le "self banlancing", et je dois avouer que c'est un poil complexe pour moi.
J'ai réussi à en construire un il y'a quelque temps mais le programme était simpliste et le résultat moyen.

Cherchant comment pouvoir construire quelque chose de plus perfectionné, j'ai découvert le P.I.D. J'en ai bouffé de la vidéo tuto!
Je comprends l'idée de base, mais dès que je rentre dans le détail... je suis perdu.
En fouinant, j'ai trouvé un code réalisé par Creator Académy Australia.
https://m.youtube.com/watch?v=dr1snPdNk ... b_imp_woyt

Le lien du site qui "explique" le fonctionnement, la construction et le copier/coller du programme.
https://thecodingfun.com/2021/03/15/leg ... ey-points/

Et le programme:
https://thecodingfun672211385.files.wor ... jpg?w=1024

Très honnêtement, je ne capte rien. Je vais tout de même pomper le truc et voir si ça fonctionne.

Si l'un d'entre vous pouvait prendre quelques minutes pour m'expliquer le programme; à quoi correspond quoi, du genre kp, ki, kd, dérivée, integrale ce serait sympa, je n'ai pas le bagage scolaire pour vraiment comprendre le fonctionnement.

Top'

(Ps: l'idée finale de mon projet est qu'il puisse être autonome ou pilotable à distance ::D: )
Dernière édition par Sifflotte le Dim Sep 05, 2021 2:02 pm, édité 2 fois au total.

Zebulon
Level 6
Level 6
 
Messages: 429
Âge: 49 ans

Messagepar Zebulon » Dim Sep 05, 2021 9:59 am

Super projet. Ça fait des plombes que je veux en monter un avec mon kit EV3 et puis jamais le temps.

C'est clair tu ne vas pas réinventer la roue. Il faut reprendre un algorithme existant et ensuite tu verras si tu veux faire des modifs. Sur EV3 on trouve facilement le robot qui s'équilibre seul et celui qui s'équilibre et qu'on peut faire avancer en même temps. J'imagine que tu vas trouver pour ton kit.

Concernant les outils mathématiques. La dérivée et l'intégration d'une fonction sont deux opérations inverses l'une de l'autre avec énormément d'applications.

La dérivée par exemple pour calculer la vitesse et l'accélération d'un objet à partir d'une fonction décrivant sa position dans l'espace selon le temps. L'intégration pour calculer inversement sa vitesse ou sa position, calculer des aires, etc.

L'idée de l'algorithme PID (Proportionnel, Intégration, Dérivée) c'est de permettre de rétablir l'équilibre du robot à partir de l'information "erreur" qui est l'écart en degré par exemple entre sa position d'équilibre et la position mesurée à un instant T.

Pour ne pas qu'il tombe il faut rétablir cet équilibre rapidement mais sans excès pour ne pas le déséquilibrer trop dans l'autre sens. En gros c'est l'idée. Les trois coefficients K servent à doser les trois composantes.

Tu peux faire un parallèle avec le fameux réglage de l'eau tiède dans la douche lorsque tu as deux commandes séparées eau chaude eau froide. Tu te cailles puis tu t'ébouillantes puis tu te cailles à nouveau car tu agis trop fort en réaction sur les réglages.

Ici c'est pareil on veut réduire ces excès et en gros la position du robot va décrire une sinusoïde autour du point d'équilibre sans trop s'en éloigner.

Sifflotte
Level 6
Level 6
 
Messages: 342
Localisation: 49
Âge: 42 ans

Messagepar Sifflotte » Dim Sep 05, 2021 1:28 pm

Merci @zebulon

Et voilà le programme:
https://linksharing.samsungcloud.com/w9hDc3Mf6Sov
(Je suis obligé de passer par le cloud, impossible même en convertissant mes images en jpg dans un format différent d'utiliser Casimage. Ça me gonfle...mais à un point :ouch: )

Que je déteste faire ça, pomper un truc tout fait et en plus sans rien y comprendre... mais bon, là, pas trop le choix. :pamafote:

Je teste ça tout à l'heure :frotte:

Zebulon
Level 6
Level 6
 
Messages: 429
Âge: 49 ans

Messagepar Zebulon » Dim Sep 05, 2021 5:04 pm

D'accord sur le fait de vouloir comprendre et pas juste repomper. Dans ce cas tu vas pouvoir faire l'inverse. Repomper le truc et vérifier qu'il fonctionne puis jouer sur les coefficients pour comprendre leur impact et voir quand ça ne marche plus.

Sifflotte
Level 6
Level 6
 
Messages: 342
Localisation: 49
Âge: 42 ans

Messagepar Sifflotte » Dim Sep 05, 2021 7:19 pm

Bon....
Déjà, ya une coquille dans mon prog: il y a un Block derivate =0 qui n'a rien à y faire.
Une fois corrigé, ça a fonctionné moyennement 2s. J'ai bidouillé au hasard et ça ne veut plus marcher même moyennement...
Ça a l'air de venir de l'orientation du hub. Posé à plat, le Pid à l'air de fonctionner, mais à la verticale, comme sur le site, ça déconne à mort.

Hmmm, ça va être marrant cette histoire :petuncable:

Zebulon
Level 6
Level 6
 
Messages: 429
Âge: 49 ans

Messagepar Zebulon » Dim Sep 05, 2021 9:18 pm

Ah ah comme quoi ça ne va pas être que du repompage. ;)

Sifflotte
Level 6
Level 6
 
Messages: 342
Localisation: 49
Âge: 42 ans

Messagepar Sifflotte » Dim Sep 05, 2021 11:29 pm

Faut que je comprenne comment sont décidées les valeurs de ki, kd et kp.

Concernant l'application , pourquoi au 1er lancement ça a +/- marché, et que ensuite, en remettant les valeurs d'origines ça fait nimp’ ?
Mystère et boule de gomme.
Problème de l'orientation résolu : Le hub ne donne que des chiffres entier, donc je pense que 89,95 lui faisait perdre la boule.
Avec 89 c'est mieux.... mais je suis encore loin du compte.
Mon hub a planté aussi :nunu: impossible d'arrêter les roues, j'ai du l'éteindre avec l'aide du gros bouton.

Aie aie aie aie aie aie....

Zebulon
Level 6
Level 6
 
Messages: 429
Âge: 49 ans

Messagepar Zebulon » Lun Sep 06, 2021 7:55 am

Pourquoi pas plutôt 90 ? C'est plus proche. La détermination des coefficients K est à mon avis assez empirique.

Pour t'aider dans tes tentatives de réglage j'ai trouvé cette petite explication en français du principe d'un régulateur PID.

G correspond à Kp (proportionnel)
Ti correspond à Ki (intégrale)
Td correspond à Kd (dérivée)

Sifflotte
Level 6
Level 6
 
Messages: 342
Localisation: 49
Âge: 42 ans

Messagepar Sifflotte » Lun Sep 06, 2021 9:28 pm

J'ai mis 89 car j'ai tout simplement voulu voir si un nombre entier avait un impact.

Merci pour le lien, tu m'as évité de chercher ce document, je l'avais déjà consulté.

Le programme me paraît bouceaup moins compliqué maintenant, même si ça reste encore un défi pour moi et ma moyenne spectaculaire de 4/20 en math.
(J'ai eu 11/20 à mon bac pro. jen reviens toujours pas)


J'ai une question:
Doit-on respecter un ordre dans le changement de valeur des consignes?
Du genre on règle d'abord kp, puis ki et enfin kd?

Avatar de l’utilisateur
BUZ
Level 9
Level 9
 
Messages: 1410
Localisation: Région de la quenelle // Avignon
expertgbb

Messagepar BUZ » Mer Sep 08, 2021 4:46 pm

A un moment, il faut connaitre ses limités.
Si les Math c'est pas ton truc (même si un PID c'est pas la folie non plus) à un moment tu vas être bloqué sur ce type de projet ...
Donc soit tu te forces un peu, soit tu changes de sujet :resp:


Et pour les réponses :
*Il existe des méthodes de "calcul" pour régler les PID
*Ce n'est pas exploitable avec les lego en l'état car il faut éditer des graphiques/stocker des données.
*Sans parler de l'ordre, il faut comprendre à quoi servent chaque variables

Du coup pour les variables en version utra simple.
P => proportionnel => action directe sur le système, plus ou moins rapide
I => Intégrale => cumule dans le temps les erreurs pour les corriger, stabilise
D => Dérivé => anticipe les écarts pour éviter les dépassements

De là, il faut "sentir" le besoin par rapport au système.
Par exemple un "four" domestique, la consigne c'est la température.
On peut imaginer que le sytème n'a pas des besoins très important sur la précision de la T°.
Donc on chauffe quand la T° est en dessous de la consigne et on arrête quand on est au dessus... Pas besoin d'un régulateur complexe.

Autre exemple, un "four industriel", où le chauffage est ajustable.
Donc l'actionneur est variable et on peut appliquer un PID (ou autre).
A t'on besoin de P ? de I ? de D ?
Pour P, obligatoirement, car on veut que le four chauffe plus ou moins vite à la température voulue et de préférence sans trop dépasser la consigne.
Pour I, également, car on souhaite stabiliser la T° dans le temps, à cause des fuites (ouverture de portes, etc...) de la mauvaise isolation, des conditions météo
Pour D, probablement non, car un four c'est pas une F1 et la T° ne va pas "explosé" en quelques instant quand tu tournes le thermostat ...


si on en revient au robot qui balance, tu dois "sentir" le besoin du système...
si tu fais "rien" il va tombé, devant ou derrière.
Si tu mets les moteurs à fond, il va tombé également, car au moment où le robot ne sera pas au bon angle, le mouvement donné au système sera beaucoup trop important

Donc il faut jongler et on repart sur : A t'on besoin de P ? de I ? de D ?
Pour P, obligatoirement mais à une valeur cohérente avec le système.
Pour I, également, car on souhaite stabiliser dans le temps, à cause de la "gravité" qui fait tombé le robot.
Pour D, probablement pas ou très faible, tu ne lui donnes pas de "consigne" au robot, tu veux juste qu'il reste droit.

Donc si au démarrage, tu tiens le robot avec ta main, il n'y a pas de phase transitoire, donc le D ne s’excitera pas ^^
je penses que PI est suffisant pour tenir un robot stable sur la table.
Sachant que I augmente très rapidement (incrémentation à chaque cycle du programme).


Voila, si ça peut aider ...

Sifflotte
Level 6
Level 6
 
Messages: 342
Localisation: 49
Âge: 42 ans

Messagepar Sifflotte » Mer Sep 08, 2021 7:42 pm

Salut Buz

Je vais en premier lieu réagir à ta réflexion " soit tu te forces un peu, soit tu changes de sujet"

Saches que malgré mon ignorance, je me suis toujours démerdé pour arriver à mes fins. Certe de manière empirique, mais avec une volonté de fer. Et quand je veux: j'obtiens.
J'ai à plusieurs reprise fait fulminer des ingénieurs. Je ne me mets pas à leurs niveaux, ce serait prétentieux de ma part, comme dit plus haut, mon niveau scolaire est ce qu'il est.
Par contre, je suis curieux de tout, m'intéresse à beaucoup de sujet et la mécanique de manière générale me parle, et je n'hésite pas à me renseigner auprès de personnes qualifiés quand je rencontre un problème.
Que je ne bîte rien aux équations ou autres algorithmes, sincèrement, ça me fait chier. J'ai un blocage... et à plusieurs reprises j'ai eu de très bon résultats, mais jamais sur la durée. Alors question frustration, ça se pose là.

J'aime pas quand on parle comme ça... je peux devenir très agressif.
Tu m'as vexé , saches le.

Je me suis radouci en lisant la suite.
Que peut il arriver de mieux à quelqu'un dans ma situation que de tomber sur des mecs comme toi ou Zebulon, ou Vinz à mes débuts?

Est-ce que je resterai une quiche en math... probablement oui.
Est-ce que pour autant je dois m'interdire d'y comprendre quelque chose?
Non.

Donc je te remercie de m'avoir mis les nerfs, c'est un des meilleurs moteurs pour avancer.

Avatar de l’utilisateur
BUZ
Level 9
Level 9
 
Messages: 1410
Localisation: Région de la quenelle // Avignon
expertgbb

Messagepar BUZ » Mer Sep 08, 2021 10:15 pm

Sifflotte a écrit:J'aime pas quand on parle comme ça... je peux devenir très agressif.
Tu m'as vexé , saches le.


sur le principe, je suis un peu obligé d'être cassant, c'est pas un sujet facile que tu fais. (100% traitable en équations)
Après tu en fais l'analyse que tu veux, je ne suis pas à ta place.
Mais comme tu as lu tout le message, tu comprends que ce n'est pas un coup de bâton gratuit.

au delà des 3 premières lignes de préparation intellectuelle, j'espère que le reste est utile ;)

Zebulon
Level 6
Level 6
 
Messages: 429
Âge: 49 ans

Messagepar Zebulon » Mer Sep 08, 2021 10:24 pm

Peux-tu nous mettre les liens vers les sites ou vidéos sur lesquels tu t'es basé pour construire le robot et le programmer ?

Il faut absolument que le robot et le programme/ses paramètres soient complètement raccords. Les quelques vidéos que j'ai vu à base de 51515 (ou Spike Prime) ne sont pas hyper probantes... certes le robot se maintient mais de manière beaucoup moins fluide/plus saccadée que ceux du kit EV3 (balanc3r ou gyro boy) qui pourtant ont un centre de gravité plus haut semble-t-il (surtout balanc3r).

Tu dois déjà connaitre mais c'est Segway qui a lancé cette mode avec le fameux gyropode. A vide il possède un centre de gravité très bas. Avec l'opérateur le centre de gravité remonte mais pas au point de celui des robots EV3 ou 51515. Ca joue déjà beaucoup sur la stabilité.

L'autre problème ce sont les performances du capteur gyroscopique, celui du EV3 n'était pas top mais je pense meilleur que celui qui semble embarqué dans le nouveau hub. Enfin il faut voir la vitesse d'exécution du programme en boucle, s'il est trop lent les actions de correction seront nécessairement plus violentes car "l'erreur" sera plus grande entre deux boucles. Si ça se trouve la brique EV3 est plus rapide que la 51515.

Voyons donc sur quel modèle/programme tu es parti déjà.

Bon de mon côté je vais construire balanc3r dans mon bric-à-brac pour voir à quel point les paramètres jouent. A suivre donc.

Sifflotte
Level 6
Level 6
 
Messages: 342
Localisation: 49
Âge: 42 ans

Messagepar Sifflotte » Jeu Sep 09, 2021 9:10 pm

Zebulon: j'ai tout fait pareil que Creator Academy Australian.
Tout les liens sont dans mon premier post.
Parmi tout les gyrobots 51515’ https://youtu.be/O_1jpoTmlas c'est celui qui m'a donné envie de m'y mettre.
C'est exactement à ça que je veux arriver.

Il y a bien le programme de dispo, mais je narrive pas à ouvrir les fichiers.

Je me suis rabattu sur le modèle Austrialien, qui me semblait plus accessible aussi. Et pour débuter, autant commencer petit.

Ça prendra le temps qu'il faut, mais ça fonctionnera.

Buz:
Je le prends comme tu me le donnes.
L'important, c'est le résultat, et ta participation.
Dernière édition par Sifflotte le Jeu Sep 09, 2021 9:20 pm, édité 1 fois au total.

Zebulon
Level 6
Level 6
 
Messages: 429
Âge: 49 ans

Messagepar Zebulon » Jeu Sep 09, 2021 9:20 pm

Ok désolé j'aurais du reprendre le fil, merci je vais regarder ça de plus près.

EDIT je viens de tout visionner et je suis d'accord qu'il vaut mieux commencer simple et petit. De toutes façons le coeur de la boucle du robot "sumo" est le même que le basique, il y a plus d'enrobage pour gérer la parade au départ, la chute, etc.

J'ai recopié le programme de mon côté, peut-être tu peux essayer ma version au cas où une coquille se soit glissée dans la tienne ?

Aussi j'ai préalablement passé ma version du logiciel LEGO MINDSTORMS en anglais pour qu'il n'y ait pas d'ambiguïté concernant les nombres avec décimales. Le séparateur de décimales est bien "." (le point) et non pas "," (la virgule). En français on ne sait pas si il suit ou pas la localisation. Si ça se trouve ton "88,95" avait été interprété comme une chaine et pas un nombre ? (je sais que je vais faire mon relou mais les langages pas typés ça me file des boutons).

EDIT2 je suis vraiment une quiche, tu avais mis le lien pour charger ta version du programme mais il a expiré... aussi en relisant les posts tu mentionnes 89.95 mais attention c'est bien 88.95 dans le programme.

Même si le hub donne des valeurs d'angle entières, il doit pouvoir faire les calculs avec décimales.


Retourner vers Les Lego sur le PC

Qui est en ligne ?

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