Taula de continguts:

Robot SnappyXO Precise Mover: 6 passos
Robot SnappyXO Precise Mover: 6 passos

Vídeo: Robot SnappyXO Precise Mover: 6 passos

Vídeo: Robot SnappyXO Precise Mover: 6 passos
Vídeo: SnappyXO mini two-wheel drive robot 2024, De novembre
Anonim
SnappyXO Precise Mover Robot
SnappyXO Precise Mover Robot

Feu que el vostre robot Arduino vagi recte durant una distància especificada o gireu-lo fins a un angle especificat mitjançant la biblioteca PreciseMovement Arduino.

El robot necessita una bola rodant o equivalent per minimitzar la fricció mentre es torça.

www.pololu.com/product/954

Podeu dir al robot que avanci fins a una distància especificada o que giri fins a un angle especificat. El programa determina la seva posició utilitzant el calcul mort. Atès que les estimacions de posició només es basen en la velocitat de la roda, el lliscament induirà un error considerable. El dissenyador del robot ha de tenir cura de minimitzar el risc de lliscament.

S'ha provat que funciona amb el robot SnappyXO.

Pas 1: s'ha canviat la ubicació del tutorial

El tutorial s'ha mogut a la pàgina següent. Aquest tutorial ja no es manté.

sites.google.com/stonybrook.edu/premo

Pas 2: creeu el robot de transmissió diferencial SnappyXO

La biblioteca PreciseMovement que utilitzarem només és compatible amb robots de disc diferencial. Podeu optar per utilitzar altres robots de 2 rodes motrius.

Pas 3: connecteu l'electrònica

Connecteu l'electrònica
Connecteu l'electrònica

Per al codificador òptic SnappyXO estàndard:

D0 (sortida del codificador) -> Pin digital Arduino

VCC -> Arduino 5V

GND -> GND

Potència del motor i Arduino:

La font d'energia del motor ha de ser adequada per als motors que utilitzeu. Per al kit SnappyXO, s’utilitzen bateries 4AA per a la potència del motor i bateria de 9V per a la potència Arduino. Assegureu-vos que tots tinguin un GND comú.

Pas 4: instal·leu la biblioteca Arduino de PreciseMovement

Descarregar:

github.com/jaean123/PreciseMovement-library/releases

Com instal·lar la biblioteca Arduino:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Pas 5: Codi

Codi Arduino:

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

Aquests paràmetres requereixen ajust. Es poden ajustar altres paràmetres etiquetats recomanats al codi per obtenir un millor rendiment.

  • Comproveu i configureu els passadors del motor a PINS ARDUINO.
  • Estableix LLARG i RADI.

    • LONGITUD és la distància de la roda esquerra a la roda dreta.
    • RADIUS és el radi de la roda.
  • Estableix PULSES_PER_REV, que és el nombre de pulsacions que el codificador genera per a una volta de roda.

    • Tingueu en compte que això és diferent del nombre d’impulsos que produeix el codificador per a una volta de l’eix del motor tret que els codificadors estiguin connectats per llegir-los directament des de l’eix de la roda.
    • PULSES_PER_REV = (polsos per cada volta de l'eix del motor) x (relació d'engranatges)
  • Establiu STOP_LENGTH si veieu que el robot està superant després del moviment cap endavant.

    El robot s’aturarà un cop la posició estimada estigui a STOP_LENGTH de l’objectiu. Així, STOP_LENGTH és la distància aproximada necessària perquè el robot s’aturi

  • Paràmetres PID

    KP_FW: Aquest és el component proporcional del moviment cap endavant. Augmenteu-ho fins que el robot vagi recte. Si no podeu aconseguir que funcioni directament sintonitzant això, és probable que el maquinari sigui culpable. (per exemple, desalineació de rodes, etc.)

    KP_TW: Aquest és el component proporcional del moviment de gir PID. Només cal que comenceu des d’un valor baix i que augmenteu fins que la velocitat de gir, o la velocitat angular del robot mentre torceu, sigui prou ràpida, però no causi excessius trets. Per fer observacions, podeu fer alternar el robot de 0 a 90 i tornar, inserint el següent a la funció de bucle

Col·loqueu-lo en bucle per sintonitzar KP_FW:

mover.forward (99999);

Col·loqueu-lo en bucle per alternar de 0 a 90 per sintonitzar KP_TW:

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

endarreriment (2000);

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

endarreriment (2000);

Tingueu en compte que per tal de girar la velocitat angular a TARGET_TWIST_OMEGA, el KI_TW també ha de ser sintonitzat, ja que un controlador proporcional mai no s’assentarà a l’objectiu exacte. No obstant això, no cal girar a aquesta velocitat exactament angular. La velocitat angular només ha de ser prou lenta.

Pas 6: Com funciona

Si teniu curiositat per saber com funciona, seguiu llegint.

El moviment cap endavant es manté recte mitjançant l'algorisme de cerca pura en un camí de línia recta. Més informació sobre Pure Pursuit:

El controlador PID de gir intenta mantenir la velocitat angular de gir a TARGET_TWIST_OMEGA. Tingueu en compte que aquesta velocitat angular és la velocitat angular de tot el robot, no les rodes. Només s’utilitza un controlador PID i la sortida és la velocitat d’escriptura PWM dels motors esquerre i dret. El càlcul mort es fa per calcular l'angle. Un cop l’angle arriba al llindar d’error, el robot s’atura.

Recomanat: