Академический Документы
Профессиональный Документы
Культура Документы
PRACTICA N 01
2017 - II
PROYECTO DEL CURSO ANALISIS Y CONTROL DE
ROBOTS
1. DISEO MECANICO
Para la realizacin del brazo de 2GDL se ha decidido usar como material de los
links el acrlico de 4cm de espesor. Las razones de la eleccin de este material
son que este es ligero, presenta un costo relativamente bajo y se adapta a
nuestros requerimientos para el diseo.
Las medidas estimadas para el tamao del brazo son de 13cm x 4cm el primer
link y de 8cm x 4cm para el segundo link, con esto podemos hacer los clculos
para ver el torque mnimo requerido para los motores.
El motor usado para la primera junta tiene que ser un motor que posea un torque
alto para que pueda soportar la estructura de todo el brazo, mediante clculos a
priori que se realiz, se determin que el torque del motor deba ser mayor o
igual a 4Kg-cm.
As tambin se requiere que los motores tengan encoder de 2 canales para que
sea posible poder controlar la posicin del brazo de 2GDL en todo momento. As
mismo se requerir que las RPM que entregaran las cajas reductoras de los
motores sean bajas (menores a 200RPM).
a) LINK 1
d) MOTOR 1
2. CINEMATICA DIRECTA
2.1 DETERMINACIN DE LOS SISTEMAS COORDENADOS
JUNTA i di ai i
1 1 L2 L1 0
2 2 0 L3 0
1
( ) = , . , . , . ,
C . . .
. . .
1
( ) = [ ]
0
0 0 0 1
cos 1 1 0 1 . 1
1 1 0 1 . 1
10 = [ ]
0 0 1 2
0 0 0 1
cos(1 + 2 ) sin(1 + 2 ) 0 3 . (1 + 2 ) + 2 . 1
sin(1 + 2 ) cos(1 + 2 ) 0 3 . (1 + 2 ) + 2 . 1
20 = [ ]
0 0 1 2
0 0 0 1
3. CINEMATICA INVERSA
2 + 2 1 2 3 2
2 = =
21 . 3
1 2
2 = tan1
3 . sin 2
1 = tan1 ( ) tan1 ( )
1 + 3 . cos 2
4. CODIGOS EN MATLAB
disp('Jwcm2: ')
disp(Jwcm2)
%EFECTOR FINAL
disp('Jvf: ')
pretty(simplify(Jvf))
disp('Jwf: ')
disp(Jwf)
4.3 CLASE ROBOT ROBOTICA 2
%----------------------------
% CLASE ROBOT ROBOTICA 2
%---------------------------
classdef robot_ROBO2<handle
%ROBOT PLANAR
properties
%parametros mecanicos
LL1
LL2
LL3
%Parametros DH
d1
a1
alpha1
d2
a2
alpha2
end
%METODOS DE LA CLASE
methods
%Constructor
function this = robot_ROBO2()
%IniciamosParametros D-H valores fijos
this.d2 = 0;
this.alpha1 = 0;
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 = L2 ;
this.a1 = L1 ;
this.a2 = L3 ;
end
%-------------------------------------------------------------
a) CINEMTICA INVERSA
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,-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_star q2_star];
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
T01 = A1;
T02 = A1*A2;
plot_frame(h1, T01);
plot_frame(h2, T02);
pause(0.3)
end
xc=1.5;
yc=1.5;
zc=L2;
%1.2. Ploteo del entorno
T0=eye(4);
plot_frame(T0,'color','k','view','auto')
axis([-2 4 -2 4 0 3])
hold on
grid on
xlabel('x(m)')
ylabel('y(m)')
%Ploteo del punto a alcanzar
plot3(xc, yc, zc, 'ro','MarkerFaceColor', 'k', 'MarkerSize', 10)
%Creamos un objeto robot
my_robot = robot_ROBO2();
my_robot.set_dimensiones(L1, L2, L3)
% 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('angulos')
disp(q)
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)
%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)
%---------------------------------------------------------------
% 5. Lazo de simulacion
% 5.1. Mensaje
disp('Robot del tipo ROBO2 de 2 GDL')
disp('Presione una tecla para empezar simulacion')
pause