ROBÓTICA I
Jefe de Practicas: Ing. CUADROS MACHUCA, Juan Carlos
Informe Nro. 02
Alumnos:
Semestre: IX
Grupo: 01
2017
I. OBJETIVOS:
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 O’UV. Tenga en
cuenta que, para no dificultar la interpretación 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 rotación = ');
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 Pá gina 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 rotación R para el ángulo alfa. Realice los productos q=R*p, con
diversos alfa y compruebe que la rotación 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 Pá gina 3
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Figure 1
ROBOTICA I Pá gina 4
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
3. Defina los vectores VD0, VD1 (que contienen las coordenadas de los puntos D0 y D1
según sus respectivos ejes) y calcule la posición del punto D1, según 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)
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)
ROBOTICA I Pá gina 5
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
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
actuador final del robot en los 45 segundos. Dicho bucle realizará la siguiente
multiplicación:
posiciones=VD0 + Rang(i)*VD1
Donde Rang(i) es la matriz de rotación calculada para el ángulo dado por ang(i).
Todos los puntos se almacenarán en una matriz de dimensión 2×n llamada
posiciones, donde n es la dimensión del vector tiempo. Genere la gráfica (usando
plot) de todas las coordenadas x frente a las y, que sería el movimiento del actuador
del robot.
Que calcula la integral acumulativa por el método 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 número de componentes. Suponga que el ángulo
inicial es cero. Genere una gráfica del ángulo de la articulación 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
VD1(i,1) = input('Ingrese VD1 = ');
end
VD0
VD1
for i=1:91
tiempo(i) = (i-1)/2;
end
for i=1:91
ROBOTICA I Pá gina 7
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
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 Pá gina 8
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
0.5
0.4998
0.4996
0.4994
0.4992
0.499
0.4988
0.4986
0.4984
0.96 0.965 0.97 0.975 0.98 0.985 0.99 0.995 1
Figure 1
-0.002
-0.004
-0.006
-0.008
-0.01
-0.012
-0.014
-0.016
-0.018
-0.02
0 5 10 15 20 25 30 35 40 45
Figure 2
ROBOTICA I Pá gina 9
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
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
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 Pá gina 10
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
0.5
0.4
0.3
0.2
0.1
-0.1
-0.2
-0.3
-0.4
-0.5
0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1
Figure 1
ROBOTICA I Pá gina 11
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
-0.05
-0.1
-0.15
-0.2
-0.25
-0.3
0 5 10 15 20 25 30 35 40 45
Figure 2
8. EJERCICIOS ADICIONALES: Cree una función que calcule el movimiento del robot,
de forma que reciba como parámetros un vector columna de ángulos y devuelva una
matriz con las posiciones x,y correspondientes a tales ángulos. La matriz tendrá 2
filas y tantas columnas como ángulos componentes del vector ang hayan. El
prototipo (declaración) de la función 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
ROBOTICA I Pá gina 12
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
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 Pá gina 13
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
0.5
0.4
0.3
Eje Y
0.2
0.1
-0.1
0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1
Eje X
Figure 1
V. CONCLUSIONES:
MATLAB es una herramienta que nos sirvió mucho para el cálculo y manipulación de
matrices de rotación, así como también poder graficar y observar.
MATLAB también usa toolbox para la robótica que hacen más sencilla la tarea de
programar.
En robótica es común el uso de matrices de rotación, debido a la comodidad que
proporciona el uso del álgebra matricial.
La matriz de rotación es una matriz 3x3 ortogonal de cosenos directores que define la
orientación del sistema OUVW móvil respecto al sistema OXYZ fijo.
Mediante las matrices de rotación se define los movimientos de objetos rígidos, por lo que
es ideal para su uso en la robótica. Dentro de la robótica 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.
ROBOTICA I Pá gina 14
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01
VI. OBSERVACIONES:
ROBOTICA I Pá gina 15