Mundarija:

SnappyXO aniq harakatlantiruvchi robot: 6 qadam
SnappyXO aniq harakatlantiruvchi robot: 6 qadam

Video: SnappyXO aniq harakatlantiruvchi robot: 6 qadam

Video: SnappyXO aniq harakatlantiruvchi robot: 6 qadam
Video: Xotirani kuchaytiruvchi 10 ta SIR. Hamma uchun birdek to'gri keladi! 10 daqiqada 2024, Noyabr
Anonim
SnappyXO aniq harakatlantiruvchi robot
SnappyXO aniq harakatlantiruvchi robot

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

Elektronni ulang
Elektronni 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.

Tavsiya: