Está en la página 1de 26

UNIVERSIDAD NACIONAL DE INGENIERÍA

FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA


Especialidad Ingeniería de Telecomunicaciones

Laboratorio de Robótica Industrial – EE672M


MOVIMIENTO DE BRAZO ROBÓTICO MEDIANTE MATLAB-
ARDUINO CON NOTIFICACIONES SMS

ALUMNO:
CACHICATARI LICAS, Michael Joseph 20181438H
LLAJA CABEZAS, Jhon Jairo 20181162B
LLAMACPONCCA PALOMINO, Héctor 20181015J

DOCENTE:
PISCOYA SILVA, Ulises
Lima, Perú
5/06/2023
● INTEGRANTES:

● INTRODUCCIÓN:
Denavit-Hartenberg propusieron en 1955 un método matricial que permite establecer de manera sistemática un
sistema de coordenadas (Si) ligado a cada eslabón i de una
cadena articulada, pudiéndose determinar a continuación las ecuaciones cinemáticas de la cadena completa.
Según la representación D-H, escogiendo adecuadamente los sistemas de coordenadas asociados para cada
eslabón, será posible pasar de uno al siguiente mediante 4
transformaciones básicas que dependen exclusivamente de las características geométricas del eslabón.
Estas transformaciones básicas consisten en una sucesión de rotaciones y traslaciones que permitan relacionar el
sistema de referencia del elemento i con el sistema del
elemento i-1. Las transformaciones en cuestión son las siguientes:
Rotación alrededor del eje Zi-1 un ángulo θi.
Traslación a lo largo de Zi-1 una distancia di; vector di ( 0,0,di ).
Traslación a lo largo de Xi una distancia ai; vector ai ( 0,0,ai ).
Rotación 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:

Donde θi, ai, di, αi, son los parámetros D-H del eslabón 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-1 Ai,
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 definición de los 4 parámetros de Denavit-Hartenberg, conforman el
siguiente algoritmo para la resolución del problema cinemático directo:

El robot PUMA (P rogrammable U niversal M achine for Assembly , o P rogrammable U niversal


M anipulation Arm) es un brazo robot industrial desarrollado por Victor Scheinman en la empresa pionera en
robótica Unimation. Inicialmente desarrollado para General Motors, el brazo robot PUMA nació de los diseños
iniciales inventados por Scheinman mientras se encontraba en el MIT y en la Stanford University. Unimation
produjo PUMA’s durante algunos años hasta que fue absorbida por Westinghouse, y posteriormente por la
empresa suiza Stäubli. Nokia Robotics manufacturó cerca 1500 brazos robots PUMA durante los años 1980,
siendo el PUMA-560 el modelo más popular entre los clientes. Nokia vendió su división de robótica en 1990. En
2002 la organización General Motors Controls, Robotics and Welding (CRW) donó el prototipo original del
brazo robot PUMA al Museo Nacional de Historia Americana, reconociéndose así su importancia en el
desarrollo de la robótica

● EQUIPOS Y MATERIALES:
- Matlab
- Robotics Toolbox - Peter Corke.

● DESCRIPCIÓN DEL LABORATORIO:


Como extra añadimos el análisis de la dinámica directa e inversa del robot Puma 560

● PROCEDIMIENTO:
○ Cinemática Directa con la matriz Denavit Hartenberg
Para la representacion Denavit-hartenberg en Cinematica Directa se requieren 4
parámetros: a(i), alfa(i), teta(i), d(i)
• 2 relativos a la forma y tamaño del eslabón: a(i), alfa(i)
• 2 describen posición relativa del eslabón respecto a su predecesor*:
teta(i), d(i)
Los parámetros de forma y tamaño quedan determinados en tiempo de diseño
Los parámetros de posición relativa varían
• teta(i) es variable si la rotación es articular (d(i) Constante)
• d(i) variable si la rotación es prismática (teta(i) Constante)

*En notación Craig es respecto al eslabón sucesivo a(i-1), alfa(i-1), teta(i),


d(i)

El archivo DENAVIT_MATRIZ demuestra la funcionalidad de la Matriz de


transformación homogénea del método DENAVIT-HARTENBERG.

A partir de los parámetros de Denavit-Hartenberg (teta, d, a, alfa) se cuenta


con cuatro matrices principales
De rotación 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
Igualmente se tiene la matriz B que es la representacion directa del metodo
DENAVIT-HARTENBERG

teta : ángulo existiría entre las líneas normales de la articulación 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 eslabón) distancia entre ejes i, i+1 de las articulaciones a lo
largo de la perpendicular común
alfa :(ángulo torsión) ángulo que existiría entre ejes i,i+1 si se cortasen en
punto de corte de la perpendicular común

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]

clc; clear;
l(1)=Link([0, 0, 0, pi/2, 0]);
l(2)=Link([0, 0, 0.4318, 0, 0]);
l(3)=Link([0, 0.15, 0.0203, -pi/2, 0]);
l(4)=Link([0, 0.431, 0, pi/2, 0]);
l(5)=Link([0, 0, 0, -pi/2, 0]);
l(6)=Link([0, 0, 0, 0, 0]);
puma=SerialLink(l, 'name', 'Puma560');
puma.plot([0,0,0,0,0,0]);
puma
mdl_puma560
p560.teach()
○ Líneas del algoritmo del archivo: PUMA560_EJEMPLO_1A
Archivo PUMA560_EJEMPLO_1A que se ejecuta necesariamente con la funcion ikine
del Toolbox Robotic de MATLAB
De acuerdo a la programación el sistema se moverá 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 variación de cada articulación 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 será el número de iteraciones (Velocidad de movimiento) y cada


línea de programación con el comando:
linspace(d1,d2,N) será las unidades de cantidad de movimiento a ser realizado

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)

○ Líneas del algoritmo del archivo: PUMA560_EJEMPLO_1B


Archivo PUMA560_EJEMPLO_1B que se ejecuta necesariamente con la función ikine
del Toolbox Robotic de MATLAB
De acuerdo a la programación el sistema se moverá 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 variación de cada articulación 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 será el número de iteraciones (Velocidad de movimiento) y cada


línea de programación con el comando:
linspace(d1,d2,N) será las unidades de cantidad de movimiento a ser realizado

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)

○ Líneas del algoritmo del archivo: PUMA560_EJEMPLO_2A


Archivo PUMA560_EJEMPLO_2A que se ejecuta necesariamente con la funcion ikine
del Toolbox Robotic de MATLAB
De acuerdo a la programación el sistema se moverá 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 variación de cada articulación 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 será el número de iteraciones (Velocidad de movimiento) y cada


línea de programación con el comando:
linspace(d1,d2,N) será las unidades de cantidad de movimiento a ser realizado

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)
○ Líneas del algoritmo del archivo: PUMA560_EJEMPLO_3A
Archivo PUMA560_EJEMPLO_3A que se ejecuta necesariamente con la función ikine
del Toolbox Robotic de MATLAB
De acuerdo a la programación el sistema se moverá 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 variación de cada articulación 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 será el número de iteraciones (Velocidad de movimiento) y cada


línea de programación con el comando:
linspace(d1,d2,N) será las unidades de cantidad de movimiento a ser realizado
Las variables d serán los puntos iniciales y finales de cada movimiento a ser
realizado

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)
○ Líneas del algoritmo del archivo: PUMA560_EJEMPLO_4A
Archivo PUMA560_EJEMPLO_4A que se ejecuta necesariamente con la función ikine
del Toolbox Robotic de MATLAB
De acuerdo a la programación el sistema se moverá 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 variación de cada articulación 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 serán el número de iteraciones (Velocidad de movimiento) y


cada línea de programación con el comando:
linspace(d1,d2,N) serán las unidades de cantidad de movimiento a ser realizado
Las variables d serán los puntos iniciales y finales de cada movimiento a ser
realizado
Las variables N y las variables d podrán ser ingresadas individualmente desde
el Command Window

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)

○ Líneas del algoritmo del archivo: PUMA560_EJEMPLO_4B


Archivo PUMA560_EJEMPLO_4B que se ejecuta necesariamente con la función ikine
del Toolbox Robotic de MATLAB
De acuerdo a la programación el sistema se moverá 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 variación de cada articulación 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 será el número de iteraciones (Velocidad de movimiento) y cada


línea de programación con el comando:
linspace(d1,d2,N) será las unidades de cantidad de movimiento a ser realizado

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)
● BIBLIOGRAFIA:
[1] Craig, J. J. (2006). Robótica (3ra Edición). Pearson Education
[2] Toolbox de Peter Corke: https://petercorke.com/toolboxes/robotics-toolbox/
[3] STARLOGY, +51 910 813 048

También podría gustarte