De los ángulos de Euler a la matriz de rotación: ¿rotación alrededor de ejes nuevos o ejes originales?

Para transformar de un marco de coordenadas XYZ a otro marco xyz mediante ángulos de Euler ( α , β , γ ) en la rotación de orden (XYX), podemos escribir la matriz de rotación general como el triple producto de las rotaciones individuales en orden inverso:

R = R X ( γ ) R y ( β )R X ( α )

Esto debe representar rotaciones sucesivas con respecto a los ejes correspondientes que se introducen desde la rotación anterior. Sabiendo esto, puedo escribir el orden de rotación como XY'-X" porque los ejes X e Y originales pueden cambiar después de cada rotación.

Sin embargo, cuando aplico esto a un sistema real, el resultado no concuerda con lo anterior. En cambio, la matriz de rotación provoca rotaciones secuenciales alrededor de los ejes XYX originales.

Por ejemplo, defino los ejes XYZ originales como (1,0,0), (0,1,0), (0,0,1). La rotación sobre los ejes X 90° tiene una matriz de rotación:

R X ( 90 ° ) = [ 1 0 0 0 C o s ( 90 ° ) s i norte ( 90 ° ) 0 s i norte ( 90 ° ) C o s ( 90 ° ) ] = [ 1 0 0 0 0 1 0 1 0 ]

Por lo tanto, en el nuevo marco, Y se convierte en Z y Z se convierte en -Y:

Y' = R X ( 90 ° ) [ 0 1 0 ] = [ 0 0 1 ]

Z' = R X ( 90 ° ) [ 0 0 1 ] = [ 0 0 1 ]

Si ahora consideramos una rotación de 45 ° sobre los nuevos ejes Y', en realidad se trata de los viejos ejes Z con una matriz de rotación:

R Y ( 45 ° ) = [ C o s ( 45 ° ) 0 s i norte ( 45 ° ) 0 1 0 s i norte ( 45 ° ) 0 C o s ( 45 ° ) ] = [ 2 / 2 0 2 / 2 0 1 0 2 / 2 0 2 / 2 ]

Tenga en cuenta que X'=X porque la primera rotación es sobre el eje X, tenemos el nuevo eje X":

X" = R Y ( 45 ° ) [ 1 0 0 ] = [ 2 / 2 0 2 / 2 ]

Entonces, este nuevo eje X" se encuentra en el antiguo plano XZ. Sin embargo, como la rotación es sobre el antiguo eje Z, el nuevo X" debe estar en el plano XY. Esto se muestra brevemente en la imagen adjunta.

¿Alguien puede decirme qué hice mal? Si hay algo mal con lo anterior, ¿cómo podemos solucionarlo para llegar a la respuesta correcta?

https://i.stack.imgur.com/dTxN2.png

EDITAR: SOLUCIÓN A ESTE PROBLEMA El comentario aceptado da en el clavo. Obviamente estaba confundido acerca de las coordenadas antiguas y nuevas en el acto de la rotación. Las matrices que he escrito son matrices de transformación que traen las coordenadas con respecto a (wrt) el marco recién girado, a las coordenadas wrt del marco anterior.

Volviendo al ejemplo. Para mayor claridad, estoy considerando 2 rotaciones, así que llamaré al sistema de coordenadas cuadro 1 , cuadro 2 y cuadro 3 , correspondientes al XYZ original, luego después de la rotación sobre el eje X X'Y'Z', y después de la rotación sobre el eje Y X"Y"Z".

Primera rotación: Rotación de 90° sobre el eje X original, la R X ( 90 ° ) transforma la coordenada del nuevo marco 2 a una del antiguo marco 1. Considere el eje X:

X' = ​​X (fotograma 1) = R X ( 90 ° ) X (fotograma 2)

Sabemos que X (wrt frame 2) es (1,0,0) T , entonces:

X' = ​​X (fotograma 1) = R X ( 90 ° ) [ 1 0 0 ] = [ 1 0 0 ]

lo cual es correcto (porque la rotación es sobre el antiguo eje X, por lo que X' es lo mismo que X).

Segunda rotación 45° sobre el nuevo eje Y'. Si usamos la misma lógica que arriba, para la transformación de X' a X" podemos escribir:

X (fotograma 2) = R Y ( 45 ° ) X (fotograma 3)

Nuevamente X (wrt frame 3) es (1,0,0) T . Podemos calcular X (wrt frame 2) directamente. Sin embargo, lo que quiero es saber el vector con respecto al cuadro original 1, no al cuadro 2.

Desde la primera rotación, sé que puedo escribir:

X (fotograma 1) = R X ( 90 ° ) X (fotograma 2)

Por lo tanto, tengo el eje X" como:

X" = X (fotograma 1) = R X ( 90 ° ) X (fotograma 2) = R X ( 90 ° ) R Y ( 45 ° ) X (fotograma 3)

X" = [ 1 0 0 0 0 1 0 1 0 ] [ 2 / 2 0 2 / 2 0 1 0 2 / 2 0 2 / 2 ] [ 1 0 0 ]

= [ 1 0 0 0 0 1 0 1 0 ] [ 2 / 2 0 2 / 2 ]

= [ 2 / 2 2 / 2 0 ]

Esto da la coordenada correcta para el eje X" más reciente (coordenada con respecto al cuadro original 1). Por lo tanto, para poder rotar con respecto al cuadro del cuerpo, no al cuadro global, necesitamos escribir la matriz de rotación como:

R = R 1 R 2 R 3 = R X ( α ) R y ( β )R X ( γ )

donde 1,2,3 denota el orden de las rotaciones.

Respuestas (2)

Quizás no he entendido bien el problema, pero me parece que hay confusión en la comprensión del orden de las rotaciones.

Si las rotaciones se escriben en relación con los ejes globales, necesitamos el orden inverso de las matrices (porque el producto escalar se aplica al vector de derecha a izquierda):

R = R 3 R 2 R 1 .

Si las rotaciones se escriben en relación con los ejes del cuerpo, necesitamos el orden directo:

R = R 1 R 2 R 3

Habiendo dicho eso, probablemente te pierdas el orden en la inicial R = R X ( α ) R y ( β ) R X ( γ ) ecuación. Si usa las rotaciones en relación con los ejes globales, debe cambiar el orden.

Hola! Gracias por tu comentario. Mi problema es similar a lo que dijiste, excepto que quiero las rotaciones en el marco del cuerpo, no en el global (marco inicial). Tuve una mirada de nuevo y lo entiendo ahora. Tu comentario me dio una buena pista para ello. Aceptaré su respuesta y editaré mi publicación con la solución completa a mi problema. Gracias de nuevo.

Lo siento, no puedo agregar un comentario debajo de su descripción porque mi reputación ahora es inferior a 50, así que lo pongo aquí.

Hola, gracias por tu pregunta y la solución descrita. Sin embargo, creo que su solución descrita aquí es un poco confusa.

cuadro 1 , cuadro 2 y cuadro 3 , correspondientes al XYZ original, luego después de la rotación sobre el eje X X'Y'Z', y después de la rotación sobre el eje Y X"Y"Z". Entonces, en mi opinión, X' = ​​X (fotograma 1) = R X ( 90 ° ) X (marco wrt 2) debe reemplazarse con X' = X (marco wrt 2) = R X ( 90 ° ) X (fotograma 1). Debido a que esta es la primera rotación, debe girarse alrededor de la X original (wrt frame 1).

Si me equivoco, por favor corrígeme.

Hola disculpa si mi respuesta no es clara. El problema en mi pregunta es que siempre he considerado las rotaciones con respecto al marco del cuerpo, no al marco global, y como se dice en la respuesta aceptada, el orden inverso de las rotaciones es correcto.