Vous êtes sur la page 1sur 12

PROGRAMA DE INGENIERÍA ELECTRÓNICA

UNIDADES TECNOLÒGICAS DE SANTANDER


PROYECTO ASIGNATURA DE ROBÓTICA
ROBOT 6 DOF

M.Sc. Hernando González Acevedo

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

AVANCE DE SEGUNDO CORTE

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.

IMAGEN ESTRUCTURA FÌSICA DEL ROBOT

1098671030 HARRY DAVID GOMEZ VILLAMIZAR


2. Establecer la matriz de Denavit Hartenberg que permita evaluar la cinemática directa del robot.

𝐴𝑖−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;

- Q1=0; Q2=0; Q3=0; Q4=0; Q5=0; Q6=0;


- px=37.4; py=0; pz=63; phi=0; beta=90; alfa=0;

- 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:

% --- Executes on slider movement.


function ALF_set_Callback(hObject, eventdata, handles)
% hObject handle to ALF_set (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global ALF Rango_ALF
Rango_ALF=get(hObject,'Value');
Rango_ALF=round(Rango_ALF);
ALF=Rango_ALF;
set(handles.editalf,'String',Rango_ALF);
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

1098671030 HARRY DAVID GOMEZ VILLAMIZAR


4. Determinar las relaciones matemáticas que permiten evaluar la cinemática inversa del manipulador utilizando
el método de desacoplo cinemático. En el informe se debe incluir los planos que utilizó para determinar las
expresiones de las tres primeras articulaciones, además de las expresiones para los tres grados que definen
la orientación de la muñeca.

1098671030 HARRY DAVID GOMEZ VILLAMIZAR


5. Elaborar una función que permita evaluar en tiempo real el valor correspondiente a cada grado de libertad,
dada una posición (𝑃𝑥, 𝑃𝑦, 𝑃𝑧) y orientación (𝜑, 𝜙, 𝛽) del gripper. utilizando el método de desacoplo cinemático.
Complete la siguiente tabla, con ocho valores que permitan validar el algoritmo de cinemática inversa (dos
valores por cuadrante)

Ángulos Matriz Ángulos - Cinemática Inversa


Q1 Q2 Q3 Q4 Q5 Q6 𝑨𝟎𝟔 Q1 Q2 Q3 Q4 Q5 Q6

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.6716 0.1736 -0.7202 -415.907


0.1184 0.9848 0.1270 73.336
170 43 0 0 0 0 170 43 0 0 0 0
0.7314 0 -0.6820 306.683
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.1422 0.9848 -0.0996 -52.619


0.8067 0.1736 0.5649 298.415
100 0 0 0 55 0 100 0 0 0 55 0
0.5736 0 -0.8192 543.564
0 0 0 1

-0.6330 0.7660 0.1116 -109.804


0.7544 0.6428 -0.1330 130.859
130 0 45 0 55 0 130 0 45 0 55 0
-0.1736 0 -0.9848 347.292
0 0 0 1

0.7071 0 -0.7071 130.815


0 -1 0 0
0 0 45 0 90 0 0 0 45 0 90 0
-0.7071 0 -0.7071 368.119
0 0 0 1

-0.1736 0.9848 0 210.901


0 0 -1 -75.000 10
0 100 0 90 90 0 0 0 90 90 0
-0.9848 -0.1736 0 43.801 0

0 0 0 1

1098671030 HARRY DAVID GOMEZ VILLAMIZAR


6. Determinar las expresiones que permiten evaluar la cinemática inversa del manipulador utilizando el método
numérico.

1098671030 HARRY DAVID GOMEZ VILLAMIZAR


7. Elaborar una función que permita evaluar en tiempo real el valor correspondiente a cada grado de libertad,
dada una posición (𝑃𝑥, 𝑃𝑦, 𝑃𝑧) y orientación (𝜑, 𝜙, 𝛽) del gripper. utilizando el método numérico. Complete la
siguiente tabla, con ocho valores que permitan validar el algoritmo de cinemática inversa (dos valores por
cuadrante)

Ángulos Matriz Ángulos - Cinemática


Inversa
Q Q Q Q Q Q 𝑨𝟎𝟔 Q Q Q Q Q Q
1 2 3 4 5 6 1 2 3 4 5 6
0.8660 0 -0.5000 161.672
0 -1 0 0
0 0 40 80 0 0 0 0 40 80 0 0
-0.5000 0 -0.8660 372.923
0 0 0 1

-0.9254 0.3368 -0.1736 197.878


10 20 0.3420 0.9397 0 0 10 20
0 0 0 0 0 0 0 0
0 0 0 0
0.1632 -0.0594 -0.9848 -30.059
0 0 0 1

-0.4924 0.4132 0.7660 256.625


0.5868 -0.4924 0.6428 215.334
40 0 0 70 0 20 40 0 0 70 0 20
0.6428 0.7660 0 605.000
0 0 0 1

-0.3420 0 -0.9397 24.690

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.9848 0 0.1736 273.024

10 0.1710 0.1736 -0.9698 -72.738 10


0 0 80 0 0 0 0 80 0 0
0 -0.0302 0.9848 0.1710 617.826 0

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

-0.1730 0.9811 -0.0872 -29.197


-0.9848 -0.1736 0 0
0 0 -95 -80 0 0 0 0 -95 -80 0 0
-0.0151 0.0858 0.9962 938.725
0 0 0 1

1098671030 HARRY DAVID GOMEZ VILLAMIZAR


8. Implementar en la herramienta de SimMechanics de Matlab el robot de seis grados de libertad. Para cada
eslabón completar la siguiente tabla:

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]

Dada la tabla anterior se realizó el modelo obteniendo como resultado:

1098671030 HARRY DAVID GOMEZ VILLAMIZAR


9. Evaluar en SimMechanics la cinemática directa del robot de 6 GDL, para cuatro valores diferentes de
movimiento de cada articulación. Verificar que la matriz de orientación y posición que indica la simulación
corresponda a la obtenida por medio del algoritmo de Denavit Hartenberg

𝑸𝟏 𝑸𝟐 𝑸𝟑 𝑸𝟒 𝑸𝟓 𝑸𝟔 𝑨𝑩𝒂𝒔𝒆
𝑮𝒓𝒊𝒑𝒑𝒆𝒓

0 0 0 0 0 0

90 90 -100 90 90 90

45 45 45 45 45 45

170 140 65 175 120 350

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.

Articulación Variable de posición Variable de velocidad Variable de aceleración Torque


𝑸𝟏 35m 5m*s^2 2.5m*s^2 0.23.9 N/m
𝑸𝟐 35m 5m*s^2 2.5m*s^2 4.75 N/m
𝑸𝟑 35m 5m*s^2 2.5m*s^2 -0.12 N/m
𝑸𝟒 35m 5m*s^2 2.5m*s^2 0 N/m
𝑸𝟓 35m 5m*s^2 2.5m*s^2 0 N/m
𝑸𝟔 35m 5m*s^2 2.5m*s^2 0 N/m

Especificaciones del servomotor

1098671030 HARRY DAVID GOMEZ VILLAMIZAR


11. Elaborar una interfaz gráfica que permita
- Cinemática directa. Indicar la posición/orientación del gripper, tomando como referencia el sistema de
coordenadas ubicado en la base del robot. La orientación debe presentarse en forma de matriz de rotación y
utilizando la anotación de los ángulos de Euler RPY.

Cinemática directa (Ángulos de Euler) vs Cinemática Inversa - Desacoplo cinemático

- 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.

Cinemática Directa vs Cinemática Inversa - Método Numérico

1098671030 HARRY DAVID GOMEZ VILLAMIZAR


- La interfaz debe incluir una animación del movimiento del robot, utilizando la función frame. Esta función debe
estar activa para la cinemática directa como la cinemática inversa.

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.

- Mediante la implementación de la herramienta SimMechanics en Matlab y su modelo (simulación) los valores


referidos en la composición del tensor de inercia, centro de gravedad, y dado un perfil de velocidad, mostraron
como resultado la velocidad, aceleración, posición y torque referido en cada eslabón (Q) del brazo 6GDL.

1098671030 HARRY DAVID GOMEZ VILLAMIZAR