Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Nain 1.0 sisältää periaatteessa viisi irrotettavaa moduulia-
1) Varsi - jota voidaan ohjata servojen kautta.
2) Pyörät - joita voidaan ohjata tasavirtamoottoreilla.
3) Jalka - Nain voi vaihtaa pyörien tai jalkojen välillä liikkuakseen.
4) Pää - Sen päätä voidaan ohjata eri nyökkäyksille.
5) Kameramoduuli, joka voidaan liittää kasvojentunnistuskäyttöön.
Yhdessä tämän kanssa NAIN pystyy puhumaan ja olemaan vuorovaikutuksessa käyttäjien kanssa ja voi näyttää sinulle ajan sisäänrakennetulla kellollaan. Siinä on langaton ohjaus Wi-Fi /Bluetooth-yhteydellä.
Vaihe 1: Tarvittavat komponentit
- Servomoottorit -4
- Arduino Mega - 1
- Vadelma Pi - 1
- USB -kamera -1
- Kaiutin -1
- DC -moottorit -2
- L293D -1
- Akku - 1
- Pyörät -2
- Pyörät - 2
Näiden lisäksi tarvitset nelikulmaisia alumiininauhoja, jotta runko ja ruuvit ja mutterit sopivat niihin oikein.
Vaihe 2: Runkorakenne
Runkorakenne on valmistettu kevyistä alumiinisista neliömäisistä tangoista, jotka helpottavat sen kokoamista.
Kokoa ne nyt kuvan osoittamalla tavalla ja leikkaa myös sopivat tilat servomoottoreille, jotka kiinnitetään käsivarsiin.
Kiinnitä kuusikulmainen puinen pohja pohjaan.
Kiinnitä puisen alustan alle tasavirtamoottorit ja pyörät kuten mihin tahansa linjaseurantarobottiin.
Mielenkiintoista on lisätä kaksi pyörää- toinen robotin etu- ja toinen taakse.
Vaihe 3: Johdotus ja koodaus
Kytke eri moduulit yhteen tässä osassa olevista koodeista.
Ensinnäkin testasimme jokaista moduulia erillisillä koodeilla ja sitten yhdistimme ne kaikki yhteen ja hallitsimme pyörien ja aseiden liikettä bluetooth -moduulin avulla.
Vaihe 4: Raspberry Pi ja kuvan tunnistus
Kuvan tunnistus suoritetaan USB -kameralla ja Raspberry Pi: llä.
Tätä varten sinun on asennettava OP -CV -kirjasto Pi -laitteeseesi.
Voit tehdä sen täältä-https://github.com/jabelone/OpenCV-for-Pi
Sitten sinun on suoritettava kuvan tunnistus haar -kaskadilla.
Voit tehdä sen täältä -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc
Kun olen tutkinut yllä olevan linkin ja seurannut sitä, olen tehnyt joitain muutoksia käyttämääni lopulliseen koodiin, jonka liitän alla -
DATASET GENERATOR:
importcv2
nokka = cv2. VideoCapture (0)
ilmaisin = cv2. CascadeClassifier ('Classifiers/face.xml')
i = 0
offset = 50
name = raw_input ('anna tunnus')
vaikka totta:
ret, im = cam.read ()
harmaa = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
kasvot = ilmaisin.detectMultiScale (harmaa, scaleFactor = 1,2, min Naapurit = 5, minSize = (100, 100), liput = cv2.
(x, y, w, h) kasvoille:
i = i+1
cv2.imwrite ("dataSet/face."+nimi+'.'+str (i)+".jpg", harmaa [y-offset: y+h+offset, x-offset: x+w+offset])
cv2.suorakulmio (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])
jos cv2.waitKey (100) & 0xFF == ord ('q'):
tauko
# tauko, jos näytteen numero on suurempi kuin 20
elif (i> 20):
tauko
cam.release ()
cv2.destroyAllWindows ()
Se luo valokuvistasi tietojoukon, jota käytetään todentamiseen.
KOULUTTAJA:
importcv2, os
tuo numpy np: nä
PIL -tuontikuvasta
tunnistin = cv2.face.createLBPHFaceRecognizer ()
cascadePath = "Luokittelijat/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
path = 'dataSet'
def get_images_and_labels (polku):
image_paths = [os.path.join (polku, f) f: lle os.listdir (polku)]
# kuvaa sisältää kasvokuvia
kuvat =
# tarrat sisältää kuvalle määritetyn tarran
tarrat =
image_path in image_paths:
# Lue kuva ja muunna se harmaasävyiseksi
image_pil = Image.open (image_path).convert ('L')
# Muunna kuvamuoto numpy -matriisiksi
image = np.array (image_pil, 'uint8')
# Hanki kuvan etiketti
nbr = int (os.path.split (image_path) [-1].split (".") [1].replace ("face-", ""))
#nbr = int (''. join (str (ord (c)) for c in nbr))
print nbr
# Tunnista kuvan kasvot
kasvot = faceCascade.detectMultiScale (kuva)
# Jos kasvot tunnistetaan, liitä kasvot kuviin ja tarra tarroihin
(x, y, w, h) kasvoille:
images.append (kuva [y: y + h, x: x + w])
labels.append (nbr)
cv2.imshow ("Kasvojen lisääminen siirtosarjaan…", kuva [y: y + h, x: x + w])
cv2.waitKey (10)
# palauttaa kuvaluettelon ja tarraluettelon
palauta kuvia, tarroja
kuvat, tunnisteet = get_images_and_labels (polku)
cv2.imshow ('testi', kuvat [0])
cv2.waitKey (1)
tunnistaja.juna (kuvat, np.sarja (tarrat))
tunnistaja.save ('trainer/trainer.yml')
cv2.destroyAllWindows ()
TUNNISTIN
importcv2
tuo numpy np: nä
tuonti
c = 0
tunnistin = cv2.face.createLBPHFaceRecognizer ()
tunnistin.load ('trainer/trainer.yml')
cascadePath = "Luokittelijat/face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
nokka = cv2. VideoCapture (0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
fontscale = 1
fontcolor = (255, 255, 255)
vaikka totta:
ret, im = cam.read ()
harmaa = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
kasvot = faceCascade.detectMultiScale (harmaa, 1,2, 5)
(x, y, w, h) kasvoille:
cv2.suorakulmio (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)
Id = tunnistin.ennuste (harmaa [y: y+h, x: x+w])
jos (Id <70):
jos (Id == 1):
Id = "Shashank"
elif (Id == 2):
jos (c == 0):
Id = "Shivam"
c = c+1
os.system ("espeak 'Welcome Shivam Access Granted'")
muu:
Id = "Shivam"
muu:
Id = "Tuntematon"
cv2.putText (im, str (Id), (x, y+h), fontface, fontscale, fontcolor)
cv2.imshow ('im', im)
jos cv2.waitKey (10) & 0xFF == ord ('q'):
tauko
cam.release ()
cv2.destroyAllWindows ()
Vaihe 5: Nestekidenäyttö ja kaiutin
Olen käyttänyt myös I2C LED -näyttöä ja kaiutinta.
LEDiä ohjataan Arduino Megan kautta ja sen koodi annetaan lopullisessa koodissa.
Kaiuttimelle se on yhdistetty Raspberry Pi -laitteeseen ja käyttää eSpeak -apuohjelmaa.
Löydät sen viitteen täältä-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/
Vaihe 6: Viimeiset vaiheet
Kokoa kaikki ja valmistaudu räjähdykseen.