Kazalo:

NAIN 1.0 - osnovni humanoidni robot z uporabo Arduina: 6 korakov
NAIN 1.0 - osnovni humanoidni robot z uporabo Arduina: 6 korakov

Video: NAIN 1.0 - osnovni humanoidni robot z uporabo Arduina: 6 korakov

Video: NAIN 1.0 - osnovni humanoidni robot z uporabo Arduina: 6 korakov
Video: Высокая плотность 2022 2024, Julij
Anonim
NAIN 1.0 - osnovni humanoidni robot, ki uporablja Arduino
NAIN 1.0 - osnovni humanoidni robot, ki uporablja Arduino

Nain 1.0 bo imel v osnovi 5 snemljivih modulov-

1) Roka - ki jo je mogoče upravljati prek servomotorjev.

2) Kolesa - ki jih je mogoče upravljati z enosmernimi motorji.

3) Noga - Nain bo lahko premikal med kolesi ali nogami za gibanje.

4) Glava - Glavo je mogoče nadzorovati za različne prikimavanja.

5) Modul kamere- ki ga je mogoče povezati za dostop do prepoznavanja obrazov.

Poleg tega bo NAIN lahko govoril in komuniciral z uporabniki ter vam lahko pokazal čas z vgrajeno uro. Imel bo brezžični nadzor prek Wi-Fi /Bluetooth.

Korak: Potrebne komponente

Potrebne komponente
Potrebne komponente
Potrebne komponente
Potrebne komponente
Potrebne komponente
Potrebne komponente
  1. Servo motorji -4
  2. Arduino Mega - 1
  3. Malina Pi - 1
  4. Usb kamera -1
  5. Zvočnik -1
  6. Enosmerni motorji -2
  7. L293D -1
  8. Baterija - 1
  9. Kolesa -2
  10. Kolesca - 2

Skupaj s temi boste potrebovali aluminijaste kvadratne trakove, da bo ohišje ter vijaki in matice ustrezno nameščeni.

2. korak: Struktura telesa

Struktura telesa
Struktura telesa

Karoserijska konstrukcija bo izdelana iz lahkih aluminijastih kvadratnih palic, ki bodo pomagale pri enostavni montaži.

Zdaj jih sestavite, kot je prikazano na sliki, in izrežite tudi ustrezne prostore za pritrditev servo motorjev v roke.

Spodaj pritrdite šesterokotno leseno podlago.

Pod leseno podlago pritrdite enosmerne motorje in kolesa, kot to počnemo pri katerem koli robotu za sledenje linijam.

Zanimivo je, da dodate dva kolesca- eno spredaj in drugo na zadnji strani robota.

3. korak: Ožičenje in kodiranje

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

Za povezovanje različnih modulov si oglejte kode, priložene v tem delu.

Najprej smo vsak modul preizkusili s samostojnimi kodami, nato pa smo jih združili v enem in s pomočjo modula Bluetooth nadzirali gibanje koles in orožja.

4. korak: Raspberry Pi in prepoznavanje slik

Raspberry Pi in prepoznavanje slik
Raspberry Pi in prepoznavanje slik
Raspberry Pi in prepoznavanje slik
Raspberry Pi in prepoznavanje slik

Prepoznavanje slik se izvede s kamero USB in Raspberry Pi.

V ta namen boste morali v svoj Pi namestiti knjižnico OPEN CV.

To lahko storite tukaj-https://github.com/jabelone/OpenCV-for-Pi

Potem boste morali izvesti prepoznavanje slik z uporabo haar kaskade.

To lahko storite tukaj -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Ko sem preučil zgornjo povezavo in sledil temu, sem v končni kodi, ki sem jo uporabil, naredil nekaj sprememb, ki jih prilepim spodaj -

GENERATOR PODATKOV:

importcv2

cam = cv2. VideoCapture (0)

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

i = 0

odmik = 50

name = raw_input ('vnesite svoj ID')

medtem ko je res:

ret, im = cam.read ()

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

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

za (x, y, w, h) v obrazih:

i = i+1

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

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

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

prekiniti

# prelom, če je številka vzorca večja od 20

elif (i> 20):

prekiniti

cam.release ()

cv2.destroyAllWindows ()

Ustvaril bo skupino vaših fotografij, ki bodo uporabljene za preverjanje pristnosti.

TRENER:

importcv2, os

uvoz numpy kot np

iz uvozne slike PIL

prepoznavalnik = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Klasifikatorji/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'set podatkov'

def get_images_and_labels (pot):

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

# slike bodo vsebovale slike obrazov

slike =

# oznaka bo vsebovala oznako, ki je dodeljena sliki

oznake =

za image_path v image_paths:

# Preberite sliko in jo pretvorite v sivine

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

# Pretvorite obliko slike v matriko numpy

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

# Pridobite oznako slike

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

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

natisni št

# Zaznajte obraz na sliki

obrazov = faceCascade.detectMultiScale (slika)

# Če zazna obraz, dodajte obraz slikam, oznako pa nalepkam

za (x, y, w, h) v obrazih:

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

labels.append (nbr)

cv2.imshow ("Dodajanje obrazov v sklop za treniranje …", slika [y: y + h, x: x + w])

cv2.waitKey (10)

# vrne seznam slik in seznam oznak

povratne slike, nalepke

slike, oznake = get_images_and_labels (pot)

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

cv2.waitKey (1)

prepoznaval.train (slike, np.array (oznake))

prepoznavnik.save ('trener/trener.yml')

cv2.destroyAllWindows ()

DETEKTOR

importcv2

uvoz numpy kot np

uvoz os

c = 0

prepoznavalnik = cv2.face.createLBPHFaceRecognizer ()

prepoznavnik.load ('trener/trener.yml')

cascadePath = "Klasifikatorji/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

pisava = 1

fontcolor = (255, 255, 255)

medtem ko je res:

ret, im = cam.read ()

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

obrazov = faceCascade.detectMultiScale (siva, 1.2, 5)

za (x, y, w, h) v obrazih:

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

Id = prepoznavalec.predict (sivo [y: y+h, x: x+w])

če (Id <70):

če (Id == 1):

Id = "Shashank"

elif (Id == 2):

če (c == 0):

Id = "Shivam"

c = c+1

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

drugače:

Id = "Shivam"

drugače:

Id = "Neznano"

cv2.putText (im, str (Id), (x, y+h), pisava, pisava, barva pisave)

cv2.imshow ('im', im)

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

prekiniti

cam.release ()

cv2.destroyAllWindows ()

5. korak: LCD in zvočnik

Uporabil sem tudi LED zaslon I2C in zvočnik.

LED se upravlja prek Arduino Mega, njegova koda pa je navedena v končni kodi.

Za Speaker je povezan z Raspberry Pi in uporablja pripomoček eSpeak.

Njegovo referenco najdete tukaj-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

Korak 6: Zadnji koraki

Vse sestavite in se pripravite na udar.

Priporočena: