Composizione di Rototraslazioni
Salve a tutti,
sono alle prese con un progettino di robotica in cui compaiono le Rototraslazioni.
Ho 4 di queste matrici [A0,A1,A2,A3] che rappresentano la trasformazione di 4 giunti robotici secondo le convenzioni di Denavit-Hartenberg:

La matrice di trasformazione completa dovrebbe essere quindi [Composizione di Rototraslazioni]:
T = A0 * A1 * A2 * A3
ovviamente cambiando l'ordine di esecuzione, cambia il risultato. Quale è, secondo voi, l'ordine corretto???
Grazie per l'aiuto.
sono alle prese con un progettino di robotica in cui compaiono le Rototraslazioni.
Ho 4 di queste matrici [A0,A1,A2,A3] che rappresentano la trasformazione di 4 giunti robotici secondo le convenzioni di Denavit-Hartenberg:

La matrice di trasformazione completa dovrebbe essere quindi [Composizione di Rototraslazioni]:
T = A0 * A1 * A2 * A3
ovviamente cambiando l'ordine di esecuzione, cambia il risultato. Quale è, secondo voi, l'ordine corretto???
Grazie per l'aiuto.
Risposte
eh! dipende da che risultato vuoi.
Intuitivamente ho una serie di giunti di rotazione e traslazione, come in figura:

Serve trovare le coordinate dell'end-effector(il punto estremo dell'ultimo giunto) nel sistema di riferimento base, ovvero il primo.
Spero di essermi spiegato.

Serve trovare le coordinate dell'end-effector(il punto estremo dell'ultimo giunto) nel sistema di riferimento base, ovvero il primo.
Spero di essermi spiegato.

Allora poichè una rototraslazione, come mi sembra dal disegno, del riferimento $n$ coinvolge
tutti i riferimenti $m$,$m>n$, l'ordine delle matrici è proprio $A_0A_1A_2A_3$.
tutti i riferimenti $m$,$m>n$, l'ordine delle matrici è proprio $A_0A_1A_2A_3$.
Quello che pensavo anch'io. Poi facendo un piccolo programmino in c per il calcolo del prodotto matriciale, i risultati tornano se faccio:
appo1=A1*A0
appo2=A2*appo1
appo3=A3*appo2
se lo esegue invece nell'ordine corretto non escono:
appo1=A0*A1
appo2=appo1*A2
appo3=appo2*A3
appo1=A1*A0
appo2=A2*appo1
appo3=A3*appo2
se lo esegue invece nell'ordine corretto non escono:
appo1=A0*A1
appo2=appo1*A2
appo3=appo2*A3
Allora sicuramente l'ordine corretto è quello in cui i risultati escono!
Evidentemente, la nostra intuizione è giusta : -solo non abbiamo considerato attentamente come
viene espressa in prodotto matriciale.
Evidentemente, la nostra intuizione è giusta : -solo non abbiamo considerato attentamente come
viene espressa in prodotto matriciale.
Una cosa fondamentale per comprendere in che ordine moltiplicare le matrici è sapere se si interpretano i vettori come matrici riga o colonna. Nel primo caso, leggendo da sinistra verso destra, si va dal locale al generale. La trasformazione più a sinistra sarà quindi quella del giunto più vicino e quella più a destra quella del giunto più lontano. Considerando i vettori come matrici colonna (come in effetti si è soliti fare in matematica essendo l'ordine della composizione di funzioni) l'ordine è quello inverso. La matrice più a destra sarà quella locale e quella più a sinistra la più generale. Infatti, se i vettori/punti sono delle matrici riga, allora il punto sarà a sinistra e si avrà ((((P A0) A1) A2) A3) mentre se il punto/vettore è una matrice colonna si avrà la moltiplicazione (A3 (A2 (A1 (A0 P)))). Ovviamente le matrici dovranno anche essere diverse (saranno le trasposte le une delle altre). Non conosco la convenzione di Denavit-Hartenberg, ma guardando la matrice concludo che utilizzi matrici colonna. L'ordine dovrebbe quindi andare dal generale al particolare. Partendo a leggere da sinistra avrai quindi per prima la matrice corrispondente alla trasformazione dallo spazio del primo giunto a quella del sistema di riferimento base e come ultima a destra quella corrispondente all'ultimo giunto. Cosa sono A0, A1, A2 e A3 esattamente?