Mundarija:
- 1 -qadam: kerakli komponentlar
- 2 -qadam: tana tuzilishi
- 3 -qadam: simlarni ulash va kodlash
- 4 -qadam: Raspberry Pi va tasvirni tanib olish
- 5 -qadam: LCD va karnay
- 6 -qadam: Yakuniy qadamlar
Video: NAIN 1.0 - Arduino -dan foydalanadigan asosiy gumanoid robot: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Nain 1.0 asosan 5 ta ajratiladigan modulga ega bo'ladi.
1) qo'l - servo orqali boshqarilishi mumkin.
2) g'ildiraklar - ularni doimiy dvigatellar yordamida boshqarish mumkin.
3) Oyoq - Nain harakatlanish uchun g'ildirak yoki oyoq o'rtasida almasha oladi.
4) Bosh - Uning boshini turli xil tugunlar uchun boshqarish mumkin.
5) Kamera moduli- yuzni tanib olish uchun interfeysli.
Shu bilan birga, NAIN foydalanuvchilar bilan gaplasha oladi va ular bilan muloqot qila oladi va o'z vaqtini sizga o'rnatilgan soat orqali ko'rsatib beradi. U Wi-Fi /Bluetooth yordamida simsiz boshqaruvga ega bo'ladi.
1 -qadam: kerakli komponentlar
- Servo motorlar -4
- Arduino Mega - 1
- Raspberry Pi - 1 dona
- Usb kamera -1
- Karnay -1
- DC motorlar -2
- L293D -1
- Batareya to'plami - 1
- G'ildiraklar -2
- Kastor g'ildiraklari - 2
Shu bilan bir qatorda, tanani yasash uchun alyuminiy to'rtburchaklar chiziqlar va vintlar va yong'oqlar ularga to'g'ri joylashishi kerak bo'ladi.
2 -qadam: tana tuzilishi
Tana tuzilishi yengil alyuminiy kvadratchalardan yasalgan bo'lib, uni oson yig'ishga yordam beradi.
Hozircha ularni rasmda ko'rsatilgandek yig'ing, shuningdek, servo dvigatellarning qo'llariga mahkamlanadigan joylarni kesib oling.
Pastki qismidagi olti burchakli yog'och tayanchni mahkamlang.
Yog'och taglik ostiga biz har qanday robot izdoshi kabi doimiy motorlar va g'ildiraklarni joylashtiramiz.
Qizig'i shundaki, ikkita g'ildirak g'ildiragini qo'shing- biri old tomonda, ikkinchisi robotning orqa tomonida.
3 -qadam: simlarni ulash va kodlash
Turli modullarni ulash uchun ushbu qismda biriktirilgan kodlarga murojaat qiling.
Birinchidan, biz har bir modulni mustaqil kod yordamida sinab ko'rdik, keyin hammasini bittaga birlashtirdik va bluetooth moduli yordamida g'ildiraklar va qo'llarning harakatini nazorat qildik.
4 -qadam: Raspberry Pi va tasvirni tanib olish
Tasvirni aniqlash USB -kamera va Raspberry Pi yordamida amalga oshiriladi.
Buning uchun siz Pi -ga OPEN CV kutubxonasini o'rnatishingiz kerak bo'ladi.
Siz buni shu erdan qilishingiz mumkin-https://github.com/jabelone/OpenCV-for-Pi
Keyin siz haar kaskad yordamida tasvirni tanib olishingiz kerak bo'ladi.
Siz buni bu erdan qilishingiz mumkin -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc
Yuqoridagi havolani o'rganib, uni ta'qib qilgandan so'ng, men oxirgi kodga ba'zi o'zgartirishlar kiritdim, men quyida joylashtiraman -
DATASET JENERATORI:
importcv2
cam = cv2. VideoCapture (0)
detektor = cv2. CascadeClassifier ('Tasniflagichlar/face.xml')
i = 0
ofset = 50
name = raw_input ("identifikatoringizni kiriting")
rost bo'lsa:
ret, im = cam.read ()
kulrang = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
yuzlar = detector.detectMultiScale (kulrang, scaleFactor = 1.2, minNeighbors = 5, minSize = (100, 100), bayroqlar = cv2. CASCADE_SCALE_IMAGE)
yuzlarida (x, y, w, h) uchun:
i = i+1
cv2.imwrite ("dataSet/face."+name+'.'+str (i)+".jpg", kulrang [y-ofset: y+h+ofset, x-ofset: x+w+ofset])
cv2. to'rtburchak (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
cv2.imshow ('im', im [y-ofset: y+h+ofset, x-ofset: x+w+ofset])
agar cv2.waitKey (100) & 0xFF == ord ('q'):
tanaffus
# tanaffus, agar namuna raqami 20 dan ortiq bo'lsa
elif (i> 20):
tanaffus
cam.release ()
cv2.destroyAllWindows ()
Bu sizning fotosuratlaringizning ma'lumotlar to'plamini yaratadi, ular autentifikatsiya uchun ishlatiladi.
TRENER:
importcv2, os
numpy ni np sifatida import qilish
PIL import rasmidan
tanuvchi = cv2.face.createLBPHFaceRecognizer ()
cascadePath = "Tasniflagichlar/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
yo'l = "ma'lumotlar to'plami"
def get_images_and_labels (yo'l):
image_paths = [os.path.join (yo'l, f) f uchun os.listdir (yo'l)]
# rasmda yuz tasvirlari bo'ladi
rasmlar =
# tegda rasmga belgilangan yorliq bo'ladi
teglar =
image_paths -da image_path uchun:
# Rasmni o'qing va kul rangga aylantiring
image_pil = Image.open (image_path).convert ('L')
# Rasm formatini numpy qatoriga aylantiring
tasvir = np.array (image_pil, 'uint8')
# Rasm yorlig'ini oling
nbr = int (os.path.split (image_path) [-1].split (".") [1].javob ("yuz-", ""))
#nbr = int (''. join (str (ord (c)) for c in nbr))
nbr chop etish
# Rasmdagi yuzni aniqlang
yuzlar = faceCascade.detectMultiScale (rasm)
# Agar yuz aniqlansa, yuzni tasvirlarga, belgini teglarga qo'shing
yuzlarida (x, y, w, h) uchun:
rasmlar qo'shish (rasm [y: y + h, x: x + w])
labels.append (nbr)
cv2.imshow ("Ta'rif to'plamiga yuzlar qo'shilmoqda …", tasvir [y: y + h, x: x + w])
cv2.waitKey (10)
# rasmlar va teglar ro'yxatini qaytaring
rasmlarni, teglarni qaytarish
rasmlar, teglar = get_images_and_labels (yo'l)
cv2.imshow ('test', rasmlar [0])
cv2.waitKey (1)
tanituvchi.train (rasmlar, np.array (teglar))
tanib oluvchi.saxlash ('murabbiy/murabbiy.yml')
cv2.destroyAllWindows ()
DETEKTOR
importcv2
numpy ni np sifatida import qilish
import qilish os
c = 0
tanuvchi = cv2.face.createLBPHFaceRecognizer ()
tanınuvchi.yuk ('trener/trainer.yml')
cascadePath = "Tasniflagichlar/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
cam = cv2. VideoCapture (0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
shrift o'lchami = 1
fontcolor = (255, 255, 255)
rost bo'lsa:
ret, im = cam.read ()
kulrang = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
yuzlar = faceCascade.detectMultiScale (kulrang, 1,2, 5)
yuzlarida (x, y, w, h) uchun:
cv2. to'rtburchak (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
Id = tanınuvchi.bashorat qilish (kulrang [y: y+h, x: x+w])
agar (Id <70):
agar (Id == 1):
Id = "Shashank"
elif (Id == 2):
agar (c == 0):
Id = "Shivam"
c = c+1
os.system ("xush kelibsiz Shivamga ruxsat beriladi")
boshqa:
Id = "Shivam"
boshqa:
Id = "Noma'lum"
cv2.putText (im, str (Id), (x, y+h), shrift yuzasi, shrift o'lchami, shrift rangi)
cv2.imshow ("im", im)
agar cv2.waitKey (10) & 0xFF == ord ('q'):
tanaffus
cam.release ()
cv2.destroyAllWindows ()
5 -qadam: LCD va karnay
Men I2C LED displeyi va karnaydan ham foydalanganman.
LED Arduino Mega orqali boshqariladi va uning kodi oxirgi kodda berilgan.
Karnay uchun u Raspberry Pi bilan bog'langan va eSpeak Utility dasturidan foydalanadi.
Siz uning havolasini bu erda topishingiz mumkin-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/
6 -qadam: Yakuniy qadamlar
Hammasini yig'ing va portlashga tayyorlaning.
Tavsiya:
Otto DIY gumanoid robot: 7 qadam (rasmlar bilan)
Otto DIY gumanoid robot: Otto ikki oyoqli robot endi "Odam" ga o'xshash qo'llarga ega. va hissiyotlarni ifodalash uchun LED matritsa. 3D -ni o'zingiz chop eting va keyin o'zingiz yaratadigan qismlarni yig'ing. Otto - bu haqiqatan ham Opensource; Bu shuni anglatadiki, uskunani osongina aniqlash mumkin
MIA-1 ochiq manbali ilg'or qo'lda yasalgan gumanoid robot!: 4 qadam
MIA-1 Ochiq manbali ilg'or qo'lda yasalgan gumanoid robot! Ha, siz tushundingiz, bu robot butunlay qo'lda ishlangan. Va ochiq manba degani - siz
STM32F407 Discovery to'plami va GSM A6 modulidan foydalanadigan asosiy mobil telefon: 14 qadam (rasmlar bilan)
STM32F407 Discovery Kit va GSM A6 modulidan foydalanadigan asosiy mobil telefon: Siz hech qachon ajoyib loyihani yaratishni xohlaganmisiz? Ha bo'lsa, qanday qilib eng mashhur va hamma yoqtirgan gadjetlardan birini, ya'ni Mobil telefonni yasash mumkin? !!! Ushbu yo'riqnomada men sizga STM yordamida asosiy mobil telefonni qanday yasashni ko'rsataman
Suyaklar gumanoid robot: 11 qadam (rasmlar bilan)
BONES gumanoid robot: Hammani Xellouin bayrami bilan !!! Bu yilgi Xellouin bayramini nishonlash uchun men shunday o'ylardimki, bu kunga mos keladigan robot yasash yaxshi bo'lardi. Men o'zimning odamsimon robotimni loyihalashtirishni va qurishni xohlardim, shuning uchun bu
Robotika: Rover 5 -ning asosiy versiyasi, robotning asosiy bosqichi: 18 qadam (rasmlar bilan)
Robotika: Rover 5 -ning eng yaxshi robotlari: