crea robot con matlab

10
1 M.Sc. Ricardo Rodríguez Bustinza Creación de un Robot con MATLAB Vamos a tomar un ejemplo simple de un manipulador planar de dos eslabones (ver Figura) el cual tiene los siguientes parámetros (estándar) de eslabones de DenavitHartenberg. Donde hemos puesto la longitud de los eslabones en 1. Ahora podemos crear un par de objetos de eslabón: path(path,'C:\Documents and Settings\Mis documentos\MATLAB\robot71'); L{1}=link([0 1 0 0 0]); % L = % 0.000000 1.000000 0.000000 0.000000 R L{2}=link([0 1 0 0 0]); % L2 = % 0.000000 1.000000 0.000000 0.000000 R r=robot(L,'D2') % r = % % noname (2 axis, RR) % grav = [0.00 0.00 9.81] standard D&H parameters % alpha A theta D R/P % 0.000000 1.000000 0.000000 0.000000 R % 0.000000 1.000000 0.000000 0.000000 R plot(r, [0 0])

Upload: andre-montenegro

Post on 24-Jun-2015

1.343 views

Category:

Engineering


4 download

DESCRIPTION

good

TRANSCRIPT

Page 1: Crea robot con matlab

1  

M.Sc. Ricardo Rodríguez Bustinza  

Creación de un Robot con MATLAB 

 

Vamos a tomar un ejemplo simple de un manipulador planar de dos  eslabones  (ver  Figura)  el  cual  tiene  los  siguientes parámetros (estándar) de eslabones de Denavit‐Hartenberg.  

  

  

Donde hemos puesto  la  longitud de  los eslabones en 1. Ahora podemos crear un par de objetos de eslabón: 

path(path,'C:\Documents and Settings\Mis documentos\MATLAB\robot71'); L{1}=link([0 1 0 0 0]); % L = % 0.000000 1.000000 0.000000 0.000000 R L{2}=link([0 1 0 0 0]); % L2 = % 0.000000 1.000000 0.000000 0.000000 R r=robot(L,'D2') % r = % % noname (2 axis, RR) % grav = [0.00 0.00 9.81] standard D&H parameters % alpha A theta D R/P % 0.000000 1.000000 0.000000 0.000000 R % 0.000000 1.000000 0.000000 0.000000 R plot(r, [0 0])

Page 2: Crea robot con matlab

2  

M.Sc. Ricardo Rodríguez Bustinza  

 

Las  primeras  líneas  crean  los  objetos  de  eslabones,  uno  por cada eslabón del robot. Note el segundo argumento de link el cual especifica que la  convención estándar de D&H será usada (ésta es por defecto). Los argumentos del objeto de eslabones pueden encontrarse de  >> help link LINK create a new LINK object A LINK object holds all information related to a robot link such as kinematics of the joint, rigid-body inertial parameters, motor and transmission parameters. LINK LINK(link) Create a default link, or a clone of the passed link. A = LINK(q) Compute the link transform matrix for the link, given the joint variable q. LINK([alpha A theta D sigma]) LINK(DH_ROW) create from row of legacy DH matrix LINK(DYN_ROW) create from row of legacy DYN matrix

Page 3: Crea robot con matlab

3  

M.Sc. Ricardo Rodríguez Bustinza  

La cual muestra el orden en que los parámetros de link deben suministrarse (el cual es diferente al orden de las columnas de la tabla de arriba). El quinto argumento, sigma, es una bandera que  indica si  la unión es rotativa (sigma es cero) o prismática (sigma diferente de cero).  Los  objetos  de  link  se  pasan  como  un  arreglo  a  la  función robot() la cual crea un objeto robot el cual se pasa a muchas de las otras funciones de la caja de herramientas.  Problema de la Cinemática Directa  Encuentre  la  solución  completa  del  problema  mediante  la  cinemática directa para un robot cilíndrico de la figura.  

  

Solución  En primer lugar se localizan los sistemas de referencia de cada una de  las  articulaciones del  robot  figura. Posteriormente  se determinan  los parámetros de Denavit‐ Hartenberg del robot, con los que se construye la siguiente tabla. 

Page 4: Crea robot con matlab

4  

M.Sc. Ricardo Rodríguez Bustinza  

 

   % alpha a theta d R/P L1 = link([0 0 0 1 0]); D2 = link([pi/2 0 pi/2 1 1]); D3 = link([0 0 0 1 1]); L4 = link([0 0 0 1 0]); rob = robot({L1 D2 D3 L4},'ROBCIL') plot(rob, [0 0 0 0]) view(-19,68)

Una  vez  creado  el  robot  se  realiza  la  solución  completa  al problema  cinemático  directo  con  la  función  fkine:  Para  unas coordenadas de las articulaciones de cero, tenemos:  % Cinematica Directa q1=[0 0 0 0]; q2=[0 1 1 0]; T1f=fkine(rob,q1); % T1 = % 0.0000 -0.0000 1.0000 1.0000 % 1.0000 0.0000 -0.0000 -0.0000 % 0 1.0000 0.0000 1.0000 % 0 0 0 1.0000 T2f=fkine(rob,q2); % T2 =

Page 5: Crea robot con matlab

5  

M.Sc. Ricardo Rodríguez Bustinza  

% 0.0000 -0.0000 1.0000 2.0000 % 1.0000 0.0000 -0.0000 -0.0000 % 0 1.0000 0.0000 2.0000 % 0 0 0 1.0000

Usaremos el Toolbox de Matemática Simbólica para manipular el movimiento de las articulaciones del robot cilíndrico.  syms q1 q2 d2 d3 real l1=0.5; q1=0; T01=[cos(q1) -sin(q1) 0 0 sin(q1) cos(q1) 0 0 0 0 1 l1 0 0 0 1]; d2=1; T12=[0 0 1 0 1 0 0 0 0 1 0 d2 0 0 0 1]; d3=1.5; T23=[1 0 0 0 0 1 0 0 0 0 1 d3 0 0 0 1]; l4=1; q4=0; T34=[cos(q4) -sin(q4) 0 0 sin(q4) cos(q4) 0 0 0 0 1 l4 0 0 0 1]; T04=T01*T12*T23*T34;

 

  

Page 6: Crea robot con matlab

6  

M.Sc. Ricardo Rodríguez Bustinza  

Otros movimientos del robot cilíndrico  

  Problema de la Cinemática Inversa  Para encontrar  la  solución al problema  cinemático  inverso  se usa  la  función  ikine  aunque  la  solución  se  lleva  un  tiempo inaceptable para controlar robots reales. Por ejemplo:  Usando el  robot creado en el numeral anterior obtenemos  la solución: Para  las coordenadas de  las articulaciones q =  [‐pi/4 0.5 0.5 pi/3] se obtiene la siguiente matriz de transformación:  T = fkine(rob,[-pi/4 0.5 0.5 pi/3]); % T = % 0.3536 -0.6124 0.7071 1.0607 % 0.3536 -0.6124 -0.7071 -1.0607 % 0.8660 0.5000 0.0000 1.5000 % 0 0 0 1.0000 qi = ikine(rob,T,[0 0 0 0],[1 1 1 1 0 0]); % CI Art 1 2 3 4 DOF % qi = % -0.7854 0.5000 0.5000 1.0472 qi_grad=qi*180/pi % qi_grad = % -45.0000 28.6479 28.6479 60.0000

Note que coinciden con  las coordenadas de  las articulaciones originales. Una solución no siempre es posible, por ejemplo si la  transformación  describe  un  punto  fuera  del  alcance  del manipulador. También  la solución no es necesariamente única y hay singularidades en las cuales el manipulador pierde grados de libertad y las coordenadas de las articulaciones llegan a ser linealmente dependientes. 

Page 7: Crea robot con matlab

7  

M.Sc. Ricardo Rodríguez Bustinza  

 Ejercicio  Considere el manipulador RRR de la Figura 

 Obteniendo los parámetros DH  

  Hallando  la cinemática directa  0T4   del manipulador desde  las ecuaciones DH.  

  Es usual  realizar  las multiplicaciones de  las  transformaciones, ya que posteriormente necesitaremos de estos  resultados en las submatrices que se forman para obtener los Jacobianos.  

Page 8: Crea robot con matlab

8  

M.Sc. Ricardo Rodríguez Bustinza  

  

Para hallar el Jacobiano básico para este  Manipulador. Para Xp usamos la posición del efector final expresado en el frame {0} que es la última columna de  0T4    

  

Para hallar el Jacobiano    1Jv  la matriz de posición del jacobiano expresado en el frame  {1} es:  

Page 9: Crea robot con matlab

9  

M.Sc. Ricardo Rodríguez Bustinza  

  Usando  la matriz hallada anterioemente, determinaremos  las singularidades  (con  respecto  a  la  velocidda  lineal)  del manipulador.  Para ello se requiere hallar θ1, θ2, y θ3 que es la matriz singular. Esto se realiza cuando el determinante es cero.

 Las singularidades ocurren cuando:  

  La primera cantidad  (2C2+C23=0) es  la distancia entre el punto del  efector  final  y  el  eje  z1.  Cuando  la  distancia  es  cero,  la juntura 1 no tiene efecto sobre la velocidad en el efector final. Entonces solo las junturas 2 y 3 pueden afectar las velocidades comunes a la rotación, el efector final no puede moverse en la dirección de y1.  Cuando  S3=0,  puede  tomar  θ3 =180°  o  θ3=0, en este caso es imposible que el efector final se mueva en la dirección x4.  Para  cada  singularidad  podemos  interpretar  la  limitación  de movimiento:  

Page 10: Crea robot con matlab

10  

M.Sc. Ricardo Rodríguez Bustinza