Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Nain 1.0 kommer att ha i princip 5 löstagbara moduler-
1) Arm - som kan styras via servon.
2) Hjul - som kan styras med likströmsmotorer.
3) Ben - Nain kommer att kunna växla mellan hjul eller ben för rörelse.
4) Huvud - Huvudet kan styras för olika nick.
5) Kameramodul- som kan anslutas för ansiktsigenkänning.
Tillsammans med detta kommer NAIN att kunna tala och interagera med användare och kan visa dig tiden med sin inbyggda klocka. Den kommer att ha en trådlös kontroll med Wi-fi /Bluetooth.
Steg 1: Komponenter som behövs
- Servomotorer -4
- Arduino Mega - 1
- Hallon Pi - 1
- USB -kamera -1
- Högtalare -1
- DC -motorer -2
- L293D -1
- Batteri - 1
- Hjul -2
- Hjul - 2
Tillsammans med dessa behöver du fyrkantiga aluminiumremsor för att göra kroppen och skruvar och muttrar för att passa dem ordentligt.
Steg 2: Kroppsstruktur
Kroppsstrukturen kommer att vara tillverkad av lätta fyrkantiga stänger av aluminium som hjälper till att enkelt montera den.
Montera dem från och med nu som visas i figuren och klipp ut rätt utrymmen för att servomotorerna ska fästas i armarna.
Fäst en sexkantig träbotten längst ner.
Under träbasen, fäst likströmsmotorer och hjul som vi gör i alla linjeföljare -robotar.
Intressant nog, lägg till två hjul- ett på framsidan och ett på baksidan av roboten.
Steg 3: Kabeldragning och kodning
För att ansluta de olika modulerna, se koder som bifogas i denna del.
Först testade vi varje modul med hjälp av fristående koder och sedan kombinerade vi dem alla i ett och kontrollerade rörelsen av hjul och armar med en bluetooth -modul.
Steg 4: Raspberry Pi och bildigenkänning
Bildigenkänning utförs med en USB -kamera och Raspberry Pi.
För det måste du installera OPEN CV -biblioteket på din Pi.
Du kan göra det härifrån-https://github.com/jabelone/OpenCV-for-Pi
Då måste du utföra bildigenkänning med hjälp av haar cascade.
Du kan göra det härifrån -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc
Efter att ha studerat ovanstående länk och följt det har jag gjort några ändringar i den slutliga koden jag har använt som jag klistrar in nedan -
DATASETGENERATOR:
importcv2
cam = cv2. VideoCapture (0)
detektor = cv2. CascadeClassifier ('Classifiers/face.xml')
jag = 0
förskjutning = 50
name = raw_input ('ange ditt id')
medan det är sant:
ret, im = cam.read ()
grå = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
ansikten = detektor.detectMultiScale (grå, scaleFactor = 1,2, minNeighbors = 5, minSize = (100, 100), flaggor = cv2. CASCADE_SCALE_IMAGE)
för (x, y, w, h) i ansikten:
i = i+1
cv2.imwrite ("dataSet/face."+name+'.'+str (i)+".jpg", grå [y-offset: y+h+offset, x-offset: x+w+offset])
cv2.rektangel (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
cv2.imshow ('im', im [y-offset: y+h+offset, x-offset: x+w+offset])
om cv2.waitKey (100) & 0xFF == ord ('q'):
ha sönder
# paus om provnumret är mer än 20
elif (i> 20):
ha sönder
cam.release ()
cv2.destroyAllWindows ()
Det kommer att skapa en datauppsättning av dina foton som ska användas för autentisering.
TRÄNARE:
importcv2, os
importera numpy som np
från PIL importbild
identifierare = cv2.face.createLBPHFaceRecognizer ()
cascadePath = "Klassificerare/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
path = 'dataSet'
def get_images_and_labels (sökväg):
image_paths = [os.path.join (sökväg, f) för f i os.listdir (sökväg)]
# bilder innehåller ansiktsbilder
bilder =
# etiketter innehåller etiketten som tilldelats bilden
etiketter =
för image_path i image_paths:
# Läs bilden och konvertera till gråskala
image_pil = Image.open (image_path).convert ('L')
# Konvertera bildformatet till numpy array
bild = np.array (image_pil, 'uint8')
# Få etiketten på bilden
nbr = int (os.path.split (image_path) [-1].split (".") [1].replace ("face-", "")))
#nbr = int (''. join (str (ord (c)) för c i nbr))
skriva ut nbr
# Upptäck ansiktet i bilden
ansikten = faceCascade.detectMultiScale (bild)
# Om ansikte upptäcks, lägg ansiktet till bilder och etiketten på etiketter
för (x, y, w, h) i ansikten:
images.append (bild [y: y + h, x: x + w])
etiketter. lägg till (nbr)
cv2.imshow ("Lägga till ansikten i traningset …", bild [y: y + h, x: x + w])
cv2.waitKey (10)
# returnera bildlistan och etikettlistan
returnera bilder, etiketter
bilder, etiketter = get_images_and_labels (sökväg)
cv2.imshow ('test', bilder [0])
cv2.waitKey (1)
identifierare.train (bilder, np.array (etiketter))
identifierer.save ('trainer/trainer.yml')
cv2.destroyAllWindows ()
DETEKTOR
importcv2
importera numpy som np
importera os
c = 0
identifierare = cv2.face.createLBPHFaceRecognizer ()
identifierer.load ('trainer/trainer.yml')
cascadePath = "Klassificerare/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
cam = cv2. VideoCapture (0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
fontscale = 1
fontcolor = (255, 255, 255)
medan det är sant:
ret, im = cam.read ()
grå = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
ansikten = faceCascade.detectMultiScale (grå, 1,2, 5)
för (x, y, w, h) i ansikten:
cv2.rektangel (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
Id = identifierare.predikt (grå [y: y+h, x: x+w])
om (Id <70):
om (Id == 1):
Id = "Shashank"
elif (Id == 2):
om (c == 0):
Id = "Shivam"
c = c+1
os.system ("espeak 'Welcome Shivam Access Granted'")
annan:
Id = "Shivam"
annan:
Id = "Okänd"
cv2.putText (im, str (Id), (x, y+h), fontface, fontscale, fontcolor)
cv2.imshow ('im', im)
om cv2.waitKey (10) & 0xFF == ord ('q'):
ha sönder
cam.release ()
cv2.destroyAllWindows ()
Steg 5: LCD och högtalare
Jag har också använt en I2C LED Display och en högtalare.
Lysdioden styrs via Arduino Mega och dess kod anges i den slutliga koden.
För högtalare är den ansluten till Raspberry Pi och använder eSpeak Utility.
Du hittar dess referens här-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/
Steg 6: Slutsteg
Sätt ihop allt och gör dig redo för smällen.