Matrices de Rotacion
Matrices de Rotacion
Matrices de Rotacion
ROBTICA I
Jefe de Practicas: Ing. CUADROS MACHUCA, Juan Carlos
Informe Nro. 02
Alumnos:
Semestre: IX
Grupo: 01
2017
ROBOTICA I Pgina 1
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
III. PROCEDIMIENTO:
1. Tome como valores D0= [0, 0.5] (en metros) y D1= [1, 0] (en metros y expresado en su
sistema de referencia OUV). Tenga en cuenta que hay que cambiar las coordenadas
del punto D1 desde el sistema de referencia OXY al OUV. Tenga en cuenta que, para
no dificultar la interpretacin de la figura, no se ha indicado el origen O, que coincide
en el espacio con D0.
CODIGO MATLAB
% PROCEDIMIENTO NUMERO 1
clear all
clc
teta = input('Angulo de rotacin = ');
disp(' ')
D0 = [0 ; 0.5]
D1 = [1 ; 0]
R = [ cosd(teta) -sind(teta) ; sind(teta) cosd(teta) ];
disp('R')
disp(R)
Pxy = D0 + R*D1;
disp('Pxy')
disp(Pxy)
ROBOTICA I Pgina 2
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
2. Defina dos vectores en el plano p, q y una variable escalar alfa con el valor 45. Defina
la matriz de rotacin R para el ngulo alfa. Realice los productos q=R*p, con diversos
alfa y compruebe que la rotacin funciona correctamente. Recuerde que MATLAB
trabaja por defecto con radianes.
CODIGO MATLAB
% PROCEDIMIENTO NUMERO 2
clear all
clc
teta=input('Angulo de Rotacion:')
p=[0;1];
R=[cosd(teta) -sind(teta);sind(teta) cosd(teta)];
disp('R');
disp(R);
q=R*p
disp(q)
plot(p,q)
ROBOTICA I Pgina 3
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
Figure 1
ROBOTICA I Pgina 4
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
3. Defina los vectores VD0, VD1 (que contienen las coordenadas de los puntos D0 y D1
segn sus respectivos ejes) y calcule la posicin del punto D1, segn el sistema de
referencia OXY, probando con los ngulos =0, 45, 90.
CODIGO MATLAB
% PROCEDIMIENTO NUMERO 3
clear all
clc
disp('Ingrese Valores al vector VD1')
a=input('valor de VD1:');
b=input('valor de VD1:');
disp('Ingrese Valores al vector VD0')
c=input('valor de VD0:');
d=input('valor de VD0:');
VD1=[a;b];
VD0=[c;d];
disp(' ')
disp('CON ANGULO = 0')
teta1=0;
R1=[cosd(teta1),-sind(teta1);sind(teta1),cosd(teta1)];
pxy1=VD0+(R1*VD1)
ROBOTICA I Pgina 5
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
disp(' ')
disp('CON ANGULO = 45')
teta2=45;
R2=[cosd(teta2),-sind(teta2);sind(teta2),cosd(teta2)];
pxy2=VD0+(R2*VD1)
disp(' ')
disp('CON ANGULO = 90')
teta3=90;
R3=[cosd(teta3),-sind(teta3);sind(teta3),cosd(teta3)];
pxy3=VD0+(R3*VD1)
4. Movimiento uniforme. Suponga que el eje que mueve el nico segmento articulado
del robot tiene una velocidad angular constante de 1 por segundo. Genere una
variable llamada vel_ang con tal valor. Cree un vector fila llamado tiempo, que
contenga el valor de tiempo para un periodo de 45 segundos, tomadas cada 0,5
segundos (su contenido ser [0 0.5 1 1.5 2 .... 44.5 45]). Genere otro vector ang que
contenga los ngulos en el mismo intervalo, multiplicando vel_ang por el vector
tiempo. Utilice ahora un bucle for para calcular todos los puntos de la trayectoria del
ROBOTICA I Pgina 6
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
actuador final del robot en los 45 segundos. Dicho bucle realizar la siguiente
multiplicacin:
posiciones=VD0 + Rang(i)*VD1
Donde Rang(i) es la matriz de rotacin calculada para el ngulo dado por ang(i). Todos
los puntos se almacenarn en una matriz de dimensin 2n llamada posiciones,
donde n es la dimensin del vector tiempo. Genere la grfica (usando plot) de todas
las coordenadas x frente a las y, que sera el movimiento del actuador del robot.
Que calcula la integral acumulativa por el mtodo del trapecio, de vector_y respecto
de vector_x.(es decir, se pueden usar los vectores del apartado anterior tiempo, y un
vector con todos sus elementos iguales a vel_ang). Tenga en cuenta que ambos
vectores han de tener el mismo nmero de componentes. Suponga que el ngulo
inicial es cero. Genere una grfica del ngulo de la articulacin respecto del tiempo.
CODIGO MATLAB
% PROCEDIMIENTO NUMERO 4 5 6
clear all
close all
clc
format compact
for i=1:2
VD0(i,1) = input('Ingrese VD0 = ');
end
for i=1:2
ROBOTICA I Pgina 7
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
VD0
VD1
for i=1:91
tiempo(i) = (i-1)/2;
end
for i=1:91
ang(i) = vel_ang * tiempo(i);
end
for i=1:91
R = [ cos(ang(i)) -sin(ang(i)) ; sin(ang(i)) cos(ang(i))
];
pos = VD0 + R*VD1;
x(i)=pos(1,1);
y(i)=pos(2,1);
end
vec_int = cumtrapz(x,y);
figure(1)
plot(x,y);
figure(2)
plot(tiempo,vec_int);
ROBOTICA I Pgina 8
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
Figure 1
ROBOTICA I Pgina 9
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
Figure 2
CODIGO MATLAB
% PROCEDIMIENTO NUMERO 4 5 7
clear all
close all
clc
format compact
for i=1:2
VD0(i,1) = input('Ingrese VD0 = ');
end
for i=1:2
VD1(i,1) = input('Ingrese VD1 = ');
end
VD0
ROBOTICA I Pgina 10
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
VD1
v = input('VELOCIDAD ANGULAR (/seg) = ');
vel_ang = v*pi/180;
for i=1:91
tiempo(i) = (i-1)/2;
end
for i=1:91
ang(i) = vel_ang * tiempo(i);
end
for i=1:91
R = [ cos(ang(i)) -sin(ang(i)) ; sin(ang(i)) cos(ang(i))
];
pos = VD0 + R*VD1;
x(i)=pos(1,1);
y(i)=pos(2,1);
end
vec_int = cumtrapz(x,y);
figure(1)
plot(x,y);
figure(2)
plot(tiempo,vec_int);
ROBOTICA I Pgina 11
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
Figure 1
Figure 2
8. EJERCICIOS ADICIONALES: Cree una funcin que calcule el movimiento del robot,
de forma que reciba como parmetros un vector columna de ngulos y devuelva una
matriz con las posiciones x,y correspondientes a tales ngulos. La matriz tendr 2
ROBOTICA I Pgina 12
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
filas y tantas columnas como ngulos componentes del vector ang hayan. El prototipo
(declaracin) de la funcin ser:
function pxy = robot1 (ang). (Recuerde el operador size)
CODIGO MATLAB
% PROCEDIMIENTO NUMERO 8
function pxy = robot1(ang)
xx=length(ang);
ang=ang*pi/180;
for i=1:2
VD0(i,1) = input('Vector VD0= ');
end
for i=1:2
VD1(i,1) = input('Vector VD1= ');
end
for i=1:xx
R = [ cos(ang(i)) -sin(ang(i)) ; sin(ang(i))
cos(ang(i)) ];
pxy = VD0 + R*VD1;
x(i)=pxy(1,1);
y(i)=pxy(2,1);
end
plot(x,y);
grid on
xlabel('Eje X');
ylabel('Eje Y');
end
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ROBOTICA I Pgina 13
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
Figure 1
ROBOTICA I Pgina 14
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
V. CONCLUSIONES:
MATLAB es una herramienta que nos sirvi mucho para el clculo y manipulacin de
matrices de rotacin, as como tambin poder graficar y observar.
MATLAB tambin usa toolbox para la robtica que hacen ms sencilla la tarea de programar.
En robtica es comn el uso de matrices de rotacin, debido a la comodidad que proporciona
el uso del lgebra matricial.
La matriz de rotacin es una matriz 3x3 ortogonal de cosenos directores que define la
orientacin del sistema OUVW mvil respecto al sistema OXYZ fijo.
Mediante las matrices de rotacin se define los movimientos de objetos rgidos, por lo que
es ideal para su uso en la robtica. Dentro de la robtica podemos pensar que un objeto
puede girar sobre diferentes ejes, por lo que podemos introducir dos nuevos conceptos el
de marco global y el de marco de referencia.
Para conocer la localizacin de un determinado objeto es necesario su orientacin y posicin
de acuerdo al eje de referencia para ello se recurre la matriz rotacional, pero se debe tener
definido en forma de vectores y de esta manera sacar la determinante la cual da dicho valor
del eje de traslado.
VI. OBSERVACIONES:
ROBOTICA I Pgina 15