You are on page 1of 8

UNIVERSIDAD CATOLICA DE SANTA MARIA ESCUELA PROFESIONAL DE INGENIERIA

MECANICA, MECANICA ELECTRICA Y MECATRONICA


CODIGO: GRIA DE LABORATORIO
2013600912-ARONI PAZ JIMENA Nº 04
2014701022-NUÑEZ GUTIERREZ DORIS
ASIGNATURA: ROBOTICA 1
MATRICES DE TRANSFORMACIÓN HOMOGENEA Y Docente:
OTRAS HERRAMIENTAS APLICADAS A LA JUAN CARLOS CUADROS
LOCALIZACIÓN ESPACIAL Fecha: 12/04/2018

I. OBJETIVOS
II. MARCO TEORICO

II.1. Determinar la matriz de transformación homogénea para los siguientes movimientos:

 Rotación en un ángulo de 30° respecto al eje OX, seguida de:


1 0 0 0
0 cos30 -sen30 0
𝑇1 = 0 sen30 cos30 0
0 0 0 1

 Rotación en un ángulo de 90° respecto al eje OW, seguida de:


 Rotación en un ángulo de 45° respecto al eje OY
 Dibujar cual es la posición y orientación de los sistemas intermedios y el sistema resultante,
respecto del sistema fijo OXYZ.
II.2.Determinar una matriz de transformación T que representa una rotación de un ángulo de 60° respecto al
eje OZ, seguida de una traslación en 8 unidades de distancia a lo largo del eje OZ, seguida de una rotación en
un ángulo de 30° respecto al eje OV. Dibujar cual es la posición y orientación de los sistemas intermedios y el
sistema resultante, respecto del sistema fijo OXYZ.
IV.1. Escriba programas (funciones) en MATLAB para calcular la matrices de transformación homogéneas
básicas de rotación y traslación, dados como parámetros el vector de traslación o el ángulo de rotación.
close all,
clear all,
clc,
fprintf('Ingrese el movimiento \n');
fprintf('Ingrese el tipo de movimiento');
MH=input('Ingres r si es rotacion y t si es traslacion \n','s');
switch(MH)
case('r')
fprintf ('Ingrese angulo de rotacion \n ');
teta=input ('Angulo= ');
Vec=input('Ingrese el eje= ','s');

switch (Vec) %DADA LA OPCION SE ESCOGERA UNA OPERACION DIFERENTE PARA CADA CASO
case ('x') %SI ME DAN A ESCOGER EL EJE X
T= eleccejeXMHR (teta); %TENGO UNA FUNCION QUE DESARROLLARA LA MATRIZ CON
EL ANGULO DADO
disp(T) %SE ME MOSTRARA DICHA MATRIZ
case ('y')
T= eleccejeYMHR (teta);
disp(T)
case ('z')
T=eleccejeZMHR (teta);
disp(T)
otherwise %EN EL CASO QUE NO SE COLOQUE LAS OPCIONES DADAS
disp('No has elegido bien')
end
Rpta=T;

case('t')
fprintf=('Ingrese el vector posicion, colocando cada unidad en el
eje');%Ingresado en vector
a=input('Movimiento en el eje x =');
b=input('Movimiento en el eje y =');
c=input('Movimiento en el eje z =');
Tras=[1 0 0 a; 0 1 0 b; 0 0 1 c; 0 0 0 1];
disp(Tras)
Rpta=Tras;

end
Mov=input('Ingrese 1 si quiere hacer otro movimiento de lo contrario 0 \n');
while (Mov==1) %ESTE CICLO SEGUIRA MIENTRAS SE SELECCIONE 1
if(Rpta==T)
MH=input('Ingrese r si es rotacion y t si es traslacion \n','s');
switch(MH)
case('r')
fprintf ('Ingrese angulo de rotacion \n ');
teta=input ('Angulo= ');
Vec1=input('Ingrese el eje= ','s');
switch (Vec1)
case ('x')
R= eleccejeXMHR (teta);
disp(R)
case ('y')
R= eleccejeYMHR (teta);
disp(R)
case ('z')
R=eleccejeZMHR (teta);
disp(R)
end
D= input('Ingrese 1 si es fijo, si es movil 0 \n');
if (D==1)
T=R*T; % T FUE LA PRIMERA MATRIZ ALMACENADA Y A ESA MATRIZ SE LE PREMULTIPLICARA
LA NUEVA MATRIZ QUE SERA R
%Y ESA MULTIPLICACION SERA LA NUEVA T ALMACENADA PARA CONTINUAR LAS PRE O
%POST MULTIPLICACIONES SEGUN SEA EL CASO
disp(T)
else
T=T*R;
disp(T)
end
case('t')
fprintf=('Ingrese el vector posicion, colocando cada unidad en el
eje');%Ingresado en vector
a=input('Movimiento en el eje x =');
b=input('Movimiento en el eje y =');
c=input('Movimiento en el eje z =');
Tras1=[1 0 0 a; 0 1 0 b; 0 0 1 c; 0 0 0 1];
disp(Tras1)
D= input('Ingrese 1 si es fijo, si es movil 0 \n');
if (D==1)
T=Tras*T; % T FUE LA PRIMERA MATRIZ ALMACENADA Y A ESA MATRIZ SE LE
PREMULTIPLICARA LA NUEVA MATRIZ QUE SERA R
%Y ESA MULTIPLICACION SERA LA NUEVA T ALMACENADA PARA CONTINUAR LAS PRE O
%POST MULTIPLICACIONES SEGUN SEA EL CASO
disp(T)
else
T=T*Tras;
disp(T)
end
end
elseif (Rpta==Tras)

end
Mov=input('Ingrese 1 si quiere hacer otro movimiento de lo contrario 0 \n');% ES
IMPORTANTE VOLVER A PREGUNTAR
%O MOV SEGUIRA SIENDO 1 SIEMPRE Y EL BUCLE SERA INFINITO
end

You might also like