Orodha ya maudhui:

NAIN 1.0 - Robot ya Kimsingi ya Humanoid Kutumia Arduino: Hatua 6
NAIN 1.0 - Robot ya Kimsingi ya Humanoid Kutumia Arduino: Hatua 6

Video: NAIN 1.0 - Robot ya Kimsingi ya Humanoid Kutumia Arduino: Hatua 6

Video: NAIN 1.0 - Robot ya Kimsingi ya Humanoid Kutumia Arduino: Hatua 6
Video: Я ПРЕВРАТИЛСЯ В МЕГА СПИКЕРМЕНА НА 24 ЧАСА! УГАР И БЕЗУМИЕ В Garry`s Mod 2024, Julai
Anonim
NAIN 1.0 - Robot ya Msingi ya Humanoid Kutumia Arduino
NAIN 1.0 - Robot ya Msingi ya Humanoid Kutumia Arduino

Tena 1.0 itakuwa na moduli 5 zinazoweza kutolewa-

1) Mkono - ambayo inaweza kudhibitiwa kupitia servos.

2) Magurudumu - ambayo yanaweza kudhibitiwa na motors za dc.

3) Mguu - Naini itaweza kubadili kati ya magurudumu au miguu kwa harakati.

4) Kichwa - Kichwa chake kinaweza kudhibitiwa kwa nods anuwai.

5) Moduli ya Kamera- ambayo inaweza kuingiliwa kwa Ufikiaji wa Utambuzi wa Uso.

Pamoja na hii NAIN itaweza kuzungumza na kuingiliana na watumiaji na inaweza kukuonyesha wakati kwa saa yake iliyojengwa. Itakuwa na udhibiti wa wireless kutumia Wi-fi / Bluetooth.

Hatua ya 1: Vipengele vinahitajika

Vipengele vinahitajika
Vipengele vinahitajika
Vipengele vinahitajika
Vipengele vinahitajika
Vipengele vinahitajika
Vipengele vinahitajika
  1. Servo Motors -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. Kamera ya Usb -1
  5. Spika -1
  6. DC Motors -2
  7. L293D -1
  8. Ufungashaji wa Battery - 1
  9. Magurudumu -2
  10. Gurudumu za Castor - 2

Pamoja na haya utahitaji vipande vya mraba vya aluminium ili kufanya mwili na viwiko na karanga kuzilingana vizuri.

Hatua ya 2: Muundo wa Mwili

Muundo wa Mwili
Muundo wa Mwili

Muundo wa mwili utatengenezwa na fimbo za mraba nyepesi za alumini ambazo zitasaidia katika kukusanyika kwa urahisi.

Kuanzia sasa wakusanye kama inavyoonyeshwa kwenye takwimu na pia kata nafasi sahihi kwa motors za servo kushikamana mikononi.

Ambatanisha msingi wa mbao wa hexagonal chini.

Chini ya msingi wa mbao, ambatisha motors za DC na magurudumu kama tunavyofanya kwenye robot yoyote ya mfuatiliaji.

Kushangaza, Ongeza magurudumu mawili ya castor- moja mbele na nyingine nyuma ya roboti.

Hatua ya 3: Wiring na Coding

Wiring na Uwekaji Coding
Wiring na Uwekaji Coding
Wiring na Uwekaji Coding
Wiring na Uwekaji Coding

Kuweka waya kwenye moduli tofauti rejea nambari zilizoambatanishwa katika sehemu hii.

Kwanza tulijaribu kila moduli kwa kutumia nambari za kusimama pekee na kisha tukaunganisha zote moja na kudhibiti mwendo wa magurudumu na Silaha kwa kutumia moduli ya Bluetooth.

Hatua ya 4: Raspberry Pi na Utambuzi wa Picha

Pi Raspberry na Utambuzi wa Picha
Pi Raspberry na Utambuzi wa Picha
Pi Raspberry na Utambuzi wa Picha
Pi Raspberry na Utambuzi wa Picha

Utambuzi wa Picha unafanywa kwa kutumia Kamera ya USB na Raspberry Pi.

Kwa hilo, utahitaji kusanikisha maktaba ya OPEN CV kwenye Pi yako.

Unaweza kufanya hivyo kutoka hapa -

Halafu utahitaji kutekeleza utambuzi wa picha ukitumia mtiririko wa haar.

Unaweza kufanya hivyo kutoka hapa -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Baada ya kusoma kiunga hapo juu na kufuata hiyo, nimefanya mabadiliko katika nambari ya mwisho ambayo nimetumia ambayo ninabandika hapa chini -

GENERETA YA DASASET:

kuagiza cv2

cam = cv2. Ukamataji wa Video (0)

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

i = 0

kukabiliana = 50

name = raw_input ('ingiza kitambulisho chako')

wakati Kweli:

ret, im = cam.read ()

kijivu = cv2.cvt Rangi (im, cv2. COLOR_BGR2GRAY)

nyuso = detector.detectMultiScale (kijivu, scaleFactor = 1.2, min Majirani = 5, minSize = (100, 100), bendera = cv2. CASCADE_SCALE_IMAGE)

kwa (x, y, w, h) katika nyuso:

i = i + 1

cv2.imwrite ("dataSet / uso." + jina + '.' + str (i) + ".jpg", kijivu [y-offset: y + h + offset, x-offset: x + w + offset])

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

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

kuvunja

# mapumziko ikiwa nambari ya sampuli ni zaidi ya 20

elif (i> 20):

kuvunja

cam. tafadhali ()

cv2.destroyAll Windows ()

Itaunda seti ya picha zako ambazo zitatumika kwa uthibitishaji.

MFUNZO:

importcv2, os

kuagiza numpy kama np

kutoka PIL kuagiza Picha

kitambuzi = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Classifiers / face.xml"

usoCascade = cv2. CascadeClassifier (CascadePath);

njia = 'dataSet'

def kupata_images_and_labels (njia):

image_paths = [os.path.join (path, f) for f in os.listdir (path)]

Picha # zina picha za uso

picha =

Maandiko ya # yana lebo ambayo imepewa picha

lebo =

kwa njia ya picha katika njia za picha:

# Soma picha na ubadilishe kuwa kijivujivu

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

# Badilisha muundo wa picha kuwa safu ya numpy

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

# Pata lebo ya picha hiyo

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

# nbr = int ( jiunge (str (ord (c)) kwa c katika nbr))

chapa nbr

# Gundua uso kwenye picha

nyuso = usoCascade.detectMultiScale (picha)

# Ikiwa uso umegunduliwa, ingiza uso kwa picha na lebo kwenye lebo

kwa (x, y, w, h) katika nyuso:

picha. tumia (picha [y: y + h, x: x + w])

lebo.append (nbr)

cv2.imshow ("Kuongeza nyuso kwa kuweka traning …", picha [y: y + h, x: x + w])

cv2. Subiri (10)

# kurudisha orodha ya picha na orodha ya lebo

kurudisha picha, maandiko

picha, lebo = pata_picha_na_lababu (njia)

cv2.imshow ('mtihani', picha [0])

cv2.waitKey (1)

treni ya kutambua (picha, np.raray (lebo))

kitambuzi.okoa ('mkufunzi / mkufunzi.yml')

cv2.destroyAll Windows ()

DETEKTA

kuagiza cv2

kuagiza numpy kama np

kuagiza os

c = 0

kitambuzi = cv2.face.createLBPHFaceRecognizer ()

kitambuzi. mzigo ('mkufunzi / mkufunzi.yml')

cascadePath = "Classifiers / face.xml"

usoCascade = cv2. CascadeClassifier (CascadePath);

cam = cv2. Ukamataji wa Video (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

rangi ya rangi = (255, 255, 255)

wakati Kweli:

ret, im = cam.read ()

kijivu = cv2.cvt Rangi (im, cv2. COLOR_BGR2GRAY)

nyuso = usoCascade.detectMultiScale (kijivu, 1.2, 5)

kwa (x, y, w, h) katika nyuso:

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

Utabiri wa kitambulisho. Tabiri (kijivu [y: y + h, x: x + w])

ikiwa (Id <70):

ikiwa (Id == 1):

Id = "Shashank"

elif (Id == 2):

ikiwa (c == 0):

Id = "Shivam"

c = c + 1

mfumo."

mwingine:

Id = "Shivam"

mwingine:

Id = "Haijulikani"

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

cv2.imshow ('im', im)

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

kuvunja

cam. tafadhali ()

cv2.destroyAll Windows ()

Hatua ya 5: LCD na Spika

Pia nimetumia I2C LED Display na spika.

LED inadhibitiwa kupitia Arduino Mega na nambari yake imepewa nambari ya mwisho.

Kwa Spika, imeunganishwa na Raspberry Pi na hutumia eSpeak Utility.

Unaweza kupata kumbukumbu yake hapa -

Hatua ya 6: Hatua za Mwisho

Kukusanya kila kitu na uwe tayari kwa bang.

Ilipendekeza: