Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Nain 1.0-də əsasən 5 ayrılan modul olacaq-
1) Qol - servo vasitəsi ilə idarə oluna bilər.
2) Təkərlər - DC mühərrikləri ilə idarə oluna bilər.
3) Ayaq - Nain hərəkət üçün təkərlər və ya ayaqları arasında keçid edə biləcək.
4) Baş - Başı müxtəlif düyünlər üçün idarə oluna bilər.
5) Kamera modulu- Üz Tanıma Girişi üçün birləşdirilə bilər.
Bununla yanaşı, NAIN istifadəçilərlə danışa və onlarla ünsiyyət qura biləcək və vaxtını daxili saatı ilə göstərə bilər. Wi-Fi /Bluetooth istifadə edərək simsiz idarəetməyə sahib olacaq.
Addım 1: Lazım olan komponentlər
- Servo Motorlar -4
- Arduino Mega - 1
- Moruq Pi - 1
- Usb Kamera -1
- Dinamik -1
- DC mühərrikləri -2
- L293D -1
- Batareya dəsti - 1 ədəd
- Təkərlər -2
- Kastor Təkərləri - 2
Bunlarla yanaşı, bədəni düzəltmək üçün alüminium kvadrat zolaqlara və vintlərə və qoz -fındıqlara düzgün oturması üçün ehtiyacınız olacaq.
Addım 2: Bədən quruluşu
Gövdə quruluşu, asan yığılmasına kömək edəcək yüngül alüminium kvadrat çubuqlardan hazırlanacaq.
Hal -hazırda onları şəkildə göstərildiyi kimi yığın və servo motorların qollara bağlanması üçün uyğun yerləri kəsin.
Dibinə altıbucaqlı bir taxta baza yapışdırın.
Taxta bazanın altına, hər hansı bir xətt izləyicisi robotunda etdiyimiz kimi DC mühərrikləri və təkərləri bağlayın.
Maraqlısı budur ki, iki təkər əlavə edin- biri robotun ön tərəfində, digəri isə arxada.
Addım 3: Kablolama və Kodlaşdırma
Fərqli modulları bağlamaq üçün bu hissədə əlavə edilmiş kodlara baxın.
Əvvəlcə hər bir modulu müstəqil kodlarla sınadıq, sonra hamısını bir yerə yığdıq və bluetooth modulu istifadə edərək təkərlərin və qolların hərəkətini idarə etdik.
Addım 4: Raspberry Pi və Görüntü Tanıma
Şəkil Tanıma USB Kamera və Raspberry Pi istifadə edərək həyata keçirilir.
Bunun üçün Pi -yə OPEN CV kitabxanasını quraşdırmalısınız.
Bunu buradan edə bilərsiniz-https://github.com/jabelone/OpenCV-for-Pi
Sonra haar kaskadından istifadə edərək görüntü tanıma etməlisiniz.
Bunu buradan edə bilərsiniz -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc
Yuxarıdakı linki öyrəndikdən və izlədikdən sonra, aşağıda yapışdırdığım istifadə etdiyim son kodda bəzi dəyişikliklər etdim -
DATASET JENERATORU:
importcv2
cam = cv2. VideoCapture (0)
detektor = cv2. CascadeClassifier ('Təsnifatçılar/face.xml')
i = 0
ofset = 50
ad = raw_input ('id nömrənizi daxil edin')
Doğru halda:
ret, im = cam.read ()
boz = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
sifətlər = detector.detectMultiScale (boz, miqyaslıFaktor = 1.2, minQonşular = 5, minSize = (100, 100), bayraqlar = cv2. CASCADE_SCALE_IMAGE)
üzlərdə (x, y, w, h) üçün:
i = i+1
cv2.imwrite ("dataSet/face."+ad+'.'+str (i)+".jpg", boz [y-ofset: y+h+ofset, x-offset: x+w+offset])
cv2.dörtgen (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-offset: x+w+offset])
əgər cv2.waitKey (100) & 0xFF == ord ('q'):
fasilə
Nümunə sayı 20 -dən çox olarsa # fasilə
elif (i> 20):
fasilə
cam.release ()
cv2.destroyAllWindows ()
Doğrulama üçün istifadə ediləcək fotoşəkillərinizdən ibarət bir məlumat toplusu yaradacaq.
MƏŞĞƏR:
importcv2, os
np kimi numpy idxal edin
PIL idxal Şəkilindən
tanıyıcı = cv2.face.createLBPHFaceRecognizer ()
cascadePath = "Təsnifatçılar/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
yol = 'dataSet'
def get_images_and_labels (yol):
image_paths = [os.path.join (yol, f) üçün os.listdir (yol)]
# şəkillərdə üz şəkilləri olacaq
şəkillər =
# etiketdə görüntüyə təyin edilmiş etiket olacaq
etiketlər =
image_paths -da image_path üçün:
# Şəkli oxuyun və boz rəngə çevirin
image_pil = Image.open (image_path).convert ('L')
# Şəkil formatını numpy massivinə çevirin
image = np.array (image_pil, 'uint8')
# Şəklin etiketini alın
nbr = int (os.path.split (image_path) [-1].split (".") [1].dəyişdir ("face-", ""))
#nbr = int (''. qoşul (str (ord (c)) in c in nbr))
çap nbr
# Şəkildəki üzü aşkar edin
üzlər = faceCascade.detectMultiScale (şəkil)
# Üz aşkarlanarsa, üzü şəkillərə və etiketi etiketlərə əlavə edin
üzlərdə (x, y, w, h) üçün:
images.append (şəkil [y: y + h, x: x + w])
labels.append (nbr)
cv2.imshow ("Tərcümə dəstinə üzlər əlavə olunur …", şəkil [y: y + h, x: x + w])
cv2.waitKey (10)
# şəkillər siyahısını və etiket siyahısını qaytarın
şəkilləri, yazıları qaytarın
şəkillər, etiketlər = get_images_and_labels (yol)
cv2.imshow ('test', şəkillər [0])
cv2.waitKey (1)
tanıyıcı.train (şəkillər, np.array (etiketlər))
tanıyıcı.save ('məşqçi/məşqçi.yml')
cv2.destroyAllWindows ()
DEDEKTOR
importcv2
np kimi numpy idxal edin
id id
c = 0
tanıyıcı = cv2.face.createLBPHFaceRecognizer ()
tanıyıcı yük ('trainer/trainer.yml')
cascadePath = "Təsnifatçılar/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
cam = cv2. VideoCapture (0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
font ölçüsü = 1
fontcolor = (255, 255, 255)
Doğru halda:
ret, im = cam.read ()
boz = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
üzlər = faceCascade.detectMultiScale (boz, 1.2, 5)
üzlərdə (x, y, w, h) üçün:
cv2.dörtgen (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
Id = tanıyıcı.predikt (boz [y: y+h, x: x+w])
əgər (Id <70):
əgər (Id == 1):
Id = "Shashank"
elif (Id == 2):
əgər (c == 0):
Id = "Şivam"
c = c+1
os.system ("Xüsusi" Xoş gəldiniz Shivam Girişinə icazə verildi "")
başqa:
Id = "Şivam"
başqa:
Id = "Naməlum"
cv2.putText (im, str (Id), (x, y+h), fontface, fontscale, fontcolor)
cv2.imshow ('im', im)
əgər cv2.waitKey (10) & 0xFF == ord ('q'):
fasilə
cam.release ()
cv2.destroyAllWindows ()
Addım 5: LCD və Dinamik
Həm də I2C LED Ekran və dinamikdən istifadə etdim.
LED Arduino Mega vasitəsilə idarə olunur və kodu son kodda verilir.
Dinamik üçün, Raspberry Pi ilə bağlıdır və eSpeak Utility -dən istifadə edir.
İstinadını burada tapa bilərsiniz-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/
Addım 6: Son addımlar
Hər şeyi yığın və partlamağa hazır olun.