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.
     	
