Turinys:
- 1 veiksmas: pamokos vieta pakeista
- 2 žingsnis: Sukurkite „SnappyXO“diferencialinės pavaros robotą
- 3 žingsnis: prijunkite elektroniką
- 4 veiksmas: įdiekite „PreciseMovement Arduino“biblioteką
- 5 žingsnis: kodas
- 6 veiksmas: kaip tai veikia
Video: „SnappyXO“tikslaus judėjimo robotas: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
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ą
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:
Arduino - Labirinto sprendimo robotas („MicroMouse“) Sieninis robotas: 6 žingsniai (su paveikslėliais)
Arduino | Labirinto sprendimų robotas („MicroMouse“) Sienų sekimo robotas: Sveiki, aš esu Izaokas ir tai yra mano pirmasis robotas „Striker v1.0“. Šis robotas buvo sukurtas paprastam labirintui išspręsti. Konkurse turėjome du labirintus ir robotą sugebėjo juos identifikuoti. Dėl bet kokių kitų labirinto pakeitimų gali prireikti pakeisti
„Arduino Nano“- MPL3115A2 tikslaus aukščio matuoklio jutiklio pamoka: 4 žingsniai
„Arduino Nano“- MPL3115A2 tikslaus aukščio matuoklio jutiklio pamoka: MPL3115A2 naudojamas MEMS slėgio jutiklis su I2C sąsaja, kad būtų pateikti tikslūs slėgio/aukščio ir temperatūros duomenys. Jutiklių išėjimai yra skaitmeninami didelės skiriamosios gebos 24 bitų ADC. Vidinis apdorojimas pašalina kompensavimo užduotis iš
„Raspberry Pi“- MPL3115A2 tikslaus aukščio matuoklio jutiklio „Python“pamoka: 4 žingsniai
„Raspberry Pi“- MPL3115A2 tikslaus aukščio matuoklio jutiklio „Python“pamoka: MPL3115A2 naudojamas MEMS slėgio jutiklis su I2C sąsaja, kuri pateikia tikslius slėgio/aukščio ir temperatūros duomenis. Jutiklių išėjimai yra skaitmeninami didelės skiriamosios gebos 24 bitų ADC. Vidinis apdorojimas pašalina kompensavimo užduotis iš
Dalelių fotonas - MPL3115A2 tikslaus aukščio matuoklio jutiklio pamoka: 4 žingsniai
Dalelių fotonas - MPL3115A2 tikslaus aukščio matuoklio jutiklio pamoka: MPL3115A2 naudojamas MEMS slėgio jutiklis su I2C sąsaja, kad būtų pateikti tikslūs slėgio/aukščio ir temperatūros duomenys. Jutiklių išėjimai yra skaitmeninami didelės skiriamosios gebos 24 bitų ADC. Vidinis apdorojimas pašalina kompensavimo užduotis iš
Balansavimo robotas / 3 ratų robotas / STEM robotas: 8 žingsniai
Balansavimo robotas / 3 ratų robotas / STEM robotas: Mes sukūrėme kombinuotą balansavimo ir 3 ratų robotą, skirtą naudoti mokyklose ir po pamokų. Robotas sukurtas naudojant „Arduino Uno“, pasirinktinį skydą (pateikiama visa konstrukcijos informacija), „Li Ion“akumuliatorių paketą (visa tai atitinka