Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
PrecisionMovement Arduino kutubxonasi yordamida Arduino robotingizni to'g'ri masofaga yurgizib yoki belgilangan burchakka burib qo'ying.
Burilish paytida ishqalanishni minimallashtirish uchun robotga dumaloq to'p yoki unga teng keladigan to'p kerak.
www.pololu.com/product/954
Siz robotga ma'lum masofaga oldinga borishni yoki belgilangan burchakka burilishni aytishingiz mumkin. Dastur o'z pozitsiyasini o'lik hisob yordamida aniqlaydi. Joyni baholash faqat g'ildirak tezligiga bog'liq bo'lgani uchun, siljish katta xatolarga olib keladi. Robot dizayneri sirg'alish xavfini kamaytirish uchun ehtiyot bo'lishi kerak.
Bu SnappyXO roboti bilan ishlash uchun sinovdan o'tgan.
1 -qadam: O'quv qo'llanmaning joylashuvi o'zgartirildi
Qo'llanma quyidagi sahifaga ko'chirildi. Bu darslik endi saqlanmaydi.
sites.google.com/stonybrook.edu/premo
2 -qadam: SnappyXO differentsial haydovchi robotini yarating
Biz foydalanadigan PreciseMovement kutubxonasi faqat differentsial haydovchi robotlarga mos keladi. Siz boshqa 2 g'ildirakli robotlardan foydalanishni tanlashingiz mumkin.
3 -qadam: Elektronikani ulang
Standart SnappyXO optik kodlovchi uchun:
D0 (kodlovchi chiqishi) -> Arduino raqamli pin
VCC -> Arduino 5V
GND -> GND
Motor va Arduino quvvati:
Dvigatel quvvat manbai siz foydalanadigan dvigatellarga mos bo'lishi kerak. SnappyXO to'plami uchun dvigatel quvvati uchun 4AA, Arduino quvvati uchun 9V batareya ishlatiladi. Ularning barchasida umumiy GND borligiga ishonch hosil qiling.
4 -qadam: PreciseMovement Arduino kutubxonasini o'rnating
Yuklab olish:
github.com/jaean123/PreciseMovement-library/releases
Arduino kutubxonasini qanday o'rnatish kerak:
wiki.seeedstudio.com/How_to_install_Arduino_Library/
5 -qadam: kod
Arduino kodi:
create.arduino.cc/editor/ whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview
Bu parametrlar sozlashni talab qiladi. Kodda tavsiya etilgan boshqa parametrlar yaxshiroq ishlashi uchun sozlanishi mumkin.
- Dvigatel pinlarini ARDUINO PINS ostida tekshiring va o'rnating.
-
LENGTH va RADIUS -ni o'rnating.
- LENGTH - chap g'ildirakdan o'ng g'ildirakgacha bo'lgan masofa.
- RADIUS - g'ildirak radiusi.
-
PULSES_PER_REV -ni o'rnating, bu bitta g'ildirak aylanishi uchun kodlovchi chiqadigan pulslar soni.
- E'tibor bering, agar kodlovchi to'g'ridan -to'g'ri g'ildirak milidan o'qish uchun ulanmagan bo'lsa, bu bitta dvigatel milining aylanishida enkoderning chiqish pulslari sonidan farq qiladi.
- PULSES_PER_REV = (motor milining bir aylanishida pulslar) x (tishli nisbati)
-
Agar oldinga siljishdan keyin robot haddan tashqari otayotganini ko'rsangiz, STOP_LENGTH -ni o'rnating.
Robot taxmin qilingan pozitsiya nishondan STOP_LENGTH uzoqlashganda to'xtaydi. Shunday qilib, STOP_LENGTH - robot to'xtashi uchun zarur bo'lgan taxminiy masofa
-
PID parametrlari
KP_FW: Bu oldinga siljishning proportsional komponenti. Robot to'g'ri ketguncha buni oshiring. Agar siz buni sozlash orqali to'g'ridan -to'g'ri yo'lga qo'ya olmasangiz, demak, apparat xato bo'lishi mumkin. (masalan, g'ildirakning noto'g'ri joylashishi va boshqalar)
KP_TW: Bu PID burilish harakatining mutanosib komponenti. Faqat past qiymatdan boshlang va uni burilish tezligi yoki burilish paytida robotning burchak tezligi etarlicha tez bo'lguncha oshiring, lekin haddan oshib ketishga olib kelmaydi. Kuzatuvlarni amalga oshirish uchun siz pastadir funktsiyasiga quyidagilarni kiritish orqali robotni 0 dan 90 gacha va orqaga almashtirishingiz mumkin
Buni KP_FW -ni sozlash uchun joylashtiring:
mover.forward (99999);
Buni KP_TW -ni sozlash uchun 0 dan 90 gacha almashtirish uchun pastadirga qo'ying:
mover.twist (90); // Twist 90 CW
kechikish (2000);
mover.twist (-90) // Twist 90 CCW
kechikish (2000);
E'tibor bering, TARGET_TWIST_OMEGA -da burchak tezligini aylantirish uchun KI_TW -ni ham sozlash kerak, chunki mutanosib boshqaruvchi hech qachon aniq maqsadga erisha olmaydi. Biroq, aniq burchak tezligida burilish shart emas. Burchak tezligi etarlicha sekin bo'lishi kerak.
6 -qadam: Bu qanday ishlaydi
Agar siz uning qanday ishlashini bilishni istasangiz, o'qing.
Oldinga siljish to'g'ri yo'nalish bo'yicha aniq ta'qib qilish algoritmi yordamida to'g'ri saqlanadi. Pure Pursuit haqida:
Burilish PID boshqaruvchisi burilish burchak tezligini TARGET_TWIST_OMEGA da ushlab turishga harakat qiladi. E'tibor bering, bu burchak tezligi g'ildiraklar emas, balki butun robotning burchak tezligi. Faqat bitta PID boshqaruvchisi ishlatiladi va chiqish chap va o'ng dvigatellarning PWM yozish tezligidir. O'lik hisoblash burchakni hisoblash uchun amalga oshiriladi. Burchak xato chegarasiga yetganda, robot to'xtaydi.