İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Nain 1.0, temelde 5 ayrılabilir modüle sahip olacaktır.
1) Kol – servolarla kontrol edilebilen.
2) Tekerlekler – DC motorlarla kontrol edilebilen.
3) Bacak – Nain, hareket için tekerlekler veya bacaklar arasında geçiş yapabilecektir.
4) Baş – Başı çeşitli sallanmalar için kontrol edilebilir.
5) Yüz Tanıma Erişimi için arayüz oluşturulabilen kamera modülü.
Bununla birlikte NAIN, kullanıcılarla konuşabilecek ve etkileşime geçebilecek ve dahili saatiyle size zamanı gösterebilecek. Wi-fi/Bluetooth kullanarak kablosuz kontrole sahip olacaktır.
Adım 1: Gerekli Bileşenler
- Servo Motorlar -4
- Arduino Mega - 1
- Ahududu Pi - 1
- Usb Kamera -1
- Hoparlör -1
- DC Motorlar -2
- L293D -1
- Pil Paketi - 1
- Tekerlekler -2
- Tekerlek Tekerlekleri - 2
Bunlarla birlikte, gövdeyi yapmak için alüminyum kare şeritlere ve bunlara uygun şekilde oturması için vida ve somunlara ihtiyacınız olacak.
Adım 2: Vücut Yapısı
Gövde yapısı, kolayca monte edilmesine yardımcı olacak hafif alüminyum kare çubuklardan yapılacaktır.
Şimdi bunları şekilde gösterildiği gibi birleştirin ve ayrıca servo motorların kollara takılacağı uygun boşlukları kesin.
Altına altıgen bir ahşap taban takın.
Ahşap tabanın altına, herhangi bir çizgi izleyen robotta yaptığımız gibi DC motorları ve tekerlekleri takın.
İlginç bir şekilde, biri robotun önüne diğeri arkasına olmak üzere iki tekerlek ekleyin.
Adım 3: Kablolama ve Kodlama
Farklı modülleri bağlamak için bu bölümde ekli kodlara bakın.
Önce bağımsız kodlar kullanarak her bir modülü test ettik ve ardından hepsini bir araya getirdik ve bir bluetooth modülü kullanarak tekerleklerin ve Kolların hareketini kontrol ettik.
4. Adım: Raspberry Pi ve Görüntü Tanıma
Görüntü Tanıma, bir USB Kamera ve Raspberry Pi kullanılarak gerçekleştirilir.
Bunun için Pi'nize OPEN CV kütüphanesini kurmanız gerekecek.
Bunu buradan yapabilirsiniz -
Ardından, haar kaskadını kullanarak görüntü tanıma gerçekleştirmeniz gerekecektir.
Bunu buradan yapabilirsiniz -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc
Yukarıdaki bağlantıyı inceledikten ve bunu takip ettikten sonra, kullandığım son kodda aşağıya yapıştırdığım bazı değişiklikler yaptım -
VERİ SETİ JENERATÖRÜ:
importcv2
kamera = cv2. VideoCapture(0)
dedektör=cv2. CascadeClassifier('Classifiers/face.xml')
ben=0
ofset=50
name=raw_input('kimliğinizi girin')
Doğru iken:
ret, im =cam.read()
gri=cv2.cvtColor(im, cv2. COLOR_BGR2GRAY)
yüzler=detektör.detectMultiScale(gri, scaleFactor=1,2, minNeighbors=5, minSize=(100, 100), flags=cv2. CASCADE_SCALE_IMAGE)
yüzlerde for(x, y, w, h):
ben=i+1
cv2.imwrite("dataSet/face."+name +'.'+ str(i) + ".jpg", gri[y-offset:y+h+offset, x-offset:x+w+offset])
cv2.rectangle(im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
cv2.imshow('im', im[y-offset:y+h+ofset, x-offset:x+w+ofset])
if cv2.waitKey(100) & 0xFF == ord('q'):
kırmak
# numune sayısı 20'den fazla ise ara
elif (i>20):
kırmak
kamera sürümü()
cv2.destroyAllWindows()
Kimlik doğrulama için kullanılacak fotoğraflarınızın bir tarih kümesini oluşturacaktır.
EĞİTİMCİ:
importcv2, işletim sistemi
numpy'yi np olarak içe aktar
PIL içe aktarma Görüntüsünden
tanıyıcı = cv2.face.createLBPHFaceRecognizer()
cascadePath = "Sınıflandırıcılar/face.xml"
faceCascade = cv2. CascadeClassifier(cascadePath);
yol = 'veri kümesi'
def get_images_and_labels(yol):
image_paths = [os.path.join(path, f) for os.listdir(path)]
# resim yüz resimleri içerecek
resimler =
# etiket, görüntüye atanan etiketi içerecek
etiketler =
image_paths içindeki image_path için:
# Resmi okuyun ve gri tonlamaya dönüştürün
image_pil = Image.open(image_path).convert('L')
# Görüntü biçimini numpy dizisine dönüştürün
resim = np.array(image_pil, 'uint8')
# Resmin etiketini alın
nbr = int(os.path.split(image_path)[-1].split(".")[1].replace("face-", ""))
#nbr=int(''.join(str(ord(c)) c için nbr))
baskı numarası
# Görüntüdeki yüzü algıla
yüzler = faceCascade.detectMultiScale(image)
# Yüz algılanırsa, yüzü görüntülere ve etiketi etiketlere ekleyin
yüzlerde (x, y, w, h) için:
resimler.append(resim[y: y + y, x: x + w])
etiketler.append(nbr)
cv2.imshow("Eğitim kümesine yüzler ekleniyor…", image[y: y + h, x: x + w])
cv2.beklemeAnahtarı(10)
# resim listesini ve etiket listesini döndür
dönüş resimleri, etiketler
resimler, etiketler = get_images_and_labels(path)
cv2.imshow('test', resimler[0])
cv2.bekleme Anahtarı(1)
tanıyıcı.tren(görüntüler, np.array(etiketler))
tanıyıcı.save('eğitmen/eğitmen.yml')
cv2.destroyAllWindows()
DEDEKTÖR
importcv2
numpy'yi np olarak içe aktar
işletim sistemini içe aktar
c=0
tanıyıcı = cv2.face.createLBPHFaceRecognizer()
tanıyıcı.load('eğitmen/eğitmen.yml')
cascadePath = "Sınıflandırıcılar/face.xml"
faceCascade = cv2. CascadeClassifier(cascadePath);
kamera = cv2. VideoCapture(0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
yazı tipi ölçeği = 1
yazı tipi rengi = (255, 255, 255)
Doğru iken:
ret, im =cam.read()
gri=cv2.cvtColor(im, cv2. COLOR_BGR2GRAY)
yüzler=faceCascade.detectMultiScale(gri, 1,2, 5)
yüzlerde for(x, y, w, h):
cv2.rectangle(im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
Id = tanıyıcı.tahmin(gri[y:y+h, x:x+w])
if(Id<70):
if(Id==1):
Id="Shashank"
elif(Id==2):
if(c==0):
Id="Şivam"
c=c+1
os.system("'Hoş Geldiniz Shivam Erişimi Verildi'")
Başka:
Id="Şivam"
Başka:
Id="Bilinmeyen"
cv2.putText(im, str(Id), (x, y+h), yazı tipi yüzü, yazı tipi ölçeği, yazı tipi rengi)
cv2.imshow('im', im)
eğer cv2.waitKey(10) & 0xFF==ord('q'):
kırmak
kamera sürümü()
cv2.destroyAllWindows()
Adım 5: LCD ve Hoparlör
Ayrıca bir I2C LED Ekran ve bir hoparlör kullandım.
LED Arduino Mega üzerinden kontrol edilir ve kodu son kodda verilir.
Hoparlör için Raspberry Pi ile bağlantılıdır ve eSpeak Utility kullanır.
Referansını burada bulabilirsiniz -
Adım 6: Son Adımlar
Her şeyi bir araya getirin ve patlamaya hazır olun.