Pagina 1 di 1

Matlab inversione matrice rototraslazione

Inviato: mar 20 apr 2010, 22:03
da odiusseus
Salve ragazzi lo so che qui si mastica meglio il C ma ho uno stramaledetto problema con un progetto di biomeccanica!!! Non so se vuoi usate matlab o similari ma forse il mio più che un problema di sintassi è un problema di concetto!!! ora posto la parte di programma che mi sta facendo diventare scemo!!!

Codice: Seleziona tutto

lasi2rasi=diff(pelvis(:,:,[1,2]),1,3)

opl_0=point2line(pelvis(:,:,1),pelvis(:,:,2),sacr); 
xpl_0=opl_0-sacr;
[temp,xpl_0]=mvarray(xpl_0);

ypl_0=cross(lasi2rasi,xpl_0);
[temp,ypl_0]=mvarray(ypl_0); %rende ypl_0 di modulo unitario

zpl_0=cross(xpl_0,ypl_0);
[temp,zpl_0]=mvarray(zpl_0);

R0pl=cat(3,xpl_0,ypl_0,zpl_0);

R0pl=permute(R0pl,[2,3,1]);

T0pl=[R0pl permute(opl_0,[2,3,1])]

T0pl(4,4,:)=1;
allora questa parte di codice dice che opl_0 è il centro del bacino calcolato attraverso un vettore che proietta un punto sull'osso sacro (più o meno) su un segmento che si trova tra due marker posti anteriormente al bacino (uno a destra ed uno a sinistra). Questa è l'origne del sistema di riferimento visto da una telecamera. xpl_0 ypl_0 e zpl_0 sono i versori del sistema di riferimento della telecamera. R0pl è la matrice di rotazione e T0pl è la matrice di rototraslazione

Codice: Seleziona tutto

T0pl=[R0pl   opl_0;0 0 0 0 1]
il numero di zeri è pari al numero di elementi sull'ultima riga meno l'ultimo che è 1. Ora devo invertire la matrice T0pl in Tpl0 sioè devo passare dal sistema di riferimento della telecamera al sistema di riferimento del bacino!!! Questa operazione si fa algebricamente come

Codice: Seleziona tutto

T0pl=[R0pl^T -R0pl^T*opl_0; 0 0 0 0 1]
il mio problema è che non posso trasporre semplicemte la matrice T0pl ma devo trovare una strada alternativa proprio come ho fatto per la sua costruzione. Questo è una problema di trasformazioni omogenee molto usato in robotica...ma io di robotica ne so un po' pochina...
Se vi serve mi vetto a disposizione tutto il codice del "programma"..grazie

Re: Matlab inversione matrice rototraslazione

Inviato: gio 22 apr 2010, 19:09
da absinthe
abbi pazienza ma non ci ho capito un tubo. potresti chiarire il problema?! il concetto è chiaro tu hai una matrice di rototraslazione o se preferisci - io preferiso- un vettore di traslazione e una matrice di rotazione. ma cosa è che non funziona?!

se i dati in tuo possesso sono in un sistema di riferimento A e li vuoi portare in un sistema B, detta Xa la matrice dei dati, Rab quella di rotazione da A a B e Tab il vettore di traslazione si ha che:

Xb=Rab * (Xa + Tab);

ciò detto non capisco dove sia il problema...


ciao,
M