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

Կառուցեք ձեր սեփական ինքնակառավարվող մեքենան - (Այս հրահանգը ընթացքի մեջ է) `7 քայլ
Կառուցեք ձեր սեփական ինքնակառավարվող մեքենան - (Այս հրահանգը ընթացքի մեջ է) `7 քայլ

Video: Կառուցեք ձեր սեփական ինքնակառավարվող մեքենան - (Այս հրահանգը ընթացքի մեջ է) `7 քայլ

Video: Կառուցեք ձեր սեփական ինքնակառավարվող մեքենան - (Այս հրահանգը ընթացքի մեջ է) `7 քայլ
Video: Prüfungsvorbereitung B2/C1- "Let's Go" 2024, Նոյեմբեր
Anonim
Image
Image

Բարեւ Ձեզ, Եթե նայեք իմ մյուս Instructable on Drive Robot With Remote USB Gamepad- ին, այս նախագիծը նման է, բայց ավելի փոքր մասշտաբի: Կարող եք նաև հետևել կամ որոշակի օգնություն կամ ոգեշնչում ստանալ Robotics- ից, Home-Grown Voice-Recognition- ից կամ Self-Driving Car երգացանկերից Youtube- ում:

Ես սկսեցի մեծ ռոբոտից (Wallace 4), բայց քանի որ ես ստեղծեցի տեղական Meetup խումբ, ինձ ավելի փոքր մասշտաբով ինչ -որ բան էր պետք, և խումբը շատ հետաքրքրված էր համակարգչային տեսլականով:

Այսպիսով, ես հանդիպեցի Ուդեմիի այս դասընթացին. Կառուցեք ձեր սեփական ինքնակառավարվող մեքենան, որն ինձ տվեց այս նախագծի գաղափարը:

Եթե Ձեզ հետաքրքրում է Ուդեմիի դասընթացը, կարող եք շարունակել ստուգել այնտեղ: այն ժամանակ առ ժամանակ վաճառվում է հսկայական զեղչով: Նշում. Կա Մաս 1 և Մաս 2 - դուք պետք է որոշակի հետաքննություն կատարեք, թե ինչպես ստանալ երկու դասընթացներ որպես փաթեթ (զեղչված):

Այս հրահանգի նպատակը երկակի է: Նախ, որոշակի ցուցումներ և այլընտրանքներ տալ դասընթացի որոշակի հատվածներին (օրինակ ՝ մասերն ու սարքավորումները): Եվ երկրորդ ՝ դասընթացի ընդլայնում:

Ուդեմիի դասընթացի հիմնական նպատակը

այն է, որ կարողանանք փոքր անիվներով ռոբոտ-մեքենա հասցնել ինքնակառավարվող երթևեկելի մասշտաբով երկու երթևեկելի գոտիով:

Այն պետք է ճանաչի գծի շերտերը, և երբ այն հասնի ճանապարհի վերջը:

Այն պետք է ճանաչի կանգառի նշանը (և կանգառի):

Նաև ԿԱՐՄԻՐ և Կանաչ երթևեկության ազդանշան:

Այն պետք է ճանաչի և մանևրի խոչընդոտի շուրջ (մեկ այլ մեքենա):

Ինչ է ավելացնում այս հրահանգը դասընթացին

Քշեք փոքրիկ մեքենան հեռավոր USB Gamepad- ով, նույն կերպ, ինչպես այս մյուս Ուղեցույցում:

Դասընթացի տվածին այլընտրանք տվեք:

Հնարավոր է, որ նույնիսկ կարիք չունենաք գնել դասընթացը

Այս հրահանգը կարող է լինել այն ամենը, ինչ ձեզ հարկավոր է սկսելու համար:

Պարագաներ

Հիմնական (առաջարկվող) մասերը.

Ռոբոտի շասսի

Չորս շարժիչ

Արդուինո

Ազնվամորի Pi (3, 3B+, 4)

Տեսախցիկ (USB վեբ -տեսախցիկ կամ Picamera մոդուլ)

Մարտկոցի հզորություն

Միացման/անջատման անջատիչներ

jumper լարերը

անջատիչներ (պլաստիկ և գուցե նաև մետաղ),

Խնդրում ենք վերանայել ամբողջ Instructable- ը և նաև տեսանյութերը ՝ նախքան մասեր գնելը:

Այս նախագիծը կատարելուց հետո ես հասկանում եմ, որ ճշգրիտ մասերն այնքան էլ կարևոր չեն:

Քայլ 1: Մասերի մասին ավելի շատ մանրամասներ…

Image
Image
Մանրամասներ մասերի մասին…
Մանրամասներ մասերի մասին…
Մանրամասներ մասերի մասին…
Մանրամասներ մասերի մասին…

Կից տեսանյութը մանրամասնում է մասերի և որոշ խնդիրների մասին, որոնք ես գտա:

  • Նայեք շուրջը ՝ տարբեր շասսի / շարժիչներ գտնելու համար
  • Շարժիչներն արդեն պետք է ամրացված լարեր ունենան դրանց վրա
  • Հնարավոր է, որ ցանկանաք ունենալ փորվածք և փորվածք, ԿԱՄ ավելի մեծ անցքերով շասսի
  • Հիշեք, որ քաշը խնդիր է: Ամեն ինչ պետք է լինի հնարավորինս թեթև:
  • L298 H-Bridge շարժիչի վարորդը հիանալի է աշխատում: Նշում. Ձեռք բերեք պտուտակավոր տերմինալային բլոկներով (տես լուսանկարը)
  • Դուք հավանաբար կցանկանաք և՛ պլաստմասե, և՛ մետաղի դիմացկունություն, M3 չափը, հավանաբար, լավագույն ընտրությունն է:

Պլաստիկ ամրացումները լավ են տախտակները շասսիի վրա տեղադրելու համար (շարժիչ, Arduino, ազնվամորի, հզորության համակարգիչ, անջատիչ/անջատիչ և այլն):

Մետաղական կանգառները լավ են շասսիի (ուժի) հավաքման համար, և հատկապես այն ժամանակ, երբ դուք զարգանում եք (ծրագրավորում, փորձարկում): Developmentարգացման համար մետաղական կանգառները կարող են ծառայել որպես ձողեր: Ifիշտ այնպես, ինչպես եթե աշխատում էիք իսկական մեքենայի վրա, ցանկանում եք մեքենան բարձրացնել այնպես, որ անիվները օդում լինեն և կարողանան ազատ տեղաշարժվել: Սա շատ կարևոր է: Դուք սխալներ թույլ կտաք և չեք ցանկանում, որ մեքենան պարզապես թռչի և վթարի ենթարկվի:

Գայլիկոն + փորվածքներ

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

Հորատանցքի օգտագործումը շատ հեշտ է դարձնում դիրքը (հատկապես, եթե շասսին պլաստիկ է), և այն ավելի պրոֆեսիոնալ տեսք ունի:

Քայլ 2. Ավտոմեքենայի հզորացում զարգացման ընթացքում

Մեքենայի սնուցումը զարգացման ընթացքում
Մեքենայի սնուցումը զարգացման ընթացքում
Մեքենայի սնուցումը զարգացման ընթացքում
Մեքենայի սնուցումը զարգացման ընթացքում

Իմ կարծիքով, այս նախագծով սկսելու ամենաարագ, ամենահեշտ ձևը հետևյալն է.

  • ծրագրային ապահովման Arduino էսքիզների մշակման համար պարզապես միացրեք Arduino- ն ձեր համակարգչին USB- ի միջոցով
  • Raspberry Pi ծրագրակազմի համար պետք է ունենաք 5 Վ USB հզորություն, որը կարող է ապահովել առնվազն 3 Ամպեր: Եվ այն պետք է ունենա միացման/անջատման անջատիչ: Եթե ձեր համակարգչին միացված չէ լավ, սնուցվող USB հանգույց, հավանաբար չեք կարողանա ազնվամորին սնուցել անմիջապես ձեր համակարգչից:
  • Երբ դուք պատրաստ եք փորձարկել շարժիչները/անիվները, ամենահեշտը (տես լուսանկարը) լավ էլեկտրամատակարարումն է: Այնուամենայնիվ, դրանք էժան չեն:

Այս հատվածի վերաբերյալ իմ ասելիքն այն է, որ դուք չեք ցանկանում մարտկոցի էներգիա օգտագործել զարգացման ընթացքում, քանի որ դա մեծապես կդանդաղեցնի ձեր առաջընթացը:

Բացի այդ, վերը նշված առաջարկություններին նման բան անելով, պետք չէ (դեռ) անհանգստանալ, թե կոնկրետ ինչպես կաշխատեցնեք մեքենան: Դուք կարող եք հետաձգել այդ որոշումը նախագծի հետագա համար:

Քայլ 3: Ավտոմեքենայի լիցքավորում իրական օգտագործման ընթացքում

Մեքենայի լիցքավորում իրական օգտագործման ընթացքում
Մեքենայի լիցքավորում իրական օգտագործման ընթացքում
Մեքենայի լիցքավորում իրական օգտագործման ընթացքում
Մեքենայի լիցքավորում իրական օգտագործման ընթացքում

Եթե որոշեք տրամաբանությանը հետևել 5V հզորության դասընթացին (կամ այն, ինչ ես արել եմ), ապա տեղյակ եղեք, որ ոչ բոլոր 5 Վ USB հզորության բանկերն են լավ այս նախագծի համար:

Հիմնական կետն այն է, որ ձեզ անհրաժեշտ է 5 Վ, բայց ձեզ անհրաժեշտ է առնվազն 3 Ամպեր: Մտածեք դրա մասին. Դուք ուզում եք powerbank, որը կաշխատի նոութբուքի համակարգիչը (գուցե):

Եթե դուք ապրում եք ԱՄՆ -ում, ես կարծում եմ, որ դա անելու լավագույն միջոցներից մեկը Best Buy- ից գնումներ կատարելն է: Ինչո՞ւ: Վերադարձի համար նրանց վերադարձի 14-օրյա քաղաքականության պատճառով:

Իրականում ես ստիպված էի փորձել երեք տարբեր powerbanks, նախքան մեկը գտնելը, որը կաշխատի: Մյուսները պատճառ են դառնում, որ Raspberry Pi- ն դժգոհի ցածր լարման պատճառով:

Ես սկսել էի ամենաթանկ powerbank- ից և պարզապես շարունակում էի փորձել հաջորդ մոդելը (որն ավելի թանկ արժեր), մինչև որ գտա աշխատող մեկը:

Ինչպես միացնել Arduino- ն

Ուդեմիի դասընթացում հեղինակը ընտրեց Arduino- ն սնուցել անմիջապես powerbank- ից (իր պատրաստած անհատական pcb- ի միջոցով) և նա օգտագործեց հոսանքի կապեր Arduino- ի GPIO միակցիչի վրա:

Այնուամենայնիվ, ես ընտրեցի Arduino- ն ուղղակի միացնել Raspberry Pi- ից ՝ USB մալուխի միջոցով:

Դուք պետք է որոշեք, թե որն է ավելի լավ:

Ինչպես միացնել շարժիչները/շարժիչի վարորդը

Ուդեմիի դասընթացում հեղինակը նախընտրեց շարժիչները/վարորդը սնուցել անմիջապես 5 Վ հզորության բանկից: Այս մոտեցումն օգտագործելու դեպքում կա երկու նկատառում.

  1. Երբ շարժիչներն առաջին անգամ սկսում են պտտվել, նրանք նկարում են ամենա հոսանքը: Սա կարող է (կհանգեցնի) հոսանքի լարման նվազմանը (ընկնելուն) 5 Վ -ից ցածր, և կհանգեցնի ազնվամորու վերակայման:
  2. Շարժիչները սնուցելու համար օգտագործել ընդամենը 5 Վ նշանակում է, որ դուք այնքան էներգիա չեք տրամադրում, որքան կարող էիք շարժիչներին, և մեքենան ավելի դանդաղ կշարժվի (ավելի դանդաղ): Ես փորձարկել եմ շարժիչները (այդ սնուցման աղբյուրով) (տես լուսանկարը) առնվազն 9 Վ լարման: Նրանք լավ են աշխատում 9 Վ լարման դեպքում:

Դիտարկումներ 9 Վ (կամ ավելի) մասին

Եթե դուք նայեցիք այս Instructable- ի բոլոր լուսանկարներին և տեսանյութերին, նկատեցիք, որ ես հավաքեցի անհատական PCB ՝ իմ սեփական 9V էներգիայի աղբյուր ստեղծելու համար: Aանապարհին ես մի քանի բան եմ սովորել:

Այս պահին ես զուգահեռաբար օգտագործում եմ մի քանի (3) 9V մարտկոցի բջիջներ `շարժիչները սնուցելու համար: Ես օգտագործել եմ և՛ ալկալային, և՛ NiMH վերալիցքավորվող մարտկոցներ:

Ուսուցման փորձ թիվ 1. NiMH 9V մարտկոցների պատշաճ լիցքավորումը երկար ժամանակ է պահանջում (շատ ժամեր):

Հնարավոր լուծում. Ներդրումներ կատարեք բազմ մարտկոցով NiMH լիցքավորիչի մեջ: Այն պետք է լինի «խելացի» լիցքավորիչ:

Թերություն. Դրանք էժան չեն:

Ուսուցման փորձ #2: 9 Վ մարտկոցները իրականում կազմված են ներքին մի քանի փոքր բջիջներից: Եթե այդ բջիջներից մեկը մահանում է, ամբողջ մարտկոցը անօգուտ է: Ես այս խնդիրը չեմ ունեցել, բայց կարդացել եմ դրա մասին:

Ուսուցման փորձ թիվ 3. Ոչ բոլոր 9 Վ մարտկոցներն են նույն լարումը: Այս մեկը կարևոր է: Քանի որ որքան բարձր է լարումը, այնքան ավելի արագություն է հնարավոր: Մարտկոցի որոշ բջիջներ (և լիցքավորիչներ) ընդամենը 8.4 Վ են: Ոմանք նույնիսկ ավելի քիչ: Ոմանք 9.6 Վ են:

Ուսուցման փորձ #4: 9 Վ մարտկոցները, հատկապես NiMH մարտկոցները, փոքր քաշ ունեն: Լավ բան: Այնուամենայնիվ, նրանցից շատերը ապահովում են միայն ելքային հոսանքի mA: Այդ պատճառով ես ստիպված էի դրանք զուգահեռաբար տեղավորել: Ձեզ անհրաժեշտ է գրեթե 2 Ամպեր ընդհանուր ընթացիկ հզորություն, նույնիսկ կարճ ժամանակահատվածների համար:

Ուսուցման փորձ #5: Գոյություն ունեն 9.6 Վ մարտկոցի մարտկոցներ, որոնք օգտագործվում են այնպիսի սարքերի համար, ինչպիսիք են ռադիոկառավարվող մեքենաները: Ես դեռ չեմ օգտագործել մեկը, բայց կարծում եմ, որ նրանք ավելի շատ հոսանք են ապահովում, քան զուգահեռ 9V մարտկոցներ անելը, ինչպես ես: Բացի այդ, կարող եք լիցքավորել միայնակ միավորը: Տուփերը գալիս են տարբեր չափերի: Եվ կա քաշի նկատառում: Եվ հետո, փաթեթն օգտագործում եք ամբողջ մեքենան սնուցելու համար, թե՞ միայն շարժիչները: Եթե ամբողջ մեքենայի համար, ապա ձեզ հարկավոր կլինի 5V իջեցնող կարգավորիչ ՝ Raspberry Pi- ի համար:

L298 H-Bridge- ն այս նպատակի համար ունի 5 Վ լարման հզորություն, բայց ես մտահոգված եմ, թե որքան հոսանք կարող է արտադրել այն Raspberry Pi- ի համար, և արդյոք դա շատ ծանրաբեռնված կլինի L298 տախտակի վրա:

Եթե որոշեք ունենալ երկու առանձին էներգիայի աղբյուր, ապա կարող է քաշի խնդիր ունենալ (չափազանց ծանր):

Քայլ 4: Softwareրագրային ապահովման ծրագրավորում Gamepad Driving- ի համար

Կարծում եմ, որ այս բաժնի մեծ մասն արդեն լուսաբանել եմ Robot Driven- ի միջոցով Remote USB Gamepad Instructable- ի միջոցով, այնպես որ ես դա չեմ կրկնի այստեղ:

Այդ այլ Instructable- ի ծրագրավորման/ծրագրային բաժիններն ընդամենը առաջարկներ են: Կարծում եմ ՝ մարդն ավելի շատ բան է սովորում փորձության և սխալի միջոցով:

Քայլ 5: Տեսախցիկ ավելացնելը

Տեսախցիկ ավելացնելը
Տեսախցիկ ավելացնելը
Տեսախցիկ ավելացնելը
Տեսախցիկ ավելացնելը
Տեսախցիկ ավելացնելը
Տեսախցիկ ավելացնելը

Ես կարծում եմ, որ Ուդեմիի դասընթացում հեղինակը օգտագործում է փայտե կլոր աշտարակներ և սոսինձ ատրճանակ `տեսախցիկը բարձրացնելու միջոց կառուցելու համար:

Դուք կցանկանաք տեսախցիկը բարձրացնել այնպես, որ այն ներքևից նայի երկգիծ ճանապարհով, որպեսզի այն ավելի հեշտությամբ ճանաչի գոտիները:

Այնտեղ, որտեղ ես ապրում եմ ԱՄՆ -ում, փայտե սալիկները շատ էժան էին: Դուք կարող եք դրանք գնել Lowe's- ում կամ Home Depot- ում: Ես ընտրեցի քառակուսի դոդներ կլոր դոդների փոխարեն:

Ես նաև որոշեցի ավելի ամուր հիմք պատրաստել տեսախցիկի աշտարակի համար, և ամբողջ աշտարակը հանեցի մեքենայից, որպեսզի կարողանամ խաղալ և փորձարկել, թե որն է դրա համար լավագույն դիրքը մեքենայի վրա:

Բացի այդ, ես աշտարակը պատրաստեցի այն մտքով, որ կսկսեմ USB վեբ -տեսախցիկով, բայց, հնարավոր է, հետագայում անցնեմ Picamera մոդուլի օգտագործման վրա:

Դուք կարող եք ներդրումներ կատարել ձկնատեսակի տեսախցիկի վրա:

Ես գնել եմ շատ էժան տաք սոսինձ ատրճանակ, բայց ես ուզում էի ավելի լավ ամրացնել աշտարակի հիմքը, ուստի ես նախապես մի քանի պտուտակահորեր փորեցի և ավելացրեցի պտուտակներ `ամեն ինչ ավելի լավ ամրացնելու համար:

Հետո հիմքը ամրացրեցի մեքենայի շասսիի վրա:

Եթե հետագայում, ես ուզում եմ իրերը տեղաշարժել, ես պարզապես հանում եմ հիմքը շասսիից, նոր անցքեր եմ փակում շասսիի նոր տեղում և նորից ամրացնում աշտարակը շասսիի վրա:

Ես բերեցի «հետևիր ինձ» Python և Node.js ծածկագիրը մեծ ռոբոտից (Wallace Robot 4) ՝ որպես ամեն ինչ փորձարկելու միջոց: Խնդրում ենք տե՛ս այս բաժնի լուսանկարները ՝ այն youtubs- ի ցանկի համար, որոնք շատ ավելի մանրամասնություններ են տալիս «follow-me»-ի վերաբերյալ:

Ինչպես նշեցի, ավելի հեշտ էր նախ USB վեբ -տեսախցիկ տեղադրել: Հետագայում ես կարող եմ միացնել Picamera մոդուլը:

Քայլ 6. Դեմքի ճանաչում. Որոշեք դիրքը

Image
Image

Այս հատվածը Udemy դասընթացի ուշադրության կենտրոնում չէ, բայց դա զվարճալի վարժություն էր:

Եթե որոշ վեբ որոնումներ կատարեք «python opencv դեմքի ճանաչման» համար, ապա կգտնեք շատ լավ օրինակներ, թե ինչպես դա անել, և նրանք բոլորը գրեթե հետևում են նույն քայլերին:

  1. բեռնել «haar» դեմքի ֆայլը
  2. գործարկել տեսախցիկը
  3. սկսեք մի հանգույց, որտեղ բռնում եք շրջանակը
  4. փոխակերպել գունավոր պատկերը մոխրագույն մասշտաբի
  5. կերակրիր այն opencv- ով, որպեսզի այն դեմք (ներ) գտնի
  6. սկսել ներքին օղակ (յուրաքանչյուր գտնված դեմքի համար) (իմ դեպքում ես ավելացնում եմ ծածկագիրը ՝ վիժեցնելու համար, եթե 1 -ից ավելի դեմք կա)

Այս նպատակի համար այստեղ, երբ մենք դեմք հայտնաբերենք, մենք գիտենք երևակայական քառակուսու X, Y, W և H մասին, որը ուրվագծում է դեմքը:

Եթե ցանկանում եք, որ ռոբոտը առաջ կամ հետ շարժվի, ապա պարզապես պետք է հաշվի առնել W. Եթե W- ը չափազանց փոքր է (շատ հեռու), ապա ռոբոտը առաջ շարժվի:

Ձախ/աջ շարժումը պարզապես մի փոքր ավելի բարդ է, բայց ոչ խելագար: Նայեք այս բաժնի պատկերին, որը մանրամասնում է, թե ինչպես կարելի է որոշել դեմքի ձախ և աջ դիրքը:

ՆՇՈՒՄ:

Եթե գործարկեք համացանցային OpenCV- ի օրինակներից որևէ մեկը, դրանք բոլորը ցույց են տալիս իրական տեսքը, թե ինչ է «տեսնում» opencv- ն ՝ դեմքը ուրվագծված քառակուսի: Եթե դիտարկեք, այդ քառակուսին կայուն չէ (հաստատուն), նույնիսկ եթե դուք չեք շարժվում:

Այդ փոփոխվող արժեքները կհանգեցնեն ռոբոտի անընդհատ շարժման ՝ առաջ կամ հետ, ձախ կամ աջ:

Այսպիսով, ձեզ հարկավոր կլինի ունենալ մի տեսակ դելտա ինչպես առաջ/հետևի, այնպես էլ ձախ/աջի համար:

Եկեք վերցնենք ձախը աջի դիմաց.

Ձախ և աջ հաշվարկելուց հետո ստացեք տարբերությունը (դելտա).

դելտա = abs (ձախ - աջ)

Դուք պետք է վերցնեք բացարձակը, քանի որ չգիտեք, թե որն է ավելի մեծ թիվը:

Այնուհետև որոշ պայմանական ծածկագիր եք ավելացնում միայն այն դեպքում, եթե փորձեք շարժվել, եթե դելտան որոշ չափից ավելի է:

Նույնը կանեիք առաջ և հետ:

Քայլ 7: Դեմքի դիրք - շարժվող ռոբոտ

Երբ իմանաք, որ ռոբոտին անհրաժեշտ է ձախ կամ աջ, առաջ կամ հետ շարժվելու համար, ինչպե՞ս եք դա անում:

Քանի որ այս Instructable- ը ընթացքի մեջ գտնվող աշխատանք է, այս պահին ես պարզապես պատճենել եմ իմ մեծ ռոբոտի ծածկագիրը `այս նախագծի համար օգտագործելու համար: Խնդրում ենք ստուգել իմ Robotics երգացանկը youtube- ում, որտեղ մանրամասն նկարագրված է այս ամենը:

Մի խոսքով, ես ունեմ ծածկագիրը շերտերով:

Python- ի դեմքի ճանաչման սցենարը http հարցում է կատարում Node.js սերվերին

Node.js սերվերը լսում է շարժման ուղղությունների վերաբերյալ http- ի հարցումները, դրանք փոխակերպում է սովորական սերիական արձանագրության

Node.js սերվերի և Arduino- ի միջև սովորական սերիական արձանագրություն

Arduino- ի ուրվագիծը, որը կատարում է ռոբոտին տեղափոխելու իրական հրամանները

Ուդեմիի դասընթացը դա չի անում վերը նշվածի պես: Բայց քանի որ ես ցանկանում էի լավ առաջընթաց գրանցել և կենտրոնանալ փաստացի պատկերի ճանաչման վրա, առայժմ նորից օգտագործեցի իմ նախկին կոդը:

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