Bonjour,
Ma question portait sur la cadence et non sur les temps de traitement.
Je cherchais à savoir à quelles fréquences (Hz), l'acquisition des capteurs, l'asservissement PID et le contrôle des moteurs se faisaient.
Posté 21 septembre 2024 - 06:33
Bonjour,
Ma question portait sur la cadence et non sur les temps de traitement.
Je cherchais à savoir à quelles fréquences (Hz), l'acquisition des capteurs, l'asservissement PID et le contrôle des moteurs se faisaient.
Ben je ne sais pas comment avoir ces infos. J'ai supposé que le temps de la boucle du programme principal donnait l'info sur la cadence de traitement ???
Posté 21 septembre 2024 - 06:48
Tu peux déclarer un compteur ?
unsigned long counter = 0;
Ensuite tu l'incrémentes à chaque fois que tu passes dans ton asservissement.
++counter;
Et tu colles ca dans ton loop()
if (counter % 1000 == 0) { Serial.println(1000.0 * counter / millis(), 2); }
Combien tu obtiens ?
Patrick.
Posté 21 septembre 2024 - 07:23
Tu peux déclarer un compteur ?
unsigned long counter = 0;Ensuite tu l'incrémentes à chaque fois que tu passes dans ton asservissement.
++counter;Et tu colles ca dans ton loop()
if (counter % 1000 == 0) { Serial.println(1000.0 * counter / millis(), 2); }Combien tu obtiens ?
Patrick.
j'obtiens 3 en 1 millisecondes, j'ai essayé de traduire en micro-python ce que tu demandes. En 1 ms le loop s'est effectué 3 fois.
Posté 21 septembre 2024 - 07:35
Donc, ton asservissement en position et en vitesse est cadencé à 3Khz ?
En une itération, tu lis la position de la ligne, et la vitesse des deux moteurs, tu calcules tous les PID, et tu appliques une nouvelle consigne PWM sur les deux moteurs ?
L'asservissement est un peu rapide. Donc pas de souci de ce coté là. Tu pourrais même te limiter à 500Hz ou 1khz et travailler à cadence constante. Ca tévitera de devoir régler les PIDs si jamais tu ajoutes ou retires des traitements.
Tu sais quelle est la fréquence du PWM des moteurs ? 10..20Khz ?
Tu as quelle quantification sur la vitesse des moteurs et sur la position de la ligne ? 0.333 ms pour estimer la vitesse des moteurs, surtout si tu as l'encodeur pololu, ca demande un peu de traitement.
Posté 21 septembre 2024 - 11:30
Donc, ton asservissement en position et en vitesse est cadencé à 3Khz ?
En une itération, tu lis la position de la ligne, et la vitesse des deux moteurs, tu calcules tous les PID, et tu appliques une nouvelle consigne PWM sur les deux moteurs ?
L'asservissement est un peu rapide. Donc pas de souci de ce coté là. Tu pourrais même te limiter à 500Hz ou 1khz et travailler à cadence constante. Ca tévitera de devoir régler les PIDs si jamais tu ajoutes ou retires des traitements.
Tu sais quelle est la fréquence du PWM des moteurs ? 10..20Khz ?
Tu as quelle quantification sur la vitesse des moteurs et sur la position de la ligne ? 0.333 ms pour estimer la vitesse des moteurs, surtout si tu as l'encodeur pololu, ca demande un peu de traitement.
Oui exact en 1 itération je fais toutes ces opérations.
Le PWM des moteurs 1Khz
Je ne comprends pas ta dernière question, mais je n'ai pas mis d'encodeur sur les moteurs.
Posté 22 septembre 2024 - 12:44
Si la fréquence PWM est de 1kHz et ta cadence d'asservissement est de 3khz. Deux itérations sur trois sont inefficaces. Je te conseille de regarder la doc de la PICO est de configurer la fréquence de PWM à 10KHz minimum.
Je comprends que tu n'as pas d'asserv en vitesse des moteurs. C'est peut-être un peu dommage si le but est d'aller chercher la performance.
Posté 23 septembre 2024 - 07:44
Si la fréquence PWM est de 1kHz et ta cadence d'asservissement est de 3khz. Deux itérations sur trois sont inefficaces. Je te conseille de regarder la doc de la PICO est de configurer la fréquence de PWM à 10KHz minimum.
Je comprends que tu n'as pas d'asserv en vitesse des moteurs. C'est peut-être un peu dommage si le but est d'aller chercher la performance.
J'ai modifié cette fréquence mais ça ne change rien.
Je suis à fond avec ces moteurs, et je ne peux donc pas faire les variations de vitesse que tu me conseilles, en particulier dans les lignes droite. J'attends des N20 2000 RPM pour reprendre tous tes posts et voir les pistes que je peux creuser à mon niveau.
Avec des grosses roues de 45mm de diamètre je suis descendu à 4s29 mais dans des conditions erratiques que je ne parviens même pas à reproduire. Le gros diamètre des roues est vraiment un inconvénient pour la maîtrise du robot, y compris dans l'application des corrections PID.
je suis revenu à 42mm de diamètre et je parviens à 4s33 dans des conditions maîtrisées.
Avec des moteurs de 2000 RPM je pourrai être en moyenne à 75% de la vitesse max, avec donc de la réserve. A voir au niveau du couple si cela me permettra d'atteindre ces foutues 4s...
Posté 23 septembre 2024 - 11:21
Oui, tu as besoin de moteurs qui tournent plus vite pour progresser, mais avec un couple suffisant, voire meilleur si possible.
En général, j'ai un premier PD+FF qui donne une consigne de vitesse d'avance du robot (m/s) cadencé entre 100 et 250Hz, et un second PD+FF pour chaque moteur qui donne une consigne PWM (+/- 100%), cadencé entre 500Hz et 1KHz pour des petites moteurs. Ce second asservissement prend en entrée la consigne de vitesse du premier PD+FF et l'erreur de vitesse calculée à partir des encodeurs sur l'arbre moteur.
Patrick.
Posté 24 septembre 2024 - 06:53
Oui, tu as besoin de moteurs qui tournent plus vite pour progresser, mais avec un couple suffisant, voire meilleur si possible.
En général, j'ai un premier PD+FF qui donne une consigne de vitesse d'avance du robot (m/s) cadencé entre 100 et 250Hz, et un second PD+FF pour chaque moteur qui donne une consigne PWM (+/- 100%), cadencé entre 500Hz et 1KHz pour des petites moteurs. Ce second asservissement prend en entrée la consigne de vitesse du premier PD+FF et l'erreur de vitesse calculée à partir des encodeurs sur l'arbre moteur.
Patrick
Bonjour
Le couple de ce modèle 2000 RPM est suffisant ? https://www.pololu.com/product/4784
Posté 24 septembre 2024 - 12:30
Mon dernier suiveur de ligne pèse 100g et utilise des 1:5 et des 1:10 (de mémoire en 1:5, l'asservissement était très difficile à régler). Sans les modules Wifi et Bluetooth et les winglets de détection de marqueur de changement du rayon de courbure, il doit peser 90g voire moins. Ca doit jouer sur les besoins en couple moteur.
Posté 24 septembre 2024 - 01:32
Mon dernier suiveur de ligne pèse 100g et utilise des 1:5 et des 1:10 (de mémoire en 1:5, l'asservissement était très difficile à régler). Sans les modules Wifi et Bluetooth et les winglets de détection de marqueur de changement du rayon de courbure, il doit peser 90g voire moins. Ca doit jouer sur les besoins en couple moteur.
Joli...mais il lui manque sa carrosserie !
Perso je ne peux pas renoncer à l'esthétisme pour la performance... Mon deuxième inconvénient c'est que je ne fais pas de carte PCB... Les deux facteurs sont quasiment religieux chez moi ... Faut pas oublier que je viens de Lego !!!
Le mien fait 260 g , j'ai acheté des moteurs N20 2000 RPM sur ali express mais je pense que c'est du bas de gamme; C'est pour cela que je me demande si Polulu est plus coupleux à vitesse donnée, sachant que j'ai déjà cassé 3 moteurs Pololu 1:10 qui coûtent relativement chers.
1 moteur Pololu 2000 RPM c'est environ 20€, 1 Ali express 2€... J'imagine qu'entre les deux , les caractéristiques (couple en particulier) sont différents !
mais mes moteurs chinois qui sont arrivés avant-hier ont déjà des dents d'engrenage cassées !!! Je suis à nouveau en stby là...
Quand je pense que c'était un projet bas de gamme d'un autre temps... , ça fait 3 mois et des centaines d'euros que je passe...et là il me reste 0.3s à grapiller...
@pat92fr, merci pour toutes tes infos qui me serviront à un moment donné...
Ceci dit je suis toujours infoutu d'aller droit sur ma ligne droite (au 2ème tour...) ce qui semble le minimum.
Posté 24 septembre 2024 - 02:33
Ceci dit je suis toujours infoutu d'aller droit sur ma ligne droite (au 2ème tour...) ce qui semble le minimum.
Je pense qu'avoir un asservissement en vitesse sur tes moteurs aiderait pour cette partie justement... Mais ça nécessite des encodeurs à l'arrière des moteurs ...
Après c'est peut être pas forcément nécessaire, je ne vois pas les petits aimants à l'arrière des moteurs sur le design de pat92fr
Le mien fait 260 g , j'ai acheté des moteurs N20 2000 RPM sur ali express mais je pense que c'est du bas de gamme; C'est pour cela que je me demande si Polulu est plus coupleux à vitesse donnée, sachant que j'ai déjà cassé 3 moteurs Pololu 1:10 qui coûtent relativement chers.
1 moteur Pololu 2000 RPM c'est environ 20€, 1 Ali express 2€... J'imagine qu'entre les deux , les caractéristiques (couple en particulier) sont différents !
mais mes moteurs chinois qui sont arrivés avant-hier ont déjà des dents d'engrenage cassées !!! Je suis à nouveau en stby là...
De ce que j'ai pu observé oui il y a une nette différence de qualité entre des moteurs pololu et des moteurs bas de gamme qu'on peut trouver sur aliexpress...
Mais en fonction du besoin, la différence de qualité n'est pas forcément significative ... Par contre elle l'est dans ton cas je pense.
En revanche ce qui m'étonne un peu c'est que tu indiques avoir cassé des moteurs Pololu ? Tu as fait comment ? Et tu les avais acheté où ? Directement de chez Pololu ou ailleurs ?
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
Posté 24 septembre 2024 - 06:32
Cramer un Pololu est un symptôme d'asservissement mal réglé. La commande PWM doit alterner de très fortes variations.
Une régulation en vitesse pour chaque moteur, bien réglée, prolonge sans aucun doute la durée de vie des micromoteurs.
Sur mon suiveur de ligne, je mesure la vitesse des roues avec un capteur haute résolution XY (12bits). L'aimant est dans la jante et tu vois un PCB coté extérieur. C'est le seul moyen que j'ai trouvé pour avoir un PID moteur précis avec une cadence entre 500Hz et 1kHz.
Posté 24 septembre 2024 - 09:47
Sur ta vidéo, le PID n'est pas réglé. Il suit la piste avec la boucle ouverte uniquement à mon avis.
Pourtant non. D'ailleurs quand je réduis un peu la vitesse c'est nettement mieux. En revanche il est probablement mal réglé, d'ailleurs j'avais beaucoup gagné en réduisant le Kd. La seule boucle ouverte c'est pour prendre les virages serrés.
Le Ki est à zéro, ça pose un problème ?
De ce que j'ai pu observé oui il y a une nette différence de qualité entre des moteurs pololu et des moteurs bas de gamme qu'on peut trouver sur aliexpress...
Mais en fonction du besoin, la différence de qualité n'est pas forcément significative ... Par contre elle l'est dans ton cas je pense.
En revanche ce qui m'étonne un peu c'est que tu indiques avoir cassé des moteurs Pololu ? Tu as fait comment ? Et tu les avais acheté où ? Directement de chez Pololu ou ailleurs ?
En fait c'était au début, avant que j'utilise le freinage actif, j'inversais directement le sens de rotation pour prendre les virages... Ils n'ont pas aimé... Les polulu je les achète via Gotronic
Posté 24 septembre 2024 - 09:54
Sur ta dernière vidéo, regarde bien au ralenti, le robot ne passe un seul virage sans que la ligne ne sorte du capteur de suivi de ligne. D'où mon intuition qu'à cette allure, le PID manque d'efficacité et mérite un meilleur réglage ! :-)
Un virage au hasard.
La boucle ouverte est vraiment pour sauver ton robot dans les situations extrêmes. Là, elle se déclenche tout le temps.
Le probleme du Ki, est que ca va générer un écart par rapport a la ligne. Mieux vaut Ki=0.
Posté 25 septembre 2024 - 06:50
Sur ta dernière vidéo, regarde bien au ralenti, le robot ne passe un seul virage sans que la ligne ne sorte du capteur de suivi de ligne. D'où mon intuition qu'à cette allure, le PID manque d'efficacité et mérite un meilleur réglage ! :-)
Un virage au hasard.
La boucle ouverte est vraiment pour sauver ton robot dans les situations extrêmes. Là, elle se déclenche tout le temps.
Le probleme du Ki, est que ca va générer un écart par rapport a la ligne. Mieux vaut Ki=0.
Faut que je reprenne tout à zéro.
La boucle ouverte je ne l'utilise pas forcément pour les situations extrêmes, mais pour prendre les virages. Sans cette boucle je n'arrive pas à les prendre du tout.
Si je règle mon PID virage suffisamment sévérement, je peux à la limite y arriver (avec les moteurs de fort couple) mais le problème c'est qu'il se déclenche aussi en sortie de virage et du coup les lignes droites sont catastrophiques, je n'arrive pas à régler le PID pour rétablir le robot.
Après sortir le nez des virages ne me gène pas en soi, mais cela doit prendre du temps j'imagine, par rapport aux 0.3s que je veux gagner.
Je suis en train de mettre une réduction de vitesse en fonction de la position sur la ligne, comme tu me l'as préconisé, mais pour l'instant je n'arrive à rien de probant.
Et encore le film que j'ai posté est mon meilleur résultat !
Posté 26 septembre 2024 - 12:15
Quand tu régles ton PID, est-ce que tu suis ce genre de méthode et est-ce que le comportement de ton robot est similaire à cette vidéo :
http://youtu.be/mjr5NwH0dH4?si=m2v9JNaAnwomaT7U
et aussi :
http://youtu.be/0sqT5LPRjic?si=8SPrNUoIzXMaE_IZ&t=72
Posté 26 septembre 2024 - 06:42
Quand tu régles ton PID, est-ce que tu suis ce genre de méthode et est-ce que le comportement de ton robot est similaire à cette vidéo :
http://youtu.be/mjr5NwH0dH4?si=m2v9JNaAnwomaT7U
et aussi :
Oui je suis ce genre de méthodes et d'ailleurs quand mon robot va moins vite ça fonctionne. Je connais ces vidéos, j'en ai bouffées des dizaines, mais ça ne va pas très vite, là. Autour de 1m/s, ça va, au-delà je n'arrive pas. Sur les derniers moteurs 2000 RPM je n'ai clairement plus assez de couple, en plus de leurs dents d'engrenage qui se cassent.
Je crois qu'il faut que je revois mon robot dans son ensemble. Il est dans une gamme de poids (250 gr) compliquée au niveau des moteurs. Si je grimpe en couple, je grimpe en taille de moteur et donc en poids. J'attends les 2000 RPM de Polulu pour un dernier essai.
Il faut peut-être que je revois sa conception globale, largeur, longueur. Il y aussi un point qui peut jouer dans sa capacité à prendre des virages, c'est la largeur des roues, je vais voir de ce côté. J'ai mis de base des roues très larges (40mm) . J'ai des problèmes aussi d'équilibre. Quand je mets le robot à droite de la ligne , il la reprend parfaitement, quand je le mets à gauche, il zigzague. Pourtant il va parfaitement droit quand je le mets sur la ligne. Il agit comme si le PID ne corrigeait pas de la même façon d'un côté (?). Il peut y avoir des différences de couple sur les moteurs ? Du côté des capteurs tout semble OK...
0 members, 0 guests, 0 anonymous users