0% encontró este documento útil (0 votos)
81 vistas19 páginas

Publish Lab1

Robotica, MATLAB
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
81 vistas19 páginas

Publish Lab1

Robotica, MATLAB
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

% Universidad Nacional de Trujillo - Ingeniería Mecatrónica

% Laboratorio 1
% Robótica
% Tema: Representación Espacial de Cuerpos Rígidos.
% Integrantes:
% - Aguilar Valdiviezo, Hans Andy
% - Juarez Mercedes, Luis Alexander
% - Rondon Miguel, Wilmer MAriano
% Fecha: 04/10/2019
%-------------------------------------------------------------------------

% Ejercicio 1. Dada la matriz 3x3. Determinar si constituye una matriz de rotación.


clc, clear, close all

% Matriz dada.
M = [0.3536 -0.61240 0.7071;
0.92680 0.1268 -0.3536;
0.12680 0.78030 0.6124]

% Justificación: Para determinar si una matriz es una matriz de rotacion se debe cumplir
% que la multiplicacion matricial de la matriz transpuesta y la matriz
% evaluada debe ser igual a la matriz identidad.
I = M.'*M
I = round(M'*M)

if I == eye(3)
disp('Respuesta: Sí constrituye una matriz de rotación');
else
disp('Respuesta: No constrituye una matriz de rotación');
end
%-------------------------------------------------------------------------

M =

0.3536 -0.6124 0.7071


0.9268 0.1268 -0.3536
0.1268 0.7803 0.6124

I =

1.0001 -0.0001 -0.0000


-0.0001 1.0000 -0.0000
-0.0000 -0.0000 1.0001

I =

1 0 0
0 1 0
0 0 1

Respuesta: Sí constrituye una matriz de rotación


% Ejercicio 2. Considerar la matriz de rotación R tal que. Considerar que
% dicha rotación fue aplicada a un sistema de referencia.
% Ejercicio 2.a. Esbozar el sistema de referencia inicial y el sistema
% final luego d epalicar la rotación mostrada.
clc, clear, close all

% Matriz de rotación.
R = [0 0 -1;
-1 0 0;
0 1 0]

% Hallamos la posicion de los ejes del sistema rotado respecto al sistema


% inercial.
Mu = R*[1;0;0]
Mv = R*[0;1;0]
Mw = R*[0;0;1]

tamano=get(0,'ScreenSize');
figure('position',[tamano(1) tamano(2) tamano(3) tamano(4)]);
% Ahora ploteamos El sistema de coordenadas inicial.
subplot(1,2,1);
title('Sistema Fijo');
hold on
line([-1 1],[0 0],[0 0],'Color','k') % Linea X
line([0 0],[-1 1],[0 0],'Color','k') % Linea Y
line([0 0],[0 0],[-1 1],'Color','k') % Linea Z
quiver3(0,0,0,1,0,0, 'linewidth',3) % Vector X
quiver3(0,0,0,0,1,0, 'linewidth',3) % Vector Y
quiver3(0,0,0,0,0,1, 'linewidth',3) % Vector Z
% Etiquetas de los vectores
tx=text(1,0.1,0,'X','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
ty=text(0,1+0.05,0,'Y','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
tz=text(0,0.1,1,'Z','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
plot3([1 -1 -1 1 1], [-1 -1 1 1 -1], [0 0 0 0 0],'Color','k'); % Plano XY
plot3([1 -1 -1 1 1], [0 0 0 0 0], [-1 -1 1 1 -1],'Color','k'); % Plano YZ
plot3([0 0 0 0 0], [-1 -1 1 1 -1], [1 -1 -1 1 1],'Color','k'); % Plano XZ
view(120,20) % (Azimuth, elevation)
% Vista en perspectiva
set(gca,'BoxStyle','full','Box','on','Projection','perspective')
daspect([1 1 1]) % Relación de aspecto
axis off
grid on

% Ahora ploteamos El sistema de coordenadas final.


subplot(1,2,2);
title('Sistema Móvil');
hold on
line([-1 1],[0 0],[0 0],'Color','k') % Linea X
line([0 0],[-1 1],[0 0],'Color','k') % Linea Y
line([0 0],[0 0],[-1 1],'Color','k') % Linea Z
quiver3(0,0,0,Mu(1),Mu(2),Mu(3), 'linewidth',3) % Vector X
quiver3(0,0,0,Mv(1),Mv(2),Mv(3), 'linewidth',3) % Vector Y
quiver3(0,0,0,Mw(1),Mw(2),Mw(3), 'linewidth',3) % Vector Z
% Etiquetas de los vectores
tx=text(0,-1-0.1,0,'U','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
ty=text(0,0.1,1,'V','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
tz=text(-1-0.1,0,0,'W','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
plot3([1 -1 -1 1 1], [-1 -1 1 1 -1], [0 0 0 0 0],'Color','k'); % Plano XY
plot3([1 -1 -1 1 1], [0 0 0 0 0], [-1 -1 1 1 -1],'Color','k'); % Plano YZ
plot3([0 0 0 0 0], [-1 -1 1 1 -1], [1 -1 -1 1 1],'Color','k'); % Plano XZ
view(120,20) % (Azimuth, elevation)
% Vista en perspectiva
set(gca,'BoxStyle','full','Box','on','Projection','perspective')
daspect([1 1 1]) % Relación de aspecto
axis off
grid on
%-------------------------------------------------------------------------

R =

0 0 -1
-1 0 0
0 1 0

Mu =

0
-1
0

Mv =

0
0
1

Mw =

-1
0
0
% Ejercicio 2.b. Determinar una posible secuencia de rotación básica en
% x,y,z que pudieran dar origen a R.
clc, clear, close all

% Una posible secuencia de rotación para conseguir el resultado final dado


% es primero rotar en Z y luego rotar en Y.
R1 = rotz(-90)
R2 = roty(-90)
% Esto se reduce en una matriz de rotación resultante de una
% pre-multiplicacion ya que las rotaciones se ejecutan en los ejes fijos.
R = R2*R1

% Hallamos la posicion de los ejes del sistema rotado en Z respecto al


% sistema inercial.
Mu_1 = R1*[1;0;0]
Mv_1 = R1*[0;1;0]
Mw_1 = R1*[0;0;1]
% Hallamos la posicion de los ejes del sistema rotado en Y respecto al
% sistema inercial.
Mu = R2*Mu_1
Mv = R2*Mv_1
Mw = R2*Mw_1

tamano=get(0,'ScreenSize');
figure('position',[tamano(1) tamano(2) tamano(3) tamano(4)]);
% Ahora ploteamos El sistema de coordenadas fijo.
subplot(1,3,1);
title('Sistema Fijo');
hold on
line([-1 1],[0 0],[0 0],'Color','k') % Linea X
line([0 0],[-1 1],[0 0],'Color','k') % Linea Y
line([0 0],[0 0],[-1 1],'Color','k') % Linea Z
quiver3(0,0,0,1,0,0, 'linewidth',3) % Vector X
quiver3(0,0,0,0,1,0, 'linewidth',3) % Vector Y
quiver3(0,0,0,0,0,1, 'linewidth',3) % Vector Z
% Etiquetas de los vectores
tx=text(1,0.1,0,'X','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
ty=text(0,1+0.05,0,'Y','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
tz=text(0,0.1,1,'Z','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
plot3([1 -1 -1 1 1], [-1 -1 1 1 -1], [0 0 0 0 0],'Color','k'); % Plano XY
plot3([1 -1 -1 1 1], [0 0 0 0 0], [-1 -1 1 1 -1],'Color','k'); % Plano YZ
plot3([0 0 0 0 0], [-1 -1 1 1 -1], [1 -1 -1 1 1],'Color','k'); % Plano XZ
view(120,20) % (Azimuth, elevation)
% Vista en perspectiva
set(gca,'BoxStyle','full','Box','on','Projection','perspective')
daspect([1 1 1]) % Relación de aspecto
axis off
grid on

% Ahora ploteamos El sistema de coordenadas móvil.


subplot(1,3,2);
title('Rotación en Z (-90°)');
hold on
line([-1 1],[0 0],[0 0],'Color','k') % Linea X
line([0 0],[-1 1],[0 0],'Color','k') % Linea Y
line([0 0],[0 0],[-1 1],'Color','k') % Linea Z
quiver3(0,0,0,Mu_1(1),Mu_1(2),Mu_1(3), 'linewidth',3)
quiver3(0,0,0,Mv_1(1),Mv_1(2),Mv_1(3), 'linewidth',3)
quiver3(0,0,0,Mw_1(1),Mw_1(2),Mw_1(3), 'linewidth',3)
% Etiquetas de los vectores
tx=text(0,-1-0.1,0,'U''','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
ty=text(1,0.1,0,'V''','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
tz=text(0,0.1,1,'W''','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
plot3([1 -1 -1 1 1], [-1 -1 1 1 -1], [0 0 0 0 0],'Color','k'); % Plano XY
plot3([1 -1 -1 1 1], [0 0 0 0 0], [-1 -1 1 1 -1],'Color','k'); % Plano YZ
plot3([0 0 0 0 0], [-1 -1 1 1 -1], [1 -1 -1 1 1],'Color','k'); % Plano XZ
view(120,20) % (Azimuth, elevation)
% Vista en perspectiva
set(gca,'BoxStyle','full','Box','on','Projection','perspective')
daspect([1 1 1]) % Relación de aspecto
axis off
grid on

% Ahora ploteamos El sistema de coordenadas móvil.


subplot(1,3,3);
title('Rotación en Y (-90°)');
hold on
line([-1 1],[0 0],[0 0],'Color','k') % Linea X
line([0 0],[-1 1],[0 0],'Color','k') % Linea Y
line([0 0],[0 0],[-1 1],'Color','k') % Linea Z
quiver3(0,0,0,Mu(1),Mu(2),Mu(3), 'linewidth',3)
quiver3(0,0,0,Mv(1),Mv(2),Mv(3), 'linewidth',3)
quiver3(0,0,0,Mw(1),Mw(2),Mw(3), 'linewidth',3)
% Etiquetas de los vectores
tx=text(0,-1-0.1,0,'U','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
ty=text(-1,0.1,0,'V','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
tz=text(0,0.1,1,'W','Color',[0.6350 0.0780 0.1840],'FontWeight','bold');
plot3([1 -1 -1 1 1], [-1 -1 1 1 -1], [0 0 0 0 0],'Color','k'); % Plano XY
plot3([1 -1 -1 1 1], [0 0 0 0 0], [-1 -1 1 1 -1],'Color','k'); % Plano YZ
plot3([0 0 0 0 0], [-1 -1 1 1 -1], [1 -1 -1 1 1],'Color','k'); % Plano XZ
view(120,20) % (Azimuth, elevation)
% Vista en perspectiva
set(gca,'BoxStyle','full','Box','on','Projection','perspective')
daspect([1 1 1]) % Relación de aspecto
axis off
grid on

%-------------------------------------------------------------------------

R1 =

0 1 0
-1 0 0
0 0 1

R2 =

0 0 -1
0 1 0
1 0 0

R =

0 0 -1
-1 0 0
0 1 0

Mu_1 =

0
-1
0

Mv_1 =

1
0
0

Mw_1 =

0
0
1

Mu =

0
-1
0

Mv =

0
0
1

Mw =

-1
0
0

% Ejercicio 3.
% Ejercicio 3.a. Calcule la matriz de rotación que transforma las
% coordenadas de un vector posición p del sistema B al
% sistema A
clc, clear, close all

% angulos en sexagesimales
syms a b

% Ya que es una rotacion en ejes relativos, entonces se procede a una


% post-multiplicacion.
R_BA = rotx1(a*180/pi)*roty1(b*180/pi)

% Ejercicio 3.b. Calcule la matriz de rotación que transforma las


% coordenadas de un vector posición p del sistema {A} al
% sistema {B}.

% Ya que es una rotacion en ejes relativos, entonces se procede a una


% post-multiplicacion.
R_AB = simplify(R_BA.')
%-------------------------------------------------------------------------

R_BA =

[ cos(a)*cos(b), -cos(a)*sin(b), sin(a)]


[ sin(b), 1, 0]
[ 0, 0, cos(a)]

R_AB =

[ cos(a)*cos(b), sin(b), 0]
[ -cos(a)*sin(b), 1, 0]
[ sin(a), 0, cos(a)]

% Ejercicio 4. Se tiene un vector de posición dado con respecto al sistema


% B y se tiene la matriz de rotación.
% Ejercicio 4.a. Calcular el vector posición P_A con respecto al sistema A.
clc, clear, close all

disp('EJERCICIO 4.A')
% Vector posición respecto a B
P_B = [3;5;2]
% Matriz de rotacion de A respecto a B
R_BA = [1 0 0;
0 0.6 0.8;
0 -0.8 0.6]
% Vector posición respecto a A
P_A = R_BA.'*(P_B)

% Ejercicio 4.B. Usando el vector PA obtenido y la matriz de rotación,


% encontrar P_B. Verificar que es el resultado sea coherente.

disp('EJERCICIO 4.B')
% Vector posición respecto a A
P_B = R_BA*P_A
%-------------------------------------------------------------------------

EJERCICIO 4.A

P_B =

3
5
2

R_BA =

1.0000 0 0
0 0.6000 0.8000
0 -0.8000 0.6000

P_A =

3.0000
1.4000
5.2000
EJERCICIO 4.B

P_B =

3
5
2

% Ejercicio 5. Sean los sistemas de referencia A, B, C dadas las matrices


% de rotación.
clc, clear, close all

disp('EJERCICIO 5')
% MAtrices de rotación
R_AB = [1 0 0;
0 1/2 sqrt(3)/2;
0 -sqrt(3)/2 1/2]

R_AC = [1 0 0;
0 0.6 0.8;
0 -0.8 0.6]

% Primero hallamos la matriz de rotación de A respecto a B


R_BA = R_AB.'

% Finalmente hallamos la matriz de rotación de C conrrespecto a B


% multiplicando en cadena.
disp('R_BC = R_BA*R_AC')
R_BC = R_BA*R_AC
%-------------------------------------------------------------------------

EJERCICIO 5

R_AB =

1.0000 0 0
0 0.5000 0.8660
0 -0.8660 0.5000

R_AC =

1.0000 0 0
0 0.6000 0.8000
0 -0.8000 0.6000

R_BA =

1.0000 0 0
0 0.5000 -0.8660
0 0.8660 0.5000

R_BC = R_BA*R_AC

R_BC =
1.0000 0 0
0 0.9928 -0.1196
0 0.1196 0.9928

% Ejercicio 6. Se tiene un sistema de referencia fijo F. A un sistema A


% inicialmente coincidentes con F se le aplica una rotación de
% theta grados alrrededor del eje Z. Seguidamente, al sistema
% resultante se le aplica una rotación de -90° alrrededor del
% eje X del sistema F. Finalemnte a este nuevo sistema se le
% aplica una rotación de 90° alrrededor del nuevo eje Y. La
% matriz de rtación resultante es:
clc, clear, close all

disp('EJERCICIO 6')

syms theta

% Matriz de rotacion final


R = [0 0.866 -0.5;
-1 0 0;
0 0.5 0.866]

% Matriz resultante auxiliar: se multiplica por 180/pi por estetica al


% momento de mostrarlo en consola
R1 = rotx(-90)*rotz1(theta*180/pi)*roty(90)

% Matriz resultante
R2 = rotx(-90)*rotz1(theta)*roty(90);

% Se hallan los resultados de las ecuaciones de senos y cosenos


theta1 = round(solve(R2(1,2)-R(1,2)))
theta2 = round(solve(R2(1,3)-R(1,3)))

% Se comparan los dos resultados de los senos y cosenos y se determina cual


% de ambos resultados cumple con ambas soluciones.
disp('El valor de theta es: ')
if mod(theta1(1),theta2(1))==0
disp(theta1(1))
elseif mod(theta1(1),theta2(2))==0
disp(theta1(1))
elseif mod(theta1(2),theta2(1))==0
disp(theta1(2))
elseif mod(theta1(2),theta2(2))==0
disp(theta1(2))
end
%-------------------------------------------------------------------------

EJERCICIO 6

R =

0 0.8660 -0.5000
-1.0000 0 0
0 0.5000 0.8660
R1 =

[ 0, -sin(theta), cos(theta)]
[ -1, 0, 0]
[ 0, -cos(theta), -sin(theta)]

theta1 =

240
-60

theta2 =

-120
120

El valor de theta es:


240

% Ejercicio 7. Para la figura siguiente, determinar 4x4 matrices de


% transformación homogéneas A_Oi para i = 1,2,3,4,5
clc, clear, close all

disp('EJERCICIO 7')

syms a b c d e
a=4.5; b=4.5; c=2; d=3; e=2.5;
% Matrices de rotación, traslación y transformación para cada
% transformación homogénea

% Matriz A_O1
R1 = roty(-180)*rotx(90)
P1 = [0; c+e; a-d]
T1 = [R1 P1;
0 0 0 1]
% Matriz A_O2
R2 = rotz(-90)
P2 = [-b; c+e; 0]
T2 = [R2 P2;
0 0 0 1]
% Matriz A_O3
R3 = rotx(90)*rotz(-90)
P3 = [-b; c; a]
T3 = [R3 P3;
0 0 0 1]
% Matriz A_O4
R4 = eye(3)
P4 = [-b; 0; a-d]
T4 = [R4 P4;
0 0 0 1]
% Matriz A_O5
R5 = roty(-90)*rotz(90)
P5 = [0; 0; a]
T5 = [R5 P5;
0 0 0 1]

% ALGORITMO PARA LA GRÁFICA DE DE LOS SISTEMAS DE COORDENADAS


%-------------------------------------------------------------------------
P1x=R1*[1;0;0]; P1y=R1*[0;1;0]; P1z=R1*[0;0;1];
P2x=R2*[1;0;0]; P2y=R2*[0;1;0]; P2z=R2*[0;0;1];
P3x=R3*[1;0;0]; P3y=R3*[0;1;0]; P3z=R3*[0;0;1];
P4x=R4*[1;0;0]; P4y=R4*[0;1;0]; P4z=R4*[0;0;1];
P5x=R5*[1;0;0]; P5y=R5*[0;1;0]; P5z=R5*[0;0;1];

T1x=T1*[1;0;0;1]; T1y=T1*[0;1;0;1]; T1z=T1*[0;0;1;1];


T2x=T2*[1;0;0;1]; T2y=T2*[0;1;0;1]; T2z=T2*[0;0;1;1];
T3x=T3*[1;0;0;1]; T3y=T3*[0;1;0;1]; T3z=T3*[0;0;1;1];
T4x=T4*[1;0;0;1]; T4y=T4*[0;1;0;1]; T4z=T4*[0;0;1;1];
T5x=T5*[1;0;0;1]; T5y=T5*[0;1;0;1]; T5z=T5*[0;0;1;1];
%-------------------------------------------------------------------------
tamano=get(0,'ScreenSize');
figure('position',[tamano(1) tamano(2) tamano(3) tamano(4)]);
% Ahora ploteamos El sistema de coordenadas móvil.
title('Verificación de Ejercicio 7');
hold on
% Poliedro de ubicación.
plot3([0 0 0 0 0 0 0], [0 c+e c+e c c 0 0], [0 0 a-d a-d a a 0],'Color','k');
plot3([-b 0 0 -b -b -b -b -b 0 0 -b], [c+e c+e c+e c+e c+e c c 0 0 c c], [a-d a-d 0 0 a-
d a-d a a a a a],'Color','k');
plot3([-b 0 0 -b -b -b], [0 0 c c 0 0], [a-d a-d a-d a-d a-d
a],'Color','k','LineStyle','--');
% Sistema de coordenadas 0
quiver3(0,0,0,1,0,0, 'linewidth',3,'Color',[0 0.4470 0.7410])
quiver3(0,0,0,0,1,0, 'linewidth',3,'Color',[0.8500 0.3250 0.0980])
quiver3(0,0,0,0,0,1, 'linewidth',3,'Color',[0.9290 0.6940 0.1250])
text(1+0.1,0,0,'X0','Color',[0.6350 0.0780
0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(0,1+0.1,0,'Y0','Color',[0.6350 0.0780
0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(0,0,1+0.1,'Z0','Color',[0.6350 0.0780
0.1840],'FontWeight','bold','HorizontalAlignment','center');
% Sistema de coordenadas 1
quiver3(P1(1),P1(2),P1(3),P1x(1),P1x(2),P1x(3), 'linewidth',3,'Color',[0 0.4470 0.7410])
quiver3(P1(1),P1(2),P1(3),P1y(1),P1y(2),P1y(3), 'linewidth',3,'Color',[0.8500 0.3250
0.0980])
quiver3(P1(1),P1(2),P1(3),P1z(1),P1z(2),P1z(3), 'linewidth',3,'Color',[0.9290 0.6940
0.1250])
text(T1x(1)+0.1*R1(1,1),T1x(2)+0.1*R1(2,1),T1x(3)+0.1*R1(3,1),'X1','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T1y(1)+0.1*R1(1,2),T1y(2)+0.1*R1(2,2),T1y(3)+0.1*R1(3,2),'Y1','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T1z(1)+0.1*R1(1,3),T1z(2)+0.1*R1(2,3),T1z(3)+0.1*R1(3,3),'Z1','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
% Sistema de coordenadas 2
quiver3(P2(1),P2(2),P2(3),P2x(1),P2x(2),P2x(3), 'linewidth',3,'Color',[0 0.4470 0.7410])
quiver3(P2(1),P2(2),P2(3),P2y(1),P2y(2),P2y(3), 'linewidth',3,'Color',[0.8500 0.3250
0.0980])
quiver3(P2(1),P2(2),P2(3),P2z(1),P2z(2),P2z(3), 'linewidth',3,'Color',[0.9290 0.6940
0.1250])
text(T2x(1)+0.1*R2(1,1),T2x(2)+0.1*R2(2,1),T2x(3)+0.1*R2(3,1),'X2','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T2y(1)+0.1*R2(1,2),T2y(2)+0.1*R2(2,2),T2y(3)+0.1*R2(3,2),'Y2','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T2z(1)+0.1*R2(1,3),T2z(2)+0.1*R2(2,3),T2z(3)+0.1*R2(3,3),'Z2','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
% Sistema de coordenadas 3
quiver3(P3(1),P3(2),P3(3),P3x(1),P3x(2),P3x(3), 'linewidth',3,'Color',[0 0.4470 0.7410])
quiver3(P3(1),P3(2),P3(3),P3y(1),P3y(2),P3y(3), 'linewidth',3,'Color',[0.8500 0.3250
0.0980])
quiver3(P3(1),P3(2),P3(3),P3z(1),P3z(2),P3z(3), 'linewidth',3,'Color',[0.9290 0.6940
0.1250])
text(T3x(1)+0.1*R3(1,1),T3x(2)+0.1*R3(2,1),T3x(3)+0.1*R3(3,1),'X3','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T3y(1)+0.1*R3(1,2),T3y(2)+0.1*R3(2,2),T3y(3)+0.1*R3(3,2),'Y3','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T3z(1)+0.1*R3(1,3),T3z(2)+0.1*R3(2,3),T3z(3)+0.1*R3(3,3),'Z3','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
% Sistema de coordenadas 4
quiver3(P4(1),P4(2),P4(3),P4x(1),P4x(2),P4x(3), 'linewidth',3,'Color',[0 0.4470 0.7410])
quiver3(P4(1),P4(2),P4(3),P4y(1),P4y(2),P4y(3), 'linewidth',3,'Color',[0.8500 0.3250
0.0980])
quiver3(P4(1),P4(2),P4(3),P4z(1),P4z(2),P4z(3), 'linewidth',3,'Color',[0.9290 0.6940
0.1250])
text(T4x(1)+0.1*R4(1,1),T4x(2)+0.1*R4(2,1),T4x(3)+0.1*R4(3,1),'X4','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T4y(1)+0.1*R4(1,2),T4y(2)+0.1*R4(2,2),T4y(3)+0.1*R4(3,2),'Y4','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T4z(1)+0.1*R4(1,3),T4z(2)+0.1*R4(2,3),T4z(3)+0.1*R4(3,3),'Z4','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
% Sistema de coordenadas 5
quiver3(P5(1),P5(2),P5(3),P5x(1),P5x(2),P5x(3), 'linewidth',3,'Color',[0 0.4470 0.7410])
quiver3(P5(1),P5(2),P5(3),P5y(1),P5y(2),P5y(3), 'linewidth',3,'Color',[0.8500 0.3250
0.0980])
quiver3(P5(1),P5(2),P5(3),P5z(1),P5z(2),P5z(3), 'linewidth',3,'Color',[0.9290 0.6940
0.1250])
text(T5x(1)+0.1*R5(1,1),T5x(2)+0.1*R5(2,1),T5x(3)+0.1*R5(3,1),'X4','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T5y(1)+0.1*R5(1,2),T5y(2)+0.1*R5(2,2),T5y(3)+0.1*R5(3,2),'Y4','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T5z(1)+0.1*R5(1,3),T5z(2)+0.1*R5(2,3),T5z(3)+0.1*R5(3,3),'Z4','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
% (Azimuth, elevation)
view(122,19)
% Vista en perspectiva
set(gca,'BoxStyle','full','Projection','perspective')
daspect([1 1 1]) % Relación de aspecto
axis off
grid on
%-------------------------------------------------------------------------

EJERCICIO 7

R1 =

-1 0 0
0 0 -1
0 -1 0
P1 =

0
4.5000
1.5000

T1 =

-1.0000 0 0 0
0 0 -1.0000 4.5000
0 -1.0000 0 1.5000
0 0 0 1.0000

R2 =

0 1 0
-1 0 0
0 0 1

P2 =

-4.5000
4.5000
0

T2 =

0 1.0000 0 -4.5000
-1.0000 0 0 4.5000
0 0 1.0000 0
0 0 0 1.0000

R3 =

0 1 0
0 0 -1
-1 0 0

P3 =

-4.5000
2.0000
4.5000

T3 =

0 1.0000 0 -4.5000
0 0 -1.0000 2.0000
-1.0000 0 0 4.5000
0 0 0 1.0000
R4 =

1 0 0
0 1 0
0 0 1

P4 =

-4.5000
0
1.5000

T4 =

1.0000 0 0 -4.5000
0 1.0000 0 0
0 0 1.0000 1.5000
0 0 0 1.0000

R5 =

0 0 -1
1 0 0
0 -1 0

P5 =

0
0
4.5000

T5 =

0 0 -1.0000 0
1.0000 0 0 0
0 -1.0000 0 4.5000
0 0 0 1.0000
% Ejercicio 8.
% Ejercicio 8.a. Determinar las matrices de rotación R_21, R_O3, R_O1
clc, clear, close all

disp('EJERCICIO 8.A')

% Ángulo de rotación
alpha = atan(4/3)*180/pi
% Matriz R_21:
R_12 = rotx(-alpha)*rotz(180)
R_21 = R_12.'
% Matriz R_O3
R_03 = rotz(-alpha)*roty(-90)*rotx(-90)
% Matriz R_O1
R_01 = rotz(90)*roty(-90)

% Ejercicio 8.b. Usando la composición de las matrices anteriores encontrar


% R_23 y verificar el resultado por inspección.

disp('EJERCICIO 8.B')

R_10 = R_01.'
% Matriz R_23: Por composición
disp('Por composición')
R_23 = R_21*R_10*R_03
% Matriz R_23: Por inspección
disp('Por inspección')
R_23 = roty(180)

% ALGORITMO PARA LA GRÁFICA DE DE LOS SISTEMAS DE COORDENADAS


%-------------------------------------------------------------------------
Rot=rotz(-90)*roty(-90);
R0=Rot.'; R1=Rot.'*R_01; R2=Rot.'*R_01*R_12; R3=Rot.'*R_03;
P0=Rot.'*[0;0;0]; P1=Rot.'*[3;0;0]; P2=Rot.'*[0;4;3]; P3=Rot.'*[0;4;0];
T0=[R0 P0;
0 0 0 1]
T1=[R1 P1;
0 0 0 1];
T2=[R2 P2;
0 0 0 1];
T3=[R3 P3;
0 0 0 1];

P0x=R0*[1;0;0]; P0y=R0*[0;1;0]; P0z=R0*[0;0;1];


P1x=R1*[1;0;0]; P1y=R1*[0;1;0]; P1z=R1*[0;0;1];
P2x=R2*[1;0;0]; P2y=R2*[0;1;0]; P2z=R2*[0;0;1];
P3x=R3*[1;0;0]; P3y=R3*[0;1;0]; P3z=R3*[0;0;1];

T0x=T0*[1;0;0;1]; T0y=T0*[0;1;0;1]; T0z=T0*[0;0;1;1];


T1x=T1*[1;0;0;1]; T1y=T1*[0;1;0;1]; T1z=T1*[0;0;1;1];
T2x=T2*[1;0;0;1]; T2y=T2*[0;1;0;1]; T2z=T2*[0;0;1;1];
T3x=T3*[1;0;0;1]; T3y=T3*[0;1;0;1]; T3z=T3*[0;0;1;1];
%-------------------------------------------------------------------------
tamano=get(0,'ScreenSize');
figure('position',[tamano(1) tamano(2) tamano(3) tamano(4)]);
% Ahora ploteamos El sistema de coordenadas móvil.
title('Verificación de Ejercicio 8');
hold on
% Poliedro de ubicación.
plot3([0 3 3 3 0 0 3 3], [0 0 0 3 3 0 0 3], [4 4 0 0 0 4 4 0],'Color','k');
plot3([3 0 0 0 0], [0 0 0 0 3], [0 0 4 0 0],'Color','k','LineStyle','--');
% Sistema de coordenadas 0
quiver3(P0(1),P0(2),P0(3),P0x(1),P0x(2),P0x(3), 'linewidth',3,'Color',[0 0.4470 0.7410])
quiver3(P0(1),P0(2),P0(3),P0y(1),P0y(2),P0y(3), 'linewidth',3,'Color',[0.8500 0.3250
0.0980])
quiver3(P0(1),P0(2),P0(3),P0z(1),P0z(2),P0z(3), 'linewidth',3,'Color',[0.9290 0.6940
0.1250])
text(T0x(1)+0.1*R0(1,1),T0x(2)+0.1*R0(2,1),T0x(3)+0.1*R0(3,1),'X0','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T0y(1)+0.1*R0(1,2),T0y(2)+0.1*R0(2,2),T0y(3)+0.1*R0(3,2),'Y0','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T0z(1)+0.1*R0(1,3),T0z(2)+0.1*R0(2,3),T0z(3)+0.1*R0(3,3),'Z0','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
% Sistema de coordenadas 1
quiver3(P1(1),P1(2),P1(3),P1x(1),P1x(2),P1x(3), 'linewidth',3,'Color',[0 0.4470 0.7410])
quiver3(P1(1),P1(2),P1(3),P1y(1),P1y(2),P1y(3), 'linewidth',3,'Color',[0.8500 0.3250
0.0980])
quiver3(P1(1),P1(2),P1(3),P1z(1),P1z(2),P1z(3), 'linewidth',3,'Color',[0.9290 0.6940
0.1250])
text(T1x(1)+0.1*R1(1,1),T1x(2)+0.1*R1(2,1),T1x(3)+0.1*R1(3,1),'X1','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T1y(1)+0.1*R1(1,2),T1y(2)+0.1*R1(2,2),T1y(3)+0.1*R1(3,2),'Y1','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T1z(1)+0.1*R1(1,3),T1z(2)+0.1*R1(2,3),T1z(3)+0.1*R1(3,3),'Z1','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
% Sistema de coordenadas 2
quiver3(P2(1),P2(2),P2(3),P2x(1),P2x(2),P2x(3), 'linewidth',3,'Color',[0 0.4470 0.7410])
quiver3(P2(1),P2(2),P2(3),P2y(1),P2y(2),P2y(3), 'linewidth',3,'Color',[0.8500 0.3250
0.0980])
quiver3(P2(1),P2(2),P2(3),P2z(1),P2z(2),P2z(3), 'linewidth',3,'Color',[0.9290 0.6940
0.1250])
text(T2x(1)+0.1*R2(1,1),T2x(2)+0.1*R2(2,1),T2x(3)+0.1*R2(3,1),'X2','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T2y(1)+0.1*R2(1,2),T2y(2)+0.1*R2(2,2),T2y(3)+0.1*R2(3,2),'Y2','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T2z(1)+0.1*R2(1,3),T2z(2)+0.1*R2(2,3),T2z(3)+0.1*R2(3,3),'Z2','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
% Sistema de coordenadas 3
quiver3(P3(1),P3(2),P3(3),P3x(1),P3x(2),P3x(3), 'linewidth',3,'Color',[0 0.4470 0.7410])
quiver3(P3(1),P3(2),P3(3),P3y(1),P3y(2),P3y(3), 'linewidth',3,'Color',[0.8500 0.3250
0.0980])
quiver3(P3(1),P3(2),P3(3),P3z(1),P3z(2),P3z(3), 'linewidth',3,'Color',[0.9290 0.6940
0.1250])
text(T3x(1)+0.1*R3(1,1),T3x(2)+0.1*R3(2,1),T3x(3)+0.1*R3(3,1),'X3','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T3y(1)+0.1*R3(1,2),T3y(2)+0.1*R3(2,2),T3y(3)+0.1*R3(3,2),'Y3','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
text(T3z(1)+0.1*R3(1,3),T3z(2)+0.1*R3(2,3),T3z(3)+0.1*R3(3,3),'Z3','Color',[0.6350
0.0780 0.1840],'FontWeight','bold','HorizontalAlignment','center');
% (Azimuth, elevation)
view(118,15)
% Vista en perspectiva
set(gca,'BoxStyle','full','Projection','perspective')
daspect([1 1 1]) % Relación de aspecto
axis on
grid on
%-------------------------------------------------------------------------

EJERCICIO 8.A

alpha =

53.1301

R_12 =

-1.0000 0 0
0 -0.6000 0.8000
0 0.8000 0.6000

R_21 =

-1.0000 0 0
0 -0.6000 0.8000
0 0.8000 0.6000

R_03 =

0 0.6000 0.8000
0 -0.8000 0.6000
1.0000 0 0

R_01 =

0 -1 0
0 0 -1
1 0 0
EJERCICIO 8.B

R_10 =

0 0 1
-1 0 0
0 -1 0

Por composición

R_23 =

-1 0 0
0 1 0
0 0 -1

Por inspección

R_23 =

-1 0 0
0 1 0
0 0 -1

T0 =

0 0 1 0
1 0 0 0
0 1 0 0
0 0 0 1

Published with MATLAB® R2018a

También podría gustarte