RI Lucrare5
description
Transcript of RI Lucrare5
Lucrarea 5
Programarea în virgulă fixă. Aplicaţie pentru obţinerea preciziei maxime în
poziţionarea unui robot SCARA
Î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
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.
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−
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ă
APLICAŢIA 1. Poziţionarea braţului folosind reprezentarea în virgulă fixă
1l
2l
1θ
2θ
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
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
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('---------------------------------')%---------------------------------------------------------------------------------------------------------------------------
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.
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.
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.