Turinys:

„SnappyXO“tikslaus judėjimo robotas: 6 žingsniai
„SnappyXO“tikslaus judėjimo robotas: 6 žingsniai

Video: „SnappyXO“tikslaus judėjimo robotas: 6 žingsniai

Video: „SnappyXO“tikslaus judėjimo robotas: 6 žingsniai
Video: Трактористы (комедия, реж. Иван Пырьев, 1939 г.) 2024, Lapkritis
Anonim
SnappyXO tikslus judėjimo robotas
SnappyXO tikslus judėjimo robotas

Naudodami „PreciseMovement Arduino“biblioteką, priverskite „Arduino“robotą eiti tam tikrą atstumą tiesiai arba pasukti tam tikru kampu.

Robotui reikia riedančio rutulio ratuko arba jo ekvivalento, kad sukimo metu būtų sumažinta trintis.

www.pololu.com/product/954

Galite nurodyti robotui eiti į priekį tam tikru atstumu arba pasukti tam tikru kampu. Programa nustato savo padėtį naudodama negyvą skaičiavimą. Kadangi padėties įvertinimai priklauso tik nuo rato greičio, slydimas sukels didelę klaidą. Roboto dizaineris turėtų būti atsargus, kad sumažintų slydimo riziką.

Tai buvo išbandyta, kad veiktų su robotu „SnappyXO“.

1 veiksmas: pamokos vieta pakeista

Pamoka perkelta į žemiau esantį puslapį. Ši pamoka nebetaikoma.

sites.google.com/stonybrook.edu/premo

2 žingsnis: Sukurkite „SnappyXO“diferencialinės pavaros robotą

„PreciseMovement“biblioteka, kurią naudosime, yra suderinama tik su diferencinės pavaros robotais. Galite pasirinkti naudoti kitus dviejų ratų pavaros robotus.

3 žingsnis: prijunkite elektroniką

Prijunkite elektroniką
Prijunkite elektroniką

Standartinis „SnappyXO“optinis kodavimo įrenginys:

D0 (kodavimo išvestis) -> „Arduino“skaitmeninis kaištis

VCC -> Arduino 5V

GND -> GND

Variklis ir „Arduino“galia:

Variklio maitinimo šaltinis turi būti tinkamas jūsų naudojamiems varikliams. „SnappyXO“rinkiniui variklio galiai naudojamos 4 AA baterijos, o „Arduino“- 9 V baterija. Įsitikinkite, kad jie visi turi bendrą GND.

4 veiksmas: įdiekite „PreciseMovement Arduino“biblioteką

Parsisiųsti:

github.com/jaean123/PreciseMovement-library/releases

Kaip įdiegti „Arduino“biblioteką:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

5 žingsnis: kodas

„Arduino“kodas:

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

Šiuos parametrus reikia koreguoti. Kitus parametrus, pažymėtus rekomenduotinais ant kodo, galima koreguoti, kad jie veiktų geriau.

  • Patikrinkite ir nustatykite variklio kaiščius pagal ARDUINO PINS.
  • Nustatykite LENGTH ir RADIUS.

    • LENGTH yra atstumas nuo kairiojo rato iki dešiniojo rato.
    • RADIUS yra rato spindulys.
  • Nustatykite PULSES_PER_REV, tai yra impulsų, kuriuos kodavimo įrenginys išleidžia per vieną rato apsisukimą, skaičius.

    • Atkreipkite dėmesį, kad tai skiriasi nuo impulsų skaičiaus, kurį daviklis išleidžia vienam variklio veleno apsisukimui, nebent kodavimo įrenginiai yra prijungti skaityti tiesiai iš rato veleno.
    • PULSES_PER_REV = (impulsai per vieną variklio veleno apsisukimą) x (pavaros santykis)
  • Nustatykite STOP_LENGTH, jei matote, kad robotas peržengia judesį į priekį.

    Robotas sustos, kai numatoma padėtis bus STOP_LENGTH nuo tikslo. Taigi STOP_LENGTH yra apytikslis atstumas, reikalingas robotui sustoti

  • PID parametrai

    KP_FW: Tai proporcingas judesio į priekį komponentas. Padidinkite tai, kol robotas eis tiesiai. Jei sureguliuodami nepavyks, kad tai vyktų tiesiai, greičiausiai kalta aparatūra. (pvz., ratų poslinkis ir pan.)

    KP_TW: tai proporcingas sukimo judesio PID komponentas. Tiesiog pradėkite nuo mažos vertės ir padidinkite ją, kol sukimosi greitis arba roboto kampinis greitis sukantis bus pakankamai greitas, tačiau nesukels perviršio. Norėdami atlikti stebėjimus, galite pakeisti robotą nuo 0 iki 90 ir atgal, įterpdami šią funkciją į kilpos funkciją

Įdėkite tai į kilpą, kad sureguliuotumėte KP_FW:

mover.forward (99999);

Įdėkite tai į kilpą, kad pakaitomis nuo 0 iki 90 sureguliuotumėte KP_TW:

judintojas.suktukas (90); // Tvist 90 CW

vėlavimas (2000 m.);

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

vėlavimas (2000 m.);

Atminkite, kad norint iš tikrųjų pasukti kampinį greitį ties TARGET_TWIST_OMEGA, KI_TW taip pat reikia sureguliuoti, nes proporcinis valdiklis niekada nepasieks tikslaus tikslo. Tačiau nebūtina sukti tokiu kampiniu greičiu. Kampinis greitis tiesiog turi būti pakankamai lėtas.

6 veiksmas: kaip tai veikia

Jei įdomu, kaip tai veikia, skaitykite toliau.

Judėjimas į priekį yra tiesus, naudojant gryno persekiojimo algoritmą tiesia linija. Daugiau apie „Pure Pursuit“:

Sukimo PID valdiklis bando išlaikyti posūkio kampinį greitį esant TARGET_TWIST_OMEGA. Atminkite, kad šis kampinis greitis yra viso roboto, o ne ratų, kampinis greitis. Naudojamas tik vienas PID valdiklis, o išvestis yra kairiojo ir dešiniojo variklių PWM įrašymo greitis. Norint apskaičiuoti kampą, atliekamas skaičiavimas. Kai kampas pasiekia klaidos slenkstį, robotas sustoja.

Rekomenduojamas: