Escolar Documentos
Profissional Documentos
Cultura Documentos
AUTORES
MORGAN G. VÁSQUEZ
JOAN CARLES PUCHALT
ELIO LÜTHI
INTRODUCCIÓN
1. OBJETIVOS
5. INTERFAZ GRÁFICA
6. CONCLUSIONES
BIBLIOGRAFÍA
ANEXO
INTRODUCCIÓN
Los datos sobre las dimensiones del robot y sus articulaciones se pueden
encontrar en la web de KUKA [2].
Basándonos en los datos del robot que ofrece el fabricante, hemos asignado
una posición de reposo. A partir de ésta, realizaremos un modelo del robot
representado por líneas mediante Matlab.
Esto se obtiene con la implementación de funciones que permiten dibujar,
modificar (tanto la longitud como la posición de los elementos que componen el
robot) y asignar las respectivas articulaciones según los parámetros de
Denavit-Hartenberg (D-H) establecidos que podremos ver en el apartado 2.1.
A3 Detalle A
A1
A2
A4
A6
A5
Figura 4. Detalle A.
2.1. DESCRIPCIÓN DEL MODELO CINEMÁTICO DEL ROBOT
En la siguiente figura podremos ver el modelo del robot con cada uno de sus
respectivos ejes coordenados.
Estos objetos se han creado por medio de las funciones que hemos utilizado
anteriormente para el modelo del robot, con la diferencia de que no se basan
en una matriz de D-H, sino en la creación de líneas según la longitud y
posición, para obtener la forma del objeto que deseamos construir.
1 0 0 0
0 1 0 0
Ab
0 0 1 700
0 0 0 1
cos(q3) 0 sin(q3) 0
sin(q3) 0 cos(q3) 0
2
A3
0 1 0 0
0 0 0 1
cos(q 4) 0 sin(q 4) 0
sin(q 4) 0 cos(q 4) 0
3
A4
0 1 0 1500
0 0 0 1
cos(q5) 0 sin(q5) 0
sin(q5) 0 cos(q5) 0
4
A5
0 1 0 0
0 0 0 1
cos(q 6) sin(q 6) 0 0
sin(q6) cos(q6) 0 0
5
A6
0 0 1 230
0 0 0 1
6
AH
c6*(c5*(s1*s4 + c4*(c1*c2*c3 - c1*s2*s3)) + s5*(c1*c2*s3 + c1*c3*s2)) -
s6*(c4*s1 - s4*(c1*c2*c3 - c1*s2*s3)), c6*(c4*s1 - s4*(c1*c2*c3 - c1*s2*s3)) +
s6*(c5*(s1*s4 + c4*(c1*c2*c3 - c1*s2*s3)) + s5*(c1*c2*s3 + c1*c3*s2)),
c5*(c1*c2*s3 + c1*c3*s2) - s5*(s1*s4 + c4*(c1*c2*c3 - c1*s2*s3)), 750*c1 +
1250*c1*c2 - 230*s5*(s1*s4 + c4*(c1*c2*c3 - c1*s2*s3)) + 230*c5*(c1*c2*s3 +
c1*c3*s2) + 1500*c1*c2*s3 + 1500*c1*c3*s2;
0, 0, 0, 0, 1]
c1* s 2* s3 c1* c2* c3 s1 c1* c2* s3 c1* s2* c3 1250* c1* c2 750* c1
s1* s 2* s3 s1* c2* c3 c1 s1* c2* s3 s1* s 2* c3 1250* s1* c2 750* s1
T1 A3
0
c 2* s3 s 2* c3 0 s 2* s3 c2* c3 1250* s 2
0 0 0 1
a = 0 Z6
0
Z6 Es el vector Z del SC 6 respecto a 0 (en este caso el SC fijo)
ΔP = d6 · 0Z6
𝑃𝑚 = 0𝑃6 − 𝑑 · 0𝑍6
𝑃𝑟 = 𝑃𝑥 2 + 𝑃𝑦 2
a
a
ß
x
H
𝐻= 𝑃𝑧 − d1 2 + 𝑃𝑟 − d2 2
Es sencillo calcular β
Pz d1
a tan( )
PR d 2
Tenemos dos triángulos rectángulos, relacionados por un lado y con lo que
conseguimos un sistema de 2 ecuaciones y dos incógnitas (resoluble)
𝑑32 = 𝑎2 + 𝑥 2
𝑑42 = 𝑎2 + (𝐻 − 𝑥)2
x
cos x d3 *cos
d3
d 23 a 2 x 2 a 2 d 23 x 2
d 24 d 23 x2 H 2 2* H * x x2
d 24 d 33 P2 z P2 y P2 x 2* H * d3 *cos
Obteniendo:
d 23 H 2 d 2 4
cos
2* d3 * H
a ?
ß
d3·Cosa
d4·Cos?
H
Esta última articulación será el ángulo que forma ella misma con la anterior.
Ahora buscaremos el ángulo gamma.
𝐻 − 𝑑3 · 𝐶𝑜𝑠 𝛼
𝛾 = 𝑎𝑟𝑐𝑜𝑠
𝑑4
a ?
ß
d3·Cosa
d4·Cos?
H
𝐻 < 𝑑3 + 𝑑4
% Cuidado esta función depende de como se defina el modelo del robot (Tabla DH)
% posicio;
q_1 = atan2(P(2),P(1));
q_arb(1) = q_1;
q_abj(1) = q_1;
%% Articulacio 2
PR=sqrt(P(2)^2+P(1)^2);
H=sqrt((PR-d2)^2+(P(3)-d1)^2);
if H>(d3+d4)
warndlg('Punto Fuera de Alcance. No se puede llegar a esa
distancia','Peligro')
end
alpha=acos((d3^2+H^2-d4^2)/(2*d3*H));
beta=atan2(P(3)-d1,PR-d2);
q_arb(2)=alpha+beta;
q_abj(2)=-alpha+beta;
%% Articulacio 3
gamma=acos((H-d3*cos(alpha))/d4);
q_arb(3)=-alpha-gamma+pi/2;
q_abj(3)=-q_abj(2)+beta+gamma+pi/2;
A03=dh(robot,0,0)*dh(robot,1,q3(1))*dh(robot,2,q3(2))*dh(robot,3,q3(3
));
R03=rotacion(A03);
q1(1)=atan2(R36(2,3),R36(1,3));
q1(2)=acos(R36(3,3));
q1(3)=atan2(R36(3,2),R36(3,1));
q2(1)=q1(1)-pi;
q2(2)=q1(2);
q2(3)=q1(3)-pi;
3
R6 3R4 * 4 R5 * 5 R6
3
𝑅6 2,3
𝑞1 1 = atan
(3 )
𝑅6 1,3
( 3𝑅6 3,3 )
𝑞1 2 = acos
3
𝑅6 3,2
𝑞1 3 = atan
(3 )
𝑅6 3,1
3
Y como conocemos los valores numéricos de la matriz 𝑅6 , gracias a la
ecuación:
𝑃𝑚 = 0𝑃6 − 𝑑 · 0𝑍6
A03=dh(robot,0,0)*dh(robot,1,q3(1))*dh(robot,2,q3(2))*dh(robot,3,q3(3));
R03=rotacion(A03);
3
𝑅6 = 𝑅36
Por último está la suma de las dos, que ésta además se asegura de que sólo
aparezcan los resultados con solución
R06=rotacion(matriz);
p6=pos(matriz);
z6=zeta(matriz);
d6=-rob(7,3);
p45=p6-d6*z6;
[q_izd, q_der]=ciKR120_0_3(rob,p45);
q1(1,:)=[q_izd q_i1];
q1(2,:)=[q_izd q_i2];
q1(3,:)=[q_der q_d1];
q1(4,:)=[q_der q_d2];
if ((p6min<xyz)&(xyz<p6max))
q(k,:)=q1(i,:);
k=k+1;
end
end
if q(1,1)==10
warndlg('No existe ninguna solución')
end
return
5. INTERFAZ GRÁFICA
También nos hemos sorprendido por el gran potencial que puede ofrecer el
programa Matlab, el cual no nos ha dado limitaciones con estos principios de
robótica.
[2] http://www.kuka-
robotics.com/spain/es/products/industrial_robots/high/kr120_2_p/