8
votes

Comment contrôler un robot de drive kiwi?

Je suis sur le Première équipe de robotique à mon lycée, et nous travaillons au développement d'un kiwi Robot d'entraînement, où il y a trois omni roues montées dans une configuration de triangle équilatéral, comme ceci:

roues OMNI de trois numérotées dans une configuration de triangle équilatéral

Le problème consiste à programmer le robot pour piloter les moteurs de sorte que le robot se déplace dans la direction d'une entrée de joystick donnée. Par exemple, pour déplacer "UP", les moteurs 1 et 2 seraient alimentés de manière égale, tandis que le moteur 3 serait éteint. La position de la joystick est donnée comme un vecteur et je pensais que si les moteurs étaient également exprimés en tant que vecteurs, Projection de vecteur pourrait être ce dont j'ai besoin. Cependant, je ne suis pas sûr que cela a raison, et si c'est le cas, comment je l'appliquerais. J'ai aussi un sentiment qu'il peut y avoir plusieurs solutions à une seule position de joystick. Toute aide serait grandement appréciée.


1 commentaires

Vous pouvez représenter le vecteur de direction comme une somme de deux vecteurs moteurs, car ils forment une base complète. Vous devez omettre un troisième vecteur en utilisant certains critères. Ensuite, vous devriez arriver à une solution unique.


4 Réponses :


1
votes

Comme vous l'avez reconnu, la première partie de cela trouvera une équation appropriée pour représenter le mouvement résultant de tout paramètre moteur. En fonction du niveau de contrôle et de rétroaction que vous avez sur vos vitesses du moteur, je suggérerais que le processus que vous allez en profondeur devrait commencer par écrire une équation de vecteur: (Définissez positif x comme tout droit)

-m1cos (30) + m2cos (30) = x (le négatif est car 1 et 2 doit être alimenté la même ampleur, mais des polarités opposées pour le mouvement en avant)

m1sin (30) + m2sin (30) -m3 = y (comme le mouvement anticlinois sur le sensanier sur 1 et 2 entraînera le déplacement du robot à gauche dans le mouvement Y et le mouvement anticlinois sur 3 entraînera le robot en mouvement à droite) < / p>

L'autre entrée que vous devez ajouter dans ceci est la rotation souhaitée du robot, heureusement, M1 + m2 + m3 = w (vitesse de rotation)

Votre entrée de joystick vous donnera x, y et w, vous avez donc 3 équations avec 3 inconnues.

De là, il s'agit d'équations simultanées, vous risquez donc de vous retrouver avec plusieurs solutions, mais celles-ci peuvent généralement être limitées en fonction des vitesses de moteur possibles et similaires.

Un exemple de ceci est le REC :: Robotino: : COM :: Classe Omnidrive - Le code source de cette méthode est également disponible ...


0 commentaires

2
votes

Définissons d'abord certains termes. Conformément à la Convention habituelle, l'axe X pointera à droite et que l'axe Y va pointer vers le haut (de sorte que la poussée de la roue 3 est le long de l'axe X). Nous appelons le mouvement des roues w 1 , w 2 et w 3 , chacun défini pour que w i > 0 signifie que la roue tourne dans le sens des aiguilles d'une montre. Dans votre exemple, si w 1 <0, w 2 = w 1 et w 3 = 0, le robot se déplacera dans la direction + y.

Si les trois roues tournées à la même vitesse (w 1 = w 2 = w 3 ) Le robot tournerait en place. Je suppose que vous ne voulez pas que, donc la somme des rotations doit être zéro: w 1 + w 2 + w 3 < / sub> = 0 .

Le mouvement de chaque roue contribue au mouvement du robot; Ils ajoutent comme vecteurs:
W 1 = -1/2 x - SQRT (3) / 2 y de
W 2 = -1/2 x + sqrt (3) / 2 y de
W 3 = x

Donc, si vous connaissez les X et Y souhaités du joystick, vous avez W 1 , W 2 et W 3 . Comme nous l'avons déjà vu, la différence entre W 1 et W 2 est ce qui entraîne la motion y. Leur somme motion dans x.


2 commentaires

Je sais que c'est une réponse vraiment ancienne, mais où avez-vous obtenu 0,5 et sqrt (3) / 2 de? Je reconnais que 0,5 est le péché (PI / 6) et SQRT (3) / 2 est COS (PI / 6), mais comment saviez-vous d'utiliser ces valeurs à cet égard?


@Nathan: C'est juste la géométrie de vecteur d'un triangle équilatéral, brisant la vecteur W1 en composants X et Y.



4
votes

J'ai construit 9 robots pendant mon séjour à l'école (1 premier, 8 robocup). Nous avons utilisé la même mise en page omnidrive que vous. La réponse de Beta a l'air correcte mais Ajoutez la rotation forte> à toutes les roues par la suite:

M = [(-0.5 -sqrt(3)/2    +1)
     (-0.5 +sqrt(3)/2    +1)
     (1     0            +1)]


0 commentaires

2
votes

Bien que ce système puisse être résolu mathématiquement, en 2002, la première équipe 857 a choisi de le résoudre mécaniquement. Notre système de contrôle a utilisé trois joysticks montés avec leurs axes X formant un triangle équilatéral et des poignées remplacées par des bras à la douille à billes connectés à une culasse en forme de Y. Carte de l'axe X de chaque bâtonnette directement à une vitesse du moteur et le système de contrôle a été résolu. À titre avantageux, ce système est très intuitif pour la laïc à exécuter - poussez le joug dans la direction que vous souhaitez aller, faites-la tourner pour tourner.


0 commentaires