Está en la página 1de 32

1.

Utilizando el hecho que , demuestre que el producto punto de dos vectores libres no depende de
los marcos de referencia seleccionados.

R//:

Primero se tienen dos vectores definidos en el marco de referencia {1}

Para los cuales el producto punto sería igual a:

Luego estos vectores se mapean a un nuevo marco de referencia, el marco de referencia {0}:

Que también puede expresarse en términos de su matriz de rotación

Si ahora se hace el producto punto de los dos vectores en el nuevo marco de referencia se tendría lo siguiente:

Esto último se puede simplificar si se consideran las siguientes propiedades de las matrices

1.

2.
3. Toda matriz de rotación cumple que

Dejando el nuevo producto punto de la siguiente manera

1
2. Responda las siguientes preguntas:

a) ¿Qué es una base?

R//:

Una base en un espacio vectorial V es un conjunto de vectores linealmente independientes, que pertenecen al
espacio vectorial V y que pueden generar cualquier elemento de dicho espacio vectorial V. Un ejemplo de una
base son los vectores , y , los cuales pueden representar cualquier elemento del espacio tridimensional
por medio de una combinación lineal.

b) ¿Qué es un sistema de coordenadas?

R//:

Un sistema coordenado es aquel que permite describir la posición de un cuerpo o partícula a través de
números o coordenadas, es decir, es un sistema de referencia a partir del cual se puede definir la posición de
un objeto.

3. Halle la combinación lineal que genera el elemento w en términos de los elementos del conjunto S dado,
para los casos a y b.

Realice con ayuda de Matlab las gráficas del vector y la base del espacio para cada uno de los casos.

a)

R//:

Para resolver este punto se establece el siguiente sistema de ecuaciones:

De donde se tiene que , lo que se puede reemplazar en la segunda ecuación (segunda fila del sistema)

Ahora con el valor de b se vuelve a la primera ecuación y se halla el valor de a de la siguiente manera:

2
Lo que dejaría la siguiente combinación lineal:

A continuación se presenta gráficamente esta operación, en donde la base se representa en color rojo,
mientras que el vector formado se presenta en azul; de la misma manera y a modo de verificación se
representa gráficamente la suma de la combinación lineal, la cual se encuentra en color verde.

clf
quiver(0,0,0,-4,1,'b')
hold on
quiver(-2,2,2*1,2*-3,1,'g')
hold on
quiver(0,0,-1*2,-1*-2,1,'g')
hold on
quiver(0,0,1,-3,1,'r')
hold on
quiver(0,0,2,-2,1,'r')
legend('vector','suma','','base')
grid on

3
b)

R//:

De aquí se obtienen las siguientes ecuaciones que conforman al anterior sistema

Para resolver este sistema se pueden expresar las variables a y b en términos de c para así reemplazar en la
primera ecuación

Después este valor de c se reemplaza en la ecuaciones 3 y 4 para obtener los valores de a y b

Y por último se verifica que estos valores cumplan la condición de la ecuación 2:

Esto se puede verificar con el procesamiento de Matlab al expresarlo en una forma matricial más cómoda para
resolver a través de la matriz inversa.

4
Ahora se calcula la matriz inversa con ayuda de Matlab con el siguiente código:

A = [1 -1 1; -1 1 0; 1 0 -1; 0 1 1];
B = [6;-5;1;-2];
x = A\B

x = 3×1
2.0000
-3.0000
1.0000

Donde se tiene que

4. En se denomina base canónica a la formada por los vectores = [1 0 0]′, = [0 1 0]′ y = [0 0 1]′

• Expresar el vector , como la combinación lineal de los vectores de la base canónica.

R//:

• Calcular la proyección del vector sobre cada uno de los vectores de la base canónica.

R//:

Para realizar las respectivas proyecciones en este punto, se remite a la siguiente expresión
donde representa el vector sobre el cual se desea proyectar el vector , ya que en esta expresión se
presenta en el producto punto al interior de los paréntesis la longitud de la componente en del vector , ya
que es un vector unitario, la cual luego se multiplica al vector para darle la misma orientación que tiene
este vector unitario.

- Proyección respecto a :

5
- Proyección respecto a :

- Proyección respecto a :

• Calcular el coseno del ángulo entre el vector y los vectores de la base canónica.

R//:

Considerando que un producto punto con un vector unitario se calcula la magnitud del vector

Para posteriormente usar dicha magnitud para dividir el resultado del producto punto en cada caso y finalmente
hallar el respectivo coseno.

• En Matlab realice las gráficas de la base canónica, el vector y las proyecciones calculadas.

clf
% Vector d
quiver3(0,0,0,4,2,-1,'r')

6
hold on

% Proyección en i
quiver3(0,0,0,4,0,0,'g')
hold on
% Proyección en j
quiver3(0,0,0,0,2,0,'c')
hold on
% Proyección en k
quiver3(0,0,0,0,0,-1,'m')
hold on

% Base
quiver3(0,0,0,1,0,0,'b')
hold on
quiver3(0,0,0,0,1,0,'b')
hold on
quiver3(0,0,0,0,0,1,'b')

legend('Vector d','d_i','d_j','d_k','Base','','')

view([-23.39 13.05])

7
5. Dadas las matrices , , y

Realice las siguientes operaciones (En caso de que alguna no sea posible de realizar, indique la razón):

a)

Para esta operación se debe multiplicar primero lo que está al interior de los paréntesis para después
transponer el respectivo resultado.

b)

Este caso es contrario al anterior, ya que aquí primero se debe transponer cada matriz para luego multiplicar

c)

Este punto no se puede realizar debido a que en medio de las operaciones se presenta una incongruencia
entre dimensiones, puesto que la multiplicación entre deja una matriz cuadrada 2x2 y esta solo puede
multiplicarse por la matriz de la derecha, generando un 3x2, ya que esta última es 3x2; así que finalmente se
tendría una multiplicación entre dos matrices 3x2, lo que es imposible de realizar debido a la incongruencia en
las dimensiones.

8
d)

En este caso se vuelve a presentar una incongruencia en las dimensiones a la hora de realizar la resta, puesto
que al lado izquierdo se tiene una matriz 2x3, mientras que al lado derecho se tiene una 2x2.

e)

Es el mismo que el anterior.

f)

Para este último caso, primero se calcula la transpuesta de la matriz de la izquierda, para luego proceder por
las respectivas multiplicaciones respetando el orden que imponen los paréntesis

6. Sea una matriz de rotación:

• Confirme que se cumplen al menos 3 de las propiedades de este tipo de matrices.

R//:

La transpuesta es igual a su inversa.

R_1 = [0.7071 0.7071 0; -0.6124 0.6124 -0.5; -0.3536 0.3536 0.866];

9
R_1.'-R_1^(-1) %Se cumple porque este resultado es cercano a cero

ans = 3×3
10-4 ×
-0.1356 -0.7291 -0.6242
-0.1356 0.7291 0.6242
-0.0000 0.4356 -0.2566

Su determinante es igual a 1.

det(R_1)

ans = 1.0000

Los vectores fila son unitarios.

norm(R_1(1,:))

ans = 1.0000

norm(R_1(2,:))

ans = 1.0000

norm(R_1(3,:))

ans = 1.0000

Los vectores columna son unitarios.

norm(R_1(:,1))

ans = 1.0000

norm(R_1(:,2))

ans = 1.0000

norm(R_1(:,3))

ans = 1.0000

• ¿Qué efecto tiene la precisión numérica en el cálculo de matrices inversas y determinantes?. Consulte
el comando de MATLAB que permite visualizar la menor unidad con la que dicho software es capaz de
trabajar.

R//:

La presición numérica de Matlab podría afectar el cálculo de matrices inversas y de determinantes porque
cuando se tienen números sumamente pequeños, y que se encuentren cerca del límite de esta precisión,
podrían salirse de dicho límite con operaciones como la multiplicación que se ejecutan en ambos procesos.
Esto podría llevar a que los números que superen dicho límite pierdan la información que no puede ser
procesada por Matlab por ser muy pequeña, haciendo que el valor calculado contenga un error.

10
Un comando de Matlab que permite visualizar la menor unidad con la que es capaz de trabajar es realmin, la
cual arroja el menor número positivo normalizado en coma flotante.

realmin

Además de esto, Matlab también tiene funciones que permiten notar que tan precisos o estables son algunos
de los cálculos que ejecuta, como cond que arroja que tan estable es el valor obtenido al calclar la inversa de
una matriz.

cond(R_1)

ans = 1.0001

7. Dados los sistemas de coordenadas { }, { } y { }, suponga que:

Encuentre la matriz .

R//:

Para resolver este punto, primero se debe entender que la matriz es un elemento que permite transformar
un vector de un marco de referencia { } a un marco de referencia { }, de la misma manera que lo haría una
matriz de rotación que traduce elementos del marco de referencia { } al marco de referencia { } combinada
con otra que pase de este nuevo marco al marco { }; es decir:

Y ya que no se tiene , se puede hacer uso de la siguiente propiedad que cumplen las matrices de rotación,
para así poderla expresar en términos de la que si se tiene: .

De esta manera se puede reescribir la expresión para hallar de la siguiente manera

Ahora con ayuda de Matlab se definen las matrices conocidas

R_B2A = [1 0 0; 0 sqrt(3)/2 -1/2; 0 1/2 sqrt(3)/2];


R_C2A = [0 0 -1; 0 1 0; 1 0 0];

Y se procede a calcular el valor que tomaría dicha matriz

11
R_C2B = R_B2A^(-1)*R_C2A

R_C2B = 3×3
0 0 -1.0000
0.5000 0.8660 0
0.8660 -0.5000 0

De lo que queda que

8. Encuentre la representación en ángulos fijos (roll, pitch, yaw ) de la matriz de rotación

R//:

Para resolver este ejercicio se considera una composición de rotaciones semejante a la presentada en clase:

Por lo que cada uno de los ángulos se puede calcular de la siguiente manera:

- Con los elementos y de la matriz de rotación se puede hallar el valor del roll por medio de

, por lo que esta rotación tomaría el valor de

- Dado que el elemento de dicha matriz es igual a 0, se puede establecer que el valor de pitch es igual a ,
porque

12
- Por último el yaw se encuentra con los elementos y con la expresión lo que daría

como resultado

Lo anterior llevaría a concluir que se realizó un rotación de en roll para formar la matriz , es decir,

9. Encuentre la representación en ángulos de Euler de la matriz de rotación

R//:

Para resolver este ejercicio se considera una composición de rotaciones semejante a la presentada en clase:

Por lo que cada uno de los ángulos se puede calcular de la siguiente manera:

- Primero, el valor de se se puede encontrar con los elementos y con la expresión lo

que daría como resultado

- Para el valor de se hace uso del elemento , y de la expresión

13
- Por último, con los elementos y de la matriz de rotación se puede hallar el valor de por medio de

, por lo que esta rotación tomaría el valor de

Lo anterior llevaría una matriz representada por las siguientes rotaciones en ángulos de Euler

10. Dados y . Encuentre la matriz .

R//:

Para resolver este ejercicio primero se analiza el vector con ayuda de Matlab

clf
quiver3(0,0,0,1/sqrt(3),1/sqrt(3),1/sqrt(3),1)
view(45,45)

14
Ahora partiendo del ejemplo dado en el libro Robot Dynamics and Control de Mark W. Spong, para realizar la
rotación a través de dicho eje, este eje se puede mover hasta uno de los ejes fijos ( ) para allí realizar
una operación de rotación simple con la cantidad de grados como indica. Así que para ello se propone rotar
grados respecto al eje , para luego rotar grados respecto a , para allí realizar una rotación grados
respecto a y finalmente se devuelven las dos primeras rotaciones para dejar al eje nuevamente en su
posición inicial.

Cabe aclarar que como estas operaciones se realizan respecto a ejes fijos, se deben realizar operaciones de
premultiplicación entre las diferentes matrices de rotación, es decir:

Así que ahora se procede a hallar los ángulos y para realizar las respectivas rotaciones.

Primero, se puede definir como el arcocoseno de la división entre la componente en del vector (que es el
producto punto entre dichos vectores) sobre la magnitud del último vector.

k = [1/sqrt(3) 1/sqrt(3) 1/sqrt(3)];


beta = acos((1/sqrt(3))/norm(k))

beta = 0.9553

En cuanto a , este se encuentra definido como el ángulo entre el eje y la proyección del vector en el
plano , y ya que esta proyección consiste en describir el vector con las componentes x y y su magnitud se

puede expresar como . Según lo anterior se puede definir como el arcocoseno de la división de la

componente en del vector sobre .

alpha = acos((1/sqrt(3))/sqrt( (1/sqrt(3))^2 + (1/sqrt(3))^2 ))

alpha = 0.7854

15
Ahora que ya se tienen los ángulos, se procede a calcular las respectivas matrices de rotación con ayuda de
Matlab, para esto solo se calculan los giros en un sentido, ya que en sentido contrario se puede usar la inversa
de la respectiva matriz de rotación.

R_z_alpha = rotz(alpha)

R_z_alpha = 3×3
0.7071 -0.7071 0
0.7071 0.7071 0
0 0 1.0000

R_y_beta = roty(beta)

R_y_beta = 3×3
0.5774 0 0.8165
0 1.0000 0
-0.8165 0 0.5774

R_z_theta2 = rotz(pi/2)

R_z_theta2 = 3×3
0.0000 -1.0000 0
1.0000 0.0000 0
0 0 1.0000

Finalmente se multiplican las matrices y se obtiene la matriz .

R_k_theta = rotz(alpha) * roty(beta) * rotz(pi/2)...


* roty(beta)^(-1)* rotz(alpha)^(-1)

R_k_theta = 3×3
0.3333 -0.2440 0.9107
0.9107 0.3333 -0.2440
-0.2440 0.9107 0.3333

11. Un marco de referencia { } inicialmente se encuentra coincidente con el marco { }. Se rota { } alrededor
de y luego alrededor de resultante un ángulo de . ¿Cuál es la MTH que relaciona ambos marcos
luego de las rotaciones?

R//:

Para desarrollar este ejercicio primero se hallan las matrices de rotación para las dos rotaciones mencionadas
en la descripción.

16
Para así luego hallar la matriz de rotación que relaciona los dos marcos de referencia por la postmultiplicación
de las dos matrices anteriores, ya que esta operación no es a través de ejes fijos.

Por último, se une el vector de desplazamiento entre ambos marcos de referencia, que para este caso es igual
a cero en todas sus componentes, a la matriz de rotación añadiéndole una cuarta columna. Finalmente para
que la matriz de transformación homogénea sea cuadrada se añade una fila de ceros con un 1 en el último
elemento.

Manejo de Toolbox

Haciendo uso de las funciones del Toolbox Peter Corke:

• Compruebe el cálculo previo de la MTH que relaciona los marcos de referencia { } y { }.

R//:

En este caso simplemente se hace uso de las funciones roty y rotz para representar las dos rotaciones
descritas anteriormente

R = roty(pi/4)*rotz(pi/6)

R = 3×3
0.6124 -0.3536 0.7071
0.5000 0.8660 0
-0.6124 0.3536 0.7071

17
MTH = rt2tr(R,[0 0 0]')

MTH = 4×4
0.6124 -0.3536 0.7071 0
0.5000 0.8660 0 0
-0.6124 0.3536 0.7071 0
0 0 0 1.0000

Aquí se puede encontrar que la matriz es igual al resultado obtenido en el estamento anterior.

• Exprese el marco de referencia { } en representación por ángulos fijos (roll, pitch, yaw ), ángulos de
euler y ángulo-eje equivalente.

R//:

- Ángulos fijos

MTH_rpy = tr2rpy(MTH)

MTH_rpy = 1×3
0 0.7854 0.5236

- Ángulos de Euler

MTH_eul = tr2eul(MTH)

MTH_eul = 1×3
0 0.7854 0.5236

- Ángulo-eje equivalente

MTH_angvec = tr2angvec(MTH, 'deg')

MTH_angvec = 0.9363

• Realice la gráfica de los marcos de referencia { } y { }.

trplot(eye(4)) %Marco A en azul


hold on
trplot(MTH, 'color','r') %Marco B en rojo

view([111.80 29.72])

18
12. Considere el sistema de la Figura, encuentre las MTH correspondientes a , y . Demuestre que

R//:

Para resolver este punto se procede a hallar la matriz de rotación y vector de desplazamiento solicitados para
después combinarlos y formar la MTH. Cabe aclarar que las respectivas rotaciones fueron halladas por simple
inspección de la Figura en cuestión.

- Para el marco de referencia {1} respecto al {0}:

19
- Para el marco de referencia {2} respecto al {0}:

- Para el marco de referencia {2} respecto al {1}:

Ahora con las MTHs encontradas se procede a demostrar la siguiente igualdad.

Para ello simplemente se operan las matrices y se compara en ambos lados del igual.

20
Dando como resultado la conservación de la equivalencia, lo que demuestra que la igualdad es cierta.

Manejo de Toolbox
Haciendo uso de las funciones del Toolbox Peter Corke:

• Compruebe el resultado obtenido anteriormente.

R//:

Para esto se hace uso de las funciones de rotación del Toolbox para replicar lo realizado en el estamento
anterior y comprobar que los resultados son iguales.

T_1to0 = rt2tr(rotx(pi/2)*rotz(-pi/2),[0 0 1]')

T_1to0 = 4×4
0.0000 1.0000 0 0
-0.0000 0.0000 -1.0000 0
-1.0000 0.0000 0.0000 1.0000
0 0 0 1.0000

T_2to0 = rt2tr(rotz(-pi/2)*rotx(pi/2), [0 1 0]')

T_2to0 = 4×4
0.0000 0.0000 -1.0000 0
-1.0000 0.0000 -0.0000 1.0000
0 1.0000 0.0000 0
0 0 0 1.0000

T_2to1 = rt2tr(rotz(pi/2)*roty(-pi/2), [1 0 -1]')

T_2to1 = 4×4
0.0000 -1.0000 -0.0000 1.0000
0.0000 0.0000 -1.0000 0
1.0000 0 0.0000 -1.0000
0 0 0 1.0000

T_2to0 - T_1to0 * T_2to1 %Como este valor es cercano a cero

21
ans = 4×4
10-15 ×
0 0.0612 0 -0.0612
0 -0.0612 0 0.1110
-0.0612 0 0.0612 0
0 0 0 0

%se demuestra que la igualdad es cierta

• Realice la gráfica de los 3 marcos de referencia.

R//:

clf
trplot(eye(4), 'color','g', 'length',0.3)% Marco {0} en verde
hold on
trplot(T_1to0, 'color','r', 'length',0.3)% Marco {1} en rojo
hold on
trplot(T_2to0, 'color','b', 'length',0.3)% Marco {2} en azul

xlim([-1.17 1.23])
ylim([-1.04 1.36])
zlim([-0.02 2.38])
view([297.95 30.09])

22
13. En la Figura se muestran 4 marcos de referencia en el espacio de trabajo de un robot, el marco fijo { }, el
marco TCP { }, el marco de cámara { } y el marco de la pieza de trabajo { }.

• Encuentre y .

R//:

De manera similar al punto 12, aquí se hallan primero las matrices de rotación y vectores de desplazamiento
para cada MTH solicitada.

- Para el marco de referencia {d} respecto al {a}:

- Para el marco de referencia {d} respecto al {c}:

23
• Encuentre sabiendo que:

R//:

En este caso se considera una composición de rotaciones con ángulos de Euler, por lo que las matrices
se deben postmultiplicar generando las respectivas conexiones entre marcos de referencia. Para ello es
importante recordar que la inversa de una MTH invierte el sentido de la transformación, es decir, si una
cierta MTH lleva del marco {d} al {c}, su inversa llevará del {d} al {c}. Según lo anterior se plantea la siguiente
igualdad:

A partir de aquí se reemplazan las matrices y se procede a resolver.

Otro punto importante a tener en cuenta es que la inversa de una MTH es igual a la combinación de la
transpuesta de la matriz de rotación que contiene combinada con la multiplicación entre la negación de
dicha matriz compuesta con el vector de desplazamiento. Esto último permite generar el nuevo vector de
desplazamiento como se muestra a continuación.

24
Ya con las inversas se continua resolviendo las operaciones matriciales.

Manejo de Toolbox
Haciendo uso de las funciones del Toolbox Peter Corke:

• De las MTH calculadas en los literales anteriores represente las orientaciones en ángulos de Euler y ángulos
Fijos.

- Para

T_dtoa = rt2tr(eye(3),[-1 1 0]')

T_dtoa = 4×4
1 0 0 -1
0 1 0 1
0 0 1 0
0 0 0 1

T_dtoa_eul = tr2eul(T_dtoa)%Representación en ángulos de Euler

T_dtoa_eul = 1×3
0 0 0

T_dtoa_rpy = tr2rpy(T_dtoa)%Representación en ángulos fijos

T_dtoa_rpy = 1×3
0 0 0

- Para

25
T_dtoc = rt2tr([0 1 0; 1 0 0; 0 0 -1],[0 0 2]')

T_dtoc = 4×4
0 1 0 0
1 0 0 0
0 0 -1 2
0 0 0 1

T_dtoc_eul = tr2eul(T_dtoc)%Representación en ángulos de Euler

T_dtoc_eul = 1×3
0 3.1416 1.5708

T_dtoc_rpy = tr2rpy(T_dtoc)%Representación en ángulos fijos

T_dtoc_rpy = 1×3
-3.1416 0 -1.5708

- Para

T_ctob = rt2tr(eye(3),[4 0 0]')

T_ctob = 4×4
1 0 0 4
0 1 0 0
0 0 1 0
0 0 0 1

T_ctob_eul = tr2eul(T_ctob)%Representación en ángulos de Euler

T_ctob_eul = 1×3
0 0 0

T_ctob_rpy = tr2rpy(T_ctob)%Representación en ángulos fijos

T_ctob_rpy = 1×3
0 0 0

- Para

T_btoa = T_dtoa * T_dtoc^(-1) * T_ctob^(-1)

T_btoa = 4×4
0 1 0 -1
1 0 0 -3
0 0 -1 2
0 0 0 1

T_btoa_eul = tr2eul(T_btoa)%Representación en ángulos de Euler

T_btoa_eul = 1×3
0 3.1416 1.5708

T_btoa_rpy = tr2rpy(T_btoa)%Representación en ángulos fijos

T_btoa_rpy = 1×3
-3.1416 0 -1.5708

26
• Realice la gráfica de los 4 marcos de referencia.

clf
trplot(eye(4), 'color','r', 'length',0.5)% Marco {a} en rojo
hold on
trplot(T_dtoa, 'color','g', 'length',0.5)% Marco {d} en verde
hold on
trplot(T_dtoa * T_dtoc^(-1), 'color','c', 'length',0.5)
% Marco {c} en cian
hold on
trplot(T_btoa, 'color','b', 'length',0.5)% Marco {b} en azul

xlim([-2.78 0.75])
ylim([-3.39 2.95])
zlim([-0.07 4.65])
view([424.37 32.25])

14. La Figura representa tres marcos de referencia ubicados en las esquinas de una cuña, estos han sido
denominados { }, { } y { }.

27
Manejo de Toolbox
Haciendo uso de las funciones del Toolbox Peter Corke:

• Determine las MTH encuentre las MTH correspondientes a , y .

R//:

Para desarrollar este ejercicio se encontraron las rotaciones por simple inspección y se procedió a
representarlas por medio de las funciones rotx, roty y rotz. De la misma manera se hallaron los vectores
de desplazamiento y se combinaron con las matrices de rotación por medio de la función rt2tr.

T_CtoA = rt2tr(rotx(pi)*rotz(-36.9*pi/180), [-3 4 2]')

T_CtoA = 4×4
0.7997 0.6004 0 -3.0000
0.6004 -0.7997 -0.0000 4.0000
-0.0000 0.0000 -1.0000 2.0000
0 0 0 1.0000

T_CtoB = rt2tr(rotx(-pi/2)*rotz(pi-36.9*pi/180), [3 0 0]')

T_CtoB = 4×4
-0.7997 -0.6004 0 3.0000
0.0000 -0.0000 1.0000 0
-0.6004 0.7997 0.0000 0
0 0 0 1.0000

T_AtoC = rt2tr(rotz(36.9*pi/180) * rotx(pi), [0 5 2]')

T_AtoC = 4×4
0.7997 0.6004 0.0000 0
0.6004 -0.7997 -0.0000 5.0000
0 0.0000 -1.0000 2.0000
0 0 0 1.0000

28
• Realice la gráfica de los 3 marcos de referencia.

clf
trplot(eye(4), 'color','r', 'length',2)
%Marco de referencia {A} en rojo
hold on
trplot(T_CtoA, 'color','g', 'length',2)
%Marco de referencia {C} respecto a {A} en verde
hold on
trplot(T_CtoA * T_CtoB^(-1), 'color','b', 'length',2)
%Marco de referencia {B} respecto a {A} en azul

xlim([-5.5 3.3])
ylim([-2.5 6.3])
zlim([-0.1 8.7])
view([162.2 31.2])

• Exprese los marcos de referencia { } y { } en representación por ángulos fijos y angulos de euler
(respecto a { }).

- Para { }

%Representación en ángulos de Euler


T_BtoA_eul = tr2eul(T_CtoA * T_CtoB^(-1))

29
T_BtoA_eul = 1×3
-1.5708 1.5708 -1.5708

%Representación en ángulos fijos


T_BtoA_rpy = tr2rpy(T_CtoA * T_CtoB^(-1))

T_BtoA_rpy = 1×3
1.5708 -0.0000 -3.1416

- Para { }

%Representación en ángulos de Euler

T_CtoA_eul = 1×3
0 3.1416 2.4976

T_CtoA_eul = tr2eul(T_CtoA)
%Representación en ángulos fijos
T_CtoA_rpy = tr2rpy(T_CtoA)

T_CtoA_rpy = 1×3
3.1416 0 -0.6440

15. Encuentre la representación en matriz de rotación dada la representación ángulo-eje equivalente ,

. Compruebe usando las funciones del Toolbox de Peter Corke.

R//:

De manera similar al ejercicio 10, se plantea resolver este ejercicio a través de la siguiente composición de
rotaciones, las cuales se realizan con ejes fijos y por ende requieren de una premultiplicación.

Los ángulos aquí mencionados atienden al mismo razonamiento aplicado en el numeral 10, por lo que se
recomienda revisar la Figura presentada en la solución de dicho ejercicio en caso de cualquier duda.

Así que nuevamente se procede a hallar los ángulos y para realizar las respectivas rotaciones.

Primero, se puede definir como el arcocoseno de la división entre la componente en del vector (que es el
producto punto entre dichos vectores) sobre la magnitud del último vector.

K = [2/sqrt(14) 3/sqrt(14) 1/sqrt(14)];


beta2 = acos((1/sqrt(14))/norm(K))

beta2 = 1.3002

30
En cuanto a , este se encuentra definido como el ángulo entre el eje y la proyección del vector en el
plano , y ya que esta proyección consiste en describir el vector con las componentes x y y su magnitud se

puede expresar como . Segun lo anterior se puede definir como el arcocoseno de la división de la

componente en del vector sobre .

alpha2 = acos((2/sqrt(14))/sqrt( (2/sqrt(14))^2 + (3/sqrt(14))^2))

alpha2 = 0.9828

Ahora que ya se tienen los ángulos, se procede a calcular las respectivas matrices de rotación con ayuda de
Matlab, para esto solo se calculan los giros en un sentido, ya que en sentido contrario se puede usar la inversa
de la respectiva matriz de rotación.

Finalmente se multiplican las matrices y se obtiene la matriz .

R_K_theta = rotz(alpha2) * roty(beta2) * rotz(pi/3)...


* roty(beta2)^(-1)* rotz(alpha2)^(-1)

R_K_theta = 3×3
0.6429 -0.0172 0.7658
0.4457 0.8214 -0.3558
-0.6229 0.5701 0.5357

A modo de comprobación, se realiza el ejercicio haciendo uso de las funciones del Toolbox de Peter Corke.

R_K_theta_PCorke = angvec2r(pi/3,K)

R_K_theta_PCorke = 3×3
0.6429 -0.0172 0.7658
0.4457 0.8214 -0.3558
-0.6229 0.5701 0.5357

R_K_theta - R_K_theta_PCorke

ans = 3×3
10-15 ×
0 -0.1665 0
0.1110 -0.1110 0
0 0.1110 0

Debido a que el anterior resultado es muy cercano a 0, se puede considerar que se halló lo mismo por ambos
métodos y que por ende el procedimiento tiene buenas probabilidades de ser correcto.

16. Del punto anterior obtenga la representación en cuaternio. Compruebe usando las funciones del Toolbox de
Peter Corke.

R//:

31
Para obtener la representación de la anterior rotación en términos de los cuaterniones se puede recurrir a la
siguiente fórmula, la cual relaciona las componentes del eje equivalente y el ángulo de rotación con los cuatro
elementos de un cuaternión:

Haciendo uso básico de Matlab, se podría expresar de la siguiente manera:

[cos((pi/3)/2) [2/sqrt(14) 3/sqrt(14) 1/sqrt(14)]*sin((pi/3)/2)]

ans = 1×4
0.8660 0.2673 0.4009 0.1336

Y este cálculo a su vez puede ser verificado por la función que dispone el Toolbox de Peter Corke.

Quaternion(pi/3,K)

ans =

0.86603 < 0.26726, 0.40089, 0.13363 >

De donde se tiene que ambos procedimientos convergen a un mismo resultado

32

También podría gustarte