Բովանդակություն:
- Քայլ 1: Անհրաժեշտ բաղադրիչներ
- Քայլ 2: Մարմնի կառուցվածքը
- Քայլ 3: Հաղորդալարերի մշակում և կոդավորում
- Քայլ 4: Ազնվամորի Պի և պատկերի ճանաչում
- Քայլ 5: LCD և բարձրախոս
- Քայլ 6: Վերջնական քայլեր:
Video: NAIN 1.0 - հիմնական մարդանման ռոբոտը, որն օգտագործում է Arduino- ն. 6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Nain 1.0-ը կունենա հիմնականում 5 անջատվող մոդուլ, 1) թև - որը կարելի է կառավարել սպասարկողների միջոցով:
2) Անիվներ - որոնք կարող են կառավարվել DC շարժիչներով:
3) Ոտք - Նայնը կկարողանա շարժվել անիվների կամ ոտքերի միջև:
4) Գլուխ - Նրա գլուխը կարող է վերահսկվել տարբեր գլխիկների համար:
5) Խցիկի մոդուլ- որը կարող է միացված լինել դեմքի ճանաչման հասանելիության համար:
Այս NAIN- ի հետ միասին կկարողանա խոսել և շփվել օգտվողների հետ և կարող է ցույց տալ ժամանակը ՝ ներկառուցված ժամացույցով: Այն կունենա անլար կառավարում ՝ օգտագործելով Wi-Fi /Bluetooth:
Քայլ 1: Անհրաժեշտ բաղադրիչներ
- Servo Motors -4
- Արդուինո Մեգա - 1
- Ազնվամորի Պի - 1
- USB տեսախցիկ -1
- Բարձրախոս -1
- DC Մոտորս -2
- L293D -1
- Մարտկոցի փաթեթ - 1 հատ
- Անիվներ -2
- Կաստորի անիվներ - 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: Վերջնական քայլեր:
Հավաքեք ամեն ինչ և պատրաստվեք պայթյունի:
Խորհուրդ ենք տալիս:
Uitուգահեռ միացում, որն օգտագործում է սխեմա. 13 քայլ (նկարներով)
Ralleուգահեռ միացում `սխեմայի սխալի օգտագործմամբ. Սխալները պարզ և զվարճալի միջոց են` երեխաներին ծանոթացնելու էլեկտրականության և էլեկտրագծերի հետ և դրանք կապելու STEM- ի վրա հիմնված ուսումնական ծրագրի հետ: Այս խելոք սխալը ներառում է հիանալի շարժիչ և ստեղծագործական հմտություններ ՝ աշխատելով էլեկտրականության և սխեմաների հետ
ESP32 ռոբոտը, որն օգտագործում է սերվերը. 6 քայլ (նկարներով)
ESP32 ռոբոտը, օգտագործելով սերվերը. կառուցել
Հետևող ռոբոտ, որն օգտագործում է TIVA միկրոկառավարիչ TM4C1233H6PM ՝ 3 քայլ
Հետևող ռոբոտ, որն օգտագործում է TIVA միկրոկառավարիչ TM4C1233H6PM. Հետևող ռոբոտը բազմակողմանի մեքենա է, որն օգտագործվում է սպիտակ մակերևույթի վրա գծված մուգ գծերը հայտնաբերելու և հեռացնելու համար: Քանի որ այս ռոբոտը արտադրվում է տախտակի միջոցով, այն կառուցելը չափազանց հեշտ կլինի: Այս համակարգը կարող է միաձուլվել
Գիշերային լամպ, որն օգտագործում է ARDUINO & EPOXY RESIN: 9 քայլ (նկարներով)
Գիշերային լամպ, որն օգտագործում է ARDUINO & EPOXY RESIN- ը. Նորաձև գիշերային լույս, որը կզարդարի ձեր գրասեղանները: Մենք այն անվանեցինք «ԼԱՅԹՈUSՍ SEՈՎԻ ՏԱԿ»: Անկախ նրանից, թե դուք ինքներդ եք օգտագործում այն կամ նվիրում ձեր սիրելիներին: Մենք հավաքեցինք էպոքսիդային խեժը և արևը
Փոքրիկ ազդանշանային համակարգ, որն օգտագործում է Super Tiny Arduino համատեղելի տախտակ: 10 քայլ
Փոքրիկ ազդանշանային համակարգ, որն օգտագործում է Super Tiny Arduino համատեղելի տախտակ: Մենք պատրաստվում ենք կառուցել ահազանգի փոքրիկ սարք, որը չափում է իր և դիմացի առարկայի միջև հեռավորությունը: Եվ երբ օբյեկտը անցնում է սահմանված տարածությունից, սարքը ձեզ կտեղեկացնի