Beruflich Dokumente
Kultur Dokumente
ALUMNOS:
2017-II
OBJETIVO GENERAL: Diseñar e implementar un brazo robótico de 2 grados de libertad
FUNDAMENTO TEÓRICO
CINEMÁTICA DE UN ROBOT
La cinemática del robot estudia el movimiento del mismo con respecto a un sistema de
referencia. Así, la cinemática se interesa por la descripción analítica del movimiento
espacial del robot como una función del tiempo, y en particular por las relaciones entre
la posición y la orientación del extremo final del robot con los valores que toman sus
coordenadas articulares.
Existen dos problemas fundamentales a resolver en la cinemática del robot; el primero
de ellos se conoce como el problema cinemático directo, y consiste en determinar cuál
es la posición y orientación del extremo final del robot, con respecto a un sistema de
coordenadas que se toma como referencia, conocidos los valores de las articulaciones y
los parámetros geométricos de los elementos del robot; el segundo, denominado
problema cinemático inverso, resuelve la configuración que debe adoptar el robot para
una posición y orientación del extremo conocidas.
REPRESENTACIÓN DENAVIT-HARTENBERG
2. DESCRIPCIÓN DE COMPONENTES
- Chumacera KP08
Diseño en Solidworks
Diseño en Solidworks
- Brazo robótico
Diseño en Solidworks
Fig. 13 Acople NC
Plano del NC
Motor 1 (alternativa 1)
Como se muestra la distancia de X, Y, Z son muy pequeños lo que garantiza que este
cerca del centro del eje vertical.
3. CINEMÁTICA DIRECTA
■ Matrices 𝐴𝑖−1
𝑖
𝐶1 0 −𝑆1 0 𝐶2 −𝑆2 0 𝐿3 𝐶2
𝑆 0 𝐶1 0 1 𝑆 𝐶2 0 𝐿3 𝑆2
𝐴10 = [ 1 ] 𝐴2 = [ 2 ]
0 −1 0 𝐿1 0 0 1 𝐿2
0 0 0 1 0 0 0 1
𝜃1 = 𝛽 − 𝛼
Donde el valor de 𝛼 es:
𝑥𝑐
𝛼 = tan−1
𝑦𝑐
−1
𝐿3 ∗ cos 𝜃2 −1
√𝑟 2 − 𝐿2 2
𝛽 = tan = tan
𝐿2 𝐿2
Donde:
𝑟 2 = 𝑥𝑐 2 + 𝑦𝑐 2
Por lo tanto:
√𝑥𝑐 2 + 𝑦𝑐 2 − 𝐿2 2 𝑥𝑐
𝜃1 = tan−1 − tan−1
𝐿2 𝑦𝑐
𝐿3 ∗ cos 𝜃2
%----------------------------------------------------------------------%
% 1. DEFINICION DE VARIABLES SIMBOLICAS
%----------------------------------------------------------------------%
syms theta1 d1 a1 alpha1
syms theta2 d2 a2 alpha2
syms q1 q2
syms L1 L2 L3
d1=L1;
alpha1=-pi/2;
a1=0;
A1=matriz_homogenea_DH(q1,d1,a1,alpha1);
%2.4 PLOTEAMOS EL SISTEMA COORDENADO
T01=A1;
disp('T01')
disp(T01)
h1=plot_frame(T01,'frame',2,'color','b');
%2. SISTEMA COORDENADO 2
%2.1 DEFINICION DE PARAMETROS
%q2=0;
d2=L2;
a2=L3;
alpha2=0;
A2=matriz_homogenea_DH(q2,d2,a2,alpha2);
%2.4 PLOTEAMOS EL SISTEMA COORDENADO
T02=A1*A2;
disp('T02')
disp(T02)
h2=plot_frame(T02,'frame',2,'color','m');
6.3 Código cinemática inversa numérico (CINEMATICA_INVERSA_ANIMADA.m)
%SIMULACION DE CINEMATICA%
%------------------------%
% 1. Configuracion inicial
% 2. Parametros Mecanicos del Robot
clc; clear all; close all;
%LONGITUDES en decímetros
L1=1.0;
L2=1.1;
L3=1.1;
%Entrada posición final
xc=input('Ingrese la coordenada x de la posicion final: ');
yc=input('Ingrese la coordenada y de la posicion final: ');
zc=input('Ingrese la coordenada z de la posicion final: ');
pause()
% 3. Cinematica Inversa
%3.1. USAMOS EL METODO "Cinematica inversa"
q = my_robot.cinematica_inversa_ROBO2(xc, yc, zc);
q1d = q(1);
q2d = q(2);
%3.2. SALIDAs
disp('Ángulos en radianes: ')
disp(q)
disp('Ángulos en sexagesimales: ')
disp(q*180/pi)
%---------------------------------------------
%4. Configuracion Incial del Robot
%4.1. Eslabon 1
% -> Hallamos A1
theta1=0;
A1 = my_robot.compute_matrix_A1(theta1);
% -> Ploteamos T01
T01 = A1;
h1 = plot_frame(T01, 'frame', '1', 'color', 'b');
%disp('T01')
%disp(T01)
%4.2. Eslabon 2
theta2 = 0;
A2 = my_robot.compute_matrix_A2(theta2);
T02 = T01*A2;
%4.3 Ploteamso T02
h2 = plot_frame(T02, 'frame', '2', 'color', 'r');
%disp('T02')
%disp(T02)
%---------------------------------------------------------------
% 5. Lazo de simulacion
% 5.1. Mensaje
disp('Robot de 2 GDL')
disp('Presione una tecla para empezar simulacion')
pause
% D. Delta de Tiempo
pause(0.001)
end
%MATRICES HOMOGENEAS DE TRANSFORMACIÓN
disp('Matriz Homogénea T01')
disp(T01)
disp('Matriz Homogénea T02')
disp(T02)
6.4 Código clase robot2_Proyecto (robot2_Proyecto.m)
%----------------------------
% CLASE ROBOT ROBOTICA 2
%---------------------------
classdef robot2_Proyecto<handle
%ROBOT
properties
%parametros mecanicos
LL1
LL2
LL3
%Parametros DH
d1
a1
alpha1
d2
a2
alpha2
end
%METODOS DE LA CLASE
methods
%Constructor
function this = robot2_Proyecto()
%IniciamosParametros D-H valores fijos
this.a1 = 0;
this.alpha1 = -pi/2;
this.alpha2 = 0;
end
%--------------------------------------------------------------
function set_dimensiones(this, L1, L2, L3)
%Metodos para poner dimensiones
this.LL1 = L1;
this.LL2 = L2;
this.LL3 = L3;
% Poner los paremetros DH que faltan
this.d1 = L1 ;
this.d2= L2;
this.a2 = L3;
end
%-----------------------------------------------------------------
function q = cinematica_inversa_ROBO2(this, xc, yc, zc)
%Metodo para la cinematica inversa
L1=this.LL1;
L2=this.LL2;
L3=this.LL3;
D=(L1-zc)/L3;
E=sqrt(xc^2+yc^2);
if (D>1 || D<-1 || E>sqrt(L2^2+L3^2) )
error('POSICION IMPOSIBLE DE ALCANZAR')
else
%ANGULO "theta2"
q2_start = asin(D);
alfa=atan2(L3*cos(q2_start),L2);
%r=sqrt(L2^2+(L3*cos(q2_start))^2);
q1_start=alfa-atan2(xc,yc);
% num=(xc^2+yc^2-L1^2-L3^2);
% den=(2*L1*L3);
% D=num/den;
% if(D>1 || D<-1)
% error('POSICION IMPOSIBLE DE ALCANZAR')
% else
% %ANGULO "theta2"
% q2_star = atan2(+sqrt(1-D^2),D); %dos soluciones codo arriba +
; codo abajo -
% %ANGULO "theta1"
% num1=L3*sin(q2_star);
% den1=L1+L3*cos(q2_star);
% q1_star= atan2(yc,xc)- atan2(num1,den1);
%Vector de Angulos
q=[q1_start q2_start];
end
end
%-------------------------------------------------------------------
function A1=compute_matrix_A1(this,theta1)
% Metodo para hallar A1
A1 = matriz_homogenea_DH(theta1, this.d1, this.a1,this.alpha1);
end
PARTE SUPERIOR:
PARTE INFERIOR: