Convierta Matriz de rotación a ángulos de Euler zyz (y zyz (y~zyz~ (y convención))) analíticamente.

La matriz de rotación del ángulo de Euler Z Y Z es:

R z 1 = [ porque ( ψ ) , pecado ( ψ ) , 0 ; pecado ( ψ ) , porque ( ψ ) , 0 ; 0 , 0 , 1 ] ;
R y = [ porque ( θ ) , 0 , pecado ( θ ) ; 0 , 1 , 0 ; pecado ( θ ) , 0 , porque ( θ ) ] ;
R z 2 = [ porque ( ϕ ) , pecado ( ϕ ) , 0 ; pecado ( ϕ ) , porque ( ϕ ) , 0 ; 0 , 0 , 1 ] ;
R = R z 1 R y R z 2   ;
R = [ porque ϕ porque θ porque ψ pecado ϕ pecado ψ pecado ϕ porque θ porque ψ + porque ϕ pecado ψ pecado θ porque ψ porque ϕ porque θ pecado ψ pecado ϕ porque ψ pecado ϕ porque θ pecado ψ + porque ϕ porque ψ pecado θ pecado ψ porque ϕ pecado θ pecado ϕ pecado θ porque θ ]
Pero si tengo una matriz de rotación R2 y quiero obtener el ángulo de Euler en Z Y Z   ( Y convención ) No puedo encontrar cómo hacerlo exactamente.

para otros ángulos de Euler hay una solución, por ejemplo, ver:

http://www.gregslabaugh.net/publications/euler.pdf

¿Por qué lo siguiente me da una respuesta incorrecta cuando se calcula en matlab?

ϕ = un bronceado ( R ( 3 , 2 ) R ( 3 , 1 ) ) ;     θ = acos ( R ( 3 , 3 ) ) ;     Ψ = un bronceado ( R ( 2 , 3 ) R ( 1 , 3 ) )

Empecé con las ecuaciones de MathJax, corríjalas para que sean bonitas y comprensibles. Después de eso, podemos discutir la búsqueda de la solución.
El documento que citó utiliza el método de dividir ciertos términos de la matriz para cancelar los términos y obtener expresiones convenientes para los ángulos. ¿Puedes encontrar tales divisiones para resolver los ángulos en este caso?
sí, lo escribí ahora, pero si lo pruebas en matlab no funcionará, no puedo entender por qué
Bien, ¡has encontrado las fórmulas! Recuerde que la función trigonométrica inversa son funciones de varios valores y, por lo tanto, un programa puede tener dificultades para decidir qué solución desea. Un buen enfoque es limitar cada ángulo a 180 + 180 . ¿Cuáles fueron los ángulos iniciales que usaste y cuáles fueron los ángulos que obtuviste?
Tomé los ángulos de Euler extraídos y los usé nuevamente para crear la matriz de rotación, pero ahora esta nueva matriz de rotación rota un vector v de manera diferente a la matriz de rotación original, ¿cómo es posible?
Sin ver realmente su código, es imposible saberlo. Creo que las matemáticas funcionan. Es decir, las ecuaciones de extracción que escribiste parecen correctas. Si yo fuera tú, probaría solo la parte matemática sin visualizaciones. Intente establecer algunos valores para los ángulos, luego calcule la matriz y luego intente extraer los ángulos. ¿Obtienes los mismos ángulos con los que empezaste? Si no es así, investiga dónde puede estar el error.

Respuestas (2)

El enfoque más simple para extraer correctamente los ángulos de Euler de una matriz de rotación para cualquier secuencia de ángulos es usar el a t a norte 2 función. Al final, se hace de la misma manera (y tal vez también se explica por qué) en el texto que vinculó. Tenga en cuenta que en comparación con otras funciones trigonométricas inversas, a t a norte 2 tiene el rango ( π , π ] (el círculo completo).

En tu caso de la z - y - z rotación, si pecado θ 0 , entonces

ϕ = a t a norte 2 ( R 32 , R 31 ) , ψ = a t a norte 2 ( R 23 , R 13 ) .
Podemos obtener el θ ángulo de la última fila o la última columna de R . Por ejemplo, considerando la última fila de R , tenemos
R 31 porque ϕ + R 32 pecado ϕ = pecado θ ( porque 2 ϕ + pecado 2 ϕ ) = pecado θ
entonces
θ = a t a norte 2 ( R 31 porque ϕ + R 32 pecado ϕ , R 33 ) .

Para que estos ángulos de Euler estén bien definidos, la condición pecado θ 0 se requiere (es decir, θ k π , k Z ). De lo contrario, por ejemplo, si θ = 0 , los dos z -los ángulos no están definidos de forma única.

Cuando conoces la tangente de un ángulo, hay una indeterminación de media vuelta en el ángulo.

Recomiendo evitar el uso del arco coseno, y preferir el arco tangente, con

broncearse θ = ( porque ϕ pecado θ ) 2 + ( pecado ϕ pecado θ ) 2 porque θ .
Tenga en cuenta que esto deja caer el signo de pecado θ .

Después de obtener los ángulos, vuelva a conectarlos para compararlos con la matriz original y ajuste los cuadrantes. (Lo siento, no tengo tiempo para tratar la discusión completa).