Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Utilizando el hecho que , demuestre que el producto punto de dos vectores libres no depende de
los marcos de referencia seleccionados.
R//:
Luego estos vectores se mapean a un nuevo marco de referencia, el marco de referencia {0}:
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
1
2. Responda las siguientes preguntas:
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.
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//:
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//:
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
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
4. En se denomina base canónica a la formada por los vectores = [1 0 0]′, = [0 1 0]′ y = [0 0 1]′
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)
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
R//:
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
norm(R_1(1,:))
ans = 1.0000
norm(R_1(2,:))
ans = 1.0000
norm(R_1(3,:))
ans = 1.0000
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
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: .
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
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
- 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,
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:
13
- Por último, con los elementos y de la matriz de rotación se puede hallar el valor de por medio de
Lo anterior llevaría una matriz representada por las siguientes rotaciones en ángulos de Euler
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.
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
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
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
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 = 0.9363
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.
19
- Para el marco de referencia {2} respecto al {0}:
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:
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 = 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 = 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 = 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
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
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.
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:
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 = 4×4
1 0 0 -1
0 1 0 1
0 0 1 0
0 0 0 1
T_dtoa_eul = 1×3
0 0 0
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 = 1×3
0 3.1416 1.5708
T_dtoc_rpy = 1×3
-3.1416 0 -1.5708
- Para
T_ctob = 4×4
1 0 0 4
0 1 0 0
0 0 1 0
0 0 0 1
T_ctob_eul = 1×3
0 0 0
T_ctob_rpy = 1×3
0 0 0
- Para
T_btoa = 4×4
0 1 0 -1
1 0 0 -3
0 0 -1 2
0 0 0 1
T_btoa_eul = 1×3
0 3.1416 1.5708
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:
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 = 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 = 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 = 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 { }
29
T_BtoA_eul = 1×3
-1.5708 1.5708 -1.5708
T_BtoA_rpy = 1×3
1.5708 -0.0000 -3.1416
- Para { }
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
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.
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
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.
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:
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 =
32