Aller au contenu


Photo
- - - - -

Mon robot avance plus que ce que je lui demande


  • Veuillez vous connecter pour répondre
8 réponses à ce sujet

#1 haplo31

haplo31

    Nouveau membre

  • Membres
  • 6 messages

Posté 11 juin 2013 - 12:41

Bonjour à tous,
Je crée un sujet car j'ai un petit soucis dans la programmation de mon robot d'intérieur.
Mon chassis est la Turtle de DFRobot(lien) avec des encodeurs que j'ai rajoutés et commandée par une Arduino Mega.
Mes encodeurs sont de piètre qualité, seulement 20 interrupt par tour et mes moteurs n'ont pas d'arbre sans reducteur, j'ai donc 1interrupt = 1/20 tour de roue et peut-être que le soucis vient de là mais je n'en suis pas sur.

Je vous explique, j'ai codé un programme tout bête pour demander à mon robot d'avancer de 1mètre, j'ai donc ajouté la somme des interruptions des encodeurs de chaque roue puis divisé par 2 pour avoir la distance parcourue et je demande a arrêter le moteur lorsque cette distance est égale à 1 mètre.
Sauf qu'il ne s’arrête pas à 1 mètre mais à un peu plus.
J'ai pensé que ça pouvait venir du mouvement cinétique du robot mais même avec la roue à vide, si j'affiche les ticks de mes encodeurs, je vois bien que la demande d’arrêt se fait juste après avoir dépassé le mètre mais la roue continue à tourner quasiment une seconde ensuite.

Je pense donc que cela vient du moteur qui met un certain temps à s’arrêter complètement, ai-je bon ou s'agit-il d'autre chose ?

Y'a t'il un moyen simple de pouvoir calculer et compenser ce déplacement de facon à pouvoir parcourir une distance précise sans dépassement ?

Merci de vos réponses

#2 ChristianR

ChristianR

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)

Posté 11 juin 2013 - 07:41

Tu as essayé de faire ralentir le moteur progressivement avant de l'arrêter ?
Christian

#3 Microrupteurman

Microrupteurman

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 210 messages
  • Gender:Male
  • Location:Aquitaine,Gironde

Posté 11 juin 2013 - 10:00

Salut, regarde du coté du PID, ou plus simple, met tes moteur a fond en marche arriere pendant un trés court moment (10ms) et ton robot s'arretera la ou tu veu.

 
Page Facebook : https://www.facebook...appartelier2.0/
Page Twitter :  https://twitter.com/2Appartelier (bateau seulement)
Boutique Robot-Maker : https://www.robot-ma...er-20/produits/

Besoin d'une impression 3D grand format ? Contactez moi !
 


#4 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 12 juin 2013 - 01:08

met tes moteur a fond en marche arriere pendant un trés court moment (10ms) et ton robot s'arretera la ou tu veu.


C'est un peu bourrin comme méthode mais c'est vrai que ça marche et que c'est des plus simple. Par contre vérifier qu'il y a bien des diodes de roue libre au niveau du circuit de puissance pour pallier aux surintensités dues à la manoeuvre...

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

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!

 

Les réalisations de Mike118  

 

 

 


#5 haplo31

haplo31

    Nouveau membre

  • Membres
  • 6 messages

Posté 12 juin 2013 - 09:42

Mettre le moteur en sens inverse pour un court laps de temps j'y avais pensé mais j'avais peur de l'endommager, je peux le faire sans risque ?

Pour le PID si je comprends bien ce que tu veux dire, un asservissement en distance avec PID pourrait régler mon soucis ?
Car j'ai déjà un asservissement PID en vitesse et je voulais en faire un sur la distance mais d'après ma compréhension du bouzin, un PID sur la distance aurait tendance a faire avancer le robot beaucoup plus vite au début de son trajet qu'a la fin et je recherche plutôt un déplacement homogène.
Y'a un moyen de gérer la distance par PID sans pour autant modifier la vitesse ?

#6 Leon

Leon

    Membre passionné

  • Membres
  • PipPipPipPipPip
  • 1 289 messages
  • Gender:Male

Posté 12 juin 2013 - 06:10

Je vous explique, j'ai codé un programme tout bête pour demander à mon robot d'avancer de 1mètre, j'ai donc ajouté la somme des interruptions des encodeurs de chaque roue puis divisé par 2 pour avoir la distance parcourue et je demande a arrêter le moteur lorsque cette distance est égale à 1 mètre.


Car j'ai déjà un asservissement PID en vitesse et je voulais en faire un sur la distance mais d'après ma compréhension du bouzin, un PID sur la distance aurait tendance a faire avancer le robot beaucoup plus vite au début de son trajet qu'a la fin et je recherche plutôt un déplacement homogène.

Etrange, tu dis que tu as fait un programme simple, mais que tu as un PID en vitesse. Donc c'est loin d'être simple. Tu l'as réglé, ce PID? Tu as récupéré du code existant? Un PID en vitesse avec si peu de tops par tour de roue, je ne pense vraiment pas que ça puisse fonctionner!

Tu as quoi comme étage de puissance pour piloter ton moteur? Si tu as un pont en H, ou équivalent, tu peux essayer de le mettre en "mode frein", c'est à dire court-circuiter le moteur quand tu veux t'arrêter, au lieu de laisser ton pont en H tout ouvert. Ca fonctionne assez bien pour freiner un peu mieux le moteur.

Après, si tu veux vraiment faire du PID complet, ça sera mieux. Mais ça peut vite devenir une usine à gaz si tu ne maitrises pas trop le truc. Et puis pour faire un PID, il faut impérativement que la consigne d'avancement des roues, en entrée du PID, soit "lissée". Donc actualiser la mise à jour de la consigne de position en fonction de la vitesse visée. Avec des rampes d'accélération/décélération directement sur la consigne, c'est encore mieux. Mais encore une fois, attention si tu te lances. A toi de voir en fonction de tes compétences.

Leon.

BOB4, mon drone hélicoptère autonome d'intérieur http://heli.bot.free.fr/
BOB3, mon robot autonome d'intérieur avec WiFi + Foxboard Linux http://ze.bot.free.fr/
BOB5, robot bipède simulé, puis tentative de réalisation (fail)


#7 benjilabricole

benjilabricole

    Membre

  • Membres
  • 23 messages

Posté 14 juin 2013 - 12:40

Bonjour,
En fait, je pense que tu as un pb de distance de freinage !!
Ca peut etre complique a gerer !!
Soit tu evalues cette distance et tu freines avant !!
Soit tu change de vitesse un peu avant d'atteindre la consigne !!
Soit tu geres le freinage (mecanique ou ingestion de couranrt dans le moteur )
Tu risque aussi d'avoir un souci si la configuration du terrain change ou la masse du robot !!

Je te parle en connaissance de cause car j'ai eu le souci sur un metier a scier (precision de l'ordre du mm) avec des billes de bois pesant de plus 1 tonne au debut puis 200 kg en fin de sciage !!
Solution: moteur brushless avec reducteur + frein + codeur + variateur aavec gestion de bucle de freinage !

Par programmation on peut faire beaucou de chose mais pour atteindre certaines precisions on est oblige d'avoir une usine a gaz. !!

Ce message biensur pour info !!

#8 hmnrobots

hmnrobots

    Membre passionné

  • Membres
  • PipPipPip
  • 316 messages
  • Gender:Male
  • Location:Périphérie Nantes

Posté 14 juin 2013 - 02:51

Tout partant des impulsions des codeurs, es tu sur de ne pas rater des impulsions? si il y a une roue codeuse par roue il est possible qu' elles arrivent en même temps et que tu en rates une ce qui expliquerait qu'il continue.... revoir éventuellement le traitement de l'interruption
Faire simple, c'est déjà bien assez compliqué!
http://hmnrobots.blogspot.fr/

#9 benjilabricole

benjilabricole

    Membre

  • Membres
  • 23 messages

Posté 14 juin 2013 - 10:13

Bonne idée le cout des impulsions ratées !!
Pour vérifier tu peux mémoriser le nombre d'impulsions lors de la demande d'arret et afficher le nombre d'impulsion lorsqu'il est arrêté !!
Tu verras la différence entre les 2 et pourras savoir si c'est du glissement dut à l'inertie(impulsion suplémentaires correspondant à l distance en trop) ou des impulsions ratées !!!




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

0 members, 0 guests, 0 anonymous users