Page 38 - MATINF Nr. 4
P. 38
38 G.C. Stanciu
Programarea
Programarea acestui tip de sistem de rulare este mai complex˘a decˆat a unor rot , i simple, deoarece
modul special de funct , ionare nu ne mai permite s˘a folosim sisteme de control precum cel tanc
(puteri separate aplicate fiec˘arei laterale a robotului). De asemenea, s , i robotul trebuie s˘a fie
gˆandit ˆın jurul acestor rot , i, ˆıntrucˆat un robot cu o distribut , ie inegal˘a a greut˘at , ii va provoca o
diferent , ˘a ˆın tract , iunea rot , ilor, astfel modificˆandu-se rotat , ia fiec˘arei rot , i s , i pierzˆandu-se efectul
Mecanum.
Exist˘a dou˘a metode de control pentru
acest sistem de rot , i: prin coordonate car-
teziene (X, Y, rotat , ie – folosit atunci cˆand
se controleaz˘a folosind un joystick), sau prin
coordonate polare (vitez˘a deplasare, unghi
direct , ie, vitez˘a rotat , ie).
Vom explica modul de programare al
rot , ilor folosind coordonate carteziene, iar con-
versia de la coordonate polare la coordonate
Fig. 2: Modul de rotire al rot , ilor ˆımpreun˘a cu
carteziene dac˘a este necesar˘a va fi f˘acut˘a prin
direct , ia robotului
operat , ii matematice.
Avˆand ˆın vedere modul de funct , ionare al rot , ilor Mecanum, ne vom folosi de graficul din
dreapta pentru a crea un algoritm care va converti direct , iile furnizate de joystick (mis , care dorit˘a
a robotului) ˆın putere pentru rot , i.
Pentru acest exemplu, am considerat c˘a folosim un joystick pentru a controla robotul, maneta
din stˆanga reprezentˆand mis , carea fat , ˘a-spate (axa vertical˘a Y) s , i lateral˘a (axa orizontal˘a Z), iar
ˆ
maneta din dreapta reprezentˆand mis , carea de rotat , ie (axa orizontal˘a a manetei fiind axa Z). In
plus, am considerat c˘a direct , ia de mers a motoarelor a fost calibrat˘a deja ˆın program (direct , ia
motoarelor de pe o parte inversat˘a).
Puterile care vor fi transmise la motor vor fi urm˘atoarele:
front left pwr = + x + y + z;
front right pwr = + x - y - z;
back left pwr = + x - y + z;
back right pwr = + x + y - z;
Atunci cˆand vom crea un program autonom pentru robot, este indicat s˘a folosim sistemul de
coordonate polar, s , i nu cel cartezian, deoarece nu gˆandim efectiv ˆın viteze separate pentru axele
X, Y sau Z, ci doar ˆın vitez˘a s , i unghi de deplasare s , i vitez˘a de rotat , ie.
Conversia coordonatelor se va face astfel:
x = viteza deplasare * cosinus(directie radiani)
y = viteza deplasare * sinus (directie radiani)
z = viteza rotatie
Urm˘atorul exemplu este scris˘a ˆın limbajul Java, pentru robot , i care folosesc sistemul de
control specific competit , iilor FirstTechChallenge. Vom include doar cont , inutul clasei mecanum.