Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Practica 1 Fundamentos computacionales Planificación de movimientos de robots Objetivos: A partir del modelo cinemático directo e inverso desarrollado previamente para el robot manipulador Motoman K6SB y el GP7, los alumnos desarrollaran 2 trayectorias específicas que el eslabón final del robot seguirá. Indicaciones: Para la primera trayectoria en el robot K6SB, partiendo de la posición final del manipulador dibujará un triángulo equilátero en el espacio: el punto de partida será la mitad de la base del triángulo, el triángulo está en el plano ZY con una posición constante en el eje X, cada lado del triángulo tiene una dimensión de 200 mm, al finalizar regresara al punto de partida terminando la simulación. La segunda trayectoria en el robot GP7, partiendo de la posición final del manipulador dibujará un círculo en el espacio: El plano de trabajo es XY, con una posición constante en el eje Z, La posición inicial del efector final será el punto de partida para dibuja la circunferencia, quedando alineado con la mitad del círculo, al terminar de dibujarlo regresara a la posición inicial, el radio del círculo es 150mm. El número de muestras depende del usuario. Entregará 1 archivo .m para cada trayectoria, y un archivo .avi para cada trayectoria. Resumen: Cree una trayectoria para un triángulo equilátero de 200 mm por lado con el robot Motoman K6SB en Matlab. Cree una trayectoria para un círculo de150 mm de radio con el robot Motoman G7P en Matlab Entregue el archivo .m y el video .avi creado en Matlab. CODIGO EN MATLAB - TRIANGULO: %P2_fundcompTriangulo clc clear n=100; d2=100;%mm d3=300; d4=400; r4=200; deltaini=0; delta=deltaini; delta2=deltaini; delta3=deltaini; delta4=deltaini; Alumno: Francisco Gerardo Gómez Rivera. Número de control: 18130352. Materia: Planificación de movimientos de robots. Profesor: Jesus Eduardo Fierro Proa. 28/10/2022 delta5=deltaini; delta6=deltaini; delta7=deltaini; delta8=deltaini; delta9=deltaini; delta10=deltaini; %TM TM=[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]; for i=1:n if i>0 && i<=20 delta=delta; deltay(i)=deltaini+delta; delta2=0; deltaz(i)=delta2+deltaini; X=0; y=0; z=300; end if i>20 && i<=40 delta3=delta3; deltay(i)=(deltaini+delta3); delta4=delta4; deltaz(i)=delta4+deltaini; x=0; y=100; z=300; end if i>40 && i<=60 delta5=delta5; deltay(i)=(deltaini+delta5); delta6=delta6; deltaz(i)=delta6+deltaini; x=0; y=0; z=473.20; end if i>60 && i<=80 delta7=delta7; deltay(i)=deltaini+delta7; delta8=0; deltaz(i)=delta8+deltaini; x=0; y=-100; z=300; end if i>80 && i<=100 delta9=delta9; deltay(i)=deltaini+delta9; delta10=0; deltaz(i)=delta10; x=0; y=0; z=300; end sx=0; nx=-1; ax=-1; px=600; sy=0; ny=-1; ay=-1; py=y+deltay(i); sz=1; nz=0; az=0; pz=z+deltaz(i); U0=[sx nx ax px sy ny ay py sz nz az pz 0 0 0 1]; %Desarrollo de ecuaciones del modelo inverso: %Theta 1: a1 = py; b1 = -px; c1 = 0; eps1 = 1; sin1 = (b1*c1+eps1*a1*sqrt((a1^2)+(b1^2)-(c1^2)))/((a1^2)+(b1^2)); cos1 = (a1*c1-eps1*b1*sqrt((a1^2)+(b1^2)-(c1^2)))/((a1^2)+(b1^2)); %tan1 = sin1/cos1; th1 = atan2(sin1,cos1); t1(i) = atan2(sin1,cos1); %Theta 2: a2 = (-2*d3*(px*cos(t1(i)) - d2 + py*sin(t1(i)))); b2 = -2*d3*pz; c2 = d4^2 + r4^2 - pz^2 - (px*cos(t1(i)) - d2 + py*sin(t1(i)))^2 - d3^2; eps2 = -1; sin2 =(b2*c2+eps2*a2*sqrt((a2^2)+(b2^2)-(c2^2)))/((a2^2)+(b2^2)); cos2 =(a2*c2-eps2*b2*sqrt((a2^2)+(b2^2)-(c2^2)))/((a2^2)+(b2^2)); %tan2 = sin2/cos2; th2 = atan2(sin2, cos2); t2(i) = atan2(sin2, cos2); %Theta 3: a3 = -r4; b3 = d4; c3 = pz*cos(t2(i)) - sin(t2(i))*(px*cos(t1(i)) + py*sin(t1(i))) + d2*sin(t2(i)); eps3 = -1; sin3 =(b3*c3+eps3*a3*sqrt((a3^2)+(b3^2)-(c3^2)))/((a3^2)+(b3^2)); cos3 =(a3*c3-eps3*b3*sqrt((a3^2)+(b3^2)-(c3^2)))/((a3^2)+(b3^2)); %tan3 = sin3/cos3; th3 = atan2(sin3, cos3); t3(i) = atan2(sin3, cos3); %Theta 4: a4 = px*sin(t1(i)) - py*cos(t1(i)); b4 = d4 + d3*cos(t3(i)) - cos(t3(i))*(pz*sin(t2(i)) - d2*cos(t2(i)) + cos(t2(i))*(px*cos(t1(i)) + py*sin(t1(i)))) - sin(t3(i))*(pz*cos(t2(i)) - sin(t2(i))*(px*cos(t1(i)) + py*sin(t1(i))) + d2*sin(t2(i))); c4 = 0; eps4 = 1; sin4 =(b4*c4+eps4*a4*sqrt((a4^2)+(b4^2)-(c4^2)))/((a4^2)+(b4^2)); cos4 =(a4*c4-eps4*b4*sqrt((a4^2)+(b4^2)-(c4^2)))/((a4^2)+(b4^2)); %tan4 = sin4/cos4; th4 = atan2(sin4, cos4); t4(i) = atan2(sin4, cos4); %Theta 5: a5= -cos(t3(i))*(sin(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i))) - sz*cos(t2(i))) - sin(t3(i))*(sz*sin(t2(i)) + cos(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i)))); b5= sin(t4(i))*(sy*cos(t1(i)) - sx*sin(t1(i))) - cos(t4(i))*(cos(t3(i))*(sz*sin(t2(i)) + cos(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i)))) - sin(t3(i))*(sin(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i))) - sz*cos(t2(i)))); c5= 0; eps5 = 1; sin5 =(b5*c5+eps5*a5*sqrt((a5^2)+(b5^2)-(c5^2)))/((a5^2)+(b5^2)); cos5 =(a5*c5-eps5*b5*sqrt((a5^2)+(b5^2)-(c5^2)))/((a5^2)+(b5^2)); %tan5 = sin5/cos5; th5 = atan2d(sin5, cos5); t5(i) = atan2d(sin5, cos5); %Theta 6: sin6 = - sin(t4(i))*(cos(t3(i))*(sz*sin(t2(i)) + cos(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i)))) - sin(t3(i))*(sin(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i))) - sz*cos(t2(i)))) - cos(t4(i))*(sy*cos(t1(i)) - sx*sin(t1(i))); cos6 = - sin(t4(i))*(cos(t3(i))*(nz*sin(t2(i)) + cos(t2(i))*(nx*cos(t1(i)) + ny*sin(t1(i)))) - sin(t3(i))*(sin(t2(i))*(nx*cos(t1(i)) + ny*sin(t1(i))) - nz*cos(t2(i)))) - cos(t4(i))*(ny*cos(t1(i)) - nx*sin(t1(i))); eps6 = 1; %tan6 = simplify(sin6/cos6); th6 = atan2(sin6, cos6); t6(i) = atan2(sin6, cos6); %Retomando modelo cinemático directo: T01=[cos(t1(i)) -sin(t1(i)) 0 0 sin(t1(i)) cos(t1(i)) 0 0 0 0 1 0 0 0 0 1]; T12=[cos(t2(i)) -sin(t2(i)) 0 d2 0 0 -1 0 sin(t2(i)) cos(t2(i)) 0 0 0 0 0 1]; T23=[cos(t3(i)) -sin(t3(i)) 0 d3 sin(t3(i)) cos(t3(i)) 0 0 0 0 1 0 0 0 0 1]; T34=[cos(t4(i)) -sin(t4(i)) 0 d4 0 0 -1 -r4 sin(t4(i)) cos(t4(i)) 0 0 0 0 0 1]; T45=[cos(t5(i)) -sin(t5(i)) 0 0 0 0 1 0 -sin(t5(i)) -cos(t5(i)) 0 0 0 0 0 1]; T56=[cos(t6(i)) -sin(t6(i)) 0 0 0 0 -1 0 sin(t6(i)) cos(t6(i)) 0 0 0 0 0 1]; T06=TM*T01*T12*T23*T34*T45*T56; T05=TM*T01*T12*T23*T34*T45; T04=TM*T01*T12*T23*T34; T03=TM*T01*T12*T23; T02=TM*T01*T12; T01=TM*T01; %de x0 a x1, y0 a y1, z0 a z1 r01x=[TM(1,4) T01(1,4)]; r01y=[TM(2,4) T01(2,4)]; r01z=[TM(3,4) T01(3,4)]; r12x=[T01(1,4) T02(1,4)]; r12y=[T01(2,4) T02(2,4)]; r12z=[T01(3,4) T02(3,4)]; r23x=[T02(1,4) T03(1,4)]; r23y=[T02(2,4) T03(2,4)]; r23z=[T02(3,4) T03(3,4)]; r34x=[T03(1,4) T04(1,4)]; r34y=[T03(2,4) T04(2,4)]; r34z=[T03(3,4) T04(3,4)]; r45x=[T04(1,4) T05(1,4)]; r45y=[T04(2,4) T05(2,4)]; r45z=[T04(3,4) T05(3,4)]; r56x=[T05(1,4) T06(1,4)]; r56y=[T05(2,4) T06(2,4)]; r56z=[T05(3,4) T06(3,4)]; %Trazas: trazax(i)=T06(1,4); trazay(i)=T06(2,4); trazaz(i)=T06(3,4); figure(3) clf hold on grid on plot3(r01x,r01y,r01z ,'y',r12x,r12y,r12z,'y',r23x,r23y,r23z,'y',r34x,r34y,r34z,'y',r45x,r45y,r45z,'y',r56x,r56y,r56z,'y','Linewidth ',2) plot3(trazax,trazay,trazaz,'k', 'LineWidth',2); xlabel('x'); ylabel('y'); zlabel('z'); axis([-1000 1000 -1000 1000 -1000 1000]) %Az=-160;El=20; Az=-90;El=0; %lateral %Az=130;El=30;%isometrica %Az=-0;El=0; %frente %Az=0;El=90; %superior view(Az,El) drawnow; F(i)=getframe(figure(3)); end v=VideoWriter('P2TRIANGULO.avi'); v.FrameRate=15; open(v); writeVideo(v,F) close(v); Capturas de evidencia: CODIGO EN MATLAB – CIRCULO: %P2_fundcompCirculoclc clear n=73; c=0; d2=100;%mm d3=300; d4=400; r4=200; %TM TM=[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1]; for i=1:n sx=1; nx=0; ax=0; px=-75*cosd(c); sy=1; ny=0; ay=0; py=75*sind(c); sz=1; nz=0; az=0; pz=700; c=c+5; U0=[sx nx ax px sy ny ay py sz nz az pz 0 0 0 1]; %Desarrollo de ecuaciones del modelo inverso: %Theta 1: a1 = py; b1 = -px; c1 = 0; eps1 = 1; sin1 = (b1*c1+eps1*a1*sqrt((a1^2)+(b1^2)-(c1^2)))/((a1^2)+(b1^2)); cos1 = (a1*c1-eps1*b1*sqrt((a1^2)+(b1^2)-(c1^2)))/((a1^2)+(b1^2)); %tan1 = sin1/cos1; th1 = atan2(sin1,cos1); t1(i) = atan2(sin1,cos1); %Theta 2: a2 = (-2*d3*(px*cos(t1(i)) - d2 + py*sin(t1(i)))); b2 = -2*d3*pz; c2 = d4^2 + r4^2 - pz^2 - (px*cos(t1(i)) - d2 + py*sin(t1(i)))^2 - d3^2; eps2 = -1; sin2 =(b2*c2+eps2*a2*sqrt((a2^2)+(b2^2)-(c2^2)))/((a2^2)+(b2^2)); cos2 =(a2*c2-eps2*b2*sqrt((a2^2)+(b2^2)-(c2^2)))/((a2^2)+(b2^2)); %tan2 = sin2/cos2; th2 = atan2(sin2, cos2); t2(i) = atan2(sin2, cos2); %Theta 3: a3 = -r4; b3 = d4; c3 = pz*cos(t2(i)) - sin(t2(i))*(px*cos(t1(i)) + py*sin(t1(i))) + d2*sin(t2(i)); eps3 = -1; sin3 =(b3*c3+eps3*a3*sqrt((a3^2)+(b3^2)-(c3^2)))/((a3^2)+(b3^2)); cos3 =(a3*c3-eps3*b3*sqrt((a3^2)+(b3^2)-(c3^2)))/((a3^2)+(b3^2)); %tan3 = sin3/cos3; th3 = atan2(sin3, cos3); t3(i) = atan2(sin3, cos3); %Theta 4: a4 = px*sin(t1(i)) - py*cos(t1(i)); b4 = d4 + d3*cos(t3(i)) - cos(t3(i))*(pz*sin(t2(i)) - d2*cos(t2(i)) + cos(t2(i))*(px*cos(t1(i)) + py*sin(t1(i)))) - sin(t3(i))*(pz*cos(t2(i)) - sin(t2(i))*(px*cos(t1(i)) + py*sin(t1(i))) + d2*sin(t2(i))); c4 = 0; eps4 = 1; sin4 =(b4*c4+eps4*a4*sqrt((a4^2)+(b4^2)-(c4^2)))/((a4^2)+(b4^2)); cos4 =(a4*c4-eps4*b4*sqrt((a4^2)+(b4^2)-(c4^2)))/((a4^2)+(b4^2)); %tan4 = sin4/cos4; th4 = atan2(sin4, cos4); t4(i) = atan2(sin4, cos4); %Theta 5: a5= -cos(t3(i))*(sin(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i))) - sz*cos(t2(i))) - sin(t3(i))*(sz*sin(t2(i)) + cos(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i)))); b5= sin(t4(i))*(sy*cos(t1(i)) - sx*sin(t1(i))) - cos(t4(i))*(cos(t3(i))*(sz*sin(t2(i)) + cos(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i)))) - sin(t3(i))*(sin(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i))) - sz*cos(t2(i)))); c5= 0; eps5 = 1; sin5 =(b5*c5+eps5*a5*sqrt((a5^2)+(b5^2)-(c5^2)))/((a5^2)+(b5^2)); cos5 =(a5*c5-eps5*b5*sqrt((a5^2)+(b5^2)-(c5^2)))/((a5^2)+(b5^2)); %tan5 = sin5/cos5; th5 = atan2d(sin5, cos5); t5(i) = atan2d(sin5, cos5); %Theta 6: sin6 = - sin(t4(i))*(cos(t3(i))*(sz*sin(t2(i)) + cos(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i)))) - sin(t3(i))*(sin(t2(i))*(sx*cos(t1(i)) + sy*sin(t1(i))) - sz*cos(t2(i)))) - cos(t4(i))*(sy*cos(t1(i)) - sx*sin(t1(i))); cos6 = - sin(t4(i))*(cos(t3(i))*(nz*sin(t2(i)) + cos(t2(i))*(nx*cos(t1(i)) + ny*sin(t1(i)))) - sin(t3(i))*(sin(t2(i))*(nx*cos(t1(i)) + ny*sin(t1(i))) - nz*cos(t2(i)))) - cos(t4(i))*(ny*cos(t1(i)) - nx*sin(t1(i))); eps6 = 1; %tan6 = simplify(sin6/cos6); th6 = atan2(sin6, cos6); t6(i) = atan2(sin6, cos6); %Retomando modelo cinemático directo: T01=[cos(t1(i)) -sin(t1(i)) 0 0 sin(t1(i)) cos(t1(i)) 0 0 0 0 1 0 0 0 0 1]; T12=[cos(t2(i)) -sin(t2(i)) 0 d2 0 0 -1 0 sin(t2(i)) cos(t2(i)) 0 0 0 0 0 1]; T23=[cos(t3(i)) -sin(t3(i)) 0 d3 sin(t3(i)) cos(t3(i)) 0 0 0 0 1 0 0 0 0 1]; T34=[cos(t4(i)) -sin(t4(i)) 0 d4 0 0 -1 -r4 sin(t4(i)) cos(t4(i)) 0 0 0 0 0 1]; T45=[cos(t5(i)) -sin(t5(i)) 0 0 0 0 1 0 -sin(t5(i)) -cos(t5(i)) 0 0 0 0 0 1]; T56=[cos(t6(i)) -sin(t6(i)) 0 0 0 0 -1 0 sin(t6(i)) cos(t6(i)) 0 0 0 0 0 1]; T06=TM*T01*T12*T23*T34*T45*T56; T05=TM*T01*T12*T23*T34*T45; T04=TM*T01*T12*T23*T34; T03=TM*T01*T12*T23; T02=TM*T01*T12; T01=TM*T01; %de x0 a x1, y0 a y1, z0 a z1 r01x=[TM(1,4) T01(1,4)]; r01y=[TM(2,4) T01(2,4)]; r01z=[TM(3,4) T01(3,4)]; r12x=[T01(1,4) T02(1,4)]; r12y=[T01(2,4) T02(2,4)]; r12z=[T01(3,4) T02(3,4)]; r23x=[T02(1,4) T03(1,4)]; r23y=[T02(2,4) T03(2,4)]; r23z=[T02(3,4) T03(3,4)]; r34x=[T03(1,4) T04(1,4)]; r34y=[T03(2,4) T04(2,4)]; r34z=[T03(3,4) T04(3,4)]; r45x=[T04(1,4) T05(1,4)]; r45y=[T04(2,4) T05(2,4)]; r45z=[T04(3,4) T05(3,4)]; r56x=[T05(1,4) T06(1,4)]; r56y=[T05(2,4) T06(2,4)]; r56z=[T05(3,4) T06(3,4)]; %Trazas: trazax(i)=T06(1,4); trazay(i)=T06(2,4); trazaz(i)=T06(3,4); figure(3) clf hold on grid on plot3(r01x,r01y,r01z ,'b',r12x,r12y,r12z,'b',r23x,r23y,r23z,'b',r34x,r34y,r34z,'b',r45x,r45y,r45z,'b',r56x,r56y,r56z,'b','Linewidth ',2) plot3(trazax,trazay,trazaz,'k', 'LineWidth',2); xlabel('x'); ylabel('y'); zlabel('z'); axis([-1000 1000 -1000 1000 -1000 1000]) %Az=-160;El=20; %Az=-90;El=0; %lateral %Az=130;El=30;%isometrica %Az=-0;El=0; %frente Az=-90;El=90; %superior view(Az,El) drawnow; F(i)=getframe(figure(3)); end v=VideoWriter('P2_circulo.avi'); v.FrameRate=15; open(v); writeVideo(v,F) close(v); Capturas de evidencia: CONCLUSIÓN: El desarrollo de la presente practica fue un tanto extenso, pero de un procedimiento simple, no se presentó alguna complicación grave para su desarrollo y conclusión de la misma, fue interesante el poder visualizar y programar mediante este lenguaje en el programa de MATLAB, así pudiendo comprender mas de forma practica el como es que se puede hacer manipular un robot y que haga diversos diseños, en este caso un triangulo y un circulo con unas medidas específicas.
Compartir