Sadržaj:

NAIN 1.0 - osnovni humanoidni robot koji koristi Arduino: 6 koraka
NAIN 1.0 - osnovni humanoidni robot koji koristi Arduino: 6 koraka

Video: NAIN 1.0 - osnovni humanoidni robot koji koristi Arduino: 6 koraka

Video: NAIN 1.0 - osnovni humanoidni robot koji koristi Arduino: 6 koraka
Video: Высокая плотность 2022 2024, Novembar
Anonim
NAIN 1.0 - osnovni humanoidni robot koji koristi Arduino
NAIN 1.0 - osnovni humanoidni robot koji koristi Arduino

Nain 1.0 će u osnovi imati 5 odvojivih modula-

1) Ruka - kojom se može upravljati putem servo pogona.

2) Točkovi - kojima se može upravljati pomoću jednosmernih motora.

3) Noga - Nain će se moći prebacivati između kotača ili nogu radi kretanja.

4) Glava - Glavom se može upravljati za različita klimanja.

5) Modul kamere- koji se može povezati za pristup prepoznavanju lica.

Uz ovaj NAIN će moći razgovarati i komunicirati s korisnicima te vam može pokazati vrijeme pomoću ugrađenog sata. Imat će bežično upravljanje putem Wi-Fi /Bluetooth-a.

Korak 1: Potrebne komponente

Potrebne komponente
Potrebne komponente
Potrebne komponente
Potrebne komponente
Potrebne komponente
Potrebne komponente
  1. Servo motori -4
  2. Arduino Mega - 1
  3. Malina Pi - 1
  4. USB kamera -1
  5. Zvučnik -1
  6. DC motori -2
  7. L293D -1
  8. Baterija - 1
  9. Točkovi -2
  10. Kotačići - 2

Zajedno s ovim trebat će vam aluminijske kvadratne trake kako bi tijelo i vijci i matice pravilno pristajali.

Korak 2: Građa tijela

Struktura tela
Struktura tela

Struktura karoserije bit će izrađena od lakih aluminijskih kvadratnih šipki koje će joj pomoći pri jednostavnom sastavljanju.

Do sada ih sastavite kao što je prikazano na slici, a također izrežite odgovarajuće prostore za postavljanje servo motora u ruke.

Pričvrstite šesterokutnu drvenu podlogu na dno.

Ispod drvene podloge pričvrstite istosmjerne motore i kotače kao što to činimo u bilo kojem robotu za praćenje linija.

Zanimljivo je da dodate dva kotača- jedan sprijeda, a drugi straga robota.

Korak 3: Ožičenje i kodiranje

Ožičenje i kodiranje
Ožičenje i kodiranje
Ožičenje i kodiranje
Ožičenje i kodiranje

Za povezivanje različitih modula pogledajte kodove dodane u ovom dijelu.

Prvo smo testirali svaki modul pomoću samostalnih kodova, a zatim smo ih sve spojili u jedan i kontrolirali kretanje kotača i ruke pomoću bluetooth modula.

Korak 4: Raspberry Pi i prepoznavanje slike

Raspberry Pi i prepoznavanje slike
Raspberry Pi i prepoznavanje slike
Raspberry Pi i prepoznavanje slike
Raspberry Pi i prepoznavanje slike

Prepoznavanje slike vrši se pomoću USB kamere i Raspberry Pi.

Za to ćete morati instalirati OTVORENU biblioteku životopisa na svoj Pi.

To možete učiniti odavde-https://github.com/jabelone/OpenCV-for-Pi

Tada ćete morati izvršiti prepoznavanje slike pomoću haar kaskade.

To možete učiniti odavde -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Nakon što sam proučio gornju vezu i slijedio to, napravio sam neke promjene u konačnom kodu koji sam koristio, a koji lijepim ispod -

GENERATOR PODATAKA:

importcv2

cam = cv2. VideoCapture (0)

detektor = cv2. CascadeClassifier ('Klasifikatori/face.xml')

i = 0

pomak = 50

name = raw_input ('unesite svoj ID')

dok je True:

ret, im = cam.read ()

siva = cv2.cvtBoja (im, cv2. COLOR_BGR2GRAY)

lica = detektor.detectMultiScale (sivo, scaleFactor = 1.2, minNeighbors = 5, minSize = (100, 100), zastavice = cv2. CASCADE_SCALE_IMAGE)

za (x, y, w, h) u licima:

i = i+1

cv2.imwrite ("set podataka/lice."+ime+'.'+str (i)+".jpg", sivo [y-pomak: y+h+pomak, x-pomak: x+w+pomak])

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

cv2.imshow ('im', im [y-pomak: y+h+pomak, x-pomak: x+w+pomak])

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

break

# prekid ako je uzorak veći od 20

elif (i> 20):

break

cam.release ()

cv2.destroyAllWindows ()

To će stvoriti skup vaših fotografija koje će se koristiti za provjeru autentičnosti.

TRENER:

importcv2, os

uvoz numpy kao np

from PIL import Image

prepoznavač = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Klasifikatori/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'set podataka'

def get_images_and_labels (putanja):

image_paths = [os.path.join (path, f) za f u os.listdir (path)]

# slika će sadržavati slike lica

slike =

# naljepnica će sadržavati oznaku dodijeljenu slici

oznake =

za image_path u image_paths:

# Pročitajte sliku i pretvorite je u sive

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

# Pretvorite format slike u numpy niz

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

# Dobijte oznaku slike

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

#nbr = int (''. join (str (ord (c)) za c u nbr))

print br

# Prepoznajte lice na slici

lica = faceCascade.detectMultiScale (slika)

# Ako se lice otkrije, dodajte lice slikama, a oznaku oznakama

za (x, y, w, h) u licima:

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

labels.append (nbr)

cv2.imshow ("Dodavanje lica u set za praćenje …", slika [y: y + h, x: x + w])

cv2.waitKey (10)

# vraća listu slika i oznaka

povratne slike, naljepnice

slike, oznake = get_images_and_labels (putanja)

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

cv2.waitKey (1)

prepoznavač.train (slike, np.array (oznake))

prepoznavač.save ('trener/trener.yml')

cv2.destroyAllWindows ()

DETEKTOR

importcv2

uvoz numpy kao np

import os

c = 0

prepoznavač = cv2.face.createLBPHFaceRecognizer ()

prepoznavač.load ('trener/trener.yml')

cascadePath = "Klasifikatori/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

font font = 1

fontcolor = (255, 255, 255)

dok je True:

ret, im = cam.read ()

siva = cv2.cvtBoja (im, cv2. COLOR_BGR2GRAY)

lica = faceCascade.detectMultiScale (sivo, 1.2, 5)

za (x, y, w, h) u licima:

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

Id = prepoznavač.predvidi (sivo [y: y+h, x: x+w])

if (Id <70):

if (Id == 1):

Id = "Shashank"

elif (Id == 2):

ako (c == 0):

Id = "Shivam"

c = c+1

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

drugo:

Id = "Shivam"

drugo:

Id = "Nepoznato"

cv2.putText (im, str (Id), (x, y+h), font fonta, skala slova, boja fonta)

cv2.imshow ('im', im)

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

break

cam.release ()

cv2.destroyAllWindows ()

Korak 5: LCD i zvučnik

Koristio sam i I2C LED ekran i zvučnik.

LED dioda se kontrolira putem Arduino Mega i njen kôd je dat u konačnom kodu.

Za Speaker, povezan je s Raspberry Pi i koristi eSpeak Utility.

Referencu možete pronaći ovdje-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Korak 6: Završni koraci

Sastavite sve i spremite se za prasak.

Preporučuje se: