Cuprins:

Robotul SnappyXO Precise Mover: 6 pași
Robotul SnappyXO Precise Mover: 6 pași

Video: Robotul SnappyXO Precise Mover: 6 pași

Video: Robotul SnappyXO Precise Mover: 6 pași
Video: Ce înseamna semnul tau din nastere 2024, Noiembrie
Anonim
Robotul SnappyXO Precise Mover
Robotul SnappyXO Precise Mover

Faceți robotul dvs. Arduino să meargă drept pe o distanță specificată sau răsuciți-l într-un unghi specificat utilizând biblioteca PreciseMovement Arduino.

Robotul are nevoie de o ruletă cu bilă sau echivalent pentru a minimiza fricțiunea în timpul răsucirii.

www.pololu.com/product/954

Puteți spune robotului să meargă înainte la o distanță specificată sau să se răsucească la un unghi specificat. Programul își determină poziția folosind calculul mort. Deoarece estimările poziției se bazează doar pe viteza roții, alunecarea va induce o eroare considerabilă. Proiectantul robotului trebuie să fie atent pentru a minimiza riscul de alunecare.

Acest lucru a fost testat pentru a funcționa cu robotul SnappyXO.

Pasul 1: Locația tutorialului a fost modificată

Tutorialul a fost mutat pe pagina de mai jos. Acest tutorial nu mai este menținut.

sites.google.com/stonybrook.edu/premo

Pasul 2: Construiți robotul de acționare diferențială SnappyXO

Biblioteca PreciseMovement pe care o vom folosi este compatibilă numai cu roboții cu acționare diferențială. Puteți alege să folosiți alți roboți cu 2 roți cu tracțiune.

Pasul 3: Conectați dispozitivele electronice

Conectați electronica
Conectați electronica

Pentru codificatorul optic SnappyXO standard:

D0 (ieșire codificator) -> Pin digital Arduino

VCC -> Arduino 5V

GND -> GND

Putere motor și Arduino:

Sursa de alimentare a motorului trebuie să fie adecvată pentru motoarele pe care le utilizați. Pentru kitul SnappyXO, bateriile 4AA sunt utilizate pentru puterea motorului și bateria de 9V pentru puterea Arduino. Asigurați-vă că toate au un GND comun.

Pasul 4: Instalați biblioteca PreciseMovement Arduino

Descarca:

github.com/jaean123/PreciseMovement-library/releases

Cum se instalează Arduino Library:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Pasul 5: Cod

Cod Arduino:

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

Acești parametri necesită ajustare. Alți parametri etichetați recomandați pe cod pot fi reglați pentru o performanță mai bună.

  • Verificați și setați pinii motorului sub PIN-urile ARDUINO.
  • Setați LUNGIME și RAZĂ.

    • LUNGIME este distanța de la roata stângă la roata dreaptă.
    • RADIUS este raza roții.
  • Setați PULSES_PER_REV, care este numărul de impulsuri pe care le scoate codificatorul pentru o rotație a roții.

    • Rețineți că acest lucru este diferit de numărul de impulsuri pe care le produce ieșirea codificatorului pentru o rotație a arborelui motorului, cu excepția cazului în care codificatoarele sunt conectate pentru a fi citite direct din arborele roții.
    • PULSES_PER_REV = (impulsuri pe o rotație a arborelui motorului) x (raport de transmisie)
  • Setați STOP_LENGTH dacă vedeți că robotul depășește după mișcarea înainte.

    Robotul se va opri odată ce poziția estimată este STOP_LENGTH distanță de țintă. Astfel, STOP_LENGTH, este distanța aproximativă necesară pentru ca robotul să se oprească

  • Parametrii PID

    KP_FW: Aceasta este componenta proporțională a mișcării înainte. Măriți acest lucru până când robotul merge drept. Dacă nu reușiți să treacă direct prin reglarea acestui lucru, atunci hardware-ul este probabil vinovat. (de ex. nealinierea roților etc.)

    KP_TW: Aceasta este componenta proporțională a mișcării de răsucire PID. Pur și simplu începeți de la o valoare mică și creșteți-o până când viteza de răsucire sau viteza unghiulară a robotului în timpul răsucirii este suficient de rapidă, dar nu provoacă depășiri. Pentru a face observații, puteți avea robotul alternativ de la 0 la 90 și înapoi, inserând următoarele în funcția de buclă

Plasați acest lucru în buclă pentru a regla KP_FW:

mover.forward (99999);

Plasați acest lucru în buclă pentru a alterna de la 0 la 90 pentru a regla KP_TW:

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

întârziere (2000);

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

întârziere (2000);

Rețineți că, pentru a răsuci efectiv viteza unghiulară la TARGET_TWIST_OMEGA, KI_TW trebuie, de asemenea, acordat, deoarece un controler proporțional nu se va așeza niciodată la ținta exactă. Cu toate acestea, nu este necesar să se răsucească la acea viteză unghiulară exactă. Viteza unghiulară trebuie doar să fie suficient de lentă.

Pasul 6: Cum funcționează

Dacă sunteți curios despre modul în care funcționează citiți mai departe.

Mișcarea înainte este menținută drept folosind algoritmul de urmărire pură pe o linie dreaptă. Mai multe despre Pure Pursuit:

Controlerul PID de răsucire încearcă să mențină viteza unghiulară de răsucire la TARGET_TWIST_OMEGA. Rețineți că această viteză unghiulară este viteza unghiulară a întregului robot, nu roțile. Se utilizează un singur controler PID, iar ieșirea este viteza de scriere PWM atât a motoarelor din stânga, cât și din cea dreaptă. Calculul mort se face pentru a calcula unghiul. Odată ce unghiul atinge pragul de eroare, robotul se oprește.

Recomandat: