Mundarija:

O'z -o'zidan boshqariladigan mashinangizni yarating - (Bu ko'rsatma ishlayapti): 7 qadam
O'z -o'zidan boshqariladigan mashinangizni yarating - (Bu ko'rsatma ishlayapti): 7 qadam

Video: O'z -o'zidan boshqariladigan mashinangizni yarating - (Bu ko'rsatma ishlayapti): 7 qadam

Video: O'z -o'zidan boshqariladigan mashinangizni yarating - (Bu ko'rsatma ishlayapti): 7 qadam
Video: Mashina haydashni o'rganamiz 1-DARS Ташкент Автоинструктор 2024, Iyul
Anonim
Image
Image

Salom, Agar siz mening boshqa USB -diskli boshqaruv diskida ko'rsatma beradigan haydovchiga qarasangiz, bu loyiha o'xshash, lekin kichikroq miqyosda. Siz shuningdek, Youtube-da Robotics, Home-Grown Voice-Recognition yoki Self-Driving Car pleylistlaridan yordam olishingiz yoki ilhom olishingiz mumkin.

Men katta robotdan boshladim (Wallace 4), lekin mahalliy Meetup guruhini boshlaganimdan beri menga kichikroq hajmdagi narsa kerak edi va guruh kompyuterni ko'rishga juda qiziqardi.

Shunday qilib, men Udemy kursini uchratdim: bu loyihani amalga oshirish g'oyasini bergan o'z-o'zini boshqaradigan mashinangizni ishlab chiqaring.

Agar siz Udemy kursiga qiziqsangiz, u erda tekshirishni davom ettirishingiz mumkin; vaqti -vaqti bilan katta chegirma bilan sotuvga chiqadi. Eslatma: 1 -qism va 2 -qism bor - siz ikkita kursni qanday qilib paketli (chegirmali) olish haqida bir oz tergov qilishingiz kerak.

Ushbu ko'rsatmaning maqsadi ikki tomonlama. Birinchidan, kursning ba'zi qismlariga (masalan, ehtiyot qismlar va apparatlar) ba'zi ko'rsatgichlar va muqobillarni berish. Ikkinchidan, kursni kengaytirish.

Udemy kursining asosiy maqsadi:

kichkina g'ildirakli robotli avtomashinani o'z-o'zidan haydab ketishi mumkin.

U yo'l chizig'ini tan olishi kerak, va u yo'lning oxiriga yetganda.

U to'xtash belgisini tan olishi kerak (va to'xtatish).

Shuningdek, qizil va Yashil yo'l signallari.

Shuningdek, u to'siqni (boshqa mashina) tan olishi va uning atrofida harakat qilishi kerak.

Bu ko'rsatma kursga nimalarni qo'shadi:

Kichkina mashinani masofadan boshqariladigan USB Gamepad bilan boshqaring, xuddi boshqa yo'riqnomada bo'lgani kabi.

Kurs taqdim etadigan narsalarga alternativa bering.

Kursni sotib olishning hojati yo'q bo'lishi mumkin:

Bu ko'rsatma sizga hamma narsani boshlashi mumkin.

Ta'minotlar

Asosiy (tavsiya etilgan) qismlar:

Robot shassisi

To'rt dvigatel

Arduino

Raspberry Pi (3, 3B+, 4)

Kamera (USB veb -kamerasi yoki Picamera moduli)

Batareya quvvati

Yoqish/o'chirish kalitlari

o'tish simlari

to'xtatib turish (plastik va, ehtimol, metall)

Iltimos, ehtiyot qismlarni sotib olishdan oldin ko'rsatmalarni to'liq va videolarni ko'rib chiqing.

Ushbu loyihani amalga oshirgandan so'ng, men aniq qismlar unchalik muhim emasligini tushunaman.

1 -qadam: ehtiyot qismlar haqida batafsil …

Image
Image
Qismlar haqida batafsil …
Qismlar haqida batafsil …
Qismlar haqida batafsil …
Qismlar haqida batafsil …

Bog'langan videoda men topgan qismlar va ba'zi muammolar haqida batafsil ma'lumot berilgan.

  • Turli shassi / motorlarni qidirib ko'ring
  • Dvigatellarda allaqachon lehimlangan simlar bo'lishi kerak
  • Siz matkap va burg'ulash uchlarini, yoki ko'proq teshikli shassisni xohlaysiz
  • Shuni yodda tutingki, vazn muammodir. Hamma narsa iloji boricha engil bo'lishi kerak.
  • L298 H-Bridge dvigateli juda yaxshi ishlaydi. QAYD: vintli terminal bloklari bilan oling (rasmga qarang)
  • Ehtimol, siz plastmassadan ham, metalldan ham tortishishni xohlaysiz, M3 o'lchami, ehtimol, eng yaxshi tanlovdir.

Plitalarni shassisga o'rnatish yaxshi (motor drayveri, Arduino, malina, quvvat pcb, yoqish/o'chirish tugmasi va boshqalar).

Metall to'xtash joylari shassisni (kuchini) yig'ish uchun, shuningdek, ayniqsa, siz ishlab chiqayotganingizda (dasturlash, sinov) yaxshi. Rivojlanish uchun metall to'xtash joylari tayanch vazifasini o'tashi mumkin. Xuddi siz haqiqiy mashinada ishlagan bo'lsangiz, g'ildiraklari havoda bo'lishi va erkin harakatlanishi uchun siz mashinani ko'tarishni xohlaysiz. Bu juda muhim! Siz xato qilasiz va siz mashinaning uchib ketishini xohlamaysiz.

Matkap + matkap uchlari

Agar chindan ham iloji bo'lsa, matkapdan foydalanishni va ikki tomonlama yopishqoq lenta o'rniga to'qnashuvlardan foydalanishni alohida ta'kidlamoqchiman. Loyiha davomida siz taxtalarni va hokazolarni bir necha marta olib tashlashingiz va qayta joylashtirishingiz mumkin va tasmani ishlatish juda tartibsiz bo'ladi.

Matkapdan foydalanish joyini o'zgartirishni osonlashtiradi (ayniqsa, shassi plastik bo'lsa) va u yanada professionalroq ko'rinadi.

2 -qadam: Rivojlanish vaqtida mashinani quvvatlantirish

Rivojlanish vaqtida mashinani quvvatlantirish
Rivojlanish vaqtida mashinani quvvatlantirish
Rivojlanish vaqtida mashinani quvvatlantirish
Rivojlanish vaqtida mashinani quvvatlantirish

Menimcha, bu loyihani boshlashning eng tez va oson yo'li:

  • Arduino eskizini ishlab chiqish uchun Arduino -ni kompyuteringizga USB orqali ulang
  • Raspberry Pi dasturiy ta'minoti uchun siz kamida 3 amperli 5V USB quvvatiga ega bo'lishingiz kerak. Va u yoqish/o'chirish kalitiga ega bo'lishi kerak. Agar sizda kompyuterga ulangan, yaxshi ishlaydigan USB uyasi bo'lmasa, siz malinani to'g'ridan -to'g'ri kompyuterdan quvvatlay olmaysiz.
  • Dvigatellarni/g'ildiraklarni sinovdan o'tkazishga tayyor bo'lganingizda, eng osoni (rasmga qarang) yaxshi quvvat manbai. Biroq, ular arzon emas.

Bu bo'limda men aytmoqchi bo'lgan narsa shundaki, siz ishlab chiqish vaqtida batareya quvvatidan foydalanishni xohlamaysiz, chunki bu sizning taraqqiyotingizni ancha sekinlashtiradi.

Bundan tashqari, yuqoridagi takliflarga o'xshash ishni qilib, siz mashinani qanday quvvatlantirishingiz haqida xavotirlanmasligingiz kerak. Siz bu qarorni loyihada kechiktirishingiz mumkin.

3 -qadam: Haqiqiy foydalanish paytida mashinani quvvatlantirish

Haqiqiy foydalanish paytida mashinani quvvatlantirish
Haqiqiy foydalanish paytida mashinani quvvatlantirish
Haqiqiy foydalanish paytida mashinani quvvatlantirish
Haqiqiy foydalanish paytida mashinani quvvatlantirish

Agar siz 5V kuchlanishli mantiqqa muvofiq (yoki men qilgan ishni) davom ettirishga qaror qilsangiz, shuni bilingki, 5V USB quvvat banklari hammasi ham bu loyiha uchun mos emas.

Bu erda asosiy nuqta shundaki, sizga 5V kerak, lekin sizga kamida 3 Amper kerak! Buni o'ylab ko'ring - siz noutbukni quvvatlaydigan quvvat bankini xohlaysiz (ehtimol).

Agar siz AQShda yashasangiz, menimcha, buni eng yaxshi usullaridan biri Best Buy -dan sotib olishdir. Nima uchun? 14 kunlik pulni qaytarish siyosati tufayli.

Ishlaydigan birini topguncha, aslida uch xil quvvat bankini sinab ko'rishim kerak edi. Qolganlari Raspberry Pi ni past kuchlanishdan shikoyat qilishiga sabab bo'ladi.

Men eng arzon powerbankdan boshladim va ishlayotganini topgunimcha, keyingi modelni (bu qimmatroq) sinab ko'rishni davom ettirdim.

Arduino -ni qanday quvvatlantirish kerak

Udemy kursida muallif Arduino -ni to'g'ridan -to'g'ri quvvat bankidan quvvatlantirishni tanlagan (u shaxsiy kompyuter yordamida) va Arduino GPIO ulagichidagi quvvat pimlarini ishlatgan.

Men Arduino -ni Raspberry Pi -dan USB kabeli orqali quvvatlantirishni tanladim.

Qaysi biri yaxshiroq ekanligini o'zingiz hal qilishingiz kerak bo'ladi.

Dvigatel/dvigatel haydovchisini qanday quvvatlantirish kerak

Udemy kursida muallif motorlarni/haydovchini 5V quvvat bankidan to'g'ridan -to'g'ri quvvatlantirishni tanlagan. Agar siz ushbu yondashuvni qo'llasangiz, ikkita fikr bor.

  1. Dvigatellar birinchi burilishni boshlaganda, ular eng tokni tortadilar. Bu kuch kuchlanishining 5V dan pastroqqa tushishiga olib kelishi mumkin.
  2. Dvigatellarni quvvatlantirish uchun faqat 5V dan foydalanish, siz motorlarga imkon qadar ko'proq quvvat bermaysiz va mashina sekinroq harakat qiladi (sekinroq). Men dvigatellarni sinab ko'rdim (bu quvvat manbai bilan) (rasmga qarang) kamida 9V. Ular 9 V da yaxshi ishlaydi.

9V (yoki undan ko'p) haqida kuzatishlar

Agar siz ushbu yo'riqnomaning barcha fotosuratlari va videolarini ko'rib chiqsangiz, men o'zimning 9V quvvat manbaini yaratish uchun maxsus tenglikni yig'ganimni payqadingiz. Yo'l davomida men bir nechta narsalarni o'rgandim.

Hozir men dvigatellarni quvvatlantirish uchun bir vaqtning o'zida bir nechta (3) 9V batareya hujayralarini ishlataman. Men ham ishqoriy, ham qayta zaryadlanuvchi NiMH batareyalarini ishlatganman.

O'qish tajribasi №1: NiMH 9V batareyalarini to'g'ri zaryad qilish uchun ko'p vaqt kerak bo'ladi.

Mumkin bo'lgan yechim: ko'p batareyali NiMH zaryadlovchi qurilmasiga sarmoya kiriting. Bu "aqlli" zaryadlovchi bo'lishi kerak.

Kamchilik: ular arzon emas.

O'qish tajribasi #2: 9V batareyalar aslida bir nechta kichik ichki uyalardan tashkil topgan. Agar o'sha hujayralardan biri o'lsa, butun batareya yaroqsiz bo'ladi. Menda bu muammo yo'q edi, lekin men bu haqda o'qidim.

O'quv tajribasi №3: 9V batareyalarning hammasi ham bir xil kuchlanishga ega emas. Bu muhim. Chunki kuchlanish qanchalik yuqori bo'lsa, shuncha tezlik bo'lishi mumkin. Ba'zi akkumulyator batareyalari (va zaryadlovchi qurilmalar) atigi 8,4 V. Ba'zilar undan ham kamroq. Ularning ba'zilari 9,6 V ga teng.

O'qish tajribasi № 4: 9V batareyalari, ayniqsa NiMH batareyalari, engil vaznga ega. Yaxshi narsa. Biroq, ularning aksariyati faqat mA chiqish oqimini beradi. Shuning uchun men ularni parallel joylashtirishga majbur bo'ldim. Sizga deyarli 2 amperlik umumiy oqim quvvati kerak bo'ladi, hatto qisqa vaqt ichida ham.

O'qish tajribasi №5: 9,6V kuchlanishli batareyalar mavjud, ular radio boshqariladigan avtomobillar uchun ishlatiladi. Men hali foydalanmaganman, lekin ishonamanki, ular men kabi 9V parallel batareyalarga qaraganda ko'proq oqim beradi. Bundan tashqari, siz bitta qurilmani zaryadlashingiz mumkin. Paketlar har xil o'lchamlarda bo'ladi. Va vaznni hisobga olish kerak. Va keyin, siz butun mashinani yoki faqat motorlarni quvvatlantirish uchun to'plamdan foydalanasizmi? Agar butun mashina uchun sizga Raspberry Pi uchun 5V kuchlanish regulyatori kerak bo'ladi.

L298 H-Bridge bu maqsadda 5V kuchlanishiga ega, lekin men Raspberry Pi uchun qancha oqim ishlab chiqarishi mumkinligi va agar L298 taxtasida ortiqcha yuk bo'lsa, men xavotirdaman.

Agar siz ikkita alohida quvvat manbaiga ega bo'lishga qaror qilsangiz, unda sizda og'irlik muammosi bo'lishi mumkin (juda og'ir).

4 -qadam: Gamepad haydash uchun dasturiy ta'minot

O'ylaymanki, men bu bo'limning ko'p qismini Robot bilan boshqariladigan masofadan boshqariladigan USB Gamepad Instructable bo'limida ko'rib chiqdim, shuning uchun men bu erda takrorlamayman.

Boshqa yo'riqnomadagi dasturlash/dasturiy ta'minot bo'limlari faqat takliflar. O'ylaymanki, odam sinov va xato orqali ko'proq narsani o'rganadi.

5 -qadam: Kamera qo'shish

Kamera qo'shish
Kamera qo'shish
Kamera qo'shish
Kamera qo'shish
Kamera qo'shish
Kamera qo'shish

Udemy kursida, menimcha, muallif dumaloq yog'och dublonlar va yopishtiruvchi qurol yordamida kamerani ko'tarish yo'lini quradi.

Siz kamerani yuqoriga ko'tarishni xohlaysiz, u ikki chiziqli yo'lga qaraydi, shunda u chiziqlarni osonroq taniy oladi.

Men AQShda yashaydigan joyda yog'och dublonlar juda arzon edi. Siz ularni Lowe yoki Home Depotda sotib olishingiz mumkin. Men dumaloq dublonlar o'rniga kvadrat dübellarni tanladim.

Men, shuningdek, kamera minorasi uchun mustahkamroq tayanch yasashni tanladim va men butun minora mashinadan olinadigan qilib qo'ydim.

Bundan tashqari, men minorani USB veb -kamerasidan boshlayman, lekin keyinchalik Picamera modulidan foydalanishni o'ylayman.

Baliq ko'ziga o'xshash kameraga sarmoya kiritishingiz mumkin.

Men juda arzon issiq yopishtiruvchi qurol sotib oldim, lekin men minoraning poydevorini yaxshiroq mustahkamlamoqchi edim, shuning uchun hamma narsani yaxshiroq ushlab turish uchun vintlardek teshiklarni oldindan burab qo'ydim.

Keyin taglikni mashina shassisiga mahkamladim.

Agar men keyinroq narsalarni aylantirmoqchi bo'lsam, taglikni shassisdan olib tashlayman, shassining yangi joyida yangi teshiklar ochaman va minorani shassiga mahkamlayman.

Men hamma narsani sinab ko'rish uchun katta robotdan (Wallace Robot 4) "menga ergash" Python va Node.js kodlarini olib keldim. Iltimos, "meni kuzatib boring" haqida batafsil ma'lumot beradigan youtublar ro'yxati uchun ushbu bo'limdagi rasmlarga qarang.

Aytganimdek, avval USB -kamerani o'rnatish osonroq edi. Keyinchalik men Picamera modulini o'rnatishim mumkin.

6 -qadam: Yuzni aniqlash - pozitsiyani aniqlang

Image
Image

Bu qism Udemy kursining diqqat markazida emas, lekin bu qiziqarli mashq edi.

Agar siz "python opencv yuzni aniqlash" ni qidirsangiz, buni qanday qilish haqida ko'plab yaxshi misollarni topasiz va ularning hammasi xuddi shu qadamlarni bajaradilar.

  1. "haar" yuz faylini yuklang
  2. kamerani ishga tushiring
  3. ramkani ushlab turadigan pastadirni boshlang
  4. rangli tasvirni kulrang shkalaga aylantirish
  5. yuzlarini topish uchun uni opencv ga bering.
  6. ichki tsiklni boshlang (topilgan har bir yuz uchun) (mening holatimda, agar 1dan ortiq yuz bo'lsa, abort qilish uchun kod qo'shaman)

Bu erda, biz yuzni aniqlaganimizdan so'ng, biz yuzni tasvirlaydigan xayoliy kvadratning X, Y, W va H ni bilamiz.

Agar siz robotning oldinga yoki orqaga harakatlanishini xohlasangiz, V ni hisobga olishingiz kerak. Agar V juda katta (juda yaqin) bo'lsa, robotni orqaga qaytaring. Agar V juda kichik (juda uzoq) bo'lsa, robotni oldinga siljiting.

Chap/o'ng harakat biroz murakkabroq, lekin aqldan ozgan emas. Chap va o'ng yuz pozitsiyasini qanday aniqlash mumkinligi tasvirlangan ushbu bo'limdagi rasmga qarang.

ESLATMA:

Agar siz OpenCV -ning veb -misollaridan birini ishlatsangiz, ularning barchasi yuzi kvadrat bilan tasvirlangan holda opencv "ko'rayotgan" narsalarning haqiqiy ko'rinishini ko'rsatadi. Agar siz kuzatayotgan bo'lsangiz, siz harakat qilmasangiz ham, bu kvadrat barqaror emas (doimiy).

O'zgaruvchan qiymatlar robotni oldinga yoki orqaga, chapga yoki o'ngga doimiy harakatda bo'lishiga olib keladi.

Shunday qilib, oldinga/orqaga va chapga/o'ngga delta kerak bo'ladi.

Keling, chap va o'ngni olaylik:

Chapga va o'ngga hisoblagandan so'ng, farqni (delta) oling:

delta = abs (chap - o'ng)

Siz absolyutni tanlashingiz kerak, chunki siz qaysi raqam katta bo'lishini bilmayapsiz.

Keyin delta minimaldan kattaroq bo'lsa harakat qilishga urinish uchun shartli kod qo'shasiz.

Siz xuddi shu narsani oldinga va orqaga qaytarasiz.

7 -qadam: Yuzning holati - harakatlanuvchi robot

Robot chapga yoki o'ngga, oldinga yoki orqaga harakatlanishi kerakligini bilganingizda, buni qanday qilasiz?

Bu ko'rsatma ish jarayonida bo'lgani uchun, men hozirda bu loyihada foydalanish uchun katta robotimdan kodni nusxa ko'chirdim. Iltimos, youtube -dagi Robotics -ning pleylistiga qarang, u erda bularning barchasi ko'rsatilgan.

Qisqasi, menda kodlar qatlamli.

Python yuzni aniqlash skripti Node.js serveriga http so'rovlarini yuboradi

Node.js serveri http yo'nalishlarini o'zgartirish uchun so'rovlarini tinglaydi va ularni maxsus ketma -ket protokolga o'zgartiradi

Node.js serveri va Arduino o'rtasida maxsus ketma -ket protokol

Robotni harakatlantirish bo'yicha haqiqiy buyruqlarni bajaradigan Arduino eskizi

Udemy kursi buni yuqoridagi kabi qilmaydi. Ammo men yaxshi yutuqlarga erishishni va tasvirni tanib olishga e'tibor qaratmoqchi bo'lganim uchun, avvalgi kodimni hozircha qayta ishlatdim.

Tavsiya: