[Robotica] Rotazioni rispetto alla terna fissa

CeRobotNXT
Ciao a tutti,
ho un dubbio. Non riesco proprio a capire come funzionano le rotazioni in terna fissa, in particolare, dal punto di vista delle composizione delle rotazioni. Precisamente, sul libro, si considerano prima di tutto tre terne 0,1 e 2, di cui 0 è la terna fissa. Poi si indica con $\bar R_2^0$ la matrice che caratterizza la terna 2 rispetto alla terna 0 ottenuta da una rotazione della terna 1 mobile rispetto alla terna 0 secondo la matrice $\bar R_2^1$; di conseguenza, facendo riferimento alla regola di composizione in terna corrente, ovvero, si fa una pre-moltiplicazione a sinistra delle diversi matrici che rappresentano le rotazioni necessarie per passare da un riferimento all'altro, si procede son i seguenti passi:
i) è necessario riallineare la terna 1 con la terna 0, mediante la rotazione $R_0^1$;
ii)quindi si effettua la rotazione richiesta $\bar R_2^1$ rispetto alla terna corrente;
iii) infine si compensa la rotazione compiuta per il riallineamento, mediante la rotazione inversa $R_1^0$.

Avendo descritto tale sequenza di rotazioni rispetto alla terna corrente, l'applicazione delle regola di composizione fornisce:
$\bar R_2^0=R_0^1*R_1^0*\bar R_2^1*R_0^1$
da cui, essendo le matrici di rotazioni ortogonali, si ottiene: $\bar R_2^0= *\bar R_2^1*R_0^1$.
Bene, io non riesco a capire perchè sono necessarie le prime due rotazioni dato che, alla fine, matematicamente sembra che si annullano. Allora, cosa comportano invece dal punto di vista geometrico, supponendo di applicare tali formule ad un corpo rigido?
Spero di essermi spiegato.
Grazie anticiptamente a tutti.
:smt023

Risposte
Quinzio
Queste sono rotazioni di vettori (o vettori espressi in diverse basi), e non sono altro che matrici 3x3 e vettori a 3 componenti.
Si seguono tali e quali le regole matematiche delle matrici, non c'è nulla da inventare.

Ad esempio nella tua notazione non si capisce cosa significa la $\bar R_1^0$. Forse $\bar R_1^0$ è la trasposta di $R_1^0$, e allora $\bar R_1^0 = R_0^1$ ???

CeRobotNXT
So perfettamente che quelle sono delle semplici matrici, dal punto di vista matematico non ho dubbi.
Il tratto sulla matrice indica che essa rappresenta una rotazione rispetto alla terna fissa, ossia, di riferimento.
Esistono due regole per comporre le matrici di rotazione e, conseguentemente, di rappresentare l'orientamento e la posizione di un corpo rigido in uno spazio tridimensionale. La prima, detta in terna corrente, la rotazione complessiva è espressa come successione di rotazioni parziali, ciascuna delle quali viene definita rispetto all'esito della rotazione precedente. La composizione delle rotazioni successive si ottiene per moltiplicazione da sinistra verso destra delle singole matrici di rotazione nell'ordine imposto dalla sequenza delle rotazioni.
Poi c'è quella in terna fissa, spiegata nel mio post precedente. In quest'ultima, non capisco come si giunge alla regola finale, cioè, non ho ben compreso i passaggi logici.
In sostanza, matematicamente mi è chiaro ma, geometricamente, il comportamento delle terne nello spazio non riesco a comprenderlo... :roll: O, almeno, non riesco rendere questo ragionamento coerente con il calcolo algebrico puro.

fab_mar9093
Io sto studiando le stesse cose, ma con notazioni diverse.
Noi ragioniamo in coordinate omogegenee e questo ragionamento lo facciamo
parlando delle matrici di rototraslazione (4X4, descrivonono lo spostamento di un corpo rigido
da una posizione 1 a una posizione 2 rispetto a una terna fissa 0; nel tuo caso penso
non applicando le coordinate omogenee sei costretto a dare l'informazione sullo spostamento dell'origine
dei sistemi di riferimento separatamente).

CeRobotNXT
No, non credo sia così.
Le coordinate omogenee vengono adottate, soprattutto, per una questione di comodità, in quanto, nella matrice 4X4 si inserisce anche il vettore che, nella trasformazione, individua la traslazione. Gli zeri in ultima riga, sono scalari che corrispondono a fattori di prospettiva, invece, l'uno in basso, se fatto variare, determina una variazione, o meglio, un effetto di scalatura (geometria proiettiva utilizzata, in particolare, per l'image processing)

fab_mar9093
"CeRobotNXT":
No, non credo sia così.
Le coordinate omogenee vengono adottate, soprattutto, per una questione di comodità, in quanto, nella matrice 4X4 si inserisce anche il vettore che, nella trasformazione, individua la traslazione. Gli zeri in ultima riga, sono scalari che corrispondono a fattori di prospettiva, invece, l'uno in basso, se fatto variare, determina una variazione, o meglio, un effetto di scalatura (geometria proiettiva utilizzata, in particolare, per l'image processing)


Cosa non credi sia così? ma insomma tu usi le coordinate omogenee o no??

CeRobotNXT
Si, certo che uso le coordinate omogenee e ho capito che queste mi permettono di esprime rotazione e traslazione con un unica matrice. Forse non ho capito quanto hai scritto prima.
Spiegami meglio cosa intendi quando dici che, non utilizzando le coordinate omogenee, sono costretto a dare informazioni sullo spostamento dell'origine dei sistemi di riferimento, in particolare, nel caso in cui si utilizzi la regola di composizione in terna fissa. Anche se, sinceramente, non credo sia un problema che riguarda la necessità di esprimere l'eventuale spostamento dell'origine del sdr ma, piuttosto, qualcosa che riguardi gli assi delle terne che, appunto, non riesco a capire.
Correggimi se sbaglio ;-)

fab_mar9093
Scusa se scrivo di fretta (è tardi!)
Se usi le coordinate omogenee allora le matrici $R$ di cui parli dovrebbero essere delle 4x4,
ma non mi è parso di capire così. Oppure tu stai ragionando sul minore 3x3 (che noi indichiamo con
$\Delta R$, non specifico quale minore tanto hai capito)
della matrice 4x4 (che io chiamo di rototraslazione, perchè da essa sono ricavabili l'asse di rotot.,
il passo e l'angolo rispetto a quell'asse). In ogni caso non vedo perchè ragionare sul minore
di questa matrice, in quanto la complessità non aumenta ragionando sulla rototraslazione.
Probabilmente non ci capiamo perchè è la notazione che è diversa; sto notando
che questa materia è all'80% notazione, algoritmi e convenzioni, in quanto la teoria che sta
alla base non è altro che la meccanica del corpo rigido, è meccanica razionale (poi ci sarà qualcosa di controllo).
Ps. che corso di laurea frequenti? dove stai studiando?

cyd1
"CeRobotNXT":

Bene, io non riesco a capire perchè sono necessarie le prime due rotazioni dato che, alla fine, matematicamente sembra che si annullano. Allora, cosa comportano invece dal punto di vista geometrico, supponendo di applicare tali formule ad un corpo rigido?
Spero di essermi spiegato.
Grazie anticiptamente a tutti.
:smt023


Ciao, ti do la mia interpretazione.
sono due punti di vista diversi per vedere la stessa cosa, come hai giustamente detto uno vede la cosa in termini della terna corrente e l'altro dalla terna fissa.
E' più semplice di quanto sembri, banalmente significa che le rotazioni successive sono espresse rispetto ad una delle due terne.

La rotazione, al contrario della traslazione, è una trasformazione lineare. In generale per una trasformazione lineare a cui è associata una matrice $T$ si ha che essa mappa i vettori di un sottospazio X in vettori di un sottospazio Y secondo la relazione $y=Tx$.
date dunque due trasformazioni lineari, $t1 : X -> Y$ e $t2 : Y -> Z$ è possibile definire una terza relazione lineare tra X e Z definendo la trasformazione associata a $T_3=T_2*T_1$ infatti $z = T_2*y = T_2*(T_1*x) = T_3*x$

Lo stesso accade per le rotazioni di un vettore e in questo caso $X=Y=Z=R^3$
infatti se voglio rotare $v^0$ (espresso rispetto alla terna fissa F0) posso trasformarlo applicando $T_1$ e ho $w^0=T_1 * v^0$ poi lo voglio ruotare nuovamente applico $T_2$ e quindi ottengo un terzo vettore $y^0 = T_2*w^0 = T_2*T_1*v^0 = T_3*v^0$

Come gia sai, le matrici T1 e T2, data la loro struttura, possono essere viste come matrici di cambiamento di base e i vettori $v^0, w^0 e y^0$ possono essere visti come lo stesso vettore rappresentato in tre diverse basi, ovvero tre diversi riferimenti con diverse inclinazioni relative.
Dunque considerando $y^0 = T_2 w^0$ posso dire che T2 rappresenta l'inclinazione di un riferimento F1 rispetto al riferimento in cui esprimo y^0 e che quindi $w^0 = y^1$ infatti T2 è la matrice dei coseni direttori degli assi di F1 rispetto a F0 e gli elementi di T2 sono l'immagine dei versori di F1 espressi rispetto F0. Denomino allora $T_2 -> R_1^0$.
posso fare lo stesso ragonamento per $y^1 = T_1 * v^0$ ponendo $v^0 = y^2$ e $T_1 -> R_2^1$
In quest'ottica invece di ruotare il vettore v ruoto il punto di vista.

Quindi al rovescio, in quest'ottica, per cambiare orientamento del riferimento, ruoto la terna rispetto all'orientazione iniziale applicando la trasformazione $R_1^0$ e ancora ruoto la terna rispetto alla nuova configurazione applicando $R_2^1$ e cosi via...

Il secondo modo prevede di riferirsi sempre alla terna fissa F0. dunque se tu hai un riferimento Q il cui orientamento è definito rispetto a F0 dalla matrice $R_1^0$. Ad esso vuoi applicare una rotazione $G$ (espressa rispetto a F0).
Prima della rotazione si ha $Q=R_1^0$ rispetto F0
La rotazione G dev'essere una rotazione della stessa entità, sia che la si guardi da F0 (terna fissa) sia che la si guardi da Q (terna corrente). Dunque per definizione G e G1 (G relativamente al riferimento Q iniziale) devono essere simili e quindi si ha $G1= E^{-1} G E$ dove E è in questo caso lamatrice del cambiamento di base tra F0 e F1, cioè $R_1^0$
sostituendo si ha $G1 = R_0^1 G R_1^0$
dunque cosi hai ottenuto l'espressione di G rispetto a $Q$ iniziale, ovvero rispetto la terna corrente e puoi comporre le trasformazioni come prima. ottieni $Q_{f i n a l e} = R_1^0 * G_1 = R_1^0 R_0^1 G R_1^0 = G R_1^0$

Perchè sononecessarie le prime due rotazioni? beh una esprime la terna "punto di partenza" rispetto F0 e la seconda serve per "cambiare base" a G che è espressa in F0 e dev'essere espressa in Q poichè altrimenti non puoi comporre le rotazioni dato che parti da Q!!
Il fatto che si annullino è un semplice calcolo, è come due numeri che si semplificano durante un calcolo, un motivo perchè sono finiti li c'è, se poi si semplificano vuol dire che al fine della relazione cercata essi sono superflui.

"seven":
Io sto studiando le stesse cose, ma con notazioni diverse.
Noi ragioniamo in coordinate omogegenee e questo ragionamento lo facciamo
parlando delle matrici di rototraslazione (4X4, descrivonono lo spostamento di un corpo rigido
da una posizione 1 a una posizione 2 rispetto a una terna fissa 0; nel tuo caso penso
non applicando le coordinate omogenee sei costretto a dare l'informazione sullo spostamento dell'origine
dei sistemi di riferimento separatamente).

No, non centra basta vedere come si compongono due trasformazioni omogenee, la parte rotativa si compone con la parte rotativa, rotazione e traslazioni agiscono separatamente ed esse si riferiscono a due aspetti indipendenti ovvero traslazione e rotazione, indipendenti perchè ci sono 6gradi di libertà! Ergo le puoi , e ci mancherebbe, trattare separatamente.
L'informazione sull'offset dell'origine non è contemplata quando si parla di orientamento.

CeRobotNXT
Prima di tutto, scusami, per il ritardo con cui ti rispondo.
Per quanto riguarda la relazione di similitudine tra le due matrici, non ci sono dubbi, però, ho una domanda: cosa indica per te G1?
@seven: studio ing. dell'automazione a milano!
Grazie per la disponibilità.

cyd1
G1 è la matrice che esprime la stessa rotazione che G esprime rispetto a F0, ma rispetto a Q.

In poche parole si basa tutto sulla similitudine delle matrici associate alla stessa trasformazione lineare rispetto a due basi differenti

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.