Innholdsfortegnelse:

NAIN 1.0 - Basic Humanoid Robot Using Arduino: 6 trinn
NAIN 1.0 - Basic Humanoid Robot Using Arduino: 6 trinn

Video: NAIN 1.0 - Basic Humanoid Robot Using Arduino: 6 trinn

Video: NAIN 1.0 - Basic Humanoid Robot Using Arduino: 6 trinn
Video: Arduino Controlled Robotic Biped - Test and Demo 2024, Juli
Anonim
NAIN 1.0 - Basic Humanoid Robot Using Arduino
NAIN 1.0 - Basic Humanoid Robot Using Arduino

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

Komponenter som trengs
Komponenter som trengs
Komponenter som trengs
Komponenter som trengs
Komponenter som trengs
Komponenter som trengs
  1. Servomotorer -4
  2. Arduino Mega - 1
  3. Bringebær Pi - 1
  4. Usb -kamera -1
  5. Høyttaler -1
  6. DC -motorer -2
  7. L293D -1
  8. Batteripakke - 1
  9. Hjul -2
  10. Hjul - 2

Sammen med disse trenger du firkantede aluminiumslister for å lage kroppen og skruer og muttere for å passe dem riktig.

Trinn 2: Kroppsstruktur

Kroppsstruktur
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

Kabling og koding
Kabling og koding
Kabling og koding
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

Bringebær Pi og bildegjenkjenning
Bringebær Pi og bildegjenkjenning
Bringebær Pi og bildegjenkjenning
Bringebær 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.

Anbefalt: