# Transformaciones de rotación y translación

## Matrices de transformación homogénea

El modelo cinemático de un robot se basa en la aplicación de las transformaciones existentes entre los sistemas de referencia asociados a cada uno de los eslabones que lo componen.
Estos sistemas de referencia estarán trasladados y rotados unos respecto a otros, dependiendo tanto de las características geométricas intrínsecas del robot como de las consignas adoptadas por sus actuadores.
Por esta razón, resulta crucial conocer cómo se llevan a cabo dichas transformaciones. Para ello se utiliza una herramienta matemática denominada Matriz de Transformación Homogénea. Dicha matriz permite conocer la posición de un punto perteneciente a un sistema de referencia móvil que ha sufrido una determinada transformación de rotación y translación respecto a un sistema fijo, tal y como se muestra en la siguiente Figura:

![Transformation](figs/explicacion.png "Posición del punto P respecto a ambos sistemas de referencia")

De donde se deduce que:

$$
{}^0 \mathbf{r}_P={}^0T_1 \cdot{}^1 \mathbf{r}_P
$$

Esta es la forma en la que generalmente se expresa la matriz de transformación homogénea, sobre todo en el ámbito de la robótica. Sin embargo, en algunos problemas es necesario conocer las coordenadas de un punto en el sistema de referencia móvil a partir de las coordenadas en el sistema fijo. En estos casos se utilizará la inversa de la matriz de transformación homogénea (no la traspuesta), de la siguiente forma:

$$
{}^1 \mathbf{r}_P=({}^0T_1)^{-1} \cdot{}^0 \mathbf{r}_P
$$

## Obtención de la matriz de transformación homogénea

Una vez que sabemos qué es la matriz de transformación homogénea y para qué sirve, veamos cómo podemos obtenerla. Si bien es cierto que existen diversos métodos, el más extendido se basa en la combinación de rotaciones elementales sucesivas (respecto a los ejes X, Y, Z) y translaciones cartesianas. Dichas rotaciones y translaciones pueden ser respecto a ejes fijos o respecto a ejes móviles. A su vez, la translación puede realizarse primero seguida de la rotación o viceversa. Lógicamente, el resultado de cada una de estas posibilidades es distinto, tal y como se muestra en la siguiente Figura:

::::{grid} 2
:::{grid-item-card}  a. Ejes móviles/Rotación primero
![open](figs/1-Seguidores-Rfirst.png)
:::
:::{grid-item-card}  b. Ejes móviles/Translación primero
![closed](figs/2-Seguidores-Tfirst.png)
:::
::::

::::{grid} 2
:::{grid-item-card}  c. Ejes fijos/Rotación primero
![open](figs/3-Fijos-Rfirst.png)
:::
:::{grid-item-card}  d. Ejes fijos/Translación primero
![closed](figs/4-Fijos-Tfirst.png)
:::
::::

A continuación se muestra el procedimiento de cálculo para cada una de las opciones:

$$
{}^0T_{1a} = T_{rotX}(\theta_1)\cdot T_{rotZ}(\theta_2)\cdot T_{rotY}(\theta_3)\cdot T_{tra}(\mathbf{d})
$$

$$
{}^0T_{1b} = T_{tra}(\mathbf{d}) \cdot T_{rotX}(\theta_1)\cdot T_{rotZ}(\theta_2)\cdot T_{rotY}(\theta_3) 
$$

$$
{}^0T_{1c} = T_{tra}(\mathbf{d}) \cdot T_{rotY}(\theta_3) \cdot T_{rotZ}(\theta_2)\cdot  T_{rotX}(\theta_1)
$$

$$
{}^0T_{1d} = T_{rotY}(\theta_3) \cdot T_{rotZ}(\theta_2)\cdot  T_{rotX}(\theta_1) \cdot T_{tra}(\mathbf{d})
$$

Además, también se ha implementado la secuencia de Denavit-Hartemberg, que da lugar a la siguiente matriz de transformación:

$$
{}^0T_{1DH} = T_{rotZ}(\theta_1) \cdot T_{tra}(\mathbf{d}) \cdot T_{rotX}(\theta_2)
$$

## El simulador

Las expresiones anteriores se han implementado en una herramienta interactiva que realiza los cálculos asociados, así como la representación visual de los sistemas de referencia y el punto implicado. Su uso es sencillo y consiste en los siguientes pasos:
1. Ejecute el simulador haciendo clic en el botón `Run`
2. Elija si se utilizarán ejes móviles o `ejes fijos`
3. Elija si las rotaciones se realizarán `primero` y después las translaciones o viceversa.
4. Seleccione la `secuencia` de ejes en la que se llevarán a cabo las rotaciones. Tenga en cuenta que la secuencia D-H solo funciona con ejes móviles y la casilla `translación primero` desactivada.
5. Accione los tres primeros sliders si no se eligió la opción 'Realizar primero las translaciones'. Si activa la opción de realizar las translaciones primero, comience con los sliders `4,5,6` y después realice las rotaciones con los sliders `1,2,3`.
6. Por último, accione los sliders `7,8,9` para definir la ubicación del punto P respecto al sistema móvil, y observe su posición respecto al sistema fijo en el título de la imagen. Haga clic con el botón derecho y gire para cambiar el punto de vista.

<iframe src="https://trinket.io/embed/glowscript/53103643df?outputOnly=true" width="100%" height="750" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>


## Conclusiones

Se ha presentado un método para expresar las rotaciones y translaciones entre dos sistemas de referencia mediante la matriz conocida como matriz de transformación. Dicha matriz puede construirse a partir de secuencias de rotaciones en ejes fijos o móviles acompañadas de una traslación a priori o a posteriori. Todas estas posibilidades están incluidas en la herramienta interactiva propuesta basada en web [^1]. Esta herramienta constituye la base sobre la que se sustenta el método de Denavit-Hartenberg, mediante el cual se desarrolla el modelo cinemático de cualquier robot serial. En el siguiente capítulo se explica cómo se implementa dicho método. Para más detalles sobre rotaciones estándar visite este [sitio web](https://mrpt.github.io/webapp-demos/3d-rotation-converter.html) donde se puede utilizar una herramienta de conversión.

[^1]: Probado en Microsoft Edge bajo Windows 11 y Mozilla Firefox bajo Ubuntu 20.04.
