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, Studeni
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) Kotači - kojima se može upravljati pomoću istosmjernih motora.

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

4) Glava - Glavom se može upravljati radi različitih 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. Motori istosmjerne struje -2
  7. L293D -1
  8. Baterija - 1
  9. Kotači -2
  10. Kotačići - 2

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

Korak 2: Građa tijela

Građa tijela
Građa tijela

Karoserija će biti izrađena od lakih aluminijskih četvrtastih š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 sa stražnje strane 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 jedno 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 izmjene 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 istina:

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

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

pauza

# break ako je uzorak veći od 20

elif (i> 20):

pauza

cam.release ()

cv2.destroyAllWindows ()

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

TRENER:

importcv2, os

uvoz numpy kao np

iz PIL -a uvoz slike

prepoznavač = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Klasifikatori/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'set podataka'

def get_images_and_labels (put):

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

# slika će sadržavati slike lica

slike =

# oznake će sadržavati oznaku dodijeljenu slici

oznake =

za image_path u image_paths:

# Pročitajte sliku i pretvorite je u nijanse 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))

ispis br

# Prepoznajte lice na slici

lica = faceCascade.detectMultiScale (slika)

# Ako se detektira lice, 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)

# vratiti popis slika i popis oznaka

povratne slike, naljepnice

slike, oznake = get_images_and_labels (put)

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

uvoz 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

fontboja = (255, 255, 255)

dok je istina:

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

ako (Id <70):

ako (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)

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

pauza

cam.release ()

cv2.destroyAllWindows ()

Korak 5: LCD i zvučnik

Također sam koristio I2C LED zaslon i zvučnik.

LED dioda se kontrolira putem Arduino Mega, a njezin je kod dat u konačnom kodu.

Za Speaker, povezan je s Raspberry Pi i koristi pomoćni program eSpeak.

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čeni: