Cuprins:

NAIN 1.0 - robotul uman de bază folosind Arduino: 6 pași
NAIN 1.0 - robotul uman de bază folosind Arduino: 6 pași

Video: NAIN 1.0 - robotul uman de bază folosind Arduino: 6 pași

Video: NAIN 1.0 - robotul uman de bază folosind Arduino: 6 pași
Video: Cum de a controla actuatorul folosind Arduino - Robojax 2024, Iulie
Anonim
NAIN 1.0 - robotul uman de bază folosind Arduino
NAIN 1.0 - robotul uman de bază folosind Arduino

Nain 1.0 va avea practic 5 module detașabile-

1) Braț - care poate fi controlat prin servomotoare.

2) Roți - care pot fi controlate cu motoare de curent continuu.

3) Picior - Nain va putea comuta între roți sau picioare pentru mișcare.

4) Cap - Capul său poate fi controlat pentru diverse încuviințări.

5) Modul de cameră - care poate fi interfațat pentru accesul la recunoașterea feței.

Împreună cu acest NAIN va putea vorbi și interacționa cu utilizatorii și vă poate arăta ora prin ceasul său încorporat. Va avea un control wireless folosind Wi-fi / Bluetooth.

Pasul 1: Componente necesare

Componente necesare
Componente necesare
Componente necesare
Componente necesare
Componente necesare
Componente necesare
  1. Servomotoare -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. Cameră USB -1
  5. Difuzor -1
  6. DC Motors -2
  7. L293D -1
  8. Acumulator - 1
  9. Roți -2
  10. Roți cu role - 2

Împreună cu acestea, veți avea nevoie de benzi pătrate din aluminiu pentru a face corpul și șuruburi și piulițe pentru a le potrivi corect.

Pasul 2: Structura corpului

Structura corpului
Structura corpului

Structura caroseriei va fi realizată din tije pătrate ușoare din aluminiu, care vor ajuta la asamblarea ei cu ușurință.

De acum, asamblați-le așa cum se arată în figură și, de asemenea, tăiați spațiile adecvate pentru ca servomotorele să fie atașate în brațe.

Atașați o bază hexagonală din lemn în partea de jos.

Sub baza de lemn, atașați motoare și roți de curent continuu, așa cum facem în orice robot de linie.

Interesant este că adăugați două roți - una în față și alta în spatele robotului.

Pasul 3: Cablare și codare

Cablare și codare
Cablare și codare
Cablare și codare
Cablare și codare

Pentru conectarea diferitelor module, consultați codurile atașate în această parte.

În primul rând am testat fiecare modul folosind coduri independente și apoi le-am combinat pe toate într-unul și am controlat mișcarea roților și brațelor folosind un modul bluetooth.

Pasul 4: Raspberry Pi și recunoașterea imaginii

Raspberry Pi și recunoașterea imaginii
Raspberry Pi și recunoașterea imaginii
Raspberry Pi și recunoașterea imaginii
Raspberry Pi și recunoașterea imaginii

Recunoașterea imaginii se realizează folosind o cameră USB și Raspberry Pi.

Pentru aceasta, va trebui să instalați biblioteca OPEN CV pe Pi.

Puteți face acest lucru de aici -

Apoi, va trebui să efectuați recunoașterea imaginii folosind cascada haar.

Puteți face acest lucru de aici -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

După ce am studiat linkul de mai sus și l-am urmat, am făcut câteva modificări în codul final pe care l-am folosit pe care le lipesc mai jos -

GENERATOR DE DATE:

importcv2

cam = cv2. VideoCapture (0)

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

i = 0

offset = 50

name = raw_input ('introduceți id-ul dvs.')

în timp ce este adevărat:

ret, im = cam.read ()

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

faces = detector.detectMultiScale (gri, scaleFactor = 1.2, minVecini = 5, minSize = (100, 100), steaguri = cv2. CASCADE_SCALE_IMAGE)

pentru (x, y, w, h) în fețe:

i = i + 1

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

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

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

pauză

# pauză dacă numărul eșantionului este mai mare decât 20

elif (i> 20):

pauză

cam.release ()

cv2.destroyAllWindows ()

Se va crea un set de date al fotografiilor care vor fi utilizate pentru autentificare.

ANTRENOR:

importcv2, os

import numpy ca np

din PIL import Image

recognizer = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Clasificatoare / face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cale = 'set de date'

def get_images_and_labels (cale):

image_paths = [os.path.join (cale, f) pentru f în os.listdir (cale)]

# imagini va conține imagini de față

imagini =

# etichete va conține eticheta atribuită imaginii

etichete =

pentru image_path în image_paths:

# Citiți imaginea și convertiți-o în tonuri de gri

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

# Convertiți formatul de imagine în matrice numpy

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

# Obțineți eticheta imaginii

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

# nbr = int ( . join (str (ord (c)) pentru c în nbr))

print nbr

# Detectează fața din imagine

faces = faceCascade.detectMultiScale (imagine)

# Dacă fața este detectată, atașați fața la imagini și eticheta la etichete

pentru (x, y, w, h) în fețe:

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

labels.append (nbr)

cv2.imshow ("Adăugarea fețelor la setul de traning …", imagine [y: y + h, x: x + w])

cv2.waitKey (10)

# returnează lista de imagini și lista de etichete

returnează imagini, etichete

imagini, etichete = get_images_and_labels (cale)

cv2.imshow („test”, imagini [0])

cv2.waitKey (1)

recognizer.train (imagini, np.array (etichete))

recognizer.save („trainer / trainer.yml”)

cv2.destroyAllWindows ()

DETECTOR

importcv2

import numpy ca np

import os

c = 0

recognizer = cv2.face.createLBPHFaceRecognizer ()

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

cascadePath = "Clasificatoare / face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

fontcolor = (255, 255, 255)

în timp ce este adevărat:

ret, im = cam.read ()

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

faces = faceCascade.detectMultiScale (gri, 1,2, 5)

pentru (x, y, w, h) în fețe:

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

Id = recognizer.predict (gri [y: y + h, x: x + w])

dacă (Id <70):

if (Id == 1):

Id = „Shashank”

elif (Id == 2):

dacă (c == 0):

Id = „Shivam”

c = c + 1

os.system („speak 'Welcome Shivam Access Granted'”)

altceva:

Id = „Shivam”

altceva:

Id = „Necunoscut”

cv2.putText (im, str (Id), (x, y + h), fontface, fontscale, fontcolor)

cv2.imshow ('im', im)

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

pauză

cam.release ()

cv2.destroyAllWindows ()

Pasul 5: LCD și difuzor

De asemenea, am folosit un afișaj LED I2C și un difuzor.

LED-ul este controlat prin Arduino Mega și codul său este dat în codul final.

Pentru Speaker, este conectat cu Raspberry Pi și folosește eSpeak Utility.

Puteți găsi referința aici -

Pasul 6: pașii finali

Asamblați totul și pregătiți-vă pentru bang.

Recomandat: