2015-10-29 2 views
0

J'utilise le codeur pour obtenir la distance parcourue et l'angle de cap du véhicule. À son tour, il ne donne pas d'angle précis, le véhicule tourne avec. Dans mon algorithme j'utilise l'accumulation de tous les angles pour trouver l'angle total par rapport au monde (X-O-Y).Le rapport entre le diamètre de la roue et la distance entre la roue et la roue a-t-il un effet sur l'alignement et le cap désiré du véhicule?

Cela a-t-il quelque chose à voir avec le rapport du diamètre de la roue et de la distance entre la roue et la roue?

Cette question a été soulevée dans mon esprit parce que le même algorithme a fonctionné avec un autre matériel qui a des dimensions différentes (diamètre de roue et distance de roue à roue) et il a retourné l'angle de braquage précis aussi.

Apprécierez si une suggestion valable est offerte.

+1

Je ne dis pas que c'est offtopic, mais je pense que vous pourriez trouver un meilleur site StackExchange pour cette question. Tels que [Robotics SE] (http://robotics.stackexchange.com/help/on-topic). – Petr

Répondre

1

L'angle d'un robot dépend du matériel spécifique, comme la taille de la roue, la taille du codeur et la largeur du véhicule. Peut-être que vous avez été chanceux avec le l'autre robot que le changement de diamètre de la roue et la roue à Empattement annulé les uns les autres de sorte que les équations sont les mêmes, mais normalement vous ne serez pas aussi chanceux

![enter image description here

en supposant avoir un robot à deux roues les mêmes lectures sur deux configurations différentes peuvent donner des résultats différents. Dans ma simple illustration j'ai l'essieu d'un robot à deux roues les deux robots ont le même wheel_diameter et utilisent les mêmes encodeurs rotatifs. Supposons que les deux robots maintiennent une roue immobile et que l'autre se déplace de 5 clics vers l'avant sur l'encodeur de roue (les deux bots utilisent le même encodeur et la même roue de taille). En utilisant l'équation simple pour la circonférence d'un demi-cercle, nous pouvons trouver la distance parcourue par les roues.

dist_trav = (pi * wheel_diameter) * (#ticks/total ticks on encoder)

Bien sûr, depuis une roue est immobile, le robot pivote en fait sur un autre demi-cercle. Nous pouvons calculer le nouvel angle à l'aide

circumference = 2*pi*dist_between_wheels dist_between_wheels est le rayon de notre cercle

angle = % of circumference traveled * units = (dist_trav/circumference) * 360 nous utilisons 360 si l'angle est en degrés, mais vous pouvez utiliser radians si on le souhaite

vous verrez que même dans cet exemple où les robots sont identiques à l'exception de la distance entre les roues, le même nombre de tiques signifiera des angles très différents. Si r2=2*r1 nous pouvons voir que dist_trav est le même pour les deux robots (puisque les roues sont le même diamètre) mais quand nous figurons les angles nous obtenons

bot noir

angle_black = (dist_traveled/2*pi*R1) * 360

rouge bot

angle_black = (dist_traveled/2*pi*2*R1) * 360 
      = (dist_traveled/4*pi *R1) * 360 

donc pour le même mouvement des roues du robot rouge n'aura 1/2 l'angle change comme le bot noir l'a fait. Ceci est juste un exemple de jouet, mais vous pouvez facilement voir comment différents diamètres de roues et la distance entre eux peuvent faire une énorme différence.

+0

Merci pour votre réponse! Pourriez-vous s'il vous plaît me dire comment ce rapport est sélectionné pour obtenir un résultat précis pour un matériel particulier. Btw dans la réponse ci-dessus vous avez écrit circonférence = 4 * pi * dist_between_wheels qui je crois devrait être "2 * pi * dist_between_wheels". Corrigez-moi si je me trompe !! –

+0

@ Amit.D vous avez raison. Désolé pour la confusion, j'ai réparé le message. Les équations que j'ai écrites fonctionnent si vous mettez dedans des mesures appropriées. Mais si vous avez les deux roues tourner à la fois ce modèle ne fonctionnera pas. Pour corriger votre code actuel, cherchez des constantes et assurez-vous qu'elles correspondent exactement aux ratios de votre robot, vous pouvez probablement utiliser la logique que vous avez déjà et simplement changer les ratios. Je ne pourrais pas vous dire exactement quoi changer sans voir le code – andrew