Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Nain 1.0-l on põhimõtteliselt 5 eemaldatavat moodulit-
1) Arm - mida saab juhtida servode kaudu.
2) Rattad - mida saab juhtida alalisvoolumootoritega.
3) Jalg - Nain saab liikumiseks rataste või jalgade vahel vahetada.
4) Pea - selle pead saab juhtida erinevate noogutuste jaoks.
5) Kaameramoodul- mida saab liidestada näotuvastuse jaoks.
Koos sellega saab NAIN kasutajatega rääkida ja nendega suhelda ning saab teile aega näidata oma sisseehitatud kella järgi. Sellel on juhtmevaba juhtimine, kasutades Wi-Fi /Bluetoothi.
Samm: vajalikud komponendid
- Servomootorid -4
- Arduino Mega - 1
- Vaarika Pi - 1
- USB -kaamera -1
- Kõlar -1
- DC mootorid -2
- L293D -1
- Aku - 1
- Rattad -2
- Kastirattad - 2
Koos nendega vajate alumiiniumist ruudukujulisi ribasid, et kere ja kruvid ja mutrid korralikult kokku panna.
2. samm: kehaehitus
Kere konstruktsioon on valmistatud kergetest alumiiniumist ruudukujulistest vardadest, mis aitavad seda hõlpsalt kokku panna.
Praeguse seisuga pange need kokku, nagu joonisel näidatud, ja lõigake välja ka sobivad ruumid servomootorite külge kinnitamiseks.
Altpoolt kinnitage kuusnurkne puidust alus.
Puidust aluse alla kinnitage alalisvoolumootorid ja rattad, nagu me teeme mis tahes rida järgiva roboti puhul.
Huvitav on see, et lisage kaks ratast- üks roboti esiküljel ja teine taga.
Samm: juhtmestik ja kodeerimine
Erinevate moodulite ühendamiseks vaadake selles osas lisatud koode.
Esiteks testisime igat moodulit eraldiseisvate koodide abil ja seejärel ühendasime need kõik ühes ning kontrollisime rataste ja relvade liikumist bluetooth mooduli abil.
4. samm: Vaarika Pi ja pildituvastus
Pildituvastus toimub USB -kaamera ja Raspberry Pi abil.
Selleks peate oma Pi -le installima OPEN CV kogu.
Seda saate teha siit-https://github.com/jabelone/OpenCV-for-Pi
Seejärel peate pildituvastuse tegema, kasutades haar kaskaadi.
Seda saate teha siit -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc
Pärast ülaltoodud lingi uurimist ja selle järgset muutmist olen kasutanud lõplikus koodis, mille ma allpool kleepin -
DATASET GENERATOR:
importcv2
cam = cv2. VideoCapture (0)
detektor = cv2. CascadeClassifier ('Classifiers/face.xml')
i = 0
nihe = 50
name = raw_input ('sisestage oma ID')
kuigi tõsi:
ret, im = cam.read ()
hall = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
näod = detektor.detectMultiScale (hall, scaleFactor = 1,2, minNaabrid = 5, minSize = (100, 100), lipud = cv2. CASCADE_SCALE_IMAGE)
(x, y, w, h) nägude puhul:
i = i+1
cv2.imwrite ("dataSet/nägu."+nimi+'.'+str (i)+".jpg", hall [y-offset: y+h+offset, x-offset: x+w+offset])
cv2. ristkülik (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
cv2.imshow ('im', im [y-nihe: y+h+nihe, x-nihe: x+w+nihe])
kui cv2.waitKey (100) & 0xFF == ord ('q'):
murda
# murda, kui proovi number on suurem kui 20
elif (i> 20):
murda
cam.release ()
cv2.destroyAllWindows ()
See loob teie fotodest andmekogumi, mida kasutatakse autentimiseks.
KOOLITAJA:
importcv2, os
import numpy np -na
PIL -i impordipildilt
äratundja = cv2.face.createLBPHFaceRecognizer ()
cascadePath = "Classifiers/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
path = 'dataSet'
def get_images_and_labels (tee):
image_paths = [os.path.join (tee, f) f jaoks os.listdir (tee)]
# pilti sisaldab näopilte
pildid =
# labels will sisaldab pildile määratud silti
sildid =
image_path jaoks image_paths:
# Lugege pilti ja teisendage see halltoonidesse
image_pil = Image.open (image_path).convert ('L')
# Teisendage pildivorming numbrimassiiviks
image = np.array (image_pil, 'uint8')
# Hankige pildi silt
nbr = int (os.path.split (image_path) [-1].split (".") [1].replace ("face-", ""))
#nbr = int ("". liitu (str (ord (c)) c jaoks in nbr))
trükk nr
# Tuvastage pildil olev nägu
näod = faceCascade.detectMultiScale (pilt)
# Kui nägu tuvastatakse, lisage nägu piltidele ja silt siltidele
(x, y, w, h) nägude puhul:
images.append (pilt [y: y + h, x: x + w])
labels.append (nbr)
cv2.imshow ("Nägude lisamine trennikomplekti …", pilt [y: y + h, x: x + w])
cv2.waitKey (10)
# tagastage piltide ja siltide loend
tagastada pilte, silte
pildid, sildid = get_images_and_labels (tee)
cv2.imshow ('test', pildid [0])
cv2.waitKey (1)
tunnistaja.treen (pildid, np.massiiv (sildid))
tunnistaja.save ('koolitaja/koolitaja.yml')
cv2.destroyAllWindows ()
DETEKTOR
importcv2
import numpy np -na
import os
c = 0
äratundja = cv2.face.createLBPHFaceRecognizer ()
tunnistaja.load ('trainer/trainer.yml')
cascadePath = "Classifiers/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
cam = cv2. VideoCapture (0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
fontide skaala = 1
fontcolor = (255, 255, 255)
kuigi tõsi:
ret, im = cam.read ()
hall = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
näod = faceCascade.detectMultiScale (hall, 1,2, 5)
(x, y, w, h) nägude puhul:
cv2. ristkülik (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
Id = äratundja.prognoos (hall [y: y+h, x: x+w])
kui (Id <70):
kui (Id == 1):
Id = "Shashank"
elif (Id == 2):
kui (c == 0):
Id = "Shivam"
c = c+1
os.system ("espeak 'Welcome Shivam Access Granted" ")
muidu:
Id = "Shivam"
muidu:
Id = "Tundmatu"
cv2.putText (im, str (Id), (x, y+h), fontface, fontscale, fontcolor)
cv2.imshow ('im', im)
kui cv2.waitKey (10) & 0xFF == ord ('q'):
murda
cam.release ()
cv2.destroyAllWindows ()
Samm: LCD ja kõlar
Olen kasutanud ka I2C LED -ekraani ja kõlarit.
LED -i juhitakse Arduino Mega kaudu ja selle kood on antud lõplikus koodis.
Kõlari jaoks on see ühendatud Raspberry Pi -ga ja kasutab utiliiti eSpeak.
Selle viite leiate siit-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/
6. samm: viimased sammud
Pange kõik kokku ja valmistuge pauguks.