Mundarija:

Masofadan boshqariladigan USB Gamepad orqali boshqariladigan 4WD robot: 6 qadam
Masofadan boshqariladigan USB Gamepad orqali boshqariladigan 4WD robot: 6 qadam

Video: Masofadan boshqariladigan USB Gamepad orqali boshqariladigan 4WD robot: 6 qadam

Video: Masofadan boshqariladigan USB Gamepad orqali boshqariladigan 4WD robot: 6 qadam
Video: Telefonni koʻz bilan boshqarish 2024, Iyun
Anonim
Image
Image

Keyingi robototexnika loyihasi uchun men kutilmagan holatlar tufayli o'z robot platformamni loyihalashtirishga majbur bo'ldim.

Maqsad-bu avtonom bo'lish, lekin birinchi navbatda men uning asosiy haydash qobiliyatini sinab ko'rishim kerak edi, shuning uchun xuddi RC (radio boshqariladigan) transport vositasi kabi o'zini tutish va boshqarishni qiziqarli loyiha deb o'yladim., lekin buning o'rniga USB Gamepad -dan foydalaning.

Natijalar men kutganimdan yaxshiroq yoki yaxshiroq bo'ldi.

USB Gamepad marshrutidan o'tishning afzalligi shundaki, men uni sozlashim va qilgan ishimga qo'shishim mumkin. Menda RC avtomashinasini qurishda hech qanday tajriba yo'q, lekin men tasavvur qilamanki, RC uzatgichi (joystiklar/tugmalar va boshqalar) va RC qabul qilgichi bilan bog'liq.

Masalan, men dasturni yuqori oqimlarni va kodlovchi tezligining past qiymatlarini aniqlab, robot devorga urilganini tan oldim.

Ixtiyoriy ravishda, robotga USB veb -kameralarini qo'shish mumkin, ularning soni va joylashishiga qarab, siz robotni yashash joyi atrofida va boshqa xonaga olib kirishingiz mumkin, shu bilan birga USB Gamepad ulangan kompyuter oldida. u

Bu ko'rsatma haqiqiy, batafsil, hamma narsani o'z ichiga olgan, bosqichma-bosqich ko'rsatma bo'lmaydi, lekin men imkon qadar batafsil ma'lumot berishga harakat qilaman.

Ta'minotlar

Tavsiya etilgan qismlar: Men buni Servo Siti (Actobotics) dan olganman.

2 - 13,5 dyuymli "U -kanallar", tayanch ramkaning yon tomonlari uchun. Dvigatellar bunga o'rnatilgan. Men qisqaroq narsa bilan bordim va dvigatellarim burchaklarga o'rnatildi va bu ularni o'rnatishni qiyinlashtirdi.

Asosiy ramkaning old va orqa qismi uchun 2 - 12 dyuymli U -kanallar.

Old va orqa tamponlar uchun 2 - 15 dyuymli U -kanallar

Old ustunlar uchun 2 - 7 (yoki 7,5 dyuymmi?) U -kanallar. Bu juda muhim emas, uzunligi har xil bo'lishi mumkin. Bu orqa ustunlarning balandligi va burchakni qaysi balandlikda o'rnatishni tanlashingizga bog'liq. Ularni bog'laydigan U-kanal.

2-(uzunlikmi?) U-kanallar, burchakli a'zo uchun, old-orqa, tik ustunlarni bog'lab turadi. Bu juda muhim, chunki Servo City / Actobotics bu maqsadda 45 graduslik burchakli panellar yoki qavslar sotadi, lekin siz to'g'ri uzunlikka ega bo'lishingizga ishonch hosil qilish uchun matematikani / trigni bajarishingiz kerak bo'ladi.

2-(uzunlikmi?) U-kanallar yuqori darajali yon bamperlar bo'lib xizmat qiladi, yana bu tayanch bilan nima qilishingizga bog'liq.

2-(uzunligi?) U-kanallar old va orqa bamperlarning yuqori darajali vazifasini bajaradi, bu ham yuqoridagi kabi.

1 - (uzunligi?) U -kanali eng yuqori a'zo bo'lib xizmat qiladi, orqa ustunlar bo'ylab. Bu juda muhim bo'lmasligi mumkin, chunki siz tepaga yoki tik ustunlar oldida / orqasiga o'rnatishingiz mumkin.

12 (taxminan) L-kanallar yoki qavslar. Ular bir nechta maqsadlarga xizmat qiladi, lekin asosan ramka va vertikal ustunlar burchaklarining mustahkamligini ta'minlaydi.

4 (+?) 3-teshikdan 5-teshikli tekis kanalli. Ular, shuningdek, robotga strukturaviy kuch beradi.

ServoCity ikkita asosiy turdagi keng panelli panellarni sotadi, ular pastki panjara sifatida yoki sizning batareyangiz yoki boshqargichlari ketadigan joyning yuqori qismida, hatto datchiklar uchun yuqori qismda ishlatiladi.

4 (4.5?) "X 12" paneli bor, menimcha, boshqasi 9 (9.5?) X 12 panel.

Bu erda hamma narsa qiziqarli bo'ladi va chalkash va qimmat bo'lishi mumkin (kichik qismlar qo'shiladi). Barcha kanallarni va boshqalarni bir -biriga bog'lab qo'yishi mumkin, ularning bir nechtasi bor. Kechirasiz, menda batafsil, batafsil va aniq qismlar ro'yxati yo'q.

Gap shundaki, siz qaysi birini yoki qancha kerakligini bilmayapsiz, chunki bu qismlarni bir -biriga ulashning ko'plab usullari mavjud.

Men ishlatgan narsalarimni ro'yxatlashim mumkin:

www.servocity.com/90-quad-hub-mount-c

www.servocity.com/side-tapped-pattern-moun…

www.servocity.com/90-quad-hub-mount-d

Quyidagilardan ikkitasi juda qulay va men ularni zaxiraga olardim:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Keyingi navbatda barcha vintlar (murvat). Men har bir o'lchamdagi paketdan boshladim va ularning ko'pchiligidan o'tdim. Men o'lchamlari muhim bo'lmagan uzunroq vintlarni ishlatardim, va qisqaroqlarini kerakli joylarga qo'ydim, chunki boshqa uzunlik ishlamaydi.

Oxir -oqibat, siz 1 ta sumkani olishingiz kerak:

www.servocity.com/6-32-nylock-nuts-pack

Men ko'p ishlatmadim, lekin ular (menimcha) sizning motorlaringiz vaqt o'tishi bilan ramkadan bo'shashmasligiga ishonch hosil qilish uchun juda muhim. U-kanal tufayli bitta dvigatelda faqat ikkitasi ishlaydi

Sizga ulardan kamida 4 tasi kerak bo'ladi, agar siz zarar etkazgan bo'lsangiz, sizga qo'shimcha bo'lishi mumkin (menga ishoning, siz motorlarni bir necha marta yoqishingiz / o'chirishingiz mumkin):

www.servocity.com/heavy-duty-clamping-shaf…

Odatda, motor millari 6 mm, o'qlari 1/4 dyuym (0,25 dyuym).

Men kuchliroq bo'lgan qora vintlarni olaman va ularni yuqoridagi qisqichlar uchun ishlataman va qisqichlar bilan birga kelgan vintlarni ishlatmayman:

(Menimcha, bular):

4 - 1/4 "(0,25") diametrli rulmanlar

1 - qora 1/4 dyuymli qoplar sumkasi

4 - D -uyalarni mahkamlash

www.servocity.com/0-770-clamping-d-hubs

4-D-vallar (#6340621.375 "(1-3/8")

4 - 6 dyuymli og'ir yuk g'ildiraklari

www.servocity.com/6-heavy-duty-wheel

E'tibor bering, men bu g'ildiraklarni yaxshi ko'raman, lekin ular qattiq rezina qirraga ega. Ular qattiq pollarda, gilamda va, ehtimol, qattiq beton yurishlarda yaxshi ishlaydilar. O't, qum va boshqalarda yaxshi bo'lmaydi.

Shuningdek, ular sizning gilamingizni bulg'ashga moyil bo'lishadi !!!

4 - motorlar:

www.servocity.com/motors-actuators/gear-mo…

Men 223 RPM bilan bordim, bu yuqori tezlikda, shuningdek, robotimni (2 SLA 12V batareyali og'ir) sekin harakatda osongina harakatlantirishi mumkin edi.

2 - dvigatellar uchun motorli enkoderlar. (Servo Siti Roboclaw faqat 2 ta kodlovchi bilan ishlaydi)

1 - Roboclaw 2X45A dvigatelni boshqarish moslamasi, pinlar emas, balki yashil klemens bloklari bilan jihozlanganiga ishonch hosil qiling. Xo'sh … har birining o'z afzalliklari bor. O'tmish.. Men pinlarni olgan bo'lardim.

Menimcha, bu Servo Siti shahridan.

SparkFun Arduino Uno (men bundan foydalanganman) va Redboard Artemisni haydovchi menejeri sifatida sotadi.

Sizga Raspberry Pi 3 (yoki 4?) Sizning yuqori darajali "miyangiz" va sizga interfeys sifatida kerak bo'ladi.

Sizga simlar, kalitlar, sigortalar va juda mustahkam "uchuvchi" diod kerak bo'ladi.

Men Duracell 12V 14AH chuqur davrli SLA batareyasini ishlatardim, lekin siz hamma narsani ishlatishingiz mumkin.

Ogohlantirish! Ushbu robotning konstruktsiyasi (TALL, WIDE, lekin SHORT), SLA batareyasi kabi og'ir tortishish markazini nazarda tutadi. Boshqa turdagi yangi turdagi batareyalar bilan yaxshi ishlamasligi mumkin. LiPo, Arslon va boshqalar osonlikcha ag'darilib ketishi mumkin.

Men Pololu -dan Arduino va/yoki Redboard -ni mustaqil ravishda USB -orqali ulashimga qaramay, ularni mustaqil ravishda quvvatlantirishim uchun bir nechta barrel vilkasi adapterini oldim, chunki men malinaning kuchiga tayanishni xohlamadim.. (Ayniqsa, kameralar, sensorlar va boshqalarni o'rnatish)

Sizga 12-5 V kuchlanishli voltaj regulyatori, Raspberry uchun kamida 5A (?) Kerak bo'ladi. Qolganlari 7 dan 15 V gacha bo'lgan har qanday narsani to'g'ridan -to'g'ri SLA batareyasi bilan boshqarishi mumkin.

Bu qismlar haqida.

Men qilmagan narsa - 90 graduslik burchakli tishli.

Yana, mening Robotics youtube pleylistimda yuqorida aytilganlarning ko'pini batafsil tasvirlab beradigan ko'plab videolar bor.

1 -qadam: qurilish

Ochig'ini aytganda, mening barcha qurilish bosqichlarim youtublar ko'rinishida. Siz "Robototexnika" pleylistimdagi "Wallace Robot 4" dan boshlab ko'rishingiz mumkin. Oldinlari (Wallace II, Wallace III) ham yaxshi materialga ega

www.youtube.com/playlist?list=PLNKa8O7lX-w…

2 -qadam: Roboklav, motorlar va kodlovchilarni sinab ko'ring

Roboclaw (BasicMicro) ishlab chiqaruvchilari dvigatellar va enkoderlarni Roboclaw -ga to'g'ri ulaganingizga ishonch hosil qilish uchun foydalanishingiz mumkin bo'lgan Windows dasturiga ega. Siz Roboklavga parallel ravishda bir tomonlama dvigatellarni ulashingiz mumkin. Siz enkoder simlarini faqat orqa dvigatellarda, oldingi dvigatellarda yoki undan ham yaxshiroq tanlashni tanlashingiz mumkin - DIAGONALLY.

Mening taklifim sababi (keyinroq) qolib ketgan robotni tekshirish bilan bog'liq. Old/orqa g'ildiraklar aylanmasa, diagonal holatga ega bo'lish old yoki orqa tomondan yaxshiroq bo'lishi mumkin.

QAYD: men qilmagan narsa - bu Arduino -dan kodekatorlarga (GPIO pinlari orqali) ulanish uchun foydalanish - agar siz shunday qilgan bo'lsangiz, Roboclaw 2 kodlovchisiga ega bo'lishingiz mumkin, keyin Arduino qolgan ikkitasini boshqarishi mumkin. Roboclaw -dan ikkita kodlovchi qiymatini (va tezligini) so'rang.

QAYD: Men Roboclaw-ni Ramping Up / Ramping Down-ni oldindan sozlash uchun BasicMicro dasturidan foydalandim. Bu apparat va elektronikani himoya qilish uchun yaxshi. Robototexnika pleylistimda bu haqda video bor.

Men deyarli unutib qo'ydim: men, shuningdek, dvigatel kabellari va Roboklav o'rtasida o'tadigan ulagichli kabellarni sotib oldim. QAYD: Agar shunday qilsangiz, kabelning umumiy uzunligi HAQIQATDAN UZOQ ekanligini sezasiz. Ammo, agar kerak bo'lmasa, kesishni xohlamadim. Men (keyingi qadamlar uchun) Raspberry va Arduino o'rtasida USB bilan aloqa qilish muammolariga duch keldim, ehtimol EMI shovqini tufayli.. lekin men bu dasturiy ta'minot bilan ishladim.

Agar bu muammoga aylansa, siz simlarni qisqartirishingiz mumkin - siz metall himoyalashni ham sotib olishingiz mumkin (Amazondan, diametri 1 ).

Oxirgi narsa: men buni hali qilishim kerak-Roboclaw avtomatik konfiguratsiyasi yoki avtomatik sozlanishi (enkoderlar yordamida), shuning uchun ham chap, ham o'ng motorlar bir xil tezlikda harakatlanadi va robot to'g'ri ketadi.

Menniki 12 futdan bir oz pastroq egiladi, lekin bu etarli emas, chunki men bu haqda biror narsa qilishim kerak edi.

3 -qadam: Arduino -ni qo'shish va dasturlash

Sizga bochka vilkasi va ba'zi simlar, shuningdek USB kabeli kerak bo'ladi. Arduino ulagichi uchun to'g'ri moslamani olganingizga ishonch hosil qiling.

Siz Arduino IDE -ni yuklab olishingiz kerak.

Github -da robotni boshqaradigan eng so'nggi eskiz:

github.com/elicorrales/wallace.robot.ardui…

Siz Arduino -ni IDE bilan ishlaydigan kompyuteringizga ulaysiz va eskiz qanday yozilganiga asoslanib, siz Arduino -da Roboclaw bilan ketma -ket aloqa (dasturiy ta'minot) uchun 10 va 11 -pinlardan foydalangan bo'lar edingiz.

Men Raspberry Pi va Arduino o'rtasida oddiy aloqa protokoli ishlab chiqdim.

Bu ASCII-belgilarga asoslangan, bu Arduino IDE-ning "ketma-ket monitor" oynasi yordamida disk raskadrovka va sinovni osonlashtiradi.

Buyruqlar "0" (nol) raqamidan boshlanadi va kerak bo'lganda ko'tariladi

"20" dan boshlanadigan buyruqlar to'g'ridan-to'g'ri Roboclaw buyruqlari va bu raqamdan pastda bo'lganlar qat'iy Arduino bilan bog'liq buyruqlardir.

EMI shovqini tufayli men nazorat summasini kiritish uchun buyruqlar qatorini yaxshiladim.

Shunday qilib, har qanday satr quyidagilarni o'z ichiga oladi:

Satrda # ta tokenlar soni, shu jumladan

nazorat summasi

Misol uchun, Arduino buyruqlar menyusi bilan javob berishini xohlaysizmi, deylik:

4 0 12 16

"4" - bu to'rtta tokka.

"0" - bu MENU buyrug'i.

"12" - bu men tanlagan tasodifiy raqam.

"16" - 4 + 0 + 12 ning yig'indisi.

Xuddi shu MENU buyrug'i boshqacha bo'lishi mumkin:

4 0 20 24

Boshqa tasodifiy sonni tanlaganim uchun, nazorat yig'indisi ham boshqacha.

Misol uchun, 100 % tezlik bilan oldinga siljishni xohlaysizmi?

5 29 0 134 100

"5" besh belgi

"29" FORWARD buyrug'i

"0" tasodifiy raqam

Tekshirish yig'indisi "134"

"100" parametr 1 (bu holda tezlik)

Agar Arduino kiruvchi qatorni tekshira olmasa, u uni tashlab yuboradi / e'tibor bermaydi, javob yo'q.

Agar Arduino X millisekundli keyingi harakat buyrug'ini olmagan bo'lsa, u Roboklavga STOP motorini yuboradi.

Arduino ishga tushadi va USB portiga avtomatik holat yuborishni boshlaydi, agar buni to'xtatish talab qilinmasa.

Bu vaqtda siz IDE -dagi "Serial monitor" yordamida Roboklavni boshqarishga va dvigatellarning aylanishini ko'rishga tayyor bo'lishingiz kerak.

4 -qadam: Raspberry Pi qo'shish va dasturlash (node.js)

Shunga qaramay, agar siz "Robototexnika" pleylistini ko'rib chiqsangiz, men boshidanoq malinani ishga tushirish uchun har bir qadamni bosib o'tdim.

Men yoritgan bo'lishi mumkin bo'lgan narsa shundaki, sizga 5V regulyator kerak bo'ladi, yoki buning uchun USB kabelini qurish, kesish/o'zgartirish yoki malinani boshqa yo'l bilan yoqish kerak bo'ladi.

Bu erda Github -da Raspberry -da Arduino bilan USB orqali bog'lanish uchun kerak bo'lgan hamma narsa bor.

github.com/elicorrales/wallace.robot.raspb…

Hatto test skriptlari ham bor.

Siz node.js server kodini ko'rib chiqishingiz mumkin va siz Raspberry raqamli ko'rsatmalarni REST tipidagi url satrlariga qanday o'zgartirganini ko'rasiz. Sinov buyruqlarini yuborish uchun "curl" dan foydalanishingiz mumkin.

Misol:

sizning RP3 IP manzilingiz: 8084/arduino/api/forward/50

motorlar g'ildiraklarni bir zumda oldinga burilishiga olib keladi.

Agar siz uni skript skriptiga qo'ysangiz, g'ildiraklar aylanishda davom etishini ko'rasiz.

Node.js kodi (server.js) Arduino-ga ketma-ket xabarlar yo'qolgan taqdirda qayta ulanish xususiyatini o'z ichiga oladi. Buni Arduino-ni Raspberry-dan uzib, qayta ulash orqali sinab ko'rishingiz mumkin.

Ikkalasi o'rtasida ketma -ket uzatilish tezligiga mos kelishiga ishonch hosil qiling.

Arduino ma'lumotlarning yomon paketlarini tashlagani uchun va node.js darajasida va brauzer javascript darajasida hamma narsa "haydovchi" buyruqlarini yuborish uchun kodlangani uchun men 200000 bodgacha ishlay oldim. (2 Mbit / s).

Agar siz test skriptlarini ishga tushirsangiz va g'ildiraklar aylanayotganini ko'rsangiz, demak siz keyingi bosqichga tayyormiz.

5 -qadam: Oxirgi qadam - dasturlash / veb -sahifa mijozidan foydalanish

Github havolasida bularning hammasi malina qismiga mijoz fayllari kiritilgan.

index.html. index.js. p5.min.js.

Ular USB Gamepad-ni Gamepad API (brauzerga asoslangan) orqali boshqaradi va siz veb-sahifada mavjud bo'lgan turli tugmalar va slayderlarni ko'rishingiz kerak.

Javascript kodi joystiklardan birining X va Y o'qlari qiymatlarini so'raydi (so'rovlar).. (sizda qanday joystiklar/geympad borligiga qarab, siz kodni o'zgartirishingiz kerak bo'ladi). U juda tez so'rov o'tkazadi va node.js serveridagi barcha qiymatlarni 8084 da tinglaydi.

Joystiklarning X va Y o'qlarining xom qiymati 0 dan 1 gacha.

Ammo Arduino -da dvigatellarni boshqarish uchun ishlatiladigan Roboclaw dvigatel boshqaruvchisi kutubxonasi funktsiyasi -100 dan 0 gacha (orqaga) yoki (0 dan 100 gacha) oldinga siljishini kutadi.

So …. p5.min.js ni qo'shishdan maqsad shu. Bu juda yaxshi, qulay map () funktsiyasiga ega bo'lib, siz unga xom qiymatini berasiz, bu xom (joriy) diapazon va yangi, kerakli diapazon. Va u xom qiymatni yangi, xaritali diapazondagi qiymatga o'zgartiradi.

Yana bir nuqta: 100 tezlikda robot juda ayyor bo'lishi mumkin. Men doimo bir narsaga duch keldim. Ammo, bu borada yaxshilansangiz ham, u chapga yoki o'ngga burilganda hamon ta'sirli bo'ladi.

Siz qo'shishingiz kerak bo'lgan narsa veb -sahifadagi joriy Maks Speed slayderiga o'xshaydi. Bu slayder siz Xs va Ys joystiklarini xaritalashingiz kerak bo'lgan eng yuqori yoki maksimal qiymatni aniqlaydi.

Misol:

Aytaylik, siz 0 -> 1 dan 0 gacha -> 100 ni xaritaga kirityapsiz. Joystikni nuqta tugmachasini bosganingizda, siz 100 -dasiz. Balki juda tez.

Ammo, agar siz "Max Speed" slayderini bir oz orqaga sursangiz, endi siz 0 -> 1 dan 0 -> 80 yoki 70 gacha xaritalayapsiz.

Bu shuni anglatadiki, node.js (va Arduino) ga yuboriladigan tezlikda bunday katta o'zgarishsiz, joystikni harakatlantirish uchun ko'proq imkoniyat bor.

X -ni (chapga yoki o'ngga aylantirish) Y -dan (oldinga yoki orqaga) o'z maksimal tezligiga ajratish mumkin.

Shunday qilib, siz tez chiziqli harakat uchun Y ni 0 dan 100 gacha, 0 dan -100 gacha qoldirishingiz mumkin, lekin ko'proq boshqariladigan aylanish harakati uchun Xs maksimal tezligini pasaytira olasiz. Ikki dunyoning eng yaxshisi.

6 -qadam: Ixtiyoriy: Robotni sichqonchani tortish va / yoki sensorli hodisalar bilan haydash

Agar siz bu erga etib kelgan bo'lsangiz, bilasizki, brauzerdan boshlab Javascript va Raspberry node.js serveriga, nihoyat arduino-ga o'tadigan dasturiy ta'minot qatlamlari Gamepad joystick X- va Y-koordinatalarini "" ga o'zgartiradi. oldinga "(yoki" orqaga "va boshqalar) buyruqlari (va ularning tezlik qiymati).

Bundan tashqari, siz bilasizki, joystiklarning Xs va Yslari manfiy 1, noldan plyus 1gacha bo'lganida, ular nol va 100 gacha o'zgarishi kerak. Xo'sh, maksimal tezlik veb -sahifadagi maksimal tezlik parametrlariga bog'liq.

Soo … sichqonchani ishlatish yoki voqealarni (smartfonda bo'lgani kabi) ishlatish uchun yagona narsa - bu voqealarni yozib olish, Xs va Ysni olish.

LEKIN ---- bu Xs va Ylar manfiy 1 va 1 orasida emas. Ular 0dan boshlanadi va ijobiy o'sadi, chunki ular asosan HTML elementining pikselli yoki nisbiy ekran koordinatalari (masalan, yuklash paneli) yoki tuval.

Shunday qilib, yana P5 ning Js kutubxonasining "map ()" funktsiyasi bizga kerak bo'lgan narsani qayta xaritaga solish uchun juda qulay.

Men kodni ikki xil veb -sahifaga ega bo'lishini qayta ko'rib chiqdim, biri Gamepad yordamida ish stoli uchun, ikkinchisi mobil uchun, sensorli hodisalar yordamida.

Bundan tashqari, X va Y-lar qayta xaritaga o'tkazilgach, ular Gamepad-dan X va Y-lar kabi bir xil kodlar zanjiriga kiritiladi.

Tavsiya: