Obsah:

NAIN 1.0 - základný humanoidný robot využívajúci Arduino: 6 krokov
NAIN 1.0 - základný humanoidný robot využívajúci Arduino: 6 krokov

Video: NAIN 1.0 - základný humanoidný robot využívajúci Arduino: 6 krokov

Video: NAIN 1.0 - základný humanoidný robot využívajúci Arduino: 6 krokov
Video: NAIN 1.0 - The Basic Humanoid Robot using Arduino 2024, November
Anonim
NAIN 1.0 - základný humanoidný robot využívajúci Arduino
NAIN 1.0 - základný humanoidný robot využívajúci Arduino

Nain 1.0 bude mať v zásade 5 odnímateľných modulov-

1) Rameno - ktoré je možné ovládať pomocou serva.

2) Kolesá - ktoré je možné ovládať jednosmernými motormi.

3) Noha - Nain bude môcť prepínať medzi kolesami alebo nohami a pohybovať sa.

4) Hlava - Hlavu je možné ovládať rôznymi prikývnutiami.

5) Modul kamery- ktorý môže byť prepojený s prístupom k rozpoznaniu tváre.

Spolu s tým bude NAIN schopný hovoriť a komunikovať s používateľmi a môže vám ukazovať čas pomocou vstavaných hodín. Bude mať bezdrôtové ovládanie pomocou Wi-Fi /Bluetooth.

Krok 1: Potrebné súčasti

Potrebné súčasti
Potrebné súčasti
Potrebné súčasti
Potrebné súčasti
Potrebné súčasti
Potrebné súčasti
  1. Servomotory -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. USB kamera -1
  5. Reproduktor -1
  6. Jednosmerné motory -2
  7. L293D -1
  8. Batéria - 1
  9. Kolesá -2
  10. Kolieska - 2

Spolu s nimi budete potrebovať hliníkové štvorcové pásy na výrobu tela a skrutky a matice, aby ich správne zmestili.

Krok 2: Stavba tela

Stavba tela
Stavba tela

Konštrukcia tela bude vyrobená z ľahkých hliníkových štvorcových tyčí, ktoré pomôžu pri jednoduchej montáži.

Teraz ich zostavte, ako je znázornené na obrázku, a tiež vyrežte vhodné priestory na pripevnenie servomotorov k ramenám.

V spodnej časti pripevnite šesťhrannú drevenú základňu.

Pod drevenú základňu pripevnite jednosmerné motory a kolesá tak, ako to robíme v akomkoľvek robote sledovača.

Je zaujímavé, že pridajte dve kolieska- jedno vpredu a druhé na zadnej strane robota.

Krok 3: Zapojenie a kódovanie

Zapojenie a kódovanie
Zapojenie a kódovanie
Zapojenie a kódovanie
Zapojenie a kódovanie

Zapojenie rôznych modulov nájdete v kódoch pripojených v tejto časti.

Najprv sme testovali každý modul pomocou samostatných kódov a potom sme ich všetky skombinovali do jedného a pomocou bluetooth modulu sme ovládali pohyb kolies a zbraní.

Krok 4: Raspberry Pi a rozpoznávanie obrázkov

Raspberry Pi a rozpoznávanie obrázkov
Raspberry Pi a rozpoznávanie obrázkov
Raspberry Pi a rozpoznávanie obrázkov
Raspberry Pi a rozpoznávanie obrázkov

Rozpoznávanie obrazu sa vykonáva pomocou USB kamery a Raspberry Pi.

Na to budete musieť do svojho Pi nainštalovať knižnicu OPEN CV.

Môžete to urobiť odtiaľto-https://github.com/jabelone/OpenCV-for-Pi

Potom budete musieť vykonať rozpoznávanie obrazu pomocou Haar Cascade.

Môžete to urobiť tu -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Po preštudovaní vyššie uvedeného odkazu a po ňom som urobil niekoľko zmien v konečnom kóde, ktorý som použil a ktorý vkladám nižšie -

GENERÁTOR DATASETU:

importcv2

cam = cv2. VideoCapture (0)

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

i = 0

ofset = 50

name = raw_input ('zadajte svoje ID')

kým je pravda:

ret, im = cam.read ()

šedá = cv2.cvtColor (im, cv2. COLOR_BGR2GREY)

tváre = detector.detectMultiScale (sivá, scaleFactor = 1,2, minSusedia = 5, minSize = (100, 100), vlajky = cv2. CASCADE_SCALE_IMAGE)

pre (x, y, w, h) v tvárach:

i = i+1

cv2.imwrite ("sada údajov/tvár."+názov+'.'+str (i)+".jpg", sivý [y-offset: y+h+offset, x-offset: x+w+offset])

cv2. obdĺžnik (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])

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

prestávka

# break, ak je číslo vzorky viac ako 20

elif (i> 20):

prestávka

cam.release ()

cv2.destroyAllWindows ()

Vytvorí sa množina údajov vašich fotografií, ktorá sa použije na autentifikáciu.

TRÉNER:

importcv2, os

import numpy ako np

z obrázku importu PIL

rozpoznávač = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Klasifikátory/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (cesta):

image_paths = [os.path.join (cesta, f) pre f v os.listdir (cesta)]

# images bude obsahovať obrázky tváre

obrázky =

# štítky bude obsahovať štítok, ktorý je priradený k obrázku

štítky =

pre cestu_na_obrázok v_cestách_obrázkov:

# Prečítajte si obrázok a preveďte ho na stupne šedej

image_pil = Image.open (cesta_na_obrázok).convert ('L')

# Previesť formát obrázku na počet polí

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

# Získajte štítok obrázku

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

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

tlač č

# Rozpoznajte tvár na obrázku

Faces = faceCascade.detectMultiScale (obrázok)

# Ak je rozpoznaná tvár, pripojte tvár k obrázkom a štítok k menovkám

pre (x, y, w, h) v tvárach:

images.append (obrázok [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow („Pridávanie tvárí do množiny prechodov…“, obrázok [y: y + h, x: x + w])

cv2.waitKey (10)

# vrátiť zoznam obrázkov a zoznam štítkov

vrátiť obrázky, štítky

images, labels = get_images_and_labels (cesta)

cv2.imshow ('test', obrázky [0])

cv2.waitKey (1)

rozpoznávač.train (obrázky, np.array (štítky))

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

cv2.destroyAllWindows ()

DETEKTOR

importcv2

import numpy ako np

import os

c = 0

rozpoznávač = cv2.face.createLBPHFaceRecognizer ()

rozpoznávač.load ('trainer/trainer.yml')

cascadePath = "Klasifikátory/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

stupnica písma = 1

fontcolor = (255, 255, 255)

kým je pravda:

ret, im = cam.read ()

šedá = cv2.cvtColor (im, cv2. COLOR_BGR2GREY)

Faces = faceCascade.detectMultiScale (sivá, 1,2, 5)

pre (x, y, w, h) v tvárach:

cv2. obdĺžnik (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

Id = recognitionnizer.predict (sivá [y: y+h, x: x+w])

ak (Id <70):

ak (Id == 1):

Id = "Shashank"

elif (Id == 2):

ak (c == 0):

Id = "Shivam"

c = c+1

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

inak:

Id = "Shivam"

inak:

Id = "Neznámy"

cv2.putText (im, str (Id), (x, y+h), písmo, škála písma, farba písma)

cv2.imshow ('im', im)

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

prestávka

cam.release ()

cv2.destroyAllWindows ()

Krok 5: LCD a reproduktor

Použil som tiež LED displej I2C a reproduktor.

LED dióda sa ovláda prostredníctvom Arduino Mega a jej kód je uvedený v konečnom kóde.

V prípade reproduktora je spojený s Raspberry Pi a používa eSpeak Utility.

Jeho referenciu nájdete tu-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Krok 6: Posledné kroky

Zostavte všetko a pripravte sa na tresk.

Odporúča: