formula del modello dinamico in forma matriciale in matlab
Inviato: 18 ott 2009, 16:37
da disperata87
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 ?
Re: formula del modello dinamico in forma matriciale in matlab
Inviato: 18 ott 2009, 18:13
da disperata87
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?
Re: formula del modello dinamico in forma matriciale in matlab
Inviato: 16 gen 2010, 15:20
da Concetto
ciao, onestamente non ho letto il codice però da quanto mi sembrerebbe di capire ti servirebbe
[a,b,c,d]=tf2ss(N,D)
e il viceversa:
[N,D]=ss2tf(a,b,c,d)