Está en la página 1de 15

UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01

"Año del buen servicio al ciudadano"


UNIVERSIDAD CATÓLICA DE SANTA MARÍA

Facultad de Ciencias e Ingenierías Físicas y Formales

Escuela Profesional de Ingeniería Mecánica, Mecánica Eléctrica


y Mecatrónica.

ROBÓTICA I
Jefe de Practicas: Ing. CUADROS MACHUCA, Juan Carlos
Informe Nro. 02
Alumnos:

Semestre: IX
Grupo: 01
2017

Informe Nro. 02: MATRICES DE ROTACION


ROBOTICA I Pá gina 1
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01

I. OBJETIVOS:

 Aplicar programación en MATLAB en el cálculo y manipulación de matrices de rotación,


gráficos de funciones y tendencias, y en la implementación de programas sencillos de
posición y orientación de robots.

 Analizar, navegar y manipular el programa MATLAB para incentivar en el alumno el


interés por esta herramienta y pueda reconocer su importancia en el contexto de la
robótica y la ingeniería.

II. MATERIAL Y EQUIPO:

 Una PC con SO Windows XP y MATLAB.

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.

5. Movimiento uniforme integrando con MATLAB. Averigüe ahora el ángulo de rotación


para cada instante integrando la velocidad para obtener los ángulos, utilizando la
función de MATLAB:

 vector_integral = cumtrapz (vector_x, vector_y)


ROBOTICA I Pá gina 6
UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01

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.

6. Partiendo del vector de ángulos generado en el paso anterior, y del método de


transformación de coordenadas, mencionado anteriormente, calcule la posición
respecto del sistema OXY del extremo final del segmento del robot para cada uno de
los valores angulares previamente calculados. Genere una gráfica (plot) en la que se
muestre la trayectoria del extremo final del robot. La gráfica debe ser igual a la del
paso.

7. Varíe la velocidad angular y experimente con los resultados obtenidos.

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

v = input('VELOCIDAD ANGULAR (º/seg) = ');


vel_ang = v*pi/180;

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

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 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

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

%angulos dentro de un vector


clc
clear all
ang=0:1:91;
robot1(ang)

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

IV. CUESTIONARIO FINAL:

1. Realice todo el procedimiento anteriormente descrito y presente en un informe


detallado el desarrollo de todos los pasos indicados. (/ARRIBA/)

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

 Para conocer la localización de un determinado objeto es necesario su orientación y


posición 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:

Hasta el momento MATLAB es la herramienta de programación más útil para observar y


analizar herramientas de la robótica.
Durante el procedimiento se evidencia que se puede multiplicar las matrices de rotación
básicas entre sí para representar una secuencia de rotación finita respecto del eje principal
del eje de coordenadas OXYZ.

ROBOTICA I Pá gina 15

También podría gustarte