Professional Documents
Culture Documents
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
C i
S
i 1
Ai i
0
S i
C i
0
0
0
0
1
0
0 1
0 0
0 0
1 0
C i
S
i
0
0
1
0
0
0 0 1
0 0 0
1 d i 0
0 1 0
C i S i
C i C i
S i
0
0
1
0
0
S i S i
S i C i
C i
0
0 ai 1
0
0 0 0 C i
1 0 0 S i
0 1 0
0
0
S i
C i
0
0
0
a i C i
a i S i
di
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;
clc;
close all;
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
teta = pi/2;
alfa = pi/2;
a=1;
d=1;
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]
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
% Se llama al proyecto Robot Puma creado en MATLAB
% La variable N es el numero de iteraciones
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)
plot(robot,qxx)
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
puma560;
robot=p560
N=40;
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)
plot(robot,qzz)
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
puma560;
robot=p560
N1=40;
N2=70;
N3=90;
N4=120;
La
La
La
La
variable
variable
variable
variable
N1
N2
N3
N4
es
es
es
es
el
el
el
el
numero
numero
numero
numero
de
de
de
de
iteraciones
iteraciones
iteraciones
iteraciones
para
para
para
para
el
el
el
el
eje
eje
eje
eje
Z
Y
X
Y
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)
plot(robot,qxx)
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
puma560;
robot=p560
N1=40;
N2=70;
N3=90;
N4=120;
px=0.452;
py=-0.150;
pz=0.432;
%
%
%
%
La
La
La
La
variable
variable
variable
variable
N1
N2
N3
N4
es
es
es
es
el
el
el
el
numero
numero
numero
numero
de
de
de
de
iteraciones
iteraciones
iteraciones
iteraciones
para
para
para
para
el
el
el
el
eje
eje
eje
eje
Z
Y
X
Y
d1=0.432;
d2=0.512;
d3=-0.15;
d4=0.15;
d5=0.452;
d6=0.502;
d7=0.15;
d8=0.30;
%
%
%
%
%
%
%
%
Punto
Punto
Punto
Punto
Punto
Punto
Punto
Punto
inicial del primer movimiento del brazo robotico, puede ser 0.432
final del primer movimiento del brazo robotico, puede ser 0.512
inicial del segundo movimiento del brazo robotico, puede ser -0.15
final del segundo movimiento del brazo robotico, puede ser 0.15
inicial del tercer movimiento del brazo robotico, puede ser 0.452
final del tercer movimiento del brazo robotico, puede ser 0.502
inicial del cuarto movimiento del brazo robotico, puede ser 0.15
final del cuarto movimiento del brazo robotico, puede ser 0.30
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)
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
% Se llama al proyecto Robot Puma creado en MATLAB
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
N2=input('\n INGRESE
fprintf('\n El valor
N3=input('\n INGRESE
fprintf('\n El valor
N4=input('\n INGRESE
fprintf('\n ')
de
N2
de
N3
de
N4
N2 (Numero de iteraciones del Segundo Movimiento podria ser 70)') % (\n) se imprime en
= ');
% La variable N2 es el numero de iteraciones
N3 (Numero de iteraciones del Tercer Movimiento podria ser 90)') % (\n) se imprime en
= ');
% La variable N3 es el numero de iteraciones
N4 (Numero de iteraciones del Cuarto Movimiento podria ser 120)') % (\n) se imprime en
= ');
% La variable N4 es el numero de iteraciones
% Con (\n) se imprime en la siguiente linea
la siguiente linea
para el eje Y
la siguiente linea
para el eje X
la siguiente linea
para el eje Y
fprintf('\n El valor
px=input('\n INGRESE
fprintf('\n El valor
py=input('\n INGRESE
fprintf('\n El valor
pz=input('\n INGRESE
fprintf('\n ')
de
px
de
py
de
pz
fprintf('\n El valor
d1=input('\n INGRESE
fprintf('\n El valor
d2=input('\n INGRESE
fprintf('\n El valor
d3=input('\n INGRESE
fprintf('\n El valor
d4=input('\n INGRESE
fprintf('\n El valor
d5=input('\n INGRESE
fprintf('\n El valor
d6=input('\n INGRESE
fprintf('\n El valor
d7=input('\n INGRESE
fprintf('\n El valor
d8=input('\n INGRESE
de
d1
de
d2
de
d3
de
d4
de
d5
de
d6
de
d7
de
d8
d1 (Punto
= ');
d2 (Punto
= ');
d3 (Punto
= ');
d4 (Punto
= ');
d5 (Punto
= ');
d6 (Punto
= ');
d7 (Punto
= ');
d8 (Punto
= ');
inicial del primer movimiento del brazo robotico, puede ser 0.432)')
% Punto inicial del primer movimiento
final del segundo movimiento del brazo robotico, puede ser 0.512)')
% Punto final del primer movimiento
inicial del segundo movimiento del brazo robotico, puede ser -0.15)')
% Punto inicial del segundo movimiento
final del segundo movimiento del brazo robotico, puede ser 0.15)')
% Punto final del segundo movimiento
inicial del tercer movimiento del brazo robotico, puede ser 0.452)')
% Punto inicial del tercer movimiento
final del tercer movimiento del brazo robotico, puede ser 0.502)')
% Punto final del tercer movimiento
inicial del cuarto movimiento del brazo robotico, puede ser 0.15)')
% Punto inicial del cuarto movimiento
final del cuarto movimiento del brazo robotico, puede ser 0.30)')
% Punto final del cuarto movimiento
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k);
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qzz=ikine(robot,T)
plot(robot,qzz)
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
% Limpiamos el Workspace
% Limpiamos el Command Window
% Cerramos todo
puma560;
robot=p560
fprintf('\n
fprintf('\n
fprintf('\n
fprintf('\n
fprintf('\n El valor
N1=input('\n INGRESE
fprintf('\n El valor
N2=input('\n INGRESE
de
N1
de
N2
N1 (Numero de iteraciones del Primer Movimiento podria ser 40)') % (\n) se imprime en la siguiente linea
= ');
% La variable N1 es el numero de iteraciones para el eje X
N2 (Numero de iteraciones del Segundo Movimiento podria ser 70)') % (\n) se imprime en la siguiente linea
= ');
% La variable N2 es el numero de iteraciones para el eje Y
fprintf('\n El valor
N3=input('\n INGRESE
fprintf('\n El valor
N4=input('\n INGRESE
fprintf('\n El valor
N5=input('\n INGRESE
fprintf('\n ')
de
N3
de
N4
de
N5
N3 (Numero de iteraciones del Tercer Movimiento podria ser 90)') % (\n) se imprime en la siguiente linea
= ');
% La variable N3 es el numero de iteraciones para el eje Z
N4 (Numero de iteraciones del Cuarto Movimiento podria ser 120)') % (\n) se imprime en la siguiente linea
= ');
% La variable N4 es el numero de iteraciones para el eje X
N5 (Numero de iteraciones del Quinto Movimiento podria ser 130)') % (\n) se imprime en la siguiente linea
= ');
% La variable N5 es el numero de iteraciones para el eje Y
% 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
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)