Aller au contenu


Photo
- - - - -

Naissance de mon suiveur de ligne


102 réponses à ce sujet

#81 pat92fr

pat92fr

    Membre passionné

  • Membres
  • PipPipPip
  • 796 messages
  • Gender:Male

Posté 26 septembre 2024 - 07:01

Oui, tu as clairement une amélioration à apporter au niveau du couple. La décélération de la roue intérieure au virage n'est pas assez forte à haute vitesse.

 

Si tu révises la mécanique, réduit encore la masse et l'inertie en rotation de ton robot (le Cg doit se rapprocher de l'axe des roues).

 

Lorsque tu prends un virage, tu pilotes le driver moteur "à contre" (PWM entre 20 et 100% dans le sens de rotation inverse), pas juste le mode frein (court-circuit des pôles du moteur) ?



#82 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 26 septembre 2024 - 10:41

Oui, tu as clairement une amélioration à apporter au niveau du couple. La décélération de la roue intérieure au virage n'est pas assez forte à haute vitesse.

 

Si tu révises la mécanique, réduit encore la masse et l'inertie en rotation de ton robot (le Cg doit se rapprocher de l'axe des roues).

 

Lorsque tu prends un virage, tu pilotes le driver moteur "à contre" (PWM entre 20 et 100% dans le sens de rotation inverse), pas juste le mode frein (court-circuit des pôles du moteur) ?

Au début j'ai fait des inversions de sens de rotation qui ont flingué mes moteurs. Le driver que j'utilisais ne permettait pas de faire du freinage actif

 

Depuis que j'utilise le driver TB6612FNG je n'utilise que le frein actif... Je peux faire une inversion sans danger ? En passant par une étape intermédiaire de freinage ? C'est clair que ça m'arrangerait.



#83 pat92fr

pat92fr

    Membre passionné

  • Membres
  • PipPipPip
  • 796 messages
  • Gender:Male

Posté 26 septembre 2024 - 06:05

Les asservissements en vitesse d'avance et en direction calculent deux consignes

- une consigne de vitesse en RPM pour le moteur droit,

- une consigne de vitesse en RPM pour le moteur gauche.

 

Au niveau de chaque moteur, la consigne de vitesse doit être traitée par l'asservissement suivant :

12008_2022_998_Fig16_HTML.png

Note : "BLDC Motor" ou "Brushed Motor", même principe.

 

Ca suppose avoir un encodeur sur l'arbre moteur ou la roue, pour mesurer sa vitesse de rotation.

 

Cela implique de régler le PID+FF de chaque moteur (même coefficient pour droit et gauche) en plus des PID direction et vitesse d'avance.

 

Avec cette architecture, lorsqu'une consigne de RPM chute brutalement au moment d'un virage, le PID+FF moteur peut envoyer un PWM "inverse" au moteur pendant un court laps de temps. La roue ne va pas tourner à l'envers, mais elle va freiner fortement, plus fortement que d'activer le frein (court circuit des bornes du moteur).

 

https://youtu.be/dTG...WF5johNW9jWYeHQ

 

https://youtu.be/HRa...nPPtN6AuQ0o6dxd

Note : j'utilise la méthode n°2 pour mesurer la vitesse avec des encodeurs à faible résolution.

Note : Pour le filrage passe bas, je fais plus empirique avec un EWMA (cf. https://github.com/jonnieZG/EWMA).



#84 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 27 septembre 2024 - 07:58

Je viens de comprendre mes problèmes...en ligne droite ou courbe large mon pid fonctionne parfaitement...le probleme c'est la sortie ou l'entrée des virages. Pour les virages je suis obligé à cette vitesse (2m/s) d'activer la boucle ouverte, et de façon assez violente. Du coup le robot sort en boucle ouverte et continue à osciller tout au long du parcours. A plus faible vitesse ça fonctionne. Si je pilote aussi la vitesse en fonction de la position sur la ligne, ça fonctionne mais je perds beaucoup de temps... je manque de couple avec ces moteurs chinois de 2000 rpm. J attends les moteurs polulu pour une dernière tentative. Si je lance mon robot en ligne droite et qu'il est à pleine vitesse il sort complètement de la piste pour rattraper la ligne du virage. Il faudrait que je sache quand le virage arrive et quand il se termine. Les 8 capteurs ne suffisent pas pour en être sûr.

#85 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 03 octobre 2024 - 01:32

Bonjour à tous

 

Période un peu creuse en attendant mes moteurs Polulu... du coup j'ai essayé de monter une caméra Huskylens pour voir les possibilités. J'ai eu un moment d'espoir, mais à la vitesse où je veux aller je n'ai pas réussi à l'exploiter. Son temps de mesure et de traitement est de 8ms, c'est beaucoup trop. J'ai essayé beaucoup d'algorithmes différents, pour anticiper les virages, repérer les fins de virage, aller très vite dans la ligne droite. C'est un fiasco complet. Avant la casse, j'ai abandonné cette option.

 

 

20241003_143233.jpg



#86 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 7 030 messages
  • Gender:Male

Posté 03 octobre 2024 - 08:02

Et oui, un HuskyLens, c'est lent.

J'ai cherché, mais malheureusement, je n'ai jamais trouvé une utilisation avec un suiveur de ligne rapide.



#87 Sandro

Sandro

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 321 messages
  • Gender:Male

Posté 03 octobre 2024 - 09:27

Période un peu creuse en attendant mes moteurs Polulu... du coup j'ai essayé de monter une caméra Huskylens pour voir les possibilités. J'ai eu un moment d'espoir, mais à la vitesse où je veux aller je n'ai pas réussi à l'exploiter. Son temps de mesure et de traitement est de 8ms, c'est beaucoup trop. J'ai essayé beaucoup d'algorithmes différents, pour anticiper les virages, repérer les fins de virage, aller très vite dans la ligne droite. C'est un fiasco complet. Avant la casse, j'ai abandonné cette option.

Si le temps de mesure + traitement est de seulement 8ms, alors c'est excellent pour une caméra!

Je suis surpris que tu ne puisses pas en faire un usage utile (nb : je ne dis pas à la place des capteurs normaux, mais en plus). Ne serait-ce que aller à 100% sur les 2 moteurs sur la ligne droite. Ou si tu pousses plus loin (je sais pas si ça reste faisable avec la huskylens), tu peux réellement mesurer la forme de la piste et te localiser par rapport à elle : de cette manière, tu peux calculer précisément la vitesse de tes moteurs qu'il te faut (en boucle ouverte) pour suivre la ligne, et le PID ne fera plus que corriger les petites dérives)


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#88 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 04 octobre 2024 - 06:14

Si le temps de mesure + traitement est de seulement 8ms, alors c'est excellent pour une caméra!

Je suis surpris que tu ne puisses pas en faire un usage utile (nb : je ne dis pas à la place des capteurs normaux, mais en plus). Ne serait-ce que aller à 100% sur les 2 moteurs sur la ligne droite. Ou si tu pousses plus loin (je sais pas si ça reste faisable avec la huskylens), tu peux réellement mesurer la forme de la piste et te localiser par rapport à elle : de cette manière, tu peux calculer précisément la vitesse de tes moteurs qu'il te faut (en boucle ouverte) pour suivre la ligne, et le PID ne fera plus que corriger les petites dérives)

Je pense que sur un circuit plus long c'est largement jouable. Sur ma boucle de 8m, c'est très court et je ne m'en suis pas sorti. C'est à retenter avec des moteurs plus coupleux, qui permettent une réaction plus rapide, là les 8 ms sont prohibitives. Effectivement l'idée était de pouvoir s'assurer d'être en ligne droite et de sortir du PID qui perturbe surtout en sortie de virage, mais je n'ai pas réussi. L'idée aussi était de déclencher la caméra uniquement sur des informations des capteurs extrêmes pour vérifier qu'on entre dans un virage, là idem je fais des tout droit...



#89 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 06 octobre 2024 - 05:35

En attendant les fameux moteurs Polulu 2000 RPM et peut-être une reconception du robot, j'ai repris mes moteurs de 750 RPM très coupleux pour tenter de progresser:

 

* J'ai conditionné la vitesse à la position des capteurs comme le suggérait @pat92fr, ce qui permet de freiner un peu avant les virages

* J'ai conditionné l'utilisation de la boucle ouverte non pas sur les capteurs extrêmes mais sur l'absence totale de ligne, et renforcé le PID virage sur les capteurs extrêmes

* J'ai amélioré la boucle ouverte en supprimant le délai et en testant le retour sur la ligne

* J'ai augmenté légèrement (1mm) le diamètre des roues, et allégé de 30g l'ensemble roues/pneus

 

En faisant tout ça, je suis passé de 4"29 à 4"20 :crazy:​ , avec une trajectoire un peu meilleure mais qui ne plaira pas à @pat92fr  :no: . Dès que j'améliore la trajectoire , je perds du temps. Il faut trouver l'optimum, j'ai fait des centaines de tests... 

 

Et je me suis aperçu par hasard que la toile cirée sur laquelle est imprimée le circuit bougeait très légèrement à l'accélération du robot.. :laugh1: .en scotchant la toile au sol, je suis descendu à 4"11 !!!  tous les essais que j'ai pu faire derrière en particulier sur la trajectoire, ou la gestion spécifique de chaque virage m'ont fait perdre du temps...

 

 

Je n'en suis pas encore à mes 4"...

 

11 centièmes c'est l'équivalent de 20 cm...

 

 



#90 pat92fr

pat92fr

    Membre passionné

  • Membres
  • PipPipPip
  • 796 messages
  • Gender:Male

Posté 06 octobre 2024 - 06:13

Bravo ! :-)

 

Ca progresse ! La trajectoire est meilleure.

 

Le robot semble avoir encore quelques soucis à se stabiliser en sortie de virage. Une intuition : augmenter légèrement le Kd du PID qui gère les virages.

 

On dirait que le rayon de braquage du robot n'est pas suffisant. Tu saurais tracer la courbe rayon de braquage en fonction de la vitesse d'avance en faisant des tests ? 

 

C'est vraiment dommage de chercher une telle performance, sans aucune données te permettant d'identifier les paramètres à améliorer.



#91 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 06 octobre 2024 - 09:04

Bravo ! :-)

 

Ca progresse ! La trajectoire est meilleure.

 

Le robot semble avoir encore quelques soucis à se stabiliser en sortie de virage. Une intuition : augmenter légèrement le Kd du PID qui gère les virages.

 

On dirait que le rayon de braquage du robot n'est pas suffisant. Tu saurais tracer la courbe rayon de braquage en fonction de la vitesse d'avance en faisant des tests ? 

 

C'est vraiment dommage de chercher une telle performance, sans aucune données te permettant d'identifier les paramètres à améliorer.

 

Oui j'arrive à améliorer la trajectoire, j'ai fait varier les Kp et Kd dans tous les sens, mais au point où j'en suis c'est au détriment de quelques centièmes de secondes. Je pense que le diamètre des roues de 47mm est un vrai inconvénient pour la finesse des réglages. Avec des moteurs de 2000 rpm je repasserai à un diamètre de 22/25 mm

 

Je vais voir pour les essais avec les moteurs Polulu , pour essayer de récupérer des fichiers de données. 



#92 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 07 octobre 2024 - 07:25

Une question, quel est le meilleur site pour faire des cartes PCB (délai - prix) ?



#93 pat92fr

pat92fr

    Membre passionné

  • Membres
  • PipPipPip
  • 796 messages
  • Gender:Male

Posté 07 octobre 2024 - 08:18

Perso :

 

Pour des PCB en zone EU : Aisler avec conception sous Kicap + plugin Aisler

Pour des PCB et PCBa en Chine : JLCPCB avec conception sous EasyEDA



#94 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 23 octobre 2024 - 04:19

Bonjour à tous...

 

3 semaines pour sortir un nouveau suiveur de ligne pour essayer de gratter les 11 centièmes de seconde qui me manquent pour boucler le tour de 8m en 4s... :crazy:

 

Une vraie galère, beaucoup de déchets, des versions successives ratées... (3)  pour obtenir enfin le résultat attendu :

 

* Diminution du poids

* Centre de gravité déplacé au niveau des roues

 

en respectant les (mes) critères :

 

* Suiveur totalement caréné 

* Composants et câblage totalement démontables et échangeables...

 

Sans titre.jpg
 

 

 

Plus de 100 grammes gagnés dont la moitié sur le carénage (dimensions, épaisseurs) et évidemment roues et moteurs, plus petits, plus rapides mais beaucoup moins coupleux.

 

J'attends les moteurs N20 2000 RPM de Polulu (galère le délai) pour faire les premiers essais...

 

 

20241023_135734.jpg

 

 

 

 

 

 



#95 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 02 novembre 2024 - 03:44

Bonjour à tous

 

J'ai enfin reçu mes moteurs Polulu pour la version allégée du suiveur de ligne mais les premiers essais sont catastrophiques. A suivre, il faut que je reprenne tous les réglages à zéro...

 

@pat92fr, j'ai enfin enregistré un fichier de données sur un tour de piste de mon premier suiveur (gros couple, record 4"11). C'est un fichier csv de 2675 enregistrements avec les données suivantes :

 

* Le temps en ms - départ 0 ms, enregistrement sur environ 5 secondes de course

* La position du robot donnée par les 8 capteurs: 4.5 = centre, 8 = extrémité droite, 9 = hors ligne droite, 1 = extrémité gauche, 0= hors ligne gauche)

* Les réglages des moteurs droite et gauche en % de la vitesse maximum.

 

Je ne sais pas si tu peux en faire quelque chose. Ce qui m'interpelle c'est que le cycle (mesure + réglage moteur) dure 2 ms, mais quand on regarde le fichier on voit qu'il faut de 50 à 90 ms pour que la correction soit effective, ce qui est énorme, et ce qui peut expliquer mes difficultés.

Je n'en comprends pas la raison et donc que je ne sais pas trop quoi faire.

 

Pour le coup ce n'est pas un problème de couple, peut-être un problème de temps de réaction des moteurs ?

 

Fichier joint  log_donnees.csv   38,87 Ko   25 téléchargement(s)



#96 pat92fr

pat92fr

    Membre passionné

  • Membres
  • PipPipPip
  • 796 messages
  • Gender:Male

Posté 02 novembre 2024 - 07:25

Merci pour les données.

 

PWM à 35% au minimum. Ce n'est pas assez pour virer séré. PWM = 0% voire négatif pour freiner la roue intérieure.

 

La commande PWM est trop propre. Tu peux augmenter Kp et Kd. 



#97 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 02 novembre 2024 - 09:19

@pat92fr ,

 

Merci

 

Tu ne trouves pas anormal d'avoir une quarantaine d'enregistrements successif identiques , comme si la réaction attendue des moteurs ne se produisait pas suffisamment rapidement ?



#98 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 07 novembre 2024 - 03:14

Bonjour à tous !

 

Depuis le 25 juin date à laquelle je me suis lancé le défi à priori simple d'atteindre 2m/s sur un circuit de 8m, je suis enfin arrivé à mon objectif !  4 mois et demi !!!

 

 

20241106_220554.jpg

 

 

Pour dire la vérité ça commençait à me prendre la tête, surtout depuis 2 mois, pour gagner les quelques centièmes qui me manquaient... J'ai fait des centaines d'essais, probablement plus d'un millier, j'ai flingué des moteurs, j'ai testé des dizaines de paramètres en long et en large... pour finalement atteindre l'objectif avec le robot n°2 le plus léger des deux. 

 

Avec ce robot je suis arrivé à 4.40 " assez rapidement, mais ensuite j'ai plafonné. Les améliorations des coeff des PID n'ont pas apporté grand chose, sauf une meilleure trajectoire qui ne se traduisait pas vraiment dans les chronos...

 

Et puis j'ai eu l'idée de faire roues coniques...et là miracle, j'ai gagné entre 2 et 3 dixièmes au tour, avec une régularité à 4.10s en temps et en trajectoire quasiment parfaite. Les roues coniques ont permis à la fois une meilleure tenue en ligne droite et dans les virages !

 

Le robot avec ses roues coniques :

 

20241107_152402.jpg

 

Ensuite j'ai repris différents paramètres:

 

* Les coeff des PID que j'ai renforcés sur le conseil de pat92fr, avec une augmentation du Kd et une diminution du Kp en ligne droite et le contraire dans les virages.

* L'optimisation de la fréquence du PWM de commande des moteurs

* Le déclenchement du PID virage plus tôt

 

 

 

En mettant ma vitesse à 85% de la vitesse max, j'ai enfin atteint l'objectif, certes avec une trajectoire pas aussi belle qu'à 4.10s mais peu importe !

 

Voici le film du record :

 

 

 

J'ai fait aussi des roues coniques pour le suiveur de ligne 1 , mais qui est de toutes façons limité en vitesse (97% de la vitesse max). je suis descendu à 4.07" mais malheureusement j'ai cassé un moteur dans la foulée... A refaire peut-être un jour.

 

resultats.jpg

 

 

Ce projet  m'a permis de continuer à progresser, en particulier avec l'utilisation des batteries LIPO que je répugnais à utiliser et un nouveau driver alors que j'avais toujours travaillé avec des shields déjà tout montés ( et donc des cartes perso soudées maison !  :crazy: )

 

 

Il est temps de passer à autre chose... possible que je me replonge dans le quadrupède avec un objectif de vitesse toujours, mais en travaillant sur le pied dont j'aimerais optimiser la forme, la matière et l'articulation.

 

Merci à vous tous pour vos conseils lors de ce projet !



#99 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 7 030 messages
  • Gender:Male

Posté 07 novembre 2024 - 06:41

Dis donc, tu as peur d'user de la pellicule ? En tout cas, bravo ! C'est super ce que tu as fait.

 

Ton idée de roue conique, c'est surprenant. Les roues des trains sont coniques, mais ils roulent sur des rails.

Mais dans ton cas, peut être que la surface de contact est moindre en ligne droite et plus importante dans les virages.

En gros la surface de contacte varie en fonction de la sinuosité du circuit. Il faudrait voir cela en détail, de plus près et à la loupe.

C'est toujours très satisfaisant de faire ce genre de trouvaille. Peut être, es tu le premier ? 



#100 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 124 messages
  • Gender:Male

Posté 07 novembre 2024 - 09:02

Dis donc, tu as peur d'user de la pellicule ? En tout cas, bravo ! C'est super ce que tu as fait.

 

Ton idée de roue conique, c'est surprenant. Les roues des trains sont coniques, mais ils roulent sur des rails.

Mais dans ton cas, peut être que la surface de contact est moindre en ligne droite et plus importante dans les virages.

En gros la surface de contacte varie en fonction de la sinuosité du circuit. Il faudrait voir cela en détail, de plus près et à la loupe.

C'est toujours très satisfaisant de faire ce genre de trouvaille. Peut être, es tu le premier ? 

Je suis parti d'une hypothèse théorique en me disant que compte tenu de la largeur du train (20cm) et la largeur des roues (40mm), le poids du robot étant au centre,  la pression exercée sur les pneus ne devait pas être uniforme mais vraisemblablement plus forte à proximité du centre et plus faible aux extrémités. J'ai fait une roue avec un cône très faible, 1.4° et bingo ça a été spectaculaire. Je pense que grâce à ça le contact avec la piste est plus uniforme et la pression mieux répartie.





Répondre à ce sujet



  


1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users