Llevo tiempo intentando resolver este problema, pero me vendría muy bien un poco de ayuda:
Tengo 3 rotaciones (una por eje) para un objeto, y quiero crear un vector unitario que me diga en qué dirección apunta el objeto.
¿Cómo puedo conseguirlo?
Llevo tiempo intentando resolver este problema, pero me vendría muy bien un poco de ayuda:
Tengo 3 rotaciones (una por eje) para un objeto, y quiero crear un vector unitario que me diga en qué dirección apunta el objeto.
¿Cómo puedo conseguirlo?
Supongamos que tenemos un sistema de coordenadas, donde por ejemplo $\mathtt e_x = \begin{bmatrix} 1\\0\\0 \end{bmatrix}$ apunta a la derecha, $\mathtt e_y = \begin{bmatrix} 0\\1\\0 \end{bmatrix}$ señala hacia abajo y $\mathtt e_z = \begin{bmatrix} 0\\0\\1 \end{bmatrix}$ apunta hacia adelante.
En primer lugar, supongamos que el objeto de interés está alineado con el mundo. Así, la transformación (= $3\times 3$ ) que mapea los puntos del marco de referencia del "objeto" al marco de referencia del mundo es la identidad:
$$\mathtt R_{wo} = \mathtt I.$$
Ahora, giramos el objeto alrededor del $x$ -eje por $\theta_x$ entonces el $y$ -eje por $\theta_y$ y finalmente el $z$ -eje por $\theta_z$ :
$$\mathbf R_{wo'} = \mathbf R_{wo} \exp(\theta_x\mathbf G_x)\exp(\theta_y\mathbf G_y)\exp(\theta_z\mathbf G_z)$$ $$= \exp(\theta_x\mathbf G_x)\exp(\theta_y\mathbf G_y)\exp(\theta_z\mathbf G_z)$$
Excurso: ¿Qué es $\exp(\theta_i\mathbf G_i)$ ?
En general, $\exp$ es la matriz exponencial y $\mathbf G_x=\begin{bmatrix}0 & 0& 0\\0 & 0& -1\\0 & 1& 0\end{bmatrix}$ , $\mathbf G_y=\begin{bmatrix}0 & 0& 1\\0 & 0& 0\\-1 & 0& 0\end{bmatrix}$ , $\mathbf G_z=\begin{bmatrix}0 & -1& 0\\1 & 0& 0\\0 & 0& 0\end{bmatrix}$ son los generadores del álgebra de Lie so(3).
Para so(3), la exponencial de la matriz puede calcularse mediante la fórmula de Rodrigues: $$ \exp (\theta_i \mathbf G_i) = \mathtt I + \mathtt G_i\sin(\theta_i) + \mathtt G_i^2(1-\cos(\theta_i)) $$
Por ejemplo: $\exp(\theta_x\cdot \mathtt G_x) = \mathtt I +\begin{bmatrix}0 & 0& 0\\0 & 0& -1\\0 & 1& 0\end{bmatrix}\sin(\theta_x) + \begin{bmatrix}0 & 0& 0\\0 & -1& 0\\0 & 0& -1\end{bmatrix}(1-\cos(\theta_x)) $
$\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad=\begin{bmatrix}1 & 0& 0\\0 & \cos(\theta_x)& -\sin(\theta_x)\\0 & \sin(\theta_x)& \cos(\theta_x)\end{bmatrix}$
(Nótese que las rotaciones no se conmutan, por lo que el orden de aplicación de las rotaciones importa. En otras palabras: $\exp(\theta_x\mathbf G_x)\exp(\theta_y\mathbf G_y)\neq\exp(\theta_y\mathbf G_y)\exp(\theta_x\mathbf G_x)$ )
Para transformar un punto en el marco del objeto $\mathbf x_{o'}$ al punto correspondiente en el marco mundial $\mathbf x_w$ que hacemos: $\mathbf x_w = \mathtt R_{wo'}\mathbf x_{o'}$ .
Así, por ejemplo, podemos transformar la dirección de avance en el marco de coordenadas del objeto $\mathbf e_z$ a la dirección de avance $\mathbf x_{\text{forward}}$ en coordenadas mundiales:
$$\mathbf x_{\text{forward}} = \mathtt R_{wo'}\mathbf e_{z}$$
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.