You are on page 1of 95

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 i
INDICE ii
INDICE DE FIGURAS iv
INDICE DE TABLAS v
PRÓLOGO vi

CAPITULO 1
INTRODUCCIÓN
1.1 DESCRIPCIÓN GENERAL 1
1.2 HIPOTESIS 2
1.3 OBJETIVOS GENERALES 2
1.3.1 OBJETIVOS ESPECIFÏCOS 2
1.3 ALCANCES Y LIMITACIONES 3
REFERENCIAS DE CAPITULO 3

CAPITULO 2
PENDULO INVERTIDO Y REDES NEURONALES ARTIFICIALES
2.1 PRINCIPIOS BÁSICOS DEL SISTEMA PENDULO INVERTIDO 4
2.1.1 MODELADO DE UN PIS 5
2.1.2 DISEÑO DE UN CONTROLADOR PARA EL PIS 7
2.2 REDES NEURONALES ARTIFICIALES 9
2.2.1 BREVE HISTORIA DE LAS RNA´S 11
2.2.2 CARACTERÍSTICAS DE LAS RNA´S 12
2.2.3 NEURONA ARTIFICIAL 12
2.2.4 RNA 17
2.2.5 ENTRENAMIENTO DE UNA RNA 20
2.2.5.1 ENTRENAMIENTO SUPERVISADO 21
2.2.6 RNA PERCEPTRON 22
2.2.6.1 ENTRENAMIENTO DE UNA RNA TIPO PERCEPTRON 22
2.2.7 RNA TIPO PERCEPTRON DE CAPAS MULTIPLES 24
2.2.8 RNA TIPO ADALINE 24
2.2.8.1 REGLA DE APRENDIZAJE DEL ERROR CUADRATICO MEDIO
LMS (LEAST MEAN SQUARE O LMS) 25
2.2.8.2 LOCALIZACIÓN DE LA MATRIZ ÓPTIMA DE PESOS
MEDIANTE EL MÉTODO DE GRADIENTE DESCENDENTE 26
2.2.9 RNA TIPO MADALINE 28
2.2.9.1 ALGORITMO MRII (MADALINE RULE II) 29
2.2.10 RNA TIPO BACKPROPAGATION (BP) 30
2.2.10.1 REGLA DELTA GENERALIZADA (GDR) 31
2.2.10.2 ENTRENAMIENTO DE UNA RNA BP 33
2.2.10.3 PESOS Y PARAMETROS DE APRENDIZAJE 34
REFERENCIAS DEL CAPITULO 35

Instituto Tecnológico de León ii


Técnicas de Computación Suave (IA)

CAPITULO 3 PAG.
DESCRIPCION DEL SISTEMA
3.1 RNA´s EN MATLAB 38
3.1.1 ESTRUCTURA DE LOS DATOS 39
3.1.2 RED MADALINE 40
3.1.2.1 CREACION DE UNA RNA TIPO MADALINE MEDIANTE LA
GUI nntool 41
3.1.2.2 FILTRO LINEAL DE RESPUESTA A IMPULSOS FINITOS 44
3.1.3 RNA TIPO BP 44
3.1.3.1 CREACION DE UNA RNA TIPO BP MEDIANTE LA GUI nntool 44
3.1.4 ENTRENAMIENTO DE UNA RNA 49
3.1.5 EXPORTANDO DATOS A LA VENTANA DE TRABAJO DE MATLAB
50
3.1.6 LIMPIAR LA VENTANA NETWORK / DATA MANAGER 51
3.1.7 IMPORTANDO DATOS DESDE EL ESPACIO DE TRABAJO DE MATLAB 51
3.2 SIMULINK 51
3.2.1 USO DEL BLOQUE TAPPED DELAY 51
3.3 REAL TIME WORKSHOP 53
3.3.1 CONCEPTOS BASICOS 53
3.4 REAL TIME WINDOWS TARGET 56
3.5 TARJETA PCI6014 58
3.6 INTERFASE DE POTENCIA 59
3.7 SISTEMA PIS 59
REFERENCIAS DEL CAPITULO 61

CAPITULO 4
IMPLEMENTACION DEL CONTROLADOR
4.1 PROTOTIPO PIS 63
4.2 ADQUISICIÓN DE DATOS DE ENTRENAMIENTO 64
4.3 EMULACION DE LA RNA BP EMPLEANDO MATLAB 67
4.4 ENTRENAMIENTO DE LAS RNA´s BP 69
4.5 IMPLEMENTACION DE LA RNA BP COMO CONTROLADOR DEL PIS 73
REFERENCIAS DEL CAPITULO 77

CAPITULO 5
RESULTADOS
5.1 RESULTADOS 78

CAPITULO 6
CONCLUSIONES, RECOMENDACIONES Y PROPUESTAS PARA TRABAJOS FUTUROS
6.1 CONCLUSIONES 82
6.2 RECOMENDACIONES 84
6.2 TRABAJOS FUTUROS 85

APENDICE
A Programa Normalización Vector de Entradas
B Programa Vector Condiciones Iniciales en Retardos de Tiempo

Ingeniería Electromecánica iii


Control de un Péndulo Invertido Empleando Redes Neuronales Artificiales

INDICE DE FIGURAS

PAG.
Fig. 2.1 Representación de un Péndulo Invertido 4
Fig. 2.2 Péndulo Invertido Simple de base móvil (PIS) 5
Fig. 2.3 Diagramas de cuerpo libre para un PIS 6
Fig. 2.4 Partes Principales de una Neurona Biológica 10
Fig. 2.5 Diferentes métodos de implementación de RNA´s 11
Fig. 2.6 Modelo McCullon-Pitts de una neurona 13
Fig. 2.7 Modelo de una neurona artificial general 14
Fig. 2.8 Funciones de activación más comúnmente empleadas 16
Fig. 2.9 Funciones de salida más empleadas 17
Fig. 2.10 Grafica dirigida de una RNA general 19
Fig. 2.11 Ejemplos de RNA´s con distintas arquitecturas de alimentación 19
Fig. 2.12 Perceptron de una sola capa 22

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


Fig. 3.2 Ventana Network/Data Manager de la GUI nntool 41
Fig. 3.3 Ventana Create New Network 42
Fig. 3.4 Ventana Create New Network para una RNA tipo Adaline o Madaline 43
Fig. 3.5 Diagrama representativo de una Red lineal creada en la GUI nntool 43
Fig. 3.6 Ventana desplegada para crear una RNA tipo BP de prealimentación 45
Fig. 3.7 RNA BP personalizada 46
Fig. 3.8 Ventana Training Parameters en la opción Train 47
Fig. 3.9 Ventana con información del proceso de entrenamiento en nntool 49
Fig. 3.10 Ventana para introducir los datos a emplear en la simulación de una RNA 50
Fig. 3.11 Ventana para exportar datos desde nntool 50
Fig. 3.12 Ventana con librerías de bloques en Simulink 52
Fig. 3.13 Parámetros de ajuste para un bloque de retardos de tiempo 52
Fig. 3.14 Diagrama de flujo para la creación de una aplicación en RTW 54
Fig. 3.15 Ventana parámetros de configuración para RTW 55
Fig. 3.16 Ventana para explorar modelos de Simulink 55
Fig. 3.17 Ventana de la caja de herramientas RTWT 57
Fig. 3.18 Ventana de configuración para una entrada analógica en RTWT 57
Fig. 3.19 Selección de tarjeta compatible con RTWT 58
Fig. 3.20 Circuito Eléctrico de la interfaz de potencia 60
Fig. 3.21 Sistema motriz del PIS 60

Fig. 4.1 Sistema PIS-Controlador 62


Fig. 4.2 Prototipo del PIS empleado 63
Fig. 4.3 Controlador PID con filtro 65
Fig. 4.4 Respuesta del PIS ante el controlador PID con filtro 65
Fig. 4.5 Controlador PID con filtro y un elemento integrador doble 66
Fig. 4.6 Respuesta del PIS ante el Controlador PID con elemento integrador doble 67
Fig. 4.7 Parámetros empleados para crear la RNA BP1 67
Fig. 4.8 Parámetros empleados para crear la RNA BP2 68

Instituto Tecnológico de León iv


Técnicas de Computación Suave (IA)

Fig. 4.9 Representación grafica de la RNA BP1 68


Fig. 4.10 Representación grafica de la RNA BP2 68
Fig. 4.11 Valores MSE de RNA BP1 durante su entrenamiento 70
Fig. 4.12 Respuesta de la RNA BP1 después del tercer ciclo de entrenamiento 71
Fig. 4.13 Valores MSE de RNA BP2 durante el cuarto ciclo de entrenamiento
(Datos obtenidos de controlador PID con Filtro) 72
Fig. 4.14 Respuesta de la RNA BP2 después del cuarto ciclo de entrenamiento
(Datos obtenidos de controlador PID con Filtro) 72
Fig. 4.15 Respuesta de la RNA BP2 después del cuarto ciclo de entrenamiento
(Datos obtenidos del controlador PID con doble Integrador) 73
Fig. 4.16 Modelo Real Time Workshop de la RNA BP2 74
Fig. 4.17 Control RNA BP2 con señal de corrección auxiliar 75
Fig. 4.18 Respuesta del PIS controlado con RNA BP2 mas la señal auxiliar 76
Fig. 4.19 Controlador Final implementado con RNA´s tipo BP 76

Fig. 5.1 Respuesta del PIS ante la RNA BP1 78


Fig. 5.2 Respuesta del PIS ante la RNA BP2
(Datos de Controlador PID con Filtro) 79
Fig. 5.3 Respuesta del PIS ante la RNA BP2
(Datos de Controlador PID con Doble Integrador) 80
Fig. 5.4 Respuesta del PIS controlado por la RNA BP2 mas la RNA AUX 81

INDICE DE TABLAS

PAG.
Tabla 3.1 Funciones de entrenamiento disponibles en Matlab para una RNA BP 48
Tabla 3.2 Datos técnicos de la tarjeta PCI6014 de National Instruments 59
Tabla 4.1 Parámetros de entrenamiento empleados en la RNA BP1 69
Tabla 4.2 Parámetros de entrenamiento empleados en la RNA BP2 71

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. Furnas, J.M. and R.d. TIME-LIFE, EL INGENIERO. El Ingeniero, ed. C. Cientifica. 1972,
Mexico, DF: Time-Life Inc. 9.
2. Anderson, C.W., Learning to Control an Inverted Pendulum Using Neural Networks. IEEE
Control Systems Magazine, 1989. April 1989: p. 31-37.
3. 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.
4. Cembrano, G. and G. Wells, Aplicaciones del Aprendizaje Neuronal al Control de Robots.
Inteligencia Artificial, 1997. 1: p. 34-40.
5. 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 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 Pivote

Pieza
base

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 Banda de
Transmision
Motor Impulsor

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
F

l
bx mlθ
θ mg

x -N
x
-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 Masa del carro


m Masa del péndulo
b Fricción entre la base móvil y la superficie de desplazamiento
l Longitud del pivote al centro de gravedad del péndulo
I Inercia del péndulo
F Fuerza aplicada al carro
x Posición de carro
θ Ángulo del péndulo desde la vertical superior
PyN Componentes de la fuerza de reacción en el punto de pivoteo

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:

** ** * Ec. 2.2
N = m x + mlθ cos θ − mlθ 2 senθ

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:

** * ** * Ec. 2.3
( M + m ) x + b x + mlθ cos θ − mlθ 2 senθ = F

Posteriormente se suman las fuerzas que actúan perpendiculares al péndulo:

** ** Ec. 2.4
Psen θ + N cos θ − mgsen θ = ml θ + m x cos θ

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:

** Ec. 2.5
Plsen θ − Nl cos θ = I θ

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 Ec. 2.7


** **
2

**
(M + m ) x + b x − ml φ = u Ec. 2.8
** *

(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
Φ (s) = q
Ec. 2.11
b( I + ml 2 ) 3 ( M + m)mgl 2 bmgl
U (s) s 4 + s − s − s
q q q

Donde,

[ ( )
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]:

* Ec. 2.13
X = A • X + B •U

Ec. 2.14
Y = C • X + D •U

Y considerando el vector X compuesto de las siguientes variables:

⎛ * * ⎞
Ec. 2.15
(x1 , x2 , x3 , x 4 ) = ⎜ x, x, Φ, Φ ⎟⎟

⎜ ⎟
⎝ ⎠
Se pueden obtener las siguientes matrices de estado:

⎡ * ⎤ ⎡⎢
0⎤
⎡ ⎤ ⎡ ⎤
0 1 0 0
x
⎢ ** ⎥ ⎢0 − ( I + ml 2 )b m 2 gl 2 ⎥⎢ x ⎥ ⎢ I + ml 2 ⎥
0⎥ * ⎢ 2 ⎥
⎢x⎥ ⎢ I ( M + m) + Mml 2 I ( M + m) + Mml 2 ⎢ ⎥
⎢ * ⎥ = ⎢0 ⎥ ⎢ x ⎥ + ⎢ I ( M + m) + Mml ⎥ u
1⎥
⎥ ⎢ ⎥
0 0 0
⎢Φ ⎥ − mlb mgl ( M + m) ⎢Φ ml
⎢⎣Φ ⎥⎦ ⎢⎢0 ⎥ ⎢ ⎥
**
0 ⎢Φ ⎥
*

⎣ I ( M + m) + Mml 2 I ( M + m) + Mml 2 ⎥⎦ ⎣ ⎦ ⎢⎣ 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
soma
dendritas
axon

sinápsis

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

SIMULADORES SOFTWARE
NEUROCOMPUTADORES
Para PC de uso general

NEUROCOMPUTADORES NEUROCOMPUTADORES PC PC
de uso especifico de uso general Paralela serie
convencional convencional

Matriz de Tarjetas
Neuro Chips Procesadores Coprocesadoras

Neuro Chips
Mixtos Anal. Dig.
A/D

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 peso 1

n
t

Σ
Entrada a la salida de la
r neurona neurona

a peso 2

d
a Umbral

s
peso n

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

n Ec. 2.17
u = ∑ wj y j +θ
j =1

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 Función Función


de de de u
entrada activación salida

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.

n Ec. 2.18
∑wj =1
j yj

b) Productoria de las entradas pesadas (producto de todos los valores de entrada,


multiplicados por sus correspondientes pesos).

n Ec. 2.19
∏wj =1
j yj

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 ( ) Ec. 2.20

d) Distancia euclidiana.

Ec. 2.21
( )
n 2
∑ y j − wij
j =1

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 ⎫ Ec. 2.22
⎪ a ⎪
⎪ − 1 1 ⎪
⎪ ax, < < ⎪
f (x ) = ⎨ a
x
a ⎬
⎪ ⎪
⎪ 1, x ≥ 1a ⎪
⎪ ⎪
⎩ ⎭
Siendo a un valor que afecta la pendiente de la función.

b) Función Sigmoidea.

Ec. 2.23
f (x ) =
1
− gx
1+ e
Siendo g un valor que afecta la pendiente de la función.

c) Función Tangente Hiperbólica

gx − − gx Ec. 2.24
f (x ) = tgh (x ) = gx e− gx
e
e +e
Siendo g un valor que afecta la pendiente de la función.

d) Función Gausiana

f (x ) = A
−B x
2
Ec. 2.25
e
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, g1 )
1

f (x, a2 ) f (x, g2 )

-1 -1
(a) Función de (b) Función de
Activación lineal Activación Tangente
hiperbólica

+1 f (x, g1 )
+1

f (x, g2 )
f (x, A1 , B )
1

f (x, A 2 , B )
2

(c) Función de (d) Función de


Activación Sigmoidea 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) ui (t )

+1 +1

ui (t ) 0
f (x)
-1 +1 ξi

-1 -1

(a) Función (b) Función


Identidad 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 f (x)
1,1

f (x)
2,1
x3
f (x) f (x)
1,2 s,1

x4 f (x)
2,2

f (x) f (x)
1,3 s,i
x5
f (x)
2, j

x6 f (x)
1,m

xn
n NODOS CAPA DE CAPA CAPA DE
DE ENTRADA OCULTA 1 SALIDA
ENTRADA m neuronas j neuronas s salidas

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
y (t ) (Feedforward) ui (t )

y (t ) RNA con
Realimentación ui (t )
(Feedback)

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

w2 u
x2 Σ 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 Ec. 2.29
x∈ X

El cual estima el gradiente descendiente considerando un conjunto de vector de


entrenamiento X.

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


genera g1 (x ) = xwT < 0 , entonces se incrementa el vector de pesos en la iteración m+1:

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
x ∈ D1 , y g 2 (x ) = − xwT > 0 para todo x ∈ D2 . Si el Perceptron clasifica correctamente a x
entonces no se realiza ninguna modificación en el vector de pesos.

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 Ec. 2.32

w j (m + 1) = w j (m ) − cx Ec. 2.33

wk (m + 1) = wk (m ) para toda k diferente a i y j 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.

n Ec. 2.35
u t = wo + ∑ w j ∗ x j
j =1

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

n Ec. 2.36
ut = ∑ w j ∗ x j
j =0

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:

1 k =L 2 Ec. 2.38
ε k2 = ∑ε k
L k =1

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 ) Ec. 2.39
2

= d k2 + wT x k x kT w − 2 d k x kT 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 ) Ec. 2.42
2

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 Ec. 2.43
∇ε (t ) ≈ −2∇ε k (t )x k
2
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:

N Ec. 2.46
Net hpj = ∑ w hji ∗ x pi + θ jh
i =1

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 hpj ) Ec. 2.47

La ecuación para la salida del nodo será:

L
Ec. 2.48
Net opk = ∑ wkjo ∗ I pj + θ ko
j =1

O pk = f k
o
(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:

δ pko = (y pk − o pk )∗ f ko ´(Net opk ) Ec. 2.49

7.- Calcular el error para las unidades en la capa oculta:

δ pjh = f jh ´(Net hpj )∑ δ pko ∗ wkjo 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:

wkjo (t + 1) = wkjo (t ) + ηδ pk
o
∗ i pj Ec. 2.51
Donde ηes el rango de aprendizaje

9.- Actualizar los pesos en la capa oculta:

w hji (t + 1) = w hji (t ) + ηδ pjh ∗ xi 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:

1 M 2 Ec. 2.53
Ep = ∑ δ pk
2 k =1

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 (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:

wkjo (t + 1) = wkjo (t ) + ηδ pk
o
∗ i pj + α∆ p ∗ wkjo (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. Ogata, K., Ingeniería de Control Moderna. 3 ed. 1998,: Prentice-Hall Hispanoamericana.


786-997.
2. Montoya, L.F.R. and L.A. Z., Chattering Control Design for the Inverted Pendulum, in
Mechanical Engenering. 2001. p. 51-67.
3. Chung, C.C. and J. Hauser, Nonlinear Control of a Swinging Pendulum. Automatica, 1995.
31.
4. Franklin, T., Design and Control of the Inverted Pendulum Cart System. 2002, Virginia
Tech: Virginia. p. 1-9.
5. Shew, W., Inverted Equilibrium of a Vertically Driven Physical Pendulum, in Electrical.
1997, College of Wooster: Wooster.
6. Kuo, B.C., Sistemas Automaticos de Control. 2 ed. 1991, Mexico: CECSA. 243-350.
7. Astrom, K.J. y K. Furuta. Swinging Up a Pendulum By Energy Control. in 13th World
Congress. 1996. San Francisco, California: IFAC.
8. Åkesson, J., Inverted Pendulum Demonstration Experimental Set Up, in Department of
Automatic Control. 2001, Lund Institute of Technology: Lund. p. 1-6.
9. Chou, S.C.-M., D. Goldberg, and otros, Inverted Pendulum, in Control Systems. 2001,
UBC: Conecticut. p. 6-28.
10. 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.
11. Kuo, A.D., The relative roles of feedforward and feedback in the control of rhythmic
movements. Motor Control, 2000. 10: p. 1-10.
12. Kim, S.Y. y M. Hu, Bifurcations and transitions to chaos in an inverted pendulum.
Physical Review, 1998. 58: p. 3028-3035.
13. Lam, J., Control of an Inverted Pendulum. 2000,
http://www.ccec.ece.ucsb.edu/people/smith/.
14. Roberge, J.K., The Mechanical Seal. 1960, Massachusetts Institute of Technology:
Massachusetts.
15. Sobhani, Z.C., Stabilization of an Inverted Pendulum with Base Arcing about a Horizontal
Axis, in Mechanical Engineering. 2003, MASSACHUSETTS INSTITUTE OF
TECHNOLOGY: MASSACHUSETTS.
16. Anderson, C.W., Learning to Control an Inverted Pendulum Using Neural Networks. IEEE
Control Systems Magazine, 1989. April 1989: p. 31-37.
17. Michigan, U.o., Control Tutorials for Matlab. 1997,
www.engin.umich.edu/group/ctm/examples/pend.
18. 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.
19. 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.
20. 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.
21. Cembrano, G. y G. Wells, Aplicaciones del Aprendizaje Neuronal al Control de Robots.
Inteligencia Artificial, 1997. 1: p. 34-40.
22. Barrientos, A. y otros, Fundamentos de Robótica. 1997: Mc Graw Hill- Interamericana de
España.
23. 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. Konar, A., Artificial Intelligence and Soft Computing. 1º ed. 2000, Boca Raton, Florida:
CRC Press. 415-443.
25. Pedrycz, W., Computacional Intelligence: an introduction. 1º ed. Computer Engineering.
1998, Florida USA: CRC PressLLC. 7-35.
26. 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.
27. Kosko, B., Neural Networks and Fuzzy Systems: a dynamical systems approach. 1992:
Prentice Hall. 39-110.
28. Hinton, G.E. y T.J. Sejnowski, Neural Networks architectures for AI, in MP2. 1987: Seattle
WA.
29. Pitas, I., Parallel algorithms: for digital image processing, computer vision, and neural
networks. Parallel Computing, ed. 1993: Jhon Wiley and sons. 259-301.
30. 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.
31. Burns, R.S., Advanced Control Engineering. 1º ed. 2001, Woburn,MA: Butterworth-
Heinemann. 347-360.
32. 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.
33. Jain, A.K. y J. Mao, Artificial Neural Networks: A tutorial. IEEE Computer, 1996. 18: p.
31-44.
34. Jones, P.C. y S. Tepavich, ADALINE Stabilization of an Inverted Robot Arm. 1997,
www.aracnet.com.
35. Pino, B. y otros, Implementaciones hardware de redes neuronales artificiales. Inteligencia
Artificial, 1997. 1: p. 48-56.
36. Bishop, C.M., Neural Networks for Pattern Recognition. 1º ed. 2003, New York: Oxford
University Press. 116-161.
37. McCulloch, S. y W. Pitts, A logical Calculus of the ideas immanent in nervous activity, in
Mathematicall Biophisycs. 1943. p. 115-133.
38. Werbos, P., Beyond Regression: New Tools for Prediction and Analysis in the Behavioral
Sciences, in Computational Sciences. August 1974, Harvard: Cambridge.
39. 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.
40. Kröse, B. y P.V.d. Smagt, An Introduction to Neural Networks. 1996, Amsterdam: The
University of Amsterdam. 15-45.
41. 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.
42. Kosko, B., Neural Networks for Siganl Processing. 1992, Englewood Cliffs, New Jersey:
Prentice-Hall. 161-188.
43. Lebbart, L., A. Morineau, and M. Piron, Statistique exploratoire multidimensionnelle. 1995,
Paris: DUNOD. 263-283.
44. 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.
45. 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.
46. 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 Sistema PIS


Interfaz de
de Datos
Potencia
PCI6014

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:

R Ec. 3.3
u (t ) = ∑ w1,i ∗ u (t − i + 1) + b
i =1

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 (Feed-
Forward 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 Descripción


TRAINGD 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.

TRAINGDM 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.

TRAINGDA 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.

TRAINGDX Es similar al entrenamiento TRAINGDA con la diferencia que en este


método se emplea además un parámetro de momento.

TRAINR Actualización incremental de orden aleatorio.

TRAINRP 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.

TRAINCGF 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.

TRAINCGP Método de gradiente descendente conjugado con el algoritmo Polak-


Ribiére.

TRAINCGB Método de gradiente descendente conjugado empleando el método de


reestablecimiento de dirección de búsqueda Powell-Beale.

TRAINSCG Emplea un gradiente conjugado escalado. Es el único algoritmo de


gradiente conjugado que no requiere una línea de búsqueda.

TRAINBFG Emplea métodos de Newton para el calculo de las actualizaciones.


Requiere almacenar una aproximación de la matriz Hessiana.

TRAINOSS Método de la secante de un paso. Es una combinación de los métodos


de gradiente conjugado y Newton.

TRAINLM Algoritmo de Levenberg-Marquardt. Emplea modificaciones para


disminuir el uso de memoria.

TRAINBR Regulación Bayesiana. Modificación al algoritmo Levenberg-Marquardt.

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?

Generar código y
un programa ejecutable

Verificar el programa ejecutable

No
¿Los resultados imitan
la simulación?

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].

Tarjeta PCI 6014 (National Instruments)


Tipo de Bus Entradas Resolución de Máximo rango Rango de Salidas
Analógicas la entrada de muestreo entradas Analógicas
entrada
PCI 16 16 bits 200 kS/s ±0.05 a ± 10 2
V

Resolución de Máximo rango Rango de Entradas/ Contadores Exactitud en


la salida de muestreo salida Salidas rango
salida Digitales ± 10 V
16 bits 10kS/s ± 10 V 8 2 - 24 bits 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 RV2


S1 S2
E1 +12 V
E2 Señal de entrada

E1 E3 - 12 V

S1 Cursor en Péndulo
R2 S2 Cursor en base

CI1 LM741
R1 T1 R1 10 KΩ
E2 10 KΩ
R2
CI1 R3 120Ω
M1
T1 TIP31
T2
T2 TIP32

DZ1 10 V

M1 Motor 12 VCD

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 Base móvil Banda de transmisión
Barra Guía

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. Demuth, H. and M. Beale, Neural Networks Toolbox User´s Guide. Version 4 ed. 2000,
Natick,MA: The MathWorks,Inc. 1-208.
2. MathWorks, Getting Started whit Real-Time Worshop For Use Whit Simulink. Version 6
ed. 2004, Natick, MA: The Mathworks, Inc. 1_1-3_51.
3. MathWorks, Real-Time Windows Target User´s Guide. Version 2 ed. 2004, Natick,MA:
The Mathworks, Inc.
4. Instruments, N., The Measurement and Automation, in Catalog 2004. 2004, National
Instruments: Austin, Tx.
5. Zbar, P.B., A.P. Malvino, and M.A. Miller, Prácticas de Electrónica. 2001: AlfaOmega
Grupo Editor. 113-119.
6. 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
Sistema Motriz θ(t)
θ(t+1)
v(t) M

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 Bloque de conexiones


+12V...-12V Interfaz de Poténcia CB-69LPR

Barra del PIS

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

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

-20

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2


tiempo (ms) 4
x 10

Posición horizontal Base móvil ( Respecto a centro de superficie de apoyo )


10
cm (100 cm = 1 m)

-5

-10
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
Salida controlador PID con Filtro
Posteriormente se trunca a valores de +10......-10 V
50
Volts

-50
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10

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
20 introducida

-20 Periodo de actuación de solo el controlador

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2


tiempo (ms) 4
x 10
Posición horizontal Base móvil (Respecto a centro de superficie de apoyo)
15
10
cm (100 cm = 1 m )

5
0
-5
-10
-15
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
Salida controlador PID con doble integrador
Posteriormente se trunca a valores +10 ... -10 V
50
Volts

-50
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
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 Épocas Meta MSE Factor de MSE


Aprendizaje Valor Ultimo Figura
1 1000 0 0.1 83.62
2 3000 0 0.01 59.45 4.11
3 3000 0 0.005 58.39
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).

2
MSE en ultimo ciclo: 58.3911 , Meta: 0
10
Valor Mean Square Error

1
10

0
10
0 1000 2000 3000 4000 5000 6000 7000
Epocas

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 3000 3500 4000
4000 patrones de salida deseada
Salida RNA BP1 ante sus patrones de entrenamiento
40

20
Volts

-20

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

-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 Épocas Meta MSE Factor de MSE


Aprendizaje Valor Ultimo Figura
1 1000 0 0.01 80.49
2 2000 0 0.0005 62.09
3 2000 0 0.0003 59.62
4 2000 0 0.0003 25.22 4.13
TOTAL EPOCAS 7000

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

Datos controlador PID con doble integrador .


1 1000 0 0.01 28.72
2 3000 0 0.005 21.14
3 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.

MSE en ultimo ciclo 25.2226, Meta: 0


4
10

3
10
Valor Mean Square Error

2
10

1
10

0
10
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Epocas

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 3000 3500 4000
4000 patrones de salida deseada
Salida RNA BP1 ante sus patrones de entrenamiento
40

20
Volts

-20

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

10

-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

-10

-20
0 500 1000 1500 2000 2500 3000
Salida RNA BP2
15

10
Salida RNA BP2

-5

-10

-15
0 500 1000 1500 2000 2500 3000
Error despues de 14000 epocas
Salida deseada - Salida RNA BP2

10

-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

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

10

-10

0 2000 4000 6000 8000 10000 12000 14000 16000 18000 20000
tiempo (ms)
Señal correctora auxiliar
20
Volts

-20
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
Salida de RNA BP2 mas señal correctora
40

20
Volts

-20
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo (ms) 4
x 10
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. Chou, S.C.-M., D. Goldberg, and otros, Inverted Pendulum, in Control Systems. 2001,
UBC: Conecticut. p. 6-28.
2. 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.
3. Jones, P.C. and S. Tepavich, ADALINE Stabilization of an Inverted Robot Arm. 1997,
www.aracnet.com.
4. Anderson, C.W., Learning to Control an Inverted Pendulum Using Neural Networks.
IEEE Control Systems Magazine, 1989. April 1989: p. 31-37.
5. 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 barra-
pé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];

You might also like