Haptic Drawing Robot: 5 քայլ (նկարներով)
Haptic Drawing Robot: 5 քայլ (նկարներով)
Anonim

Դեպի մագիստրատուրա ավարտելու շրջանակներում: Էյնդհովենի համալսարանի արդյունաբերական դիզայն, ես ստեղծեցի հապտիկ նկարչական սարք, որը կարող է օգտագործվել երթևեկության միջով կիսաինքնավար մեքենայով նավարկելու համար: Ինտերֆեյսը կոչվում է խզբզոց և թույլ է տալիս օգտվողին փոփոխական ուժի և տեղանքի միջոցով զգալ հապտիկ սարքավորումներ 2D տարածքում: Թեև հասկացությունն այն չէ, ինչ վերաբերում է այս ուսանելիին, դուք կարող եք ավելին կարդալ Scribble- ի մասին այստեղ ՝

Scribble- ն օգտագործում է 5 բար կապի կազմաձև, որը թույլ է տալիս տեղափոխել ազատության երկու կողային աստիճան (DoF): Այս կարգավորումը բավականին տարածված է նախատիպերի մեջ `նկարչական ռոբոտներ ստեղծելու համար, ահա մի քանի օրինակ.

www.projehocam.com/arduino-saati-yazan-kol-…

blogs.sap.com/2015/09/17/plot-clock-weathe…

www.heise.de/make/meldung/Sanduhr-2-0-als-Bausatz-im-heise-shop-erhaeltlich-3744205.html

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

Ներբեռնեք ներքևի ծածկագիրը:

* Խմբագրել. Նմանատիպ նախագծի համար նայեք https://haply.co *

Քայլ 1: Կառուցվածքի կառուցում

Կառուցվածքի կառուցում
Կառուցվածքի կառուցում

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

Իմ նախատիպի համար ես աշխատում եմ իմ կոդը Arduino DUE- ով, որը վերահսկվում է սերիայի միջոցով իմ Mac ծրագրով, որը պատրաստվել է Բաց շրջանակներում: Usesրագիրը օգտագործում է UDP կապ ՝ Unity 3D- ի վրա հիմնված շարժիչ սիմուլյատորի հետ հաղորդակցվելու համար:

Scribble- ի նախատիպը օգտագործում է 5 մմ առանցքակալներ և պատրաստված է 5 մմ լազերային կտրված ակրիլիկայից: Գործողներն են Ֆրանկ վան Վալքնհյովի Haptic Engines- ը, որոնք թույլ են տալիս գործարկել, կարդալ դիրքը և թողնել փոփոխական ուժ: Սա դրանք դարձրեց իդեալական Scribble- ի ցանկալի հապտիկ հատկությունների համար: Նրա գործարկիչների մասին ավելին կարող եք գտնել այստեղ ՝

Քայլ 2: Իմացեք ձեր ապարատային արժեքները

Իմացեք ձեր ապարատային արժեքները
Իմացեք ձեր ապարատային արժեքները

Առջևի կինեմատիկան հիմնված է SAP ժամացույցի եղանակային կայանի վրա ՝

Ինչպես ցույց է տրված դրանց կոնֆիգուրացիայում, ձեռքը ձգվում է գծանշիչ պահելու համար: Սա հեռացվել է, քանի որ խզբզոցների նախատիպի համար ոչ մի նպատակ չէր ծառայում: Ստուգեք նրանց ծածկագիրը, եթե ցանկանում եք նորից ավելացնել այս բաղադրիչը: Նկարում պատկերված անունները նույն կազմով են պահվում:

Կախված ձեր սարքավորումից ՝ ալգորիթմը պետք է իմանա ձեր ապարատային հատկությունները.

int leftActuator, rightActuator; // անկյունը ՝ գրելու ակտիվացուցիչին deg- ով, փոխեք բոցերի, եթե ավելի շատ ճշգրտություն եք ցանկանում

int posX, posY; // ցուցիչի գտնվելու վայրի կոորդինատները

Սահմանեք ձեր մուտքային արժեքների լուծաչափը

int posStepsX = 2000;

int posStepsY = 1000;

Ձեր տեղադրման չափերը, արժեքները մմ են (տես SAP նկարը)

#սահմանեք L1 73 // երկարության շարժիչ թևը, տես SAP նկարը (ձախ և աջ նույնն են)

#define L2 95 // երկարության երկարացման թև, տես SAP նկարը (ձախ և աջ նույնն են)

#սահմանիր միջակայք X 250 // կետի տեղաշարժի առավելագույն ուղղություն X ուղղությամբ (ձախից աջ, 0 - maxVal)

#սահմանել միջակայքը Y 165 // առավելագույն հեռավորությունը Y ուղղությամբ կետի տեղաշարժի համար (0 -ից մինչև առավելագույն հասնում կենտրոնացված մնալով)

#սահմանել ծագումը Լ 90 // նվազագույն X արժեքից մեծից մինչև շարժիչի կենտրոնական դիրքի հեռացում

#սահմանեք ծագումը R 145 // նվազագույն X արժեքից մինչև օժանդակ կենտրոնի դիրքի հեռացում, այս դեպքում երկու շարժիչների միջև հեռավորությունը

Քայլ 3: Առաջ կինեմատիկա

Forward Kinematics
Forward Kinematics

Ինչպես նշվեց նախորդ քայլում, առաջի կինեմատիկան հիմնված է SAP- ի ալգորիթմի վրա:

Դատարկը թարմացնում է ձախ և աջ շարժիչի ցանկալի անկյունների ավելի վաղ սահմանված արժեքները: Հիմնվելով X և Y արժեքների վրա, որոնք միացված են դրանում, կհաշվարկվեն ճիշտ անկյունները `ցուցիչը այս դիրքի հասցնելու համար:

void set_XY (կրկնակի Tx, կրկնակի Ty) // մուտքագրեք ձեր X և Y արժեքը {// որոշ վալեր, որոնք մեզ պետք են, բայց չենք ցանկանում երկար պահել կրկնակի dx, dy, c, a1, a2, Hx, Hy; // քարտեզ ներածման լուծում ՝ իրական աշխարհում ձեր կազմաձևման տիրույթում int realX = քարտեզ (Tx, 0, posStepsX, 0, rangeX); // swap if mapping if inversed int realY = map (Ty, posStepsX, 0, 0, rangeY); // swap if mapping if is inversed // calc angle for left actuator // cartesian dx/dy dx = realX - originL; // ներառել օֆսեթ dy = realY; // բևեռային երկարություն (գ) և անկյուն (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = վերադարձի անկյուն (L1, L2, c); leftActuator = հարկ (((M_PI - (a2 + a1)) * 4068) / 71); // վերջնական անկյունը և փոխարկիր rad- ից deg // calc անկյան ճիշտ շարժիչի համար dx = realX - origR; // ներառել օֆսեթ dy = realY; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = վերադարձի անկյուն (L1, L2, c); rightActuator = հարկ (((a1 - a2) * 4068) / 71); // վերջնական անկյուն և փոխակերպել rad- ից deg}

Անկյունների հաշվարկման լրացուցիչ բացը.

կրկնակի վերադարձ_անկյուն (կրկնակի a, կրկնակի b, կրկնակի c) {// կոսինուսի կանոն c- ի և վերադարձի acos- ի միջև անկյունի համար ((a * a + c * c - b * b) / (2 * a * c)); }

Քայլ 4. Հակադարձ կինեմատիկա

Հակադարձ կինեմատիկա
Հակադարձ կինեմատիկա

Հակադարձ կինեմատիկան գործում է հակառակը: Դուք միացնում եք ձեր շարժիչների պտույտը աստիճաններով, և դատարկությունը կթարմացնի ավելի վաղ սահմանված դիրքը:

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

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