Indholdsfortegnelse:

NAIN 1.0 - den grundlæggende humanoide robot ved hjælp af Arduino: 6 trin
NAIN 1.0 - den grundlæggende humanoide robot ved hjælp af Arduino: 6 trin

Video: NAIN 1.0 - den grundlæggende humanoide robot ved hjælp af Arduino: 6 trin

Video: NAIN 1.0 - den grundlæggende humanoide robot ved hjælp af Arduino: 6 trin
Video: CES 2022 human like beomni 1.0 robot is here to assist, from medicine to space 2024, December
Anonim
NAIN 1.0 - Basic Humanoid Robot ved hjælp af Arduino
NAIN 1.0 - Basic Humanoid Robot ved hjælp af Arduino

Nain 1.0 har stort set 5 aftagelige moduler-

1) Arm - som kan styres via servoer.

2) Hjul - som kan styres med jævnstrømsmotorer.

3) Ben - Nain vil være i stand til at skifte mellem hjul eller ben for bevægelse.

4) Hoved - Hovedet kan styres til forskellige nikke.

5) Kameramodul- som kan forbindes til ansigtsgenkendelse.

Sammen med dette vil NAIN være i stand til at tale og interagere med brugere og kan vise dig tiden ved sit indbyggede ur. Det vil have en trådløs kontrol ved hjælp af Wi-fi /Bluetooth.

Trin 1: Nødvendige komponenter

Komponenter påkrævet
Komponenter påkrævet
Komponenter påkrævet
Komponenter påkrævet
Komponenter påkrævet
Komponenter påkrævet
  1. Servomotorer -4
  2. Arduino Mega - 1
  3. Hindbær Pi - 1
  4. Usb -kamera -1
  5. Højttaler -1
  6. DC -motorer -2
  7. L293D -1
  8. Batteripakke - 1
  9. Hjul -2
  10. Hjul - 2

Sammen med disse skal du bruge firkantede aluminiumsstrimler til at lave kroppen og skruer og møtrikker, så de passer korrekt.

Trin 2: Kropsstruktur

Kropsstruktur
Kropsstruktur

Karosseristrukturen vil være lavet af lette firkantede stænger i aluminium, som hjælper med at samle den let.

Saml dem nu som vist på figuren og skær også de rigtige rum ud for servomotorer, der skal fastgøres i armene.

Fastgør en sekskantet træbund i bunden.

Under træbunden skal du fastgøre DC -motorer og hjul, som vi gør i en hvilken som helst line -follower -robot.

Interessant nok, tilføj to hjul på hjul- et på forsiden og et andet på bagsiden af robotten.

Trin 3: Ledningsføring og kodning

Kabelføring og kodning
Kabelføring og kodning
Kabelføring og kodning
Kabelføring og kodning

For at tilslutte de forskellige moduler henvises til koderne i denne del.

Først testede vi hvert modul ved hjælp af selvstændige koder, og derefter kombinerede vi dem alle i ét og kontrollerede bevægelsen af hjul og arme ved hjælp af et bluetooth -modul.

Trin 4: Hindbær Pi og billedgenkendelse

Hindbær Pi og billedgenkendelse
Hindbær Pi og billedgenkendelse
Hindbær Pi og billedgenkendelse
Hindbær Pi og billedgenkendelse

Billedgenkendelse udføres ved hjælp af et USB -kamera og Raspberry Pi.

Til det skal du installere OPEN CV -biblioteket på din Pi.

Du kan gøre det herfra-https://github.com/jabelone/OpenCV-for-Pi

Derefter skal du udføre billedgenkendelse ved hjælp af haar cascade.

Du kan gøre det herfra -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Efter at have studeret ovenstående link og fulgt det, har jeg foretaget nogle ændringer i den sidste kode, jeg har brugt, som jeg indsætter nedenfor -

DATASETGENERATOR:

importcv2

cam = cv2. VideoCapture (0)

detektor = cv2. CascadeClassifier ('Classifiers/face.xml')

jeg = 0

forskydning = 50

name = raw_input ('indtast dit id')

mens det er sandt:

ret, im = cam.read ()

grå = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

ansigter = detektor.detectMultiScale (grå, scaleFactor = 1,2, minNeighbors = 5, minSize = (100, 100), flag = cv2. CASCADE_SCALE_IMAGE)

for (x, y, w, h) i ansigter:

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) & 0xFF == ord ('q'):

pause

# pause, hvis prøvetallet er mere end 20

elif (i> 20):

pause

cam.release ()

cv2.destroyAllWindows ()

Det vil oprette et datasæt af dine fotos, der skal bruges til godkendelse.

TRÆNER:

importcv2, os

import numpy som np

fra PIL import billede

anerkender = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Klassifikatorer/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (sti):

image_paths = [os.path.join (sti, f) for f i os.listdir (sti)]

# billeder indeholder ansigtsbilleder

billeder =

# labels indeholder den etiket, der er tildelt billedet

etiketter =

til image_path i image_paths:

# Læs billedet, og konverter til gråtoner

image_pil = Image.open (image_path).convert ('L')

# Konverter billedformatet til numpy array

image = np.array (image_pil, 'uint8')

# Få etiketten på billedet

nbr = int (os.path.split (image_path) [-1].split (".") [1].replace ("face-", "")))

#nbr = int (''. join (str (ord (c)) for c i nbr))

print nbr

# Find ansigtet i billedet

ansigter = faceCascade.detectMultiScale (billede)

# Hvis ansigtet registreres, skal ansigtet føjes til billeder og etiketten til etiketter

for (x, y, w, h) i ansigter:

images.append (billede [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow ("Tilføjelse af ansigter til traningsæt …", billede [y: y + h, x: x + w])

cv2.waitKey (10)

# returner billedlisten og etikettelisten

returnere billeder, etiketter

billeder, etiketter = get_images_and_labels (sti)

cv2.imshow ('test', billeder [0])

cv2.waitKey (1)

anerkender.træning (billeder, np.array (etiketter))

anerkender.save ('trainer/trainer.yml')

cv2.destroyAllWindows ()

DETEKTOR

importcv2

import numpy som np

import os

c = 0

anerkender = cv2.face.createLBPHFaceRecognizer ()

anerkender.load ('trainer/trainer.yml')

cascadePath = "Klassifikatorer/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

skrifttype = 1

skrifttypefarve = (255, 255, 255)

mens det er sandt:

ret, im = cam.read ()

grå = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

ansigter = faceCascade.detectMultiScale (grå, 1,2, 5)

for (x, y, w, h) i ansigter:

cv2.rektangel (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

Id = anerkender. Forudsigelse (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'")

andet:

Id = "Shivam"

andet:

Id = "Ukendt"

cv2.putText (im, str (Id), (x, y+h), skrifttype, skrifttype, skrifttype

cv2.imshow ('im', im)

hvis cv2.waitKey (10) & 0xFF == ord ('q'):

pause

cam.release ()

cv2.destroyAllWindows ()

Trin 5: LCD og højttaler

Jeg har også brugt et I2C LED Display og en højttaler.

LED'en styres via Arduino Mega, og dens kode er angivet i den endelige kode.

For højttaler er den forbundet med Raspberry Pi og bruger eSpeak Utility.

Du kan finde dens reference her-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Trin 6: Sidste trin

Saml alt og gør dig klar til braget.

Anbefalede: