Sisukord:

NAIN 1.0 - põhiline humanoidrobot Arduino abil: 6 sammu
NAIN 1.0 - põhiline humanoidrobot Arduino abil: 6 sammu

Video: NAIN 1.0 - põhiline humanoidrobot Arduino abil: 6 sammu

Video: NAIN 1.0 - põhiline humanoidrobot Arduino abil: 6 sammu
Video: SKR 1.4 - Definitive User Guide 2024, Juuli
Anonim
NAIN 1.0 - põhiline humanoidrobot, mis kasutab Arduino
NAIN 1.0 - põhiline humanoidrobot, mis kasutab Arduino

Nain 1.0-l on põhimõtteliselt 5 eemaldatavat moodulit-

1) Arm - mida saab juhtida servode kaudu.

2) Rattad - mida saab juhtida alalisvoolumootoritega.

3) Jalg - Nain saab liikumiseks rataste või jalgade vahel vahetada.

4) Pea - selle pead saab juhtida erinevate noogutuste jaoks.

5) Kaameramoodul- mida saab liidestada näotuvastuse jaoks.

Koos sellega saab NAIN kasutajatega rääkida ja nendega suhelda ning saab teile aega näidata oma sisseehitatud kella järgi. Sellel on juhtmevaba juhtimine, kasutades Wi-Fi /Bluetoothi.

Samm: vajalikud komponendid

Vajalikud komponendid
Vajalikud komponendid
Vajalikud komponendid
Vajalikud komponendid
Vajalikud komponendid
Vajalikud komponendid
  1. Servomootorid -4
  2. Arduino Mega - 1
  3. Vaarika Pi - 1
  4. USB -kaamera -1
  5. Kõlar -1
  6. DC mootorid -2
  7. L293D -1
  8. Aku - 1
  9. Rattad -2
  10. Kastirattad - 2

Koos nendega vajate alumiiniumist ruudukujulisi ribasid, et kere ja kruvid ja mutrid korralikult kokku panna.

2. samm: kehaehitus

Keha struktuur
Keha struktuur

Kere konstruktsioon on valmistatud kergetest alumiiniumist ruudukujulistest vardadest, mis aitavad seda hõlpsalt kokku panna.

Praeguse seisuga pange need kokku, nagu joonisel näidatud, ja lõigake välja ka sobivad ruumid servomootorite külge kinnitamiseks.

Altpoolt kinnitage kuusnurkne puidust alus.

Puidust aluse alla kinnitage alalisvoolumootorid ja rattad, nagu me teeme mis tahes rida järgiva roboti puhul.

Huvitav on see, et lisage kaks ratast- üks roboti esiküljel ja teine taga.

Samm: juhtmestik ja kodeerimine

Juhtmed ja kodeerimine
Juhtmed ja kodeerimine
Juhtmed ja kodeerimine
Juhtmed ja kodeerimine

Erinevate moodulite ühendamiseks vaadake selles osas lisatud koode.

Esiteks testisime igat moodulit eraldiseisvate koodide abil ja seejärel ühendasime need kõik ühes ning kontrollisime rataste ja relvade liikumist bluetooth mooduli abil.

4. samm: Vaarika Pi ja pildituvastus

Vaarika Pi ja pildituvastus
Vaarika Pi ja pildituvastus
Vaarika Pi ja pildituvastus
Vaarika Pi ja pildituvastus

Pildituvastus toimub USB -kaamera ja Raspberry Pi abil.

Selleks peate oma Pi -le installima OPEN CV kogu.

Seda saate teha siit-https://github.com/jabelone/OpenCV-for-Pi

Seejärel peate pildituvastuse tegema, kasutades haar kaskaadi.

Seda saate teha siit -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Pärast ülaltoodud lingi uurimist ja selle järgset muutmist olen kasutanud lõplikus koodis, mille ma allpool kleepin -

DATASET GENERATOR:

importcv2

cam = cv2. VideoCapture (0)

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

i = 0

nihe = 50

name = raw_input ('sisestage oma ID')

kuigi tõsi:

ret, im = cam.read ()

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

näod = detektor.detectMultiScale (hall, scaleFactor = 1,2, minNaabrid = 5, minSize = (100, 100), lipud = cv2. CASCADE_SCALE_IMAGE)

(x, y, w, h) nägude puhul:

i = i+1

cv2.imwrite ("dataSet/nägu."+nimi+'.'+str (i)+".jpg", hall [y-offset: y+h+offset, x-offset: x+w+offset])

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

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

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

murda

# murda, kui proovi number on suurem kui 20

elif (i> 20):

murda

cam.release ()

cv2.destroyAllWindows ()

See loob teie fotodest andmekogumi, mida kasutatakse autentimiseks.

KOOLITAJA:

importcv2, os

import numpy np -na

PIL -i impordipildilt

äratundja = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (tee):

image_paths = [os.path.join (tee, f) f jaoks os.listdir (tee)]

# pilti sisaldab näopilte

pildid =

# labels will sisaldab pildile määratud silti

sildid =

image_path jaoks image_paths:

# Lugege pilti ja teisendage see halltoonidesse

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

# Teisendage pildivorming numbrimassiiviks

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

# Hankige pildi silt

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

#nbr = int ("". liitu (str (ord (c)) c jaoks in nbr))

trükk nr

# Tuvastage pildil olev nägu

näod = faceCascade.detectMultiScale (pilt)

# Kui nägu tuvastatakse, lisage nägu piltidele ja silt siltidele

(x, y, w, h) nägude puhul:

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

labels.append (nbr)

cv2.imshow ("Nägude lisamine trennikomplekti …", pilt [y: y + h, x: x + w])

cv2.waitKey (10)

# tagastage piltide ja siltide loend

tagastada pilte, silte

pildid, sildid = get_images_and_labels (tee)

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

cv2.waitKey (1)

tunnistaja.treen (pildid, np.massiiv (sildid))

tunnistaja.save ('koolitaja/koolitaja.yml')

cv2.destroyAllWindows ()

DETEKTOR

importcv2

import numpy np -na

import os

c = 0

äratundja = cv2.face.createLBPHFaceRecognizer ()

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

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontide skaala = 1

fontcolor = (255, 255, 255)

kuigi tõsi:

ret, im = cam.read ()

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

näod = faceCascade.detectMultiScale (hall, 1,2, 5)

(x, y, w, h) nägude puhul:

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

Id = äratundja.prognoos (hall [y: y+h, x: x+w])

kui (Id <70):

kui (Id == 1):

Id = "Shashank"

elif (Id == 2):

kui (c == 0):

Id = "Shivam"

c = c+1

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

muidu:

Id = "Shivam"

muidu:

Id = "Tundmatu"

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

cv2.imshow ('im', im)

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

murda

cam.release ()

cv2.destroyAllWindows ()

Samm: LCD ja kõlar

Olen kasutanud ka I2C LED -ekraani ja kõlarit.

LED -i juhitakse Arduino Mega kaudu ja selle kood on antud lõplikus koodis.

Kõlari jaoks on see ühendatud Raspberry Pi -ga ja kasutab utiliiti eSpeak.

Selle viite leiate siit-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

6. samm: viimased sammud

Pange kõik kokku ja valmistuge pauguks.

Soovitan: