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, MACHUCA, Juan Carlos Informe Nro. 02 Alumnos:
Semestre: IX Grupo: 01 2017 ROBOTICA I
Página 1
UNIVERSIDAD CATOLICA DE SANTA MARIA
GRUPO: 01
Informe Nro. 02: MATRICES DE ROTACION I.
II.
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.
MATERIAL Y EQUIPO :
III.
Una PC con SO Windows XP y MATLAB.
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 o rigen 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
Fig ure 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) ROBOTICA I
Página 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
Página 6
UNIVERSIDAD CATOLICA DE SANTA MARIA
GRUPO: 01
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). Todo s 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)
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 ROBOTICA I
Página 7
UNIVERSIDAD CATOLICA DE SANTA MARIA
GRUPO: 01
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 8
UNIVERSIDAD CATOLICA DE SANTA MARIA
GRUPO: 01
Fig ure 1
ROBOTICA I
Página 9
UNIVERSIDAD CATOLICA DE SANTA MARIA
GRUPO: 01
Fig ure 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
Página 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
Página 11
UNIVERSIDAD CATOLICA DE SANTA MARIA
GRUPO: 01
Fig ure 1
Fig ure 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
ROBOTICA I
Página 12
UNIVERSIDAD CATOLICA DE SANTA MARIA
GRUPO: 01
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 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
Fig ure 1
IV.
CUESTIONARIO FINAL:
ROBOTICA I
Página 14
UNIVERSIDAD CATOLICA DE SANTA MARIA
1.
V.
GRUPO: 01
Realice todo el procedimiento anteriormente descrito y presente en un informe detallado el desarrollo de todos los pasos indicados. (/ARRIBA/)
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.
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