Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Nain 1.0 vil ha i utgangspunktet 5 avtakbare moduler-
1) Arm - som kan styres via servoer.
2) Hjul - som kan styres med likestrømsmotorer.
3) Ben - Nain vil kunne veksle mellom hjul eller ben for bevegelse.
4) Hode - Hodet kan kontrolleres for forskjellige nikk.
5) Kameramodul- som kan grensesnitt for ansiktsgjenkjenningstilgang.
Sammen med dette vil NAIN kunne snakke og samhandle med brukere og kan vise deg tiden med den innebygde klokken. Den vil ha en trådløs kontroll ved hjelp av Wi-fi /Bluetooth.
Trinn 1: Komponenter som trengs
- Servomotorer -4
- Arduino Mega - 1
- Bringebær Pi - 1
- Usb -kamera -1
- Høyttaler -1
- DC -motorer -2
- L293D -1
- Batteripakke - 1
- Hjul -2
- Hjul - 2
Sammen med disse trenger du firkantede aluminiumslister for å lage kroppen og skruer og muttere for å passe dem riktig.
Trinn 2: Kroppsstruktur
Karosseristrukturen vil være laget av lette firkantede aluminiumsstenger i aluminium som hjelper deg med å montere den enkelt.
Monter dem nå som vist på figuren, og kutt ut riktige mellomrom for at servomotorene skal festes i armene.
Fest en sekskantet trebunn nederst.
Under trebasen fester du likestrømsmotorer og hjul som vi gjør i en hvilken som helst linjefølgerrobot.
Interessant nok, legg til to hjul- ett på forsiden og et annet på baksiden av roboten.
Trinn 3: Kabling og koding
For å koble til de forskjellige modulene, se kodene som er vedlagt i denne delen.
Først testet vi hver modul ved hjelp av frittstående koder, og deretter kombinerte vi dem alle i ett og kontrollerte bevegelsen av hjul og armer ved hjelp av en bluetooth -modul.
Trinn 4: Raspberry Pi og bildegjenkjenning
Bildegjenkjenning utføres ved hjelp av et USB -kamera og Raspberry Pi.
For det må du installere OPEN CV -biblioteket på Pi.
Du kan gjøre det herfra-https://github.com/jabelone/OpenCV-for-Pi
Da må du utføre bildegjenkjenning ved hjelp av haar cascade.
Du kan gjøre det herfra -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc
Etter å ha studert lenken ovenfor og fulgt det, har jeg gjort noen endringer i den endelige koden jeg har brukt som jeg limer inn nedenfor -
DATASETGENERATOR:
importcv2
cam = cv2. VideoCapture (0)
detektor = cv2. CascadeClassifier ('Classifiers/face.xml')
jeg = 0
forskyvning = 50
name = raw_input ('skriv inn din ID')
mens det er sant:
ret, im = cam.read ()
grå = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
ansikter = detektor.detectMultiScale (grå, scaleFactor = 1,2, minNeighbors = 5, minSize = (100, 100), flagg = cv2. CASCADE_SCALE_IMAGE)
for (x, y, w, h) i ansikter:
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])
hvis cv2.waitKey (100) og 0xFF == ord ('q'):
gå i stykker
# pause hvis prøvetallet er mer enn 20
elif (i> 20):
gå i stykker
cam.release ()
cv2.destroyAllWindows ()
Det vil opprette et datasett for bildene dine som skal brukes til autentisering.
TRENER:
importcv2, os
importer numpy som np
fra PIL importbilde
gjenkjenner = cv2.face.createLBPHFaceRecognizer ()
cascadePath = "Klassifiserer/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
path = 'dataSet'
def get_images_and_labels (bane):
image_paths = [os.path.join (bane, f) for f i os.listdir (bane)]
# bilder inneholder ansiktsbilder
bilder =
# etiketter inneholder etiketten som er tilordnet bildet
etiketter =
for image_path i image_paths:
# Les bildet og konverter til gråtoner
image_pil = Image.open (image_path).convert ('L')
# Konverter bildeformatet til numpy array
image = np.array (image_pil, 'uint8')
# Få etiketten til bildet
nbr = int (os.path.split (image_path) [-1].split (".") [1].replace ("face-", "")))
#nbr = int (''. join (str (ord (c)) for c i nbr))
print nbr
# Finn ansiktet i bildet
ansikter = faceCascade.detectMultiScale (bilde)
# Hvis ansikt blir oppdaget, legg ansiktet til bilder og etiketten til etiketter
for (x, y, w, h) i ansikter:
images.append (bilde [y: y + h, x: x + w])
labels.append (nbr)
cv2.imshow ("Legger til ansikter i traningsett …", bilde [y: y + h, x: x + w])
cv2.waitKey (10)
# returner bildelisten og etikettlisten
returnere bilder, etiketter
bilder, etiketter = get_images_and_labels (bane)
cv2.imshow ('test', bilder [0])
cv2.waitKey (1)
anerkjenner.trening (bilder, np.array (etiketter))
anerkjenner.save ('trainer/trainer.yml')
cv2.destroyAllWindows ()
DETEKTOR
importcv2
importer numpy som np
import os
c = 0
gjenkjenner = cv2.face.createLBPHFaceRecognizer ()
anerkjenner.load ('trainer/trainer.yml')
cascadePath = "Klassifiserer/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
cam = cv2. VideoCapture (0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
fontscale = 1
fontcolor = (255, 255, 255)
mens det er sant:
ret, im = cam.read ()
grå = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
ansikter = faceCascade.detectMultiScale (grå, 1,2, 5)
for (x, y, w, h) i ansikter:
cv2.rektangel (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
Id = gjenkjenner.predikt (grå [y: y+h, x: x+w])
hvis (Id <70):
hvis (Id == 1):
Id = "Shashank"
elif (Id == 2):
hvis (c == 0):
Id = "Shivam"
c = c+1
os.system ("espeak 'Welcome Shivam Access Granted'")
ellers:
Id = "Shivam"
ellers:
Id = "Ukjent"
cv2.putText (im, str (Id), (x, y+h), fontface, fontscale, fontcolor)
cv2.imshow ('im', im)
hvis cv2.waitKey (10) & 0xFF == ord ('q'):
gå i stykker
cam.release ()
cv2.destroyAllWindows ()
Trinn 5: LCD og høyttaler
Jeg har også brukt en I2C LED -skjerm og en høyttaler.
Lysdioden styres via Arduino Mega og koden er gitt i den endelige koden.
For høyttaler er den koblet til Raspberry Pi og bruker eSpeak Utility.
Du finner referansen her-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/
Trinn 6: Siste trinn
Sett sammen alt og gjør deg klar for smellet.