INHOUDSOPGAWE:

NAIN 1.0 - die basiese humanoïde robot met behulp van Arduino: 6 stappe
NAIN 1.0 - die basiese humanoïde robot met behulp van Arduino: 6 stappe

Video: NAIN 1.0 - die basiese humanoïde robot met behulp van Arduino: 6 stappe

Video: NAIN 1.0 - die basiese humanoïde robot met behulp van Arduino: 6 stappe
Video: Знакомство с платой разработки Heltec LoRa CubeCell HTCC-AB01 2024, Julie
Anonim
NAIN 1.0 - die basiese humanoïde robot wat Arduino gebruik
NAIN 1.0 - die basiese humanoïde robot wat Arduino gebruik

Nain 1.0 sal basies 5 afneembare modules hê-

1) Arm - wat via servo's beheer kan word.

2) wiele - wat met gsm -motors bestuur kan word.

3) Been - Nain sal kan wissel tussen wiele of bene vir beweging.

4) Kop - Die kop kan beheer word vir verskillende knik.

5) Kameramodule- wat gekoppel kan word vir toegang tot gesigherkenning.

Saam met hierdie kan NAIN gebruikers praat en interaksie hê en kan u die tyd wys deur die ingeboude klok. Dit sal 'n draadlose beheer hê met behulp van Wi-Fi /Bluetooth.

Stap 1: Komponente benodig

Komponente benodig
Komponente benodig
Komponente benodig
Komponente benodig
Komponente benodig
Komponente benodig
  1. Servomotors -4
  2. Arduino Mega - 1
  3. Framboos Pi - 1
  4. Usb -kamera -1
  5. Spreker -1
  6. DC Motors -2
  7. L293D -1
  8. Batterypak - 1
  9. Wiele -2
  10. Kasterwiele - 2

U benodig ook vierkantige aluminiumstroke om die liggaam en moere en moere te maak om dit reg te pas.

Stap 2: Liggaamstruktuur

Liggaamstruktuur
Liggaamstruktuur

Die liggaamstruktuur sal bestaan uit ligte vierkantige aluminiumstawe, wat u kan help om dit maklik te monteer.

Monteer hulle nou, soos in die figuur getoon, en sny ook die regte spasies uit om die servomotors in die arms vas te sit.

Heg 'n seskantige houtbodem aan die onderkant vas.

Bevestig onder die houtbasis DC -motors en wiele soos ons in 'n lynvolgrobot doen.

Interessant genoeg, voeg twee wiele by- een aan die voorkant en 'n ander aan die agterkant van die robot.

Stap 3: Bedrading en kodering

Bedrading en kodering
Bedrading en kodering
Bedrading en kodering
Bedrading en kodering

Raadpleeg die kodes wat in hierdie deel aangeheg is om die verskillende modules aan te sluit.

Eerstens het ons elke module met behulp van selfstandige kodes getoets, en dan het ons almal in een gekombineer en die beweging van wiele en arms beheer met behulp van 'n Bluetooth -module.

Stap 4: Framboos Pi en beeldherkenning

Framboos Pi en beeldherkenning
Framboos Pi en beeldherkenning
Framboos Pi en beeldherkenning
Framboos Pi en beeldherkenning

Beeldherkenning word uitgevoer met 'n USB -kamera en Raspberry Pi.

Hiervoor moet u die OPEN CV -biblioteek op u Pi installeer.

U kan dit hier doen-https://github.com/jabelone/OpenCV-for-Pi

Dan moet u beeldherkenning met haar cascade uitvoer.

U kan dit hier doen -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Nadat ek die bogenoemde skakel bestudeer het en daarna gevolg het, het ek 'n paar veranderinge aangebring in die finale kode wat ek gebruik het wat ek hieronder plak -

DATASET GENERATOR:

invoercv2

cam = cv2. VideoCapture (0)

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

ek = 0

verrekening = 50

name = raw_input ('voer u ID in')

terwyl dit waar is:

ret, im = cam.read ()

grys = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

gesigte = detector.detectMultiScale (grys, scaleFactor = 1.2, minBure = 5, minSize = (100, 100), vlae = cv2. CASCADE_SCALE_IMAGE)

vir (x, y, w, h) in gesigte:

ek = i+1

cv2.imwrite ("dataSet/face."+name+'.'+str (i)+".jpg", grys [y-offset: y+h+offset, x-offset: x+w+offset])

cv2. reghoek (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])

as cv2.waitKey (100) & 0xFF == ord ('q'):

breek

# breek as die steekproefnommer meer as 20 is

elif (i> 20):

breek

cam.release ()

cv2.destroyAllWindows ()

Dit sal 'n datastel van u foto's skep wat vir verifikasie gebruik sal word.

AFRIGTER:

importcv2, os

invoer numpy as np

vanaf PIL invoerbeeld

herkener = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (pad):

image_paths = [os.path.join (pad, f) vir f in os.listdir (pad)]

# prente bevat gesigbeelde

beelde =

# etikette bevat die etiket wat aan die prent toegeken is

etikette =

vir image_path in image_paths:

# Lees die prentjie en verander dit in grysskaal

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

# Skakel die beeldformaat om in 'n numpy -skikking

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

# Kry die etiket van die prent

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

#nbr = int (''. join (str (ord (c)) vir c in nbr))

druk nbr

# Ontdek die gesig in die prent

gesigte = faceCascade.detectMultiScale (prent)

# As die gesig bespeur word, voeg die gesig by die beelde en die etiket by die etikette

vir (x, y, w, h) in gesigte:

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

etikette.byvoeg (nbr)

cv2.imshow ("Voeg gesigte by traning set …", beeld [y: y + h, x: x + w])

cv2.waitKey (10)

# Stuur die prentelys en etiketlys terug

gee beelde, etikette terug

beelde, etikette = get_images_and_labels (pad)

cv2.imshow ('toets', beelde [0])

cv2.waitKey (1)

herkenner.trein (beelde, np.array (etikette))

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

cv2.destroyAllWindows ()

DETEKTOR

invoercv2

invoer numpy as np

invoer os

c = 0

herkener = cv2.face.createLBPHFaceRecognizer ()

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

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

lettertipe = 1

fontcolor = (255, 255, 255)

terwyl dit waar is:

ret, im = cam.read ()

grys = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

gesigte = faceCascade.detectMultiScale (grys, 1.2, 5)

vir (x, y, w, h) in gesigte:

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

Id = herkener.voorspelling (grys [y: y+h, x: x+w])

as (Id <70):

as (Id == 1):

Id = "Shashank"

elif (Id == 2):

as (c == 0):

Id = "Shivam"

c = c+1

os.system ("sê 'Welkom Shivam -toegang toegestaan'")

anders:

Id = "Shivam"

anders:

Id = "Onbekend"

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

cv2.imshow ('im', im)

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

breek

cam.release ()

cv2.destroyAllWindows ()

Stap 5: LCD en luidspreker

Ek het ook 'n I2C LED -skerm en 'n luidspreker gebruik.

Die LED word beheer via Arduino Mega en die kode word in die finale kode gegee.

Vir Speaker is dit verbind met die Raspberry Pi en gebruik dit eSpeak Utility.

U kan die verwysing hier vind-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Stap 6: Laaste stappe

Monteer alles en maak gereed vir die knal.

Aanbeveel: