La matriu de transformació homogènia d'una junta de robot es pot obtenir combinant matrius de rotació i translació. Aquesta matriu ens permet descriure completament la posició i orientació d'una junta en l'espai tridimensional.
Comencem amb la matriu de rotació per a una rotació d'un angle \(\theta_x\) al voltant de l'eix \(x\). Aquesta matriu és:
\[ R_x(\theta_x) = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos\theta_x & -\sin\theta_x \\ 0 & \sin\theta_x & \cos\theta_x \end{pmatrix} \]Aquesta matriu només afecta els eixos \(y\) i \(z\), mantenint l'eix \(x\) inalterat.
A continuació, considerem una rotació d'un angle \(\theta_y\) al voltant de l'eix \(y\). La matriu de rotació és:
\[ R_y(\theta_y) = \begin{pmatrix} \cos\theta_y & 0 & \sin\theta_y \\ 0 & 1 & 0 \\ -\sin\theta_y & 0 & \cos\theta_y \end{pmatrix} \]Aquesta matriu afecta els eixos \(x\) i \(z\), mantenint l'eix \(y\) inalterat.
Finalment, considerem una rotació d'un angle \(\theta_z\) al voltant de l'eix \(z\). La matriu de rotació és:
\[ R_z(\theta_z) = \begin{pmatrix} \cos\theta_z & -\sin\theta_z & 0 \\ \sin\theta_z & \cos\theta_z & 0 \\ 0 & 0 & 1 \end{pmatrix} \]Aquesta matriu només afecta els eixos \(x\) i \(y\), mantenint l'eix \(z\) inalterat.
Per obtenir la matriu de rotació completa \(R\), combinem les tres matrius de rotació mitjançant el producte de matrius. És important recordar que l'ordre en què es multipliquen les matrius és important (la multiplicació de matrius no és commutativa).
Així, la matriu de rotació resultant és:
\[ R = R_z(\theta_z) \cdot R_y(\theta_y) \cdot R_x(\theta_x) \]Aquesta matriu \(R\) descriu la rotació total de la junta.
Comencem amb les matrius de rotació:
\[ R_x(\theta_x) = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos\theta_x & -\sin\theta_x \\ 0 & \sin\theta_x & \cos\theta_x \end{pmatrix} \]
\[ R_y(\theta_y) = \begin{pmatrix} \cos\theta_y & 0 & \sin\theta_y \\ 0 & 1 & 0 \\ -\sin\theta_y & 0 & \cos\theta_y \end{pmatrix} \]
Ara fem la multiplicació de \( R_y(\theta_y) \) per \( R_x(\theta_x) \):
\[ R_y(\theta_y) \cdot R_x(\theta_x) = \begin{pmatrix} \cos\theta_y & 0 & \sin\theta_y \\ 0 & 1 & 0 \\ -\sin\theta_y & 0 & \cos\theta_y \end{pmatrix} \cdot \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos\theta_x & -\sin\theta_x \\ 0 & \sin\theta_x & \cos\theta_x \end{pmatrix} \]
Multipliquem fila per columna:
\[ R_y(\theta_y) \cdot R_x(\theta_x) = \begin{pmatrix} \cos\theta_y \cdot 1 + 0 \cdot 0 + \sin\theta_y \cdot 0 & \cos\theta_y \cdot 0 + 0 \cdot \cos\theta_x + \sin\theta_y \cdot \sin\theta_x & \cos\theta_y \cdot 0 + 0 \cdot -\sin\theta_x + \sin\theta_y \cdot \cos\theta_x \\ 0 \cdot 1 + 1 \cdot 0 + 0 \cdot 0 & 0 \cdot 0 + 1 \cdot \cos\theta_x + 0 \cdot \sin\theta_x & 0 \cdot 0 + 1 \cdot -\sin\theta_x + 0 \cdot \cos\theta_x \\ -\sin\theta_y \cdot 1 + 0 \cdot 0 + \cos\theta_y \cdot 0 & -\sin\theta_y \cdot 0 + 0 \cdot \cos\theta_x + \cos\theta_y \cdot \sin\theta_x & -\sin\theta_y \cdot 0 + 0 \cdot -\sin\theta_x + \cos\theta_y \cdot \cos\theta_x \end{pmatrix} \]
Simplificant, obtenim:
\[ R_y(\theta_y) \cdot R_x(\theta_x) = \begin{pmatrix} \cos\theta_y & \sin\theta_y\sin\theta_x & \sin\theta_y\cos\theta_x \\ 0 & \cos\theta_x & -\sin\theta_x \\ -\sin\theta_y & \cos\theta_y\sin\theta_x & \cos\theta_y\cos\theta_x \end{pmatrix} \]
Multipliquem la matriu resultant per \( R_z(\theta_z) \):
\[ R_z(\theta_z) = \begin{pmatrix} \cos\theta_z & -\sin\theta_z & 0 \\ \sin\theta_z & \cos\theta_z & 0 \\ 0 & 0 & 1 \end{pmatrix} \]
Multiplicació:
\[ R_z(\theta_z) \cdot (R_y(\theta_y) \cdot R_x(\theta_x)) = \begin{pmatrix} \cos\theta_z & -\sin\theta_z & 0 \\ \sin\theta_z & \cos\theta_z & 0 \\ 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} \cos\theta_y & \sin\theta_y\sin\theta_x & \sin\theta_y\cos\theta_x \\ 0 & \cos\theta_x & -\sin\theta_x \\ -\sin\theta_y & \cos\theta_y\sin\theta_x & \cos\theta_y\cos\theta_x \end{pmatrix} \]
Multiplicant fila per columna:
\[ R = \begin{pmatrix} \cos\theta_z\cos\theta_y + (-\sin\theta_z) \cdot 0 + 0 \cdot (-\sin\theta_y) & \cos\theta_z\sin\theta_y\sin\theta_x + (-\sin\theta_z)\cos\theta_x + 0 \cdot (\cos\theta_y\sin\theta_x) & \cos\theta_z\sin\theta_y\cos\theta_x + (-\sin\theta_z) \cdot (-\sin\theta_x) + 0 \cdot (\cos\theta_y\cos\theta_x) \\ \sin\theta_z\cos\theta_y + \cos\theta_z \cdot 0 + 0 \cdot (-\sin\theta_y) & \sin\theta_z\sin\theta_y\sin\theta_x + \cos\theta_z\cos\theta_x + 0 \cdot (\cos\theta_y\sin\theta_x) & \sin\theta_z\sin\theta_y\cos\theta_x + \cos\theta_z \cdot (-\sin\theta_x) + 0 \cdot (\cos\theta_y\cos\theta_x) \\ -\sin\theta_y & \cos\theta_y\sin\theta_x & \cos\theta_y\cos\theta_x \end{pmatrix} \]
Simplificant, obtenim:
\[ R = \begin{pmatrix} \cos\theta_z\cos\theta_y & -\sin\theta_z\cos\theta_x + \cos\theta_z\sin\theta_y\sin\theta_x & \sin\theta_z\sin\theta_x + \cos\theta_z\sin\theta_y\cos\theta_x \\ \sin\theta_z\cos\theta_y & \cos\theta_z\cos\theta_x + \sin\theta_z\sin\theta_y\sin\theta_x & -\cos\theta_z\sin\theta_x + \sin\theta_z\sin\theta_y\cos\theta_x \\ -\sin\theta_y & \cos\theta_y\sin\theta_x & \cos\theta_y\cos\theta_x \end{pmatrix} \]
Així, la matriu de rotació completa \( R \) per a una junta de robot després de rotacions consecutives en els eixos \(x\), \(y\) i \(z\) és:
\[ R = \begin{pmatrix} \cos\theta_z\cos\theta_y & -\sin\theta_z\cos\theta_x + \cos\theta_z\sin\theta_y\sin\theta_x & \sin\theta_z\sin\theta_x + \cos\theta_z\sin\theta_y\cos\theta_x \\ \sin\theta_z\cos\theta_y & \cos\theta_z\cos\theta_x + \sin\theta_z\sin\theta_y\sin\theta_x & -\cos\theta_z\sin\theta_x + \sin\theta_z\sin\theta_y\cos\theta_x \\ -\sin\theta_y & \cos\theta_y\sin\theta_x & \cos\theta_y\cos\theta_x \end{pmatrix} \]Aquesta matriu \(R\) descriu la rotació total resultant de les tres rotacions consecutives al voltant dels eixos \(x\), \(y\) i \(z\).
A més de la rotació, cada junta pot tenir una translació en l'espai tridimensional, representada per un vector de translació \(\mathbf{d}\):
\[ \mathbf{d} = \begin{pmatrix} d_x \\ d_y \\ d_z \end{pmatrix} \]Aquest vector representa la posició de la junta en els eixos \(x\), \(y\) i \(z\).
Ara, combinem la matriu de rotació \(R\) i el vector de translació \(\mathbf{d}\) per formar la matriu de transformació homogènia \(T\):
\[ T = \begin{pmatrix} R & \mathbf{d} \\ \mathbf{0}^\top & 1 \end{pmatrix} \]Aquí, \(R\) és la matriu de rotació de 3x3, \(\mathbf{d}\) és el vector de translació de 3x1, \(\mathbf{0}^\top\) és un vector fila de zeros (1x3), i el valor \(1\) a la part inferior dreta completa la matriu homogènia de 4x4.
Finalment, substituint la matriu \(R\) pel producte de les matrius de rotació, la matriu de transformació homogènia completa per a una junta es pot escriure com:
\[ T = \begin{pmatrix} R_z(\theta_z) \cdot R_y(\theta_y) \cdot R_x(\theta_x) & \mathbf{d} \\ \mathbf{0}^\top & 1 \end{pmatrix} \]Aquesta matriu \(T\) descriu completament la posició i orientació d'una junta d'un robot en l'espai tridimensional.