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.
   33   34   35   36   37   38   39   40   41   42   43