Está en la página 1de 6

OBJETIVO

Obtener las ecuaciones diferenciales que relacionan a la velocidad angular expresada en ángulos de Euler con la
velocidad angular expresada en ejes cuerpo, realizar la simulación y mostrar la equivalencia numérica entre las
matrices de rotación obtenidas a partir de: ángulos de Euler, cuaterniones y osciladores

MARCO TEÓRICO

La orientación de un cuerpo rígido puede también representarse con 3 rotaciones sucesivas, los ángulos de rotación se
conocen como los ángulos de Euler. En particular, en aeronáutica se utiliza la secuencia de rotación 𝑍𝑌𝑋. Dónde 𝜓 es
la rotación del eje z, 𝜃 es la rotación alrededor del eje 𝑦, 𝜙 es la rotación alrededor del eje 𝑥.

En notación matricial se expresa como:

cos 𝜓 − sin 𝜓 0 cos 𝜃 0 sin 𝜃 1 0 0


𝑅𝜓 = [ sin 𝜓 cos 𝜓 0] 𝑅𝜃 = [ 0 1 0 ] 𝑅𝜙 = [0 cos 𝜙 − sin 𝜙]
0 0 1 − sin 𝜃 0 cos 𝜃 0 sin 𝜙 cos 𝜙

Al multiplicar las matrices anteriores se obtiene la siguiente matriz de rotación

cos 𝜃 cos 𝜓 sin 𝜙 sin 𝜃 cos 𝜓 − sin 𝜓 cos 𝜙 sin 𝜃 cos 𝜓 + sin 𝜙 sin 𝜓
𝑅 = [ cos 𝜃 sin 𝜓 sin 𝜙 sin 𝜃 sin 𝜓 + cos 𝜓 cos 𝜙 sin 𝜃 sin 𝜓 − sin 𝜙 cos 𝜓] … (1)
− sin 𝜃 𝑠𝑖𝑛 𝜙 cos 𝜃 cos 𝜙 cos 𝜃

Cinemática rotacional con ángulos de Euler

A continuación se obtienen el conjunto de ecuaciones diferenciales para relacionar a la velocidad angular expresada
en ángulos de Euler con la velocidad angular expresada en ejes cuerpo. Para ellos se consideran los vectores unitarios
𝑖1 , 𝑗2 𝑦 𝑘3 que denotan los sistemas de referencia obtenidos en la secuencia 𝑍𝑌𝑋.

Si en un intervalo ∆𝑡 el cuerpo rígido sufre una rotación infinitesimal en la secuencia 𝑍𝑌𝑋, el vector que representa
esta rotación es aproximadamente

∆𝑛 ≈ 𝑘1 ∆𝜓 + 𝑗2 ∆𝜃 + 𝑖3 ∆𝜙 … (2)

La velocidad angular en ejes cuerpo puede obtenerse como sigue:

∆𝑛
Ω = lim = 𝑘1 𝜓̇ + 𝑗2 𝜃̇ + 𝑖3 𝜙̇ … (3)
∆𝑡→0 ∆𝑡

Utilizando las matrices de rotación anteriores se tiene:

1 0 − sin 𝜃
𝑖3 = [0] , 𝑗2 = [ cos 𝜙 ] , 𝑘1 = [ cos 𝜃 sin 𝜙 ]
0 − sin 𝜙 cos 𝜃 cos 𝜙

Por lo tanto
Ω = 𝑊𝜂̇ … (4)

Finalmente se tiene que:

𝑝 1 0 − sin 𝜃 𝜙̇
[𝑞 ] = [0 cos 𝜙 sin 𝜙 cos 𝜃 ] [ 𝜃̇ ] … (5)
𝑟 0 − sin 𝜙 cos 𝜃 cos 𝜙 𝜓̇

DESARROLLO

Para obtener las ecuaciones diferenciales que relacionan la velocidad angular expresada en ángulos de Euler con la
velocidad angular expresada en ejes cuerpo, de la ecuación (5) se busca despejar el vector [𝜙̇ 𝜃̇ 𝜓̇]𝑇 , por lo que se
realizan las siguientes operaciones matriciales:

1) La ecuación (5) se multiplica por la izquierda por la inversa de la matriz 𝑊:

1 0 − sin 𝜃 −1 𝑝 1 0 − sin 𝜃 −1 1 0 − sin 𝜃 𝜙̇


{0 cos 𝜙 sin 𝜙 cos 𝜃 } [𝑞 ] = {0 cos 𝜙 sin 𝜙 cos 𝜃 } [0 cos 𝜙 sin 𝜙 cos 𝜃 ] [ 𝜃̇ ]
0 − sin 𝜙 cos 𝜃 cos 𝜙 𝑟 0 − sin 𝜙 cos 𝜃 cos 𝜙 0 − sin 𝜙 cos 𝜃 cos 𝜙 𝜓̇

1 0 − sin 𝜃 −1 𝑝 𝜙̇
{0 cos 𝜙 sin 𝜙 cos 𝜃 } [𝑞 ] = [ 𝜃̇ ] … (6)
0 − sin 𝜙 cos 𝜃 cos 𝜙 𝑟 𝜓̇

Donde ecuación mostrada en (6) da las velocidades angulares en función de los ángulos de Euler y las velocidades
angulares expresadas en ejes cuerpo. Por lo que el primer objetivo se cumple.

Ahora para poder trabajar con la matriz de rotación expresada en ángulos de Euler, es necesario obtener la integral de
la ecuación (6) para obtener los ángulos: 𝜓, 𝜃 y 𝜙. Dichos ángulos, serán sustituidos en la matriz mostrada por la
ecuación (1).

Con lo anterior ya es posible trabajar con el bloque de Simulink denominado Rotation Matrix to VRML Rotation y así,
poder realizar la simulación.

A continuación en la Figura 1, se muestra el código utilizado en una función para poder realizar la simulación:
Figura 1 Código implementado para la simulación

Lo primero que realiza la función es, obtener los valores de las velocidades angulares respecto a ejes cuerpo, esto
entra al bloque mediante unas señales senoidales y lo almacena en el vector Omega Ω = [𝑝 𝑞 𝑟]𝑇 . Posteriormente
se construye la matriz 𝑊 y se calcula su inversa 𝑊 −1 , esto para obtener la ecuación mostrada en (6). El vector
[𝜙̇ 𝜃̇ 𝜓̇]𝑇 sale de la función para que sus elementos sean integrados e ingresen de nueva cuenta a la función como
[𝜙 𝜃 𝜓], los cuales, son los ángulos de Euler, cuyos valores se sustituyen en las matrices de rotación que forman a
la matriz mostrada en (1), que en el programa se denominó R. Finalmente, debido a que el bloque Rotation Matrix to
VRML Rotation debe de recibir un vector columna de nueve elementos, la matriz R se descompuso en un vector v de
9x1 elementos.

El código mostrado en la Figura 1, se complementa con el diagrama de bloques de Simulink mostrado en la Figura 2.

Figura 2 Diagrama a bloques de Simulink

Con lo anterior fue posible realizar la simulación de realidad virtual del satélite.

 Equivalencias numéricas de las matrices de rotación obtenidas a partir de : ángulos de Euler,


cuaterniones y osciladores
De los desarrollos hechos en clase y en el presente documento, se obtuvieron tres matrices de rotación las
cuales se enlistan:

1) Matriz de rotación a partir de ángulos de Euler

𝑅𝐸𝑢𝑙 = 𝑅𝜓 ∗ 𝑅𝜃 ∗ 𝑅𝜙 … (7)

2) Matriz de rotación a partir de cuaterniones

𝑅𝑞𝑢𝑎𝑡 = 𝐼 + 2 𝜂 𝑆(𝜖 ) + 2 𝑆(𝜖 ) 𝑆(𝜖 ) … (8)

3) Matriz de rotación a partir de osciladores

𝑅𝑂𝑠𝑐 = 𝑅𝜓 (𝑧1, 𝑧2) ∗ 𝑅𝜃 (𝑦1, 𝑦2) ∗ 𝑅𝜙 (𝑥1, 𝑥2) … (9)

Para realizar la equivalencia numérica, se retoman las propiedades de las matrices orto normales:

det(𝑅) = 1 𝑅 𝑇 𝑅 = 𝐼

Por lo que para comprobar si las tres matrices de rotación anteriores son equivalentes se puede emplear la
siguiente relación:
𝑇
𝑡𝑟𝑎𝑧𝑎(𝐼 − 𝑅𝑞𝑢𝑎𝑡 ∗ 𝑅𝐸𝑢𝑙 ) = 0 … (10)

Nota: La ecuación (10) también debe de ser equivalente con:


𝑇
𝑡𝑟𝑎𝑧𝑎(𝐼 − 𝑅𝑞𝑢𝑎𝑡 ∗ 𝑅𝑜𝑠𝑐 ) = 0 … (11)
𝑇
𝑡𝑟𝑎𝑧𝑎(𝐼 − 𝑅𝑜𝑠𝑐 ∗ 𝑅𝐸𝑢𝑙 ) = 0 … (12)

En clase, se realizaron las funciones de Matlab que generaban la matriz de rotación a partir de cuaterniones
y osciladores, mientras que, en este documento, se generó la función de Matlab que generó la matriz de
rotación a partir de los ángulos de Euler, dichas tres matrices para funcionar con el bloque denominado
Rotation Matrix to VRML Rotation, fueron pasadas a una representación de un vector columna de 9x1. Para poder
realizar la comparación numérica, se empleará la ecuación (10) sin embargo, no se descompondrá en un vector de 9x1,
se mantendrá en su forma 3x3 para poder realizar la operación de traza, la cual, será programada en una función de
Matlab, casi como se muestra en la Figura 3.

Figura 3 Código para comparación entre matrices de rotación

De la Figura 3, el valor obtenido, de realizar la operación de traza, se almacena en una variable denominada
error, la cual, al ser observada mediante un Scope, se busca que sea un valor pequeño cercano a cero para
mostrar la equivalencia entre matrices de rotación.
En la Figura 4, se muestra el resultado de realizar la operación mostrada en la ecuación (10), (también
mostrada en la Figura 3).

Figura 4 Error entre matrices de rotación: cuaterniones y Euler

De la Figura 4, se observa que existe cierto error entre los valores arrojados por las matrices de rotación, sin embargo,
el orden de dicho error es de 𝑥10−5 , lo cual, se considera muy pequeño, concluyendo en que las matrices de rotación
que se comparan son equivalentes. A continuación, en las Figuras 4 y 5 se muestran las gráficas de error derivadas de
las ecuaciones (11) y (12).

Figura 5 Error entre matrices de rotación: cuaterniones y osciladores


Figura 6 Figura 5 Error entre matrices de rotación: osciladores y Euler