INSTITUTO TECNOLÓGICO DE LÉON

INGENIERIA ELECTROMECÁNICA (EM2)

TESIS PROFESIONAL

TITULO: “CONTROL DE UN PENDULO INVERTIDO EMPLEANDO REDES NEURONALES ARTIFICIALES”

ALUMNO: CESAR ALEJANDRO FRAUSTO DAVILA (97240322)

ASESORES: Dr. ANTONIO ZAMARRON RAMIREZ M.C. MARTHA ALICIA ROCHA SANCHEZ

LEÓN, GUANAJUATO A 16 DE DICIEMBRE DEL 2005

Técnicas de Computación Suave (IA)

AGRADECIMIENTOS
Quiero agradecer primero a Mi Señor Jesús Cristo por haberme criado (Gen. I), haberme mostrado cosas grandes y maravillosas que nunca imagine (Jer. III), por haberme dado potestad de ser hecho hijo de Dios (Ev. J. I), a El sea Toda la Gloria y Toda la Honra. Amen (Ap. 21). (Shella). Quiero agradecer a mis padres Nicolás Frausto Morales y Felipa Dávila Rodríguez por el amor, la paciencia y apoyo que me han demostrado, por su ejemplo, por su amistad, su apoyo, Gracias. A mis hermanos: Gabriel, a Mario (Siempre en nuestros mejores recuerdos), a Xochitl y Fanny. A mis sobrinas Tania, Karina y Karen y mis sobrinos Mario y Josué, deseo ardientemente leer un día las tesis de ellos. Quiero externar mi reconocimiento a todos aquellos que aportaron su granito de arena para mi formación. A los profesores de la Escuela Primaria Urbana No. 13 “Narciso Mendoza”, en especial a la maestra Guillermina Martínez Órnelas y al Profesor Aurelio López Flores (1980-1986). A los Profesores de la Escuela Secundaria Federal No. 5 “Emperador Cuahuhtemoc”, en especial al profesor de Matemáticas Ricardo Galán, al profesor de electrónica Darío, un recuerdo para las maestras Marisela y Mary, ambas de español (1986-1989). Al personal de la Preparatoria Abierta “Pedagogía Aplicada” en especial al Lic. Guadalupe Mota Gómez y la maestra Mary Mota Gómez. Al Instituto Tecnológico de León y las personas que laboran en dicha institución, al M.C. Carlos Jesús Aguilera Batista, excelente persona. A mi asesor de esta tesis, el Dr. Antonio Zamarrón el cual se desempeño como un excelente director al asignarme la tarea, guiarme, darme las herramientas, recomendarme las personas adecuadas y en fin, a auxiliarme a terminar con éxito esta tesis, Gracias. Al Lic. José Ignacio Gallardo Hernández, al Ing. José Antonio Martines excelente deportista e ingeniero. Un reconocimiento al M. C. Julián Rentería Hernández (gracias por su amistad y apoyo), a Pedro Sosa, asistente en el taller de Hidráulica y Mecánica, a la maestra Susan Onesky (IAAP ahora Berlitz SLP), a mi compañero Omar Órnelas Lozano, a mis amigas Olga Prado y Ángeles Alvarez por su agradable compañía y por mostrarme that mankind is led into the darkness beyond our world by the inspiration of discovery and the longing to understand. Deseando éxito en todo lo que emprende, al Dr. Francisco Javier Cuevas de la Rosa del Centro de Investigaciones en Óptica, A.C. Al Coronel de Infantería DEM Miguel Ángel Chavero Cevallos, al Capitán I de Infantería DEM Guadalupe Arias, al sargento II de Infantería Praxedis Guerrero, al Sr. Ernesto Myer de Pesquera Internacional en Cabo San Lucas BCS, al Ing. Jorge Marmolejo de Plásticos Boston, a Elías Barba de Torno y Soldadura (7 77 01 08), al Ing. Ignacio Alcalá de Lira de Alumbrado Publico Municipal, al Ing. Jesús Samano de Maselli Measurement, a mis ex compañeros en Innopack, Refrescos Aga, Suelas Hulsalite, Suelas Sole, Inoplast y Hafca Proyectos Industriales. Quiero recordar que este trabajo no hubiera sido posible sin la colaboración del Dr. Cuevas del CIO y la M.C. Rocha del Dep. de Sistemas por lo que estoy seguro que cualquier actividad encaminada a estrechar la colaboración entre instituciones y departamentos permitirá lograr objetivos mucho mayores que los aquí presentados. Creo que faltarían hojas para nombrar las personas que han compartido su vida conmigo y que forman parte de lo que soy. A todas ellas

GRACIAS

Ingeniería Electromecánica

i

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

INDICE
PAG.

AGRADECIMIENTOS INDICE INDICE DE FIGURAS INDICE DE TABLAS PRÓLOGO CAPITULO 1 INTRODUCCIÓN 1.1 DESCRIPCIÓN GENERAL 1.2 HIPOTESIS 1.3 OBJETIVOS GENERALES 1.3.1 OBJETIVOS ESPECIFÏCOS 1.3 ALCANCES Y LIMITACIONES REFERENCIAS DE CAPITULO CAPITULO 2 PENDULO INVERTIDO Y REDES NEURONALES ARTIFICIALES 2.1 PRINCIPIOS BÁSICOS DEL SISTEMA PENDULO INVERTIDO 2.1.1 MODELADO DE UN PIS 2.1.2 DISEÑO DE UN CONTROLADOR PARA EL PIS 2.2 REDES NEURONALES ARTIFICIALES 2.2.1 BREVE HISTORIA DE LAS RNA´S 2.2.2 CARACTERÍSTICAS DE LAS RNA´S 2.2.3 NEURONA ARTIFICIAL 2.2.4 RNA 2.2.5 ENTRENAMIENTO DE UNA RNA 2.2.5.1 ENTRENAMIENTO SUPERVISADO 2.2.6 RNA PERCEPTRON 2.2.6.1 ENTRENAMIENTO DE UNA RNA TIPO PERCEPTRON 2.2.7 RNA TIPO PERCEPTRON DE CAPAS MULTIPLES 2.2.8 RNA TIPO ADALINE 2.2.8.1 REGLA DE APRENDIZAJE DEL ERROR CUADRATICO MEDIO LMS (LEAST MEAN SQUARE O LMS) 2.2.8.2 LOCALIZACIÓN DE LA MATRIZ ÓPTIMA DE PESOS MEDIANTE EL MÉTODO DE GRADIENTE DESCENDENTE 2.2.9 RNA TIPO MADALINE 2.2.9.1 ALGORITMO MRII (MADALINE RULE II) 2.2.10 RNA TIPO BACKPROPAGATION (BP) 2.2.10.1 REGLA DELTA GENERALIZADA (GDR) 2.2.10.2 ENTRENAMIENTO DE UNA RNA BP 2.2.10.3 PESOS Y PARAMETROS DE APRENDIZAJE REFERENCIAS DEL CAPITULO

i ii iv v vi

1 2 2 2 3 3

4 5 7 9 11 12 12 17 20 21 22 22 24 24 25 26 28 29 30 31 33 34 35

Instituto Tecnológico de León

ii

Técnicas de Computación Suave (IA)

CAPITULO 3 DESCRIPCION DEL SISTEMA 3.1 RNA´s EN MATLAB 3.1.1 ESTRUCTURA DE LOS DATOS 3.1.2 RED MADALINE 3.1.2.1 CREACION DE UNA RNA TIPO MADALINE MEDIANTE LA GUI nntool 3.1.2.2 FILTRO LINEAL DE RESPUESTA A IMPULSOS FINITOS 3.1.3 RNA TIPO BP 3.1.3.1 CREACION DE UNA RNA TIPO BP MEDIANTE LA GUI nntool 3.1.4 ENTRENAMIENTO DE UNA RNA 3.1.5 EXPORTANDO DATOS A LA VENTANA DE TRABAJO DE MATLAB 3.1.6 LIMPIAR LA VENTANA NETWORK / DATA MANAGER 3.1.7 IMPORTANDO DATOS DESDE EL ESPACIO DE TRABAJO DE MATLAB 3.2 SIMULINK 3.2.1 USO DEL BLOQUE TAPPED DELAY 3.3 REAL TIME WORKSHOP 3.3.1 CONCEPTOS BASICOS 3.4 REAL TIME WINDOWS TARGET 3.5 TARJETA PCI6014 3.6 INTERFASE DE POTENCIA 3.7 SISTEMA PIS REFERENCIAS DEL CAPITULO CAPITULO 4 IMPLEMENTACION DEL CONTROLADOR 4.1 PROTOTIPO PIS 4.2 ADQUISICIÓN DE DATOS DE ENTRENAMIENTO 4.3 EMULACION DE LA RNA BP EMPLEANDO MATLAB 4.4 ENTRENAMIENTO DE LAS RNA´s BP 4.5 IMPLEMENTACION DE LA RNA BP COMO CONTROLADOR DEL PIS REFERENCIAS DEL CAPITULO CAPITULO 5 RESULTADOS 5.1 RESULTADOS CAPITULO 6
CONCLUSIONES, RECOMENDACIONES Y PROPUESTAS PARA TRABAJOS FUTUROS

PAG. 38 39 40 41 44 44 44 49 50 51 51 51 51 53 53 56 58 59 59 61

63 64 67 69 73 77

78

6.1 CONCLUSIONES 6.2 RECOMENDACIONES 6.2 TRABAJOS FUTUROS APENDICE A Programa Normalización Vector de Entradas B Programa Vector Condiciones Iniciales en Retardos de Tiempo
Ingeniería Electromecánica

82 84 85

iii

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

INDICE DE FIGURAS

Fig. 2.1 Representación de un Péndulo Invertido Fig. 2.2 Péndulo Invertido Simple de base móvil (PIS) Fig. 2.3 Diagramas de cuerpo libre para un PIS Fig. 2.4 Partes Principales de una Neurona Biológica Fig. 2.5 Diferentes métodos de implementación de RNA´s Fig. 2.6 Modelo McCullon-Pitts de una neurona Fig. 2.7 Modelo de una neurona artificial general Fig. 2.8 Funciones de activación más comúnmente empleadas Fig. 2.9 Funciones de salida más empleadas Fig. 2.10 Grafica dirigida de una RNA general Fig. 2.11 Ejemplos de RNA´s con distintas arquitecturas de alimentación Fig. 2.12 Perceptron de una sola capa Fig. 3.1 Diagrama esquemático del sistema empleado en esta tesis Fig. 3.2 Ventana Network/Data Manager de la GUI nntool Fig. 3.3 Ventana Create New Network Fig. 3.4 Ventana Create New Network para una RNA tipo Adaline o Madaline Fig. 3.5 Diagrama representativo de una Red lineal creada en la GUI nntool Fig. 3.6 Ventana desplegada para crear una RNA tipo BP de prealimentación Fig. 3.7 RNA BP personalizada Fig. 3.8 Ventana Training Parameters en la opción Train Fig. 3.9 Ventana con información del proceso de entrenamiento en nntool Fig. 3.10 Ventana para introducir los datos a emplear en la simulación de una RNA Fig. 3.11 Ventana para exportar datos desde nntool Fig. 3.12 Ventana con librerías de bloques en Simulink Fig. 3.13 Parámetros de ajuste para un bloque de retardos de tiempo Fig. 3.14 Diagrama de flujo para la creación de una aplicación en RTW Fig. 3.15 Ventana parámetros de configuración para RTW Fig. 3.16 Ventana para explorar modelos de Simulink Fig. 3.17 Ventana de la caja de herramientas RTWT Fig. 3.18 Ventana de configuración para una entrada analógica en RTWT Fig. 3.19 Selección de tarjeta compatible con RTWT Fig. 3.20 Circuito Eléctrico de la interfaz de potencia Fig. 3.21 Sistema motriz del PIS Fig. 4.1 Fig. 4.2 Fig. 4.3 Fig. 4.4 Fig. 4.5 Fig. 4.6 Fig. 4.7 Fig. 4.8 Sistema PIS-Controlador Prototipo del PIS empleado Controlador PID con filtro Respuesta del PIS ante el controlador PID con filtro Controlador PID con filtro y un elemento integrador doble Respuesta del PIS ante el Controlador PID con elemento integrador doble Parámetros empleados para crear la RNA BP1 Parámetros empleados para crear la RNA BP2

PAG. 4 5 6 10 11 13 14 16 17 19 19 22 38 41 42 43 43 45 46 47 49 50 50 52 52 54 55 55 57 57 58 60 60 62 63 65 65 66 67 67 68 iv

Instituto Tecnológico de León

Técnicas de Computación Suave (IA)

Fig. 4.9 Representación grafica de la RNA BP1 Fig. 4.10 Representación grafica de la RNA BP2 Fig. 4.11 Valores MSE de RNA BP1 durante su entrenamiento Fig. 4.12 Respuesta de la RNA BP1 después del tercer ciclo de entrenamiento Fig. 4.13 Valores MSE de RNA BP2 durante el cuarto ciclo de entrenamiento (Datos obtenidos de controlador PID con Filtro) Fig. 4.14 Respuesta de la RNA BP2 después del cuarto ciclo de entrenamiento (Datos obtenidos de controlador PID con Filtro) Fig. 4.15 Respuesta de la RNA BP2 después del cuarto ciclo de entrenamiento (Datos obtenidos del controlador PID con doble Integrador) Fig. 4.16 Modelo Real Time Workshop de la RNA BP2 Fig. 4.17 Control RNA BP2 con señal de corrección auxiliar Fig. 4.18 Respuesta del PIS controlado con RNA BP2 mas la señal auxiliar Fig. 4.19 Controlador Final implementado con RNA´s tipo BP Fig. 5.1 Respuesta del PIS ante la RNA BP1 Fig. 5.2 Respuesta del PIS ante la RNA BP2 (Datos de Controlador PID con Filtro) Fig. 5.3 Respuesta del PIS ante la RNA BP2 (Datos de Controlador PID con Doble Integrador) Fig. 5.4 Respuesta del PIS controlado por la RNA BP2 mas la RNA AUX

68 68 70 71 72 72 73 74 75 76 76 78 79 80 81

INDICE DE TABLAS PAG. 48 59 69 71

Tabla 3.1 Tabla 3.2 Tabla 4.1 Tabla 4.2

Funciones de entrenamiento disponibles en Matlab para una RNA BP Datos técnicos de la tarjeta PCI6014 de National Instruments Parámetros de entrenamiento empleados en la RNA BP1 Parámetros de entrenamiento empleados en la RNA BP2

Ingeniería Electromecánica

v

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

PROLOGO
Es común ver en películas de ciencia ficción situaciones en las que maquinas creadas por el hombre llegan a tal grado de desarrollo que logran su autonomía, y algunos autores son tan osados que en ocasiones llegan ha dotarlas de cualidades, que por el momento no tienen, tales como inteligencia, odio, amor, etc. No creo imposible llegar a tal grado de desarrollo en la tecnología, es un hecho que día con día se analizan nuevas técnicas encaminadas a emular la naturaleza en forma artificial. En mi opinión, las computadoras, o alguna herramienta derivada de estas, tendrán un papel importante en el logro de esta meta. Un área reciente conocida como Técnicas de Computación Suave abarca un conjunto de técnicas enfocadas a emular la inteligencia de los seres vivos, es increíble la cantidad de trabajos que actualmente se realizan en esta área con el fin de pulir o mejorar las aplicaciones denominadas de Inteligencia Artificial. El hecho de dotar de inteligencia más que de autonomía a una maquina parece de entrada algo atractivo para la ciencia, la industria, y aun la misma sociedad, con el fin de atisbar en lo que es el uso de Técnicas de Computación Suave en el control de sistemas físicos (en especial mecánicos) reales hemos desarrollado con agrado esta tesis en la cual se aplica una Red Neuronal Artificial como controladora de un sistema no lineal (péndulo invertido). Deseando que la presente tesis sea un preámbulo para aplicaciones futuras en control de sistemas electromecánicos empleando Técnicas de Computación Suave y esperando sea de utilidad lo aquí presente dejo a su consideración el trabajo.

Atentamente El Autor soterios77@hotmail.com

Instituto Tecnológico de León

vi

CAPITULO 1 INTRODUCCION
1.1 DESCRIPCION GENERAL Hoy en día la computadora es tan importante para el ingeniero como lo fue en su momento la regla de cálculo. Mediante la computadora es posible resolver sistemas complicados de ecuaciones diferenciales que nos pueden ser útiles para implementar sistemas de control computarizados. Las milésimas de segundo que le lleva realizar estas operaciones permiten que ésta pueda ser utilizada para controlar sistemas en tiempo real. ¿Qué tiene de común el control de la trayectoria en un proyectil, el control de la aceleración en un tren levitable, el control de movimiento en las extremidades de un robot con el fin de que se mantenga erguido o se desplace?, lo mas evidente quizás sea que cada uno de estos sistemas de control involucran cálculos y toma de decisiones rápidas para mantener los centros de masa de elementos del sistema en la posición y dirección correcta. La acción del control en un péndulo invertido es similar a los sistemas mencionados anteriormente. El tipo de control que se implementa en cada caso depende de varios factores, entre ellos si el sistema a controlar es lineal o no lineal, estable o inestable, etc. Hasta hace pocos años el control de sistemas lineales se realizaba principalmente mediante reguladores Proporcional, Integral, derivativo o una combinación de estos. Para el caso de sistemas no lineales, en especial de varias entradas y salidas, era común utilizar variables de estado. Hoy en día cada vez es más común utilizar controles “inteligentes” para realizar estas tareas. En esta tesis se presenta la implementación de un regulador mediante Redes Neuronales Artificiales (RNA) para controlar la posición (vertical) de un Péndulo Invertido Simple (PIS). En el capitulo 2 se presenta información teórica relacionada con la naturaleza física del PIS, así como diferentes configuraciones de las RNA y su forma de entrenamiento, la información presentada en el capitulo 2 referente a RNA´s es algo extenso con la finalidad de proporcionar información suficiente sobre las RNA´s, compilando información que por lo regular solo es accesible, por el momento, en el idioma ingles. La programación para la implementación del regulador con RNA`s en tiempo real fue realizado empleando el software MATLAB 7.0, SIMULINK, Real Time Workshop y Real Time Windows Target. En el capitulo 3 se describen algunas características de estas herramientas para la implementación del regulador con RNA`s. Los elementos mecánicos y electromecánicos utilizados en el prototipo, así como los elementos sensores influyen en los datos que se presentan al regulador PID utilizado para generar los datos de entrenamiento y también a la RNA implementada, la forma en la que se adquieren y manipulan dichos datos se aborda en el capitulo 3. En el capitulo 4 se implementan en Matlab dos controladores que no equilibran el PIS pero generan un comportamiento aceptable de este, los cuales generan el conjunto de datos que

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

representan el comportamiento a imitar. Con auxilio de estos controladores se logra obtener un comportamiento en el PIS adecuado que se utiliza para entrenar una RNA. Así mismo, en el capitulo 4 se indica la forma en que la RNA se diseña, entrena e implementa en un modelo Real Time Workshop, y posteriormente es auxiliada en forma manual mediante una señal de voltaje con el fin de mejorar la señal de control, la señal de control auxiliar que se introduce es monitoreada y posteriormente utilizada para entrenar una RNA que participa en la tarea de control del PIS, logrando con esto estabilizar el PIS. Al contar con el modelo Real Time Worshop de una RNA, esta se puede presentar ante condiciones distintas de las contenidas en su conjunto de entrenamiento, con el fin de observar si la RNA asimilo o no la función requerida, esto se aborda en el capitulo 5. En el capitulo 6 se exponen las conclusiones y observaciones emanadas de los datos obtenidos y de la experiencia adquirida durante el desarrollo de la tesis, culminando con algunas propuestas de trabajos futuros.

1.2 HIPOTESIS La Red Neuronal Artificial tipo Retro propagación (BP) es capaz de generar la señal de control que estabiliza un prototipo real del Péndulo Invertido Simple, aprendiendo de un conjunto de datos que representan el comportamiento deseado.

1.3 OBJETIVOS GENERALES • • Desarrollo de un prototipo PIS (Péndulo Invertido Simple) controlado por una red neuronal artificial en tiempo real. Obtener de un PID (Proportional Integral Derivative) los datos de entrenamiento para alimentación de la RNA BP como controladora de un prototipo PIS en tiempo real.

1.3.1 OBJETIVOS ESPECÍFICOS • • • • • • • Obtener el prototipo físico del sistema PIS a utilizar en la tesis. Obtener un controlador que genere la señal de control a imitar. Seleccionar el conjunto de datos de entrenamiento para la RNA BP. Implementar en software la RNA BP con los toolbox de MatLab. Entrenar la RNA BP en base al conjunto de datos obtenidos. Implementar la RNA BP en un modelo de Real Time Workshop. Integrar la RNA BP modelada como controladora del prototipo PIS en tiempo real.

Objetivos, Alcances y Limitaciones

2

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

1.3 ALCANCES Y LIMITACIONES En esta tesis se emplea un prototipo de PIS fabricado con elementos disponibles en el departamento de Electromecánica de esta institución, algunos de los cuales su comportamiento es no lineal, por lo que dicho prototipo presenta un comportamiento muy distinto al del modelo teórico. Debido a esto la tarea de control a imitar por la RNA BP no es la que equilibra el PIS sino que solo tiende a estabilizarlo. Aun así nos permitirá observar las cualidades de aprendizaje presentes en la RNA BP. Por otro lado, en este trabajo no se analiza la forma en que influyen cada uno de los parámetros de diseño y entrenamiento de una RNA BP, al ser usadas en aplicaciones de control, sino que solo se muestra que una RNA BP puede emular y generalizar de forma aceptable la tarea de control presentada en su conjunto de entrenamiento.

REFERENCIAS DE CAPITULO
1. 2. 3. Furnas, J.M. and R.d. TIME-LIFE, EL INGENIERO. El Ingeniero, ed. C. Cientifica. 1972, Mexico, DF: Time-Life Inc. 9. Anderson, C.W., Learning to Control an Inverted Pendulum Using Neural Networks. IEEE Control Systems Magazine, 1989. April 1989: p. 31-37. Wang, D. and J. Huang, A Neural-Network-Based Approximation Method for Discrete-Time Nonlinear Servomechanism Problem. IEEE Transactions on Neural Networks, 2001. 12: p. 591-597. Cembrano, G. and G. Wells, Aplicaciones del Aprendizaje Neuronal al Control de Robots. Inteligencia Artificial, 1997. 1: p. 34-40. Freeman, J.A. and D.M. Skapura, Neural Networks: algorithms, applications, and programming techniques. 1 ed. Computation and Neural Systems, ed. C. Koch. Vol. 1. 1991, California: Addison Wesley. 45-124,341-371.

4. 5.

Capitulo 1. Introducción

3

CAPITULO 2 PENDULO INVERTIDO Y REDES NEURONALES ARTIFICIALES

El hombre desde sus inicios ha cohabitado con su entorno y, gran parte de sus acciones han sido encaminadas a controlar o modificar dicho entorno con el fin de obtener beneficio. Con el fin de lograr un comportamiento adecuado a sus expectativas, el hombre ha desarrollado técnicas que le permiten monitorear y controlar fenómenos o procesos. Hasta hace algunas décadas solo se empleaba lo que se conoce como Teoría de Control Moderna, pero debido a la creciente complejidad de las tareas a controlar se han investigado nuevas técnicas de control, una de ellas y de la cual trataremos en este trabajo es empleando Técnicas de Computación Suave. En este capitulo se muestra información del Péndulo Invertido, el cual tomaremos como sistema a controlar y se expondrá una breve descripción de las Redes Neuronales Artificiales (un subconjunto de las técnicas de computación suave) las cuales nos servirán como elementos controladores.

2.1 PRINCIPIOS BÁSICOS DEL SISTEMA PENDULO INVERTIDO El Péndulo Invertido es un dispositivo mecánico compuesto básicamente por una barra que oscila libremente en un plano, soportada por uno de sus extremos en el cual puede pivotear libremente [1]. La barra del péndulo puede estar montada sobre una base ya sea móvil o estática, ver figura 2.1.

θ
Barra

F Pieza base

Pivote

Fig. 2.1 Representación de un Péndulo Invertido.

Para mantener en equilibrio un Péndulo Invertido en su posición vertical se puede aplicar una fuerza de control al sistema mediante distintas configuraciones mecánicas entre las cuales se puede mencionar la del Péndulo Invertido Simple de base móvil (PIS) [1-4], el Péndulo Invertido Simple de Base Estática [5-7] y el Péndulo de Furuta [8-10]. En este trabajo se emplea un péndulo de la forma PIS (figura 2.2) por las ventajas económicas y de manufactura que presenta su implementación. En dicho prototipo la fuerza aplicada a la base móvil se realiza a través de una banda de transmisión accionada por un

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

motor eléctrico de corriente continua. El movimiento de la base móvil está limitado a un solo eje por medio de una barra guía y una superficie de soporte. El PIS es un sistema no lineal (las ecuaciones que representan dicho sistema son de naturaleza no lineal), inestable (el péndulo puede volcarse en cualquier momento y en cualquier dirección) y sub-actuado ya que el péndulo no recibe directamente ninguna señal de control (la señal de control es aplicada a la base móvil), sin embargo puede ser modelado como un sistema lineal en torno a la posición de equilibrio para facilitar la implementación del controlador [1, 5, 11-13].

PIS Motor Impulsor

Banda de Transmision

Barra Guía

Superficie de soporte

Fig. 2.2 Péndulo Invertido Simple de base móvil (PIS)

2.1.1 MODELADO DE UN PIS En la literatura existe una gran cantidad de métodos que permiten obtener el modelo matemático de un PIS [1, 5, 7, 8, 10, 12, 14-18], en nuestro caso el desarrollo del modelo matemático tomara como base la metodología empleada en el sitio web de The University of Michigan [17], y se apoya en los diagramas de cuerpo libre mostrados en la figura 2.3, en dicha figura se considera una fuerza externa, F, que actúa sobre la base móvil, esta es la señal de control. Se determinan las ecuaciones dinámicas que modelan el sistema, y posteriormente se linealizan en torno al punto en el cual el ángulo del péndulo θ = π (asumiendo que el péndulo no se mueve mas que unos pocos grados a ambos lados de la vertical, a la cual se le ha asignado el ángulo π ).

Teoría Básica

5

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

P N mx mlθ

F

bx

π θ
mg

l

x x

-N -P

Fig. 2.3 Diagramas de cuerpo libre para un PIS

En el desarrollo del modelo matemático se consideran las siguientes variables y constantes del sistema, los cuales deben expresarse en un sistema de unidades coherente: M m b l I F x Masa del carro Masa del péndulo Fricción entre la base móvil y la superficie de desplazamiento Longitud del pivote al centro de gravedad del péndulo Inercia del péndulo Fuerza aplicada al carro Posición de carro Ángulo del péndulo desde la vertical superior Componentes de la fuerza de reacción en el punto de pivoteo

θ
PyN

Sumando las fuerzas que actúan sobre el carro en dirección horizontal, se obtiene la siguiente ecuación de movimiento:
M x+bx+ N = F
** *

Ec. 2.1

Haciendo lo mismo para el péndulo:
N = m x + mlθ cos θ − mlθ 2 senθ
** ** *

Ec. 2.2

Si se sustituye el valor de N definido en la ecuación 2.2 dentro de la ecuación 2.1, se obtiene la primera ecuación de movimiento del sistema completo:

( M + m ) x + b x + mlθ cos θ − mlθ 2 senθ = F
Posteriormente se suman las fuerzas que actúan perpendiculares al péndulo: Psen θ + N cos θ − mgsen θ = ml θ + m x cos θ
** **

**

*

**

*

Ec. 2.3

Ec. 2.4

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

6

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Para aislar los términos P y N de la ecuación anterior, se suman los momentos alrededor del centro de gravedad del péndulo para obtener la ecuación siguiente:

Plsen θ − Nl cos θ = I θ

**

Ec. 2.5

Al combinar la ecuación 2.4 con la 2.5 se obtiene la ecuación dinámica del sistema:

(I + ml )θ + mglsen θ = −ml x cosθ
2 ** **

Ec. 2.6

Como se menciono anteriormente, las ecuaciones obtenidas son no lineales y es necesario linealizarlas en torno a un ángulo θ = π. Asumiendo que θ = π + ø (donde ø representa un ángulo pequeño desde la vertical y que 1 + sen(θ) ≈ 1, sen(θ) ≈ - ø y cos(θ) ≈ -1)). Por lo tanto, cos(θ) = -1, sin(θ) = -ø, y (dθ /dt)2 = 0. Después de linealizar se obtienen las siguientes ecuaciones:

(I + ml )φ − mgl φ = ml x
2 ** ** * **

**

Ec. 2.7 Ec. 2.8

(M + m ) x + b x − ml φ = u
(Donde u representa la señal de control o fuerza aplicada)

2.1.2 DISEÑO DE UN CONTROLADOR PARA EL PIS

La primer solución al problema de control del sistema Péndulo Invertido fue descrita por James K. Roberge [14]. Una vez obtenidas las ecuaciones representativas del sistema se pueden emplear distintos métodos de control para equilibrar el sistema [1-13, 15, 17, 19], algunos de ellos trabajan en el dominio de la frecuencia por lo que es necesario obtener la Transformada de Laplace de las ecuaciones del sistema [1, 4, 6, 9, 17] (suponiendo condiciones iniciales nulas), lo que da como resultado variables en el dominio de la variable s ( X(s), U(s) y Φ(s) ):

(I + ml )Φ (s)s
2

2

− mgl Φ ( s ) = ml X ( s ) s 2

Ec. 2.9 Ec. 2.10

(M + m ) X ( s) s 2 + b X ( s) s − ml Φ ( s) s 2 = U ( s)

Algunos de estos métodos están limitados a que los controladores solo analizan una señal como salida a controlar del sistema. Si consideramos el ángulo como la salida a observar del sistema, obtendríamos la siguiente función de transferencia:

Teoría Básica

7

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

ml 2 s q Φ (s) = b( I + ml 2 ) 3 ( M + m)mgl 2 bmgl U (s) s 4 + s s − s − q q q Donde,

Ec. 2.11

q = (M + m ) I + ml 2 − (ml )

[

(

)

2

]

Ec. 2.12

Para salvar esta limitación de tener una sola salida controlable podría diseñarse el controlador empleando variables de estado en la expresión de las ecuaciones dinámicas [1, 2, 6, 10, 13, 17, 18], tomando como base la siguiente representación general [1, 6]: X = A • X + B •U
*

Ec. 2.13 Ec. 2.14

Y = C • X + D •U
Y considerando el vector X compuesto de las siguientes variables: ⎛ * * ⎞ ⎜ (x1 , x2 , x3 , x 4 ) = ⎜ x, x, Φ, Φ ⎟ ⎟ ⎟ ⎜ ⎝ ⎠ Se pueden obtener las siguientes matrices de estado:

Ec. 2.15

0 ⎡*⎤ ⎡ x⎥ ⎢ ⎢ ** 0 ⎢x⎥ ⎢ ⎢ * ⎥ = ⎢0 ⎢Φ ⎥ ⎢ ** ⎢Φ ⎥ ⎢0 ⎣ ⎦ ⎢ ⎣

1 − ( I + ml 2 )b I ( M + m) + Mml 2 0 − mlb I ( M + m) + Mml 2

0 m 2 gl 2 I ( M + m) + Mml 2 0 mgl ( M + m) I ( M + m) + Mml 2

0⎤ 0 ⎤ ⎡ ⎤ ⎡ ⎥⎢ x ⎥ ⎢ ⎥ I + ml 2 0⎥ * ⎢ 2 ⎥ ⎢ ⎥ ⎥ ⎢ x ⎥ + ⎢ I ( M + m) + Mml ⎥ u 1⎥ 0 ⎥ ⎢Φ ⎥ ⎢ ml ⎥⎢ * ⎥ ⎢ ⎥ 0 Φ ⎥ ⎣ ⎦ ⎢ I ( M + m) + Mml 2 ⎥ ⎦ ⎣ ⎦

⎡ ⎤ ⎢x⎥ * ⎡1 0 0 0 ⎤ ⎢ x ⎥ ⎡ 0 ⎤ y=⎢ ⎥⎢ ⎥ + ⎢ ⎥ u ⎣0 0 1 0 ⎦ ⎢Φ ⎥ ⎣0 ⎦ * ⎢Φ ⎥ ⎣ ⎦ Al tener una representación matricial con variables de estado es posible diseñar controladores empleando distintas técnicas de control: mediante el ajuste de polos, empleando una entrada de referencia, empleando realimentación de estado o mediante un

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

8

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

observador, etc. [1, 2, 6]. Estas técnicas de control permiten estabilizar mas de un parámetro del sistema. El éxito en la estabilización del sistema PIS, mediante el controlador creado con alguna de estas técnicas, dependerá en gran parte de lo cercano que sea el modelo obtenido en relación a la dinámica actual del sistema. Podemos decir que un control tradicional, en los casos que se conocen sus ecuaciones dinámicas presentaría la forma general de la siguiente ecuación [16].

Ft = b1 x + b2 x + b3 Φ + b4 Φ

*

*

Ec. 2.16

En la cual se asume que la fuerza de control es una función lineal de las cuatro variables de estado y además con coeficientes constantes. En los dos métodos mencionados es necesario contar con suficiente conocimiento del sistema así como realizar un adecuado desarrollo matemático para obtener un modelo adecuado. Dado que en ocasiones es difícil y en ocasiones casi imposible obtener la información necesaria para diseñar un sistema de control clásico, se han investigado otras alternativas, entre ellas podemos mencionar el uso de Redes Neuronales Artificiales [16, 20, 21], Lógica Difusa [18], sistemas híbridos [11] y controles adaptativos [2] .

2.2 REDES NEURONALES ARTIFICIALES
El interés por crear máquinas que de alguna forma emulen el comportamiento humano tiene siglos de antigüedad, ya en el siglo primero de nuestra era se realizaban mecanismos animados, los de Herón de Alejandría [22], y en el siglo XVII Jacques de Vaucason creó el primer mecanismo que podríamos llamar humanoide [23], aunque no es sino hasta el siglo XX cuando se presenta una cooperación mas activa entre diferentes ramas de la ciencia que permitieron hacer mas viable dicha idea. Al incrementarse la complejidad de las tareas ha realizar por una máquina se vio la necesidad de desarrollar nuevas técnicas que facilitaran el control de dichos mecanismos, de esta forma surgió la nueva rama de la computación conocida como computación suave (Soft Computing), la cual pretende emular el comportamiento inteligente de los seres vivos con el fin de dotar de inteligencia a máquinas o procesos [24]. Dentro de la computación suave podemos mencionar las técnicas que emplean: Lógica Difusa, Algoritmos Genéticos y Redes Neuronales Artificiales (RNA´s) [25]. Las RNA´s tienen su inspiración en la forma en que se modela el funcionamiento del cerebro humano [26-33]. , el procesamiento de la información que percibe el cerebro mediante los sentidos es un mecanismo de procesamiento de datos en forma paralela e involucra fenómenos electro-químicos. El tejido nervioso es el más diferenciado del organismo y está constituido por células nerviosas, fibras nerviosas y la neuroglia, que está formada por varias clases de células. La célula nerviosa se denomina neurona, que es la unidad funcional del sistema nervioso. Hay

Teoría Básica

9

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

neuronas bipolares, con dos prolongaciones de fibras y multipolares, con numerosas prolongaciones. Pueden ser neuronas sensoriales, motoras y de asociación [26-31]. Las partes principales de una neurona biológica pueden observarse en la figura 2.4. El tamaño y la forma de las neuronas son variables, pero tienen las mismas subdivisiones básicas. El cuerpo de la neurona contiene el núcleo o soma. El soma se encarga de todas las actividades metabólicas de la neurona y recibe la información de otras neuronas vecinas a través de las conexiones sinápticas. Las dendritas son las conexiones de entrada de la neurona. Por su parte el axón es la "salida" de la neurona y se utiliza para enviar impulsos o señales a otras células nerviosas. Cuando el axón esta cerca de sus células destino se divide en muchas ramificaciones que forman sinapsis con el soma o axones de otras células. Esta unión puede ser "inhibidora" o "excitadora" según el transmisor que las libere [32].

dendritas

soma axon sinápsis

soma

dendritas

Fig. 2.4 Partes Principales de una Neurona Biológica [29].

Los desarrollos obtenidos en las ultimas décadas en el área de electrónica y computación ha permitido emular la neurona biológica generando lo que ahora se conoce como neurona artificial, dicha emulación actualmente se puede realizar a nivel software o hardware [29, 34, 35], en este trabajo se opto por simular el modelo de la RNA a nivel software. En la figura 2.5 se muestra una posible clasificación de los métodos empleados en la implementación de RNA´s. La flexibilidad se refiere a las facilidades que ofrece el sistema para modificar el modelo de RNA, mientras que la eficiencia hace referencia al grado de adaptación de la red con la aplicación en términos de autonomía, velocidad de cálculo y densidad de empaquetamiento (neuronas artificiales por área) [35].

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

10

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

EFICIENCIA

FLEXIBILIDAD

NEUROCOMPUTADORES

SIMULADORES SOFTWARE Para PC de uso general

NEUROCOMPUTADORES de uso especifico

NEUROCOMPUTADORES de uso general

PC Paralela convencional

PC serie convencional

Neuro Chips

Matriz de Procesadores Neuro Chips

Tarjetas Coprocesadoras

Mixtos A/D

Anal.

Dig.

Fig. 2.5 Diferentes métodos de implementación de RNA´s [35].

La ventaja que presentan las RNA´s a otros tipos de controladores es que estas aprenden el funcionamiento deseado mediante ejemplos sin necesidad de un modelado matemático que represente la tarea a realizar, incluso las RNA´s tienen capacidad de aproximar funciones no lineales complejas [20, 21, 27, 32, 36].

2.2.1 BREVE HISTORIA DE LAS RNA´S
La primera acción encaminada a emular las neuronas biológicas se dio en 1943 cuando Warren McCulloch, un neurofisiólogo, y un matemático, Walter Pitts, escribieron un documento referente a la manera en la que podían funcionar las neuronas en el cual consideraron la salida de las neuronas de forma binaria [37]. Para reforzar este concepto de las neuronas y como trabajan fue escrito un libro por Donal Hebb, La organización del comportamiento (The Organization of Behavior), el cual fue escrito en 1949 [32]. Este trabajo resaltó el hecho de que, las rutas de comunicación (sinapsis) de las neuronas se fortalecen en el grado en que son empleadas, esto es, en alguna forma desarrollaban nuevas habilidades [30]. En 1957 Jhon Von Neumann sugirió imitar las funciones simples de las neuronas empleando relevadores de telégrafo o tubos de vacío. En el mismo año, Frank Rosenblatt, comenzó a trabajar con el Perceptron. Éste era el modelo de una red de neuronas simple que considera la salida de las neuronas como salida binaria [32]. El Perceptron, que resulto de estas investigaciones, fue construido en hardware. Posteriormente Minsky y Papert mostraron las limitaciones que presentaba el Perceptron ya que por la limitación de su salida binaria solo podía separar un espacio de muestras en dos clases [33]. En 1959 Bernard Widrow y Marcian Off de Stanford desarrollaron modelos que ellos llamaron ADALINE y MADALINE. Estos modelos fueron nombrados de esta manera por el uso de múltiples elementos de adaptación lineal (Multiple ADAptive LINear Elements)

Teoría Básica

11

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

[32] y a diferencia del Perceptron incluían un peso de conexión con entrada constante de 1 (sesgo o bias).y empleaba una función de activación bipolar [30]. Durante las siguientes dos décadas hubo un aletargamiento en el desarrollo de las RNA´s y a principios de los 80´s se presentaron dos aportaciones que nuevamente despertaron el interés de los investigadores, uno de ellos fue el trabajo de Hopfield en el cual aproximaba el funcionamiento de las neuronas desde el punto de vista energético, y el otro trabajo fue la presentación del algoritmo de aprendizaje de Retro propagación empleado en una red Perceptron de capas Múltiples, propuesto por Verbos [32, 38].

2.2.2 CARACTERÍSTICAS DE LAS RNA´S
Las RNA´s tienen características que no se encuentran presentes en el modelo de computador propuesto por Von Neumann, algunas de estas son [25, 26, 30, 33]:

• • • • • • •

Procesamiento Paralelo Calculo y representación distribuida Habilidad de aprender Socráticamente (por medio de ejemplos) Habilidad de generalizar Adaptabilidad Tolerancia a fallas Las conexiones en la RNA almacenan la información del patrón de entrenamiento

2.2.3 NEURONA ARTIFICIAL
El elemento básico de una RNA es la Neurona Artificial (también conocida como; PE por sus siglas en Ingles, Process Element, elemento de procesamiento básico ó procesador elemental). La neurona artificial o PE propuesto por McCullon y Pitts se puede observar en la figura 2.6 y es una de las más simples.

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

12

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

E n t r a d a s

peso 1

peso 2

Σ
peso n

Entrada a la neurona

salida de la neurona

Umbral

Fig. 2.6 Modelo McCullon-Pitts de una neurona [33].

Se presentan varias señales de entrada a la neurona, y cada una de estas señales es multiplicada por un valor (peso de conexión). En el caso más simple (este caso), estos productos solo son sumados, y alimentados a través de una función de transferencia de límites rígidos para finalmente generar un resultado binario. Si la entrada a la neurona es menor al valor de Umbral entonces la salida será 0 en caso contrario será 1 [26, 32, 33]. En este modelo las conexiones de entrada (flechas) modelan los axónes y dendritas de una neurona biológica, los pesos de conexión a las sinapsis, y la función de límites rígidos a la actividad del soma. Este modelo presenta una gran cantidad de simplificaciones que no reflejan el verdadero funcionamiento de una neurona biológica [33]. El modelo matemático de la neurona McCulloc-Pitts esta dado por
u = ∑ wj y j +θ
j =1 n

Ec. 2.17

Donde: u = Valor de la señal de salida de la neurona, regularmente se considera igual al nivel de activación de la neurona. w = Peso de la entrada j. y= Valor de señal de entrada j. θ = Valor de umbral o sesgo de la función. n = Numero de entradas a la neurona. La implementación de una neurona artificial también es posible mediante estructuras de redes que utilizan otras funciones de sumatoria o diferentes funciones de transferencia, el caso general se ve representado en la figura 2.7

Teoría Básica

13

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

y1

w1
Función de entrada Función de activación Función de salida

u

wn

yn

NUCLEO DE NEURONA

Fig.

2.7 Modelo de neurona artificial general [39].

Las funciones de entrada más empleadas y conocidas son [26, 39]: a) sumatoria del producto de los valores de entrada por sus respectivos pesos.

∑w
j =1

n

j

yj

Ec. 2.18

b) Productoria de las entradas pesadas (producto de todos los valores de entrada, multiplicados por sus correspondientes pesos).

∏w
j =1

n

j

yj

Ec. 2.19

c) Máximo de las entradas pesadas. Solo considera el valor de entrada más fuerte, previamente multiplicado por su peso correspondiente.

max j w j y j d) Distancia euclidiana.
∑ y j − wij
n

(

)

Ec. 2.20

j =1

(

)

2

Ec. 2.21

Una neurona artificial puede estar activa o inactiva; esto significa que tiene un estado de activación. Algunas neuronas artificiales pueden encontrarse en un valor de activación dentro de un conjunto determinado [39].

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

14

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

La función de activación calcula el estado de actividad de una neurona, esta es una función del valor x proporcionado por la función de entrada (valor de salida en función de entrada). Las funciones de activación más empleadas se mencionan en seguida, y muestran en la figura 2.8: a) Función lineal.

⎧− 1, ⎫ x ≤ −1 a ⎪ ⎪ ⎪ ⎪ 1 −1 ⎪ ax, ⎪ < x < f (x ) = ⎨ a a ⎬ ⎪ ⎪ x ≥ 1a ⎪ 1, ⎪ ⎪ ⎪ ⎭ ⎩ Siendo a un valor que afecta la pendiente de la función. b) Función Sigmoidea.

Ec. 2.22

f (x ) =

1+ e

1 − gx

Ec. 2.23

Siendo g un valor que afecta la pendiente de la función. c) Función Tangente Hiperbólica

f

e gx − e − gx (x ) = tgh (x ) = gx e + e − gx

Ec. 2.24

Siendo g un valor que afecta la pendiente de la función. d) Función Gausiana
f (x ) = A

e

−B

x

2

Ec. 2.25

Siendo A y B un valor que afecta la dispersión de la función. Por ultimo el elemento de procesamiento esta listo para proporcionar el valor de la señal de salida u. Esta salida es transferida a otros elementos de procesamiento, o a una conexión de salida, como corresponda a la estructura de la red. Si la función de activación está por debajo de un umbral determinado (ver figura 2.6), ninguna salida se pasa a la neurona siguiente. Normalmente los valores de entrada a una neurona están restringidos dentro de un rango: [ 0 , 1 ], [ -1 , 1 ], etc.

Teoría Básica

15

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

+1 f (x, a ) 1 f (x, a2 )

+1

f (x, g1 )

f (x, g2 )

(a) Función de Activación lineal

-1

(b) Función de Activación Tangente hiperbólica

-1

+1

f (x, g1 )

+1

f (x, g2 )

f (x, A1 , B )
1

f (x, A 2 , B )
2

(c) Función de Activación Sigmoidea

(d) Función de Activación Gausiana

Fig. 2.8 Funciones de activación más comúnmente empleadas

Dos de las funciones de salida más empleadas son (figura 2.9): a) La función identidad. Donde la salida es la misma que la entrada.
u i (t ) = f ( x )

Ec. 2.26

Siendo ui(t) el valor de la señal de salida de la neurona i en el tiempo t. b) La función binaria.

ui t

( )=

{

1 0

si u i ( t ) ≥ ξ i si u i ( t ) < ξ i

Ec. 2.27

Siendo ξ i el valor de umbral de la neurona i.

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

16

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

f (x) +1

ui (t )

+1

-1

+1

ui (t )

0

ξi

f (x)

-1
(a) Función Identidad

-1
(b) Función Binaria

Fig. 2.9 Funciones de salida más empleadas

2.2.4 RNA

Una RNA es una estructura de procesamiento paralelo de datos compuesta de PE´s o neuronas, interconectados mediante un gran numero de conexiones (sinapsis) [33, 34], una RNA se podría considerar una variación de la idea del Procesamiento Distribuido en Paralelo ( PDP) [40]. En una RNA los PE´s se encuentran agrupados en capas (layers) y altamente interconectados por medio de sinapsis; de esta forma la estructura posee varias entradas y salidas, las cuales es común manejarlas en forma de vectores. Las sinapsis son establecidas (entrenadas) para reaccionar de una forma determinada a los estímulos de entrada y generar una salida deseada. La configuración de las interconexiones es representada normalmente por medio de Graficas Dirigidas. Una Grafica Dirigida consiste de nodos ( en el caso de una RNA representan las neuronas, y las señales de entrada externas) así como flechas direccionadas (que representan las uniones sinápticas) [41]. Por lo tanto, en una RNA la arquitectura y su dinámica define un elemento aproximador de salida(s) en base a su(s) entrada(s), en la cual una función desconocida f: X→Y genera las parejas de muestras observadas (x1, y1), (x2, y2), (x3, y3), ….Los datos de muestra modifican parámetros en las neuronas de la RNA de tal forma que dicha RNA responda en una forma cercana a la función desconocida f. Dicha aproximación tiende a mejorar conforme se incrementa la cantidad de muestras [42]. Podemos decir que una RNA esta definida por cuatro parámetros [26]: 1. Tipo de Neurona Artificial (o nodo, cuando se realiza su grafica) 2. Arquitectura de conexión. En relación a la manera en que esta organizada la conexión entre las capas de neuronas

Teoría Básica

17

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

3. El algoritmo de entrenamiento 4. El algoritmo de recuperación Como se observa en la figura 2.10, podemos distinguir 3 tipos de capas [39]:
• • •

De entrada. Donde se recibe la información proveniente de fuentes externas a la RNA. Ocultas. Son las que se encuentran en la estructura interna de la RNA y no tienen contacto directo con el exterior. De salida. Transfiere la información obtenida por la RNA hacia el exterior.

Básicamente, todas las RNA tienen una estructura o topología similar a la que se muestra en la figura 2.10. Existen redes útiles que contienen una sola capa, o aun un solo elemento, pero la mayoría de las aplicaciones requieren redes que al menos tengan los tres tipos de capa. La capa de neuronas de entrada recibe los datos ya sea por medio de archivos de entrada o en aplicaciones de tiempo real directamente de sensores. La capa de salida envía información directamente al “mundo exterior”, ya sea a un proceso de cálculo secundario o la etapa de potencia electrónica de un sistema de control mecánico, por ejemplo. Entre estas dos capas puede haber muchas capas ocultas. Estas capas internas contienen neuronas interconectadas en varias estructuras. La entrada y salida de cada una de estas neuronas ocultas simplemente alimenta a otras neuronas. Todas las neuronas correspondientes a una capa pueden estar conectadas con todas las neuronas de las capas vecinas, esto seria una Conexión Completa. Cuando no existen todas las conexiones posibles de una neurona o capa de neuronas se dice que están Parcialmente Conectadas. Existen dos clasificaciones importantes de arquitecturas de conexión que se distinguen por el número de conjuntos de entradas y salidas, y la cantidad de capas empleadas [26]:
• •

Auto-asociativas. En estas RNA´s las neuronas de entrada son también las neuronas de salida. Hetero-asociativas. Los conjuntos de neuronas de entrada son distintas a las neuronas de salida (un ejemplo es el Perceptron y el Perceptron de capas Múltiples)

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

18

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

x1 x2 x3 x4 f (x) x5 x6 xn
n NODOS DE ENTRADA
CAPA DE ENTRADA m neuronas CAPA OCULTA 1 j neuronas CAPA DE SALIDA s salidas
1,3

f (x)
1,1

f (x)
2,1

f (x)
1,2

f (x)
s,1

f (x)
2,2

f (x)
s,i

f (x)
2, j

f (x)
1,m

Fig. 2.10 Grafica dirigida de una RNA general [39].

Considerando la existencia de conexiones de realimentación se pueden distinguir dos clases de arquitecturas (también mostradas en la figura 2.11) [26]:

Arquitectura de prealimentación (feedforward). No existe alguna conexión desde las neuronas de salida hacia las neuronas de entrada. En esta RNA no se almacenan los valores de salida previos o el estado de activación de alguna de sus neuronas.
RNA con prealimentación (Feedforward)

y (t )

ui (t )

y (t )

RNA con Realimentación (Feedback)

ui (t )

Fig. 2.11 Ejemplos de RNA´s con distinta arquitectura de alimentación [25].

Teoría Básica

19

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Arquitectura de Realimentación (feedback). Existen conexiones desde las neuronas de salida hacia las neuronas de entrada. En este tipo de RNA´s es necesario almacenar los valores previos de salida y los estados de activación de algunas neuronas.

La manera en que las neuronas se encuentran conectadas a otras tiene un impacto significativo en la operación de la red. Para una clasificación relacionada con la dirección del flujo de la información y los modelos existentes se puede consultar el articulo de Jain [33].

2.2.5 ENTRENAMIENTO DE UNA RNA

Una de las características fundamentales de las RNA es el hecho de que pueden comportarse como aproximadores universales. El teorema de aproximación menciona que debido a la capacidad que posee una RNA para aprender funciones es posible aproximar cualquier función f con una determinada exactitud. El teorema de aproximación da como resultado lo siguiente: Establece que existe una RNA determinada que puede aproximar cualquier función, aunque dicho teorema no define como debe construirse dicha RNA, no dice nada de las dimensiones, cantidad de PE´s o capas, que debe contener dicha RNA. En el diseño de RNA´s es posible emplear distintas estructuras que pueden desempeñar la misma función, cada una de ellas con sus propios parámetros de aprendizaje [25, 26, 31, 32, 36, 43]. Las RNA´s son estructuras inherentemente plásticas (realizan modificaciones en algunos parámetros internos) que aprenden. El proceso de aprendizaje para una determinada RNA se puede realizar bajo distintas condiciones de aprendizaje y empleando distintos algoritmos de aprendizaje. Durante el proceso de aprendizaje la RNA debe ajustar sus valores de pesos y sesgos para aprender la tarea deseada. Para diseñar un proceso de aprendizaje se debe contar con un modelo del entorno en el cual la RNA operará, definiendo lo que es conocido como arquitectura de entrenamiento. Existen tres arquitecturas principales de entrenamiento: supervisado, sin supervisión e híbridos. En este trabajo se empleará el entrenamiento supervisado ya que es posible obtener los datos de entrenamiento necesarios para este tipo de adiestramiento y las RNA´s a emplear en esta tesis pueden ser enseñadas empleando entrenamiento supervisado. Para una definición de los otros dos tipos de entrenamiento se puede consultar a Jain [33], Kröse [40], Matich [39] y Kasavob [26].

2.2.5.1 ENTRENAMIENTO SUPERVISADO [26]

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

20

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

En el entrenamiento supervisado se le proporciona a la RNA el valor de salida correcto para cada uno de los patrones de entrada y posteriormente los valores de los pesos de conexión son modificados de tal forma que la RNA produzca una respuesta en la salida que sea lo mas cercana posible al valor deseado. Durante el entrenamiento de una red el mismo conjunto de datos se procesa tantas veces como sea necesario para que el peso de las conexiones sea el adecuado. Al conjunto de datos que se emplea en el aprendizaje o entrenamiento se le llama “Conjunto de adiestramiento” (Training Set). A pesar del entrenamiento, algunas RNA´s nunca aprenden la tarea deseada. Esto puede ser debido a que los datos de entrada no contienen la información suficiente para producir la salida esperada. Las RNA´s además no convergen si no se tienen los suficientes datos para generar el aprendizaje. Idealmente, debe haber suficientes datos, de tal forma que parte de los datos se conserven de respaldo para verificar la respuesta de la RNA ya entrenada, dichos datos no se le han presentado antes y de esta manera se puede comprobar que la RNA ha generalizado y no solo memorizado los valores que se le presentaron. La memorización se puede evitar no teniendo exceso de PE´s. Si una RNA no puede resolver un problema, se deben revisar: los datos de entradas y salidas, el número de capas, el número de elementos por capa, el tipo de conexión entre capas, las funciones de entrada, activación, salida y de adiestramiento. Por lo regular se emplea un solo tipo de función para todos los PE´s de una capa, pero esto solo por conveniencia de programación. Otra cosa que puede afectar el funcionamiento de una RNA es la forma en que se le presentan los datos de entrada y salida (codificados o no). Las RNA solo tratan con datos de entrada numéricos, sin embargo, normalmente el formato del dato puede ser convertido desde el exterior. Adicionalmente, es necesario en ocasiones escalar el dato, o normalizar este al modelo de la red. Existen muchas leyes (algoritmos o reglas) empleadas para implementar la adaptación de los pesos mediante realimentación durante el entrenamiento. La más empleada es la de propagación de error hacia atrás o retro-propagación (Backpropagation) [32]. En la literatura se pueden encontrar una gran variedad de aplicaciones exitosas de RNA´s, entre estas se tienen: reconocimiento de patrones, control de sistemas, procesamiento de señales, predicción de eventos, etc.[16, 20, 21, 26, 28-30, 32, 34-36, 39-42, 44]. En esta tesis se empleara la RNA de Retro propagación [16] ya que han mostrado resultados aceptables en aplicaciones de control de sistemas. El algoritmo de entrenamiento a emplear será analizado después de describir dicha RNA. Para tener un mejor conocimiento de la RNA de retro propagación primero se verán algunas de sus predecesoras como son la RNA perceptron y la RNA Adaline.
2.2.6 RNA PERCEPTRON

Rosenblatt diseño una gran variedad de RNA´s simples conocidas como Perceptrones. Uno de los Perceptrones más simples estaba compuesto de una sola capa conteniendo varias neuronas similares a las de McCullon y Pitts pero con la variante de que su función de entrada añadía un valor de umbral o sesgo. En dichas neuronas los pesos y sesgos podían ser ajustados para generar un vector de salidas determinado (figura 2.12). La técnica de
Teoría Básica

21

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

entrenamiento que empleo Rosenblatt se le conoce como Regla de Aprendizaje Perceptron [32]. El Perceptron es un algoritmo estocástico de gradiente descendiente que intenta separar linealmente un conjunto de entrenamiento de n dimensiones. El éxito que tuvo el algoritmo del Perceptron se debió a su Teorema de Convergencia, el cual primeramente mostró Rosenblatt [42] y establece que una RNA Perceptron podrá aprender una tarea si es linealmente separable y esto lo realizara en una cantidad de iteraciones determinadas.
b (Umbral) x1 w1 u

x2

w2

Σ wx+b

xn

xn

Fig. 2.12 Perceptron de una sola capa

2.2.6.1 ENTRENAMIENTO DE UNA RNA TIPO PERCEPTRON [42]

Teorema de Convergencia del Perceptron. El algoritmo Perceptron puede encontrar una función de discriminación g i (x ) = xwiT en un número finito de iteraciones si el conjunto de entrenamiento {x1 , K , x m }es linealmente separable.
En general los algoritmos de entrenamiento que cumplen con el teorema de Rosenblatt actualizan su vector de pesos wi en cada iteración si la muestra de entrenamiento x ∈ Di (donde Di es la clase de decisión) produce un valor menor a cero para g i (x ) = xwiT , esto es, si el Perceptron no logra clasificar la muestra x. El Perceptron encuentra un hiperplano de separación cuando g i (x ) = xwiT > 0 para toda x ∈ Di , y g i (x ) = xwiT < 0 para toda x ∉ Di . El algoritmo de aprendizaje del Perceptron podría considerarse como una forma simple de aproximación estocástica. Si se considera una función de criterio de expectación E[ J (w)] se podría obtener una ley de aprendizaje de gradiente descendente ideal de la forma mostrada en la siguiente ecuación:
wk +1 = wk − c k ∇ w E [J (wk )]

Ec. 2.28

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

22

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

En la ecuación 2.28 se considera una apropiada secuencia decreciente de factores de aprendizaje {c k }. La función de densidad probabilística desconocida p(x) define el operador de expectación determinístico E. de tal forma que se pueda estimar el gradiente ∇ w E [J (wk )] . La aproximación estocástica estima E[J] como una simple variable aleatoria J, la cual depende solo de lo observado durante la realización del proceso de muestreo aleatorio. Mediante estas consideraciones se puede llegar a una forma general del algoritmo Perceptron que tendría la forma siguiente:
wk +1 = wk + c k ∑ x
x∈ X

Ec. 2.29

El cual estima el gradiente descendiente considerando un conjunto de vector de entrenamiento X.
genera g1 (x ) = xwT < 0 , entonces se incrementa el vector de pesos en la iteración m+1:

De tal forma que, clasificando dentro de dos clases, si la muestra de entrenamiento x ∈ D1

wm +1 = wm + cx

Ec. 2.30

Si x ∈ D2 genera xwT > 0 , entonces se disminuye el vector de pesos:
wm +1 = wm − cx

Ec. 2.31

Donde c es una constante. Esto de forma repetida hasta que g1 (x ) = xwT > 0 para todo
entonces no se realiza ninguna modificación en el vector de pesos.

x ∈ D1 , y g 2 (x ) = − xwT > 0 para todo x ∈ D2 . Si el Perceptron clasifica correctamente a x

2.2.7 RNA TIPO PERCEPTRON DE CAPAS MULTIPLES

Un modelo más empleado es el Perceptron de Capas Múltiples (similar al esquema mostrado en la figura 2.10). En el Perceptron de Capas Múltiples la señal de entrada es alimentada a la capa de entradas (input layer), posteriormente las señales resultantes son multiplicadas por los pesos de conexión antes de transmitirse a la primer capa oculta (Hidden layer). Dentro de la primera capa oculta estas señales son sumadas y procesadas mediante una función no lineal. Al momento de que los datos procesados abandonan alguna de las capas ocultas, nuevamente son multiplicados por los peso de conexión de cada salida, y vuelven a ser sumados y procesados por la capa oculta siguiente. Finalmente son
Teoría Básica

23

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

multiplicados por los pesos de conexión de su salida y procesados por ultima vez dentro de la capa de salida (Output Layer) para producir la salida de la red. Para el caso en el que el Perceptron clasifique a las muestras dentro de más de dos clases ( empleando mas de una capa) la forma de actualizar los pesos en la iteración m+1, considerando que el Perceptron clasifica a x ∈ Di dentro de la clase Dj, donde j es diferente a i, entonces:
wi (m + 1) = wi (m ) + cx w j (m + 1) = w j (m ) − cx wk (m + 1) = wk (m ) para toda k diferente a i y j

Ec. 2.32 Ec. 2.33 Ec. 2.34

2.2.8 RNA TIPO ADALINE [32]

Las redes ADALINE (ADAptive Linear Element) emplean una estructura de una sola neurona con una función sumatoria y función de transferencia lineal (emplean la estructura básica del Perceptron). Esta estructura permite introducir retardos de tiempo en sus entradas. Un filtro Adaline es un objeto que consiste en un solo elemento de procesamiento (EP); por lo tanto no es técnicamente una RNA. Existen dos modificaciones básicas que se requieren para convertir la estructura general de un PE (Ver apartado 2.2.3) en un filtro Adaline. La primera modificación es añadir una conexión con peso, wo, comúnmente conocida como sesgo. Este término se puede considerar el peso de una conexión de entrada que siempre tiene valor de 1. La segunda modificación es añadir una condición lineal en la salida. La parte del filtro Adaline donde se pesan las entradas se le conoce como Combinador Lineal Adaptivo (ALC por sus siglas en inglés). La salida del ALC determina la salida del filtro Adaline. El procesamiento que realiza el ALC es igual al que realiza el PE típico. El ALC ejecuta un cálculo de suma de productos entre los vectores de entradas y de pesos, y aplica una función de salida para obtener un solo valor de salida.
u t = wo + ∑ w j ∗ x j
j =1 n

Ec. 2.35

Donde wo es el peso del sesgo, o más propiamente dicho el sesgo. Haciendo el valor de entrada para el peso del sesgo igual a 1 la ecuación se convierte en
ut = ∑ w j ∗ x j
j =0 n

Ec. 2.36

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

24

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Ó en notación vectorial
u t = wT x

Ec. 2.37

El filtro Adaline (ó el ALC) es adaptativo en el sentido de que existe un procedimiento bien definido para modificar los pesos que permitan al objeto generar el valor de salida correcto para una entrada determinada. El filtro Adaline (o el ALC) es Lineal debido a que la salida es una simple función lineal del valor de entrada.

2.2.8.1 REGLA DE APRENDIZAJE DEL ERROR CUADRATICO MEDIO LMS (LEAST MEAN SQUARE O LMS) [32]

Si se tuviera un conjunto de vectores de entrada, xk, cada uno de los cuales con su valor de salida correcto, dk , mediante el empleo de la regla LMS puede encontrarse el vector de pesos correcto wk que asocie dichos elementos. Dicha regla puede incrustarse dentro del mismo elemento, el cual podrá auto-adaptarse al momento que sus entradas y salidas deseadas le sean presentadas. Sus pesos son ajustados cada vez que se le presenta una pareja de entrada-salida deseada hasta que la ALC genera salidas correctas. Este proceso se considera un entrenamiento porque no es necesario calcular los valores de los pesos si no que la misma red los obtiene empleando la regla de aprendizaje. Si el valor de la salida actual es uk para el vector de entrada k-esimo, entonces el correspondiente termino de error es ε k = dk – yk , y el error cuadrático medio, o valor de error esperado, esta dado por la siguiente ecuación:

ε k2 =

1 k =L 2 ∑ε k L k =1

Ec. 2.38

L es el número de vectores de entrada en el conjunto de entrenamiento También se puede expresar la Regla LMS de la forma siguiente:

ε k2 = (d k − wT x k )

2

Ec. 2.39

T T = d k2 + wT x k x k w − 2 d k x k w

2.2.8.2 LOCALIZACIÓN DE LA MATRIZ ÓPTIMA DE PESOS MEDIANTE EL MÉTODO DE GRADIENTE DESCENDENTE [32]
Una aproximación para que la ALC encuentre los pesos óptimos es mediante la ubicación del mínimo en la superficie de pesos ya que una búsqueda puramente aleatoria podría no ser eficiente.

Teoría Básica

25

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Se puede iniciar asignando valores arbitrarios a los pesos. Desde este punto de la superficie de pesos, se determina la dirección de la pendiente mas inclinada de descenso. Cambiando los pesos ligeramente de tal manera que el nuevo vector de pesos se dirija hacia la parte baja de la superficie. Se repite el proceso hasta que se alcance el mínimo. En este método se considera implícitamente que la superficie del error es de una forma paraboloide. Regularmente el vector de pesos no se dirige directamente hacia el punto mínimo desde el inicio del proceso. La sección trasversal de la superficie paraboloide del error es usualmente una elipse, de tal manera que el gradiente negativo puede no apuntar directamente al punto mínimo, por lo menos al inicio. Debido a que el vector de pesos es variable en este procedimiento, se escribe como una función explicita del tiempo de procesamiento t (time step). El vector de pesos iniciales esta denotado por w(0), y el vector de pesos en un tiempo determinado t del proceso es w(t). En cada paso, el próximo vector de pesos esta calculado de acuerdo a la siguiente ecuación:
w(t + 1) = w(t ) + ∆w(t )

Ec. 2.40

Donde ∆w(t) es el cambio en w en el tiempo t. En cada punto de la superficie se busca la dirección de la pendiente descendente, por lo que se requiere calcular el gradiente de la superficie. El negativo del gradiente esta en la dirección de la pendiente descendente. Para obtener la magnitud del cambio se debe multiplicar el gradiente por una constante conveniente, µ, lo cual nos da la siguiente ecuación:
w(t + 1) = w(t ) − µ∇ξw(t )

Ec. 2.41

Lo que faltaría sería determinar el valor de ∇ ξ w(t) en cada paso sucesivo de iteración. El valor de ∇ ξ w(t) puede obtenerse mediante un procedimiento analítico, que sería lo mismo que definir la forma de la superficie del error. Para evitar esta dificultad, se puede emplear una aproximación para el gradiente que puede ser determinado mediante la información que se conoce explícitamente en cada iteración. Para cada paso en el proceso de iteración, se debe ejecutar lo siguiente: 1.- Aplicar un vector de entrada, xk , a la entrada de la red Adaline. 2.- Determinar el valor del error cuadrático, ε k2 (t), empleando el valor actual del vector de pesos,

ε k2 (t ) = (d k − wT (t )x k )

2

Ec. 2.42

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

26

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

3.- Calcular una aproximación de ∇ξ (t), empleando ε k2 (t) como una aproximación de 〈 ε k2〉: ∇ε k2 (t ) ≈ ∇ ε k2
2 k

Ec. 2.43

∇ε (t ) ≈ −2∇ε k (t )x k 4.- Actualizar el vector de pesos de acuerdo a la ecuación 2.41 empleando la ecuación 2.43 como aproximación del gradiente: w(t + 1) = w(t ) − 2 µε k x k

Ec. 2.44

5.- Repetir los pasos 1 al 4 con el siguiente vector de entrada, hasta que el error ha sido reducido a un valor aceptable. La ecuación 2.44 es una expresión del algoritmo LMS. El parámetro µ determina la estabilidad y velocidad de convergencia del vector de pesos en la dirección de un valor de error mínimo. Los cambios en el vector de pesos debe mantenerse relativamente pequeño en cada iteración, si los cambios son demasiado grandes, el vector de pesos podría estar vagando en la superficie, sin encontrar nunca el mínimo en lugar de resultar en una convergencia estable hacia este. La función del parámetro µ es prevenir esta situación. Una situación especial en el uso de la RNA tipo ADALINE es cuando se cuenta con una sola señal de entrada, en dicho caso la ALC se arregla en una configuración conocida como Filtro Transversal. En esta configuración, la señal de entrada es muestreada en varios puntos en el tiempo, en lugar de tener varios sensores en un solo tiempo. Para el Filtro Transversal, cada muestra adicional en el tiempo representa otro grado de libertad que puede ser empleado para ajustar la señal de entrada a la señal de salida deseada. Esto es, si no se puede obtener un buen ajuste con una cantidad pequeña de muestras pueden añadirse otras para aumentar la posibilidad. Si en la primera selección de cantidad de retardos de tiempo se obtiene un buen ajuste de la señal, es conveniente tratar con menos retardos, con el fin de observar respuesta y convergencia. Se debe recordar que se debe esperar al menos n*(cantidad de retardo de tiempo) para que en todas las entradas del filtro este presente la señal. En este tipo de filtros por lo regular los umbrales o sesgos son superfluos. Como se menciono anteriormente no necesariamente una mayor cantidad de retardos genera una mejor salida, además de que a mayor cantidad de pesos mayor tiempo de entrenamiento, existen otros factores que afectan tanto al tiempo de entrenamiento y a la aceptabilidad de la solución. El parámetro µ es uno de los factores que tiene un efecto significante en el entrenamiento. Si µ es demasiado grande, nunca tendrá lugar la convergencia, no importa que tan grande

Teoría Básica

27

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

sea el periodo de entrenamiento. Si la estadística de la señal de entrada se conoce, es posible demostrar que el valor de µ esta restringido al rango de:

1 / λmax > µ > 0

Ec. 2.45

Donde λmax es el mas grande eigenvalor de la matriz R = 〈 xk xkt 〉 llamada matriz de correlación. Si no se conoce la estadística de la señal, es posible evaluarla por medio de una aproximación euristica seleccionando un valor para µ de tal manera que un peso no cambie más que un pequeño porcentaje de su valor actual.

2.2.9 RNA TIPO MADALINE [32]
Madaline es el acrónimo de muchas Adaline (Many Adaline) arregladas en una arquitectura de múltiples capas, la RNA Madaline se asemeja a la estructura general de las RNA (figura 2.10). En esta configuración, la Madaline puede ser presentada con un vector de entradas de grandes dimensiones. Para entrenar una RNA de este tipo, se podría pensar emplear el algoritmo LMS en la capa de salida, pero ya que dicho algoritmo no permite conocer la aportación de cada capa al error total es necesaria una modificación a este algoritmo. Debido a que la RNA es entrenada con patrones de entrada identificados previamente, se conoce el vector de salida deseado. Lo que no se conoce es la salida deseada en un nodo dado de la capa oculta. El algoritmo LMS operara en las salidas análogas de la ALC, no en los valores de salida bipolar de los filtros Adaline. Por esta razón se ha desarrollado una estrategia de entrenamiento diferente para la RNA Madaline.

2.2.9.1 ALGORITMO MRII (MADALINE RULE II) [32]
El algoritmo de entrenamiento MRII se asemeja a un proceso de prueba y error con cierta inteligencia involucrado mediante el uso de un Principio de Disturbancia Mínima. Ya que la salida de una RNA tipo Madaline es una serie de unidades bipolares debido a su función de salida, el entrenamiento equivale a reducir la cantidad de nodos de salida incorrectos para cada patrón de entrada de entrenamiento. El Principio de Disturbancia Mínima aplica la idea de que aquellos nodos que pueden afectar el error de salida mientras incurren los cambios menores en sus pesos deberán tener preferencia en el proceso de entrenamiento. Este principio esta incorporado en el siguiente algoritmo: 1.- Aplicar un vector de entrenamiento a las entradas de la RNA Madaline y propagar este hasta las unidades de salida. 2.- Contar el número de valores incorrectos en la capa de salida: llamar a este número el error.

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

28

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

3.- Para todas las unidades en la capa de salida, a) Seleccionar el primer nodo cuya salida análoga esta mas cercana a cero. Este nodo es precisamente el que puede revertir su salida bipolar con el menor cambio en su peso, de aquí el término de Disturbancia Mínima. b) Cambiar los valores en la unidad seleccionada de tal forma que la salida bipolar de la unidad cambie. c) Propagar el vector de entrada hacia adelante desde la entrada hasta la salida nuevamente. d) Si el cambio de peso resulta en una reducción del número de errores, aceptar el cambio de peso; de otra manera, restaurar el peso original. 4.- Repetir el paso 3 para todas las capas excepto la capa de entrada. 5.- Para todas las unidades en la capa de salida, a) Seleccionar los pares de unidades cuya salida análoga esta mas cercana a cero. b) Aplicar una corrección de peso a ambas unidades, con el fin de cambiar la salida bipolar de cada una. c) Propagar el vector de entrada hacia adelante desde las entradas hasta las salidas. d) Si el cambio de pesos resulta en una reducción del número de errores, aceptar el cambio de pesos; de otra manera restaurar los pesos originales. 6.- Repetir el paso 5 para todas las capas excepto para la capa de entrada. Si es necesario, la secuencia de los pasos 5 y 6 pueden repetirse con conjuntos de tres unidades, o de cuatro, o tantas como sean necesarias, hasta que se obtenga un resultado satisfactorio. Algunas indicaciones preliminares son que grupos de dos unidades son adecuados para RNA´s dimensionadas modestamente con 25 o un valor de unidades por capa cercano. Es posible visualizar un método de entrenamiento para la estructura Madaline basado en el algoritmo LMS; sin embargo, el método consiste en reemplazar la función de salida lineal escalón por una función continua diferenciable ( la función escalón es discontinua en el valor 0; por lo tanto no es diferenciable ) [45].

2.2.10 RNA TIPO BACKPROPAGATION (RNA BP) [32]
La RNA BP fue formalmente definida por Verbos [38], y después por Parker [46], posteriormente por Rummelhart y McClelland [47]. Este tipo de red esta diseñada para
Teoría Básica

29

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

funcionar como red de capas múltiples, con alimentación hacia adelante, empleando el modo de entrenamiento supervisado. La RNA BP aprende un conjunto predefinido de parejas de entrada-salidas deseadas empleando un ciclo de dos fases propagación-adaptación. Después de que un patrón de entrada ha sido aplicado como estimulo a la primera capa de la red, este es propagado a través de cada una de las capas siguientes hasta que se genera una salida de la RNA BP. Este patrón de salida es comparado entonces a la salida deseada y una señal de error se calcula para cada unidad de la capa de salida. La señal de error calculada es entonces transmitida hacia atrás desde la capa de salida hasta cada uno de los nodos de las capas intermedias que contribuyen directamente con la salida. Sin embargo, cada una de las unidades de las capas intermedias solo recibe una porción de la señal de error total calculada, basada estrictamente en la contribución que cada unidad hace para la salida original. Este proceso se repite, capa por capa, hasta que cada nodo de la red ha recibido una señal de error que describe su contribución relativa al error total. Basado en la señal de error recibida, los pesos de conexión se actualizan en cada unidad provocando que la red converja hacia un estado que le permita codificar todos los patrones de entrenamiento. Conforme se entrena la RNA BP, los nodos en las capas intermedias se ajustan así mismos de tal forma que distintos nodos aprenden a reconocer diferentes objetos del espacio total de entrada. Después del entrenamiento, cuando se le presenta un patrón arbitrario de entrada que contiene ruido o esta incompleto, las unidades en la capa intermedia de la red responderán con una salida activa si la nueva entrada contiene un patrón que asemeje el objeto que la unidad individual enseñado a reconocer durante el entrenamiento. Convencionalmente, las unidades de las capas ocultas tienen una tendencia a inhibir sus salidas si el patrón de entrada no contiene el objeto el cual fueron entrenadas a reconocer. Conforme la señal se propaga a través de las diferentes capas en la RNA BP, la actividad del patrón presente en cada una de las capas superiores se puede considerar como un patrón con objetos que pueden ser reconocidos por unidades en las capas siguientes. El patrón de salida generado puede considerarse como una representación de la presencia o ausencia de muchos objetos combinados en la entrada. Algunas investigaciones han mostrado que durante el entrenamiento, las RNA BP tienden a desarrollar relaciones internas entre los nodos como si organizaran los datos de entrenamiento dentro de clases o patrones [28]. Esta tendencia puede ser extrapolada a la hipótesis de que todas las unidades de las capas ocultas de una RNA BP son de alguna manera asociadas con objetos específicos de los patrones de entrada como resultado del entrenamiento. De esta forma la RNA BP encuentra una forma de representar internamente los patrones de forma que le permite generar la salida deseada cuando se le proporciona una entrada de entrenamiento. Esta misma representación interna puede aplicarse a las entradas que no se emplearon durante el entrenamiento. La RNA BP puede clasificar estas entradas desconocidas de acuerdo a los objetos que fueron aprendidos durante el entrenamiento.

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

30

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

2.2.10.1 REGLA DELTA GENERALIZADA (GDR)
El algoritmo que se emplea para entrenar una RNA BP es la Regla Delta Generalizada. Como se menciono, la RNA BP esta compuesta por capas múltiples, con propagación de las entradas hacia adelante y completamente interconectada en sus capas. Esto significa que no existen conexiones hacia atrás ni conexiones que alimenten la salida de una capa hacia otra que no sea la siguiente. Puede existir más de una capa oculta en una RNA BP. Una RNA es llamada red representativa (mapping network) si esta es capaz de calcular alguna función de relación entre las entradas y las salidas. Estas son útiles en situaciones donde se desconoce la función de relación entre las entradas y salidas, en estos casos la alta capacidad de la RNA para descubrir su propia representación es extremadamente útil. Si se cuenta con un conjunto de P vectores de parejas, (x1 , u1 ),......(xp , up ), los cuales son ejemplo de una función representativa u = φ (x) : x ∈ RN , u ∈ RN . Se puede entrenar una RNA BP para obtener una aproximación O = u´ = φ (x)´. Para emplear el método aquí expuesto es necesario que los vectores de parejas hayan sido adecuadamente seleccionados y que exista suficiente cantidad de ellos. El algoritmo asemeja al problema de encontrar la ecuación de una línea que mejor aproxima un conjunto de puntos. Y es una generalización de la regla LMS. Como este caso se asemeja a contar con no linealidades y dimensiones múltiples, se emplea una versión interactiva del método simple de los mínimos cuadrados, llamada técnica de gradiente descendente. Para iniciar se considera un vector de entradas, xp = ( xp1, xp2 , ..... xpN ) T , que se aplica a la capa de entrada de una RNA BP. Las unidades de la entrada distribuyen los valores a las unidades de las capas ocultas. La entrada a la red de la unidad oculta j es:

Net h = ∑ w h ∗ x pi + θ jh pj ji
i =1

N

Ec. 2.46

Donde wjih es el peso en la conexión de la unidad de entrada i a la unidad de la capa oculta j, y θ jh es el término de sesgo o umbral y N es el número de entradas. El súper índice “h” refiere a la capa oculta (hidden). Considerando que la activación de este nodo es igual a la entrada de la red; entonces, la salida de este nodo será dada por:
I pj = f jh net h pj

(

)

Ec. 2.47

La ecuación para la salida del nodo será:
o Net o = ∑ wkj ∗ I pj + θ ko pk j =1 L

Ec. 2.48

O pk = f

o k

(Net )
o pk

Teoría Básica

31

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Donde L es el numero de neuronas en la capa oculta y o refiere a objetos en la capa de salida. El conjunto de valores de pesos iniciales representan una primera suposición de los pesos adecuados al problema. El proceso básico de entrenamiento de una BPN esta incluido en la siguiente descripción: 1. Aplicar un vector de entrada a la red y calcular el correspondiente valor de salida 2. Comparar el valor actual de la salida con la salida deseada correspondiente y determinar una medida del error. 3. Determinar en que dirección (+ o - ) cambiar cada peso con la finalidad de reducir el error. 4. Determinar la cantidad a la cual cambiar cada uno de los pesos. 5. Aplicar la corrección a los pesos. 6. Repetir los pasos 1 al 5 con todos los vectores de entrenamiento hasta que el error para todos los vectores en el conjunto de entrenamiento se reduzca a un valor aceptable.

2.2.10.2 ENTRENAMIENTO DE UNA RNA BP
1.- Aplicar un vector de entrada, xp = ( xp1 , xp2 ,....., xpN ) T a las unidades de entrada. 2.- Calcular el valor de entrada a cada una de las neuronas en las capas ocultas: ecuación 2.46 3.- Calcular la salida de la capa oculta: ecuación 2.47 4.- Cambiar a la capa de salida. Calcular el valor de entrada a cada neurona: ecuación 2.48a 5.- Calcular la salida: ecuación 2.48b 6.- Calcular el término de error para las unidades de salida:
o δ pk = (y pk − o pk )∗ f ko ´(Net o ) pk

Ec. 2.49

7.- Calcular el error para las unidades en la capa oculta:
h o o δ pj = f jh ´(Net h )∑ δ pk ∗ wkj pj

Ec. 2.50

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

32

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Notar que el error para las unidades en la capa oculta se calcula antes que los pesos de conexión en la capa de salida sean actualizados. 8.- Actualizar los pesos en la capa de salida:
o o o wkj (t + 1) = wkj (t ) + ηδ pk ∗ i pj

Ec. 2.51

Donde ηes el rango de aprendizaje 9.- Actualizar los pesos en la capa oculta:
h w h (t + 1) = w h (t ) + ηδ pj ∗ xi ji ji

Ec. 2.52

El orden de la actualización de los pesos en una capa individual no es importante. Asegurarse de calcular el valor de error:

Ep =

1 M 2 ∑ δ pk 2 k =1

Ec. 2.53

Donde M es el número de neuronas en la capa de salida. Ya que esta cantidad es una medida de que tan bien esta aprendiendo (suma de los errores cuadrados de todas las unidades en la salida). Cuando el error es aceptablemente pequeño para cada uno de los vectores de entrenamiento, el entrenamiento puede darse por terminado. Existen dos funciones de interés:

fko (Netjko ) = Netjko
y

(lineal)

donde

fko´ (Netpko ) = 1

fko (Netpko ) = ( 1 + e-Netjko ) -1 (Sigmoide)

donde fko´ (Netpko )= fko (1-Netpko ) = opk(1- opk)

La RNA BP es buena para generalizar, esto quiere decir, dados diferentes vectores de entrada, siendo todos de la misma clase, una RNA BP aprenderá a asimilar las similitudes en los vectores de entrada. Y los datos irrelevantes serán ignorados. En oposición a la generalización, una RNA BP no puede extrapolar bien, si una RNA BP es inadecuada o insuficientemente entrenada en una clase particular de vectores de entrada, posteriores identificaciones de miembros de esta clase podrían fracasar. Uno se debe asegurar que el conjunto de entrenamiento cubra todo el espacio de entradas esperadas. Es conveniente durante el entrenamiento, seleccionar parejas de entrada-salida de forma aleatoria en el conjunto de entrenamiento. En algunos casos, el no entrenar la red

Teoría Básica

33

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

completamente con una clase y entonces cambiar a otra podría hacer a la red olvidar el entrenamiento original.

2.2.10.3 PESOS Y PARAMETROS DE APRENDIZAJE
Los pesos pueden ser inicializados a valores pequeños y aleatorios, por ejemplo entre +0.5 y -0.5, al igual que los términos de sesgo (o umbrales), Es común emplear los valores de sesgo como otro peso que esta conectado a una neurona ficticia cuya salida siempre es uno. De esta manera podría participar del proceso de aprendizaje como peso y ser modificado. Otra opción es no emplear sesgos, el uso de ellos es opcional. La selección de un valor para el parámetro de factor de aprendizaje, tiene un efecto significante en la ejecución de la RNA. Usualmente debe ser un valor pequeño en el orden de 0.05 a 0.25 para asegurarse que la RNA se dirigirá hacia una solución. Un valor pequeño del rango de aprendizaje significa que la RNA tendrá que hacer un mayor número de iteraciones. Es posible modificar la tasa de aprendizaje conforme el entrenamiento se desarrolla, aumentando este conforme el error de la red disminuye ayudara por lo regular a la velocidad de convergencia, mediante el incremento de la dimensión del paso conforme el error llega al mínimo, pero la red podría rondar muy lejos del valor mínimo actual si el valor del rango de entrenamiento es demasiado grande. Otra manera de incrementar la velocidad de convergencia es emplear el método del momento. Cuando se calcula los valores de cambio para los pesos, se añade una fracción del cambio previo. La adición de este termino tiende a mantener los cambios de los pesos en una misma dirección, por eso se le llama momento. La ecuación para los cambios de los pesos en la capa de salida vendría a ser:
o o o o wkj (t + 1) = wkj (t ) + ηδ pk ∗ i pj + α∆ p ∗ wkj (t − 1)

Ec. 2.54

Con una ecuación similar se puede encontrar los cambios de pesos en la capa oculta. En la ecuación el símbolo α es el parámetro de momento y por lo regular es positivo menor que 1. El uso de este término es opcional. Una consideración final es la posibilidad de converger en un mínimo local en el espacio de los pesos. Una ves que la RNA se establece en un mínimo, ya sea local o global, el aprendizaje termina. Si se alcanza un mínimo local, el error en la salida de la RNA podría ser inaceptable. Si el aprendizaje de una RNA cesa antes de alcanzar un error aceptable, un cambio en la cantidad de nodos ocultos o en los parámetros de aprendizaje por lo regular soluciona este problema: o simplemente uno podrá empezar con otro conjunto distinto de pesos iniciales. Cuando una RNA alcanza una solución aceptable, no se puede asegurar que esta allá alcanzado el mínimo global en lugar de un mínimo local.

REFERENCIAS DEL CAPITULO

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

34

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

11. 12. 13. 14. 15.

16. 17. 18. 19. 20.

21. 22. 23.

Ogata, K., Ingeniería de Control Moderna. 3 ed. 1998,: Prentice-Hall Hispanoamericana. 786-997. Montoya, L.F.R. and L.A. Z., Chattering Control Design for the Inverted Pendulum, in Mechanical Engenering. 2001. p. 51-67. Chung, C.C. and J. Hauser, Nonlinear Control of a Swinging Pendulum. Automatica, 1995. 31. Franklin, T., Design and Control of the Inverted Pendulum Cart System. 2002, Virginia Tech: Virginia. p. 1-9. Shew, W., Inverted Equilibrium of a Vertically Driven Physical Pendulum, in Electrical. 1997, College of Wooster: Wooster. Kuo, B.C., Sistemas Automaticos de Control. 2 ed. 1991, Mexico: CECSA. 243-350. Astrom, K.J. y K. Furuta. Swinging Up a Pendulum By Energy Control. in 13th World Congress. 1996. San Francisco, California: IFAC. Åkesson, J., Inverted Pendulum Demonstration Experimental Set Up, in Department of Automatic Control. 2001, Lund Institute of Technology: Lund. p. 1-6. Chou, S.C.-M., D. Goldberg, and otros, Inverted Pendulum, in Control Systems. 2001, UBC: Conecticut. p. 6-28. Schreiber, G.u., C. Ott, and G. Hirzinger. Interactive Redundant Robotics:Control of the Inverted Pendulum with Nullspace Motion. in International Conference on Intelligent Robots and Systems. 2001. Maui,Hawaii,USA: BMBF MORPHA. Kuo, A.D., The relative roles of feedforward and feedback in the control of rhythmic movements. Motor Control, 2000. 10: p. 1-10. Kim, S.Y. y M. Hu, Bifurcations and transitions to chaos in an inverted pendulum. Physical Review, 1998. 58: p. 3028-3035. Lam, J., Control of an Inverted Pendulum. 2000, http://www.ccec.ece.ucsb.edu/people/smith/. Roberge, J.K., The Mechanical Seal. 1960, Massachusetts Institute of Technology: Massachusetts. Sobhani, Z.C., Stabilization of an Inverted Pendulum with Base Arcing about a Horizontal Axis, in Mechanical Engineering. 2003, MASSACHUSETTS INSTITUTE OF TECHNOLOGY: MASSACHUSETTS. Anderson, C.W., Learning to Control an Inverted Pendulum Using Neural Networks. IEEE Control Systems Magazine, 1989. April 1989: p. 31-37. Michigan, U.o., Control Tutorials for Matlab. 1997, www.engin.umich.edu/group/ctm/examples/pend. Vermeiren, L., T.M. Guerra, y Y. Morère, Comparison of diÿerent fuzzy control laws of an inverted pendulum in real time. 2000, University of Valenciennes: Valencia. p. 3-15. Míguelez García, R., Estudio diseño y desarrollo de una aplicación de tiempo real y de un simulador para su comprobación. 2001, U. Cantabria: Cantabria. Wang, D. y J. Huang, A Neural-Network-Based Approximation Method for Discrete-Time Nonlinear Servomechanism Problem. IEEE Transactions on Neural Networks, 2001. 12: p. 591-597. Cembrano, G. y G. Wells, Aplicaciones del Aprendizaje Neuronal al Control de Robots. Inteligencia Artificial, 1997. 1: p. 34-40. Barrientos, A. y otros, Fundamentos de Robótica. 1997: Mc Graw Hill- Interamericana de España. Groover, M.P. y otros, Industrial Robotics Technology, Programming and applications. Industrial Robotics, ed. I.E. Series. 1987: Mc. Graw Hill International. 3-47.

Teoría Básica

35

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

24. 25. 26.

27. 28. 29. 30. 31. 32.

33. 34. 35. 36. 37. 38. 39.

40. 41. 42. 43. 44.

45. 46.

Konar, A., Artificial Intelligence and Soft Computing. 1º ed. 2000, Boca Raton, Florida: CRC Press. 415-443. Pedrycz, W., Computacional Intelligence: an introduction. 1º ed. Computer Engineering. 1998, Florida USA: CRC PressLLC. 7-35. Kasabov, N.K., Foundations of Neural Networks, Fuzzy Systems, and Knowledge Engineering. 2 ed. Expert systems (Computer science), ed. B. Book. Vol. 1. 1998, London, England: MIT Press. 251-307. Kosko, B., Neural Networks and Fuzzy Systems: a dynamical systems approach. 1992: Prentice Hall. 39-110. Hinton, G.E. y T.J. Sejnowski, Neural Networks architectures for AI, in MP2. 1987: Seattle WA. Pitas, I., Parallel algorithms: for digital image processing, computer vision, and neural networks. Parallel Computing, ed. 1993: Jhon Wiley and sons. 259-301. Cuevas de la Rosa, Francisco J. y M.S. Girardo, La Neurona Biologica y su Implementacion Artificial. 1993, CIO: León, Guanajuato. p. 3-16. Burns, R.S., Advanced Control Engineering. 1º ed. 2001, Woburn,MA: ButterworthHeinemann. 347-360. Freeman, J.A. y D.M. Skapura, Neural Networks: algorithms, applications, and programming techniques. 1 ed. Computation and Neural Systems, ed. C. Koch. Vol. 1. 1991, California: Addison Wesley. 45-124,341-371. Jain, A.K. y J. Mao, Artificial Neural Networks: A tutorial. IEEE Computer, 1996. 18: p. 31-44. Jones, P.C. y S. Tepavich, ADALINE Stabilization of an Inverted Robot Arm. 1997, www.aracnet.com. Pino, B. y otros, Implementaciones hardware de redes neuronales artificiales. Inteligencia Artificial, 1997. 1: p. 48-56. Bishop, C.M., Neural Networks for Pattern Recognition. 1º ed. 2003, New York: Oxford University Press. 116-161. McCulloch, S. y W. Pitts, A logical Calculus of the ideas immanent in nervous activity, in Mathematicall Biophisycs. 1943. p. 115-133. Werbos, P., Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences, in Computational Sciences. August 1974, Harvard: Cambridge. Matich, D.J., Redes Neuronales: Conceptos Básicos y Aplicaciones, in Catedra:Informática aplicada a la Ingeniería de Procesos, M.S. Basualdo, Editor. 2001, Universidad Tecnológica Nacional Facultad Regional Rosario: Rosario, Argentina. p. 8-28. Kröse, B. y P.V.d. Smagt, An Introduction to Neural Networks. 1996, Amsterdam: The University of Amsterdam. 15-45. Hu, Y.H. y J.-N. Hwang, Handbook of Neural Networks Signal Processing. The Electrical Engineering And Applied Signal Processing, ed. A. Poularikas. 2002, USA: CRC Press. Kosko, B., Neural Networks for Siganl Processing. 1992, Englewood Cliffs, New Jersey: Prentice-Hall. 161-188. Lebbart, L., A. Morineau, and M. Piron, Statistique exploratoire multidimensionnelle. 1995, Paris: DUNOD. 263-283. Cuevas de la Rosa, Francisco J., Aplicación de redes neuronales en la reconstrucción tridimensional de objetos, in MetrológiaÒptica. 2000, Centro de Investigaciones en Òptica: León Guanajuato. Winter, R. y B. Widrow. MADALINE RULE II: A training algorithm for neural networks. in Second International Conference on Neural Networks. 1988. San Diego,CA. Parker, D.B., Learning logic. 1985, MIT: Cambridge.

Capitulo 2. Péndulo Invertido y Redes Neuronales Artificiales

36

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

47.

McClelland, J. y D. Rumelhart, Explorations in Parallel Distributed Processing. Vol. 1-2. 1986, Cambridge, MA: MIT Press.

Teoría Básica

37

CAPITULO 3 DESCRIPCION DEL SISTEMA

En la implementación del sistema se emplea una combinación de elementos software y hardware, ver figura 3.1.
PC :
Matlab (Neural Network Toolbox )

Simulink Real Time Workshop Real Time Windows Target

Fuente de Voltaje +12V....-12V

Tarjeta de Adquisición de Datos PCI6014

Interfaz de Potencia

Sistema PIS

Fig. 3.1 Diagrama esquemático del sistema empleado en esta tesis.

Para la implementación de las RNA´s empleadas en el control del péndulo invertido se utiliza la caja de herramientas Neural Networks Toolbox de Matlab 7.0 (en adelante Matlab 7.0 será nombrado Matlab). La interfaz para la adquisición y envío de datos desde el software hacia “el mundo real” es la tarjeta de adquisición de datos PCI6014 de National Instruments. Para la implementación del control en tiempo real y su comunicación con la tarjeta PCI6014 se utilizan las siguientes herramientas de software: Simulink, Real Time Windows Target y Real Time Workshop de Matlab. Debido a las limitaciones de tensión y corriente de salida que maneja la tarjeta PCI6014 es necesario implementar una interfaz de potencia (mediante transistores y amplificadores operacionales), para proporcionar la tensión y corriente necesaria tanto para el motor de c.c. como para los potenciómetros utilizados en la realimentación.

3.1 RNA´S EN MATLAB [1]. Matlab cuenta con una caja de herramientas (Neural Network Toolboox) que permite diseñar RNA´s. La implementación en Matlab de una RNA para funciones de control puede realizarse de tres formas: • Mediante código desde la línea de comandos o desde el espacio de trabajo de Matlab (workspace),.

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

• •

Utilizando el conjunto de bloques incluidos en el toolbox de Control Systems de Neural Networks Blockset en Simulink. Empleando la Interfase Grafica de Usuario (GUI por sus siglas en ingles) de RNA´s, la cual se puede desplegar empleando el comando nntool (Neural Network Toolbox).

Al crear una RNA mediante el espacio de trabajo de Matlab es necesario introducir los comandos adecuados para obtener la arquitectura deseada en la RNA. Esta forma de diseñar RNA´s permite personalizar la arquitectura y presenta la ventaja de poder emplear funciones de entrada, de activación y de salida definidas por el usuario o, una combinación de las ya implementadas en el propio Matlab. Empleando el conjunto de bloques en Control Systems se puede seleccionar una de las opciones de RNA´s ya diseñadas para controlar sistemas, la desventaja de esta herramienta es que para la versión de Matlab 7.0 y anteriores no es posible generar el código necesario para ejecutarla en tiempo real mediante Real Time Workshop o Real Time Windows Target. Por último, la tercer forma de diseñar una RNA es mediante la GUI nntool. Esta herramienta nos permite crear RNA´s de distintas arquitecturas mediante la selección en un menú de la arquitectura deseada. Para este trabajo se selecciono la GUI nntool para crear las RNA´s empleadas en el control del PIS. Para información de como emplear las primeras dos formas de crear RNA´s en Matlab se puede consultar el Manual de Usuario de Neural Networks Toolbox [1]. Cuando se crea una RNA en Matlab, las capas generadas incluyen la combinación de: pesos, operaciones de multiplicación y suma (en este caso realizadas como un producto entre vectores W*P), el sesgo b, y la función de transferencia f. El arreglo de entradas (el vector P) no se considera parte de la capa, por lo que será necesario crear el vector correspondiente, si es que se desea emular la RNA creada. Cuando se emplea la notación abreviada de RNA´s , las dimensiones de la matriz se muestran debajo de los elementos matriciales, y se pueden observar en la vista (view) de la RNA creada.

3.1.1 ESTRUCTURA DE LOS DATOS Existen dos clases de neuronas las estáticas (no tiene realimentación o retardos de tiempo) y las dinámicas (contiene retardos de tiempo). Cada una de ellas presenta requerimientos distintos en el formato de sus datos de entrada. Existen dos tipos básicos de vectores de entradas: aquellos que son concurrentes (ocurren al mismo tiempo, su secuencia de tiempo no importa), y aquellos que suceden de forma secuencial con respecto al tiempo. Para los vectores concurrentes, el orden no importa, para los vectores secuénciales el orden es de gran importancia.

Software y Hardware empleado

39

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

La forma mas simple de simular una RNA se presenta cuando la RNA es estática. En este caso no es necesario tomar precauciones respecto a si el vector de entradas ocurre en una secuencia de tiempo determinada, y las entradas se pueden tratar como concurrentes. Además se puede simplificar el problema asumiendo que la RNA tiene solo un vector de entrada. Cuando una RNA contiene retardos de tiempo, la entrada a la RNA debe ser normalmente una secuencia de vectores de entrada que ocurren con un determinado orden de tiempo. Las entradas secuénciales son presentadas a una RNA como si fueran elementos de un arreglo de celdas, por ejemplo:

P = {y1

y2 K y N }

Ec. 3.1

Al introducir de esta manera la entrada, la RNA produce un arreglo de celdas conteniendo una secuencia de salidas. Al no asignar una condición inicial a los retardos de tiempo empleados en una RNA, Matlab asume que son cero. En el caso especial que se desee simular la respuesta de la RNA con secuencias distintas y al mismo tiempo, la RNA se podrá confrontar con un conjunto concurrente de secuencias. En este caso la entrada será un arreglo de celdas, donde cada elemento del arreglo contiene los elementos de cada secuencia que ocurre al mismo tiempo, por ejemplo, para dos secuencias distintas:

[ P = { y1,t1

y1,t 2 ]

[y

2 ,t 1

y 2 ,t 2 ] K

[y

N ,t 1

y N ,t 2 ]}

Ec. 3.2

La salida que se obtendrá será de tal forma que la primera columna de cada matriz contendrá la secuencia de salida producida por la primera secuencia de entrada, y así sucesivamente. No existe interacción entre cada secuencia concurrente y el funcionamiento de la RNA será como si cada una de las secuencias se presentara a distintas RNA´s ejecutándose en paralelo.

3.1.2 RED MADALINE Como se menciona en el apartado 2.2.8.1, cuando se emplea la regla LMS (también conocida como Regla Widrow-Hoff) para entrenar una RNA tipo Madaline, esta permite aumentar el potencial de la RNA en su aplicación al poder manipular la colocación de la frontera de decisión en la clasificación de sus patrones de entrenamiento. En Matlab se emplea dicha regla de aprendizaje por omisión al crear una RNA Adaline o Madaline (comando en Matlab: learnwh). En la GUI nntool solo es posible crear RNA´s Madaline de una sola capa, esto debido a que cualquier RNA Madaline compuesta por varias capas lineales siempre puede ser sustituida por una RNA equivalente compuesta de una sola capa lineal.

Capitulo 3. Descripción del Sistema

40

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

3.1.2.1 CREACION DE UNA RNA TIPO MADALINE MEDIANTE LA GUI nntool Para acceder a la GUI de RNA´s es necesario introducir el comando nntool en el espacio de trabajo de Matlab, lo que permite acceder a la ventana Administradora de RNA´s (Network/ Data Manager) mostrada en la figura 3.2.

Fig. 3.2 Ventana Network/Data Manager de la GUI nntool.

La GUI nntool, permite:

• •

Crear una RNA nueva mediante la opción New Network… Crear vectores o matrices mediante la opción New Data. Los datos de los vectores o matrices pueden ser ya sea de entradas, salidas deseadas, valores para retardos de tiempo empleados en las entradas, valores para los retardos de tiempo empleados en las capas ocultas o de salida, valores de salidas, o valores de error. Importar vectores o matrices de datos desde el espacio de trabajo de Matlab o desde un archivo almacenado en algún dispositivo de memoria mediante la opción Import… Exportar datos al espacio de trabajo de Matlab o almacenar estos datos en algún dispositivo de memoria presente en el sistema utilizando la opción Export… Cuando ya se cuenta con una RNA en el administrador se puede: observar su diagrama representativo (View), Eliminarla (Delete), inicializar sus pesos

• •

Software y Hardware empleado

41

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

(Initialize…), Simular la RNA previamente entrenada (Simulate…), entrenar una RNA creada o definida en el administrador de RNA´s (Train…) o adaptar (actualizar) los pesos y sesgos de una RNA´s previamente entrenada (Adapt…). La opción Simulate.. toma los valores de un vector de entradas previamente definido en la ventana Network/Data Manager y genera la salida correspondiente de la RNA. Al activar la opción New Network… se despliega la ventana Create New Network (mostrada en la figura 3.3), la cual permite seleccionar la arquitectura deseada para la nueva RNA.

Fig. 3.3 Ventana Create New Network

La ventana Create New Network permite introducir los parámetros necesarios dependiendo del tipo de RNA a crear. Los parámetros a considerar en la creación de una RNA tipo Madaline se pueden observar al seleccionar la opción Linear Layer (design) contenida en el menú Network Type. Dichos parámetros se pueden observar en la figura 3.4. En la ventana Create New Network desplegada se puede introducir: el nombre de la RNA a crear (en el espacio Network Name), los valores para los datos de entradas (en el espacio Input data), y de salidas deseadas (en el espacio Target data). La introducción de los datos de entradas y salidas deseadas puede realizarse de manera manual en el espacio correspondiente o extrayendo estos de algún vector o matriz de datos previamente declarado en la ventana Network/Data Manager mediante los menú desplegables Set to imput y Set to target.

Capitulo 3. Descripción del Sistema

42

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Figura 3.4 Ventana Create New Network para una RNA tipo Adaline o Madaline.

El formato del elemento que contenga los datos de entradas y de salidas deseadas definirá la cantidad de entradas a la RNA y la cantidad de neuronas lineales empleadas en la capa de salida (cada renglón en el vector o matriz de datos correspondiente representa una entrada o neurona de salida). Después de introducir los datos de valores de entrada y de salida deseados se puede observar la RNA (mediante la opción View) o crearla y colocarla en la ventana Network/Data Manager (mediante la opción Create). En la figura 3.5 se muestra una RNA tipo Madaline de cuatro entradas y dos neuronas lineales.

Fig. 3.5 Diagrama representativo de una Red lineal creada en la GUI nntool.

La GUI tiene su propio espacio de trabajo en la memoria del sistema el cual esta ubicado fuera del espacio de trabajo de Matlab. Debido a esto, cuando se emplea una GUI, se deben exportar los resultados de la GUI a la línea de comandos o espacio de trabajo de Matlab. De la misma manera si se desea emplear algún valor del espacio de trabajo de Matlab se deben Importar dichos datos. Una vez que se ha creado una RNA y la ventana Network/Data Manager se encuentra activa, se puede, observar la RNA, entrenar, simular y exportar los resultados finales al espacio de trabajo de Matlab.

Software y Hardware empleado

43

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

3.1.2.2 FILTRO LINEAL DE RESPUESTA A IMPULSOS FINITOS Para hacer uso pleno de la funcionalidad de una RNA tipo Madaline se requiere emplear un conjunto de retardos de tiempo (en Matlab Tapped Delay Line, TDL) de tal forma que se convierta esta RNA en un filtro adaptativo. En el campo del Procesamiento de Señales a dicho filtro se le conoce como Filtro Lineal de Respuesta a Impulsos Finitos (FIR por sus siglas en ingles). De esta forma el vector de entradas a la RNA esta conformado por el valor de la señal actual y n-1 valores pasados de dicha señal (siendo n la cantidad de entradas en la RNA tipo Madaline). La salida de una RNA Madaline modificada de esta forma seria la siguiente:
u (t ) = ∑ w1,i ∗ u (t − i + 1) + b
i =1 R

Ec. 3.3

donde: R es la cantidad de entradas a la RNA t es el ciclo actual de muestreo, t-1 seria el ciclo anterior.

3.1.3 RNA TIPO BP
Como se menciona en el apartado 2.2.10, la RNA tipo BP estándar es una RNA entrenada mediante una generalización de la Regla de Aprendizaje de Widrow-Hoff y dicha regla de entrenamiento puede aplicarse a RNA´s de capas múltiples y con funciones de salida no lineales, con la única condición de que sean diferenciables. El proceso general para implementar una RNA de este tipo requiere cuatro pasos: • • • • Adquisición de datos de entrenamiento Creación de la red Entrenamiento de la red Simulación de la respuesta de la red ante nuevas entradas

3.1.3.1 CREACION DE UNA RNA TIPO BP MEDIANTE LA GUI nntool
La GUI nntool permite crear RNA´s tipo BP con distintas arquitecturas. La arquitectura de la red BP más empleada es la RNA tipo BP de capas múltiples con prealimentación (FeedForward Backpropagation), otra de ellas empleada en esta tesis es la RNA BP con retardos de tiempo. Para crear una RNA tipo BP de capas múltiples con prealimentación es necesario seleccionar la opción Feed-forward backprop del menú Network Type en la ventana Create New Network. Al realizar esta acción se despliega la ventana mostrada en la figura 3.6 la cual muestra los parámetros a introducir con el fin de personalizar la RNA.

Capitulo 3. Descripción del Sistema

44

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.6 Ventana desplegada para crear una RNA tipo BP de prealimentación.

El primer dato a introducir con el fin de personalizar la RNA BP es el nombre que se le asignara, esto dentro del espacio Network Name:, Matlab le asigna un nombre por omisión (ejemplo: network1). El área Network Type: además de mostrar un menú para la selección de la arquitectura, cuenta con sub-menús que permiten personalizar la arquitectura seleccionada. El primero de ellos, Input ranges:, permite definir los limites de los valores en las señales de entrada. Estos valores pueden ser asignados automáticamente por Matlab, ubicando los valores máximo y mínimo de un vector previamente declarado como de entradas en la ventana Network/Data Manager. La dimensión del vector de entradas debe ser: dos columnas, una para el limite inferior y otra para el limite superior, y la misma cantidad de renglones como de entradas que se hallan declarado en el espacio Number of layers:. El numero de nodos en la capa de entrada será la cantidad introducida en el espacio Number of layers:. Durante el entrenamiento de una RNA BP los pesos y sesgos son ajustados de forma interactiva de tal forma que se minimice la función de ejecución de la RNA. La función de ejecución por omisión para la red con prealimentación es la del error medio al cuadrado (MSE por sus siglas en ingles), esto es: el error cuadrado promedio entre las salidas de la red u y las salidas deseadas t (ver figura 3.7 en la opción Performance function:). Otras opciones de funciones de ejecución son MSEREG y SSE. Esta opción determina la forma en la que los pesos de la RNA son ajustados, para una descripción de la manera en la que trabajan las opciones MSEREG y SSE se puede ver el Capitulo 5 de [1].

Software y Hardware empleado

45

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.7 RNA BP personalizada

En el entrenamiento de una RNA BP el formato de las entradas puede ser como un solo vector o una matriz que agrupe un conjunto de vectores de entrada en el cual cada elemento de entrada ocupa un renglón (conocido como simulación por lotes). Para entrenar una RNA BP se requiere de vectores que contengan las entradas a la RNA y los valores correctos de las salidas correspondientes. Al diseñar una BP se puede seleccionar la función de transferencia a emplear tanto en la capa oculta como en la de salida. La selección de función de transferencia a utilizar, se realiza dentro del espacio Propiedades de capas (Properties for:) en el menú Transfer Function: (ver figura 3.7). las posibles opciones son tres: Función Lineal (PURELIN, figura 1.8a), Tangente Sigmoidea (TANSIG, figura 1.8b) y Sigmoidea Logarítmica (LOGSIG, figura 1.8c). En el menú Properties for: la capa Layer 1 representa la capa oculta y Layer 2 la capa de salida de la RNA BP creada. De la misma forma se puede definir el numero de neuronas en la capa seleccionada dentro del espacio en blanco Number of neurons:. El algoritmo a emplear para la etapa de entrenamiento se selecciona en el menú Training function:(ver figura 3.7), como se menciona anteriormente la RNA BP estándar es la que empléa una generalización de la Regla de Aprendizaje de Widrow-Hoff (en este caso la opción TRAINGD) la cual actualiza los pesos y sesgos de la RNA en la dirección en la cual la función de ejecución (Performance function:) disminuye mas rápidamente. Existen siete parámetros de entrenamiento asociados con el entrenamiento de gradiente

Capitulo 3. Descripción del Sistema

46

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

descendente, ver figura 3.8. El parámetro lr (learning rate) es un factor de entrenamiento que multiplica el gradiente negativo de la función de ejecución, y determina la magnitud de los cambios a realizar en los pesos y sesgos de la RNA BP. La opción show determina la cantidad de iteraciones del algoritmo antes de desplegar su estado actual (se le puede asignar el valor NaN para anular dicho despliegue). La opción epochs determina la cantidad de iteraciones a realizar antes de parar el entrenamiento. El entrenamiento podría parar antes de realizar la cantidad de iteraciones determinadas en epochs si el valor de la función de ejecución toma un valor menor al del parámetro goal, si el valor del gradiente es menor al valor introducido en mingrad, o si el tiempo de entrenamiento es mayor que el consignado en el espacio time (en segundos). El parámetro max_fail esta relacionado con técnicas de optimización del paro de entrenamiento.

Fig. 3.8 Ventana Training Parameters en la opción Train. Después de haber personalizado la RNA creada se puede seleccionar la opción Create para generar en la ventana Network/Data Manager el objeto que emula la RNA BP con los parámetros introducidos. Estando lista para inicializar sus pesos (Initialize…), entrenarse (Train…), simularse (simulate…) ó actualizarse (adapt…). En la tabla 3.1 se muestran los algoritmos de entrenamiento disponible para una RNA BP.

Software y Hardware empleado

47

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Tabla 3.1 Funciones de entrenamiento disponibles en Matlab para una RNA BP

Función Matlab
TRAINGD TRAINGDM

Descripción
Los pesos y sesgos de la RNA se actualizan en la dirección del gradiente negativo de la función de ejecución. Respuesta lenta. Los pesos y sesgos de la RNA se actualizan en la dirección del gradiente negativo de la función de ejecución. Se emplea un nuevo parámetro (momento) que permite esquivar mínimos locales. De esta forma la actualización es función del último cambio realizado y del gradiente. Se emplea un factor de entrenamiento variable. El factor de entrenamiento se establece en base a las magnitudes de error obtenidas en la iteración actual y anterior. De igual forma los cambios en pesos y sesgos son función sus valores actuales y anteriores. Es similar al entrenamiento TRAINGDA con la diferencia que en este método se emplea además un parámetro de momento. Actualización incremental de orden aleatorio. Retro propagación con Resiliencia. Emplea el signo de la derivada de la función de ejecución para determinar el cambio en los pesos y sesgos, la magnitud de la derivada no se considera. En los algoritmos de gradiente descendente conjugado se realiza una búsqueda a lo largo de direcciones conjugadas de decremento del gradiente para determinar la magnitud del cambio en los pesos y sesgos. En este caso se emplea la actualización mediante el método Fletcher-Reeves, en el cual se determina la dirección del cambio en base a la dirección de búsqueda de descenso de gradiente actual con la anterior. Método de gradiente descendente conjugado con el algoritmo PolakRibiére. Método de gradiente descendente conjugado empleando el método de reestablecimiento de dirección de búsqueda Powell-Beale. Emplea un gradiente conjugado escalado. Es el único algoritmo de gradiente conjugado que no requiere una línea de búsqueda. Emplea métodos de Newton para el calculo de las actualizaciones. Requiere almacenar una aproximación de la matriz Hessiana. Método de la secante de un paso. Es una combinación de los métodos de gradiente conjugado y Newton. Algoritmo de Levenberg-Marquardt. Emplea modificaciones para disminuir el uso de memoria. Regulación Bayesiana. Modificación al algoritmo Levenberg-Marquardt.

TRAINGDA

TRAINGDX TRAINR TRAINRP

TRAINCGF

TRAINCGP TRAINCGB TRAINSCG TRAINBFG TRAINOSS TRAINLM
TRAINBR

Capitulo 3. Descripción del Sistema

48

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

3.1.4 ENTRENAMIENTO DE UNA RNA
Para entrenar la RNA creada, primero se debe seleccionar dicha RNA en la ventana Network /Data Manager. Posteriormente se presiona el botón Train. Al hacer esto se activa una nueva ventana con el titulo Network:Nombre de la RNA, vea la figura 3.8. Dicha ventana permite observar datos concernientes al estado de la RNA, tal como valores de inicialización, parámetros de simulación, y su arquitectura. La tecla Train contiene opciones que permiten definir los datos de entrada y salida mediante la ventana Training Info, figura 3.9. En dicha ventana se puede observar en el área de Training Results que el archivo con los datos de salida y errores tienen incluido al inicio el nombre de la RNA. Esto permite identificarlos fácilmente si se desea exportarlos al espacio de trabajo de Matlab.

Fig. 3.9 Ventana con información del proceso de entrenamiento en nntool.

Para definir los parámetros que regirán durante el entrenamiento, tal como numero de épocas, y error final es necesario dirigirse a la ventana Training Parameters que cuenta con apartados que permiten definir dichos valores, figura 3.8. Después de haber definido los parámetros adecuados es posible activar el botón Train Network el cual iniciara la ejecución de dicha tarea. Para verificar que una RNA ha sido entrenada adecuadamente es necesario retornar a la ventana Network/ Data Manager y seleccionar la opción Simulate… del apartado Networks Only, dicha opción activara la ventana de la RNA y en ese momento se selecciona la opción Simulate…, en la ventana desplegada por esta opción se puede modificar el nombre del archivo que almacena los datos de salida, así como los valores de entrada y su origen, figura 3.10. Después de hacer las modificaciones pertinentes se presiona el botón Simulate network ubicado en la parte inferior derecha.

Software y Hardware empleado

49

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.10 Ventana para introducir los datos a emplear en la simulación de una RNA

3.1.5 EXPORTANDO DATOS A LA VENTANA DE TRABAJO DE MATLAB
Para exportar los datos generados por una RNA con destino el espacio de trabajo de Matlab es necesario retornar a la pantalla Network / Data Manager, figura 3.2. Al estar en la ventana Network / Data Manager se puede seleccionar los datos que se desea sean exportados al espacio de trabajo de Matlab y seleccionar el botón Export lo cual dará las opciones Export o Save from Network / Data Manager, figura 3.11. Si solo se desea exportar los datos al espacio de trabajo de Matlab se selecciona la opción Export. De otra manera la segunda opción Save almacenara los datos en un archivo MAT.

Fig. 3.11 Ventana para exportar datos desde nntool

Capitulo 3. Descripción del Sistema

50

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

3.1.6 LIMPIAR LA VENTANA NETWORK / DATA MANAGER
Para limpiar la ventana Network/ Data Manager es necesario seleccionar cada una de las variables presentes en la ventana y activar la opción Delete, ver figura 3.2. De otra manera será necesario salir de Matlab, para volver a emplear el comando nntool y generar una ventana limpia.

3.1.7 IMPORTANDO DATOS DESDE EL ESPACIO DE TRABAJO DE MATLAB
En la ventana Network / Data Manager existe la opción Import la cual permite importar los datos de una variable ubicada en el espacio de trabajos de Matlab o en un archivo de unidad disco y generar su variable en la ventana Network / Data Manager, durante este proceso se le puede asignar un nombre distinto a la variable generada en la ventana Network/ Data Manager.

3.2 SIMULINK
Para crear en Simulink el modelo de una RNA creada en la caja de herramientas nntool y previamente exportarla al espacio de trabajo de Matlab, se emplea el comando gensim(net,tm) donde net es el nombre de la RNA a la cual se le desea generar su modelo y tm es el tiempo de muestreo del bloque a generar, el valor por omisión para el tiempo de muestreo es de -1, esto es muestreo continuo y es aplicable solo cuando la RNA no contiene retardos de tiempo en alguna de sus capas.

3.2.1 USO DEL BLOQUE TAPPED DELAY
El bloque Tapped Delay puede encontrarse en la ventana Simulink Library Browser dentro de la librería Discrete, figura 3.12. Este bloque nos permite retardar una señal escalar durante múltiples periodos de muestreo y retorna todos los valores correspondientes a los retardos. El periodo de tiempo entre cada una de las muestras se introduce mediante el parámetro Sample time:, ver figura 3.13. La cantidad de retardos de tiempo a aplicar en la señal se introduce en el espacio Numbers of delays:. El bloque recibe una entrada escalar y genera una salida por cada retardo de tiempo. El orden en los elementos del vector de salida se determina en la lista de opciones Order output vector starting whit:. Las dos opciones posibles son Oldest que ordena los elementos del vector de salida comenzando con la el valor más antiguo de la señal y finalizando con el más actual y Newest que los ordena comenzando de forma contraria. Los valores en la salida del bloque para el primer periodo de muestreo se especifica en el parámetro Initial condition. La opción Include current input in output vector permite incluir los valores actuales de la señal en el vector de salida.

Software y Hardware empleado

51

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.12 Ventana con librerías de bloques en Simulink

Fig. 3.13 Parámetros de ajuste para un bloque de retardos de tiempo

Capitulo 3. Descripción del Sistema

52

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

3.3 REAL TIME WORKSHOP [2]
Real-Time Workshop (RTW) es una extensión de capacidades para Simulink y Matlab que permite compilar y generar automáticamente el código fuente de modelos desarrollados en Simulink. De esta manera se pueden crear aplicaciones de software en tiempo real. Algunos de los principales componentes y objetos que maneja RTW son: • El Generador de Código Simulink (Simulink Code Generator), el cual automáticamente genera el código C que representa exactamente al modelo desarrollado en Simulink El Creador de Proceso (Make Process), el Creador de Proceso permite construir aplicaciones con especificaciones particulares en la compilación y conexión del código generado. Modo Externo de Simulink (Simulink External Mode), permite la comunicación entre Simulink y un modelo que se este ejecutando en tiempo real. Mediante esta opción se puede ajustar algunos parámetros de ejecución, de almacenamiento de datos, y observar el modelo mediante la ventana de Simulink. Soporte de Dispositivos (Targeting Support), mediante esta herramienta se pueden emplear una gran variedad de drivers incluidos dentro de RTW que permiten diseñar aplicaciones para ejecutarse en dispositivos o plataformas ya declaradas en RTW. Se puede emplear una gran variedad de tarjetas de adquisición de datos de terceros fabricantes, en nuestro caso la tarjeta PCI6014 de National Instruments.

3.3.1 DESARROLLO DE UNA APLICACIÓN EN RTW
La forma en que se desarrolla una aplicación con RTW puede observarse en el diagrama de flujo en la figura 3.14. En primer lugar se deben determinar los parámetros adecuados de configuración referentes a la ejecución del programa, al hardware a emplear, a la optimización de las tareas y a parámetros de RTW. Para realizar esto se utiliza la ventana Configuration Parameter la cual se puede acceder en el menú Simulation de Simulink. La modificación de los parámetros de configuración afectara el comportamiento de un modelo en la simulación y en la generación de su código. Para una lista y descripción de las posibles opciones de configuración se puede consultar el capitulo 2 del manual Getting Started [2]. Después de introducir los parámetros adecuados de configuración es conveniente ejecutar la aplicación en forma de prueba antes de genera el código fuente. En la ventana del modelo (Simulink) se puede elegir la opción Model Advisor del menú Tools que permite ejecutar en modo de prueba un modelo y generar un reporte con los parámetros de configuración así como diagnostico de eficiencia en sus tareas.

Software y Hardware empleado

53

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Identificación de requerimentos para las opciones de configuración de la aplicación. Ajuste de parámetros de configuración

Ejecución de la Aplicación

¿Se requiere ajustar la configuración? No Generar código

No

¿Es correcto el Código?

Sí Generar código y un programa ejecutable Verificar el programa ejecutable

No

¿Los resultados imitan la simulación? Sí Guardar los valores de configuración

FIN

Fig. 3.14 Diagrama de flujo para la creación de una aplicación en RTW [2].

Después de obtener un comportamiento adecuado en la ejecución del modelo se puede proceder a generar el código del modelo, es probable que se desee solo generar el código del modelo sin necesidad de generar su archivo ejecutable, esto se puede realizar mediante la selección de la opción Generate code only de la ventana Configuration Parameters, en el menú Real-Time Workshop, figura 3.15. De esta forma se puede analizar si la respuesta del modelo compilado es la adecuada o si es necesario realizar modificaciones. Si la respuesta es la adecuada se puede proceder a crear el archivo ejecutable. Para esto se emplea la opción Build presente en la ventana Configuration Parameter, de esta forma se crean los archivos necesarios dentro del directorio de trabajo. La mayoría de las aplicaciones realizadas en Simulink requieren modificar el tipo de solucionador (Solver options: Type) que indica el algoritmo a emplear durante la ejecución de tareas.

Capitulo 3. Descripción del Sistema

54

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.15 Ventana parámetros de configuración para RTW.

Otra forma de verificar los parámetros pero en forma individual para cada uno de los elementos del modelo es mediante la ventana Model Explorer ubicada en el menú View en Simulink, ver figura 3.16. Mediante esta ventana se pueden analizar, modificar y guardar parámetros correspondientes a un modelo determinado.

Fig. 3.16 Ventana para explorar modelos de Simulink.

Desde la ventana del modelo creado en Simulink se puede generar el código y su archivo ejecutable mediante la opción Build Model…(ctrl.+B), en el submenú Real-Time
Software y Hardware empleado

55

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Workshop del menú desplegable Tools. Durante el proceso de compilación se crean una gran variedad de archivos temporales y otros requeridos por RTW, estos son colocados dentro del directorio de trabajo en una carpeta con el nombre del modelo. Para una lista y descripción de los archivos creados durante la construcción de una aplicación se puede consultar el capitulo 2 de Getting Started en [2].
Al crear una aplicación particular se requiere especificar el elemento final que la ejecutara (System Target), RTW cuenta con algunas configuraciones ya definidas de tal manera que al seleccionar alguna de ellas se realizan los ajustes adecuados en los elementos a emplear, en este trabajo se utilizara Real-Time Window Target como ambiente de ejecución del programa a realizar por lo que es necesario seleccionar la opción rtwin.tlc del menú RTW system target file en la ventana Configuration Parameters. Si se desea monitorear o almacenar en un archivo alguna de las señales generadas durante la ejecución del programa se puede seleccionar la opción Enable archiving presente en la ventana External Data Archiving del submenú External Model Control Panel… del menú tools de Simulink. Después de generar el archivo de la aplicación en tiempo real es necesario habilitar la opcion External del menú Simulation en Simulink para poder ejecutarlo. Existen parámetros de los bloques empleados en el modelo que pueden ser actualizados durante su ejecución, otros requieren parar la aplicación para ser modificados y posteriormente volver a generar la aplicación de tiempo real (Build) ya que son parte de la estructura del código generado.

3.4 REAL TIME WINDOWS TARGET [3]
Real Time Windows Target (RTWT) es una caja de herramientas de Matlab que permite extender las habilidades de Simulink, de tal forma que los modelos generados en Simulink puedan ser empleados como interfase grafica entre el usuario y una aplicación de tiempo real, permitiendo visualizar señales, ajustar parámetros y controlar la aplicación en tiempo real . La ventana que nos permite emplear bloques de conexión entre la aplicación software y el sistema físico empleando RTWT se puede acceder en la ventana de librerías de Simulink (Simulink Library Browser), figura 3.17, en el submenú Real-Time Windows Target. En la ventana de bloques de RTWT se puede seleccionar alguna de los canales de señal disponible en los dispositivos configurados. El tipo de bloque que pueda utilizarse dependerá del dispositivo seleccionado. Los parámetros de configuración de la señal seleccionada se pueden modificar en la ventana Block Parameters : Analog Input, figura 3.18. Los parámetros comunes en una gran cantidad de tarjetas son: El tiempo de muestreo (Sample Time:), que determinara la frecuencia con la que se realizan las mediciones en las señales de entrada o salida y la unidad de tiempo que se emplea es el segundo. El numero de entrada o salida que se pretende emplear, Input channels:, por si existen varios canales de entrada o salida en el dispositivo seleccionado. El rango de valores en las señales de entrada, Input range:. Y el tipo de dato a la salida del bloque seleccionado, Block output signal:.
Capitulo 3. Descripción del Sistema

56

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.17 Ventana de la caja de herramientas RTWT.

Fig. 3.18 Ventana de configuración para una entrada analógica en RTWT.

Para una descripción mas detallada de los tipos de bloque disponibles y sus parámetros de configuración se puede ver el capitulo 4 de la guía de usuario en [3]. En la misma ventana Block Parameters: se puede dar de alta alguna de las tarjetas de adquisición de datos compatible con RTWT, dentro de la opción Install new board se puede seleccionar alguna de las tarjetas de terceros fabricantes, figura 3.19, dentro de este menú se puede seleccionar la tarjeta PCI-6014 de National Instruments empleada en esta tesis.
Software y Hardware empleado

57

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 3.19 Selección de tarjeta compatible con RTWT.

3.5 TARJETA PCI6014
En la computadora es posible tener dispositivos para la adquisición de datos de forma sencilla. Estos se pueden instalar a través de los puertos de comunicación estándar PCI/PXI, USB, RS232, etc. La forma en que convierten estos dispositivos las señales analógicas a digitales esta basado en el teorema de Nyquist. De acuerdo a este teorema el periodo de muestreo debe ser el doble de la frecuencia mayor encontrada en la señal a examinar para que ésta pueda ser reconstruida posteriormente sin pérdida de información. A la mitad de la frecuencia de muestreo se le conoce como frecuencia de Nyquist. Teóricamente, es posible recuperar información de una señal cuya frecuencia sea cercana o menor al valor de la frecuencia de Nyquist [4]. La tarjeta PCI6014 de National Instruments es una herramienta utilizada para la adquisición de datos. Puede ser usada, entre otras aplicaciones, como lectora de señales proveniente de sensores ya que cuenta con 16 entradas analógicas de 16 bits a una frecuencia máxima de muestreo de 200 KHz. Estas y otras características técnicas de la tarjeta se encuentran en la Tabla 3.2. La conexión eléctrica entre la tarjeta PCI6014 y el PIS se realizaron empleando un bloque de conexiones CB-68LPR de National Instruments adecuado para este tipo de tarjetas ya que cuenta con 68 bornes de conexión. El cable de conexión entre la tarjeta y el bloque de conexiones fue un cable blindado SH68-68-EP.
Capitulo 3. Descripción del Sistema

58

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Tabla 3.2 Datos técnicos de la tarjeta PCI6014 de National Instruments [4].
Tipo de Bus PCI Tarjeta PCI 6014 (National Instruments) Entradas Resolución de Máximo rango Rango de Analógicas la entrada de muestreo entradas entrada 16 16 bits 200 kS/s ±0.05 a ± 10 V Máximo rango de muestreo salida 10kS/s Rango de salida ± 10 V Entradas/ Salidas Digitales 8 Contadores Salidas Analógicas 2

Resolución de la salida 16 bits

2 - 24 bits

Exactitud en rango ± 10 V 3.835 mV

3.6 INTERFAZ DE POTENCIA
La interfaz entre la tarjeta de adquisición de datos y el motor de c.c. del PIS se realiza mediante un amplificador de corriente lineal implementado con un amplificador operacional (CI 1) y transistores BJT (T1 y T2). En el circuito se emplean dos transistores con características eléctricas idénticas (uno de ellos PNP y el otro NPN) en configuración emisor-seguidor, con los emisores conectados entre sí (ver figura 3.20). El motor de c.c. es alimentado a través de los transistores BJT. Cuando el control del PIS requiere que el motor gire en un sentido y a cierta velocidad, el amplificador operacional acopla la señal de la tarjeta 6014 con los transistores de potencia. Estos amplifican la señal en corriente para mover al motor con la velocidad y giro adecuado. El amplificador operacional se realimenta (a través de R2) del voltaje que le llega al motor para asegurarse que la señal recibida de la tarjeta se transfiera fielmente al motor. La corriente que proporcionan los transistores al motor son tomados de una fuente de voltaje adicional. Esta fuente de voltaje proporciona un voltaje de +V=12 V. y –V=-12 V a 3 amperios. Con la finalidad de mantener un voltaje de alimentación constante en los sensores de posición S1 y S2 se utilizó un diodo Zener. Como referencia para la selección del diodo zener y su resistencia limitadora de corriente R3 se puede consultar a Zbar [5].

3.7 SISTEMA PIS
Para convertir el movimiento oscilatorio del péndulo y el movimiento lineal de la base en una señal eléctrica observable se emplearon dos potenciómetros, RV1 y RV2 respectivamente, tal como se muestra en la figura 3.20. El potenciómetro es un elemento resistivo con un contacto móvil (cursor) que puede ser posicionado en cualquier lugar a lo largo del elemento resistivo. La posición deseada se logra mediante un vástago que está unido por un extremo al cursor y por otro hacia el mecanismo que lo mueve. La relación posición angular/resistencia de RV1 y RV2 es lineal, es decir, la resistencia del potenciómetro está distribuida de manera uniforme en toda la carrera que recorre el cursor.
Software y Hardware empleado

59

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Para que el potenciómetro proporcione una señal de tensión proporcional a la posición del cursor éste se conecta como divisor de tensión. La terminal de uno de los extremos se conecta al voltaje fijo regulado por R3 y DZ1 y la del otro extremo a tierra. De la terminal central con respecto a tierra se obtiene el voltaje proporcional al ángulo de giro. Para conocer la posición del péndulo se monitorea la señal S1 y para la posición de la base móvil la señal S2.
PARTE ELECTRICA DEL SISTEMA PIS R3

DZ1

RV1

S1

RV2

S2 E1 E2 E3 S1 +12 V Señal de entrada - 12 V Cursor en Péndulo Cursor en base LM741 10 KΩ 10 KΩ 120Ω TIP31 TIP32 10 V Motor 12 VCD

E1 R2

S2 CI1 T1

R1 E2 CI1

R1 R2 R3 T1 T2 DZ1 M1

M1
T2

E3

Fig. 3.20 Circuito eléctrico de la interfaz de potencia

El elemento impulsor para desplazar la base móvil del PIS es un motor de corriente directa de 12 V y 1 A. Para transformar el movimiento giratorio del motor a un movimiento lineal (y permita el desplazamiento horizontal de la base móvil) se ha utilizado un engrane y una banda dentada como se puede observar en la figura 3.21. La carrera (longitud de movimiento horizontal) del la base móvil es de 30 cm. aproximadamente. Esta base se mueve horizontalmente sobre una barra guía para mantenerse en movimiento en un solo eje.
Motor Impulsor (M1) Engrane Barra Guía Base móvil Banda de transmisión

Fig. 3.21 Sistema motriz del PIS

Capitulo 3. Descripción del Sistema

60

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

REFERENCIAS DEL CAPITULO
1. 2. 3. 4. 5. 6. Demuth, H. and M. Beale, Neural Networks Toolbox User´s Guide. Version 4 ed. 2000, Natick,MA: The MathWorks,Inc. 1-208. MathWorks, Getting Started whit Real-Time Worshop For Use Whit Simulink. Version 6 ed. 2004, Natick, MA: The Mathworks, Inc. 1_1-3_51. MathWorks, Real-Time Windows Target User´s Guide. Version 2 ed. 2004, Natick,MA: The Mathworks, Inc. Instruments, N., The Measurement and Automation, in Catalog 2004. 2004, National Instruments: Austin, Tx. Zbar, P.B., A.P. Malvino, and M.A. Miller, Prácticas de Electrónica. 2001: AlfaOmega Grupo Editor. 113-119. Maloney, T.J., Electrónica Industrial Moderna. 3ª ed. 1997: Prentice Hall. 338-342.

Software y Hardware empleado

61

CAPITULO 4 IMPLEMENTACION DEL CONTROLADOR

En este capitulo se describe la implementación del controlador de posición del PIS utilizando redes neuronales. Se presenta el comportamiento del prototipo utilizando un controlador PID y la forma en que éste se modificó para generar datos válidos para entrenar la red. También se describe el proceso de entrenamiento de la red para varios conjuntos de datos. Para entrenar una RNA BP, empleando técnicas de entrenamiento supervisado, es necesario contar con información referente al comportamiento del sistema como los son datos de entrada y salida. En nuestro caso los datos de entrada son las señales provenientes de los sensores de posición (potenciómetros) y los de salida la señal de voltaje que se inyecta al motor de c.d. En la figura 4.1 se presenta un esquema de los elementos utilizados en el prototipo desarrollado así como el flujo de datos entre ellos. La computadora es utilizada para monitorear, procesar y pos-procesar los datos. Además en ella está incluido el algoritmo de la red neuronal implementado en Matlab-Simulink. La interfaz incluye la tarjeta de adquisición de datos así como la etapa de potencia que permite accionar al motor. La interfaz es quien permite la comunicación entre la computadora y el “mundo real”. A través de sus entradas analógicas recibe la información de los sensores de posición (posición del péndulo θ(τ ) y de la base móvil x(t)) y mediante su salida analógica envía la señal de voltaje v(t) al motor del sistema motriz.
PROTOTIPO PIS
θ(t+1)

Sistema Motriz v(t) M

θ(t)

x(t)

x(t+1)

INTERFAZ

PC :
Ejecuta Controlador: PID o RNA Almacena y Despliegua datos

Fig. 4.1 Esquema de los elementos del prototipo PIS

Para obtener los datos tanto de entrada como de salida se puede emplear uno de los métodos

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

encontrados en la literatura, por ejemplo: • • • Empleando valores generados en un programa simulador ejecutado en una computadora [1, 2], Mediante la variación manual del voltaje de alimentación del motor [3] o Mediante el monitoreo del sistema PIS-Controlador empleando un regulador Proporcional-Integral-Derivativo (PID) [1], o algún otro de los controladores como los presentados en el apartado 2.1.2.

4.1 PROTOTIPO PIS En la figura 4.2 se presenta el prototipo desarrollado para implementar el sistema de control con redes neuronales. Se compone básicamente de un sistema eléctrico-electrónico y un sistema mecánico. El primero de ellos está compuesto por las fuentes de alimentación, bloque de conexiones, interfaz de potencia, motor y sensores de posición. El segundo lo compone la base móvil, el péndulo, banda, poleas y barra guía. Las señales de realimentación en nuestro PIS son una señal de voltaje proporcional a la posición angular del péndulo y otra proporcional a la posición longitudinal de su base móvil. La señal de control es el voltaje de alimentación aplicado al motor de corriente directa M1. Esta señal de control está limitada al rango de +10 a -10 V de la salida analógica de la tarjeta 6014. Debido a que el cálculo, diseño y selección de los componentes utilizados en el desarrollo del prototipo están fuera del ámbito de esta tesis no se hará referencia a ellos a menos que sea necesario.
Fuente de Voltaje +12V...-12V Interfaz de Poténcia Bloque de conexiones CB-69LPR

Barra del PIS

Motor Impulsor (M1)

Sensor RV2 Posición de base móvil (x )

Sensor RV1 Angulo de la barra (θ)

Adquisición de datos. Creación, entrenamiento e implementación de la RNA BP

63

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.2 Prototipo del PIS empleado.

Para desarrollar el modelo matemático de un PIS regularmente se hacen las siguientes consideraciones: • • • • • La longitud del desplazamiento horizontal de la base móvil es infinita (en nuestro prototipo es de 30 cm.). El rango de voltaje que puede tener la señal de alimentación al motor impulsor es infinito (en nuestro caso está limitado a +10… -10 V). La fricción, regularmente desconocida, que existe entre el cursor y la resistencia de los sensores de posición (RV1 y RV2) se desprecia. El centro de masa de la barra-péndulo se puede encontrar ubicado en una posición distinta a la geométrica debido a la no homogeneidad del material. El plano en el cual se desplaza la base móvil puede no ser perfectamente perpendicular al plano en el cual se realiza la oscilación.

Por otro lado, debido a que en nuestro prototipo PIS se presentan tiempos muertos (el motor M1 no comienza a girar sino hasta después de un voltaje mínimo (± 1.7 Volts) y la banda de transmisión no es completamente rígida, etc.) su comportamiento es distinto al del PIS ideal modelado en la sección 2.1.

4.2 ADQUISICIÓN DE DATOS DE ENTRENAMIENTO Mediante la variación manual del voltaje de alimentación de M1 es posible controlar la posición de la base móvil, de tal forma que se logre el equilibro del péndulo, actuando de forma similar a cuando se mueve el brazo para equilibrar una escoba (barra del PIS) apoyada sobre la palma de la mano (base móvil). En primera instancia se intento obtener los datos de entrenamiento modificando manualmente la alimentación del motor impulsor M1, empleando una palanca de control de juegos de video, y monitoreando el voltaje presente en los cursores de los potenciómetros RV1 y RV2, esto con el fin de mantener en equilibrio la barra y obtener los valores correspondientes con respecto al tiempo (t). Sin embargo esta opción fue descartada por lo difícil que es adquirir la habilidad para estabilizar el PIS. Debido a esto, en esta tesis se emplea un procedimiento similar al mostrado por Chou [1], esto es, empleando un controlador clásico y ajustando sus parámetros mediante prueba y error hasta lograr un comportamiento aceptable. De acuerdo a Anderson [4], es posible obtener una señal de control (que tienda a equilibrar el

Capitulo 4. Implementación del controlador

64

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

sistema) conociendo los valores de posición angular del péndulo y posición horizontal de la base móvil así como los de sus respectivas derivadas (ecuación 2.16) [1]. Siguiendo el ejemplo de Chou [1], se procede a implementar un controlador con el regulador proporcional, integral, y derivativo (PID) en Simulink, como se muestra en la figura 4.3. En este controlador la señal de posición angular de la Barra-Péndulo se filtra para reducir el ruido inherente de la entrada analógica de la tarjeta.

Fig. 4.3 Controlador PID con filtro
º Grados (180º= Pi radianes) Posición angular de la barra-péndulo ( Referencia cero en vertical ) 20 0 -20 0 0.2 0.4 0.6 0.8 1 1.2 tiempo (ms) 1.4 1.6 1.8 x 10 2
4

Posición horizontal Base móvil ( Respecto a centro de superficie de apoyo ) 10 cm (100 cm = 1 m) 5 0 -5 -10

0

0.2

0.4

0.6

0.8

1 1.2 tiempo (ms)

1.4

1.6

1.8 x 10

2
4

Salida controlador PID con Filtro Posteriormente se trunca a valores de +10......-10 V 50

Volts

0

-50

0

0.2

0.4

0.6

0.8

1 1.2 tiempo (ms)

1.4

1.6

1.8 x 10

2
4

Adquisición de datos. Creación, entrenamiento e implementación de la RNA BP

65

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.4 Respuesta del PIS utilizando el controlador PID con filtro La respuesta del sistema utilizando el controlador PID con filtro se presenta en la figura 4.4. En el eje x se encuentra la escala del tiempo (en milésimas de segundo) y en el eje de las ordenadas la magnitud de voltaje proporcional a las señales de entrada y salida utilizadas (multiplicado por su factor de conversión para graficarse en unidades adecuadas, ángulo o desplazamiento lineal). Como se puede observar el ángulo del péndulo y la posición de la base móvil es oscilatoria y tienden a crecer a medida que pasa el tiempo. En t = 8 s y 16 s las señales alcanzan una magnitud importante por lo que es necesario modificar manualmente el ángulo del péndulo mediante un pequeño empujón en el péndulo para evitar que la base móvil salga de sus limites de desplazamiento horizontal. Mediante prueba y error se decide añadir reguladores integrales y derivativos en paralelo al controlador mostrado en la figura 4.3, logrando una mejoría en la tarea de control al colocar dos integradores en paralelo con los elementos anteriormente empleados, tomando el controlador la forma final mostrada en la figura 4.5.

Fig. 4.5 Controlador PID con filtro y un elemento doble integrador

El comportamiento del PIS con el controlador PID con filtro y elemento doble integrador se muestra en la figura 4.6. Dentro del conjunto de valores que se obtienen al controlar el prototipo PIS mediante los reguladores proporcionales, integrales y derivativos existen datos que corresponden a diferentes condiciones, algunos de ellos corresponden a periodos donde el prototipo ha estado expuesto solo a la señal de control, y otros corresponden a fracciones de tiempo en el cual se introdujo un impulso para evitar que la base móvil salga de sus límites en la horizontal (ver grafica 1 de la figura 4.6). El mejor comportamiento de la RNA como imitadora del controlador es cuando los datos de

Capitulo 4. Implementación del controlador

66

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

entrenamiento corresponden a segmentos de tiempo en el cual el prototipo esta expuesto solo a la acción del controlador.
Posición angular de la barra-péndulo (Referenciua cero en vertical) ºGrados (180º = Pi radianes) perturbación introducida

20

0 Periodo de actuación de solo el controlador

-20

0

0.2

0.4

0.6

0.8

1 1.2 tiempo (ms)

1.4

1.6

1.8 x 10

2
4

Posición horizontal Base móvil (Respecto a centro de superficie de apoyo) 15 cm (100 cm = 1 m ) 10 5 0 -5 -10 -15 0 0.2 0.4 0.6 0.8 1 1.2 tiempo (ms) 1.4 1.6 1.8 x 10 2
4

Salida controlador PID con doble integrador Posteriormente se trunca a valores +10 ... -10 V 50

Volts

0

-50

0

0.2

0.4

0.6

0.8

1 1.2 tiempo (ms)

1.4

1.6

1.8 x 10

2
4

Fig. 4.6 Respuesta del PIS ante un controlador PID con doble integrador

4.3 EMULACION DE LA RNA BP EMPLEANDO MATLAB Considerando el comportamiento del controlador PID con filtro, el controlador PID con doble integrador y sus respetivas señales de control la tarea a imitar por la RNA BP, se procede a implementar la RNA BP mediante la herramienta nntool de Matlab. Los parámetros empleados se muestran en las figuras 4.7 y 4.8. Estos corresponden a una RNA BP de realimentación (RNA BP1) y una RNA BP con retardos de tiempo en sus entradas (RNA BP2).

Adquisición de datos. Creación, entrenamiento e implementación de la RNA BP

67

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.7 Parámetros empleados para crear la RNA BP1

Fig. 4.8 Parámetros empleados para crear la RNA BP2

Los parámetros mostrados en dichas figuras fueron seleccionados después de probar con distinta cantidad de neuronas en la capa de entrada (layer 1), empleando las funciones de transferencia disponibles en la ventana Create New Network / Transfer Function: y analizando el proceso de aprendizaje de la RNA. En las figuras 4.9 y 4.10 se muestran las representaciones graficas generadas por Matlab correspondientes a las RNA BP1 y RNA BP2.

Fig. 4.9 Representación grafica de la RNA BP1

Fig. 4.10 Representación grafica de la RNA BP2

Como se puede observar en las figuras 4.9 y 4.10 las dos RNA´s creadas contienen la misma cantidad de neuronas en la capa de entrada (columna izquierda obscurecida, dos neuronas), cada una de ellas monitoreando la señal de realimentación correspondiente (RV1 y RV2). La
Capitulo 4. Implementación del controlador

68

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

RNA BP1 tiene mayor cantidad de neuronas en la capa oculta (14 neuronas) que la RNA BP2 (7 neuronas), pero la RNA BP2 tiene 4 retardos de tiempo en sus entradas (ver la opción Input delay vector: de la figura 4.8) que le permiten considerar mayor cantidad de información en el aprendizaje de la función a imitar, al contar con una cantidad menor de elementos de aprendizaje (neuronas en cualquiera de las capas o retardos de tiempo en alguna de sus neuronas) la RNA podría no ser capaz de aprender la función deseada, por otro lado un exceso de elementos podría provocar que la RNA solo memorice los datos presentados durante su entrenamiento. La arquitectura seleccionada en este caso presenta un comportamiento adecuado en su aprendizaje. Al crear las RNA´s se define la regla de aprendizaje a utilizar, que en este caso es la de Gradiente Descendente ( Sección 2.2.8.2) por ser la mas simple en caso de desear emular la RNA en otro ambiente de programación y poder reproducir los resultados obtenidos, tomando como función de ejecución el Error Medio Cuadrático (Sección 3.1.3.1) que nos permite observar la convergencia de la RNA.

4.4 ENTRENAMIENTO DE LAS RNA´s BP Cuando se cuenta con un conjunto de datos que representan el comportamiento deseado y se define la arquitectura de RNA BP que se empleara para aprender la tarea, lo que sigue a continuación es seleccionar el conjunto de datos que contengan la información necesaria para identificar la tarea a imitar. La información puede ser presentada en la forma adquirida por la interfaz o pueden normalizarse sus valores para resaltar los atributos de interés que predominaran durante el entrenamiento. En el Apéndice A se presenta el programa Matlab que normaliza el rango de valores del vector de entrenamiento empleado en este caso. Al momento de entrenar una RNA BP se debe tener presente que el contenido de los vectores de entrenamiento determinan la función aprendida por la RNA. Para el caso de una RNA que no contiene retardos de tiempo no es tan importante el orden de los elementos del vector de entrenamiento (pares entrada-salida deseada), pero para el caso en que están presentes retardos de tiempo (RNA BP2), tanto el orden de los elementos en el vector de entrenamiento como los valores iniciales que se le asignan a dichos retardo son cruciales para determinar la función asimilada por la RNA. Al realizar esta tesis erróneamente se le asignaban condiciones iniciales con valor 0 a los retardos de tiempo y el valor de error MSE obtenible en el entrenamiento de las RNA BP1 y RNA BP2 no se diferenciaban significativamente, esto es, aprendían una tarea muy similar. Creando un nuevo conjunto de datos que representen las condiciones iniciales en los retardos de tiempo de la RNA BP2 (los cuales corresponden a los datos empleados en el conjunto de entrenamiento) y empleando este como condiciones iniciales de los retardos es posible lograr un aprendizaje más similar a la tarea deseada. En el Apéndice B se presenta el programa empleado para generar el arreglo de vectores de las condiciones iniciales de los retardos de tiempo. Para llevar a cabo el entrenamiento de la RNA BP es necesario definir los parámetros que se utilizaran durante el proceso, una adecuada selección de los parámetros de entrenamiento permitirá a la RNA BP aprender la tarea deseada (ver sección 2.2.10). Para el entrenamiento realizado en esta tesis se emplearon los parámetros de entrenamiento mostrados en las tabla
Adquisición de datos. Creación, entrenamiento e implementación de la RNA BP

69

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

4.1 y 4.2 (por conveniencia esta última se presenta en una página posterior).
Tabla 4.1 Parámetros de entrenamiento empleados en la RNA BP1
Datos controlador PID con filtro Ciclo 1 2 3 Épocas 1000 3000 3000 Meta MSE 0 0 0

Factor de Aprendizaje 0.1 0.01 0.005

MSE Valor Ultimo 83.62 59.45 58.39 Figura

4.11

TOTAL EPOCAS

7000

Al seleccionar de manera inadecuada el factor de entrenamiento se puede presentar un comportamiento no deseado en la convergencia de la RNA, un factor de entrenamiento inadecuado puede provocar que la RNA detenga su convergencia y comience a oscilar dentro de un rango de valores [5]. Los valores del error medio cuadrático (Mean Square Error MSE) obtenido de la RNA BP1 durante su entrenamiento se presentan en la figura 4.11. El entrenamiento de la RNA BP1 puede detenerse en un valor determinado de su valor MSE, en esta tesis se considera adecuado el valor de error obtenido al finalizar su tercer ciclo de entrenamiento el cual presenta la salida y error mostrados en la figura 4.12. El entrenamiento es detenido en este punto ya que haciendo modificaciones en los parámetros de entrenamiento y aumentando la cantidad de ciclos no se observa una disminución relevante en el valor de error de la RNA BP1 ( grafica inferior de figura 4.12). Como podemos ver en la figura 4.11 la RNA después de aproximadamente 500 ciclos de entrenamiento comienza a disminuir su convergencia pero variando sus parámetros de entrenamiento (tabla 4.1) aun se logra disminuir el valor de MSE ( hasta obtener un valor final de 58.39).
10
2

MSE en ultimo ciclo: 58.3911 ,

Meta: 0

Valor Mean Square Error

10

1

10

0

0

1000

2000

3000 4000 Epocas

5000

6000

7000

Fig. 4.11 Valores MSE de RNA BP1 durante su entrenamiento

De la figura 4.12 podemos observar que la RNA BP1 se comporta como filtro de señal que

Capitulo 4. Implementación del controlador

70

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

como imitadora de la función, siendo mas parecido a la salida deseada el valor de error obtenido, a pesar de ello la señal de control que genera presenta un comportamiento aceptable en el PIS. Para el entrenamiento de la RNA BP2 se emplearon los dos conjuntos de datos obtenidos, tanto del controlador PID con filtro como del controlador PID con doble integrador, con el fin de obtener dos RNA´s cada una de ellas emulando el comportamiento presentado en su conjunto de entrenamiento. El conjunto de valores de entrada-salida deseada obtenidos por el controlador PID con filtro fue el mismo que el empleado para entrenar la RNA BP1, la normalización en el vector de entradas fue el mismo para las RNA BP1 y RNA BP2, ver Apéndice A. Los parámetros a emplear durante el entrenamiento de la RNA BP2 se presentan en la tabla 4.2.
Salida deseada (Salida Control PID con filtro) 40 20 Volts 0 -20 -40 0 500 1000 1500 2000 2500 4000 patrones de salida deseada 3000 3500 4000

Salida RNA BP1 ante sus patrones de entrenamiento 40 20 Volts 0 -20 -40 0 500 1000 1500 2000 2500 3000 3500 4000

Error obtenido en la RNA BP1 con el conjunto de entrenamiento 20 0 -20 0 500 1000 1500 2000 2500 3000 3500 4000

Fig. 4.12 Respuesta de la RNA BP1 después del tercer ciclo de entrenamiento Tabla 4.2 Parámetros de entrenamiento empleados en la RNA BP2
Datos controlador PID con filtro Ciclo 1 2 3 4 TOTAL EPOCAS Épocas 1000 2000 2000 2000 7000 Meta MSE 0 0 0 0

Factor de Aprendizaje 0.01 0.0005 0.0003 0.0003

MSE Valor Ultimo 80.49 62.09 59.62 25.22 Figura

4.13

Adquisición de datos. Creación, entrenamiento e implementación de la RNA BP

71

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

1 2 3

Datos controlador PID con doble integrador . 1000 0 0.01 28.72 3000 0 0.005 21.14 10000 0 0.003 7.50

TOTAL EPOCAS

14000

El comportamiento en el valor MSE de la RNA BP2 durante su cuarto ciclo de entrenamiento empleando el conjunto de valores obtenidos por el controlador PID con filtro se muestra en la figura 4.13.
10
4

MSE en ultimo ciclo 25.2226, Meta: 0

10 Valor Mean Square Error

3

10

2

10

1

10

0

0

200

400

600

800

1000 1200 Epocas

1400

1600

1800

2000

Fig. 4.13 Valores MSE de RNA BP2 durante el cuarto ciclo de entrenamiento (Datos obtenidos de controlador PID con Filtro)

El entrenamiento de la RNA BP2 puede detenerse en un valor determinado de su MSE, en esta tesis se considera adecuado el valor de error obtenido al finalizar su cuarto ciclo de entrenamiento el cual presenta la salida y error en su salida mostrados en la figura 4.14, ya que una mayor cantidad de ciclos o modificaciones en sus parámetros de entrenamiento, solo provocan una ligera disminución en su error de salida (grafica inferior de figura 4.14).

Capitulo 4. Implementación del controlador

72

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Salida deseada (Salida Control PID con filtro) 40 20 Volts 0 -20 -40 0 500 1000 1500 2000 2500 4000 patrones de salida deseada 3000 3500 4000

Salida RNA BP1 ante sus patrones de entrenamiento 40 20 Volts 0 -20 -40 0 500 1000 1500 2000 2500 3000 3500 4000

Error obtenido en la RNA BP1 con el conjunto de entrenamiento 10 0 -10 0 500 1000 1500 2000 2500 3000 3500 4000

Fig. 4.14 Respuesta de la RNA BP2 después del cuarto ciclo de entrenamiento (Datos obtenidos del controlador PID con filtro)

Para entrenar la RNA BP2 empleando el conjunto de datos obtenidos del controlador PID con doble integrador se utilizaron los parámetros de entrenamiento mostrados en la tabla 4.2 (parte inferior). La respuesta de la RNA ante el conjunto de entrenamiento y la magnitud del error en su salida ante cada entrada de entrenamiento después del tercer ciclo de entrenamiento se presenta en la figura 4.15. De la figura 4.15 podemos ver que a pesar de que el error en la salida oscila entre +5…-5 aprox. La salida que genera la RNA (grafica central de figura 4.15) es muy parecida a la salida deseada (figura superior), de esto podemos considerar que el aprendizaje de la RNA es aceptable. Cuando consideramos que la RNA ha asimilado la tarea que se desea realice, solo resta presentarla ante condiciones distintas y de esta forma comprobar que la RNA puede generalizar su respuesta y desempeñar su función como controlador. Para esto, Matlab cuenta con las herramientas Simulink y Real Time Windows Target que permiten crear el modelo que emula la RNA creada y entrenada con el administrador de RNA´s de la GUI nntool.

Adquisición de datos. Creación, entrenamiento e implementación de la RNA BP

73

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Salida deseada Salida PID con Integrador Doble 20 10 0 -10 -20

0

500

1000

1500 Salida RNA BP2

2000

2500

3000

15 10 Salida RNA BP2 5 0 -5 -10 -15 Salida deseada - Salida RNA BP2 0 500 1000 1500 2000 2500 3000

Error despues de 14000 epocas 10 5 0 -5 -10

0

500

1000

1500

2000

2500

3000

Fig. 4.15 Respuesta de la RNA BP2 después del cuarto ciclo de entrenamiento (Datos obtenidos del controlador PID con doble integrador)

4.5 IMPLEMENTACION DE LA RNA BP COMO CONTROLADOR DEL PIS Como se menciono en el capitulo 3, el espacio de memoria que emplea nntool es distinto al del espacio de trabajo de Matlab, debido a esto para emplear una RNA creada con nntool, primero es necesario exportar la RNA en cuestión al espacio de trabajo de Matlab mediante la opcion export. Cuando Matlab reconoce la RNA en su espacio de trabajo, es posible generar su modelo de simulink mediante el comando gensim (Nombre_RNA, Ts), para este trabajo se le asigno un Ts (tiempo de muestreo) de 0.001 segundos al modelo generado. Esto nos permite tener el mismo periodo de muestreo en los elementos empleados en el modelo Real Time Workshop. En la figura 4.16 se puede observar la forma en que se implementan las RNA´s utilizadas dentro del modelo Real Time Workshop, el elemento obscuro ( RNA BP) de esta figura corresponde a la RNA BP2 pero un modelo similar se obtiene para cada una de las RNA generadas con nntool.

Capitulo 4. Implementación del controlador

74

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.16 Modelo Real Time Workshop de RNA BP2

Al tener el modelo en simulink podemos generar el modelo de Real Time Workshop (mediante la opcion cntrl-B), el cual nos permite interactuar con el prototipo utilizando la tarjeta PCI-6014. De esta forma se puede probar la RNA ante distintas condiciones del prototipo PIS. La tarea de control generada por la RNA BP2 aun tiende a exceder los limites de desplazamiento horizontal de la base móvil por lo que se decide introducir una señal manual que auxilie a la RNA BP2 en el control del PIS. La señal auxiliar es de +12 o -12 dependiendo del límite (izquierdo o derecho) que esta a punto de excederse y la dirección de desplazamiento en la base móvil. La señal se introduce por otro canal de entrada analógica de la tarjeta PCI 6014 mediante botones pulsadores en el momento de observar que la base móvil sale de ciertos limites en la horizontal, dicho limite no es estático sino que el operador que la genera decide en que momento introducir una señal auxiliar correctora en función de la posición que observa en la base móvil. En la figura 4.17 se observa el modelo Real Time Workshop que se emplea para realizar la tarea de control de forma auxiliada y en la figura 4.18 podemos ver el comportamiento del PIS frente a estas condiciones.

Adquisición de datos. Creación, entrenamiento e implementación de la RNA BP

75

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.17 Control RNA BP2 con señal de corrección auxiliar

Para auxiliar el control del PIS se modifica la señal que realimenta la posición de la base móvil atenuando el efecto de esta ( bloque Gain2 de figura 4.17), de tal forma que la RNA BP2 tiende a poner énfasis en el control del ángulo del péndulo (+3…-3 grados, grafica superior de figura 4.18), aunque el control de la posición de su base móvil en cierta forma es descuidado (grafica central superior de figura 4.18), para evitar que la base móvil salga de cierto rango se introducen los picos de voltaje en forma manual (grafica central inferior de figura 4.18) los cuales generan las perturbaciones convenientes en el ángulo de la barra (grafica superior de figura 4.18), permitiendo que la base móvil se mantenga dentro de sus rangos de desplazamiento. Si la base móvil esta a punto de alcanzar uno de sus limites horizontales se introduce un pico de voltaje que incline la barra-péndulo en dirección contraria al limite que se esta a punto de alcanzar, de esta forma la señal de control generada modifica la dirección de la base móvil. Para implementar la señal auxiliar como parte del controlador se entreno una RNA con 4 retardos de tiempo en su entrada, en función solo de la posición horizontal de la base móvil, su única señal de entrada es la posición de la base móvil. Realizando un procedimiento de entrenamiento similar al utilizado para entrenar la RNA BP2 se obtiene la RNA BP AUX que genera la señal auxiliar de control del PIS. Se puede entrenar la misma RNA BP2 para que aprenda el comportamiento conjunto de su salida y la señal de control auxiliar (adaptación de su tarea aprendida), pero por limitaciones de tiempo se decide entrenar una RNA AUX que genere la señal auxiliar correctora e implementarla conjuntamente con la RNA BP2 ya obtenida. El modelo Real Time Workshop del controlador implementado con las dos RNA´s se presenta en la figura 4.19. Se observan también algunos bloques de Ganancia para normalizar los valores de entrada a las RNA´s y también los valores de Ganancia necesarias para convertir las variaciones de voltaje en unidades de desplazamiento angular o longitudinal, según sea el caso. Después de obtener las RNA´s que generan la tarea de control deseada y teniendo ya su

Capitulo 4. Implementación del controlador

76

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

modelo en Simulink se procede a generar y ejecutar la aplicación en Real Time Workshop con el fin de observar el comportamiento del PIS prototipo ante estas nuevas condiciones.
ºGrados (180º = Pi radianes) Posición angular de la barra-péndulo (Referencia cero en vertical) 10

0

-10

0

0.2

0.4

0.6

0.8

1 1.2 tiempo (ms)

1.4

1.6

1.8 x 10

2
4

Posición horizontal Base móvil (Respecto a centro en superficie de apoyo) cm (100 cm = 1 m) 10 0 -10 0 2000 4000 6000 10000 12000 tiempo (ms) Señal correctora auxiliar 8000 14000 16000 18000 20000

20 Volts

0

-20

0

0.2

0.4

0.6

0.8

1 1.2 tiempo (ms)

1.4

1.6

1.8 x 10

2
4

Salida de RNA BP2 mas señal correctora 40 Volts 20 0 -20

0

0.2

0.4

0.6

0.8

1 1.2 tiempo (ms)

1.4

1.6

1.8 x 10

2
4

Fig. 4.18 PIS controlado con RNA BP2 mas señal auxiliar

Adquisición de datos. Creación, entrenamiento e implementación de la RNA BP

77

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

Fig. 4.19 Controlador Final implementado con RNA´s tipo BP REFERENCIAS DE CAPITULO

1. 2. 3. 4. 5.

Chou, S.C.-M., D. Goldberg, and otros, Inverted Pendulum, in Control Systems. 2001, UBC: Conecticut. p. 6-28. Míguelez García, R., Estudio diseño y desarrollo de una aplicación de tiempo real y de un simulador para su comprobación. 2001, U. Cantabria: Cantabria. Jones, P.C. and S. Tepavich, ADALINE Stabilization of an Inverted Robot Arm. 1997, www.aracnet.com. Anderson, C.W., Learning to Control an Inverted Pendulum Using Neural Networks. IEEE Control Systems Magazine, 1989. April 1989: p. 31-37. Freeman, J.A. and D.M. Skapura, Neural Networks: algorithms, applications, and programming techniques. 1 ed. Computation and Neural Systems, ed. C. Koch. Vol. 1. 1991, California: Addison Wesley. 45-124,341-371.

Capitulo 4. Implementación del controlador

78

CAPITULO 5 RESULTADOS

En este capítulo se presentan los resultados más importantes obtenidos durante el desarrollo de esta tesis.

5.1 RESULTADOS A lo largo de este trabajo se desarrollaron varias arquitecturas de RNA´s , sin embargo solo se muestran las que presentan resultados más relevantes. También se realizó un trabajo arduo con controladores clásicos como el PID para generar datos de entrada y salida válidos para entrenar a las RNA´s. En total se desarrollaron tres controladores con RNA´s. El primero de ellos fue con una RNA back-propagation (RNA BP1) entrenada con datos obtenidos del PIS controlado mediante un controlador PID sencillo. En la figura 5.1 se muestra el comportamiento del prototipo PIS con la RNA BP1 actuando como controlador.

Fig. 5.1 Respuesta del PIS ante la RNA BP1

Se puede observar en la gráfica inferior como la posición de la base móvil casi excede los limites de desplazamiento horizontal del prototipo, por lo que fue necesario introducir perturbaciones de forma manual (perturbación 1, 2 y 3) para evitar que esta saliera de sus márgenes horizontales de operación (+15…-15 cm). Este comportamiento en cierta forma es el que se esperaba ya que cuando se implementó el controlador con el PID los resultados eran muy similares. La variación del ángulo del péndulo respecto a la vertical (gráfica superior de la figura 5.1) llegó a oscilar hasta +15 y -15 grados cuando los límites de desplazamiento

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

horizontal de la base móvil fueron casi alcanzados. Intentando mejorar la respuesta se utilizaron otras funciones de transferencia (sigmoidea, tangente sigmoidea y lineal) en la RNA además de otras cantidades de neuronas en su capa oculta pero desafortunadamente no se obtuvo mejoría. De acuerdo a la teoría presentada en el capitulo 2 era de esperarse que con un simple PID no se pueda controlar por completo al péndulo invertido. Este tipo de controlador sintonizado correctamente puede llegar a equilibrar al péndulo pero la base móvil se moverá hasta uno de los extremos ya que el PID solo puede controlar una variable y no dos a la vez (ángulo del péndulo y posición horizontal de la base móvil). El segundo controlador utilizado fue con la RNA back-propagation (RNA BP2) que tiene como característica adicional respecto a la RNA BP1 la inclusión de retardos de tiempo (4 retardos) en sus entradas. Como se mencionó en el capítulo anterior los retardos de tiempo en las entradas de la red permiten retener mayor cantidad de información durante el proceso de aprendizaje. Otra característica es que la RNA BP2 solo tiene 7 neuronas en la capa oculta contra 14 que tiene la RNA BP1. Los datos para entrenar esta RNA se obtuvieron del mismo controlador PID utilizado para la RNA BP1. El único cambio que se realizó fue que al PID se le añadió un filtro digital (figura 4.3) para disminuir el ruido proveniente del sensor del péndulo pensando en que esto podría mejorar la respuesta. En la figura 5.2 se presentan los resultados en tiempo real del prototipo PIS implementado con la RNA BP2. Como se puede observar de la gráfica superior la magnitud y frecuencia de oscilación del péndulo disminuyen en forma notable respecto a su contraparte de la figura 5.1. Sin embargo aún con esta mejoría la respuesta del péndulo no es adecuada ya que nuevamente es necesario introducir perturbaciones manuales para evitar que la base móvil salga de su rango de desplazamiento. En la gráfica inferior de la figura 5.2 se puede ver incluso que la base móvil tiende a llegar con mayor facilidad a los extremos.

Fig. 5.2 Respuesta del PIS ante la RNA BP2

Cesar Alejandro Frausto Davila (97240322)

79

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

(Datos de Controlador PID con Filtro)

Después de la implementación de las dos RNA´s anteriores (RNA BP1 y BP2) fue fácil constatar por experiencia propia que las redes neuronales pueden imitar el comportamiento de un controlador y quedando bastante claro que si los datos de entrenamiento de antemano no representan el comportamiento deseado de un sistema, la red neuronal empleada en este caso, por sí misma no lo mejorará. Ante estas conclusiones se procedió a buscar la forma de mejorar el controlador PID para mantener estable tanto al péndulo como la base móvil del PIS. En la figura 5.3 se presenta el nuevo comportamiento del PIS con la RNA PB2 entrenada con datos obtenidos de un controlador PID con filtro y doble integrador (figura 4.5). Como se puede apreciar en la gráfica superior el comportamiento del péndulo es más estable, aunque a medida que evoluciona el tiempo la amplitud de la oscilación tiende a crecer (figura 5.3). Este comportamiento es similar en la base móvil, la magnitud de su oscilación también tiende a crecer. Ya que la oscilación del péndulo y de la base móvil crecen progresivamente, en t=15 seg. se le “ayuda” manualmente al péndulo con un pequeño empujón para que la base móvil no llegue a exceder los límites de desplazamiento. Una vez que casi se estabiliza el péndulo con el empujón éste vuelve a repetir el patrón, aumenta la magnitud de su oscilación a medida que evoluciona el tiempo.

Fig. 5.3 Respuesta del PIS ante la RNA BP2 (Datos de Controlador PID con doble Integrador)

De este último experimento surge la idea de ayudar a la RNA BP2, entrenada con datos obtenidos del controlador PID con doble integrador, a estabilizar tanto al péndulo como a la pieza móvil, ya no con empujones en el péndulo, sino con pulsos de voltaje aplicados directamente al controlador en forma manual. La ventaja de aplicar estos pulsos directamente al controlador es que los datos de entrada y salida que se obtienen para entrenar la RNA contienen información de manera inherente de los pulsos aplicados para corregir la inestabilidad del péndulo y base móvil. Los resultados en este experimento dependen hasta cierto punto de la habilidad de la persona que esté aplicando los pulsos de voltaje. A la RNA entrenada con estos datos se le ha asignado en este trabajo con el nombre de RNA AUX. El controlador con RNA en este experimento no solo está implementado con la RNA AUX

Capitulo 5. Resultados

80

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

sino que también incluye a la RNA BP2 como ya se explicó en el punto 4.5. La RNA AUX también tiene cuatro retardos de tiempo en su señal de entrada (posición de la base móvil) al igual que la RNA BP2, que le permiten considerar la posición y dirección del desplazamiento. Al utilizar estas dos redes neuronales se logra mantener al péndulo oscilando dentro de un estrecho margen angular y a la base móvil con pequeños desplazamientos, siendo estos los efectos deseados (aunque no los óptimos) en el PIS. La respuesta del PIS con el controlador compuesto de la RNA BP2, entrenada con datos generados por los reguladores PID con doble integrador, y la RNA AUX, entrenada con datos generados manualmente, se presenta en la figura 5.4

Fig. 5.4 Respuesta del PIS controlado por la RNA BP2 más la RNA AUX

Se puede observar que la magnitud de la oscilación en el péndulo y la base móvil han mejorado bastante y que durante los 20 segundos que muestra la gráfica no se ve una aparente tendencia hacia el desequilibrio.

Cesar Alejandro Frausto Davila (97240322)

81

CAPITULO 6 CONCLUSIONES, RECOMENDACIONES Y PROPUESTAS PARA TRABAJOS FUTUROS

En este capitulo presento las conclusiones emanadas de los resultados obtenidos, así como algunas recomendaciones para aquellas personas que quieran seguir trabajando con el PIS utilizando las redes neuronales como medio de control. Estas recomendaciones las he separado en aquellas que se relacionan con el prototipo y las que tienen que ver con la implementación de las RNA´s. También presento algunas propuestas para trabajos futuros con el PIS y las RNA´s.

6.1 CONCLUSIONES El péndulo invertido simple es por naturaleza un sistema inestable y no lineal. Si además a esto le añadimos que los componentes utilizados para su construcción también son no lineales (motor de c.d., banda flexible, fricción, etc) el péndulo invertido en su conjunto es un sistema relativamente complejo. Esto sin considerar que los componentes eléctricos y electrónicos utilizados para su control también influyen de manera importante (cambio de parámetros debido a la temperatura, ruido electromagnético, etc.). Generalmente la simulación de un sistema de control automático (como el PIS) nos ayuda mucho para la implementación práctica. Mientras más completo sea el modelo a simular, es decir que incluya la función de transferencia de cada uno de los componentes eléctricos, electrónicos y mecánicos, etc., los resultados de la simulación estarán más cerca de la realidad. Sin embargo no siempre es posible conocer con exactitud la función de transferencia de los componentes y mucho menos de todo el sistema por lo que es necesario utilizar herramientas diferentes a las tradicionalmente conocidas para desarrollar el control. Una de estas herramientas son las redes neuronales. Estas no necesitan conocer de manera directa el comportamiento de cada uno de los componentes del sistema para emular al sistema en su conjunto. Lo único que necesitan son datos para “aprender” el comportamiento deseado del sistema. También es cierto y obvio que las redes neuronales tienen sus limitantes, ya que no pueden presentar un comportamiento que no se les ha “enseñado”. Aunque también existen redes neuronales con arquitectura relativamente complicada que continuamente están aprendiendo. A través de esta tesis se ha comprobado que las redes neuronales pueden emular el comportamiento de un controlador PID digital para controlar un péndulo invertido simple. Se ha visto que si los datos obtenidos para entrenar la red neuronal son erróneos, la red arrojará resultados erróneos. Si los datos son adecuados, el comportamiento de la red será por lo general el esperado. Los datos para entrenar la red no necesariamente deben de provenir de controladores automáticos, sino que también pueden tener su origen en manipulaciones externas a éstos, tal

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

como se presentó en el último experimento de la sección de resultados de este capítulo, en el que fue necesario aplicar pulsos de tensión en forma manual para auxiliar al control en su tarea. La configuración de la red neuronal es también un punto clave para que una aplicación sea exitosa. Si los datos de entrenamiento son correctos, pero la arquitectura de la red no es la adecuada para la aplicación, difícilmente la red neuronal se comportará como se espera. Como pudimos observar de las figuras 5.1 a 5.4, el hecho de utilizar retardos de tiempo en las entradas de las RNA´s permite retener mayor información en el momento del entrenamiento repercutiendo en un mejor aprendizaje de la tarea deseada. En resumen, el grado de éxito que se obtiene en el proceso de entrenamiento de una RNA depende de una selección adecuada de su arquitectura y los parámetros de entrenamiento a utilizar. La información que se le presente a la RNA se puede modificar mediante normalización de sus valores en las señales de entrada de tal forma que se pueda resaltar las características más importantes del comportamiento a aprender. La tarea que aprende la RNA es determinada en gran manera por los atributos mas activos de la información presentada (valores mayores tendrán mayor peso en la tarea aprendida). Además de los puntos anteriores el desarrollo de la tesis deja en claro las siguientes conclusiones: a) Las redes neuronales pueden llegar a aprender lo que uno les quiera enseñar. b) Existen diferentes arquitecturas de RNA´s, la utilización de una de ellas en específico depende del tipo de aplicación y datos a procesar. c) El Matlab y Simulink son herramientas computacionales que facilitan el aprendizaje y la implementación de las RNA´s. d) Los retardos de tiempo en la entrada de las RNA´s pueden facilitar la retención de mayor cantidad de información durante el proceso de aprendizaje. e) Las RNA´s pueden procesar la información de un sistema de control sin necesidad de conocer su modelo matemático o función de transferencia. f) Los datos de entrada y salida para entrenar una RNA deben estar fielmente ligados a la acción y reacción del controlador que se desea emular. El resultado no sería el esperado si solo se modifican los datos de entrada o de salida sin crear un vínculo válido entre los dos conjuntos de datos. g) Un controlador PID es incapaz de controlar un sistema de péndulo invertido ya que por definición solo puede tener una entrada y una salida de datos. En el sistema de péndulo invertido se tienen dos variables de entrada y dos de salida. Las dos variables de salida están acopladas por lo que es difícil modificar una sin afectar a la otra.

Cesar Alejandro Frausto Davila (97240322)

83

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

6.2 RECOMENDACIONES En referencia al prototipo recomiendo utilizar otro tipo de sensores para detectar la posición del péndulo y de la base móvil. Una posible opción puede ser utilizar un encoder el cual introduce menos ruido que los potenciómetros empleados. Aunque vale la pena decir que al utilizar los encoder será necesario utilizar una etapa adicional en el control para convertir los pulsos a valores de posición. Se recomienda también colocar interruptores en los extremos de la barra guía para evitar que el motor se fuerce innecesariamente en caso de que la base móvil llegue a uno de ellos. Vale la pena también comentar que es necesario rediseñar la base que soporta al péndulo y sensor de posición ya que la actual no tiene buen acoplamiento mecánico entre el eje que une la barra y el sensor de posición. Esta imperfección mecánica altera el valor de la posición sensada en relación a la posición real del péndulo. En relación al controlador que aporta los datos de entrenamiento para la RNA recomiendo utilizar otras técnicas de control para mejorar el comportamiento del PIS. Algunas de estas técnicas pueden ser control no lineal o variables de estado. Sería conveniente también experimentar con otras arquitecturas de RNA´s que incluyan conexiones de realimentación desde las neuronas de salida hacia las neuronas de entrada (feedback) ya que estas han tenido éxito en otras aplicaciones de control. De la misma forma es conveniente hacer un análisis de los parámetros de arquitectura y entrenamiento empleados en este caso, con el fin de optimizar tanto el diseño de la RNA como su proceso de entrenamiento. Otra recomendación es desarrollar un modelo matemático del PIS y realizar un análisis de estabilidad que nos permita localizar sus polos y ceros con la finalidad de ubicar los límites de estabilidad del sistema en su conjunto. Esto nos ayudaría a decidir si es necesario incluir en el control algún tipo de compensador (en adelanto o atraso) para modificar la posición de los polos y ceros del sistema y mejorar el comportamiento de la planta.

Capitulo 6. Conclusiones, Recomendaciones y Trabajos futuros.

84

Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

6.3 TRABAJOS FUTUROS Como trabajo futuro propongo que se implementen RNA´s en un procesador digital de señales (DSP), el cual puede ser programado en lenguaje C ó VisSim (leguanje gráfico). El propósito sería prescindir de la computadora una vez programado el DSP para aplicaciones donde el espacio es un factor importante. Al contar con el prototipo PIS, otro trabajo futuro es hacer uso de otras herramientas de las Técnicas de Computación Suave (Lógica Difusa y Algoritmos Genéticos) e implementarlas como controladores en tiempo real de este prototipo. Para el PIS, como trabajo futuro queda el implementar otra tarea de control complementaria a la realizada en este trabajo, la cual involucraría equilibrar en la vertical superior a la barrapéndulo partiendo de su posición vertical hacia abajo (esto es 180º de la vertical superior). De la misma forma queda pendiente implementar el control mediante RNA´s de otros sistemas físicos no lineales tales como el péndulo invertido con dos eslabones, equilibrio de una masa sostenida por un eslabón, control en la trayectoria de un proyectil, etc. Así como sistemas mecánicos que involucren información visual, tal como el control de posición de un brazo mecánico en función de información recabada por medio de visión digital, etc.

Cesar Alejandro Frausto Davila (97240322)

85

APENDICE A
* * Programa Normalizador de entradas a RNA BP * *
A2=PISF_0.signals(1).values(7001:10000); B2=PISF_0.signals(2).values(7001:10000); C2=PISF_0.signals(3).values(7001:10000); AA1=A2'; BB1=B2'; CC1=C2'; AAA=(AA1/0.05); BBB=(BB1/2); CCC=(CC1); x_teta=[AAA;BBB]; v_deseado=[CCC];

B
* * Programa genera el arreglo de vectores correspondientes a los 4 retardos de tiempo empleados en la RNA BP2 * *
A2=Señal.signals(1).values(7001:10000); B2=PISF_0.signals(2).values(7001:10000); C2=PISF_0.signals(3).values(7001:10000); D11=([PISF_0.signals(1).values(6996:9995)])/0.05; D12=([PISF_0.signals(1).values(6997:9996)])/0.05; D13=([PISF_0.signals(1).values(6998:9997)])/0.05; D14=([PISF_0.signals(1).values(6999:9998)])/0.05; D15=([PISF_0.signals(1).values(7000:9999)])/0.05; D121=([PISF_0.signals(2).values(6996:9995)])/2; D122=([PISF_0.signals(2).values(6997:9996)])/2; D123=([PISF_0.signals(2).values(6998:9997)])/2; D124=([PISF_0.signals(2).values(6999:9998)])/2; D125=([PISF_0.signals(2).values(7000:9999)])/2; DA1=[D15';D125']; DB1=[D14';D124']; DC1=[D13';D123']; DE1=[D12';D122']; DF1=[D11';D121']; AA1=A2'; BB1=B2'; CC1=C2'; AAA=(AA1/0.05); BBB=(BB1/2); CCC=(CC1); x_teta=[AAA;BBB]; v_deseado=[CCC];

Sign up to vote on this title
UsefulNot useful