Mundarija:

HackerBox 0024: Vision Quest: 11 qadam
HackerBox 0024: Vision Quest: 11 qadam

Video: HackerBox 0024: Vision Quest: 11 qadam

Video: HackerBox 0024: Vision Quest: 11 qadam
Video: HackerBox #0024: Vision Quest 2024, Noyabr
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest - Bu oyda HackerBox xakerlari Computer Vision va Servo Motion Tracking bilan tajriba o'tkazmoqdalar. Bu yo'riqnomada HackerBox #0024 bilan ishlashga oid ma'lumotlar mavjud bo'lib, ularni etkazib berish muddati tugashi bilan olishingiz mumkin. Bundan tashqari, agar siz HackerBox -ni har oy pochta qutingizga olishni xohlasangiz, iltimos, HackerBoxes.com saytiga obuna bo'ling va inqilobga qo'shiling!

HackerBox 0024 uchun mavzular va o'quv maqsadlari:

  • Computer Vision yordamida tajriba o'tkazish
  • OpenCV (Computer Vision) ni sozlash
  • Arduino IDE -dan Arduino Nano dasturlash
  • Servo motorlarni Arduino Nano bilan boshqarish
  • Mexanik panjara va egilish moslamasini yig'ish
  • Pan va Tilt harakatini mikrokontroller yordamida boshqarish
  • OpenCV yordamida yuzni kuzatishni amalga oshirish

HackerBoxes - DIY elektronikasi va kompyuter texnologiyalari uchun har oylik obuna qutisi xizmati. Biz havaskorlar, ishlab chiqaruvchilar va tajribachilarmiz. Biz orzularning xayolparastlarimiz. Sayyorani hack qiling!

1 -qadam: HackerBox 0024: qutining tarkibi

HackerBox 0024: quti tarkibi
HackerBox 0024: quti tarkibi
  • HackerBoxes #0024 yig'iladigan ma'lumotnoma kartasi
  • Uch qavsli panjara va burilish moslamasi
  • Aksessuarlari bo'lgan ikkita MG996R servo
  • Ikki alyuminiy dumaloq Servo ulagichi
  • Arduino Nano V3 - 5V, 16MGts, MicroUSB
  • USB kabeli bilan raqamli kamera yig'ilishi
  • Universal klipsli uchta linzali
  • Qalam nuri tibbiy ko'rik
  • Erkak/ayol duponli duponchilar
  • MicroUSB kabeli
  • OpenCV -ning eksklyuziv belgisi
  • Eksklyuziv Dia de Muertos belgisi

Boshqa foydali narsalar:

  • Kamera tagligi uchun kichik yog'och taxta qoldiqlari
  • Lehimlash temir, lehim va asosiy lehim asboblari
  • Dasturiy vositalar bilan ishlash uchun kompyuter

Eng muhimi, sizga sarguzasht hissi, DIY ruhi va xakerlarning qiziquvchanligi kerak bo'ladi. Hardcore DIY elektronikasi - bu oddiy ish emas va biz uni siz uchun sug'ormaymiz. Maqsad - mukammallik emas, taraqqiyot. Qachonki siz sarguzashtni davom ettirsangiz va zavqlansangiz, yangi texnologiyalarni o'rganishdan va ba'zi loyihalarni ishga solishdan katta mamnuniyat olasiz. Biz har bir qadamni asta -sekin bajarishni, tafsilotlarni o'ylab ko'rishni va hech qachon yordam so'rashdan tortinmaslikni taklif qilamiz.

Tez -tez so'raladigan savollar: Biz HackerBox -ning barcha a'zolaridan haqiqatan ham katta yaxshilik so'rashni yaxshi ko'ramiz. Iltimos, qo'llab -quvvatlash xizmatiga murojaat qilishdan oldin, HackerBoxes veb -saytidagi tez -tez so'raladigan savollarni ko'rib chiqing. Shubhasiz, biz barcha a'zolarga kerak bo'lganda yordam berishni xohlasak ham, qo'llab -quvvatlovchi elektron pochta xabarlarining aksariyati oddiy savollarni o'z ichiga oladi, ular savol -javoblar bo'limida aniq ko'rsatilgan. Tushunganingiz uchun tashakkur!

2 -qadam: Kompyuterni ko'rish

Kompyuter ko'rish
Kompyuter ko'rish

Kompyuter ko'rish-bu raqamli tasvirlar yoki videolardan kompyuterlarning yuqori darajadagi tushuncha olishini o'rganadigan fanlararo sohadir. Muhandislik nuqtai nazaridan, kompyuter ko'rish inson vizual tizimi qila oladigan vazifalarni avtomatlashtirishga intiladi. Ilmiy fan sifatida, kompyuter ko'rish tasvirlardan ma'lumot oladigan sun'iy tizimlar nazariyasi bilan bog'liq. Rasm ma'lumotlari turli xil shakllarda bo'lishi mumkin, masalan, video ketma-ketligi, bir nechta kameradan ko'rish yoki tibbiy skanerdan olingan ko'p o'lchovli ma'lumotlar. Texnologik intizom sifatida, kompyuter ko'rish o'z nazariya va modellarini kompyuter ko'rish tizimini qurish uchun qo'llashga intiladi. Kompyuter ko'rish sub-domenlariga sahnani rekonstruksiya qilish, hodisalarni aniqlash, videoni kuzatish, ob'ektlarni tanib olish, 3D pozitsiyasini baholash, o'rganish, indekslash, harakatni baholash va tasvirni tiklash kiradi.

Shunisi qiziqki, kompyuterni ko'rish kompyuter grafikasining teskarisi deb hisoblanishi mumkin.

3 -qadam: ishlov berish va OpenCV

Qayta ishlash va OpenCV
Qayta ishlash va OpenCV

Qayta ishlash - bu moslashuvchan dasturiy ta'minot eskizlari va tasviriy san'at kontekstida kodlashni o'rganadigan til. Qayta ishlash tasviriy san'at sohasida dasturiy savodxonlikni va texnologiyada vizual savodxonlikni oshirdi. O'n minglab talabalar, rassomlar, dizaynerlar, tadqiqotchilar va havaskorlar ishlov berishdan o'rganish va prototip yaratish uchun foydalanadilar.

OpenCV (Ochiq manbali kompyuter ko'rish kutubxonasi) - bu kompyuterni ko'rish va mashinani o'rganish uchun ochiq manbali dasturiy ta'minot kutubxonasi. OpenCV kompyuter ko'rish ilovalari uchun umumiy infratuzilmani ta'minlash va tijorat mahsulotlarida mashina idrokidan foydalanishni tezlashtirish uchun yaratilgan. OpenCV kutubxonasida 2500 dan ortiq optimallashtirilgan algoritmlar mavjud bo'lib, ular klassik va zamonaviy kompyuter ko'rish va mashinani o'rganish algoritmlarini o'z ichiga oladi. Bu algoritmlardan yuzlarni aniqlash va tanib olish, ob'ektlarni aniqlash, videolarda odamlarning harakatlarini tasniflash, kamera harakatlarini kuzatish, harakatlanuvchi ob'ektlarni kuzatish va h.k.

OpenCV -ni ishlov berish jarayonida Fayl> Misollar menyusidan "Misollar qo'shish" -ni tanlang va keyin "Kutubxonalar" yorlig'i ostida video va OpenCV kutubxonalarini o'rnating. Oddiy yuzni kuzatish uchun LiveCamTest misolini oching. Misollarga ishlov berish uchun boshqa OpenCV -ni ko'rib chiqing.

Boshqa manbalar:

Kompyuterni ko'rishni boshlash - bu kompyuter ko'rishi bilan ijodiy tajriba o'tkazish uchun oson kirish nuqtasini ta'minlaydigan kitob loyihasi. U kompyuterni ko'rish loyihalarini yaratish uchun zarur bo'lgan kod va tushunchalarni taqdim etadi.

Python bilan kompyuterni ko'rishni dasturlash - bu PCV bo'yicha O'Reilly kitobi, kompyuterni ko'rish uchun ochiq manbali Python moduli.

OpenCV -ni o'rganish

Kompyuterni ko'rish: algoritmlar va ilovalar

OpenCV -ni o'zlashtirish

Stenford kursi CS231n vizual tanib olish uchun konvolyutsion neyron tarmoqlar (16 ta video)

Kris Urmson TED Talk Haydovchisiz mashina yo'lni qanday ko'radi

4 -qadam: Arduino Nano mikrokontroller platformasi

Arduino Nano mikrokontroller platformasi
Arduino Nano mikrokontroller platformasi

Biz skovorodkada va egilgan kameradagi servolarni boshqarish uchun har qanday umumiy mikroto'lqinli platformadan foydalanishimiz mumkin. Arduino Nano-bu yer usti, non paneli uchun qulay, miniatyura qilingan, o'rnatilgan USB. Bu hayratlanarli darajada to'liq xususiyatli va sindirish oson.

Xususiyatlari:

  • Mikrokontroller: Atmel ATmega328P
  • Voltaj: 5V
  • Raqamli kirish -chiqish pinlari: 14 (6 PWM)
  • Analog kirish pinlari: 8
  • Har bir kirish/chiqish piniga doimiy oqim: 40 mA
  • Flash xotira: 32 KB (yuklash uchun 2KB)
  • SRAM hajmi: 2 KB
  • EEPROM: 1 KB
  • Soat tezligi: 16 MGts
  • Olchamlari: 17 x 43 mm

Arduino Nano -ning o'ziga xos varianti qora Robotdyn dizaynidir. Interfeysi ko'plab uyali telefonlar va planshetlarda ishlatiladigan bir xil MicroUSB kabellari bilan mos keladigan bortli MicroUSB porti orqali amalga oshiriladi.

Arduino Nanos-da o'rnatilgan USB/ketma-ket ko'prikli chip mavjud. Ushbu maxsus variantda ko'prik chipi CH340G. E'tibor bering, har xil turdagi Arduino platalarida USB/Serial ko'prikli chiplarning boshqa turlari ishlatiladi. Bu chiplar kompyuterning USB portiga Arduino protsessor chipidagi ketma -ket interfeys bilan bog'lanish imkonini beradi.

Kompyuterning operatsion tizimiga USB/Seriyali chip bilan aloqa o'rnatish uchun qurilma drayveri kerak. Haydovchi IDE -ga Arduino platasi bilan aloqa o'rnatishga imkon beradi. Kerakli qurilma drayveri ham OS versiyasiga, ham USB/Seriyali chip turiga bog'liq. CH340 USB/Seriyali chiplari uchun ko'plab operatsion tizimlar uchun drayverlar mavjud (UNIX, Mac OS X yoki Windows). CH340 ishlab chiqaruvchisi bu haydovchilarni shu erda etkazib beradi.

Arduino Nano -ni kompyuterning USB portiga birinchi marta ulaganingizda, yashil chiroq yonib turishi kerak va ko'p o'tmay ko'k LED asta -sekin miltillay boshlaydi. Buning sababi shundaki, Nano yangi Arduino Nano-da ishlaydigan BLINK dasturi bilan oldindan yuklangan.

5 -qadam: Arduino integratsiyalashgan rivojlanish muhiti (IDE)

Arduino integratsiyalashgan rivojlanish muhiti (IDE)
Arduino integratsiyalashgan rivojlanish muhiti (IDE)

Agar sizda Arduino IDE hali o'rnatilmagan bo'lsa, uni Arduino.cc saytidan yuklab olishingiz mumkin

Agar siz Arduino ekotizimida ishlash uchun qo'shimcha ma'lumot olishni istasangiz, biz HackerBoxes boshlang'ich ustaxonasi uchun ko'rsatmalarni o'rganishni taklif qilamiz.

Nano -ni MicroUSB kabeliga va kabelning ikkinchi uchini kompyuterning USB portiga ulang, Arduino IDE dasturini ishga tushiring, asboblar> port (ehtimol "wchusb" yozilgan nomi ostida IDE -dan mos keladigan USB -portni tanlang).). Shuningdek, asboblar panelida IDE da "Arduino Nano" ni tanlang.

Nihoyat, misol kodini yuklang:

Fayl-> Misollar-> Asosiy-> Ko'z yumish

Bu aslida Nano -ga oldindan yuklangan kod va ko'k LEDni sekin miltillatish uchun hozirda ishlashi kerak. Shunga ko'ra, agar biz bu misol kodini yuklasak, hech narsa o'zgarmaydi. Buning o'rniga, kodni biroz o'zgartiraylik.

Diqqat bilan qarasangiz, dastur LEDni yoqadi, 1000 millisekund (bir soniya) kutadi, LEDni o'chiradi, yana bir soniya kutadi, keyin hammasini yana - abadiy bajaradi.

Ikkala "kechikish (1000)" iborasini "kechiktirish (100)" ga o'zgartirish orqali kodni o'zgartiring. Bu o'zgartirish LEDni o'n barobar tezroq miltillashiga olib keladi, to'g'rimi?

O'zgartirilgan kodning yuqorisidagi UPLOAD tugmasini (o'q belgisi) bosish orqali o'zgartirilgan kodni Nano -ga yuklaylik. Vaziyat haqida ma'lumot olish uchun quyidagi kodni ko'ring: "kompilyatsiya" va keyin "yuklash". Oxir -oqibat, IDE "Yuklash tugallandi" deb ko'rsatishi kerak va sizning LED tez miltillashi kerak.

Agar shunday bo'lsa, tabriklayman! Siz faqat o'rnatilgan kodning birinchi qismini buzdingiz.

Tez yonib-o'chib turadigan versiya yuklangach va ishga tushganda, LEDni ikki marta tez miltillashi uchun yana kodni o'zgartira olasizmi, keyin takrorlashdan oldin bir necha soniya kutib turasizmi? Sinab ko'ring! Boshqa naqshlar haqida nima deyish mumkin? Istalgan natijani vizualizatsiya qilish, uni kodlash va rejalashtirilganidek ishlashini kuzata olgandan so'ng, siz malakali apparat xakeriga aylanish yo'lida ulkan qadam tashladingiz.

6 -qadam: Servo motorlar

Servo motorlar
Servo motorlar

Servo dvigatellar, odatda, impulslarning kengligi servo holatini ko'rsatadigan takrorlanadigan elektr impulslari bilan boshqariladi. Puls kengligi modulyatsiyalangan (PWM) boshqaruv signali ko'pincha Arduino kabi oddiy mikrokontroller tomonidan ishlab chiqariladi.

MG996R kabi kichik sevimli mashg'ulot servolari standart uch simli aloqa orqali ulanadi: doimiy quvvat manbai uchun ikkita sim va nazorat pulslarini o'tkazish uchun bitta sim. MG996R servolari 4,8-7,2 VDC kuchlanishli ish kuchlanishiga ega.

7 -qadam: burilish va burilish mexanizmini yig'ish

Burilish va burilish mexanizmini yig'ish
Burilish va burilish mexanizmini yig'ish
  1. MG996R ikkita servosini sumkasidan tortib oling va hozircha aksessuarlarni chetga surib qo'ying.
  2. Har bir servoga alyuminiy, dumaloq servo ulagichni ulang. E'tibor bering, ulagichlar servolardan alohida sumkalarda keladi. Birlashtiruvchi juda mahkam joylashtirilgan. Birlashtirgichni servo chiqish uchiga bosib boshlang, so'ngra vintni markaziy teshikka burang. Birlashtirgichni servo chiqishiga tortish uchun ipni torting.
  3. E'tibor bering, panjara o'rnatish uchun uchta qavs mavjud-ikkita quti va bitta U-qavs.
  4. Qutidagi qavslardan birini servolardan biri uchun alyuminiy doiraga o'rnating. Biz bu servoni pan servo deb ataymiz. Quti-qavsni markaziy devori bilan alyuminiy aylana tomon yo'naltiring, shunda qutining boshqa ikki devori panani servodan uzoqda. Qutbning o'rta devoridagi markaziy teshiklardan foydalaning. Bu tartib, panani servo ishga tushirilgandan so'ng, biriktirilgan quti-qavsni aylantirib qo'yishiga imkon berishi kerak.
  5. Boshqa servo (egilgan servo) panani servo alyuminiy doirasiga biriktirilgan qutiga joylashtiring. Burilish servosini o'rnatish uchun kamida ikkita yong'oq va murvatdan foydalaning - har tomondan.
  6. U-qavsni ushlab turib, U ichki qismidagi "rulmanli" guruchni katta burilish o'rnatish teshiklaridan biriga joylashtiring.
  7. U-qavsni rulmanli quti qavsining ichidagi egilgan servoga joylashtiring, shunda boshqa katta burilish o'rnatish teshigi (rulmani bo'lmagan) egilgan servo ustidagi alyuminiy doiraga to'g'ri keladi.
  8. U-qavsni al-alyuminiy doiraga U-qavsning bir tomoniga mahkamlash uchun vintlarni ishlating.
  9. U-qavsning boshqa tomonida, bitta vintni rulman orqali va ichidagi qutichaning kichik teshigiga mahkamlang. Bu, U-qavsining egilish servosi ishga tushirilgandan keyin, quti-qavs atrofida aylanishi uchun imkon berishi kerak.

8 -qadam: panjara va egilish moslamasini o'rnatish

Panjara va burilish moslamasini o'rnatish
Panjara va burilish moslamasini o'rnatish
Panjara va egilish moslamasini o'rnatish
Panjara va egilish moslamasini o'rnatish

Qolgan quti-qavsni rasmda ko'rsatilgandek, kamera asosi bo'lib xizmat qilish uchun yog'och taxtaning kichik qoldiqlariga vidalanishi mumkin. Nihoyat, panjara servo qolgan ikkita qutiga o'rnatiladi, bunda servolarni har ikki tomonga mahkamlash uchun kamida ikkita yong'oq va murvat ishlatiladi.

9 -qadam: panjara va egilish moslamasini simlang va sinab ko'ring

Panjara va burilish moslamasini simlang va sinovdan o'tkazing
Panjara va burilish moslamasini simlang va sinovdan o'tkazing

Servolarni sxemaga muvofiq sim bilan ulash uchun servodan asl ayol ulagichlarni kesib tashlash, so'ngra Nano pinlariga ulangan signal va er chizig'ini olish uchun DuPont -ning bir nechta urg'ochi uchidan foydalanish osonroq.

Nano -da servolarni USB -dan quvvatlantirish uchun 5V -da etarli oqim yo'q, shuning uchun qo'shimcha ta'minot tavsiya etiladi. Bu 4,8-7,2 voltli diapazonda bo'lishi mumkin. Masalan, to'rtta AA batareyasi (ketma -ket) yaxshi ishlaydi. Skameykali devor yoki siğil ham yaxshi tanlovdir.

Bu erda PanTiltTest.ino sifatida biriktirilgan Arduino kodining oddiy misoli Arduino IDE seriyali monitoridan ikkita servo nazoratini tekshirish uchun ishlatilishi mumkin. Namuna kodida o'rnatilgan 9600 soniyagacha mos keladigan monitorning tezligini o'rnating. 0 dan 180 darajagacha burchak qiymatlarini kiritish servolarni mos ravishda joylashtiradi.

Nihoyat, USB-kamera moduli (yoki boshqa sensor) kuzatuv dasturlarida foydalanish uchun Pan-Tilt Assambleyasining U-qavsiga o'rnatilishi mumkin.

10 -qadam: OpenCV yordamida yuzni kuzatish

Image
Image
Sayyorani buzish
Sayyorani buzish

Mashinaning ko'rinishini kuzatish tizimi blok-sxemada ko'rsatilgan quyi tizimlarni birlashtirish orqali amalga oshirilishi mumkin. Arduino uchun SerialServoControl eskizini quyidagi Sparkfun qo'llanmasida, OpenCV, Processing, Arduino, USB Kamera va Pan/Tilt Assambleyasi yordamida odamning yuzini kuzatish uchun ko'rsatma bilan topish mumkin. Demo, foydalanuvchi xona bo'ylab harakatlanayotganda ham, yuzni video kadrda markazlashtirish uchun kamerani qayta joylashtirish uchun ikkita servodan foydalanadi. Masalan, C#dagi kod, CamBot videosi uchun GitHub omborini tekshiring.

11 -qadam: Sayyorani buzish

Agar siz ushbu ko'rsatmalarni yoqtirgan bo'lsangiz va elektronika va kompyuter texnologiyalari kabi loyihalarni har oy pochta qutingizga etkazib berishni xohlasangiz, bu erga obuna bo'lish orqali bizga qo'shiling.

Quyidagi izohlarda yoki HackerBoxes Facebook sahifasida o'z yutuqlaringiz bilan o'rtoqlashing. Albatta, agar sizda biron bir savol bo'lsa yoki yordamga muhtoj bo'lsangiz, bizga xabar bering. HackerBoxes -ning bir qismi bo'lganingiz uchun tashakkur. Iltimos, takliflaringiz va mulohazalaringizni keltiring. HackerBox - bu sizning qutilaringiz. Keling, ajoyib narsa qilaylik!

Tavsiya: