Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
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.