Sunteți pe pagina 1din 14

Studiul miscarii simulatorului de zbor.

Platforma Stewart
Introducere
Platforma Stewart, uneori cunsocuta si sub numele de platforma Gough-Stewart
este o masina cu 6 grade de libertate si care permite o pozitionare si orientare
foarte precisa.
Ea este alcatuita din o platforma superioara legata de o platforma inferioara prin
intermediul a sase brate paralele. Cele sase brate pot fi alungite sau scurtate si
rotite cu ajutorul mai multor articulatii universale, astfel incat cele sase grade de
libertate pot fi reproduse cu mare precizie.
Platforma Stewart a fost proiectata in 1965 ca un simulator de zbor si inca este
folosita in acest scop. Totodata au fost gasite si alte domenii de aplicabilitate, cum
ar fi constructii aerospatiale si aparare, intretinere vehicule, proiectare mecanisme
de ridicare a macaralelor, constructii de nave, pozitionarea farfuriilor satelitilor de
comunicatii si a telescoapelor, constructia de poduri, si chiar platformele de foraj
pe Roverul lunar.

Definirea problemei
Platforma Stewart este o platforma cu control al miscarii si este unanim acceptata
pentru acest scop.
De aceea se pune problema realizarii practice, adica a gasi o metoda pentru a
actualiza fortele ce actioneaza asupra celor 6 brate, astfel incat sa se obtina o
pozitionare cat mai corecta a placii superioare a platformei Stewart in functie de
traiectoria dorita. Valorile acestor forte se pot schimba de-a lungul timpului. In
acest scop se doreste controul asupra intrarilor si iesirilor platformei Stewart.
Intrarile sunt fortele ce actioneaza asupra celor 6 brate, iar iesirile sunt lungimile si
vitezele celor 6 brate.
De aceea trebuie creata o strategie de control si proiectare astfel incat placa
superioara sa urmeze traiectoria dorita. Si aceasta se realizeaza prin actualizarea
fortelor ce actioneaza asupra celor 6 brate, folosirea senzorilor pentru a sti
lungimea si vitezele bratelor si citirea traiectoriei dorite.
Pana acum, adica pana la aparitia software de modelare si simulare cum ar fi
MatLab, in proiectarea Platformei Stewart se lucra direct cu ecuatiile care
modeleaza componentele fizice si aceasta cerea mult timp, prelucrarile erau
greoaie pentru ca erau necesare prelucrari numerice complexe
Specificatii
MatLab impreuna cu Simulink si SimMechanics permit inginerilor sa modeleze
sisteme complicate, sa simuleze si sa analizeze modelele, si sa dezvolte controlere
pentru sisteme mecanice. Platformele Stewart sunt folosite in multe aplicatii pentru
a pozitiona obiecte.
Constructia modelului Platformei Stewart cu ajutorul MatLab
Modelarea componentelor fizice cu SimMechanics
Modelul proiectat este alcatuit din un subsistem de baza(plant), Platforma Stewart
propriu-zisa cu toti senzorii si actuatorii necesari, si un subsistem de control
(controler) care ghideaza platforma pentru o miscare predefinita cu ajutorul
semnalelor de actuare. Controlerul tine miscarea actuala aproape de miscarea de
referinta prin intermediul raspunsului senzor-actuator.
Se va construi modelul general cu SimMechanics. Componentele mecanice sunt:
placa superioara, placa inferioara, cele 6 brate care conecteaza placa de sus cu
placa de jos. Intregul sistem are 6 grade de libertate. Fiecare subsistem brat este
alcatuit din doua corpuri conectate intre ele prin o articulatie cilindrica. Partea de
sus a bratului se conecteaza de placa de sus prin o articulatie universala, iar partea
de jos a bratului se conecteaza de placa de jos la fel, prin o articulatie universala.
Toate acestea sunt prezentate in figura de mai jos:
2

Prin folosirea blocurilor din corp Body se modeleaza corpurile rigide pentru
placa de baza, placa de sus si bratele partea superioara si partea inferioara.
Apoi, se conecteaza corpurile folosind blocurile Joint.
Cand se incepe constructia modelului fizic al Platformei Stewart trebuie definite
mai intai punctele de atasament relative la un cadru inertial (sau world) si aceasta
se realizeaza prin folosirea unui bloc Ground din biblioteca Bodies. Blocul
Ground actioneaza ca un punct fix pentru a atasa componentele sistemului.

Apoi se construiesc bratele Platformei Stewart prin conectarea blocului Ground


la blocul Universal Joint si conectarea acestuia la un bloc Body pentru a crea
bratul inferior. Apoi, se adauga un alt corp Body care reprezinta partea bratul
superior. Apoi, se foloseste un bloc Cilindrical Joint pentru a conecta bratul
inferior de bratul superior si astfel permitand bratului intreg pentru a-si ajusta
propria lungime prin miscarea in un grad de libertate de translatie si unul de rotatie.
Apoi, pur si simplu se adauga un alt bloc din Universal Joint conectat la blocul
bratul superior, care va fi atasat la placa superioara.
Miscarea de actuare liniara a Platformei Stewart se realizeaza prin variatia lungimii
bratelor. Pentru a misca bratele se foloseste un bloc Joint actuator din biblioteca
Senzori si actuatori. Acest actuator de articulatie este folosit pentru a controla
4

gradele de libertate de translatie ale articulatiei cilindrice (gradul de libertate de


rotatie este nelimitat). Se va crea un semnal al fortei pentru a fi folosit la actuare in
loc de a folosi deplasarea. Aceasta permite realizarea unui model mult mai realist
al Platformei Stewart unde actuatorii hidraulici se pot folosi pentru a aplica o forta
pe bratul superior si inferior.
De asemeni este necesar un senzor pentru a sesiza lungimea bratului si el se ia din
blocul Joint sensor din biblioteca Sensors &Actuators. Scopul este de a obtine
pozitia si viteza care vor fi folsoite ulterior de Controler.
Se vor crea astfel 6 instante ale bratelor pentru Platformei Stewart. Apoi se poate
conecta fiecare articulatie conectata la partea superioara a fiecarui brat la un bloc
din corpul care va fi placa superioara. Acesta reprezinta portiunea din Platforma
Stewart care va acepta intrari de actuare ale placii superioare precum si forta,
pozitia, si semnale ale vitezei.
Folosirea fisierelor script cu extensia m pentru a defini geometria
Aceste fisiere script permit crearea de modele mecanice complicate. Dupa ce s-au
creat componentele fizice ale Platformei Stewart trebuie definita geometria in
starea initiala si parametrii dinamici. Aceste variabile dinamice se vor scrie intr-un
fisier script MATLAB.
Astfel se vor defini unitatile unghiulare de conversie si axele:
deg2rad = pi/180;
x_axis = [1 0 0];
y_axis = [0 1 0];
z_axis = [0 0 1];
Apoi se definesc punctele de conexiune pe placa de baza si superioara cu privire la
sistemul de referinta ales centrat in centrul placii de baza. Definitiile de mai jos
reprezinta unghiul de deplasare de 60 grade intre placa de baza si cea superioara,
razele celor doua placi (superioara si inferioara) si inaltimea initiala a sistemului.
pos_base = [];
pos_top = [];
alpha_b = 2.5* deg2rad;
alpha_t = 10 * deg2rad;
height = 2.0;
radius_b = 3.0;
radius_t = 1.0;
5

for i=1:3,
%punctele pe platforma de baza
angle_m_b = (2*pi/3) * (i-1) alpha_b;
angle_p_b = (2*pi/3) * (i-1) + alpha_b;
pos_base(2*i 1, : ) = radius_b * [cos(angle_m_b), sin(angle_m_b), 0.0];
pos_base(2*i, : ) = radius_b * [cos(angle_p_b), sin(angle_p_b), 0.0];
%punctele pe platforma superioara (cu o deplasare de 60 grade)
angle_m_t = (2*pi/3) * (i-1) alpha_t + 2*pi/6;;
angle_p_t = (2*pi/3) * (i-1) + alpha_t + 2*pi/6;;
pos_top(2*i 1, : ) = radius_t * [cos(angle_m_t), sin(angle_m_t), height];
pos_top(2*i, : ) = radius_t * [cos(angle_p_t), sin(angle_p_t), height];
end
In continuare se efectueaza operatia de permutare a tabloului cu punctele
superioare astfel incat indexul punctelor superioare si indexul punctelor inferioare
se refera la punctele de conexiune pentru un singur brat. Au fost definite de
asemenea si punctele din placa superioara in raport cu sistemul de coordonate. Sunt
calculati vectorii bratelor si vectorii unitari ai bratelor .
pos_top = [ pos_top(6,:); pos_top(1:5, : )];
body_pts = pos_top height*[zeros(2, 6); ones(1, 6)];
legs = pos_top pos_base;
leg_length = [ ];
leg_vectors = [ ];
for i = 1:6,
leg_length(i) = norm(legs(i, :));
leg_vectors(i, :) = legs(i, :) / leg_length(i);
end
In continuare se prezinta o bucla care calculeaza axele de rotatie si cilindrice care
vor fi datele de intrare in blocurile de articulatii din modelul fizic al Platformei
Stewart.
Exista doua axe de rotatie pentru blocul de articulatie Universal care este conectat
la placa superioara, o axa cilindrica si una de rotatie pentru miscarea liniara a
blocului de articulatie Cilindrica, si doua axe de rotatie pentru blocul de articulatie
Universal care este conectat la placa de baza.
for i = 1:6,
rev1(i, :) = cross(leg_vectors(i, :), z_axis);
6

rev1(i, :) = rev1(i, :) / norm(rev1(i, :));


rev2(i, :) = - cross(rev1, :), leg_vectors(i, :));
rev2(i, :) = rev2(i, :) / norm(rev2(i, :));
cyl1(i, :) = leg_vectors(i, :);
rev3(i, :) = rev1(i, :);
rev4(i,:) = rev2(i, :);
end
Pentru fiecare bloc este necesara definirea unui sistem de coordonate pentru centrul
de greutate:
lower_leg = struct(origin, [0 0 0], rotation, eye(3), end_point, [0 0 0]);
upper_leg = struct(origin, [0 0 0], rotation, eye(3), end_point, [0 0 0]);
for i=1:6,
lower_leg(i).origin = pos_base(i, :) + (3/8) * legs(i, :);
lower_leg(i).end_point = pos_base(i, :) + (3/4) * legs(i, :);
lower_leg(i).rotation = [rev1(i, :), rev2(i, :), cyl1(i, :)];
upper_leg(i).origin = pos_base(i, :)+ (1 - 3/8) * legs(i, :);
upper_leg(i).end_point =pos_base(i, :)+ (1/4) * legs(i, :);
upper_leg(i).rotation = [rev1(i, :), rev2(i, :), cyl1(i, :)];
end
Apoi se va calcula inertia si masa pentru placa superioara, placa inferioara si brate.
In calcule se foloseste densitatea otelului.
top_thickness=0.05;
base_thicknes = 0.05;
inner_radius = 0.03;
outer_radius = 0.05;
density = 76e3/9.81; %kg/m^3;
Inertia bratului si masa sunt calculate cu ajutorul unei functii numita
inertiaCylinder. Aceasta calculeaza masa si inertia unui cilindru dandu-se
densitatea, lungimea si raza inferioara si raza superioara a acelui cilindru.
[lower_leg_mass, lower_leg_inertia = inertiaCylinder(density, ...
0.75*leg_length(1), outer_radius, inner_radius);
[upper_leg_mass, upper_leg_inertia = inertiaCylinder(density, ...
0.75*leg_length(1), inner_radius, 0);

Se calculeaza apoi inertia si masa placilor inferioara si superioara folosind aceeasi


functie care a fost folosita pentru brate, folosind ca date de intrare densitatea,
grosimea placii si raza placii.
[top_mass, top_inertia] = inertiaCylinder(density, ...
top_thickness, radius_t, 0);
[base_mass, base_inertia] = inertiaCylinder(density, ...
base_thickness, radius_t, 0);
Strategia controlerului
In aplicatiile uzuale problema cinematica directa este mai usoara decat problema
cinematica inversa. Problema cinematcia directa calculeaza pozitia si orientarea
Platformei Stewart dandu-se unghiurile in timp ce problema cinematica inversa
calculeaza unghiurile multiple ale articulatiilor dandu-se pozitia si orientarea
Platformei Stewart. Pentru aceasta platforma sunt usor de calculat unghiurile
articulatiilor si lungimea bratelor dandu-se pozitia si orientarea placii superioare a
platformei.
Scopul de baza al acestui controler este de a specifca traiectoria dorita a placii
superioare atat ca pozitie cat si ca orientare.
Apoi se traseaza traiectoria dorita la traiectoria corespunzatoare a bratelor folosind
problema cinematica inversa. In final se foloseste un controler simplu pentru
fiecare brat pentru a comanda acel brat ca sa urmeze traiectoria dorita.
In acest fel se evita rezolvarea problemei cinematice directe pentru Platforma
Stewrat, care este foarte dificila.
Controlerul este alcatuit din 2 parti: traiectoria bratului si controlerul insusi.
Traiectoria bratului genereaza lungimile dorite ale bratului la fiecare moment de
timp. Ecuatia de mai jos calculeaza lungimile bratelor pentru fiecare brat:
|| (R * pt,i+ p) pb,i || = ln,i
R - este matricea de rotatie, care face legatura intre orientarea placii superioare in
raport cu placa inferioara;
pt,i - este punctul de atasare al bratului i in placa superioara in raport cu sistemul de
coordonate al placii superioare;
p este pozitia placii superioare in raport cu placa inferioara;
pb,i este punctul de atasare al bratului i in placa de baza in raport cu sistemul de
coordonate al placii de baza;
ln,i este lungimea nominala a bratului i;
Subsistemul traiectorie al bratului si din toate celelalte blocuri in acest subsistem
implementeaza aceasta ecuatie pentru fiecare din cele 6 brate.

Controlerul PID simplu de nivel scazut

Se implementeaza mai intai un controler simplu de nivel scazut avand la baza


proiectarea clasica a PID-ului. Ca date de intrare la acest controler se folosesc:
pozitia actuala a bratului,viteza si pozitia dorita a bratului. Subsistemul traiectorie a
bratului nu genereaza viteze ale bratului, desi unul mai complicat ar putea. Apoi se
genereaza o eroare in pozitie si se creaza o forta bazata pe castigul si integrarea
erorii. Se furnizeaza si un termen numit raspuns viteza.
Se pot dezvolta controlere de nivel scazut mult mai complexe, dar in primul rand
este necesara liniarizarea la un punct de echilibru.
Liniarizarea modelului
Se extrage un model liniar al Platformei Stewart astfel incat sa se poata folosi
tehnicile de proiectare ale controlului liniar. Acestea sunt in Synthesis Toolbox.
In primul rand se cauta punctul de echilibru al modelului neliniar dat. Se face
aceasta prin extragerea fortelor de echilibru pentru fiecare brat care tine Platforma
Staewart in regim stationar. Acestea sunt fortele care sunt aplicate cand sistemul
este in starea initiala de repaus.
Pentru a aceasta, se extrage un model al Platformei Stewart intr-un nou model
Simulink. Apoi se seteaza proprietatea blocului Actuator la miscare si se seteaza
pozitia , viteza si acceleratia la zero. De asemeni se seteaza blocul Sensor pentru
9

fiecare picior ca sa extraga forta calculata. Pentru a gasi punctul de echilibru unde
forta rezultanta asupra modelului este zero, trebuie schimbat parametrul lui
Analysis Mode.
In modelul Simulink, se selecteaza din meniul Simulation Mechanical
Environment Settings. Aceasta va afisa parametrii mecanici care se seteaza pentru
modelul in studiu. Prin schimbarea modului analiza Analysis Mode,
SimMechanics va putea calcula miscarea care rezulta prin aplicarea fortelor la un
sistem mecanic sau fortele cerute pentru a produce o miscare specifica intr-un
sistem mecanic.
Aici se selecteaza modul Kinematic Analysis Mode pentru ca Platforma Stewart
este un sistem tip bucla inchisa si se doreste a calcula fortele aplicate fara ca
sistemul sa se miste. Odata ce aceasta optiune a fost selectata, se simuleaza
modelul si se foloseste iesirea de la blocurile Sensor pentru a obtine forta care va
fi aplciata la blocurile Actuator pentru fiecare brat in parte cand Platforma
Stewart este in pozitia de repaus.
Pentru aceasta se scrie la prompterul MATLAB:
Sim(StewartPlatformEquilibrium); u=Forces;
Acum se pot extrage modelele liniare. Pentru a liniariza modelul langa punctul de
echilibru se poate folosi comanda linmod pe modelul fizic al Platformei Stewart:
[A, B, C, D] = linmod(StewartPlatformPlant, [], u);
Aceasta va genera un model spatiu-stare LTI dintr-un model SimMechanics pentru
a-l folosi ca data de intrare la Central Control Systems Toolbox si la comenzile
Synthesis Toolbox care genereaza modele de controlere.
Comanda de liniarizare intoarce un sistem LTI cu acelasi numar de stari cu
numarul de stari din arborele sistemului mecanic (in acest caz sunt 52).
Se poate folosi functia minreal pentru a obtine realizarea minima a modelului cu 12
stari.
[A, B, C, D] = minreal(A, B, C, D);
Acestea sunt matricile spatiu-stare care se vor folosi pentru a proiecta controlerul
Platformei Stewart.

10

Proiectarea controlerului multivariabile

Pentru proiectarea controlerului multivariable se foloseste Control System


Toolbox si Synthesis Toolbox. Se obtine un controler robust pentru Platforma
Stewart.
Procedura de sinteza foloseste procedura de proiectare in forma de bucla a lui
H_infinity, asa cum a fost prezentata in (1) si este strans legata de notiunea de a
ajunge la o robustete optima(2). Detaliile sunt prezentate in fisierul
StewartMVController.m

11

Simularea si vizualizarea modelului


Dupa ce sistemul a fost modelat cu Simulink si Simmechanics se trece la validare
prin simularea sistemului.

Se porneste simularea prin selectarea lui Simulink si se apasa Start in bara de


meniu a ferestrei modelului.
In timpul simularii se pot vedea semnalele in fereastra Scope.
Primul desen arata valorile x, y si zale pozitiei blocului Body ce reprezinta placa
superioara in miscare in timp asa cum modelul simuleaza.
Al doilea desen arata diferenta intre valoarea dorita a lungimii bratului calculata in
subsistemul Leg Trajectory si valoarea actuala a lungimilor bratului care se
schimba in timp.
Al treilea desen arata forta asupra fiecarui brat in timpul simularii.
12

Se poate folosi optiunea grafica din MATLAB Virtual Reality Toolbox pentru a
crea animatii 3D pentru sistemele proiectate cu SimMechanics.
Fiecare unealta poate fi folosita pentru a analiza rezultatele numerice care
cuantifica miscarea sistemului mecanic.
Pentru a vizualiza animatiile se alege tabul Visualisation din Mechanical
Environment Settings, care furnizeaza 2 optiuni pentru a reprezenta formele
fiecarui corp, elipsoizi echivalenti sau corpuri convexe.
Elipsoizii echivalenti sunt forme ale corpului bazate pe proprietatile de masa si de
inertie.
Corpurile convexe sunt forme ale corpului bazate pe sistemele de coordonate.

13

Odata ce s-au selectat formele sub care se doreste vizualizarea, se cere lui
SimMechanics sa afiseze reprezentarea animata in timpul simularii.
Si apoi se poate simula modelul.

14