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

Robotic Arm: Jensen: 4 քայլ
Robotic Arm: Jensen: 4 քայլ

Video: Robotic Arm: Jensen: 4 քայլ

Video: Robotic Arm: Jensen: 4 քայլ
Video: Concept: 4DoF Spherical Parallel Joint based Robot Leg 2024, Նոյեմբեր
Anonim
Ռոբոտական թև ՝ Յենսեն
Ռոբոտական թև ՝ Յենսեն

Jensen- ը ռոբոտային թև է, որը կառուցված է Arduino հարթակի վրա ՝ կենտրոնանալով շարժումների ինտուիտիվ պլանավորման վրա, որը կատարվել է որպես 1 վարկից անկախ նախագիծ, դոկտոր Չարլզ Բ. Այն կարող է կրկնել մի շարք շարժումներ, որոնք ծրագրված են ձեռքը ձեռքով շարժելով: Այն կառուցելու ոգեշնչում ստացա ՝ տեսնելով UMass Amherst M5 արտադրական տարածքում կառուցված այլ ռոբոտային զենքեր: Ավելին, ես ուզում էի սովորել, թե ինչպես օգտագործել CAD ծրագրակազմը և ցանկանում էի կատարելագործել Arduino նախագիծը: Ես սա դիտում էի որպես այդ բոլոր բաներն անելու հնարավորություն:

Քայլ 1. Բնօրինակ ձևավորում և շրջանակ

Օրիգինալ դիզայն և շրջանակ
Օրիգինալ դիզայն և շրջանակ

CAD ծրագրակազմը, որը ես ընտրեցի սովորել այս նախագծի համար, OnShape- ն էր, և առաջին բանը, որ մոդելավորեցի, HiTec HS-422 անալոգային սերվո էր: Ես ընտրեցի սերվոն, քանի որ այն հասանելի էր ինձ համար տեղական մակարդակում և դա ողջամիտ գին էր: Այն նաև ծառայեց որպես լավ պրակտիկա OnShape սովորելու համար ՝ նախքան իմ սեփական մասերի նախագծմանը անցնելը: Նախագծի այս սկզբնական փուլում ես ընդհանուր պատկերացում ունեի, թե ինչի եմ ուզում, որ թևը կարողանա: Ես ուզում էի, որ այն ունենար շարժման արժանապատիվ տիրույթ և բռնիչ ՝ իրերը հավաքելու համար: Այս ընդհանուր բնութագրերը տեղեկացրին դիզայնին, քանի որ ես շարունակում էի մոդելավորել այն CAD- ում: Մեկ այլ դիզայնի սահմանափակում, որն այս պահին ունեի, դա իմ 3D տպիչի տպագիր մահճակալի չափն էր: Ահա թե ինչու հիմքը, որը տեսնում եք վերը նշված լուսանկարում, համեմատաբար պարզունակ քառակուսի է:

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

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

Քայլ 2: Վերահսկում

Վերահսկողություն
Վերահսկողություն

Իմ ընտրած վերահսկողության մեթոդը գործում է այսպես ՝ դուք ձեռքը ձեռքը տեղափոխում եք տարբեր դիրքերի և «փրկում» այդ դիրքերը: Յուրաքանչյուր դիրք ունի տեղեկատվություն թևի յուրաքանչյուր օղակի միջև եղած անկյունի մասին: Դիրքերի պահպանումն ավարտելուց հետո դուք սեղմում եք նվագարկման կոճակը, և ձեռքը հաջորդաբար վերադառնում է այդ դիրքերից յուրաքանչյուրին:

Վերահսկողության այս մեթոդում շատ բան կար պարզելու: Որպեսզի յուրաքանչյուր սերվո վերադառնա պահպանված անկյան, ես պետք է ինչ -որ կերպ «փրկեի» այդ անկյունները առաջին հերթին: Սա պահանջում էր, որ Arduino Uno- ն ես օգտագործում էի, որպեսզի կարողանայի ստանալ յուրաքանչյուր սերվոյի ընթացիկ անկյունը: Իմ ընկերը ՝ remերեմի Պարադին, որը ռոբոտացված թև էր պատրաստել, որն օգտագործում էր այս հսկողության մեթոդը, ինձ հուշեց, որ ես օգտագործում եմ յուրաքանչյուր հոբբի սերվոյի ներքին պոտենցիոմետրը: Սա պոտենցիոմետր է, որն servo- ն ինքն է օգտագործում `իր անկյունը կոդավորելու համար: Ես ընտրեցի փորձարկման սերվո, մետաղալար կպցրեցի ներքին պոտենցիոմետրի միջին քորոցին և պարիսպի մեջ անցք բացեցի, որպեսզի մետաղալարը դրսից կերակրեմ:

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

Հոբբի սերվո շարժիչներին 0 -ից 180 աստիճանի միջև որոշակի անկյան տակ շարժվելն ասելը ենթադրում է նրան PWM ազդանշանի ուղարկում `անկյունին համապատասխան բարձր ժամանակով: Հակառակ դեպքում, Arduino- ի անալոգային մուտքագրման քորոց օգտագործելը պոտենցիոմետրի միջին քորոցի լարումը 0 -ից 180 աստիճանի միջև շարժելիս վերադարձնում է արժեքների առանձին տիրույթ: Հետևաբար, որոշ մաթեմատիկա էր անհրաժեշտ ՝ պահպանված մուտքային արժեքը համապատասխան PWM ելքային արժեքի թարգմանելու համար, որն անհրաժեշտ էր սերվոն նույն տեսանկյունից վերադարձնելու համար:

Իմ առաջին միտքն էր օգտագործել պարզ տիրույթի քարտեզ ՝ յուրաքանչյուր պահված անկյունի համար համապատասխան ելքային PWM գտնելու համար: Սա աշխատեց, բայց դա շատ ճշգրիտ չէր: Իմ նախագծի դեպքում, PWM բարձր ժամանակի արժեքների տիրույթը, որը համապատասխանում է 180 աստիճանի անկյունային տիրույթին, շատ ավելի մեծ էր, քան անալոգային մուտքային արժեքների տիրույթը: Բացի այդ, այս երկու տիրույթներն էլ շարունակական չէին և կազմված էին միայն ամբողջ թվերից: Հետևաբար, երբ ես պահված մուտքային արժեքը քարտեզագրեցի ելքային արժեքի, ճշգրտությունը կորավ: Այս պահին ես հասկացա, որ ինձ անհրաժեշտ է հսկողության օղակ `իմ սերվոներին այնտեղ, որտեղ նրանք պետք է լինեին:

Ես գրել եմ PID կառավարման օղակի ծածկագիրը, որի մուտքը միջին քորոցային լարվածությունն էր, իսկ ելքը ՝ PWM ելքը, բայց արագ պարզեցի, որ ինձ միայն ինտեգրալ հսկողություն է պետք: Այս սցենարում ելքը և մուտքը երկուսն էլ ներկայացնում էին անկյունները, ուստի համամասնական և ածանցյալ վերահսկողություն ավելացնելը հակված էր այն գերազանցել կամ ունենալ անցանկալի վարք: Ինտեգրալ հսկողությունը կարգավորելուց հետո դեռ երկու խնդիր կար. Նախ, եթե ընթացիկ և ցանկալի անկյունի միջև եղած սկզբնական սխալը մեծ լիներ, սերվոն շատ արագ կարագանա: Ես կարող էի նվազեցնել հաստատունը ամբողջական կառավարման համար, բայց դա ընդհանուր շարժումը դանդաղեցրեց: Երկրորդը ՝ միջնորդությունը ցնցող էր: Սա անալոգային մուտքային ազդանշանի վրա աղմուկի հետեւանք էր: Կառավարման օղակը անընդհատ կարդում էր այս ազդանշանը, ուստի լարման թռիչքները առաջացնում էին ցնցող շարժում: (Այս պահին ես նաև իմ մեկ փորձարկման սերվոյից տեղափոխվեցի վերևում պատկերված հավաքածու: Ես նաև պատրաստեցի ծրագրակազմի յուրաքանչյուր սերվոյի կառավարման հանգույցի օբյեկտ):

Ես լուծեցի չափազանց արագ արագացման խնդիրը ՝ ելքի վրա դնելով երկրաչափական կշռված շարժվող միջին (EWMA) զտիչ: Միջին ելքի արդյունքում շարժման մեջ եղած մեծ թռիչքները նվազեցին (ներառյալ աղմուկի ցնցումը): Այնուամենայնիվ, մուտքային ազդանշանի աղմուկը դեռ խնդիր էր, ուստի իմ նախագծի հաջորդ փուլը փորձում էր դա լուծել:

Քայլ 3: Աղմուկ

Աղմուկ
Աղմուկ

Վերևում պատկերված

Կարմիրով `սկզբնական մուտքային ազդանշան

Կապույտ ՝ մուտքագրման ազդանշան մշակումից հետո

Մուտքային ազդանշանի վրա աղմուկը նվազեցնելու առաջին քայլը դրա պատճառը հասկանալն էր: Օսկիլոսկոպի վրա ազդանշանի ուսումնասիրությունը ցույց տվեց, որ լարման թռիչքները տեղի են ունենում 50 Հց հաճախականությամբ: Ես պատահաբար իմացա, որ սերվոներին ուղարկվող PWM ազդանշանը նույնպես 50 Հց հաճախականությամբ էր, ուստի կռահեցի, որ լարման թռիչքները դրա հետ կապ ունեն: Ես ենթադրեցի, որ սերվերի շարժումը ինչ -որ կերպ առաջացնում էր պոտենցիոմետրերի V+ կապում լարման թռիչքներ, ինչը, իր հերթին, խառնաշփոթ էր դնում միջին քորոցի ընթերցման վրա:

Ահա, որտեղ ես կատարեցի աղմուկը նվազեցնելու իմ առաջին փորձը: Ես նորից բացեցի յուրաքանչյուր սերվո և պոտենցիոմետրի վրա ավելացրեցի մետաղալար, որը գալիս էր V+ կապից: Ինձ ավելի շատ անալոգային մուտքագրումներ էին պետք դրանք կարդալու համար, քան Arduino Uno- ն, ուստի ես նույնպես այս պահին տեղափոխվեցի Arduino Mega: Իմ ծածկագրում ես փոխեցի անկյունի մուտքը միջին քորոցի լարման անալոգային ընթերցումից մինչև միջին քորոցի լարման և V+ քորոցի լարման միջև հարաբերակցության: Իմ հույսն այն էր, որ եթե կապերի վրա լարման թռիչք տեղի ունենար, այն կչեղարկվեր հարաբերակցության մեջ:

Ես ամեն ինչ հավաքեցի և փորձարկեցի, բայց բծերը դեռ տեղի էին ունենում: Այն, ինչ ես պետք է անեի այս պահին, իմ հիմքի ուսումնասիրությունն էր: Փոխարենը, իմ հաջորդ գաղափարը պոտենցիոմետրերն ամբողջությամբ առանձին սնուցման աղբյուրի վրա դնելն էր: Ես անջատեցի V+ լարերը Arduino- ի անալոգային մուտքերից և միացրեցի դրանք առանձին էներգիայի աղբյուրի: Ես նախկինում զննել էի կապերը, որպեսզի իմանայի, թե ինչ լարման դեպքում պետք է դրանք սնուցել: Ես նաև կտրեցի կապը կառավարման տախտակի և V+ կապի միջև յուրաքանչյուր սերվոյում: Ես ամեն ինչ նորից հավաքեցի, վերադարձրի անկյունի մուտքագրման ծածկագիրը նախկինի պես, այնուհետև փորձարկեցի այն: Ինչպես և սպասվում էր, մուտքային կապում լարման այլևս թռիչքներ չկային: Այնուամենայնիվ, նոր խնդիր կար. Պոտենցիոմետրերը առանձին էներգիայի մատակարարման վրա դնելը ամբողջովին խաթարել էր սերվերի ներքին հսկողության օղակները: Թեև V+ կապումներն ստանում էին նույն լարումը, ինչ նախկինում, սերվերի շարժումը անկանոն էր և անկայուն:

Ես չէի հասկանում, թե ինչու է դա տեղի ունենում, ուստի ես վերջապես զննեցի սերվիսներում իմ ցամաքային կապը: Միջին լարման անկումը եղել է մոտ 0,3 Վոլտ գետնին, և այն ավելի բարձրացել է, երբ սերվոները հոսանք են քաշում: Այն ժամանակ ինձ համար պարզ էր, որ այդ քորոցներն այլևս չեն կարող համարվել «հիմնավորված», և ավելի լավ կարելի է բնութագրել որպես «տեղեկատու» քորոցներ: Սպասարկումներում տեղադրվող կառավարման վահանակները պետք է չափած լինեն պոտենցիոմետրի միջին քորոցի լարումը ՝ համեմատած ինչպես V +- ի, այնպես էլ տեղեկատուի լարերի հետ: Պոտենցիոմետրերի սնուցումը առանձին խաթարեց այդ հարաբերական չափումը, որովհետև այժմ բոլոր պիների վրա լարման թռիչքի փոխարեն, դա տեղի ունեցավ միայն հղման քորոցում:

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

Քայլ 4: Իրերի փաթեթավորում

Իրերը փաթաթելը
Իրերը փաթաթելը

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

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

CAD փաստաթուղթ.

cad.onshape.com/documents/818ea878dda7ca2f…

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