Table des matières:

Robot de déplacement précis SnappyXO : 6 étapes
Robot de déplacement précis SnappyXO : 6 étapes

Vidéo: Robot de déplacement précis SnappyXO : 6 étapes

Vidéo: Robot de déplacement précis SnappyXO : 6 étapes
Vidéo: Ce Policier Piège Les Voleurs ! 2024, Novembre
Anonim
Robot de déplacement précis SnappyXO
Robot de déplacement précis SnappyXO

Faites en sorte que votre robot Arduino aille droit sur une distance spécifiée ou tournez à un angle spécifié à l'aide de la bibliothèque Arduino PreciseMovement.

Le robot a besoin d'une roulette à billes ou d'un équivalent pour minimiser la friction lors de la torsion.

www.pololu.com/product/954

Vous pouvez dire au robot d'avancer jusqu'à une distance spécifiée ou de se tordre à un angle spécifié. Le programme détermine sa position à l'estime. Étant donné que les estimations de position reposent uniquement sur la vitesse de la roue, le glissement induira une erreur considérable. Le concepteur du robot doit veiller à minimiser le risque de glissement.

Cela a été testé pour fonctionner avec le robot SnappyXO.

Étape 1: Emplacement du didacticiel modifié

Le tutoriel a été déplacé vers la page ci-dessous. Ce tutoriel n'est plus maintenu.

sites.google.com/stonybrook.edu/premo

Étape 2: Construisez le robot à entraînement différentiel SnappyXO

La bibliothèque PreciseMovement que nous utiliserons n'est compatible qu'avec les robots à entraînement différentiel. Vous pouvez choisir d'utiliser d'autres robots 2 roues motrices.

Étape 3: Connectez l'électronique

Connectez l'électronique
Connectez l'électronique

Pour l'encodeur optique SnappyXO standard:

D0 (sortie codeur) -> broche numérique Arduino

VCC -> Arduino 5V

GND -> GND

Puissance moteur et Arduino:

La source d'alimentation du moteur doit être adéquate pour les moteurs que vous utilisez. Pour le kit SnappyXO, des piles 4AA sont utilisées pour l'alimentation du moteur et une pile 9V pour l'alimentation Arduino. Assurez-vous qu'ils ont tous un GND commun.

Étape 4: Installez la bibliothèque Arduino PreciseMovement

Télécharger:

github.com/jaean123/PreciseMovement-library/releases

Comment installer la bibliothèque Arduino:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Étape 5: Coder

Code Arduino:

create.arduino.cc/editor/whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview

Ces paramètres nécessitent un ajustement. D'autres paramètres étiquetés recommandés sur le code peuvent être ajustés pour de meilleures performances.

  • Vérifiez et réglez les broches du moteur sous ARDUINO PINS.
  • Réglez la LONGUEUR et le RAYON.

    • LONGUEUR est la distance entre la roue gauche et la roue droite.
    • RADIUS est le rayon de la roue.
  • Définissez PULSES_PER_REV, qui est le nombre d'impulsions émises par le codeur pour un tour de roue.

    • Notez que cela est différent du nombre d'impulsions émises par le codeur pour un tour d'arbre moteur, à moins que les codeurs ne soient connectés pour lire directement à partir de l'arbre de roue.
    • PULSES_PER_REV = (impulsions par tour d'arbre moteur) x (rapport de démultiplication)
  • Réglez STOP_LENGTH si vous voyez que le robot dépasse après le mouvement vers l'avant.

    Le robot s'arrêtera une fois que la position estimée sera STOP_LENGTH loin de la cible. Ainsi, le STOP_LENGTH est la distance approximative requise pour que le robot s'arrête

  • Paramètres PID

    KP_FW: C'est la composante proportionnelle du mouvement vers l'avant. Augmentez cette valeur jusqu'à ce que le robot aille tout droit. Si vous ne pouvez pas le faire fonctionner directement en réglant cela, le matériel est probablement en cause. (par exemple, désalignement des roues, etc.)

    KP_TW: Il s'agit de la composante proportionnelle du PID du mouvement de torsion. Commencez simplement à partir d'une valeur faible et augmentez-la jusqu'à ce que la vitesse de torsion, ou la vitesse angulaire du robot pendant la torsion, soit suffisamment rapide, mais ne provoque pas de dépassement. Pour faire des observations, vous pouvez faire alterner le robot de 0 à 90 et inversement en insérant ce qui suit dans la fonction de boucle

Placez ceci en boucle pour régler KP_FW:

mover.forward(99999);

Placez ceci en boucle pour alterner de 0 à 90 pour régler KP_TW:

mover.twist(90); // Twist 90 CW

retard (2000);

mover.twist(-90) // Twist 90 CCW

retard (2000);

Notez que pour tordre réellement la vitesse angulaire à TARGET_TWIST_OMEGA, le KI_TW doit également être réglé car un contrôleur proportionnel ne s'installera jamais sur la cible exacte. Cependant, il n'est pas nécessaire de tordre à cette vitesse angulaire exactement. La vitesse angulaire doit juste être suffisamment lente.

Étape 6: Comment ça marche

Si vous êtes curieux de savoir comment cela fonctionne, lisez la suite.

Le mouvement vers l'avant est maintenu droit en utilisant l'algorithme de poursuite pure sur un chemin en ligne droite. Plus sur Pure Pursuit:

Le contrôleur PID de torsion essaie de maintenir la vitesse angulaire de torsion à TARGET_TWIST_OMEGA. Notez que cette vitesse angulaire est la vitesse angulaire de l'ensemble du robot et non des roues. Un seul contrôleur PID est utilisé et la sortie est la vitesse d'écriture PWM des moteurs gauche et droit. L'estime est effectuée pour calculer l'angle. Une fois que l'angle atteint le seuil d'erreur, le robot s'arrête.

Conseillé: