Բովանդակություն:

NAIN 1.0 - հիմնական մարդանման ռոբոտը, որն օգտագործում է Arduino- ն. 6 քայլ
NAIN 1.0 - հիմնական մարդանման ռոբոտը, որն օգտագործում է Arduino- ն. 6 քայլ

Video: NAIN 1.0 - հիմնական մարդանման ռոբոտը, որն օգտագործում է Arduino- ն. 6 քայլ

Video: NAIN 1.0 - հիմնական մարդանման ռոբոտը, որն օգտագործում է Arduino- ն. 6 քայլ
Video: 🚽 ТУАЛЕТ ФАЙТ ДАФАК БУМ 2.0! КУПИЛ ТВ ТИТАНА 3.0! СКИБИДИ ТУАЛЕТ ИГРА 🔥 Skibidi Toilet Toilet Fight 2024, Նոյեմբեր
Anonim
NAIN 1.0 - հիմնական մարդանման ռոբոտը, որն օգտագործում է Arduino- ն
NAIN 1.0 - հիմնական մարդանման ռոբոտը, որն օգտագործում է Arduino- ն

Nain 1.0-ը կունենա հիմնականում 5 անջատվող մոդուլ, 1) թև - որը կարելի է կառավարել սպասարկողների միջոցով:

2) Անիվներ - որոնք կարող են կառավարվել DC շարժիչներով:

3) Ոտք - Նայնը կկարողանա շարժվել անիվների կամ ոտքերի միջև:

4) Գլուխ - Նրա գլուխը կարող է վերահսկվել տարբեր գլխիկների համար:

5) Խցիկի մոդուլ- որը կարող է միացված լինել դեմքի ճանաչման հասանելիության համար:

Այս NAIN- ի հետ միասին կկարողանա խոսել և շփվել օգտվողների հետ և կարող է ցույց տալ ժամանակը ՝ ներկառուցված ժամացույցով: Այն կունենա անլար կառավարում ՝ օգտագործելով Wi-Fi /Bluetooth:

Քայլ 1: Անհրաժեշտ բաղադրիչներ

Անհրաժեշտ բաղադրիչներ
Անհրաժեշտ բաղադրիչներ
Անհրաժեշտ բաղադրիչներ
Անհրաժեշտ բաղադրիչներ
Անհրաժեշտ բաղադրիչներ
Անհրաժեշտ բաղադրիչներ
  1. Servo Motors -4
  2. Արդուինո Մեգա - 1
  3. Ազնվամորի Պի - 1
  4. USB տեսախցիկ -1
  5. Բարձրախոս -1
  6. DC Մոտորս -2
  7. L293D -1
  8. Մարտկոցի փաթեթ - 1 հատ
  9. Անիվներ -2
  10. Կաստորի անիվներ - 2

Դրանց հետ մեկտեղ ձեզ հարկավոր են ալյումինե քառակուսի շերտեր `մարմինը պատրաստելու համար, և պտուտակներ և ընկույզներ` դրանք ճիշտ տեղավորելու համար:

Քայլ 2: Մարմնի կառուցվածքը

Մարմնի կառուցվածքը
Մարմնի կառուցվածքը

Մարմնի կառուցվածքը պատրաստված կլինի թեթև ալյումինե քառակուսի ձողերից, ինչը կօգնի հեշտությամբ հավաքել այն:

Այս պահին դրանք հավաքեք, ինչպես ցույց է տրված նկարում, ինչպես նաև կտրեք համապատասխան տարածքները, որպեսզի սերվո շարժիչները ամրացվեն թևերում:

Ներքևում ամրացրեք վեցանկյուն փայտե հիմք:

Փայտե հիմքից ներքև ամրացրեք DC շարժիչներ և անիվներ, ինչպես դա անում ենք ցանկացած գծի հետևող ռոբոտի դեպքում:

Հետաքրքիր է, որ ավելացրեք երկու գերչակի անիվ ՝ մեկը առջևի մասում, իսկ մյուսը ՝ ռոբոտի հետևի մասում:

Քայլ 3: Հաղորդալարերի մշակում և կոդավորում

Հաղորդալարեր և կոդավորում
Հաղորդալարեր և կոդավորում
Հաղորդալարեր և կոդավորում
Հաղորդալարեր և կոդավորում

Տարբեր մոդուլներ լարելու համար դիմեք այս մասում կցված ծածկագրերին:

Սկզբում մենք փորձարկեցինք յուրաքանչյուր մոդուլ ՝ օգտագործելով առանձին կոդեր, այնուհետև դրանք բոլորը մեկում միավորեցինք և վերահսկեցինք անիվների և զենքերի շարժը ՝ օգտագործելով Bluetooth մոդուլ:

Քայլ 4: Ազնվամորի Պի և պատկերի ճանաչում

Ազնվամորի Պի և պատկերի ճանաչում
Ազնվամորի Պի և պատկերի ճանաչում
Ազնվամորի Պի և պատկերի ճանաչում
Ազնվամորի Պի և պատկերի ճանաչում

Պատկերի ճանաչումը կատարվում է USB տեսախցիկի և Raspberry Pi- ի միջոցով:

Դրա համար ձեզ հարկավոր կլինի տեղադրել ՊԱՀ CV գրադարանը ձեր Pi- ի վրա:

Դուք կարող եք դա անել այստեղից ՝

Այնուհետև ձեզ հարկավոր կլինի կատարել պատկերի ճանաչում `օգտագործելով haar cascade:

Դուք կարող եք դա անել այստեղից -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Վերոնշյալ հղումն ուսումնասիրելուց և դրան հետևելուց հետո ես որոշ փոփոխություններ կատարեցի իմ օգտագործած վերջնական կոդի մեջ, որը տեղադրում եմ ստորև.

ՏՎՅԱԼՆԵՐԻ Գեներատոր.

importcv2

տեսախցիկ = cv2. VideoCapture (0)

դետեկտոր = cv2. CascadeClassifier ('Classifiers/face.xml')

i = 0

օֆսեթ = 50

անուն = raw_input ('մուտքագրեք ձեր ID- ն')

իսկական True:

ret, im = cam.read ()

մոխրագույն = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

դեմքեր = detector.detectMultiScale (մոխրագույն, scaleFactor = 1.2, min Հարևաններ = 5, minSize = (100, 100), դրոշներ = cv2. CASCADE_SCALE_IMAGE)

(x, y, w, h) դեմքերի համար.

i = i+1

cv2.imwrite ("dataSet/face."+name+'.'+str (i)+".jpg", մոխրագույն [y-offset: y+h+offset, x-offset: x+w+offset])

cv2. ուղղանկյուն (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])

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

ընդմիջում

# ընդմիջում, եթե նմուշի համարը 20 -ից ավելին է

էլիֆ (i> 20):

ընդմիջում

cam.release ()

cv2.destroyAllWindows ()

Այն կստեղծի ձեր լուսանկարների տվյալների հավաքածու, որոնք կօգտագործվեն նույնականացման համար:

Ո TՍՈԻՉ:

importcv2, os

ներմուծել numpy որպես np

PIL ներմուծման պատկերից

ճանաչող = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Դասակարգիչներ/երես. xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

ուղի = 'dataSet'

def get_images_and_labels (path):

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

# պատկերները պարունակում են դեմքի պատկերներ

պատկերներ =

# labels will պարունակում է պատկերին վերագրված պիտակ

պիտակներ =

image_paths- ում image_paths:

# Կարդացեք պատկերը և փոխարկեք մոխրագույնի

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

# Փոխակերպեք պատկերի ձևաչափը անթիվ զանգվածի

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

# Ստացեք նկարի պիտակը

nbr = int (os.path.split (image_path) [-1].split (".") [1]. փոխարինել ("face-", ""))

#nbr = int (''. միանալ (str (ord (c)) համար c in nbr))

տպել nbr

# Հայտնաբերեք դեմքի պատկերը

դեմքեր = faceCascade.detectMultiScale (պատկեր)

# Եթե դեմքը հայտնաբերվի, դեմքը կցեք պատկերներին, իսկ պիտակը ՝ պիտակներին

(x, y, w, h) դեմքերի համար.

images.append (պատկերը [y: y + h, x: x + w])

labels.append (nbr)

cv2.imshow («Դեմքերի ավելացում անցումային հավաքածուին …», պատկեր [y: y + h, x: x + w])

cv2.waitKey (10)

# վերադարձնել պատկերների և պիտակների ցուցակը

վերադարձնել պատկերներ, պիտակներ

պատկերներ, պիտակներ = get_images_and_labels (path)

cv2.imshow («թեստ», պատկերներ [0])

cv2.waitKey (1)

ճանաչող. գնացք (պատկերներ, np.array (պիտակներ))

ճանաչող. պահպանել ('trainer/trainer.yml')

cv2.destroyAllWindows ()

ԴԵՏԵԿՏՈՐ

importcv2

ներմուծել numpy որպես np

ներմուծել os

c = 0

ճանաչող = cv2.face.createLBPHFaceRecognizer ()

ճանաչիչ.բեռնում ('trainer/trainer.yml')

cascadePath = "Դասակարգիչներ/երես. xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

տեսախցիկ = cv2. VideoCapture (0)

տառատեսակ = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

տառատեսակ = (255, 255, 255)

իսկական True:

ret, im = cam.read ()

մոխրագույն = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

դեմքեր = faceCascade.detectMultiScale (մոխրագույն, 1.2, 5)

(x, y, w, h) դեմքերի համար.

cv2. ուղղանկյուն (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

Id = ճանաչող. Կանխատեսում (մոխրագույն [y: y+h, x: x+w])

եթե (Id <70):

եթե (Id == 1):

Id = "Շաշանք"

էլիֆ (Id == 2):

եթե (c == 0):

Id = "Shivam"

c = c+1

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

այլ:

Id = "Shivam"

այլ:

Id = "Անհայտ"

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

cv2.imshow ('im', im)

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

ընդմիջում

cam.release ()

cv2.destroyAllWindows ()

Քայլ 5: LCD և բարձրախոս

Ես նաև օգտագործել եմ I2C LED էկրան և բարձրախոս:

LED- ն վերահսկվում է Arduino Mega- ի միջոցով, և դրա ծածկագիրը տրվում է վերջնական կոդի մեջ:

Speaker- ի համար այն կապված է Raspberry Pi- ի հետ և օգտագործում է eSpeak Utility- ը:

Դուք կարող եք գտնել դրա հղումը այստեղ ՝

Քայլ 6: Վերջնական քայլեր:

Հավաքեք ամեն ինչ և պատրաստվեք պայթյունի:

Խորհուրդ ենք տալիս: