RI Lucrare5

11
Lucrarea 5 Programarea în virgulă fixă. Aplicaţie pentru obţinerea preciziei maxime în poziţionarea unui robot SCARA

description

Lucrarea5

Transcript of RI Lucrare5

Page 1: RI Lucrare5

Lucrarea 5

Programarea în virgulă fixă. Aplicaţie pentru obţinerea preciziei maxime în

poziţionarea unui robot SCARA

Page 2: RI Lucrare5

În lucrare studentul va realiza:Parcurgerea noţiunilor introductive. Rularea aplicaţiei demonstrative, necesară pentru obţinerea unei poziţionări corecte a braţului robotului SCARA.Rezolvarea aplicaţiilor şi a programelor cerute

Page 3: RI Lucrare5

Exemplu de înmulţirire a două numere pe 16 biţi cu semn, in format Q.15

bitinr 16.=a bitinr 16.=b

*biti32

1<<

16>>

=rezultat

bitinr 16.

Page 4: RI Lucrare5

Probleme specifice programării în virgulă fixă şi soluţii uzuale

1. Posibilitatea de depăşire a limitelor de reprezentare în timpul execuţiei programului

2. Necesitatea transpunerii numerelor din lumea reală în formatul specific („nativ”) al procesorului – numere întregi pe 8, 16 sau 32 de biţi, utilizând cât mai bine puterea de reprezentare a formatului existent. Soluţia este scalarea mărimilor

+−

01−

3276732768−

Page 5: RI Lucrare5

Reprezentarea în virgulă fixă cu numere subunitare are avantajul important că prin operaţia de înmulţire nu se depăşeşte capacitatea de reprezentare (produsul a două numere subunitare este tot subunitar).

Limitele de reprezentare pentru numere pe 16 biţi, cu semn

Intervalul de reprezentare la nivelul procesorului, ca numere intregi

Intervalul de reprezentare în interpretarea fracţionară de către programator

[-32768…32767] [-1, 1) (mai precis [-1...0.9999695])

)(−

0

3276732768−

1638416384−

)(+ )(−

0

11−

5.05.0−)(+

Reprezentarea numerelor întregi cu semn pe 16 biţi: (a) cu numere întregi şi (b)formatul echivalent Q.15, în interpretare fracţionară

Page 6: RI Lucrare5

APLICAŢIA 1. Poziţionarea braţului folosind reprezentarea în virgulă fixă

1l

2l

x

y

iyir

ixθ

),( ii yxA

γ

43421444 3444 21θ=γ=

⎟⎟⎠

⎞⎜⎜⎝

⎛+⎟

⎟⎠

⎞⎜⎜⎝

⎛ +−=θ+γ=θ

i

i

i

irx

rlrll

arccos2

arccos1

222

21

1

⎟⎟⎠

⎞⎜⎜⎝

⎛ +−=γ

i

i

rlrll

1

222

21

2arccos i

ii

Ci

C

rCr

Crlrl

ll21

2

1

1

1

22

21 1

211

21arg +=⎟⎟

⎞⎜⎜⎝

⎛+⎟

⎟⎠

⎞⎜⎜⎝

⎛ −=

32143421

⎟⎟⎠

⎞⎜⎜⎝

⎛ −+=θ

21

222

21

2 2arccos

llrll i 2

432

2121

22

21

43

21

22arg ii

CC

rCCrllll

ll−=⎟⎟

⎞⎜⎜⎝

⎛−⎟⎟⎠

⎞⎜⎜⎝

⎛ +=

32143421

Page 7: RI Lucrare5

Procedeul de scalare pentru a trece în formatul Q15.

Pasul 1. Raportarea tuturor mărimilor de intrare. Raportarea tuturor mărimilor de intrare şide ieşire la nişte valori maxime, alese astfel încât mărimile să devină subunitare. Marimile de iesire nu s-au raportat la nimic, fiind argumente ale functiei arccos. Valorile raportate sunt:

MAXDIMxx real

r _= MAXDIM

yy realr _=

Pasul 2. Aceste rapoarte se pun în evidenţă în expresia de calcul a ieşirii, şi se modifică coeficienţii astfel încât să se pastreze echivalenţa expresiei (cu cea iniţială).

( )

( ) rr

i

i

rMAXDIMCrMAXDIM

C

MAXDIMr

MAXDIMCr

MAXDIMMAXDIM

C

⋅⋅+⎟⎟⎠

⎞⎜⎜⎝

⎛=

=⋅+⎟⎟⎠

⎞⎜⎜⎝

⎛=

_1_

___

_1arg

21

21

Pasul 3. Noii coeficienţi (pentru simplitate nu s-a schimbat notaţia), obţinuţi la pasul anterior, se raportează la (cel puţin) maximul lor, pentru a deveni subunitari. Expresia devine:

( )MAXCOEFr

MAXCOEFMAXDIMC

rMAXCOEFMAXDIM

C

rr

__

_1_

_1arg 2

1

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⋅⋅

+⎟⎟⎠

⎞⎜⎜⎝

=

( )⎟⎟⎠

⎞⎜⎜⎝

⎛⋅⎟⎟

⎞⎜⎜⎝

⎛= MAXDIMC

MAXDIMC

MAXCOEF _,_

max_ 21

Page 8: RI Lucrare5

Programul demonstrativ% Scalarea coeficientilor C1, C2, C3 si C4 din exemplul SCARA, in Matlab% Coeficientii C1...C4 apar in expresiile de calculul al argumentelor arg1 si arg2%===============================================================% Constantele date%===============================================================L1 = 12; % [cm] Lungimea primului segment, articulat in punctul de sprijin al bratuluiL2 = 8; % [cm] Lungimea celui de-al doilea segment%===============================================================% Pasul 1. Stabilirea limitelor maxime in care se pot incadra variabilele de intrare si iesire.% In cazul de fata variabilele de intrare se folosesc in programul NXC pentru calculul % argumentelor functiei arccos. Aceste argumente trebuie sa rezulte in intervalul [-1, 1),% deci nu e nevoie sa le raportam la o limita maxima.%===============================================================% Limita maxima a zonei de acoperire a bratului robotului este un cerc cu raza data% de cele doua brate in prelungire, deci egala cu DIM_MAX = L1+L2.DIM_MAX = L1 + L2% Se alege o putere a lui 2 imediat urmatoare:% DIM_MAX = 2^(ceil(log2(DIM_MAX)))% Coef C1 si C2 intra in calculul argumentului arg1% Prin raportarea variabilelor de intrare x si y la valoarea DIM_MAX,% coeficientii C1 si C2 se modifica astfel:C1 = (L1^2 - L2^2)/(2*L1) / DIM_MAXC2 = 1/(2*L1) * DIM_MAX% Coef C3 si C4 intra in calculul argumentului arg2% Coef rezultati:C3 = (L1^2 + L2^2)/(2*L1*L2)C4 = 1/(2 * L1 * L2) * (DIM_MAX)^2

% Pasul 2. Alegerea coeficientului maxim COEF_MAX (putere a lui 2) astfel % incat coeficientii sa devina subunitari prin raportarea la COEF_MAX.%=====================================================================% pentru C1 si C2:COEF_C1C2 = 2^(ceil(log2(max(C1,C2))));SH_C1C2 = (ceil(log2(max(C1,C2))))% COEF_C1C2 = ceil(max(C1,C2)) % pt varianta fara puteri ale lui 2% pentru C3 si C4:COEF_C3C4 = 2^(ceil(log2(max(C3,C4))));SH_C3C4 = (ceil(log2(max(C3,C4))))% COEF_C3C4 = ceil(max(C3,C4)) % pt varianta fara puteri ale lui 2%=====================================================================% Pasul 3. Calculul coeficientilor scalati%=====================================================================% pentru C1 si C2:C1_sc = C1 * 32767/COEF_C1C2;C1_sc = floor(C1_sc + 0.5) % rotunjireC2_sc = C2 * 32767/COEF_C1C2;C2_sc = floor(C2_sc + 0.5) % rotunjire% pentru C3 si C4:C3_sc = C3 * 32767/COEF_C3C4;C3_sc = floor(C3_sc + 0.5) % rotunjireC4_sc = C4 * 32767/COEF_C3C4;C4_sc = floor(C4_sc + 0.5) % rotunjiredisp('---------------------------------')%---------------------------------------------------------------------------------------------------------------------------

Page 9: RI Lucrare5

APLICAŢIA 2. Extinderea şi testarea programului

Preluând construcţia realizată în lucrarea precedentă pentru braţul de robot şi urmărind programul demonstrativ prezentat, se vor parcurge următoarele etape:Se va realiza poziţionarea braţului robotului în planul (XOY). Robotul se află într-o poziţiede referinţă (cunoscută);Se vor alege puncte de coordonate tina in zona de actiune a robotului. Se va realiza o rutina pentru calculul unghiurilor de control ale bratului in Matlab. Rezultatele obtinute in Matlab se vor compara cu cele obtinute la robot, prin rulareaprogramului demonstrativ din NXC.Pornind de poziţia iniţială cunoscută, de start, a braţului robotului, se aleg mai multe puncte ţintă de atins, consecutiveMişcările braţului robotului se vor executa într-un singur plan, de exemplu planul orizontal;Se va modifica programul astfel încât să se permită poziţionarea capătului braţului în tot domeniul spaţiului de operare posibil .Indicaţie: Se poate modifica programul astfel încât să funcţioneze corect în toate cadranele. Programul va realiza o poziţionare a braţului robotului SCARA în planul de lucru cât mai precisă Robotul se opreşte în punctele (locaţiile) programate pentru un timp stabilitDupă atingerea unui punct se trece la următorul punct de coordonate impuse.Testarea programului: Pentru fiecare punct de coordonate xi,yi dorit (ţinta de atins), se va verifica corectitudinea datelor obţinute. Se măsoară coordonatele atinse şi se compară cu cele dorite.

Page 10: RI Lucrare5

APLICAŢIA 3. Realizarea unui manipulatorPrin analogie cu o situaţie reală, în care o sarcină cerută unui robot SCARA este manipularea unor obiecte, se va completa structura mecanică a braţului de robot cu un element terminal care să permită mutarea unor obiecte în spaţiul de operare. Se va ataşa construcţiei mecanice un al treilea motor NXT care va permite deschiderea şi închiderea efectoruluiSe poate construi un element efector de tip cleşte;Se aleg puncte de coordonate ţintă din spaţiul de lucru, în care se va muta piesa Mişcările braţului robotului se vor executa în plan;Se va adaugă o secvenţă de cod care va deschide şi respectiv închide cleştele în funcţie de necesităţi; Paşii de executat de braţul robotului:

În poziţia iniţială braţul este aliniat după o axă, iar cleştele deschis;Se deplasează braţul robotului către obiectul de mutat. Braţul s-a poziţionat la o distanţă minimă de obiect, astfel încât piesa nu este lovită. Mişcarea de prindere a obiectului din spaţiul de operare se va realiza cu o viteză redusă.Cleştele apucă piesa şi se închide. ATENTIE: Pentru a nu suprasolicita motorul în poziţia blocată să se oprească rotirea acestuia în momentul în care nu se mai citeşte nicio variaţie a unghiului acestuia, de la encoder (adică atunci când cleştele este strâns).Cleştele va transfera obiect în punctul de coordonate doritSe deschide cleştele, braţul se retrage cu o distanţă minimă faţă de obiect şi se închide.

Page 11: RI Lucrare5

APLICAŢIA 4. Secvenţe complexe pentru manipulator

Se va completa programul demonstrativ pentru ca braţul să execute o secvenţă de mutări pre-programate, date printr-un şir de coordonate. Se va muta obiectul oriunde în mediul de operare. Robotul se opreşte în punctele (locaţiile) programate, obiectul este plasat 5sec. în fiecare poziţia aleasă. Se memorează locaţiile atinse.Se va deschide şi închide cleştele utilizând senzorul tactil, ataşat robotului. Operaţii realizate de operatorul uman: senzor apăsat lung - cleştele se deschide, senzor apăsat scurt –cleştele se închide, senzor tactil lăsat liber – cleşte deschis.Manipulatorul-robot a răspuns corect la comenzi? Se va întreprinde un schimb de experienţă între studenţi, privind codurile realizate, testele efectuate şi construcţiile mecanice dezvoltate.