Your SlideShare is downloading. ×
0
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Ejemplos Control por Modelo Inverso
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ejemplos Control por Modelo Inverso

2,914

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,914
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
32
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. <ul><li>Ejemplos de control </li></ul><ul><li>por modelo inverso </li></ul><ul><li>en robótica </li></ul>
  • 2. <ul><li>Control por modelo inverso de un brazo articulado </li></ul><ul><li>Demostración: Ejecutar invkine </li></ul>
  • 3. Control inverso de brazo articulado <ul><li>Sección de código de la función invsurf.m : </li></ul><ul><li>for i = 1:length(r), </li></ul><ul><li>for j = 1:length(theta), </li></ul><ul><li>xx = r(i)*cos(theta(j)); Cinemática directa </li></ul><ul><li>yy = r(i)*sin(theta(j)); </li></ul><ul><li>c2 = (xx^2 + yy^2 - l1^2 - l2^2)/(2*l1*l2); </li></ul><ul><li>c2 = min(max(c2, -1), 1); </li></ul><ul><li>s2 = sqrt(1 - c2^2); </li></ul><ul><li>th2(i, j) = atan2(s2, c2); </li></ul><ul><li>k1 = l1 + l2*c2; </li></ul><ul><li>k2 = l2*s2; </li></ul><ul><li>th1(i, j) = atan2(yy, xx) - atan2(k2, k1); </li></ul><ul><li>end </li></ul><ul><li>end </li></ul><ul><li>Condiciones iniciales: </li></ul><ul><li>l1 = 10; </li></ul><ul><li>l2 = 7; </li></ul><ul><li>point = 21; </li></ul><ul><li>r = linspace(l1-l2, l1+l2, point); </li></ul><ul><li>theta = linspace(0, 2*pi, 2*point); </li></ul>
  • 4. Control inverso de brazo articulado (II) <ul><li>Resultado de ejecutar la función invsurf.m : </li></ul>
  • 5. Control inverso de brazo articulado (III) x x Modelo del brazo articulado de dos grados de libertad x y y
  • 6. Control inverso de brazo articulado (IV) Modelo del brazo articulado de dos grados de libertad x y Modelo inverso del brazo articulado x d y d
  • 7. Control inverso de brazo articulado (V) for i = 1:length(x), for j = 1:length(y), xx = x(i); yy = y(j); c2 = (xx^2 + yy^2 - l1^2 - l2^2)/(2*l1*l2); s2 = sqrt(1 - c2^2); th2(i, j) = atan2(s2, c2); k1 = l1 + l2*c2; k2 = l2*s2; th1(i, j) = atan2(yy, xx) - atan2(k2, k1); if abs(c2) &lt; 1; data1(data_n, :) = [xx yy th1(i, j)]; data2(data_n, :) = [xx yy th2(i, j)]; data_n = data_n + 1; end end end invkine1 = data1(1:data_n, :); invkine2 = data2(1:data_n, :); invkine1 invkine2 Matrices inversas Definir matrices en Matlab
  • 8. Control inverso de brazo articulado (VI) <ul><li>[FIS,ERROR,STEPSIZE]=ANFIS(TRNDATA,INITFIS,TRNOPT,DISPOPT,[],OPTMETHOD) </li></ul><ul><ul><li>TRNDATA: Datos de entrada-salida </li></ul></ul><ul><ul><li>INITFIS: Condiciones iníciales de los parámetros (Funciones de pertenencia, etc…) </li></ul></ul><ul><ul><li>TRNOPT(1): Número de épocas </li></ul></ul><ul><ul><li>TRNOPT(2): Error medio cuadrático objetivo </li></ul></ul><ul><ul><li>TRNOPT(3): Factor de aprendizaje inicial </li></ul></ul><ul><ul><li>TRNOPT(4): Razón de decremento del Factor de aprendizaje </li></ul></ul><ul><ul><li>TRNOPT(5): Razón de incremento del Factor de aprendizaje </li></ul></ul><ul><ul><li>DISPOPT: Visualizar la evolución del aprendizaje </li></ul></ul><ul><ul><li>OPTMETHOD: Aprendizaje híbrido o aprendizaje por gradiente descendente </li></ul></ul>La función ANFIS
  • 9. <ul><li>Obtención del modelo inverso </li></ul><ul><li>Sistema borroso 1: fismat1 </li></ul><ul><li>[fismat1, error1] = anfis (invkine1, 3, [50, 0, 0.2]); </li></ul><ul><li>writefis(fismat1, &apos;invkine1.fis&apos;); </li></ul><ul><li>% WRITEFIS (FISMAT,&apos;filename&apos;) </li></ul><ul><li>Sistema borroso 2: fismat2 </li></ul><ul><li>[fismat2, error2] = anfis (invkine2, 3, [50, 0, 0.2]); </li></ul><ul><li>writefis(fismat2, &apos;invkine2.fis&apos;); </li></ul>Control inverso de brazo articulado (VII) Pasos para obtener un modelo
  • 10. Modelo del brazo articulado de dos grados de libertad x y theta1 = evalfis([x, y], fismat1); x d y d theta2 = evalfis([x, y], fismat2); Control inverso de brazo articulado (VIII) <ul><li>En el programa invkine.m : </li></ul><ul><li>fismat1 = readfis (&apos;invkine1&apos;); </li></ul><ul><li>fismat2 = readfis (&apos;invkine2&apos;); </li></ul>Ejemplo de cómo exportar bloques a Simulink
  • 11. Control inverso de brazo articulado (IX) <ul><li>Resultado de ejecutar invkine.m : </li></ul>
  • 12. <ul><li>Control por modelo inverso de un vehículo </li></ul>
  • 13. Control basado en modelo inverso de un vehículo Modelo cinemático de un vehículo Modelo Simulink
  • 14. Control basado en modelo inverso de un vehículo (II)  : Curvatura de las ruedas  : Orientación del vehículo (x, y): Posición del vehículo P Aparcamiento Velocidad constante l 0 -50 50 0 5 0 10 0 x y 0 o 9 0 o 18 0 o -90 o /27 0 o P  
  • 15. Control basado en modelo inverso de un vehículo (III) x : [-50, 50] metros con intervalos de 5 metros Organización datos l y : Puede omitirse  : [-90 o , 270 o ] a intervalos de 30 o  : [-45 o , 45 o ] a intervalos de 15 º (positivos contrario a las manecillas del reloj) 0 -50 50 0 5 0 10 0 x y 0 o 9 0 o 18 0 o -90 o /27 0 o P  
  • 16. [  , x;  ] l Control basado en modelo inverso de un vehículo (IV) Comportamiento conductor 0 -50 50 0 5 0 10 0 x y 0 o 9 0 o 18 0 o -90 o /27 0 o P  
  • 17. [  , x;  ] Control basado en modelo inverso de un vehículo (V) Comportamiento conductor &gt;&gt; entrada=[260, 0;270, 5; 270, 10; 270, 15; 270, 20] &gt;&gt; salida=[30; 45; 45; 45; 45] &gt;&gt;P=entrada’ &gt;&gt;T=salida’ &gt;&gt; interv=minmax(P) &gt;&gt; num_capas=[17 8 1]; &gt;&gt; funcact={&apos;tansig&apos; &apos;tansig&apos; &apos;purelin&apos;}; &gt;&gt; net=newff(interv, num_capas, funcact, &apos;trainlm&apos;, &apos;learngdm&apos;, &apos;mse&apos;); Definición de matrices Interpretación de parámetros de newff
  • 18. Control basado en modelo inverso de un vehículo (VI) Se entrena la red &gt;&gt; train(net,P,T) &gt;&gt; gensim(net) Se exporta la red a bloque Simulink
  • 19. Control basado en modelo inverso de un vehículo (VII) Se integra en el modelo Simulink
  • 20. Control basado en modelo inverso de un vehículo (VIII) Se ajusta hasta que el resultado sea semejante a este

×