Përmbajtje:

NAIN 1.0 - Roboti themelor humanoid duke përdorur Arduino: 6 hapa
NAIN 1.0 - Roboti themelor humanoid duke përdorur Arduino: 6 hapa

Video: NAIN 1.0 - Roboti themelor humanoid duke përdorur Arduino: 6 hapa

Video: NAIN 1.0 - Roboti themelor humanoid duke përdorur Arduino: 6 hapa
Video: ¡TODA LA HISTORIA DE SBA❗😲CURIOSIDADES🐾Y SECRETOS❓QUE NO SABÍAS EN UN☝SOLO VIDEO🐻 2024, Nëntor
Anonim
NAIN 1.0 - Roboti themelor humanoid duke përdorur Arduino
NAIN 1.0 - Roboti themelor humanoid duke përdorur Arduino

Nain 1.0 do të ketë në thelb 5 module të ndashme-

1) Krah - i cili mund të kontrollohet përmes servos.

2) Rrota - të cilat mund të kontrollohen me motorë dc.

3) Këmbë - Nain do të jetë në gjendje të kalojë midis rrotave ose këmbëve për lëvizje.

4) Koka - Koka e saj mund të kontrollohet për nyje të ndryshme.

5) Moduli i kamerës- i cili mund të ndërfaqet për Qasjen në Njohjen e Fytyrës.

Së bashku me këtë NAIN do të jetë në gjendje të flasë dhe të ndërveprojë me përdoruesit dhe mund t'ju tregojë kohën me orën e saj të integruar. Do të ketë një kontroll pa tel duke përdorur Wi-fi /Bluetooth.

Hapi 1: Përbërësit e nevojshëm

Përbërësit e nevojshëm
Përbërësit e nevojshëm
Përbërësit e nevojshëm
Përbërësit e nevojshëm
Përbërësit e nevojshëm
Përbërësit e nevojshëm
  1. Servo Motors -4
  2. Arduino Mega - 1
  3. Mjedër Pi - 1
  4. Kamera USB -1
  5. Folës -1
  6. Motorët DC -2
  7. L293D -1
  8. Paketa e baterisë - 1
  9. Rrota -2
  10. Rrota Castor - 2

Së bashku me këto ju do të keni nevojë për shirita katrorë alumini për të bërë trupin dhe shirita dhe arra për t'i përshtatur ato siç duhet.

Hapi 2: Struktura e trupit

Struktura e trupit
Struktura e trupit

Struktura e trupit do të jetë prej shufrave të lehta katrore prej alumini të cilat do të ndihmojnë në montimin e tij me lehtësi.

Tashmë mblidhni ato siç tregohet në figurë dhe gjithashtu prerë hapësirat e duhura për motorët servo që do të bashkohen në krahë.

Bashkangjitni një bazë prej druri gjashtëkëndore në pjesën e poshtme.

Nën bazën prej druri, bashkoni motorët dhe rrotat DC siç bëjmë në çdo robot ndjekës të linjës.

Interestshtë interesante, Shtoni dy rrota pluhuri- njëra në pjesën e përparme dhe tjetra në anën e pasme të robotit.

Hapi 3: Instalimet dhe Kodimi

Instalimet dhe Kodimi
Instalimet dhe Kodimi
Instalimet dhe Kodimi
Instalimet dhe Kodimi

Për të lidhur modulet e ndryshme referojuni kodeve të bashkangjitura në këtë pjesë.

Së pari ne testuam secilin modul duke përdorur kode të pavarura dhe më pas i kombinuam të gjitha në një dhe kontrolluam lëvizjen e rrotave dhe krahëve duke përdorur një modul bluetooth.

Hapi 4: Raspberry Pi dhe Njohja e Imazhit

Raspberry Pi dhe Njohja e Imazhit
Raspberry Pi dhe Njohja e Imazhit
Raspberry Pi dhe Njohja e Imazhit
Raspberry Pi dhe Njohja e Imazhit

Njohja e Imazheve kryhet duke përdorur një Kamera USB dhe Raspberry Pi.

Për këtë, do t'ju duhet të instaloni bibliotekën OPEN CV në Pi tuaj.

Ju mund ta bëni atë nga këtu-https://github.com/jabelone/OpenCV-for-Pi

Atëherë do t'ju duhet të bëni njohjen e figurës duke përdorur kaskadën haar.

Ju mund ta bëni këtë nga këtu -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Pasi studiova lidhjen e mësipërme dhe pas kësaj, unë kam bërë disa ndryshime në kodin përfundimtar që kam përdorur që po ngjis më poshtë -

GJENERATORI I TAT DHNAVE:

importcv2

kamera = cv2. VideoCapture (0)

detektor = cv2. CascadeClassifier ('Klasifikuesit/fytyra.xml')

i = 0

kompensuar = 50

emri = raw_input ('shkruani id -in tuaj')

ndërsa e vërtetë:

ret, im = cam.read ()

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

fytyrat = detektor.detectMultiScale (gri, shkallaFaktor = 1.2, minFqinjët = 5, minSize = (100, 100), flamuj = cv2. CASCADE_SCALE_IMAGE)

për (x, y, w, h) në fytyra:

i = i+1

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

cv2. drejtkëndësh (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])

nëse cv2.waitKey (100) & 0xFF == ord ('q'):

pushim

# pushim nëse numri i mostrës është më shumë se 20

elif (i> 20):

pushim

kamera. lirimi ()

cv2.destroyAllWindows ()

Do të krijojë një grup të fotografive tuaja që do të përdoren për vërtetim.

TRAJNER:

importcv2, os

importoni numpy si np

nga Imazhi i importit PIL

njohës = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Klasifikuesit/fytyra.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

shteg = 'dataSet'

def get_images_and_labels (shtegu):

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

# imazhe do të përmbajnë imazhe të fytyrës

imazhe =

# etiketa do të përmbajë etiketën që i është caktuar imazhit

etiketat =

për image_path në image_paths:

# Lexoni imazhin dhe shndërrohuni në shkallë gri

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

# Shndërroni formatin e figurës në një grup numpy

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

# Merrni etiketën e figurës

nbr = int (os.path.split (image_path) [-1].split (".") [1].zëvendësim ("fytyrë-", ""))

#nbr = int (''. bashkoj (str (ord (c)) për c në nbr))

shtyp nbr

# Zbuloni fytyrën në imazh

fytyrat = faceCascade.detectMultiScale (imazhi)

# Nëse fytyra zbulohet, bashkojeni fytyrën me imazhet dhe etiketën me etiketat

për (x, y, w, h) në fytyra:

imazhet.shtoj (imazhi [y: y + h, x: x + w])

etiketat. shtojca (nbr)

cv2.imshow ("Shtimi i fytyrave në grupin e tranzicionit …", imazhi [y: y + h, x: x + w])

cv2.waitKelës (10)

# ktheni listën e imazheve dhe listën e etiketave

ktheni imazhet, etiketat

imazhe, etiketa = merrni_images_and_labels (shteg)

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

cv2.waitKy (1)

njohës.tren (imazhe, np. array (etiketa))

njohës.save ('trainer/trainer.yml')

cv2.destroyAllWindows ()

DETECTOR

importcv2

importoni numpy si np

import os

c = 0

njohës = cv2.face.createLBPHFaceRecognizer ()

njohës. ngarkim ('trainer/trainer.yml')

cascadePath = "Klasifikuesit/fytyra.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

kamera = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

shkalla e shkrimit = 1

fontcolor = (255, 255, 255)

ndërsa e vërtetë:

ret, im = cam.read ()

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

fytyrat = faceCascade.detectMultiScale (gri, 1.2, 5)

për (x, y, w, h) në fytyra:

cv2. drejtkëndësh (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

Id = njohësi.parashikimi (gri [y: y+h, x: x+w])

nëse (Id <70):

nëse (Id == 1):

Id = "Shashank"

elif (Id == 2):

nëse (c == 0):

Id = "Shivam"

c = c+1

os.system ("spike 'Welcome Shivam Access Granted'")

tjeter:

Id = "Shivam"

tjeter:

Id = "E panjohur"

cv2.putText (im, str (Id), (x, y+h), font font, shkronja shkallë, fontcolor)

cv2.imshow ('im', im)

nëse cv2.waitKey (10) & 0xFF == ord ('q'):

pushim

kamera. lirimi ()

cv2.destroyAllWindows ()

Hapi 5: LCD dhe altoparlanti

Kam përdorur gjithashtu një ekran LED I2C dhe një altoparlant.

LED kontrollohet përmes Arduino Mega dhe kodi i tij jepet në kodin përfundimtar.

Për Speaker, ajo është e lidhur me Raspberry Pi dhe përdor eSpeak Utility.

Ju mund të gjeni referencën e tij këtu-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Hapi 6: Hapat e fundit

Mblidhni gjithçka dhe përgatituni për goditjen.

Recommended: