Sommario:

NAIN 1.0 - il robot umanoide di base che utilizza Arduino: 6 passaggi
NAIN 1.0 - il robot umanoide di base che utilizza Arduino: 6 passaggi

Video: NAIN 1.0 - il robot umanoide di base che utilizza Arduino: 6 passaggi

Video: NAIN 1.0 - il robot umanoide di base che utilizza Arduino: 6 passaggi
Video: Arduino Robot Kit 2024, Dicembre
Anonim
NAIN 1.0 - il robot umanoide di base che utilizza Arduino
NAIN 1.0 - il robot umanoide di base che utilizza Arduino

Nain 1.0 avrà fondamentalmente 5 moduli rimovibili-

1) Braccio – che può essere controllato tramite servi.

2) Ruote – che possono essere controllate con motori a corrente continua.

3) Leg – Nain sarà in grado di passare da ruote a gambe per il movimento.

4) Testa – La sua testa può essere controllata per vari cenni.

5) Modulo fotocamera- che può essere interfacciato per l'accesso al riconoscimento facciale.

Insieme a questo NAIN sarà in grado di parlare e interagire con gli utenti e può mostrarti l'ora grazie al suo orologio integrato. Avrà un controllo wireless tramite Wi-fi/Bluetooth.

Passaggio 1: componenti necessari

Componenti necessari
Componenti necessari
Componenti necessari
Componenti necessari
Componenti necessari
Componenti necessari
  1. Servomotori -4
  2. Arduino Mega - 1
  3. Lampone Pi - 1
  4. Fotocamera USB -1
  5. Altoparlante -1
  6. Motori CC -2
  7. L293D -1
  8. Pacco batteria - 1
  9. Ruote -2
  10. Rotelle - 2

Insieme a questi avrai bisogno di strisce quadrate di alluminio per realizzare il corpo e viti e dadi per adattarli correttamente.

Passaggio 2: struttura corporea

Struttura del corpo
Struttura del corpo

La struttura della carrozzeria sarà realizzata con barre quadrate in alluminio leggero che aiuteranno a montarla facilmente.

Già da ora montarli come mostrato in figura e ritagliare anche gli appositi spazi per i servomotori da agganciare nei bracci.

Attacca una base di legno esagonale nella parte inferiore.

Sotto la base in legno, collega i motori CC e le ruote come facciamo in qualsiasi robot seguace di linea.

È interessante notare che aggiungi due ruote piroettanti, una sulla parte anteriore e l'altra sul retro del robot.

Passaggio 3: cablaggio e codifica

Cablaggio e codifica
Cablaggio e codifica
Cablaggio e codifica
Cablaggio e codifica

Per cablare i vari moduli fare riferimento ai codici allegati in questa parte.

Per prima cosa abbiamo testato ogni modulo utilizzando codici standalone e poi li abbiamo combinati tutti in uno e controllato il movimento delle ruote e dei bracci utilizzando un modulo bluetooth.

Passaggio 4: Raspberry Pi e riconoscimento delle immagini

Raspberry Pi e riconoscimento delle immagini
Raspberry Pi e riconoscimento delle immagini
Raspberry Pi e riconoscimento delle immagini
Raspberry Pi e riconoscimento delle immagini

Il riconoscimento delle immagini viene eseguito utilizzando una fotocamera USB e Raspberry Pi.

Per questo, dovrai installare la libreria OPEN CV sul tuo Pi.

Puoi farlo da qui -

Quindi sarà necessario eseguire il riconoscimento delle immagini utilizzando haar cascata.

Puoi farlo da qui -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Dopo aver studiato il collegamento sopra e averlo seguito, ho apportato alcune modifiche al codice finale che ho usato che sto incollando di seguito -

GENERATORE DI DATI:

importcv2

cam = cv2. VideoCapture(0)

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

io=0

offset=50

nome=raw_input('inserisci il tuo id')

mentre vero:

ret, im =cam.read()

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

faces=detector.detectMultiScale(gray, scaleFactor=1,2, minNeighbors=5, minSize=(100, 100), flags=cv2. CASCADE_SCALE_IMAGE)

for(x, y, w, h) nelle facce:

io=i+1

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

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

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

rottura

# break se il numero del campione è maggiore di 20

elif (i>20):

rottura

cam.release()

cv2.destroyAllWindows()

Creerà un set di dati delle tue foto che verrà utilizzato per l'autenticazione.

ALLENATORE:

importcv2, os

importa numpy come np

da PIL import Immagine

riconoscitore = cv2.face.createLBPHFaceRecognizer()

cascataPath = "Classificatori/face.xml"

faceCascade = cv2. CascadeClassifier(cascadePath);

percorso = 'set di dati'

def get_images_and_labels(percorso):

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

# immagini conterranno immagini di volti

immagini =

# etichette conterrà l'etichetta assegnata all'immagine

etichette =

per percorso_immagine in percorsi_immagine:

# Leggi l'immagine e converti in scala di grigi

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

# Converti il formato dell'immagine in un array numpy

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

# Ottieni l'etichetta dell'immagine

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

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

stampa n

# Rileva il volto nell'immagine

facce = faceCascade.detectMultiScale(immagine)

# Se viene rilevato un volto, aggiungi il volto alle immagini e l'etichetta alle etichette

per (x, y, w, h) nelle facce:

immagini.append(immagine[y: y + h, x: x + w])

etichette.append(nbr)

cv2.imshow("Aggiunta di volti al set di allenamento…", image[y: y + h, x: x + w])

cv2.waitKey(10)

# restituisce l'elenco delle immagini e l'elenco delle etichette

restituire immagini, etichette

immagini, etichette = get_images_and_labels(percorso)

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

cv2.waitKey(1)

riconosciutor.train(immagini, np.array(etichette))

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

cv2.destroyAllWindows()

RIVELATORE

importcv2

importa numpy come np

importare il sistema operativo

c=0

riconoscitore = cv2.face.createLBPHFaceRecognizer()

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

cascataPath = "Classificatori/face.xml"

faceCascade = cv2. CascadeClassifier(cascadePath);

cam = cv2. VideoCapture(0)

carattere = cv2. FONT_HERSHEY_SIMPLEX

scala dei caratteri = 1

fontcolor = (255, 255, 255)

mentre vero:

ret, im =cam.read()

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

facce=faceCascade.detectMultiScale(grigio, 1.2, 5)

for(x, y, w, h) nelle facce:

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

Id = riconoscitore.predict(grigio[y:y+h, x:x+w])

se(Id<70):

if(Id==1):

Id="Shashank"

elif(Id==2):

se(c==0):

Id="Shivam"

c=c+1

os.system("espeak 'Benvenuto Shivam Accesso concesso'")

altro:

Id="Shivam"

altro:

Id="Sconosciuto"

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

cv2.imshow('io', sono)

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

rottura

cam.release()

cv2.destroyAllWindows()

Passaggio 5: LCD e altoparlante

Ho anche usato un display a LED I2C e un altoparlante.

Il LED è controllato tramite Arduino Mega e il suo codice è riportato nel codice finale.

Per Speaker, è collegato al Raspberry Pi e utilizza l'utility eSpeak.

Puoi trovare il suo riferimento qui -

Passaggio 6: passaggi finali

Assembla tutto e preparati per il botto.

Consigliato: