Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicios
1. Utilizando el hecho que , demuestre que el producto punto de dos vectores libres no
depende de los marcos de referencia seleccionados.
Sea y definidos segun el marco de referencia . Sea otro marco de referencia tal
1
2. Responda las siguientes preguntas:
Un sistema de coordenadas es un marco con un origen y direcciones, el cual permite determinar la posición y
orientació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.
a)
S = [1 2;-3 -2]
S = 2×2
1 2
-3 -2
W = [0;-4]
W = 2×1
0
-4
alpha = S\W
alpha = 2×1
2.0000
2
-1.0000
b)
S = 4×3
1 -1 1
-1 1 0
1 0 -1
0 1 1
W = [6;-5;1;-2]
W = 4×1
6
-5
1
-2
alpha = S\W
alpha = 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]′, = [0 0 1]′.
• Expresar el vector d = [4, 2, −1]′, como la combinación lineal de los vectores de la base canónica.
• Calcular la proyección del vector sobre cada uno de los vectores de la base canonica.
3
• Calcular el coseno del ángulo entre el vector d y los vectores de la base canónica.
d = [4;2;-1];
norm_d = norm(d)
norm_d = 4.5826
cos_i = 4/norm_d
cos_i = 0.8729
cos_j = 2/norm_d
cos_j = 0.4364
cos_k = -1/norm_d
cos_k = -0.2182
• En Matlab realice las gráficas de la base canónica, el vector d y las proyecciones calculadas.
figure()
%Proyecciones
quiver3(0,0,0,4,0,0,'off','--k')
hold on
quiver3(0,0,0,0,2,0,'off','--k')
quiver3(0,0,0,0,0,-1,'off','--k')
%Base canónica
quiver3(0,0,0,1,0,0,'off','r')
quiver3(0,0,0,0,1,0,'off','g')
quiver3(0,0,0,0,0,1,'off','b')
%Vector
quiver3(4,2,-1,-4,-2,1,'off','*k')
hold off
view(120,15)
4
5. Dadas las matrices y .Realice
las siguientes operaciones (En caso de que alguna no sea posible de realizar, indique la razón):
a)
(A*B)'
ans = 2×3
-14 27 -20
8 -19 11
b)
(D'*A')
ans = 3×3
161 0 0
-260 1 0
5
20 0 1
c)
d) y e)
La operación no es posible ya que se restan matrices de diferentes tamaños. Seria posible si se añaden ceros
a la matriz 2x2.
ans = 3×3
-3 2 4
3 -2 -4
-3 2 5
f)
(B'*(2*B))*(C*B)
ans = 2×2
44 -26
-26 18
1.
2.
3.
R1 = 3×3
0.4330 -0.7500 -0.5000
0.4356 0.6597 -0.6124
0.7891 0.0474 0.6124
%1
6
R1' - inv(R1)
ans = 3×3
10-4 ×
-0.4243 -0.1448 -0.7623
0.3121 -0.4113 0.2923
-0.6156 -0.3045 0.2955
%2
detR1 = det(R1)
detR1 = 1.0000
%3
cross(R1(1,:),R1(2,:))
ans = 1×3
0.7892 0.0474 0.6124
cross(R1(2,:),R1(3,:))
ans = 1×3
0.4330 -0.7500 -0.4999
cross(R1(3,:),R1(1,:))
ans = 1×3
0.4356 0.6597 -0.6123
cross(R1(:,1),R1(:,2))
ans = 3×1
-0.4999
-0.6123
0.6124
cross(R1(:,2),R1(:,3))
ans = 3×1
0.4330
0.4356
0.7892
cross(R1(:,3),R1(:,1))
ans = 3×1
-0.7500
0.6597
0.0474
7
Como se vio en el ejercicio anterior, la precisión numerica hace que los resultados no sean exactamente igual a
los teoricos ya que existe un error de redondeo. El comando realmin muestra la cantidad mas pequeña que se
puede trabajar en MATLAB.
realmin
ans = 2.2251e-308
Encuentre la matriz
R_ab = 3×3
1.0000 0 0
0 0.8660 -0.5000
0 0.5000 0.8660
R_ac = [0 0 -1; 0 1 0; 1 0 0]
R_ac = 3×3
0 0 -1
0 1 0
1 0 0
R_ba = R_ab'
R_ba = 3×3
1.0000 0 0
0 0.8660 0.5000
0 -0.5000 0.8660
R_bc= R_ba*R_ac
R_bc = 3×3
0 0 -1.0000
0.5000 0.8660 0
0.8660 -0.5000 0
8
R_ab = [1 0 0; 0 sqrt(3)/2 -1/2;0 1/2 sqrt(3)/2];
roll = atan(R_ab(3,2)/R_ab(3,3))
roll = 0.5236
pitch = -asin(R_ab(3,1))
pitch = 0
yaw = atan(R_ab(2,1)/R_ab(1,1))
yaw = 0
Se verifica con la función rpy2r que retorna una rotación a partir de los angulos roll, pitch y yaw.
R_ab = rpy2r(roll,pitch,yaw)
R_ab = 3×3
1.0000 0 0
0 0.8660 -0.5000
0 0.5000 0.8660
R_ab = [0.4330 -0.2500 0.8660; 0.8839 0.3062 -0.3536; -0.1768 0.9186 0.3536]
R_ab = 3×3
0.4330 -0.2500 0.8660
0.8839 0.3062 -0.3536
-0.1768 0.9186 0.3536
phi = atan(R_ab(2,3)/R_ab(1,3))
phi = -0.3877
theta = acos(R_ab(3,3))
theta = 1.2094
psi = atan(-R_ab(3,2)/R_ab(3,1))
9
psi = 1.3807
Se verifica con la función eul2r que retorna una rotación a partir de los angulos de euler.
R_ab=eul2r(phi,theta,psi)
R_ab = 3×3
0.4331 -0.2500 0.8660
0.8839 0.3062 -0.3536
-0.1768 0.9185 0.3536
kx = 1/sqrt(3);
ky = kx;
kz = kx;
theta = pi/2;
cos_theta = cos(theta)
cos_theta = 6.1232e-17
sin_theta = sin(theta)
sin_theta = 1
v_theta = 1 - cos_theta
v_theta = 1.0000
Rk = 3×3
0.3333 -0.2440 0.9107
0.9107 0.3333 -0.2440
-0.2440 0.9107 0.3333
Se verifica con la función angvec2r que retorna una rotación a partir de un angulo y un eje.
angvec2r(theta,[kx ky kz])
ans = 3×3
0.3333 -0.2440 0.9107
0.9107 0.3333 -0.2440
10
-0.2440 0.9107 0.3333
11. Un marco de referencia {B} inicialmente se encuentra coincidente con el marco {A}. Se rota {B}
alrededor de 45° y luego alrededor de resultante un ángulo de 30°. ¿Cuál es la MTH que relaciona
ambos marcos luego de las rotaciones?
Al ser rotaciones respecto a los ejes creados despues de cada rotación, son angulos de Euler. Por tanto, la
matriz de rotación resulta de la posmultiplicación de la matriz de rotación individuales.
Ry = 3×3
0.7071 0 0.7071
0 1.0000 0
-0.7071 0 0.7071
Rz = 3×3
0.8660 -0.5000 0
0.5000 0.8660 0
0 0 1.0000
R_ab = Ry * Rz;
MTH_ab = [R_ab zeros(3,1);[0 0 0 1]]
MTH_ab = 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
Manejo de Toolbox
• Compruebe el cálculo previo de la MTH que relaciona los marcos de referencia {A} y {B}.
MTH_ab = 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
• Exprese el marco de referencia {B} en representación por ángulos fijos (roll, pitch, yaw), ángulos de
euler y ángulo-eje equivalente.
roll = 0
pitch = RPY(2)
11
pitch = 0.7854
yaw = RPY(3)
yaw = 0.5236
phi = 0
theta = EUL(2)
theta = 0.7854
psi = EUL(3)
psi = 0.5236
[theta,vector]=tr2angvec(MTH_ab)%Ángulo-Eje
theta = 0.9363
vector = 1×3
0.2195 0.8192 0.5299
figure()
trplot(eye(4),'frame','A')
hold on
trplot(MTH_ab,'frame','B','color','r')
hold off
view(120,20)
12
12. Considere el sistema de la Figura 1, encuentre las MTH correspondientes a , y . Demuestre
que .
El sistema 1 se encuentra trasladado y rotado respecto al sistema 0. La rotación se puede definir como una
rotación de 180° respecto al eje Y.
13
d_01 = [1;0.5;0]
d_01 = 3×1
1.0000
0.5000
0
R_01 = 3×3
-1.0000 0 0.0000
0 1.0000 0
-0.0000 0 -1.0000
MTH_01 = 4×4
-1.0000 0 0.0000 1.0000
0 1.0000 0 0.5000
-0.0000 0 -1.0000 0
0 0 0 1.0000
El sistema 2 se encuentra trasladado y rotado respecto al sistema 1. La rotación se puede definir como una
rotación de -90° respecto eje Y y luego una rotación de 90° respecto al nuevo eje X.
d_12 = 3×1
1.0000
-0.5000
-1.0000
R_12_y = 3×3
0.0000 0 -1.0000
0 1.0000 0
1.0000 0 0.0000
R_12_x = 3×3
1.0000 0 0
0 0.0000 -1.0000
0 1.0000 0.0000
R_12 = 3×3
0.0000 -1.0000 -0.0000
0 0.0000 -1.0000
1.0000 0.0000 0.0000
MTH_12 = 4×4
0.0000 -1.0000 -0.0000 1.0000
0 0.0000 -1.0000 -0.5000
1.0000 0.0000 0.0000 -1.0000
0 0 0 1.0000
14
El sistema 2 se encuentra trasladado y rotado respecto al sistema 0. La rotación se puede definir como una
rotación de 90° respecto al eje Y y luego una rotación respecto al nuevo eje X de 90°.
d_02 = [0 ;0 ;1]
d_02 = 3×1
0
0
1
R_02_y = 3×3
0.0000 0 1.0000
0 1.0000 0
-1.0000 0 0.0000
R_02_x = 3×3
1.0000 0 0
0 0.0000 -1.0000
0 1.0000 0.0000
R_02 = 3×3
0.0000 1.0000 0.0000
0 0.0000 -1.0000
-1.0000 0.0000 0.0000
MTH_02 = 4×4
0.0000 1.0000 0.0000 0
0 0.0000 -1.0000 0
-1.0000 0.0000 0.0000 1.0000
0 0 0 1.0000
Se realiza la comprobación
MTH_01 * MTH_12
ans = 4×4
0.0000 1.0000 0.0000 -0.0000
0 0.0000 -1.0000 0
-1.0000 0.0000 0.0000 1.0000
0 0 0 1.0000
Manejo de Toolbox A
R_01 = roty(180,'deg')
R_01 = 3×3
-1.0000 0 0.0000
0 1.0000 0
15
-0.0000 0 -1.0000
MTH_01 = rt2tr(R_01,d_01)
MTH_01 = 4×4
-1.0000 0 0.0000 1.0000
0 1.0000 0 0.5000
-0.0000 0 -1.0000 0
0 0 0 1.0000
R_12 = 3×3
0.0000 -1.0000 -0.0000
0 0.0000 -1.0000
1.0000 0.0000 0.0000
MTH_12 = rt2tr(R_12,d_12)
MTH_12 = 4×4
0.0000 -1.0000 -0.0000 1.0000
0 0.0000 -1.0000 -0.5000
1.0000 0.0000 0.0000 -1.0000
0 0 0 1.0000
R_02 = 3×3
0.0000 1.0000 0.0000
0 0.0000 -1.0000
-1.0000 0.0000 0.0000
MTH_02 = rt2tr(R_02,d_02)
MTH_02 = 4×4
0.0000 1.0000 0.0000 0
0 0.0000 -1.0000 0
-1.0000 0.0000 0.0000 1.0000
0 0 0 1.0000
figure()
trplot(eye(4),'frame','0','length',0.3)
hold on
trplot(MTH_02,'frame','2','color','r','length',0.3)
trplot(MTH_01,'frame','1','color','g','length',0.3)
hold off
view([-120 30])
16
13. En la Figura 2 se muestran 4 marcos de referencia en el espacio de trabajo de un robot, el marco fijo
{a}, el marco TCP {b}, el marco de cámara {c} y el marco de la pieza de trabajo {d}.
17
• Encuentre y .
d_ad = [-1;1;0]
d_ad = 3×1
-1
1
0
d_cd = [0;0;2]
d_cd = 3×1
0
0
2
R_ad = eye(3)
R_ad = 3×3
1 0 0
0 1 0
0 0 1
R_cd_y = 3×3
-1.0000 0 0.0000
0 1.0000 0
-0.0000 0 -1.0000
R_cd_z = 3×3
0.0000 -1.0000 0
1.0000 0.0000 0
0 0 1.0000
R_cd = 3×3
-0.0000 1.0000 0.0000
1.0000 0.0000 0
-0.0000 0.0000 -1.0000
T_ad = 4×4
1 0 0 -1
0 1 0 1
0 0 1 0
0 0 0 1
T_cd = 4×4
-0.0000 1.0000 0.0000 0
1.0000 0.0000 0 0
-0.0000 0.0000 -1.0000 2.0000
0 0 0 1.0000
18
• Encuentre sabiendo que:
Se encuentra como:
d_bc = [-2;1;0];
R_bc = eye(3);
T_bc = [R_bc d_bc ; zeros(1,3) 1];
T_cb = [R_bc' -R_bc'*d_bc;zeros(1,3) 1]
T_cb = 4×4
1 0 0 2
0 1 0 -1
0 0 1 0
0 0 0 1
Se encuentra como:
T_dc = 4×4
-0.0000 1.0000 -0.0000 0.0000
1.0000 0.0000 0.0000 -0.0000
0.0000 0 -1.0000 2.0000
0 0 0 1.0000
Por tanto,
T_ab = T_ad*T_dc*T_cb
T_ab = 4×4
-0.0000 1.0000 -0.0000 -2.0000
1.0000 0.0000 0.0000 3.0000
0.0000 0 -1.0000 2.0000
0 0 0 1.0000
19
Manejo de Toolbox
• De las MTH calculadas en los literales anteriores represente las orientaciones en ángulos de Euler y
ángulos Fijos.
tr2rpy(T_ad)
ans = 1×3
0 0 0
tr2eul(T_ad)
ans = 1×3
0 0 0
tr2rpy(T_cd)
ans = 1×3
-3.1416 0.0000 -1.5708
tr2eul(T_cd)
ans = 1×3
0 3.1416 1.5708
tr2rpy(T_ab)
ans = 1×3
-3.1416 -0.0000 -1.5708
tr2eul(T_ab)
ans = 1×3
0 -3.1416 1.5708
20
14. La figura 3 representa tres marcos de referencia ubicados en las esquinas de una cuña, estos han
sido denominados {A}, {B} y {C}.
Manejo de Toolbox
21
d_ac = [-3;4;2];
R_ac = roty(180,'deg') * rotz(90 + 53.1,"deg");
T_ac = rt2tr(R_ac,d_ac)
T_ac = 4×4
0.7997 0.6004 0.0000 -3.0000
0.6004 -0.7997 0 4.0000
0.0000 0.0000 -1.0000 2.0000
0 0 0 1.0000
d_bc = [3;0;0];
R_bc = rotx(-90,'deg') * rotz(90 + 53.1,"deg");
T_bc = rt2tr(R_bc,d_bc)
T_bc = 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_ca = 4×4
0.7997 0.6004 0.0000 -0.0026
0.6004 -0.7997 0.0000 5.0000
0.0000 0 -1.0000 2.0000
0 0 0 1.0000
T_cb = 4×4
-0.7997 0.0000 -0.6004 2.3991
-0.6004 -0.0000 0.7997 1.8013
0 1.0000 0.0000 0
0 0 0 1.0000
figure()
trplot(eye(4),'frame','A','axis',[-3 1 -1 5 -1 5])
hold on
trplot(T_ac,'frame','C')
trplot(T_ac*T_cb,'frame','B')
hold off
view(160,20)
22
• Exprese los marcos de referencia {B} y {C} en representación por ángulos fijos y ángulos de euler
(respecto a {A})
tr2rpy(T_ac)
ans = 1×3
-3.1416 0.0000 -0.6440
tr2eul(T_ac)
ans = 1×3
0 3.1416 2.4976
T_ab = T_ac*T_cb
T_ab = 4×4
-1.0000 0.0000 0.0000 -0.0000
0 0.0000 -1.0000 4.0000
-0.0000 -1.0000 -0.0000 2.0000
0 0 0 1.0000
tr2rpy(T_ab)
ans = 1×3
1.5708 0.0000 -3.1416
tr2eul(T_ab)
ans = 1×3
-1.5708 1.5708 -1.5708
23
15. Encuentre la representación en matriz de rotación dada la representación ángulo-eje equivalente
k = (1/sqrt(14)) * [2;3;1]
k = 3×1
0.5345
0.8018
0.2673
theta = pi/3;
kx = k(1);
ky = k(2);
kz = k(3);
cos_theta = cos(theta)
cos_theta = 0.5000
sin_theta = sin(theta)
sin_theta = 0.8660
v_theta = 1 - cos_theta
v_theta = 0.5000
Rk = 3×3
0.6429 -0.0172 0.7658
0.4457 0.8214 -0.3558
-0.6229 0.5701 0.5357
Rk =angvec2r(theta,k)
Rk = 3×3
0.6429 -0.0172 0.7658
0.4457 0.8214 -0.3558
-0.6229 0.5701 0.5357
24
16. Del punto anterior obtenga la representación en cuaternio. Compruebe usando las funciones del
Toolbox de Peter Corke.
Q = 1×4
0.8660 0.2673 0.4009 0.1336
Q = Quaternion(Rk)
Q =
25