diseÑo y simulacion de un control pid optimizado mediante algoritmos de inteligencia computacional...
DESCRIPTION
Control de un manipulador de 5GDL usando controladores PID, PD+I-fuzzy, neurofuzzy con sintonización usando algoritmos genéticos.TRANSCRIPT
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 1 de 11
Resumen: El propósito de este trabajo de investigación fue
realizar el diseño y simulación de un control PID
optimizado mediante algoritmos de inteligencia
computacional aplicado en el seguimiento de la trayectoria
de un manipulador robótico de 5 grados de libertad. El
método utilizado realizó una optimización de nuestra
sintonización manual inicial de los parámetros del
controlador presente en cada grado de libertad para cada
movimiento propuesto por el usuario a partir de algoritmos
de inteligencia computacional, con la finalidad de evitar
complicaciones en el cálculo respectivo de dichos
parámetros. Como parte de nuestro análisis se diseñaran
controladores difusos, neuro-difusos y el uso de algoritmos
genéticos para sintonizar las ganancias. Este trabajo genera
una mejor calidad de control en manipuladores robóticos
así como también reduce la pérdida de tiempos que se
invierten en la obtención e implementación de nuevos
controladores en manipuladores presentes muchos de ellos
en procesos que requieren menos pausas y más trabajo
continuo y eficiente.
Palabras clave: manipulador robótico, control difuso, PID,
algoritmos genéticos, control neuro-difuso.
Abstract: The purpose of this research was to undertake
the design and simulation of an optimized PID control
through computational intelligence algorithms applied in
tracking the trajectory of a robotic manipulator with five
degrees of freedom. The method used made an optimization
of our initial manual tuning of the parameters of our
controller present in each degree of freedom for each
proposed movement by the user from computational
intelligence algorithms, in order to avoid complications in
the respective calculation of these parameters. As part of
our analysis, we designed fuzzy controllers, neuro-fuzzy
and the use of genetic algorithms for tuning our gains. This
work generates a better quality of control in robotic
manipulators as well as reducing the loss of time spent on
the procurement and implementation of new drivers in
mind manipulators many processes that require fewer
breaks and more continuous and efficient work.
Key words: robotic manipulator, fuzzy control, PID,
genetic algorithms, neuro-fuzzy control.
1. Introducción
Los trabajos desarrollados por los robots manipuladores
como un elemento más del proceso productivo consisten
frecuentemente en tareas repetitivas, ello exige ubicarlos en
áreas accesibles para el manipulador, caracterizado por la
máxima extensión de sus articulaciones, lo cual podría
resultar imposible a medida que el área sufra variaciones.
La necesidad de obtener mayor rapidez y precisión en un
manipulador robótico bajo restricciones de área de trabajo
nos lleva a una planificación de la trayectoria de
movimiento de nuestro manipulador así como también a la
supervisión mediante algoritmos los cuales desarrollaremos
introduciéndonos en conceptos de inteligencia
computacional a partir del cual diseñaremos de un
controlador adecuado que garantice la confiabilidad y
facilidad de implementación en un manipulador robótico
tomando en cuenta en el análisis del modelo características
como la no linealidad del movimiento propuesto, y
limitaciones presentes en un modelo real como
perturbaciones reales (variaciones de cargas, fricción, y
demás señales de ruidos externos).
Para la elaboración del presente proyecto se tiene como
antecedentes artículos destacados realizados en los últimos
años en diferentes universidades extranjeras e instituciones,
los cuales a partir de estos desarrollaremos nuestra propia
línea de investigación.
Finalmente presentamos las simulaciones respectivas de
nuestro trabajo usando el toolbox Simechanics de Simulink,
así como los cálculos respectivos utilizando el software
MATLAB.
DISEÑO Y SIMULACION DE UN CONTROL PID OPTIMIZADO
MEDIANTE ALGORITMOS DE INTELIGENCIA COMPUTACIONAL
PARA UN MANIPULADOR ROBOTICO DE 5 GRADOS DE LIBERTAD
AUTORES:
Víctor Caballero López, [email protected]
Miguel Fernández Zavala, [email protected]
Franz Huanay Martínez, [email protected]
ASESORES:
David Achanccaray Diaz, [email protected]
Escuela de Ingeniería Mecatrónica, Universidad Nacional de Ingeniería, Perú.
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 2 de 11
2. Materiales y métodos
2.1. Modelamiento del Manipulador
Nuestro robot de 5 grados de libertad está basado en el
manipulador Lynx6 de Lynxmotion, modelo del cual
obtendremos la cinemática directa e inversa, jacobianos y la
dinámica.
Fig. 1. Representación del robot
Cinemática Directa
Procedemos a calcular los parámetros D-H del manipulador
para utilizar las matrices de transformación y encontrar la
posición del efector final. Estas ecuaciones son la base para
desarrollar las simulaciones y observar la trayectoria que
sigue el manipulador al utilizar algoritmos en su control.
Eslabón
1 90° 0
2 0° 0
3 0° 0
4 90° 0 0
5 0° 0
Tabla 1. Parámetros DH del manipulador Lynx6
Luego de hallar los parámetros DH, se calculan las matrices
homogéneas (A) de los eslabones.
La cinemática directa la obtenemos multiplicando las 5
matrices homogéneas (T), la cual se ha simplificado y
ordenado de la manera como se muestra a continuación.
Los parámetros y son orientaciones a controlar.
Cinemática Inversa
Para hallar la cinemática inversa existen diversos métodos,
de los cuales se eligió el método geométrico, por la
facilidad del cálculo usando los parámetros de orientación
elegidos y la posición final del efector.
OBS: y son datos de entrada.
Ver apéndice 5.1.
Y
X
(xe,ye)
X'
Fig. 2. Giro del primer grado de libertad.
2
1
3
(xw,yw)
(xe,ye)
l3
l4
r
l2
l1
Z
X'
Fig. 3. Giro de los 4 GDL restantes.
Jacobiano Lineal y Angular
Partiendo del producto de matrices (T), hallamos el
jacobiano.
Al jacobiano lineal de nuestro robot manipulador le hemos
agregado el jacobiano angular con respecto a los
parámetros de orientación y , con el objetivo de poder
controlarlos también.
Ahora tenemos un jacobiano de 5x5, en el cual ya no se
tendrán inconvenientes para calcular el jacobiano inverso,
tan sólo se tendrán en cuenta los puntos de singularidad, en
los cuales se tomará al jacobiano como una matriz
identidad.
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 3 de 11
El jacobiano inverso se calcula de la siguiente manera:
Existen puntos donde no está definido el jacobiano inverso,
estos puntos son llamados de singularidad.
Para evitar este problema en las simulaciones, se asumió un
para esos puntos de singularidad.
Dinámica
El modelo dinámico de robot manipulador con
articulaciones rotatorias de n GDL, sin considerar la
fricción en las articulaciones está determinado por la
ecuación:
,M q q C q q q g q
Donde: M(q) es la matriz de inercias, C(q,q’) es la
matriz de fuerzas centrífugas y de coriolis, g(q) es el vector
de fuerzas gravitacionales y es el vector de pares de
entrada.
Compensación de la gravedad
Como paso previo al desarrollo del control se usó la
compensación de gravedad para comprobar que nuestras
ecuaciones de dinámica calculadas fuesen admisibles.
Fig. 4. Compensación de la gravedad usando la dinámica de MATLAB.
2.2. Principio de control PID
El controlador PID es utilizado para mejorar la respuesta
dinámica del robot para una referencia de posición sobre el
efector final, así como también para eliminar el error en
estado estacionario de dicha posición.
2.2.1. Control Proporcional: El controlador proporcional
produce un offset en la repuesta del sistema, esto
es, regula la ganancia en estado estacionario del
sistema.
2.2.2. Control Integral: El controlador derivativo agrega
un polo en el origen, para eliminar el error (offset)
en estado estacionario.
2.2.3. Control Derivativo: El controlador derivativo
agrega un cero en el infinito para reducir o
eliminar el sobre impulso (overshoot).
La función de transferencia del controlador está dada por
la siguiente expresión:
Fig. 5. Bloque del control PID para el voltaje de entrada.
2.3. Función de Transferencia de Motores DC
Ahora modificamos el PID inicial, para poder utilizar las
características de los motores DC. Se crea el diagrama de
bloques dentro de nuestro lazo de control, el cual tendrá
como entrada Voltaje y Torque como salida, teniendo en
cuenta los valores límites de la entrada Voltaje.
Fig. 6. Bloque del motor DC.
Como se muestran en las figuras 11 y 12, se pueden
modificar los parámetros de los motores de acuerdo al los
valores reales que disponemos. Se construyó el modelo de
los motores despreciando los efectos de viscosidad e inercia
del motor por ser despreciables respecto a las inercias del
robot.
Fig. 7. Bloque de los actuadores del manipulador.
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 4 de 11
controlPIDMotor
ROBOTR+
-
qMotor
DC
e
Fig. 8. Esquema de control PID usando la dinámica eléctrica de los
actuadores.
2.4. Algoritmos de Inteligencia Computacional
2.4.1. Lógica Difusa
El diseño del controlador difuso es una atractiva
alternativa para reemplazar los métodos convencionales de
control ya que proporciona un marco sistemático y eficaz
para hacer frente a las incertidumbres y no linealidades en
sistemas complejos; sobre todo cuando el modelo
matemático del sistema es desconocido, no es posible de
obtener, o es demasiado complicado de utilizar para fines
de control, sin embrago se necesita de una buena capacidad
de procesamiento.
Fig. 9. Bloque de control fuzzy-PD+I
Se procedió a diseñar un controlador FlCPD+I, ya que,
es el controlador más general. Para implementar el
controlador se utilizó el toolbox de lógica difusa (Fuzzy
logic toolbox) de MATLAB® 7.10.0.
Fig. 10. Diagrama de bloques del controlador (Mamdani).
Funciones de pertenencia
En este caso se empleó funciones triangulares con un
universo de discurso entre ±1:
Fig. 11. Funciones de pertenencia de los parámetros error, derror y control respectivamente.
Reglas difusas
Fig. 12. Reglas de control (9).
Para la defusificación se empleó el método de mandani,
obteniendo la salida por el método del centroide.
Fig. 13. Salida del controlador en función de las variables de entrada.
2.4.2. Algoritmos Genéticos
Los pasos que sigue el algoritmo dentro de cada
generación se detallan a continuación:
2.4.2.1. Reproducción
Existen diferentes métodos para la selección de la
población (nuevos valores de los parámetros) en cada
generación, pero están basados en el mismo principio
básico, estos métodos son los siguientes:
- Realizar la selección de manera aleatoria de la
población.
- Realizar la normalización universal para elegir la
muestra.
- Selección por normalización geométrica.
- Retornar la selección para el inicio de una nueva
generación.
El método de selección utilizado para la sintonización de
los parámetros del PID será el de la selección aleatoria de la
población.
2.4.2.2. Crossover
Nuevos individuos son generalmente creados por la
selección entre los valores previos de una población, estos
son los llamados crossover points, que usualmente son
seleccionados de manera aleatoria.
2.4.2.3. Mutación
Los nuevos valores para entrar a una generación son
creados haciendo modificaciones de una selección anterior
individual. En el algoritmo genético la mutación es la
fuente de variabilidad y también mejora la eficiencia de la
evolución en cada generación
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 5 de 11
2.4.2.4. Sintonización del Controlador PID
Para obtener los parámetros del controlador PID se
emplea la siguiente configuración, la cual será iterada
utilizando la herramienta Simulink de MATLAB.
Fig. 14. Esquema para la sintonización del controlador PID.
2.4.3. Controlador Neuro-difuso
Otra forma de usar un controlador difuso, quizás más
eficiente, es la de optimizar las reglas fuzzy mediante
algoritmos genéticos y redes neuronales, en nuestro
controlador empleará una combinación del uso de redes
neuronales y lógica difusa, para ello el algoritmo de
aprendizaje del sistema difuso se representa con una
arquitectura de redes neuronales. Para realizar la creación
de estas ANN (redes neuronales artificiales) y los sistemas
Takagi Sugeno FIS (sistema de inferencia difuso) se utiliza
el Toolbox fuzzy de Matlab, donde se entrena la red con la
data obtenida de las simulaciones previas.
Fig. 15. Sistema Takagi Sugeno Neuro-fuzzy.
Esta estructura teórica fue implementada con la ayuda del
“Anfis editor” de MATLAB 7.10.0.
Fig. 16. Diagrama de bloques del controlador (Sugeno).
Funciones de pertenencia básicas
Fig. 17. Funciones de pertenencia de los parámetros error, derror y
ucontrol respectivamente.
Reglas difusas
Fig. 18. Reglas de control (25).
2.5. Simulaciones
A partir del modelo desarrollado realizamos las respectivas
simulaciones con el bloque de control obtenido.
2.5.1. Control PID sintonizado manualmente:
Para las simulaciones se realizaron varias trayectorias, sin
embargo, mostraremos los resultados obtenidos más
resaltantes, en este caso para una trayectoria helicoidal y
sinusoidal.
Fig. 19. Diagrama general del control usando el modelo del robot en
simmechanics de Simulink.
Trayectoria Helicoidal
La trayectoria deseada es la siguiente.
x=0.6+0.1cos(t )
y=0.1sen(t )
z=0.01*t +0.2
α=0
β=0
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 6 de 11
Kp=diag ([6125, 6125, 6125, 6125, 6125])
Ki= diag([30,30,30,30,30])
Kd= diag([70,70,70,70,70])
Fig. 20. Trayectorias helicoidales real y deseada.
Fig. 21. Error en el espacio de trabajo (helicoide).
Fig. 22. Torques de entrada en el bloque robot para trayectoria
helicoidal.
Trayectoria sinusoidal inscrita en un cilindro
Kp= diag([105.27,105.27,105.27,38.28,38.28])
Ki= diag([30,30,30,40,30])
Kd= diag([2.45,2.45,2.45,1.75,1.75])
Fig. 23. Trayectoria sinusoidal real y deseada.
Fig. 24. Error en el espacio de trabajo (sinusoide).
Fig. 25. Torques de entrada en el bloque robot para trayectoria
sinusoidal.
2.5.2. Control Fuzzy-PD+I
Ahora utilizamos un sistema Fuzzy con una distribución
de ganancias de forma similar al PID, con la finalidad de
hacer más robusto el control.
Ganancias usadas:
GE=100, GIE=1, GCE=0.6, GU=38
Fig. 26. Bloque FLCPD+I en simulink.
Fig. 27. Trayectoria helicoidal real y deseada (fuzzy).
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 7 de 11
Fig. 28. Error en el espacio de trabajo (fuzzy).
Fig. 29. Torques de entrada en el bloque robot para un FLCPD+I..
Incremento de la velocidad
En el control cinematico, además de la trayectoria
espacial que debe ser realizada por el robot es necesario
especificar la velocidad media del recorrido o la precisión
con que se deba alcanzar el punto de destino. Esto implica
que las constantes del controlador a usar varían de acuerdo
a la velocidad usada en la trayectoria. En la siguiente
gráfica se muestra el resultado de incrementar la velocidad
de recorrido en controladores PID y FLCPD+I:
Fig. 30. Incremento de velocidad en control PID.
Fig. 31. Incremento de velocidad en control FLCPD+I.
2.5.3. Algoritmos genéticos
Ahora utilizamos los algoritmos genéticos para sintonizar
nuestro controlador PID. Este proceso se realiza utilizando
la data obtenida (errores) de nuestro bloque de control PID,
el cual inicia con valores de ganancias aleatorias que
deberán ser optimizadas. El algoritmo tratará de minimizar
nuestra función objetivo, que en nuestro caso es el error
durante el tiempo de simulación definido.
Obtención de la data
La data con que se trabajará es el error de posición angular.
Fig. 32. Data obtenida de nuestro control PID (Error_q).
Parámetro Valor
Método de Selección Roulette Wheel
Población 40
Generaciones 20
Crossover Probabilidad 60%
Probabilidad de Mutación 0.10%
Rango de valores PID 0 - 2500
Tabla 2. Parámetros del algoritmo genético.
Resultados del algoritmo genético
Para las condiciones seleccionadas y para una trayectoria
helicoidal, se obtuvieron las siguientes ganancias.
Kp =
1.0e+003 *
0.8369 0 0 0 0
0 1.0776 0 0 0
0 0 1.9279 0 0
0 0 0 1.2886 0
0 0 0 0 0.2274
Kd =
10.0000 0 0 0 0
0 10.0000 0 0 0
0 0 10.0000 0 0
0 0 0 27.0060 0
0 0 0 0 49.2273
Ki =
46.5521 0 0 0 0
0 14.1774 0 0 0
0 0 39.5794 0 0
0 0 0 30.2430 0
0 0 0 0 29.9443
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 8 de 11
Fig. 33. Trayectoria helicoidal real y deseada (AG).
Fig. 34. Error en el espacio de trabajo (AG).
Fig. 35. Torques de entrada en el bloque de control PID con
sintonización AG.
2.5.4. Controlador híbrido Neuro-Fuzzy
Ahora con el ANFIS editor creamos 5 sistemas fuzzy, las
cuales entrenamos para optimizar los parámetros de estos.
Como se menciono anteriormente estos sistemas tienen 25
reglas de tipo Sugeno, cuyas funciones de pertenencia serán
modificadas usando redes neuronales, en nuestro caso se
utilizó un ANFIS híbrido.
Fig. 36. Bloque del Neuro-Fuzzy en Simulink.
Fig. 37. Trayectoria helicoidal real y deseada usando el controlador neuro-fuzzy.
Fig. 38. Error en el espacio de trabajo (neuro-fuzzy).
Fig. 39. Torques que ingresan al bloque robot usando el Neuro-
Fuzzy.
3. Resultados y discusión
Como se puede observar, al usar un controlador PID se
emplea mayor cantidad de torque para el control de
trayectorias que cuando se emplean algoritmos
computacionales.
En investigaciones pasadas no se encontró una comparación
clara entre los distintos tipos de optimización de control
para manipuladores, cosa que se realiza en el presente
trabajo.
4. Conclusiones y Recomendaciones
-Se realizó un control con buena precisión, los valores de
los errores angulares alcanzados fueron razonables, así
como las magnitudes de los torques, esto en parte se debió
al bloque de motor DC que se utilizó en las simulaciones,
permitiendo comprobar la obtención de valores admisibles
en una posible implementación de nuestro robot.
-Luego de realizar las comparaciones entre las respuestas
del robot con control PID y la respuesta del control fuzzy,
bajo las mismas condiciones, se observa que ambos
métodos presentan dinámicas muy similares.
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 9 de 11
-En las pruebas realizadas, el incremento de la velocidad
de recorrido requiere una reducción de los tiempos de
asentamiento, sin embargo, al no modificar los parámetros
del PID principalmente los Kd y Kp que están relacionados
con los tiempos de corrección del controlador, la trayectoria
real mostrará diferencias con respecto a la deseada
incrementándose éstas a medida que la velocidad aumente.
-En el caso del control fuzzy, las ganancias Kp y Kd
varían en cada iteración, este controlador mostró mejores
resultados que el PID al incrementarse la velocidad de
recorrido.
-El uso de algoritmo computacionales pueden disminuir
el costo computacional si se optimizan las ganancias
adecuadamente, sin embargo el controlador PID-Fuzzy que
se utilizó no estaba optimizado, éste requirió mayor carga
computacional debido al uso de un sistema Mandani difuso
y sintonización manual.
-El algoritmo para el controlador Neuro-Fuzzy, el cual
utiliza un sistema Takagi Sugeno difuso requiere menor
costo computacional y posee pequeños errores que
dependen de la data y el target empleados en su
entrenamiento.
-Una buena manera para que nuestro robot pueda seguir
una trayectoria cualquiera es usando algoritmos genéticos,
sin embargo en pruebas realizadas se pudo comprobar que
estos pierden algo de precisión en trayectorias muy
complejas; por lo que sería ideal un controlador PID de
ganancias variables en el tiempo, lo cual resulta casi
imposible de simular debido a la alta carga computacional
que implicaría por ser de 5 grados de libertad el robot a
controlar.
-Se recomienda usar el software SimMechanics de
Matlab, ya que, es una potente herramienta en la simulación
de sistemas robóticos y nos permite importar nuestro diseño
realizado en algún programa CAD (en este caso
SolidWorks) incluyendo las características inerciales del
diseño, además permite realizar análisis dinámicos,
cinemáticos, de dinámica inversa y también estática. La
ventaja de utilizar este software de simulación es que
permite realizar el análisis matemático y, en la mayoría de
los casos, poder obtener importantes deducciones de una
forma eficaz y rápida. Otra ventaja de este programa de
simulación es que su complejidad no aumenta a medida que
se añaden más grados de libertad, cosa que no sucede con el
análisis matemático.
5. Apéndices
5.1. Demostraciones
Cinemática Directa
Como se observa en las ecuaciones anteriores, se han
incluido las variables y , ya que se controlarán dos
parámetros de orientación además de los que corresponden
a la trayectoria.
Cinemática Inversa
OBS: y son datos de entrada.
Jacobiano Lineal y Angular
Calculo del jacobiano lineal:
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 10 de 11
Calculo del jacobiano total uniendo jacobiano lineal y angular:
6. Agradecimientos
Los autores agradecen las contribuciones del asesor Msc.
David Achanccaray Diaz del presente artículo, y del tutor
del curso “Análisis y Control de Robots” Msc. Nilton
Anchayhua por su apoyo en la revisión de este documento.
7. Referencias
[1]“Introduction to Robotics” (2006), H. Harry Asada.
Massachussets Institute of Technology.
[2] A. Barrientos, L. F. Peñín, C. Balaguer, and R.
Aracil, Fundamentos de Robótica. McGrawHill, 1998.
[3] J. J. Craig, Introduction to Robotics: Mechanics and
Control, P. Hall, Ed., 2003.
[4] Hybrid GA Tuned RBF Based Neuro-Fuzzy
Controller for Robotic Manipulator. Sufian Ashraf Mazhari
and Surendra Kumar Member IEEE
[5] Springer Handbook of Robotics Bruno Siciliano,
Oussama Khatib
[6] Fuzzy + PID Controller for Robot Manipulator
[7] TELEOPERATED MANIPULATOR CONTROL
Ricardo Enrique Gutiérrez Carvajal
[8] Schilling, J. Robert. , Fundamentals of Robotics.
Estados Unidos: Prentice-Hall, Inc. (1990).
ANEXOS
En esta parte se muestra el código utilizado para el diseño
del controlador neurofuzzy y el uso de algoritmos
genéticos. El diseño del controlador fuzzy PD+I se realizó
trabajando con el editor FUZZY y el control PID se realizo
usando SIMULINK, también se realizó un script en Matlab
para el control PID que incluye los motores, sin embargo
éste último no lo presentamos por falta de espacio.
A.1. Código en Matlab del controlador neurofuzzy
% gen_neurofuzzy.m %% Controlador neurofuzzy con sintonización
genética
close all;clc;close all;
global Kp Ki Kd f
%% Cálculo de las ganacias mediante algoritmos
genéticos
f=1;
Kp=diag([2000 2000 2000 2000 2000]);
Kd=diag([70 70 70 70 70]);
Ki=diag([30 30 30 30 30]);
% Ganancias iniciales
kp0=[2400 2400 2400 2400 2400];
kd0=[70 70 70 70 70];
ki0=[30 30 30 30 30];
% Rango de valores
lb_kp=[200 200 200 200 200];
lb_kd=[10 10 10 10 10];
lb_ki=[5 5 5 5 5];
up_kp=[2500 2500 2500 2500 2500];
up_kd=[100 100 100 100 100];
up_ki=[50 40 40 40 40];
lb=[lb_kp lb_kd lb_ki];
up=[up_kp up_kd up_ki];
options=gaoptimset('MutationFcn',...
@mutationadaptfeasible,'PlotFcn',@gaplotbestf,...
'Generations',10,'PopulationSize',24,...
'InitialScores',[kp0 kd0 ki0]);
[x,error]=ga(@algoritmo_pid,15,[],[],[],[],...
lb,up,[],options);
Kp = diag(x(1:5));
Kd = diag(x(6:10));
Ki = diag(x(11:15));
%% Entrenamiento de las reglas fuzzy mediante
redes neuronales
sim('ControlePIDsimmechanics_gen.mdl');
disp('ya corrió');
CFuzzy=readfis('anfis_5gdl_2.fis');
% Creating fis'
writefis(CFuzzy,'gen_anfis1');
fis1=readfis('gen_anfis1');
writefis(CFuzzy,'gen_anfis2');
fis2=readfis('gen_anfis2');
writefis(CFuzzy,'gen_anfis3');
fis3=readfis('gen_anfis3');
writefis(CFuzzy,'gen_anfis4');
fis4=readfis('gen_anfis4');
writefis(CFuzzy,'gen_anfis5');
fis5=readfis('gen_anfis5');
% Data training
TD1=[Error_q(:,1) dError_q(:,1) tauv(:,1)];
TD2=[Error_q(:,2) dError_q(:,2) tauv(:,2)];
TD3=[Error_q(:,3) dError_q(:,3) tauv(:,3)];
TD4=[Error_q(:,4) dError_q(:,4) tauv(:,4)];
TD5=[Error_q(:,5) dError_q(:,5) tauv(:,5)];
% Training neural networks
[fis1,error1,ss1]=anfis(TD1,fis1,4000,[],[],1);
writefis(fis1,'gen_anfis1');
disp('1');
[fis2,error2,ss2]=anfis(TD2,fis2,4000,[],[],1);
writefis(fis2,'gen_anfis2');
disp('2');
[fis3,error3,ss3]=anfis(TD2,fis3,4000,[],[],1);
writefis(fis3,'gen_anfis3');
disp('3');
[fis4,error4,ss4]=anfis(TD2,fis4,4000,[],[],1);
writefis(fis4,'gen_anfis4');
disp('4');
[fis5,error5,ss5]=anfis(TD2,fis5,4000,[],[],1);
writefis(fis5,'gen_anfis5');
disp('5');
%% Simulación final: trayectoria seguida
sim('ControlePIDsimmechanics_gen_neurofuzzy.mdl');
plot3(posiciondeseada(:,1),posiciondeseada(:,2),…
posiciondeseada(:,3),'r','LineWidth',2);
hold on
plot3(posicionreal(:,1),posicionreal(:,2),...
posicionreal(:,3),'LineWidth',2);
legend('Trayectoria deseada','Trayectoria real')
Concurso de Proyectos - INTERCON - 2010
PR-RFN-011 Página 11 de 11
A.2. Código en Matlab de la función objetivo del
algoritmo genético. %% función objetivo a minimizar
function z = algoritmo_pid(KP)
global Kp Kd Ki
kp1 = KP(1);
kp2 = KP(2);
kp3 = KP(3);
kp4 = KP(4);
kp5 = KP(5);
kd1 = KP(6);
kd2 = KP(7);
kd3 = KP(8);
kd4 = KP(9);
kd5 = KP(10);
ki1 = KP(11);
ki2 = KP(12);
ki3 = KP(13);
ki4 = KP(14);
ki5 = KP(15);
Kp = diag([kp1 kp2 kp3 kp4 kp5]);
Kd = diag([kd1 kd2 kd3 kd4 kd5]);
Ki = diag([ki1 ki2 ki3 ki4 ki5]);
%% Control PID
sim('ControlePIDsimmechanics_gen.mdl');
%% Función del Error
z = sqrt(dot(Error_q(:,1),Error_q(:,1))+...
dot(Error_q(:,2),Error_q(:,2))+dot(Error_q(:,3),…
Error_q(:,3))+dot(Error_q(:,4),Error_q(:,4))+...
dot(Error_q(:,5),Error_q(:,5)));