Mundarija:

Xbox Controller yordamida yuzni kuzatish va boshqarish bilan yolg'onchi robot - Arduino: 9 qadam (rasmlar bilan)
Xbox Controller yordamida yuzni kuzatish va boshqarish bilan yolg'onchi robot - Arduino: 9 qadam (rasmlar bilan)

Video: Xbox Controller yordamida yuzni kuzatish va boshqarish bilan yolg'onchi robot - Arduino: 9 qadam (rasmlar bilan)

Video: Xbox Controller yordamida yuzni kuzatish va boshqarish bilan yolg'onchi robot - Arduino: 9 qadam (rasmlar bilan)
Video: Telefonni koʻz bilan boshqarish 2024, Iyul
Anonim
Image
Image
OpenCV va C ++ ni o'rnatish va sozlash
OpenCV va C ++ ni o'rnatish va sozlash

Biz yolvoradigan robot yasaymiz. Bu robot g'azablantirmoqchi yoki o'tayotgan odamlarning e'tiborini tortishga harakat qiladi. Bu ularning yuzlarini aniqlaydi va ularga lazer bilan o'q uzishga harakat qiladi. Agar siz robotga tanga bersangiz, u qo'shiq kuylaydi va raqsga tushadi. OpenCV -ni ishga tushirish uchun robotga arduino, kameraning jonli uzatmasi va kompyuter kerak bo'ladi. Robot, shuningdek, kompyuterga ulangan bo'lsa, xBox boshqaruvchisi tomonidan boshqarilishi mumkin bo'ladi.

1 -qadam: Materiallar

Elektron uskunalar

  • Arduino NANO yoki UNO
  • USB 2.0 kamera
  • Jumper kabellari (erkak va ayol)
  • 2 x Servo - Umumiy (kichik mikro o'lchamli)
  • 2 x LED - RGB CATHODE 5 mm
  • 2 x 5 mVt quvvatga ega lazer
  • 1 x qizil LED 5 mm
  • 1 x non paneli
  • 4 x 220 Ω qarshilik
  • 1 x 1 kΩ qarshilik
  • 1 x protobloard
  • 1 x Sonar sensori 4 ta pin
  • Xbox tekshiruvi

Uskunaning analogi

  • Yog'och quti (15 x 15 x 7 sm)
  • Yelim
  • Elektr tasmasi

Dasturiy ta'minot

  • Arduino IDE
  • Vizual studiya 2017
  • 3Ds Max (yoki har qanday boshqa 3d modellashtirish dasturi)
  • 2.14.0 yoki undan keyingi versiyasini tayyorlang
  • OpenCV 3.4.0 yoki undan keyingi versiyalari

Asboblar

  • Lehimlash uskunalari
  • Ko'rish va burg'ulash
  • Tel kesuvchi

2 -qadam: OpenCV va C ++ ni o'rnatish va sozlash

OpenCV va C ++ ni o'rnatish va sozlash
OpenCV va C ++ ni o'rnatish va sozlash

2.1 -qadam: dasturiy ta'minotni olish

Visual studio 2017: Visual studio Comunity 2017openCV 3.4.0 ni yutib oling: Rasmiy yuklash sahifasiga o'ting

2.2 -qadam: OpenCV2.2.1 -ni o'rnatish: zip faylini Windows (: C) haydovchisiga chiqarib oling.2.2.2: Kengaytirilgan tizim sozlamalariga o'ting. Buni win10 qidirish funktsiyasida topish mumkin.2.2.3: Biz yangi atrof -muhit o'zgaruvchilarini o'rnatishimiz kerak. "Yo'l" atrof -muhitini toping va tahrirlash tugmasini bosing.2.2.4: Endi biz "axlat xaritasi" o'rnini Path muhitidagi yangi o'zgaruvchiga qo'shishimiz kerak. Agar siz C diskiga openCV -ni o'rnatgan bo'lsangiz, yo'l shunday bo'lishi mumkin: C: / opencv / build / x64 / vc14 / bin Yo'lni joylashtiring va bu jarayon davomida ochilgan bo'lishi mumkin bo'lgan barcha oynalarda "OK" tugmasini bosing.

2.3 -qadam: C ++ vizual studiyasini sozlash 2.3.1: Yangi vizual C ++ loyihasini yarating. Uni bo'sh win32 Console Application loyihasiga aylantiring.2.3.2: Manba fayllari yorlig'ini o'ng tugmasini bosing va yangi C ++ faylini (.cpp) qo'shing va "main.cpp" deb nomlang. 2.3.3: Loyihani o'ng tugmasini bosing. Solution Explorer -da nomini tanlang va Xususiyatlar -ni tanlang.2.3.4: Qo'shimcha kataloglarni qo'shish kerak. Buni C/C ++ ko'rinishida topish mumkin. Quyidagi yo'lni nusxa ko'chiring: C: / opencv / build / include va uni "AID" orqasiga joylashtiring va "Apply.2.3.5" tugmasini bosing. "bog'lovchi" yorlig'ini tanlang. Umuman olganda, biz boshqa qo'shimcha kutubxona direktorlarini tuzishimiz kerak. Quyidagi yo'lni "AID" C: / opencv / build / x64 / vc14 / lib orqasiga qo'ying va yana "Qo'llash" tugmasini bosing. "Qo'shimcha bog'liqliklar> tahrirlash" tugmachasini bosing va quyidagi faylni opencv_world320d.lib va xinput.lib (nazoratchi uchun) joylashtiring va yana "Qo'llash" tugmasini bosing. Endi C ++ fayli ishlashga tayyor.

3 -qadam: Arduino -ni sozlash

Arduino -ni sozlash
Arduino -ni sozlash
Arduino -ni sozlash
Arduino -ni sozlash
Arduino -ni sozlash
Arduino -ni sozlash
Arduino -ni sozlash
Arduino -ni sozlash

Servo bilan uchrashish: Servo ~ 160 ° burilish qobiliyatiga ega, ular normal ishlashi uchun 4, 8 va 6, 0 voltgacha bo'lishi kerak. pin Loyihamiz uchun biz DigitalPin 9 va 10 -dagi servolar uchun ma'lumotlar pinlarini o'rnatmoqchimiz.

RGB chiroqlari bilan uchrashish: RGB LEDlar 4 pinli, qizil, yashil, ko'k va tuproqli pinli. Arduino -da bo'sh joyni tejash uchun biz ikkita RGB LEDni ulashimiz mumkin. Shunday qilib, biz faqat 3 pimdan foydalanamiz, biz rasmdagi kabi protobardga RGB LEDlarini ulashimiz va lehimlashimiz mumkin. Qizil pin => DigitalPin 3 (PWM) Green pin => DigitalPin 4Blue pin => DigitalPin 7

Piezo buzzer bilan uchrashish: Bizning kichkina robotimiz shovqin qiladi. Buning uchun biz unga ovoz berishimiz kerak! Biz uni haqiqatan ham baland ovozda gapirishni tanlashimiz mumkin. Yoki biz uni biroz yomonroq qilish uchun piezo signalining oldiga 220Ω qarshilik qo'yamiz. Biz Piezo signalini non taxtasida qoldiramiz. Ma'lumot pinini (+) DigitalPin 2 ga va erga ulash pimini non paneliga ulang.

Sonar bilan uchrashish: robotni 10 metr naridagi odamni nishonga olmasligi uchun. Biz robotga odamlarni nishonga oladigan masofadan masofa berishimiz mumkin. Biz buni sonar sensori bilan qilamiz. VCC => 5 voltTrig => DigitalPin 6Echo => DigitalPin 5GND => tuproq

Tanga detektori bilan uchrashish: Biz tanga detektori yasaymiz. Tanga detektori elektron yopilgan yoki uzilganligini aniqlash orqali ishlaydi. Bu deyarli kalit kabi ishlaydi. Lekin biz ehtiyot bo'lishimiz kerak. Agar biz buni noto'g'ri qilsak, bu bizga arduino uchun qimmatga tushadi. Birinchidan: AnalogPin A0 ni 5 voltli kabelga ulang. Lekin uning orasiga 1KΩ rezistor qo'yganingizga ishonch hosil qiling, ikkinchisi: simni erga ulang. Biz zudlik bilan simlar va rezistorni RGB LEDlar bilan bir xil protobloardga lehimlashimiz mumkin. Endi biz ikkita simni almashtirsak, arduino yopiq kontaktni aniqlaydi. Bu shuni anglatadiki, tanga bor! Qiyomat lazerlari bilan uchrashish. Robotga o'q otish uchun qurol kerak! Joyni tejash uchun men ikkita lazerni bir -biriga lehimladim, ular kamera ramkasiga juda mos keladi. Ularni DigitalPin 11 va erga ulang.

Ixtiyoriy hiyla. Biz tangalar ostiga qizil LEDni qo'yishimiz mumkin. Qorong'i tushganda, bu qiziqarli kichik hiyla bo'ladi. DigitalPin 8 ga simni ulang va portlashining oldini olish uchun svetodiod va sim orasiga 220Ω qarshilik qo'ying. LEDning qisqa pinini erga ulang.

4 -qadam: C ++ kodi

4.1 -qadam: main.cpp kodini o'rnatish 4.1.1: "main.cpp" ni yuklab oling va kodni main.cpp.4.1.2 -ga ko'chiring: 14 -qatorda "com" ni arduino ishlatadigan comga o'zgartiring. "\. / COM (buni o'zgartiring)" 4.1.3: 21 va 22 -qatorlarda "haarcascade_frontalface_alt.xml" va "haarcascade_eye_tree_eyeglasses.xml" fayllarining to'g'ri yo'lini belgilang, agar C diskida openCV o'rnatilgan bo'lsa, bu fayllar bu erda joylashgan bo'lishi mumkin: "C: / opencv / build / etc / haarcascades \" Ikkita teskari chiziqni saqlang yoki bittasi bor joyni qo'shing.

4.2 -qadam: tserial.h va Tserial.cpp qo'shish Bu 2 ta fayl arduino va kompyuter o'rtasidagi aloqani o'z zimmasiga oladi. katalog Solution Explorer-da loyihani o'ng tugmasini bosing va qo'shish> mavjud elementni tanlang. Ochilgan oynada qo'shiladigan ikkita faylni tanlang.

4.2-qadam: CXBOXController.h va CXBOXController.h qo'shing Bu fayllar loyihaning nazorat qismini oladi 4.2.1: Solution explorer-da loyihani o'ng tugmasini bosing va qo'shish> mavjud elementni tanlang. Ochilgan oynada qo'shiladigan ikkita faylni tanlang. C ++ fayllari sozlangan.

5 -qadam: Arduino kodi

5.1 -qadam: NewPing kutubxonasi5.1.1: ArduinoCode.ino -ni yuklab oling va uni arduino IDE.5.1.2 -da oching: "Sketch> Libbary -ni qo'shish> Libaryalarni boshqarish" -ga o'ting. va bu kutubxonani o'rnating.

5.2 -qadam: Kutubxonalar kutubxonasi 5.2.1: pitches.txt faylini yuklab oling va pitch.txt tarkibini nusxa ko'chiring. pitches.txt faylini yangi varaqqa joylashtiring va "pitches.h" sifatida saqlang. Arduino kodi o'rnatildi

6 -qadam: 3D bosib chiqarish va chop etishni takomillashtirish

3D bosib chiqarish va chop etishni takomillashtirish
3D bosib chiqarish va chop etishni takomillashtirish
3D bosib chiqarish va chop etishni takomillashtirish
3D bosib chiqarish va chop etishni takomillashtirish

6.1 -qadam: 3D faylini chop etish printfile.form -ni oching va hamma narsa yaxshi ekanligini tekshiring. Agar hamma narsa yaxshi bo'lib tuyulsa, printerni printerga yuboring. Agar biror narsa ko'rinsa yoki siz modelni o'zgartirmoqchi bo'lsangiz. Siz tahrir qilishingiz uchun 3Ds Max va OBJ fayllarini qo'shdim.

6.2.1-qadam: Modelni takomillashtirish 6.2.1: Bosib chiqarish tugagandan so'ng, har qanday nashrni olib tashlash uchun 2 modelni 70% spirtli ichimlikka botirib oling. modelni qattiqlashtiring. Yoki siz modelni qattiqlashtirish uchun UV-lampadan foydalanishingiz mumkin. Buni qilish kerak, chunki model yopishqoq bo'ladi.

6.2.3: Qo'llab -quvvatlash tizimini olib tashlang. Buni tel kesgich yordamida amalga oshirish mumkin. Yoki plastmassalarni kesadigan har qanday boshqa asbob. Agar model juda ko'p UV nurida bo'lsa ham, yumshoq bo'lishi mumkin bo'lgan qismlar qo'llab-quvvatlovchi ramkalarga yaqin bo'lgan qismlardir. Qattiqlashishi uchun modelni ultrabinafsha nurli quyoshga joylashtiring. Siz servolarni ramkaga o'rnatishga harakat qilishingiz mumkin. Agar ular mos kelmasa, siz Dremel -dan materialni zımparalash uchun ishlatishingiz mumkin. mos keltiring.

7 -qadam: qutini qurish

Qutini qurish
Qutini qurish
Qutini qurish
Qutini qurish

7.1 -qadam: Teshiklar qilish Men ushbu qutining sxemasini o'z ichiga olganman. Loyiha ko'lamli emas, lekin hamma o'lchamlar to'g'ri. Kattaroq teshiklar Dremel yordamida o'rnatilishi mumkin. Ammo ularni to'rtburchaklar qilib qo'yish uchun siz Dremel -ni kichkina faylga o'rnatib, o'tkir burchaklarni qo'yishingiz mumkin. 7.1.5: Yog'och bo'laklariga e'tibor bering. Ulardan qutulish uchun qumli qog'ozdan foydalaning.

7.2 -qadam: Bo'yoq7.2.1: Qopqoqni silliqlashdan boshlang. Bizga bo'yoq yopishishi kerak.

8 -qadam: tugatish

Yakunlash
Yakunlash
Yakunlash
Yakunlash
Yakunlash
Yakunlash

Endi biz hamma narsani joyiga qo'yib, o'z ishini qilishimiz kerak. 8.1 -qadam: tangalar detektori 8.1.1: tanga detektori uchun bir nechta metall qavslarni yopishtiring..3: Aloqani tanga bilan tekshiring. Agar yopiq zanjir bo'lmasa, simlarni chetiga lehimlang. 8.2 -qadam: Protoboard va RGB LEDlari 8.2.1: Protoboardni yuqori o'ng burchakka joylashtiring va lenta bilan bog'lang! 8.2.2: RGB chiroqlarini simlar bilan ulang. 8.2.3: Arduino prototipidan barcha simlarni ulang 8.3 -qadam: Sonar sensori 8.3.1: Sensorni biz qilgan teshiklarga joylashtiring. 8.3.28.3.2: Erkak va urg'ochi simlarning yarmini kesib oling va datchikni arduinoga ulash uchun bitta kabelni yasash uchun ayol va erkak simlarini lehimlang.

8.4 -qadam: Lazer va kamera 8.4.1: Kameraga kichik ramkani yopishtiring Uning tik turganligiga ishonch hosil qiling. Dushman ularni o'g'irlamasligi uchun ularni yopishtiring!

8.5 -qadam: Servo va 3D bosib chiqarish8.5.1: Servo qopqog'ining teshigiga yopishtiring8.5.2: arduino faylini arduino -ga yuklang (bu servolarni to'g'ri holatda turishiga olib keladi) 8.5.3: servo bilan birga keldi. kichik dumaloq plato. Buni qopqog'idagi servoga joylashtiring.8.5.4: Servo va platoga katta 3D bosib chiqaring va ularni vint bilan mahkamlang. 8.5.6: Kamerani joyiga qo'ying va hamma narsa tayyor!

9 -qadam: Dasturni ishga tushiring

Robotni ishga tushirish uchun Visual studiyasida C ++ faylini oching. "Debug rejimida" ekanligingizga ishonch hosil qiling arduino faylini arduino -ga yuklang. Bu yuklanganidan so'ng, vizual studiyada o'ynashni bosing. Va robot otadi va dunyodagi barcha tangalarni yig'adi !!!

Tavsiya: