Escolar Documentos
Profissional Documentos
Cultura Documentos
OBJETIVO GENERAL
- Desarrollar los algoritmos para la generación de trayectorias que permitan a un manipulador de cinco o seis
grados realizar un trazado específico
1. Consultar la página web de un fabricante de robots industriales y seleccionar una arquitectura de un robot de
seis grados de libertad. En el informe indicar la referencia del robot y las especificaciones técnicas del robot:
aplicación, rango de movimiento de cada articulación, distancia de cada eslabón y peso máximo que puede
levantar. Anexar una imagen en la cual se indiquen los ejes de giro de cada articulación y el sistema de
coordenadas asociado a cada grado de libertad.
𝐴𝑖−1
𝑖 𝑅𝑜𝑡𝑧(𝜃) 𝑇𝑟𝑎𝑛𝑠𝑙_𝑧(𝑑) 𝑇𝑟𝑎𝑛𝑠𝑙_𝑥(𝑎) 𝑅𝑜𝑡𝑥(𝛼)
A0_1 0 + Q1 L1 0 -90
A1_2 -90 + Q2 0 L2 0
A2_3 0 + Q3 0 0 90
A3_4 0 + Q4 -L3 0 -90
A4_5 0 0 0 -90
A5_6 0 L4 0 0
3. Elaborar una función que permita evaluar en tiempo real la posición y la orientación del manipulador. La
orientación se deber presentar en forma de matriz de rotación y ángulos de Euler RPY.
Desde el software de Matlab, se asignan los valores para cada uno de los ángulos,
longitudes. Se establece la matriz (dh) y se realiza mediante el siguiente código:
clc;
- global L1 L2 L3 L4 L5 Q1 Q2 Q3 Q4 Q5 Q6 dh px py pz phi beta alfa
- L1 = 34.5;
- L2 = 26;
- L3 = 26;
- L4 = 7.5;
- dh = [0 L1 0 -pi/2 0;
o -pi/2 0 L2 0 0;
o 0 0 0 pi/2 0;
o 0 -L3 0 -pi/2 0;
o 0 0 0 -pi/2 0;
o 0 L4 0 0 0];
- A01 = directa(dh(1,:),Qr(1));
- A02 = directa(dh(1:2,:),Qr(1:2));
- A03 = directa(dh(1:3,:),Qr(1:3));
- A04 = directa(dh(1:4,:),Qr(1:4));
- A05 = directa(dh(1:5,:),Qr(1:5));
- A06 = directa(dh(1:6,:),Qr(1:6))
- A0 = eye(4);
- Tam = 3;
- view(3);
- grid on;
- hold on
- frame(A0,'r',Tam);
- plot3([A0(1,4),A01(1,4)],[A0(2,4),A01(2,4)],[A0(3,4),A01(3,4)],'k','LineWidth
',5)
1098671030 HARRY DAVID GOMEZ VILLAMIZAR
- plot3([A01(1,4),A02(1,4)],[A01(2,4),A02(2,4)],[A01(3,4),A02(3,4)],'r','LineWi
dth',5)
- plot3([A02(1,4),A03(1,4)],[A02(2,4),A03(2,4)],[A02(3,4),A03(3,4)],'g','LineWi
dth',5)
- plot3([A03(1,4),A04(1,4)],[A03(2,4),A04(2,4)],[A03(3,4),A04(3,4)],'b','LineWi
dth',5)
- plot3([A04(1,4),A05(1,4)],[A04(2,4),A05(2,4)],[A04(3,4),A05(3,4)],'y','LineWi
dth',5)
- plot3([A05(1,4),A06(1,4)],[A05(2,4),A06(2,4)],[A05(3,4),A06(3,4)],'m','LineWi
dth',5)
- frame(A06,'b',Tam);
Ahora indico los movimientos mediante la función en el código dado para: (Px, Py, Pz)y de los ángulos PHI -
b-6J+CDCCDCCDWDCDWBET - ALF :
PX:
Executes on slider movement.
function PX_set_Callback(hObject, eventdata, handles)
% hObject handle to PX_set (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global PX Rango_PX
Rango_PX=get(hObject,'Value');
Rango_PX=round(Rango_PX);
PX=Rango_PX;
set(handles.editpx,'String',Rango_PX);
calcular_Callback(hObject, eventdata, handles);
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
PY:
% --- Executes on slider movement.
function PY_set_Callback(hObject, eventdata, handles)
% hObject handle to PY_set (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global PY Rango_PY
Rango_PY=get(hObject,'Value');
Rango_PY=round(Rango_PY);
PY=Rango_PY;
set(handles.editpy,'String',Rango_PY);
calcular_Callback(hObject, eventdata, handles);
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
PZ:
% --- Executes on slider movement.
function PZ_set_Callback(hObject, eventdata, handles)
% hObject handle to PZ_set (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global PZ Rango_PZ
Rango_PZ=get(hObject,'Value');
Rango_PZ=round(Rango_PZ);
PZ=Rango_PZ;
set(handles.editpz,'String',Rango_PZ);
1098671030 HARRY DAVID GOMEZ VILLAMIZAR
calcular_Callback(hObject, eventdata, handles);
% Hints: get(hObject,'Value') returns position of slider
PHI:
% --- Executes on slider movement.
function PHI_set_Callback(hObject, eventdata, handles)
% hObject handle to PHI_set (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global PHI Rango_PHI
Rango_PHI=get(hObject,'Value');
Rango_PHI=round(Rango_PHI);
PHI=Rango_PHI;
set(handles.editphi,'String',Rango_PHI);
calcular_Callback(hObject, eventdata, handles);
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
BET
%--- Executes on slider movement.
function BET_set_Callback(hObject, eventdata, handles)
% hObject handle to BET_set (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global BET Rango_BET
Rango_BET=get(hObject,'Value');
Rango_BET=round(Rango_BET);
BET=Rango_BET;
set(handles.editbet,'String',Rango_BET);
calcular_Callback(hObject, eventdata, handles);
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
ALF:
0 0 1 335.000
0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0
1 0 0 605.000
0 0 0 1
0 1 0 0
0.7071 0 0.7071 236.881
90 0 45 0 0 0 90 0 45 0 0 0
0.7071 0 -0.7071 368.119
0 0 0 1
-0.7660 0.6428 0 0
0 0 1 335.000
90 0 0 50 0 0 90 0 0 50 0 0
0.6428 0.7660 0 605.000
0 0 0 1
0 0 0 1
12 0 -1 0 0 12
0 0 0 80 0 0 0 0 80 0
0 -0.9397 0 0.3420 15.485 0
0 0 0 1
0 0 0 1
0.1736 0.9848 0 0
0 0 1 335.000
90 0 0 0 0 10 90 0 0 0 0 10
0.9848 -0.1736 0 605.000
0 0 0 1
-0.8925 0.1736 -0.4162 -139.426
17 0.1574 0.9848 0.0734 24.585 17
0 65 0 0 0 0 65 0 0 0
0 0.4226 0 -0.9063 301.387 0
0 0 0 1
Masa 130.5
[ 13659, 0, 0; 0, 13659,
Tensor de inercia
0; 0, 0, 2175]
Eslabón 1
Ubicación del centro de gravedad [0 0 17]
Ubicación del extremo de la barra CS1 [0 0 0]
Ubicación del extremo de la barra CS2 [0 0 34]
Masa 90
[ 5820, 0, 0; 0, 5820, 0;
Tensor de inercia
0, 0, 1500]
Eslabón 2
Ubicación del centro de gravedad [0 0 47]
Ubicación del extremo de la barra CS1 [0 0 34]
Ubicación del extremo de la barra CS2 [0 0 60]
Masa 70.5
[ 1175, 0, 0; 0, 4559, 0;
Tensor de inercia
0, 0, 4559]
Eslabón 3
Ubicación del centro de gravedad [13 0 60]
Ubicación del extremo de la barra CS1 [0 0 60]
Ubicación del extremo de la barra CS2 [ 26 0 60]
Masa 70.5
Tensor de inercia [ 10250/9, 0, 0; 0,
Eslabón 4 10250/9, 0; 0, 0,
12500/9]
Ubicación del centro de gravedad [30 0 60]
Ubicación del extremo de la barra CS1 [26 0 60]
Ubicación del extremo de la barra CS2 [34 0 60]
𝑸𝟏 𝑸𝟐 𝑸𝟑 𝑸𝟒 𝑸𝟓 𝑸𝟔 𝑨𝑩𝒂𝒔𝒆
𝑮𝒓𝒊𝒑𝒑𝒆𝒓
0 0 0 0 0 0
90 90 -100 90 90 90
45 45 45 45 45 45
10. A partir del modelo del robot de 6 GDL implementado en SimMechanics, determinar el torque requerido por
cada servomotor, al moverse simultáneamente las seis articulaciones. Asumir un perfil de velocidad para cada
articulación, la posición y la aceleración se determinan a partir de la integral y derivada de la señal de
velocidad, respectivamente. Seleccionar el servomotor adecuado para cada articulación, teniendo en cuenta
el torque y la velocidad, obtenidas de la simulación.
- Cinemática inversa. Indicar el valor de los ángulos que se debe mover el robot para que el gripper alcance
una posición dentro del volumen de trabajo del robot. Programar un popmenú para seleccionar el algoritmo
de cinemática inversa: método geométrico o método numérico.
Frame
12. Conclusiones:
- Mediante la elaboración de la función de la Cinemática Inversa, se logró evaluar en tiempo real el valor
correspondiente a cada grado de liberta, dada en una posición Px,Py,PZ y orientada (𝜑, 𝜙, 𝛽) del gripper
haciendo uso del método Desacoplo Cinemático.
- Mediante la elaboración de la función de la Cinemática Inversa, se logró evaluar en tiempo real el valor
correspondiente a cada grado de liberta, dada en una posición Px,Py,PZ y orientada (𝜑, 𝜙, 𝛽) del gripper
haciendo uso del método numérico.
- Se evalúo mediante la herramienta simMechanics la cinemática directa de un robot de 6GDL en cuatro valores
distintos en sus articulaciones, obteniendo la matriz de orientación y posición correspondiente a la simulación
a lo obtenido en el algoritmo de Denavit Hartenberg.