ABB IRB 140 CR
Por:
Francisco José Lara Guerrero
Abraham Ruiz Gómez
ABB IRB 140
Robot rotacional de 6 gdl Diseñado especificamente para
aplicaciones industriales Adaptibilidad Posibilidad de comunicarse con
sistemas externos CLEAN ROOM IP 67
NECESIDADES
Introducir robot industrial en aplicaciones médicas
Intervenir quirujircamente una rodilla inmobilizada
SUPONEMOS
Infiltración de rodilla superficial sin
prismatica Rodilla inmobilizada
Robot debe interactuar con una mesa de trabajo donde se situarán las herramientas
¿Por qué IRB 140 CR?
Estructuralmente• Peso “reducido” 98kg• Dimensiones reducidas• Espacio de trabajo amplio• Bajo nivel sonoro <70dB• Consumo reducido <0.44kw a max vel• Baja repetitibilidad 0.03mm• Gran capacidad de carga
¿Por qué IRB 140 CR?
Seguridad• Diseño robusto • Sistema basado en doble circuito
de control• Selección de operación manual o
automática• Doble seta de emergencia
¿Por qué IRB 140 CR?
Otros aspectosOtros aspectos• Fácil de analizar• Control robusto• Rápida respuesta• Sistema flexible• Programación sencilla
Análisis Representación de D-H
Análisis Parametros D-H del robt IRB140CR
Articulación d a
1 1+/2 352mm 70mm +/2
2 2+/2 0 360mm 0
3 3 0 0 +/2
4 4 380mm 0 -/2
5 5 0 0 +/2
6 6 65mm 0 0
Análisis Cinemático
Cinemática directa Algoritmo de
Denavit-Hartenberg
Cinemática inversa Método goemétrico
Análisis Dinámico
Dinámica directa Método de Walker-Orin
Dinámica inversa Método de Newton-Euler
Análisis Dinámico
Distribución de masas:
Análisis Dinámico
Cálculo de la Matriz de Inercia
R
Ix1= Iy + M L2= ¼ M (R2 + 1/3 H2) + M L2
Iy1= Iz + M L2= 1/2 M R2 + M L2 Iz1= Ix + M L2=¼ M (R2 + 1/3 H2) + M L2
Ix1 0 0 1.659 0 0 [I1] = 0 Iy1 0 = 0 1.341 0 0 0 Iz1 0 0 1.66
Análisis Dinámico
Matrizes de inercia I1=[0.0191 0 0;0 0.0191 0;0 0 0.0068]; I2=[0.0031 0 0;0 0.0484 0;0 0 0.0484]; I3=zeros(3,3); I4=[0.0606 0 0;0 0.0053 0;0 0 0.0606]; I5=zeros(3,3); I6=[0.0022 0 0;0 0.0022 0;0 0 0.0014];
Análisis Dinámico
Comprobación:>> q=rand (6,1);>> qp=rand (6,1);>> qpp=rand(6,1);>> m7=3;>> iext= 0.05*eye(3);>> tau=newtoneuler6(q,qp, qpp, 9.8,m7, iext)tau = 0.4470 -82.4079 -34.2172 0.9083 -2.6426 0.0118
>> acel=walkerorin6(q,qp,tau,m7,iext)acel = 0.1389 0.2028 0.1987 0.6038 0.2722 0.1988>> qppqpp = 0.1389 0.2028 0.1987 0.6038 0.2722 0.1988
SELECCIÓN DE SERVOACCIONAMIENTO
S
Partimos de la peor posición:
q=(0 Π/2 -Π/2 0 0 0 )
SELECCIÓN DE SERVOACCIONAMIENTO
S
SELECCIÓN DE SERVOACCIONAMIENTO
S Curvas de pares obtenidas
SELECCIÓN DE SERVOACCIONAMIENTO
S
Articulación 1 2 3 4 5 6
pico (Nm)
x 1.5
0.190.285
1.62.4
0.781.17
0.0390.0585
0.0390.0585
0.0390.0585
nominal (Nm)
x 1.5
0.1080.162
0.040.06
0.0120.018
0.00060.0009
0.00060.0009
0.00060.0009
Reductora con
motor a 5000rpm
1/500 1/500 1/150 1/150 1/75 1/63
Resultados
SELECCIÓN DE SERVOACCIONAMIENTO
S
Articulación Nombre Motor R() L(mH) KT(NM/A) Kv(V/rad/s) Imáx(A)
1 DA23GBB 0.8 0.93 0.058 0.058 18.5
2 DA34HBB 1.6 1.36 0.176 0.176 23.7
3 DA34FBB 0.7 1.01 0.112 0.112 21.8
4 DB17CDB 6.9 1.28 0.035 0.035 3.6
5 DB17CDB 6.9 1.28 0.035 0.035 3.6
6 DB17CDB 6.9 1.28 0.035 0.035 3.6
Comentar que los motores aquí calculados no son reproducción exacta de los servos que incorpora la familia de robots de ABB (AC). En nuestro caso hemos calculado una aproximación con motores DC brushless para poder diseñar y simular un tipo de controlador que haga que el sistema se comporte con la máxima robustez.
SINTONIZADO DE MOTORES
• Con las características del motor de cada articulación
SINTONIZADO DE MOTORES
SINTONIZADO DE MOTORES
Articulación PID Reductor
1 P=100 500
2 P=200 500
3 P=200 D=3 150
4 P=15 D=0.7
150
5 P=20 I=10 D=0.7
75
6 P100 D=2.5 63
SIMULACIÓN
PROGRAMACIÓN
• Paleta de programación
• Controladora
PC
Targetas E/S
Selector de manual/auto
PROGRAMACIÓN
%%% VERSION:1 lANGUAJE:ENGLISH %%% MODULE infiltra PERS tooldata pinza := [TRUE,[[0,0,0],[1,0,0,0]],[5,[9,0,9],[1,0,0,0],0.01,0.01,0.01]]; !Defino todas las herramientas que voy a utilizar más la pinza??! PERS tooldata pinzalapiz := [TRUE,[[0,0,0],[1,0,0,0]],[5.1,[9,0,9],[1,0,0,0],0.01,0.01,0.01]]; PERS tooldata pinzajeringa := [TRUE,[[0,0,0],[1,0,0,0]],[5.1,[9,0,9],[1,0,0,0],0.01,0.01,0.01]]; CONST robtarget P0 := [[],[],[],[]]; CONST robtarget P1 := [[],[],[],[]]; CONST robtarget P2 := [[],[],[],[]]; CONST robtarget P3 := [[],[],[],[]]; CONST robtarget P3 := [[],[],[],[]]; CONST robtarget P4 := [[],[],[],[]]; CONST robtarget P5 := [[],[],[],[]]; CONST robtarget P6 := [[],[],[],[]]; CONST robtarget P7 := [[],[],[],[]]; CONST robtarget P8 := [[],[],[],[]]; CONST robtarget P9 := [[],[],[],[]]; CONST robtarget P9 := [[],[],[],[]];
CONST robtarget P9 :=[[],[],[],[]];
CONST robtarget P10 :=[[],[],[],[]];
...PROC main()
MOVEL P0, v100, z50, pinza;MOVEL P10, v50, z10, pinza;MOVEL MES1, V40, z7.5, pinzalapiz;SET do15;WAITTIME 1;MOVEL P0, V50, z10, pinzalapiz;MOVEC P1, P2, v100, z50, pinzalapiz;MOVEL P3, v60, z10, pinzalapiz;MOVEL P4, V40, z7.5, pinzalapiz;MOVEL P5, V20, z5, pinzalapiz;MOVEL P4, V40, z7.5, pinzalapiz;MOVEL P3, v60, z10, pinzalapiz;MOVEL P7, V40, z7.5, pinzalapiz MOVEL P8, V20, z5, pinzalapiz;MOVEL P7, V40, z7.5, pinzalapiz;MOVEL P3, V60, z10, pinzalapiz;MOVEL P2, V100, z50, pinzalapiz;MOVEc P1, P0, V100, z50, pinzalapiz;MOVEL P10, V50, z10, pinzalapiz;MOVEL MES1, V40, z7.5, pinzalapiz;RESET dO1.5;WAITTIME 1;MOVEL P10, V50, z30, pinza;MOVEL P11, V50, z30, pinza;
PROGRAMA
PROGRAMACIÓN MOVEL MES2, V40, z7.5, pinza; SET dO 1.5; WAITTIME 1; MOVEL P11, V50, z30, pinzajeringa; MOVEL P0, V50, z10, pinzajeringa??; MOVEC P1, P2, v100, z50, pinzajeringa; MOVEL P3, v60, z10, pinzajeringa; MOVEL P4, V40, z5, pinzajeringa; MOVEL P5, V20, fine, pinzajeringa; MOVEL P6, V5, fine, pinzajeringa; !Ahora deberiamos infiltrar la rodilla del paciente con la jeringa
electroneumática, pero como la defino??! !WAITTIME o IF infiltardo = 1 THEN!!aplicar lo mismo si ubieramos
sensores en la pinza de amarre! MOVEL P5, V5, fine, pinzajeringa; MOVEL P4, V40, z5, pinzajeringa; MOVEL P3, v60, z10, pinzajeringa; MOVEL P7, V40, z5, pinzajeringa; MOVEL P8, V20, fine, pinzajeringa; MOVEL P9, v5, fine, pinzajeringa; !Ahora deberiamos infiltrar la rodilla del paciente con la jeringa
electroneumática, pero como la defino??! !WAITTIME o IF infiltardo = 1 THEN!!aplicar lo mismo si tubieramos
sensores en la pinza de amarre! MOVEL P8, V5, fine, pinzajeringa; MOVEL P7, V40, z5, pinzajeringa; MOVEL P3, V60, z10, pinzajeringa; MOVEL P2, V100, z50, pinzajeringa; MOVEc P1, P0, V100, z50, pinzajeringa; MOVEL P11, V50, z10, pinzajeringa; MOVEL MES2, V40, z7.5, pinzalapiz; RESET d01.5; WAITTIME 1; MOVEL P11, V50, z30, pinza; MOVEL P12, V50, z30, pinza; MOVEL MES3, V40, z7.5, pinza; SET dO 1.5; WAITTIME 1;
MOVEL P0, V50, z50, pinza;MOVEC P1, P2, v100, z50, pinza;MOVEL P3, v60, z10, pinza;MOVEL P4, V40, z7.5, pinza;MOVEL P5, V20, z5, pinza;MOVEL P4, V40, z7.5, pinza;MOVEL P3, v60, z10, pinza;MOVEL P7, V40, z7.5, pinza;MOVEL P8, V20, z5, pinza;MOVEL P7, V40, z7.5, pinza;MOVEL P3, V60, z10, pinza;MOVEL P2, V100, z50, pinza;MOVEc P1, P0, V100, z50, pinza;ENDPROCENDMODULE
ASPECTOS DEL ANÁLISIS A COMENTAR
Uso o no de prismática como última articulación.
Singularidades Las evitamos con MoveL y MoveC + espacio de trabajo limitado
Espacio de trabajo limitado a zona de intervención seguridad ante posibles fallos
Acción integral en el PID Simulación 4 articulación
THE END
Para más información consultar
www.abb.com
Top Related