Академический Документы
Профессиональный Документы
Культура Документы
INTEGRANTES:
APELLIDOS Y NOMBRES: CODIGO UNI:
Tabla de contenido
ANÁLISIS CINEMÁTICO DEL MANIPULADOR SCARA.....................................3
CINEMÁTICA DIRECTA.........................................................................................4
SIMULACION EN MATLAB....................................................................................5
GUIDE MATLAB – CODIGO FUENTE..................................................................6
CÓDIGO FUENTE - ARDUINO...............................................................................9
ANALISIS DE RESTRICCIONES Y EL ESPACIO DE TRABAJO.......................10
2
Universidad Nacional de Ingeniería
Facultad de Ingeniería Mecánica
z2
y2
z1
x2 z3
y1 y3
x1
L1 L3
z0 x3
q2
x0 y0
MODELO ESQUEMÁTICO:
L2
L3
MEDIDAS:
3
Universidad Nacional de Ingeniería
Facultad de Ingeniería Mecánica
CINEMÁTICA DIRECTA.
TABLA DE PARAMETROS DENAVIT – HARTENBERG.
Junta θ d a α
1 q1 q2 0 0°
π
2 0 L2 = 15 0°
2
3 q3 0 L3 = 18 0°
I−1
A I =¿
0 0
T 1 ¿ A1
0 0 1
T 2 ¿ A1∗A 2
0 0 1 2
T 2 ¿ A1∗A 2∗A 3
4
Universidad Nacional de Ingeniería
Facultad de Ingeniería Mecánica
%-------------------------------------------------------%
% 2. CINEMATICA
%-------------------------------------------------------%
% 2.1. SISTEMA COORDENADO {1}
theta1 = q1;
d1 = d_1;
a1 = a_1;
alpha1 = alpha_1;
% -> Matriz A1
A1 = matriz_homogenea_DH(theta1,d1,a1,alpha1);
T01 = A1;
% 2.2. SISTEMA COORDENADO {2}
theta2 = 0;
d2 = 0;
a2 = L2;
alpha2 = 0;
% -> Matriz A2
A2 = matriz_homogenea_DH(theta2,d2,a2,alpha2);
T02 = A1*A2;
% 2.3. SISTEMA COORDENADO {3}
theta3 = q3;
d3 = 0;
a3 = L3;
alpha3 = 0;
% -> Matriz A3
A3 = matriz_homogenea_DH(theta3,d3,a3,alpha3);
T03 = T02*A3;
5
Universidad Nacional de Ingeniería
Facultad de Ingeniería Mecánica
%--------------------------------------------------%
% 1. LEEMOS EL VALOR DE LOS ANGULOS (caja de texto)
%--------------------------------------------------%
q1 = get(handles.q1, 'String');
q2 = get(handles.q2, 'String');
q3 = get(handles.q3, 'String');
q1 = str2double(q1); % Esta en sexagesimal
q2 = str2double(q2);
q3 = str2double(q3);
%--------------------------------------------------%
% 2. APLICAMOS LA CALIBRACION
% (Depende como lo han armado)
%--------------------------------------------------%
% 2.1. PARA EL MOTOR 1
q1_motor = q1;
% 2.2. PARA EL MOTOR 2
q2_motor = q2;
% 2.3. PARA EL MOTOR 3
q3_motor = q3;
% 2.4. REDONDEAMOS
q1_motor = round(q1_motor);
q2_motor = round(q2_motor);
q3_motor = round(q3_motor);
fprintf('VALORES A ENVIAR A LOS NEMAS\n');
fprintf(' q1_motor:%d\n', q1_motor);
fprintf(' q2_motor:%d\n', q2_motor);
fprintf(' q3_motor:%d\n', q3_motor);
%--------------------------------------------------%
% 3. ENVIAMOS LOS ANGULOS AL ARDUINO
%--------------------------------------------------%
s1 = handles.puerto;
fwrite(s1,[q1_motor q2_motor q3_motor],'uchar');
6
Universidad Nacional de Ingeniería
Facultad de Ingeniería Mecánica
%--------------------------------------------------%
% 1. LEEMOS EL VALOR DE LOS ANGULOS (caja de texto)
%--------------------------------------------------%
q1 = get(handles.q1, 'String');
q2 = get(handles.q2, 'String');
q3 = get(handles.q3, 'String');
q1 = str2double(q1); % Esta en sexagesimal
q2 = str2double(q2);
q3 = str2double(q3);
%--------------------------------------------------%
% 2. VERIFICAMOS LIMITACIONES FISICAS
%--------------------------------------------------%
% 2.1. PARA EL MOTOR 1 - JUNTA 1
if(q2>85)
fprintf(' q2(cm):%2.4f\n', q2)
errordlg('Fuera de rango, debe ser menor a 15.85cm', 'NEMA 02')
return
end
% 2.2. PARA EL MOTOR 2 - JUNTA 2
if( q1>360)
fprintf(' q1(sexa):%2.4f\n', q1)
errordlg('Fuera de rango (0°,360°)', 'NEMA 01')
return
end
% 2.3. PARA EL MOTOR 3 - JUNTA 3
if( q3>100)
fprintf(' q1(sexa):%2.4f\n', q3)
errordlg('Fuera de rango (0°,100°)', 'NEMA 03')
return
end
%--------------------------------------------------%
% 3. HALLAMOS LA CINEMATICA
%--------------------------------------------------%
% 3.1. CONVERTIMOS LOS ANGULOS A RADIANES
q1 = q1*pi/180;
q2 = q2+0; % ES VARIABLE DE LONGITUD
q3 = q3*pi/180;
%--------------------------------------------------%
% 4. PONEMOS EL RESULTADO EN LA CAJA DE TEXTO
%--------------------------------------------------%
set(handles.x, 'String',round(xx*1000)/1000);
set(handles.y, 'String',round(yy*1000)/1000);
7
Universidad Nacional de Ingeniería
Facultad de Ingeniería Mecánica
TAG: q1 TAG:
botón_cinemat
TAG:
botón_enviar
TAG: q2
TAG: q3
TAG: z
TAG: x TAG: y
c
Archivo del
código Matab:
C_Directa_Ma
8
Universidad Nacional de Ingeniería
Facultad de Ingeniería Mecánica
9
Universidad Nacional de Ingeniería
Facultad de Ingeniería Mecánica
10
ANÁLISIS DE RESTRICCIONES Y EL ESPACIO DE
TRABAJO
RESTRICCIONES
La altura del robot escara no podrá alcanzar una distancia mayor a 15cm en la
dirección Z.
WORKSPACE
CINEMÁTICA INVERSA