0% encontró este documento útil (0 votos)
575 vistas28 páginas

MATLAB Robot PUMA 560 1ra Edicion PDF

Este documento presenta el algoritmo para calcular la cinemática directa de un robot PUMA 560 utilizando la matriz de Denavit-Hartenberg. Incluye las líneas de código de varios archivos de MATLAB que mueven el robot a través de sus articulaciones siguiendo una secuencia específica de movimientos.

Cargado por

Erick Machado
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
575 vistas28 páginas

MATLAB Robot PUMA 560 1ra Edicion PDF

Este documento presenta el algoritmo para calcular la cinemática directa de un robot PUMA 560 utilizando la matriz de Denavit-Hartenberg. Incluye las líneas de código de varios archivos de MATLAB que mueven el robot a través de sus articulaciones siguiendo una secuencia específica de movimientos.

Cargado por

Erick Machado
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

MATLAB

CINEMATICA DIRECTA CON LA MATRIZ DENAVIT HARTENBERG


Programas para controlar el robot PUMA 560

Autor:

Ingeniero Electrnico: Monteza Zevallos Fidel Tomas

Diciembre de 2016 (Primera Edicin)

V. J. M. J. / A. M. M. J.
ndice general

Introduccin

1. Cinemtica Directa con la matriz Denavit Hartenberg (algoritmo del archivo: DENAVIT_MATRIZ)

2. Lneas del algoritmo del archivo: PUMA560_1A

3. Lneas del algoritmo del archivo: PUMA560_1B

4. Lneas del algoritmo del archivo: PUMA560_2A

5. Lneas del algoritmo del archivo: PUMA560_3A

6. Lneas del algoritmo del archivo: PUMA560_4A

7. Lneas del algoritmo del archivo: PUMA560_4B


Introduccin
Denavit-Hartenberg propusieron en 1955 un mtodo matricial que permite establecer de manera sistemtica un sistema de coordenadas (Si) ligado a cada eslabn i de una
cadena articulada, pudindose determinar a continuacin las ecuaciones cinemticas de la cadena completa.

Segn la representacin D-H, escogiendo adecuadamente los sistemas de coordenadas asociados para cada eslabn, ser posible pasar de uno al siguiente mediante 4
transformaciones bsicas que dependen exclusivamente de las caractersticas geomtricas del eslabn.

Estas transformaciones bsicas consisten en una sucesin de rotaciones y traslaciones que permitan relacionar el sistema de referencia del elemento i con el sistema del
elemento i-1. Las transformaciones en cuestin son las siguientes:

Rotacin alrededor del eje Zi-1 un ngulo i.


Traslacin a lo largo de Zi-1 una distancia di; vector di ( 0,0,di ).
Traslacin a lo largo de Xi una distancia ai; vector ai ( 0,0,ai ).
Rotacin alrededor del eje Xi, un ngulo i.

Dado que el producto de matrices no es conmutativo, las transformaciones se han de realizar en el orden indicado. De este modo se tiene que:

i-1A i = T( z, i ) T( 0,0,di ) T ( ai,0,0 ) T( x,i )

Y realizando el producto de matrices:

C i S i 0 0 1 0 0 0 1 0 0 ai 1 0 0 0
S C i 0 0 0 1 0 0 0 1
0 0 0 C i S i 0
i 1
Ai i
0 0 1 0 0 0 1 d i 0 0 1 0 0 S i C i 0

0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1

C i C i S i S i S i a i C i
S C i C i S i C i a i S i
i
0 S i C i di

0 0 0 1

Donde i, ai, di, i, son los parmetros D-H del eslabn i, basta con identificarlos para obtener matrices A y relacionar as todos y cada uno de los eslabones del robot.

Como se ha indicado, para que la matriz i-1Ai, relacione los sistemas (Si) y (Si-1), es necesario que los sistemas se hayan escogido de acuerdo a unas determinadas normas.
Estas, junto con la definicin de los 4 parmetros de Denavit-Hartenberg, conforman el siguiente algoritmo para la resolucin del problema cinemtico directo:
El robot PUMA (Programmable Universal Machine for Assembly, o Programmable Universal Manipulation Arm) es un brazo robot industrial desarrollado por Victor Scheinman en
la empresa pionera en robtica Unimation. Inicialmente desarrollado para General Motors, el brazo robot PUMA naci de los diseos iniciales inventados por Scheinman
mientras se encontraba en el MIT y en la Stanford University.
Unimation produjo PUMAs durante algunos aos hasta que fue absorbida por Westinghouse, y posteriormente por la empresa suiza Stubli. Nokia Robotics manufactur cerca
1500 brazos robots PUMA durante los aos 1980, siendo el PUMA-560 el modelo ms popular entre los clientes. Nokia vendi su divisin de robtica en 1990.
En 2002 la organizacin General Motors Controls, Robotics and Welding (CRW) don el prototipo original del brazo robot PUMA al Museo Nacional de Historia Americana,
reconocindose as su importancia en el desarrollo de la robtica
1. Cinemtica Directa con la matriz Denavit Hartenberg (algoritmo del archivo: DENAVIT_MATRIZ)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Para la representacion Denavit-hartenberg en Cinematica Directa se requieren 4 parmetros: a(i), alfa(i), teta(i), d(i)
% 2 relativos a la forma y tamao del eslabn: a(i), alfa(i)
% 2 describen posicin relativa del eslabn respecto a su predecesor*: teta(i), d(i)
% Los parmetros de forma y tamao quedan determinados en tiempo de diseo
% Los parmetros de posicin relativa varan
% teta(i) es variable si la rotacin es articular (d(i) Constante)
% d(i) variable si la rotacin es prismtica (teta(i) Constante)
%
% *En notacin Craig es respecto al eslabn sucesivo a(i-1), alfa(i-1), teta(i), d(i)
%
% El archivo DENAVIT_MATRIZ demuestra la funcionalidad de la Matriz de transformacin homognea del metodo DENAVIT-HARTENBERG.
%
% A partir de los parmetros de Denavit-Hartenberg (teta, d, a, alfa) se cuenta con cuatro matrices principales
% De rotacion angular teta (R_teta); de desplazamiento d (D_d); de desplazamiento a (D_a) y de rotacion angular alfa (R_alfa)
% Donde al final la matriz A sera el resultado del producto de estas cuatro matrices demostrando el metodo DENAVIT-HARTENBERG
% Revisar el archivo PDF CINEMATICA DIRECTA (Procedimiento Denavit-Hartenberg) pagina 9
%
% Igualmente se tiene la matriz B que es la representacion directa del metodo DENAVIT-HARTENBERG
%
% teta : ngulo existira entre las lneas normales de la articulacin i si se cortasen en el mismo punto del eje i
% d : distancia entre las intersecciones de las normales comunes al eje i, medida a lo largo de i
% a :(longitud eslabn) distancia entre ejes i, i+1 de las articulaciones a lo largo de la perpendicular comn
% alfa :(ngulo torsin) ngulo que existira entre ejes i,i+1 si se cortasen en punto de corte de la perpendicular comn
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear; % Limpiamos el Workspace


clc; % Limpiamos el Command Window
close all; % Cerramos todo

teta = pi/2; % Angulo teta a girar (90)


alfa = pi/2; % Angulo alfa a girar (90)
a=1; % Longitud del eslabon
d=1; % Distancia entre las intersecciones

% Primera matriz de rotacion angular teta


R_teta=[cos(teta) -sin(teta) 0 0;
sin(teta) cos(teta) 0 0;
0 0 1 0;
0 0 0 1];

% Segunda matriz de desplazamiento d


D_d=[1 0 0 0;
0 1 0 0;
0 0 1 d;
0 0 0 1];

% Tercera matriz de desplazamiento a


D_a=[1 0 0 a;
0 1 0 0;
0 0 1 0;
0 0 0 1];

% Cuarta matriz de rotacion angular alfa


R_alfa=[1 0 0 0;
0 cos(alfa) -sin(alfa) 0;
0 sin(alfa) cos(alfa) 0;
0 0 0 1];

% Producto final de todas las matrices que relacionan el metodo DENAVIT-HARTENBERG


A=R_teta*D_d*D_a*R_alfa

% Matriz principal del metodo DENAVIT-HARTENBERG cuyo resultado sera igual a la matriz A
B=[cos(teta) -cos(alfa)*sin(teta) sin(alfa)*sin(teta) a*cos(teta);
sin(teta) cos(alfa)*cos(teta) -sin(alfa)*cos(teta) a*sin(teta);
0 sin(alfa) cos(alfa) d;
0 0 0 1]

Presentacin en el Command Window de MATLAB de la matriz A y la matriz B mostrando idnticos resultados


2. Lneas del algoritmo del archivo: PUMA560_1A

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo PUMA560_1A que se ejecuta necesariamente con la funcion ikine del Toolbox Robotic de MATLAB
% De acuerdo a la programacion el sistema se movera de la siguiente forma:
% Moverse 8 unidades en el eje Z
% Moverse 30 unidades en el eje Y
% Moverse 5 unidades en el eje X
% Moverse 15 unidades en el eje Y
% Los valores iniciales en el eje XYZ del Robot Puma son X=0.452; Y=-0.150; Z=0.432
% Los valores de variacion de cada articulacion esta de la siguiente forma:
%
% Inicio Primer Movimiento Segundo Movimiento Tercer Movimiento Cuarto Movimiento
% X=0.452 ---------------------------------------------------> 0.502
% Y=-0.15 ---------------------------> 0.15 ---------------------------------------> 0.30
% Z=0.432 -----> 0.512
%
% La variable N sera el numero de iteraciones (Velocidad de movimiento) y cada linea de programacion con el comando:
% linspace(d1,d2,N) sera las unidades de cantidad de movimiento a ser realizado
%
% Escribir en el Command Window las siguientes lineas:
% puma560
% drivebot(p560)
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear; % Limpiamos el Workspace


clc; % Limpiamos el Command Window
close all; % Cerramos todo

puma560; % Se llama al proyecto Robot Puma creado en MATLAB


robot=p560
N=40; % La variable N es el numero de iteraciones

% Lineas de programacion para el primer tramo de movimiento de 5 unidades en el eje Z


z=linspace(0.432,0.512,N); % La variable z se distribuira desde 0.432 hasta 0.512 en N partes iguales (0.08 unidades)
x=zeros(1,N); % La variable x estara comprendida por 1 fila de N Ceros
y=x; % La variable y sera igual a lo obtenido en la variable x (1 fila de N Ceros)
for j=1:N % La variable j ira desde 1 hasta N en valores de una unidad
y(1,j)=-0.15; % Se formaran matrices y de 1 fila x (1 hasta N) columnas con los valores -0.15
x(1,j)=0.452; % Se formaran matrices x de 1 fila x (1 hasta N) columnas con los valores 0.452
end
phi=zeros(1,N); % La variable phi estara comprendida por 1 fila de N Ceros
for k=1:length(z) % La variable k ira desde 1 hasta el maximo valor de la variable z en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qzz=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qzz)

% Lineas de programacion para el segundo tramo de movimiento de 30 unidades en el eje Y


y=linspace(-0.15,0.15,N); % La variable y se distribuira desde -0.15 hasta 0.15 en N partes iguales (0.30 unidades)
x=zeros(1,N); % La variable x estara comprendida por 1 fila de N Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N Ceros)
for j=1:N % La variable j ira desde 1 hasta N en valores de una unidad
x(1,j)=0.452; % Se formaran matrices x de 1 fila x (1 hasta N) columnas con los valores 0.452
z(1,j)=0.512; % Se formaran matrices z de 1 fila x (1 hasta N) columnas con los valores 0.512
end
phi=zeros(1,N);
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)

% Lineas de programacion para el tercer tramo de movimiento de 5 unidades en el eje X


x=linspace(0.452,0.502,N); % La variable x se distribuira desde 0.452 hasta 0.502 en N partes iguales (0.05 unidades)
y=zeros(1,N); % La variable y estara comprendida por 1 fila de N Ceros
z=y; % La variable z sera igual a lo obtenido en la variable y (1 fila de N Ceros)
for j=1:N % La variable j ira desde 1 hasta N en valores de una unidad
y(1,j)=0.15; % Se formaran matrices y de 1 fila x (1 hasta N) columnas con los valores 0.15
z(1,j)=0.512; % Se formaran matrices z de 1 fila x (1 hasta N) columnas con los valores 0.512
end
phi=zeros(1,N); % La variable phi estara comprendida por 1 fila de N Ceros
for k=1:length(x) % La variable k ira desde 1 hasta el maximo valor de la variable x en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qxx=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qxx)

% Lineas de programacion para el cuarto tramo de movimiento de 15 unidades en el eje Y


y=linspace(0.15,0.30,N); % La variable y se distribuira desde 0.15 hasta 0.30 en N partes iguales (0.15 unidades)
x=zeros(1,N); % La variable x estara comprendida por 1 fila de N Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N Ceros)
for j=1:N % La variable j ira desde 1 hasta N en valores de una unidad
x(1,j)=0.502; % Se formaran matrices x de 1 fila x (1 hasta N) columnas con los valores 0.502
z(1,j)=0.512; % Se formaran matrices z de 1 fila x (1 hasta N) columnas con los valores 0.512
end
phi=zeros(1,N); % La variable phi estara comprendida por 1 fila de N Ceros
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)
3. Lneas del algoritmo del archivo: PUMA560_1B

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo PUMA560_1B que se ejecuta necesariamente con la funcion ikine del Toolbox Robotic de MATLAB
% De acuerdo a la programacion el sistema se movera de la siguiente forma:
% Moverse 150 unidades en el eje X
% Moverse 30 unidades en el eje Y
% Moverse 5 unidades en el eje Z
% Moverse 150 unidades en el eje X
% Moverse 15 unidades en el eje Y
% Los valores iniciales en el eje XYZ del Robot Puma son X=0.452; Y=-0.150; Z=0.432
% Los valores de variacion de cada articulacion esta de la siguiente forma:
%
% Inicio Primer Movimiento Segundo Movimiento Tercer Movimiento Cuarto Movimiento Quinto Movimiento
% X=0.452 -----> 0.602 ------------------------------------------------------------> 0.452
% Y=-0.15 ---------------------------> 0.15 ------------------------------------------------------------> 0.30
% Z=0.432 --------------------------------------------------> 0.482
%
% La variable N sera el numero de iteraciones (Velocidad de movimiento) y cada linea de programacion con el comando:
% linspace(d1,d2,N) sera las unidades de cantidad de movimiento a ser realizado
%
% Escribir en el Command Window las siguientes lineas:
% puma560
% drivebot(p560)
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear; % Limpiamos el Workspace


clc; % Limpiamos el Command Window
close all; % Cerramos todo

puma560; % Se llama al proyecto Robot Puma creado en MATLAB


robot=p560
N=40; % La variable N es el numero de iteraciones

% Lineas de programacion para el primer tramo de movimiento de 150 unidades en el eje X


x=linspace(0.452,0.602,N); % La variable x se distribuira desde 0.452 hasta 0.602 en N partes iguales (0.15 unidades)
y=zeros(1,N); % La variable y estara comprendida por 1 fila de N Ceros
z=y; % La variable z sera igual a lo obtenido en la variable y (1 fila de N Ceros)
for j=1:N % La variable j ira desde 1 hasta N en valores de una unidad
z(1,j)=0.432; % Se formaran matrices z de 1 fila x (1 hasta N) columnas con los valores 0.432
y(1,j)=-0.15; % Se formaran matrices y de 1 fila x (1 hasta N) columnas con los valores -0.15
end
phi=zeros(1,N); % La variable phi estara comprendida por 1 fila de N Ceros
for k=1:length(x) % La variable k ira desde 1 hasta el maximo valor de la variable x en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qxx=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qxx)

% Lineas de programacion para el segundo tramo de movimiento de 30 unidades en el eje Y


y=linspace(-0.15,0.15,N); % La variable y se distribuira desde -0.15 hasta 0.15 en N partes iguales (0.30 unidades)
x=zeros(1,N); % La variable x estara comprendida por 1 fila de N Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N Ceros)
for j=1:N % La variable j ira desde 1 hasta N en valores de una unidad
z(1,j)=0.432; % Se formaran matrices z de 1 fila x (1 hasta N) columnas con los valores 0.432
x(1,j)=0.602; % Se formaran matrices x de 1 fila x (1 hasta N) columnas con los valores 0.602
end
phi=zeros(1,N);
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)

% Lineas de programacion para el tercer tramo de movimiento de 5 unidades en el eje Z


z=linspace(0.432,0.482,N); % La variable z se distribuira desde 0.432 hasta 0.482 en N partes iguales (0.05 unidades)
y=zeros(1,N); % La variable y estara comprendida por 1 fila de N Ceros
x=y; % La variable x sera igual a lo obtenido en la variable y (1 fila de N Ceros)
for j=1:N % La variable j ira desde 1 hasta N en valores de una unidad
x(1,j)=0.602; % Se formaran matrices x de 1 fila x (1 hasta N) columnas con los valores 0.602
y(1,j)=0.15; % Se formaran matrices y de 1 fila x (1 hasta N) columnas con los valores 0.15
end
phi=zeros(1,N); % La variable phi estara comprendida por 1 fila de N Ceros
for k=1:length(z) % La variable k ira desde 1 hasta el maximo valor de la variable z en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qzz=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qzz)

% Lineas de programacion para el cuarto tramo de movimiento de 150 unidades en el eje X


x=linspace(0.602,0.452,N); % La variable x se distribuira desde 0.592 hasta 0.452 en N partes iguales (0.140 unidades)
y=zeros(1,N); % La variable y estara comprendida por 1 fila de N Ceros
z=x; % La variable z sera igual a lo obtenido en la variable y (1 fila de N Ceros)
for j=1:N % La variable j ira desde 1 hasta N en valores de una unidad
z(1,j)=0.482; % Se formaran matrices x de 1 fila x (1 hasta N) columnas con los valores 0.482
y(1,j)=0.15; % Se formaran matrices z de 1 fila x (1 hasta N) columnas con los valores 0.15
end
phi=zeros(1,N); % La variable phi estara comprendida por 1 fila de N Ceros
for k=1:length(x) % La variable k ira desde 1 hasta el maximo valor de la variable x en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qxx=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qxx)

% Lineas de programacion para el quinto tramo de movimiento de 15 unidades en el eje Y


y=linspace(0.15,0.30,N); % La variable y se distribuira desde 0.15 hasta 0.30 en N partes iguales (0.15 unidades)
x=zeros(1,N); % La variable x estara comprendida por 1 fila de N Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N Ceros)
for j=1:N % La variable j ira desde 1 hasta N en valores de una unidad
z(1,j)=0.482; % Se formaran matrices z de 1 fila x (1 hasta N) columnas con los valores 0.432
x(1,j)=0.452; % Se formaran matrices x de 1 fila x (1 hasta N) columnas con los valores 0.602
end
phi=zeros(1,N);
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)
4. Lneas del algoritmo del archivo: PUMA560_2A

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo PUMA560_2A que se ejecuta necesariamente con la funcion ikine del Toolbox Robotic de MATLAB
% De acuerdo a la programacion el sistema se movera de la siguiente forma:
% Moverse 8 unidades en el eje Z
% Moverse 30 unidades en el eje Y
% Moverse 5 unidades en el eje X
% Moverse 15 unidades en el eje Y
% Los valores iniciales en el eje XYZ del Robot Puma son X=0.452; Y=-0.150; Z=0.432
% Los valores de variacion de cada articulacion esta de la siguiente forma:
%
% Inicio Primer Movimiento Segundo Movimiento Tercer Movimiento Cuarto Movimiento
% X=0.452 ---------------------------------------------------> 0.502
% Y=-0.15 ---------------------------> 0.15 ---------------------------------------> 0.30
% Z=0.432 -----> 0.512
%
% Las variables N seran el numero de iteraciones (Velocidad de movimiento) y cada linea de programacion con el comando:
% linspace(d1,d2,N) seran las unidades de cantidad de movimiento a ser realizado
%
% Escribir en el Command Window las siguientes lineas:
% puma560
% drivebot(p560)
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear; % Limpiamos el Workspace


clc; % Limpiamos el Command Window
close all; % Cerramos todo

puma560; % Se llama al proyecto Robot Puma creado en MATLAB


robot=p560
N1=40; % La variable N1 es el numero de iteraciones para el eje Z
N2=70; % La variable N2 es el numero de iteraciones para el eje Y
N3=90; % La variable N3 es el numero de iteraciones para el eje X
N4=120; % La variable N4 es el numero de iteraciones para el eje Y

% Lineas de programacion para el primer tramo de movimiento de N1 iteraciones en el eje Z


z=linspace(0.432,0.512,N1); % La variable z se distribuira desde 0.432 hasta 0.512 en N1 partes iguales (0.08 unidades)
x=zeros(1,N1); % La variable x estara comprendida por 1 fila de N1 Ceros
y=x; % La variable y sera igual a lo obtenido en la variable x (1 fila de N1 Ceros)
for j=1:N1 % La variable j ira desde 1 hasta N1 en valores de una unidad
y(1,j)=-0.15; % Se formaran matrices y de 1 fila x (1 hasta N1) columnas con los valores -0.15
x(1,j)=0.452; % Se formaran matrices x de 1 fila x (1 hasta N1) columnas con los valores 0.452
end
phi=zeros(1,N1); % La variable phi estara comprendida por 1 fila de N1 Ceros
for k=1:length(z) % La variable k ira desde 1 hasta el maximo valor de la variable z en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qzz=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qzz)

% Lineas de programacion para el segundo tramo de movimiento de N2 iteraciones en el eje Y


y=linspace(-0.15,0.15,N2); % La variable y se distribuira desde -0.15 hasta 0.15 en N2 partes iguales (0.30 unidades)
x=zeros(1,N2); % La variable x estara comprendida por 1 fila de N2 Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N2 Ceros)
for j=1:N2 % La variable j ira desde 1 hasta N2 en valores de una unidad
x(1,j)=0.452; % Se formaran matrices x de 1 fila x (1 hasta N2) columnas con los valores 0.452
z(1,j)=0.512; % Se formaran matrices z de 1 fila x (1 hasta N2) columnas con los valores 0.512
end
phi=zeros(1,N2);
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)

% Lineas de programacion para el tercer tramo de movimiento de N3 iteraciones en el eje X


x=linspace(0.452,0.502,N3); % La variable x se distribuira desde 0.452 hasta 0.502 en N3 partes iguales (0.05 unidades)
y=zeros(1,N3); % La variable y estara comprendida por 1 fila de N3 Ceros
z=y; % La variable z sera igual a lo obtenido en la variable y (1 fila de N3 Ceros)
for j=1:N3 % La variable j ira desde 1 hasta N3 en valores de una unidad
y(1,j)=0.15; % Se formaran matrices y de 1 fila x (1 hasta N3) columnas con los valores 0.15
z(1,j)=0.512; % Se formaran matrices z de 1 fila x (1 hasta N3) columnas con los valores 0.512
end
phi=zeros(1,N3); % La variable phi estara comprendida por 1 fila de N3 Ceros
for k=1:length(x) % La variable k ira desde 1 hasta el maximo valor de la variable x en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qxx=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qxx)

% Lineas de programacion para el cuarto tramo de movimiento de N4 iteraciones en el eje Y


y=linspace(0.15,0.30,N4); % La variable y se distribuira desde 0.15 hasta 0.30 en N4 partes iguales (0.30 unidades)
x=zeros(1,N4); % La variable x estara comprendida por 1 fila de N4 Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N Ceros)
for j=1:N4 % La variable j ira desde 1 hasta N4 en valores de una unidad
x(1,j)=0.502; % Se formaran matrices x de 1 fila x (1 hasta N4) columnas con los valores 0.502
z(1,j)=0.512; % Se formaran matrices z de 1 fila x (1 hasta N4) columnas con los valores 0.512
end
phi=zeros(1,N4); % La variable phi estara comprendida por 1 fila de N4 Ceros
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)
5. Lneas del algoritmo del archivo: PUMA560_3A

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo PUMA560_3A que se ejecuta necesariamente con la funcion ikine del Toolbox Robotic de MATLAB
% De acuerdo a la programacion el sistema se movera de la siguiente forma:
% Moverse 8 unidades en el eje Z
% Moverse 30 unidades en el eje Y
% Moverse 5 unidades en el eje X
% Moverse 15 unidades en el eje Y
%
% Los valores iniciales en el eje XYZ del Robot Puma son X=0.452; Y=-0.150; Z=0.432
% Los valores de variacion de cada articulacion esta de la siguiente forma:
%
% Inicio Primer Movimiento Segundo Movimiento Tercer Movimiento Cuarto Movimiento
% X=0.452 ---------------------------------------------------> 0.502
% Y=-0.15 ---------------------------> 0.15 ---------------------------------------> 0.30
% Z=0.432 -----> 0.512
%
% Las variables N seran el numero de iteraciones (Velocidad de movimiento) y cada linea de programacion con el comando:
% linspace(d1,d2,N) seran las unidades de cantidad de movimiento a ser realizado
% Las variables d seran los puntos iniciales y finales de cada movimiento a ser realizado
%
% Escribir en el Command Window las siguientes lineas:
% puma560
% drivebot(p560)
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear; % Limpiamos el Workspace


clc; % Limpiamos el Command Window
close all; % Cerramos todo

puma560; % Se llama al proyecto Robot Puma creado en MATLAB


robot=p560
N1=40; % La variable N1 es el numero de iteraciones para el eje Z
N2=70; % La variable N2 es el numero de iteraciones para el eje Y
N3=90; % La variable N3 es el numero de iteraciones para el eje X
N4=120; % La variable N4 es el numero de iteraciones para el eje Y

px=0.452; % Valor inicial en el eje X del Robot Puma


py=-0.150; % Valor inicial en el eje Y del Robot Puma
pz=0.432; % Valor inicial en el eje Z del Robot Puma
d1=0.432; % Punto inicial del primer movimiento del brazo robotico, puede ser 0.432
d2=0.512; % Punto final del primer movimiento del brazo robotico, puede ser 0.512
d3=-0.15; % Punto inicial del segundo movimiento del brazo robotico, puede ser -0.15
d4=0.15; % Punto final del segundo movimiento del brazo robotico, puede ser 0.15
d5=0.452; % Punto inicial del tercer movimiento del brazo robotico, puede ser 0.452
d6=0.502; % Punto final del tercer movimiento del brazo robotico, puede ser 0.502
d7=0.15; % Punto inicial del cuarto movimiento del brazo robotico, puede ser 0.15
d8=0.30; % Punto final del cuarto movimiento del brazo robotico, puede ser 0.30

% Lineas de programacion para el primer tramo de movimiento de N1 iteraciones en el eje Z


z=linspace(d1,d2,N1); % La variable z se distribuira desde 0.432 hasta 0.512 en N1 partes iguales (d2-d1=0.08 unidades)
x=zeros(1,N1); % La variable x estara comprendida por 1 fila de N1 Ceros
y=x; % La variable y sera igual a lo obtenido en la variable x (1 fila de N1 Ceros)
for j=1:N1 % La variable j ira desde 1 hasta N1 en valores de una unidad
y(1,j)=py; % Se formaran matrices y de 1 fila x (1 hasta N1) columnas con el valor inicial -0.15
x(1,j)=px; % Se formaran matrices x de 1 fila x (1 hasta N1) columnas con el valor inicial 0.452
end
phi=zeros(1,N1); % La variable phi estara comprendida por 1 fila de N1 Ceros
for k=1:length(z) % La variable k ira desde 1 hasta el maximo valor de la variable z en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qzz=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qzz)

% Lineas de programacion para el segundo tramo de movimiento de N2 iteraciones en el eje Y


y=linspace(d3,d4,N2); % La variable y se distribuira desde -0.15 hasta 0.15 en N2 partes iguales (d4-d3=0.30 unidades)
x=zeros(1,N2); % La variable x estara comprendida por 1 fila de N2 Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N2 Ceros)
for j=1:N2 % La variable j ira desde 1 hasta N2 en valores de una unidad
x(1,j)=px; % Se formaran matrices x de 1 fila x (1 hasta N2) columnas con los valores 0.452 (X no ha sufrido cambios)
z(1,j)=pz+(d2-d1);% Se formara matrices z de 1 fila x (1 hasta N2) columnas con valores 0.512 (Punto final movimiento anterior)
end
phi=zeros(1,N2);
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)

% Lineas de programacion para el tercer tramo de movimiento de N3 iteraciones en el eje X


x=linspace(d5,d6,N3); % La variable x se distribuira desde 0.452 hasta 0.502 en N3 partes iguales (d6-d5=0.05 unidades)
y=zeros(1,N3); % La variable y estara comprendida por 1 fila de N3 Ceros
z=y; % La variable z sera igual a lo obtenido en la variable y (1 fila de N3 Ceros)
for j=1:N3 % La variable j ira desde 1 hasta N3 en valores de una unidad
y(1,j)=py+(d4-d3); % Se formara matrices y de 1 fila x (1 hasta N3) columnas con valores 0.15 (Y=py+(d4-d3)=-0.15+0.30=0.15)
z(1,j)=pz+(d2-d1); % Se formaran matrices z de 1 fila x (1 hasta N3) columnas con los valores 0.482 (Z no ha sufrido cambios)
end
phi=zeros(1,N3); % La variable phi estara comprendida por 1 fila de N3 Ceros
for k=1:length(x) % La variable k ira desde 1 hasta el maximo valor de la variable x en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qxx=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qxx)

% Lineas de programacion para el cuarto tramo de movimiento de N4 iteraciones en el eje Y


y=linspace(d7,d8,N4); % La variable y se distribuira desde 0.05 hasta -0.05 en N4 partes iguales (d8-d7=0.10 unidades)
x=zeros(1,N4); % La variable x estara comprendida por 1 fila de N4 Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N Ceros)
for j=1:N4 % La variable j ira desde 1 hasta N4 en valores de una unidad
x(1,j)=px+(d6-d5);% Se formara matrices x de 1 fila x (1 hasta N4) columnas con valores 0.702 (X=px+(d6-d5)=0.452+0.25=0.702)
z(1,j)=pz+(d2-d1);% Se formaran matrices z de 1 fila x (1 hasta N4) columnas con los valores 0.482 (Z no ha sufrido cambios)
end
phi=zeros(1,N4); % La variable phi estara comprendida por 1 fila de N4 Ceros
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)
6. Lneas del algoritmo del archivo: PUMA560_4A

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo PUMA560_4 que se ejecuta necesariamente con la funcion ikine del Toolbox Robotic de MATLAB
% De acuerdo a la programacion el sistema se movera de la siguiente forma:
% Moverse 8 unidades en el eje Z
% Moverse 30 unidades en el eje Y
% Moverse 5 unidades en el eje X
% Moverse 15 unidades en el eje Y
%
% Los valores iniciales en el eje XYZ del Robot Puma son X=0.452; Y=-0.150; Z=0.432
% Los valores de variacion de cada articulacion esta de la siguiente forma:
%
% Inicio Primer Movimiento Segundo Movimiento Tercer Movimiento Cuarto Movimiento
% X=0.452 ---------------------------------------------------> 0.502
% Y=-0.15 ---------------------------> 0.15 ---------------------------------------> 0.30
% Z=0.432 -----> 0.512
%
% Las variables N seran el numero de iteraciones (Velocidad de movimiento) y cada linea de programacion con el comando:
% linspace(d1,d2,N) seran las unidades de cantidad de movimiento a ser realizado
% Las variables d seran los puntos iniciales y finales de cada movimiento a ser realizado
% Las variables N y las variables d podran ser ingresadas individualmente desde el Command Window
%
% Escribir en el Command Window las siguientes lineas:
% puma560
% drivebot(p560)
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear; % Limpiamos el Workspace


clc; % Limpiamos el Command Window
close all; % Cerramos todo

puma560; % Se llama al proyecto Robot Puma creado en MATLAB


robot=p560

fprintf('\n CINEMATICA INVERSA DEL ROBOT PUMA 560 EN MATLAB') % Con (\n) se imprime en la siguiente linea
fprintf('\n ') % Con (\n) se imprime en la siguiente linea
fprintf('\n INGRESE LOS DATOS ESTABLECIDOS PARA GENERAR EL MOVIMIENTO') % Con (\n) se imprime en la siguiente linea
fprintf('\n ') % Con (\n) se imprime en la siguiente linea

fprintf('\n El valor de N1 (Numero de iteraciones del Primer Movimiento podria ser 40)') % (\n) se imprime en la siguiente linea
N1=input('\n INGRESE N1 = '); % La variable N1 es el numero de iteraciones para el eje Z
fprintf('\n El valor de N2 (Numero de iteraciones del Segundo Movimiento podria ser 70)') % (\n) se imprime en la siguiente linea
N2=input('\n INGRESE N2 = '); % La variable N2 es el numero de iteraciones para el eje Y
fprintf('\n El valor de N3 (Numero de iteraciones del Tercer Movimiento podria ser 90)') % (\n) se imprime en la siguiente linea
N3=input('\n INGRESE N3 = '); % La variable N3 es el numero de iteraciones para el eje X
fprintf('\n El valor de N4 (Numero de iteraciones del Cuarto Movimiento podria ser 120)') % (\n) se imprime en la siguiente linea
N4=input('\n INGRESE N4 = '); % La variable N4 es el numero de iteraciones para el eje Y
fprintf('\n ') % Con (\n) se imprime en la siguiente linea

fprintf('\n El valor de px (Valor inicial en el eje X del Robot Puma es 0.452)') % Con (\n) se imprime en la siguiente linea
px=input('\n INGRESE px = '); % La variable px es el Valor inicial en el eje X del Robot Puma
fprintf('\n El valor de py (Valor inicial en el eje Y del Robot Puma es -0.150)') % Con (\n) se imprime en la siguiente linea
py=input('\n INGRESE py = '); % La variable py es el Valor inicial en el eje Y del Robot Puma
fprintf('\n El valor de pz (Valor inicial en el eje Z del Robot Puma es 0.432)') % Con (\n) se imprime en la siguiente linea
pz=input('\n INGRESE pz = '); % La variable pz es el Valor inicial en el eje Z del Robot Puma
fprintf('\n ') % Con (\n) se imprime en la siguiente linea

fprintf('\n El valor de d1 (Punto inicial del primer movimiento del brazo robotico, puede ser 0.432)')
d1=input('\n INGRESE d1 = '); % Punto inicial del primer movimiento
fprintf('\n El valor de d2 (Punto final del segundo movimiento del brazo robotico, puede ser 0.512)')
d2=input('\n INGRESE d2 = '); % Punto final del primer movimiento
fprintf('\n El valor de d3 (Punto inicial del segundo movimiento del brazo robotico, puede ser -0.15)')
d3=input('\n INGRESE d3 = '); % Punto inicial del segundo movimiento
fprintf('\n El valor de d4 (Punto final del segundo movimiento del brazo robotico, puede ser 0.15)')
d4=input('\n INGRESE d4 = '); % Punto final del segundo movimiento
fprintf('\n El valor de d5 (Punto inicial del tercer movimiento del brazo robotico, puede ser 0.452)')
d5=input('\n INGRESE d5 = '); % Punto inicial del tercer movimiento
fprintf('\n El valor de d6 (Punto final del tercer movimiento del brazo robotico, puede ser 0.502)')
d6=input('\n INGRESE d6 = '); % Punto final del tercer movimiento
fprintf('\n El valor de d7 (Punto inicial del cuarto movimiento del brazo robotico, puede ser 0.15)')
d7=input('\n INGRESE d7 = '); % Punto inicial del cuarto movimiento
fprintf('\n El valor de d8 (Punto final del cuarto movimiento del brazo robotico, puede ser 0.30)')
d8=input('\n INGRESE d8 = '); % Punto final del cuarto movimiento

% Lineas de programacion para el primer tramo de movimiento de N1 iteraciones en el eje Z


z=linspace(d1,d2,N1); % La variable z se distribuira desde 0.432 hasta 0.502 en N1 partes iguales (d2-d1=0.08 unidades)
x=zeros(1,N1); % La variable x estara comprendida por 1 fila de N1 Ceros
y=x; % La variable y sera igual a lo obtenido en la variable x (1 fila de N1 Ceros)
for j=1:N1 % La variable j ira desde 1 hasta N1 en valores de una unidad
y(1,j)=py; % Se formaran matrices y de 1 fila x (1 hasta N1) columnas con el valor inicial -0.15
x(1,j)=px; % Se formaran matrices x de 1 fila x (1 hasta N1) columnas con el valor inicial 0.452
end
phi=zeros(1,N1); % La variable phi estara comprendida por 1 fila de N1 Ceros
for k=1:length(z) % La variable k ira desde 1 hasta el maximo valor de la variable z en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qzz=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qzz)

% Lineas de programacion para el segundo tramo de movimiento de N2 iteraciones en el eje Y


y=linspace(d3,d4,N2); % La variable y se distribuira desde -0.15 hasta 0.15 en N2 partes iguales (d4-d3=0.30 unidades)
x=zeros(1,N2); % La variable x estara comprendida por 1 fila de N2 Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N2 Ceros)
for j=1:N2 % La variable j ira desde 1 hasta N2 en valores de una unidad
x(1,j)=px; % Se formaran matrices x de 1 fila x (1 hasta N2) columnas con los valores 0.452 (X no ha sufrido cambios)
z(1,j)=pz+(d2-d1);% Se formara matrices z de 1 fila x (1 hasta N2) columnas con valores 0.512 (Punto final movimiento anterior)
end
phi=zeros(1,N2);
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)

% Lineas de programacion para el tercer tramo de movimiento de N3 iteraciones en el eje X


x=linspace(d5,d6,N3); % La variable x se distribuira desde 0.452 hasta 0.502 en N3 partes iguales (d6-d5=0.05 unidades)
y=zeros(1,N3); % La variable y estara comprendida por 1 fila de N3 Ceros
z=y; % La variable z sera igual a lo obtenido en la variable y (1 fila de N3 Ceros)
for j=1:N3 % La variable j ira desde 1 hasta N3 en valores de una unidad
y(1,j)=py+(d4-d3);% Se formara matrices y de 1 fila x (1 hasta N3) columnas con los valores 0.05 (Y=py+(d4-d3)=-0.15+0.20=0.05)
z(1,j)=pz+(d2-d1);% Se formaran matrices z de 1 fila x (1 hasta N3) columnas con los valores 0.482 (Z no ha sufrido cambios)
end
phi=zeros(1,N3); % La variable phi estara comprendida por 1 fila de N3 Ceros
for k=1:length(x) % La variable k ira desde 1 hasta el maximo valor de la variable x en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qxx=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qxx)

% Lineas de programacion para el cuarto tramo de movimiento de N4 iteraciones en el eje Y


y=linspace(d7,d8,N4); % La variable y se distribuira desde 0.05 hasta 0.30 en N4 partes iguales (d8-d7=0.15 unidades)
x=zeros(1,N4); % La variable x estara comprendida por 1 fila de N4 Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N Ceros)
for j=1:N4 % La variable j ira desde 1 hasta N4 en valores de una unidad
x(1,j)=px+(d6-d5);% Se formara matrices x de 1 fila x (1 hasta N4) columnas con valores 0.502 (X=px+(d6-d5)=0.452+0.25=0.502)
z(1,j)=pz+(d2-d1);% Se formaran matrices z de 1 fila x (1 hasta N4) columnas con los valores 0.512 (Z no ha sufrido cambios)
end
phi=zeros(1,N4); % La variable phi estara comprendida por 1 fila de N4 Ceros
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)

Ventana del Command Window en MATLAB en donde se debe seguir los pasos que se indican de acuerdo a las lneas de programacion
7. Lneas del algoritmo del archivo: PUMA560_4B

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Archivo PUMA560_4B que se ejecuta necesariamente con la funcion ikine del Toolbox Robotic de MATLAB
% De acuerdo a la programacion el sistema se movera de la siguiente forma:
% Moverse 150 unidades en el eje X
% Moverse 30 unidades en el eje Y
% Moverse 5 unidades en el eje Z
% Moverse 150 unidades en el eje X
% Moverse 15 unidades en el eje Y
% Los valores iniciales en el eje XYZ del Robot Puma son X=0.452; Y=-0.150; Z=0.432
% Los valores de variacion de cada articulacion esta de la siguiente forma:
%
% Inicio Primer Movimiento Segundo Movimiento Tercer Movimiento Cuarto Movimiento Quinto Movimiento
% X=0.452 -----> 0.602 ------------------------------------------------------------> 0.452
% Y=-0.15 ---------------------------> 0.15 ------------------------------------------------------------> 0.30
% Z=0.432 --------------------------------------------------> 0.482
%
% La variable N sera el numero de iteraciones (Velocidad de movimiento) y cada linea de programacion con el comando:
% linspace(d1,d2,N) sera las unidades de cantidad de movimiento a ser realizado
%
% Escribir en el Command Window las siguientes lineas:
% puma560
% drivebot(p560)
%
% INGENIERO ELECTRONICO MONTEZA ZEVALLOS FIDEL TOMAS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear; % Limpiamos el Workspace


clc; % Limpiamos el Command Window
close all; % Cerramos todo

puma560; % Se llama al proyecto Robot Puma creado en MATLAB


robot=p560

fprintf('\n CINEMATICA INVERSA DEL ROBOT PUMA 560 EN MATLAB') % Con (\n) se imprime en la siguiente linea
fprintf('\n ') % Con (\n) se imprime en la siguiente linea
fprintf('\n INGRESE LOS DATOS ESTABLECIDOS PARA GENERAR EL MOVIMIENTO') % Con (\n) se imprime en la siguiente linea
fprintf('\n ') % Con (\n) se imprime en la siguiente linea

fprintf('\n El valor de N1 (Numero de iteraciones del Primer Movimiento podria ser 40)') % (\n) se imprime en la siguiente linea
N1=input('\n INGRESE N1 = '); % La variable N1 es el numero de iteraciones para el eje X
fprintf('\n El valor de N2 (Numero de iteraciones del Segundo Movimiento podria ser 70)') % (\n) se imprime en la siguiente linea
N2=input('\n INGRESE N2 = '); % La variable N2 es el numero de iteraciones para el eje Y
fprintf('\n El valor de N3 (Numero de iteraciones del Tercer Movimiento podria ser 90)') % (\n) se imprime en la siguiente linea
N3=input('\n INGRESE N3 = '); % La variable N3 es el numero de iteraciones para el eje Z
fprintf('\n El valor de N4 (Numero de iteraciones del Cuarto Movimiento podria ser 120)') % (\n) se imprime en la siguiente linea
N4=input('\n INGRESE N4 = '); % La variable N4 es el numero de iteraciones para el eje X
fprintf('\n El valor de N5 (Numero de iteraciones del Quinto Movimiento podria ser 130)') % (\n) se imprime en la siguiente linea
N5=input('\n INGRESE N5 = '); % La variable N5 es el numero de iteraciones para el eje Y
fprintf('\n ') % Con (\n) se imprime en la siguiente linea

fprintf('\n USTED INGRESARA LOS DATOS DE LA POSICION INICIAL DE ROBOT PUMA 560') % Con (\n) se imprime en la siguiente linea
fprintf('\n ') % Con (\n) se imprime en la siguiente linea
fprintf('\n El valor de px (Valor inicial en el eje X del Robot Puma es 0.452)') % Con (\n) se imprime en la siguiente linea
px=input('\n INGRESE px = '); % La variable px es el Valor inicial en el eje X del Robot Puma
fprintf('\n El valor de py (Valor inicial en el eje Y del Robot Puma es -0.150)') % Con (\n) se imprime en la siguiente linea
py=input('\n INGRESE py = '); % La variable py es el Valor inicial en el eje Y del Robot Puma
fprintf('\n El valor de pz (Valor inicial en el eje Z del Robot Puma es 0.432)') % Con (\n) se imprime en la siguiente linea
pz=input('\n INGRESE pz = '); % La variable pz es el Valor inicial en el eje Z del Robot Puma
fprintf('\n ') % Con (\n) se imprime en la siguiente linea

fprintf('\n USTED INGRESARA DATOS DE LAS POSICIONES INICIAL Y FINAL DE ROBOT PUMA 560') % Con (\n) se imprime en la siguiente linea
fprintf('\n ') % (\n) se imprime en la siguiente linea
fprintf('\n El valor de d1 (Punto inicial del primer movimiento del brazo robotico, puede ser 0.452)')
d1=input('\n INGRESE d1 = '); % Punto inicial del primer movimiento
fprintf('\n El valor de d2 (Punto final del segundo movimiento del brazo robotico, puede ser 0.602)')
d2=input('\n INGRESE d2 = '); % Punto final del primer movimiento
fprintf('\n El valor de d3 (Punto inicial del segundo movimiento del brazo robotico, puede ser -0.15)')
d3=input('\n INGRESE d3 = '); % Punto inicial del segundo movimiento
fprintf('\n El valor de d4 (Punto final del segundo movimiento del brazo robotico, puede ser 0.15)')
d4=input('\n INGRESE d4 = '); % Punto final del segundo movimiento
fprintf('\n El valor de d5 (Punto inicial del tercer movimiento del brazo robotico, puede ser 0.432)')
d5=input('\n INGRESE d5 = '); % Punto inicial del tercer movimiento
fprintf('\n El valor de d6 (Punto final del tercer movimiento del brazo robotico, puede ser 0.482)')
d6=input('\n INGRESE d6 = '); % Punto final del tercer movimiento
fprintf('\n El valor de d7 (Punto inicial del cuarto movimiento del brazo robotico, puede ser 0.602)')
d7=input('\n INGRESE d7 = '); % Punto inicial del cuarto movimiento
fprintf('\n El valor de d8 (Punto final del cuarto movimiento del brazo robotico, puede ser 0.452)')
d8=input('\n INGRESE d8 = '); % Punto final del cuarto movimiento
fprintf('\n El valor de d9 (Punto inicial del primer movimiento del brazo robotico, puede ser 0.15)')
d9=input('\n INGRESE d9 = '); % Punto inicial del primer movimiento
fprintf('\n El valor de d10 (Punto final del segundo movimiento del brazo robotico, puede ser 0.30)')
d10=input('\n INGRESE d10 = '); % Punto final del primer movimiento
% Lineas de programacion para el primer tramo de movimiento de N1 iteraciones en el eje X
x=linspace(d1,d2,N1); % La variable x se distribuira desde 0.602 hasta 0.452 en N1 partes iguales (d2-d1=0.150 unidades)
y=zeros(1,N1); % La variable y estara comprendida por 1 fila de N1 Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N1 Ceros)
for j=1:N1 % La variable j ira desde 1 hasta N1 en valores de una unidad
y(1,j)=py; % Se formaran matrices y de 1 fila x (1 hasta N1) columnas con el valor inicial -0.15
z(1,j)=pz; % Se formaran matrices z de 1 fila x (1 hasta N1) columnas con el valor inicial 0.432
end
phi=zeros(1,N1); % La variable phi estara comprendida por 1 fila de N1 Ceros
for k=1:length(x) % La variable k ira desde 1 hasta el maximo valor de la variable x en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qxx=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qxx)

% Lineas de programacion para el segundo tramo de movimiento de N2 iteraciones en el eje Y


y=linspace(d3,d4,N2); % La variable y se distribuira desde -0.15 hasta 0.55 en N2 partes iguales (d4-d3=0.30 unidades)
x=zeros(1,N2); % La variable x estara comprendida por 1 fila de N2 Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N2 Ceros)
for j=1:N2 % La variable j ira desde 1 hasta N2 en valores de una unidad
x(1,j)=px+(d2-d1); % Se formaran matrices x de 1 fila x (1 hasta N2) columnas con los valores 0.602 (X no ha sufrido cambios)
z(1,j)=pz; % Se formaran matrices z de 1 fila x (1 hasta N2) columnas con los valores 0.432 (Punto final movimiento anterior)
end
phi=zeros(1,N2);
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)

% Lineas de programacion para el tercer tramo de movimiento de N3 iteraciones en el eje Z


z=linspace(d5,d6,N3); % La variable z se distribuira desde 0.432 hasta 0.482 en N3 partes iguales (d6-d5=0.05 unidades)
y=zeros(1,N3); % La variable y estara comprendida por 1 fila de N3 Ceros
x=y; % La variable x sera igual a lo obtenido en la variable y (1 fila de N3 Ceros)
for j=1:N3 % La variable j ira desde 1 hasta N3 en valores de una unidad
y(1,j)=py+(d4-d3);% Se formara matrices y de 1 fila x (1 hasta N3) columnas con valores 0.05 (Y=py+(d4-d3)=-0.15+0.20=0.05)
x(1,j)=px+(d2-d1);% Se formaran matrices z de 1 fila x (1 hasta N3) columnas con los valores 0.482 (Z no ha sufrido cambios)
end
phi=zeros(1,N3); % La variable phi estara comprendida por 1 fila de N3 Ceros
for k=1:length(z) % La variable k ira desde 1 hasta el maximo valor de la variable x en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qzz=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qzz)

% Lineas de programacion para el cuarto tramo de movimiento de N4 iteraciones en el eje X


x=linspace(d7,d8,N4); % La variable x se distribuira desde 0.05 hasta -0.05 en N4 partes iguales (d8-d7=0.10 unidades)
y=zeros(1,N4); % La variable y estara comprendida por 1 fila de N4 Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N4 Ceros)
for j=1:N4 % La variable j ira desde 1 hasta N4 en valores de una unidad
y(1,j)=py+(d4-d3);% Se formara matrices x de 1 fila x (1 hasta N4) columnas con valores 0.702 (X=px+(d6-d5)=0.452+0.25=0.702)
z(1,j)=pz+(d6-d5);% Se formaran matrices z de 1 fila x (1 hasta N4) columnas con los valores 0.482 (Z no ha sufrido cambios)
end
phi=zeros(1,N4); % La variable phi estara comprendida por 1 fila de N4 Ceros
for k=1:length(x) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qxx=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qxx)

% Lineas de programacion para el quinto tramo de movimiento de N5 iteraciones en el eje Y


y=linspace(d9,d10,N5); % La variable x se distribuira desde 0.05 hasta -0.05 en N5 partes iguales (d8-d7=0.10 unidades)
x=zeros(1,N5); % La variable y estara comprendida por 1 fila de N5 Ceros
z=x; % La variable z sera igual a lo obtenido en la variable x (1 fila de N5 Ceros)
for j=1:N5 % La variable j ira desde 1 hasta N5 en valores de una unidad
x(1,j)=px+(d2-d1)+(d8-d7); % Se formara matrices x de 1 fila x (1 hasta N4) columnas con valores 0.702 (X=px+(d6-
d5)=0.452+0.25=0.702)
z(1,j)=pz+(d6-d5);% Se formaran matrices z de 1 fila x (1 hasta N4) columnas con los valores 0.482 (Z no ha sufrido cambios)
end
phi=zeros(1,N4); % La variable phi estara comprendida por 1 fila de N5 Ceros
for k=1:length(y) % La variable k ira desde 1 hasta el maximo valor de la variable y en valores de una unidad
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k); % La matriz T es la matriz homogenea
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T) % ikine es una funcion de Cinematica Inversa del Toolbox de Robotica
plot(robot,qyy)

También podría gustarte