formula del modello dinamico in forma matriciale in matlab
-
disperata87
10 1 4 - New entry

- Messaggi: 73
- Iscritto il: 25 lug 2009, 12:39
0
voti
[1] formula del modello dinamico in forma matriciale in matlab
Riformulo la domanda: ho la rappresentazione in forma matriciale, in linguaggio matlab, del robot : è possibile riportarla sempre in matlab nella forma dello spazio di stato x = f(x) + g(x) u ?
-
disperata87
10 1 4 - New entry

- Messaggi: 73
- Iscritto il: 25 lug 2009, 12:39
0
voti
[2] Re: formula del modello dinamico in forma matriciale in matlab
cerco di spiegare meglio quello che ho e quello che vorrei. Io ho i seguenti codici in matlab:
matrici_del_modello.m
%% dichiarazione delle variabili
syms th1 th2 th3 z1 z2 real
syms dth1 dth2 dth3 dz1 dz2 real
syms m Mh Mt g L r real
syms th1d th3d
syms a01 a11 a21 a31
syms a02 a12 a22 a32
%% coordinate
q=[th1;th2;th3];
%% derivate prime delle coordinate
dq=[dth1;dth2;dth3];
%% posizione delle masse nel sistema, o meglio, dei centri di massa dei
%% links, rispettivamente della gamba 1, dell'hip, del torso, della
%% gamba due
p_m1=[r/2*sin(th1); r/2*cos(th1)];
p_Mh=[r*sin(th1); r*cos(th1)];
p_Mt=p_Mh+[L*sin(th3); L*cos(th3)];
p_m2=p_Mh-[r/2*sin(th2); r/2*cos(th2)];
%% velocità delle masse del sistema
v_m1=jacobian(p_m1,q)*dq;
v_Mh=jacobian(p_Mh,q)*dq;
v_Mt=jacobian(p_Mt,q)*dq;
v_m2=jacobian(p_m2,q)*dq;
%% Energia cinetica delle masse del sistema
%
KE_m1=simple(m/2*v_m1'*v_m1);
KE_Mh=simple(Mh/2*v_Mh'*v_Mh);
KE_Mt=simple(Mt/2*v_Mt'*v_Mt);
KE_m2=simple(m/2*v_m2'*v_m2);
%% energia cinetica totale del sistema
%
KE=KE_m1+KE_Mh+KE_Mt+KE_m2;
%% energia potenziale delle masse del sistema
%
PE_m1=p_m1(2)*m*g;
PE_Mh=p_Mh(2)*Mh*g;
PE_Mt=p_Mt(2)*Mt*g;
PE_m2=p_m2(2)*m*g;
%% energia potenziale complessiva del sistema
%
PE=PE_m1+PE_Mh+PE_Mt+PE_m2;
%% matrici D, C, G, B, and F matrices of
%%
%% D(q)ddq+C(q,dq)dq+G(q)=B*tau
%%
%% ove tau=[tau1; tau2]
D=simplify(jacobian(jacobian(KE,dq).',dq));
N=max(size(q));
syms C
for k=1:N,
for j=1:N,
C(k,j)=0*g;
for i=1:N,
C(k,j)=C(k,j)+1/2*(diff(D(k,j),q(i))+...
diff(D(k,i),q(j))-...
diff(D(i,j),q(k)))*dq(i);
end
end
end
G=jacobian(PE,q).';
%% matrice B
%
T=[-1 0 1;
0 -1 1;
0 0 1]*q;
B=jacobian(T,q)'*[1 0;
0 1;
0 0];
-----------------------------
parametri_del_modello.m
function [r,m,Mh,Mt,L,g]= matrici_del_modello
r=1; % lunghezza gamba
m=5; % massa della gamba
Mh=15; % massa delle anche
Mt=10; % massa del torso
L=0.5; % distanza tra le anche e il torso
g=9.8; % acceleratione di gravità
è possibile risalire alla forma nello spazio di stato?
matrici_del_modello.m
%% dichiarazione delle variabili
syms th1 th2 th3 z1 z2 real
syms dth1 dth2 dth3 dz1 dz2 real
syms m Mh Mt g L r real
syms th1d th3d
syms a01 a11 a21 a31
syms a02 a12 a22 a32
%% coordinate
q=[th1;th2;th3];
%% derivate prime delle coordinate
dq=[dth1;dth2;dth3];
%% posizione delle masse nel sistema, o meglio, dei centri di massa dei
%% links, rispettivamente della gamba 1, dell'hip, del torso, della
%% gamba due
p_m1=[r/2*sin(th1); r/2*cos(th1)];
p_Mh=[r*sin(th1); r*cos(th1)];
p_Mt=p_Mh+[L*sin(th3); L*cos(th3)];
p_m2=p_Mh-[r/2*sin(th2); r/2*cos(th2)];
%% velocità delle masse del sistema
v_m1=jacobian(p_m1,q)*dq;
v_Mh=jacobian(p_Mh,q)*dq;
v_Mt=jacobian(p_Mt,q)*dq;
v_m2=jacobian(p_m2,q)*dq;
%% Energia cinetica delle masse del sistema
%
KE_m1=simple(m/2*v_m1'*v_m1);
KE_Mh=simple(Mh/2*v_Mh'*v_Mh);
KE_Mt=simple(Mt/2*v_Mt'*v_Mt);
KE_m2=simple(m/2*v_m2'*v_m2);
%% energia cinetica totale del sistema
%
KE=KE_m1+KE_Mh+KE_Mt+KE_m2;
%% energia potenziale delle masse del sistema
%
PE_m1=p_m1(2)*m*g;
PE_Mh=p_Mh(2)*Mh*g;
PE_Mt=p_Mt(2)*Mt*g;
PE_m2=p_m2(2)*m*g;
%% energia potenziale complessiva del sistema
%
PE=PE_m1+PE_Mh+PE_Mt+PE_m2;
%% matrici D, C, G, B, and F matrices of
%%
%% D(q)ddq+C(q,dq)dq+G(q)=B*tau
%%
%% ove tau=[tau1; tau2]
D=simplify(jacobian(jacobian(KE,dq).',dq));
N=max(size(q));
syms C
for k=1:N,
for j=1:N,
C(k,j)=0*g;
for i=1:N,
C(k,j)=C(k,j)+1/2*(diff(D(k,j),q(i))+...
diff(D(k,i),q(j))-...
diff(D(i,j),q(k)))*dq(i);
end
end
end
G=jacobian(PE,q).';
%% matrice B
%
T=[-1 0 1;
0 -1 1;
0 0 1]*q;
B=jacobian(T,q)'*[1 0;
0 1;
0 0];
-----------------------------
parametri_del_modello.m
function [r,m,Mh,Mt,L,g]= matrici_del_modello
r=1; % lunghezza gamba
m=5; % massa della gamba
Mh=15; % massa delle anche
Mt=10; % massa del torso
L=0.5; % distanza tra le anche e il torso
g=9.8; % acceleratione di gravità
è possibile risalire alla forma nello spazio di stato?

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
