Le robot ne va jamais droit

19

J'utilise 2 moteurs CC identiques et une roue pivotante. Les moteurs sont connectés au pilote de moteur L293D et sont contrôlés par RPi .

Le robot ne va pas droit. Il vire à droite. Je fais fonctionner les deux moteurs à 100% PWM .

Ce que j'ai essayé de corriger l'erreur:

  1. J'ai ajusté le PWM de la roue en allant plus vite à 99% , mais le robot se tourne juste de l'autre côté;
  2. J'ai ajusté le poids du robot et le problème persiste.

J'ai essayé une fois de faire fonctionner le moteur sans aucune charge. Est-ce la cause de cela, comme on me l'a dit plus tard, faire fonctionner un moteur à courant continu sans aucune charge les endommage?

Si ce n'est pas la cause, dites-moi comment résoudre ce problème sans utiliser de capteurs pour le contrôler.

Souris
la source
Dans une configuration de disque différentiel que j'imagine est ce que vous utilisez, cela est très susceptible de se produire. Une petite différence entre les deux moteurs entraînera la rotation du robot.
Demetris
4
Bienvenue dans le contrôle en boucle ouverte. Vous avez besoin de vos propres capteurs (vos yeux) pour détecter le problème vous-même, comment pensez-vous que le robot pourra le détecter sans capteurs supplémentaires? Fermer la boucle de contrôle avec des capteurs est la voie à suivre.
Unité de cintrage 22
1
Les moteurs pas à pas peuvent fonctionner si vous voulez éviter les capteurs.
@bdares - S'il n'y a pas de capteurs, comment le robot sait-il quand corriger la course? Si une roue heurte une zone de faible friction (poussière, par exemple) et glisse, le robot tourne et ne corrigera jamais.
Chuck
Lorsque vous dites qu'il n'y a pas de capteurs, cela peut-il signifier qu'il n'y a pas de détection externe ou excluez-vous également les encodeurs sur les roues? car c'est la solution typique à ce problème.
JamesRyan

Réponses:

29

Je poste ceci comme réponse parce que c'est la réponse.

Tu ne peux pas.

Comme @ BendingUnit22 le mentionne, vous tentez un contrôle en "boucle ouverte". Le bruit et les variations signifieront que votre robot ne conduira jamais une ligne parfaitement droite.

Les moteurs peuvent avoir des résistances d'enroulement différentes (différents courants d'entraînement / couple), les roues peuvent être de tailles différentes, les roues peuvent avoir des caractéristiques de traction différentes, le roulement de la roulette peut être "rigide", la roulette peut ne pas être parfaitement droite au démarrage du véhicule , le sol peut avoir des caractéristiques de friction de surface variables (lire: poussière ou moquette) - la liste s'allonge encore et encore.

La seule façon de tenir compte des choses hors de votre contrôle (ce que je mentionne ci-dessus + plus) est d'utiliser des capteurs de rétroaction.

Vous pouvez essayer d'obtenir de meilleures performances en boucle ouverte en corrigeant les problèmes que j'ai énumérés, mais il y en a encore plus et vous ne pouvez tout simplement pas tout contrôler.

Mandrin
la source
5
Exactement! Le problème réside dans la déclaration "J'utilise 2 moteurs CC identiques". Ils ne sont jamais parfaitement identiques, et comme le mentionne @Chuck, il existe toute une série d'autres considérations. La seule chose certaine en robotique, c'est que des erreurs et du bruit vont se produire.
Ryan Loggerythm
2
L'utilisation de deux roues sur le même axe devrait encore donner de bien meilleurs résultats que l'utilisation de deux moteurs identiques, n'est-ce pas?
John Dvorak
@JanDvorak - Je ne suis pas tout à fait sûr de ce que vous voulez dire lorsque vous dites "deux roues sur le même axe", mais je pense qu'il est entendu / implicite que les deux roues sont sur le même axe géométrique. Si vous voulez dire le même axe de commande (comme dans un moteur) ou essieu (impliquant à nouveau un moteur), je voudrais souligner qu'il n'est pas possible d'effectuer une direction à entraînement différentiel avec un essieu verrouillé. Pour qu'un moteur contrôle les deux roues à des vitesses différentes, il faut un différentiel (et d'autres équipements), et le différentiel casse efficacement l'essieu en deux parties et vous êtes de retour à la case départ.
Chuck
Je voulais dire un essieu, désolé. Je ne savais pas qu'il fallait pouvoir aller pas droit?
John Dvorak
2
@JanDvorak - Je pense que le robot d'OP est un véhicule de type microsouris. Même s'il ne devait aller qu'en ligne droite et utiliser un seul essieu, toutes les autres sources d'erreur s'appliquent toujours. Si une roue a un diamètre 0,1% plus grand que l'autre, alors elle parcourra une longueur de chemin qui est 0,1% plus longue que le pneu plus petit par tour . Supposons, par exemple, que la taille nominale de la roue soit de 10 cm et que l'espacement des roues soit de 10 cm. Le plus gros pneu mesure 10,01 cm et parcourt 0,0314 cm plus loin par tour . Pour l'empattement, le robot tourne de 0,12 degrés par tour de roue . 0,01 cm peut facilement provenir de la poussière sur un pneu.
Chuck
6

Étant donné que le problème de la boucle ouverte-fermée est déjà mentionné, je donnerai un commentaire au "J'ai déjà essayé de faire fonctionner un moteur à courant continu sans charge".
Oui, vous pourriez endommager votre moteur avec cela, mais vous pouvez également endommager ou détruire votre moteur avec une charge. La destruction vient du courant et de la température qui en résulte. S'il n'y a pas de fumée et une odeur évidente provenant du moteur, il est très probable qu'il ne soit pas endommagé. D'après mon expérience, je peux dire que les moteurs à courant continu à l'échelle des loisirs commenceront à se dégrader à des températures bien supérieures à 100 ° C. Et vous remarquerez certainement ces températures

EDIT:
J'y ai réfléchi à nouveau et j'ai peut-être eu une idée dont votre collègue aurait pu parler. Il existe un type spécial de moteur AC. Ce sont des moteurs synchrones non excités. Fondamentalement, ils sont construits pour l'auto-destruction. Si vous les allumez, ils commenceront à accélérer jusqu'à ce qu'ils se démontent. Mais si vous placez une lourde charge sur eux, ils ne peuvent pas atteindre cet état, juste à cause de l'énorme moment qu'ils doivent appliquer à la charge. Vous pouvez donc les utiliser à des fins raisonnables. Quoi qu'il en soit, vous n'avez définitivement pas un moteur comme celui-ci dans votre application.

TobiasK
la source
1
Je pense aussi que, surtout avec les moteurs de loisirs, au moment où vous le chauffez suffisamment pour remarquer qu'il fait chaud ou sent mauvais, vous avez probablement déjà brûlé l'isolant des enroulements. Comme beaucoup d'équipements électriques, il fonctionne bien ou il est cassé. Il n'y a pas beaucoup de cas intermédiaires.
Chuck
Il n'y avait pas de fumée ni aucun dommage visible. Alors peut-être qu'il n'est pas endommagé car je l'ai fait fonctionner pendant moins d'une demi-minute.
Souris
2

Ce que vous décrivez s'appelle le contrôle en boucle ouverte, et pour ce faire, vous avez besoin de deux moteurs qui sont exactement les mêmes, deux roues exactement les mêmes, le centre de gravité du robot doit être au centre entre les roues, un circuit électrique symétrique parfait, et enfin une surface de niveau uniforme parfaite pour courir.

Pour ce faire, vous commandez généralement des dizaines ou des centaines de chaque pièce, puis effectuez des tests importants pour trouver deux moteurs les plus proches les uns des autres en termes de puissance et de vitesse en fonction de la tension et du PWM. Faites de même pour les roues, les contrôleurs de moteur et les autres pièces.

Ce processus est appelé binning - après ces tests, vous les triez selon leur capacité ou leurs caractéristiques. Il est considéré comme beaucoup plus coûteux en temps et en ressources de le faire correctement que de passer à un modèle en boucle fermée, et ne tient même pas compte des mauvaises conditions du sol.

C'est cependant une façon de répondre à vos besoins sans capteurs supplémentaires.

Adam Davis
la source
1

Bien qu'il ne soit jamais parfait, il peut y avoir un moyen simple de le faire aller plus droit.

Si à 100% -100% la voiture tourne toujours à gauche, et à 100% -99% la voiture tourne toujours à droite, vous devriez pouvoir améliorer cela en essayant des valeurs intermédiaires.

Commencez avec 100% -99,5% et continuez avec 100% -99,75% ou 100% -99,25% selon le résultat. Cela devrait bientôt converger vers une situation où vous irez droit «en moyenne».

Dennis
la source
0

Eh bien, si le problème ne réside pas dans les différences de matériel ou de logiciel pour chaque roue, il s'agit probablement d'un problème d'imperfections naturelles dans la façon dont vous avez construit le robot ou la façon dont les moteurs ont été produits. Les connexions peuvent ne pas être solides ou le RPI peut ne pas produire le même courant. Vous voulez probablement utiliser des contrôleurs de vitesse. Essayez d'abord.

Si cela ne fonctionne pas, votre fabricant n'a probablement pas fabriqué de moteurs identiques et vous n'aurez probablement qu'à calibrer les moteurs. Cela peut signifier la mise à l'échelle de la valeur du moteur le plus puissant afin que 100% de la puissance du moteur le plus puissant corresponde au moteur faible.

demi-pomme de terre
la source
2
L'utilisation de contrôleurs de moteur identiques ne résoudra pas le problème actuel. Le problème est au cœur de la robotique, qui est "comment puis-je corriger l'erreur?"
Ryan Loggerythm
J'ai entendu dire que les moteurs à courant continu peuvent fonctionner légèrement plus lentement vers l'arrière que vers l'avant. De plus, tout déséquilibre du poids peut entraîner un décalage sur le côté. Sans parler d'autres choses comme le frottement, etc. Faire quoi que ce soit "identique" ne fonctionnera pas. Les steppers pourraient faire un peu mieux, mais alors vous ne devriez pas conduire trop vite ou quoi que ce soit ...
Paul
-2

Les roues avec moteurs à courant continu doivent b à l'avant. Et roue coster à l'arrière. Ensuite, il se déplacera droit uniquement vers l'avant

Arslan
la source
Bienvenue chez Robotics Arslan. Sur Stack Exchange, nous recherchons des réponses complètes qui fournissent des explications et un contexte. Les réponses très courtes ne peuvent pas faire cela, veuillez donc modifier votre réponse pour expliquer pourquoi elle est correcte, idéalement avec des citations. Les réponses qui ne contiennent pas d'explications peuvent être supprimées.
Mark Booth