7 votos

Cómo obtener los ángulos de Euler con respecto al ángulo de Euler inicial

Tengo un sensor que me da los ángulos de Euler (roll,pitch,yaw). Hay un valor de referencia del ángulo de Euler (supongamos que es $5,10,15$ ) al principio. Quiero calibrar a partir de estos valores de referencia todos los valores posteriores. ¿Cómo puedo obtener esos valores? ¿Es simplemente restar $5,10,15$ de todos los valores ¿O hay alguna matriz de rotación para hacerlo? Como ejemplo, si alguna vez el valor es $5,10,15$ entonces debería mostrar $0,0,0$ y de la misma manera mostrar otros valores de ángulos con respecto a los valores de la línea base.No sé cómo hacer esto.

Por favor, avisa.

8voto

Tpofofn Puntos 2607

En primer lugar, no se pueden sumar o restar ángulos de Euler. No son vectores. Tienes que convertir los ángulos de Euler en una representación que pueda ser compuesto como una matriz de rotación o un cuaternión unitario. Si $R_b$ es la matriz de rotación de la línea base y $R_i$ es una matriz de rotación dada, entonces se puede medir la rotación con respecto a la línea de base utilizando la siguiente fórmula $R = R_b^{T}R_i$ .

Para convertir los ángulos de balanceo, cabeceo y guiñada, hay que componer tres matrices de rotación sobre los ejes Z, Y y X (suponiendo que Z ~ guiñada, Y ~ cabeceo y X ~ balanceo en el marco local). Esto es sólo una composición de las tres matrices de rotación de coordenadas:

$$R = R_z R_y R_x.$$

Para recuperar los ángulos de euler te remito a lo siguiente: https://stackoverflow.com/questions/11514063/extract-yaw-pitch-and-roll-from-a-rotationmatrix

0 votos

Gracias Tpofofn. ¿Cómo puedo obtener la matriz de rotación a partir de los ángulos de Euler? También, ¿cómo puedo obtener el balanceo, cabeceo y guiñada final a partir de la matriz de rotación R resultante?

4voto

Owen Puntos 26

No se pueden sumar o restar ángulos de Euler para obtener la orientación relativa, ya que los ángulos de Euler dependen en gran medida de la secuencia en la que se aplican. La forma conceptual más fácil de pensar en la orientación relativa es con matrices de rotación, como explica Tpofofn. Aquí hay un ejemplo de por qué no se puede simplemente restar los ángulos de Euler para obtener la orientación relativa.

Imagina que tenemos dos secuencias de ángulos de Euler 1-2-3 (también conocidos como x-y-z) $a,b,c$ y $a',b',c'$ donde ambos conjuntos de ángulos describen la orientación de un objeto en relación con el mismo marco de referencia (probablemente inercial). (En tu caso, el sensor probablemente utiliza la orientación al inicio como orientación de referencia).

Para cada conjunto de ángulos de Euler, podemos construir una matriz de rotación que transforme los vectores en el marco de referencia al marco del objeto. Por ejemplo, para rotar los vectores del marco de referencia a la primera orientación, se utilizaría la matriz de rotación

$R_z(c) R_y(b) R_x(a)$

donde $R_{n}(\theta)$ denotan una rotación de ángulo $\theta$ sobre el eje $n$ . Del mismo modo, para rotar los vectores desde el marco de referencia a la segunda orientación, se utilizaría la matriz de rotación

$R_z(c') R_y(b') R_x(a')$

Por tanto, la transformación entre la primera y la segunda orientación, es decir, la matriz de rotación necesaria para pasar de la primera a la segunda orientación, es

$R = R_z(c') R_y(b') R_x(a') ( R_z(c) R_y(b) R_x(a) )^T$

Es la matriz de rotación que describe la orientación relativa entre el primer y el segundo conjunto de ángulos de Euler. Para obtener la representación de los ángulos de Euler de esta matriz de rotación, es necesario utilizar algunas fórmulas como las del enlace proporcionado por Tpofofn. Los ángulos de Euler obtenidos mediante dichas fórmulas serán ángulos $u,v,w$ tal que

$R_z(w) R_y(v) R_x(u) = R$

(suponiendo que las fórmulas son las que permiten obtener los ángulos de Euler 1-2-3 a partir de una matriz de rotación).

A la inversa, la matriz de rotación obtenida simplemente restando los ángulos de Euler viene dada por

$R_z(c'-c) R_y(b'-b) R_x(a'-a)$

donde, en general, encontrará que

$u \neq a'-a$

$v \neq b'-b$

$w \neq c'-c$

Para ver que estas dos matrices son en general diferentes, basta con escribir la forma simbólica de estas matrices de rotación, y comparar. Por ejemplo, ya que

$R_{1}(a) = \left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & +\cos(a) & +\sin(a) \\ 0 & -\sin(a) & +\cos(a) \\ \end{array}\right]$

$R_{2}(b) = \left[\begin{array}{ccc} +\cos(b) & 0 & -\sin(b) \\ 0 & 1 & 0 \\ +\sin(b) & 0 & +\cos(b) \\ \end{array}\right]$

$R_{3}(c) = \left[\begin{array}{ccc} +\cos(c) & +\sin(c) & 0 \\ -\sin(c) & +\cos(c) & 0\\ 0 & 0 & 1\\ \end{array}\right]$

encontramos que la entrada (3,3) de $R$ viene dada por

$\sin(b) \sin(b') + \cos(a) \cos(a') \cos(b) \cos(b') + \cos(b) \cos(b') \sin(a) \sin(a')$

mientras que la entrada (3,3) de $R_z(c'-c) R_y(b'-b) R_x(a'-a)$ es

$\cos(a - a') \cos(b - b')$

Por lo tanto, la entrada (3,3) de estas matrices sólo será igual cuando

$-\sin(b) \sin(b') ( \cos(a - a') - 1) = 0$

lo que no es cierto para la mayoría de las rotaciones.

0voto

caleb59218 Puntos 1

Si el sensor informa de la orientación con respecto a un marco fijo (por ejemplo, la orientación absoluta con respecto a un marco fijo de la tierra), y usted sólo está interesado en el cambiar en los ángulos de Euler con respecto a la orientación inicial del mismo sensor, en realidad puedes restarlos, y los resultados serán los mismos que usando matrices de rotación relativa/cuaterniones. Es sencillo construir un ejemplo artificial en MATLAB y comprobarlo.
Además, en la respuesta de @Tpofofn, el orden de multiplicación para obtener la matriz de rotación relativa es incorrecto.

2 votos

En mi opinión, la de Tpofofn es correcta. Depende de la definición de los ángulos de Euler (secuencia e intrínseca vs extrínseca), así como de la matriz de rotación real (rotación activa vs pasiva). Sin embargo, ¿estás seguro de que restar conduce a los mismos resultados que el cálculo de la matriz de cambio? He hecho experimentos en Matlab que muestran resultados diferentes.

i-Ciencias.com

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.

Powered by:

X