Está en la página 1de 28

Simulaci

on y Control de un P
endulo Fsico Invertido
Simulation and Control of an Inverted Physical Pendulum

Alonso Guerrero Llorente


Dirigido por: Daniel Chaver Martnez y Juan Manuel Velasco Cabo
30 de Junio de 2015

Resumen
El pendulo es uno de los sistemas mas estudiados en fsica, as como el pendulo
invertido lo es en el
area de la teora del control. En este trabajo se modela y
dise
na un pendulo invertido situado sobre una plataforma movil capaz de realizar
movimientos de traslaci
on y rotacion. El pendulo se mantiene erguido por medio
de un sistema de control. Tambien se ha construido un mando que nos permite
manejar el movimiento del aparato en un modelo 3D, usando un Arduino para
tomar tomar las se
nales y correr la simulacion.

Abstract
The pendulum is one of the best known systems in physics, as the inverted pendulum is in control theory. In this project we will model and control a pendulum
over a platform which can translate and rotate. A control system keeps the pendulum upright. Also, a joystick has been built in order to manage the motion of
the robot during the simulation in a 3D model, it is based on an Arduino board
which receive the signals from the joystick and run the simulation.

Indice
1. Introducci
on
1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
4

2. Metodologa
2.1. Herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Metodologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
5
6

3. Modelado y caractersticas del


3.1. Modelado . . . . . . . . .
3.2. Puntos de equilibrio . . . .
3.3. Linealizacion . . . . . . .
3.4. Analisis de la inestabilidad
3.5. Datos del sistema . . . . .

sistema
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .

.
.
.
.
.

.
.
.
.
.

4. Control
4.1. Controlabilidad y observabilidad . . . .
4.2. Dise
no del controlador . . . . . . . . .
4.2.1. Control del subsistema r . .
4.2.2. Control del subsistema . . . .
4.3. Dominio de atraccion . . . . . . . . . .
4.4. Manipulacion de la se
nal de referencia

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

6
7
9
9
11
12

.
.
.
.
.
.

12
13
13
14
15
16
17

5. Animaci
on

18

6. Resultados

19

7. Conclusiones
19
7.1. Perspectivas de futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
A. Anexo: Modelo Simulink
A.1. Mando . . . . . . . . . .
A.2. Control . . . . . . . . .
A.2.1. Control de r
A.2.2. Control de . .
A.3. Sistema . . . . . . . . .
A.3.1. Subsistema r- .
A.3.2. Subsistema . .
A.4. Perturbaciones . . . . .
A.5. Animacion . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

B. Anexo: Funci
on ctrKIFO

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

22
22
23
23
23
24
24
24
25
25
26

1.

Introducci
on

El pendulo es, posiblemente, uno de los primeros sistemas que se analizan cuando uno
comienza a estudiar fsica. Detras de su aparente sencillez, para el caso de oscilaciones
peque
nas, se esconde un sistema que carece de solucion exacta para el caso general.
Al or hablar de un pendulo la imagen que viene a la mente es la del pendulo de un
reloj o el de Foucault. Sin embargo, en la vida cotidiana podemos observar el pendulo
en mas lugares: el deposito de agua transportado por un helicoptero que va a apagar un
incendio o una bolsa de la compra que transportamos en la mano.
Tambien es com
un observar un pendulo en su posicion invertida o, dicho de otra forma,
un pendulo que es controlado para permanecer en su posicion de equilibrio inestable.
Un saltador de pertiga debe mantener su pendulo fsico, la pertiga, vertical mientras se
aproxima a realizar el salto. Un gimnasta que esta haciendo el pino sobre una barra debe
controlar su cuerpo para mantenerlo en posicion invertida, de lo contrario realizara un
movimiento oscilatorio hasta alcanzar el equilibrio estable. Un transbordador espacial
antes del despegue tambien hay que mantenerlo invertido, incluso para su traslado hasta
la lanzadera hay que controlar su posicion para que no caiga hacia el equilibrio estable.

(a)

(b)

(c)

Figura 1: ejemplos de pendulos invertidos: a) Segway, b) persona haciendo el pino, c)


plataforma de transporte de un transbordador espacial.

1.1.

Objetivos

Son muchos los trabajos que se pueden encontrar en internet sobre el pendulo invertido. Incluso algunos como Arduway o Balanduino que construyen peque
nos robots cuyo
comportamiento fsico es el que se estudia en este trabajo. Cada uno tiene unas caractersticas distintas: unos se mueven sobre ruedas, otros sobre railes, se usan distintas
tecnicas de control...
En este trabajo el objetivo es la creacion de un simulador de un pendulo fsico invertido, para ello dise
naremos un modelo matematico y un control que nos permitan simular
el sistema, as como construir un entorno 3D y un mando que nos permita definir las

se
nales de entrada de forma externa. Podremos as visualizar en la pantalla del ordenador, a tiempo real, como reacciona el sistema ante las se
nales que le enviamos. Ademas,
se pueden cambiar las caractersticas del aparato, como tama
no o masa, con el objetivo
de simular el comportamiento en el caso que se desee.
La estructura final del proyecto debe contar con la simulacion del sistema, un control por realimentacion, las entradas del sistema (se
nales del mando) y la animacion
(representacion 3D de la salida):

Figura 2: Esquema del proyecto.

2.
2.1.

Metodologa
Herramientas

La realizacion de este trabajo se ha desarrollado, principalmente, en MATLAB y


Simulink [1]. La gran cantidad de paquetes de MATLAB as como la facilidad que nos
proporciona Simulink a la hora de simular sistemas han sido las razones por las que nos
hemos decantado por utilizar este software.
El dise
no de los controladores se ha hecho ntegramente en scipts de MATLAB mientras que la simulacion se ha realizado con Simulink. Para poder usar los datos recogidos
por el Arduino1 [2] se ha usado el paquete de Simulink Arduino Support from Simulink
que nos permite usar los datos analogicos y digitales tomados por el Arduino, as como
enviar se
nales digitales o PWM. Ademas, con este paquete tambien se consigue obtener
una simulacion en tiempo real, es decir, podemos ver en la pantalla del ordenador el
sistema que estamos controlando con un mando externo.
Para el modelado 3D del sistema se ha usado vrbuild2, un programa con el que se
pueden construir modelos 3D sencillos de forma rapida para despues animarlos con el
paquete de Simulink Simulink 3D Animation.

Los datos recogidos por el Arduino son los que usaremos como entrada del sistema y los introduciremos
desde un mando externo al ordenador.

2.2.

Metodologa

La realizacion de este trabajo se puede dividir en fases bien diferenciadas entre s. En


cada una de ellas se ha actuado de la misma forma: realizar y verificar. Es decir, despues
de realizar cada seccion se comprueba su correcto funcionamiento; as como tambien se
hacen pruebas despues de cada paso crtico o dudoso, para as encontrar el fallo lo mas
rapido posible. El orden seguido ha sido:
1. Modelado del sistema
Obtenemos un modelo matematico que describa el movimiento del sistema, usando el formalismo de Lagrange. Para verificar que el modelo obtenido es correcto
se comprueba que cuando sustituimos el momento de inercia, que caracteriza el
pendulo fsico, por una masa M puntual se obtiene el mismo resultado que en el
trabajo de Marco Triverio [3]. Es decir, transformamos el sistema en un pendulo
ideal. Tras esto realizamos una simulacion para comprobar que no hay ning
un error
en la implementacion del sistema.
2. Dise
no del control
Se dise
na el control y se estudia el seguimiento del sistema a se
nales de referencia;
as se van probando controladores distintos hasta encontrar cual es el que mejor
se adapta a nuestras necesidades.
3. Dise
no del mando con el que manejamos la simulacion
La construccion del mando se realiza en primer lugar sobre una protoboard, para
as poder testar cada elemento del mando. Utilizando el paquete Matlab Support
Package for Arduino Hardware verificamos el correcto funcionamiento de cada
componente.
4. Creacion y animacion del modelo 3D
A la hora de aprender como construir y animar modelos 3D con simulink se han
realizado algunos ejercicios previos a la creacion de nuestro sistema. Como por
ejemplo la animacion de un pendulo o un bloque que se desplaza. Ademas, en el
test del modelo 3D se ha usado el mando creado en el paso 3 para mover el aparato.
5. Crear un modelo simulink que contenga sistema, control, mando y animacion.
Finalmente juntamos todas las partes en un solo modelo simulink, en el cual ya
podemos comprobar visualmente (en el modelo 3D) la respuesta del sistema manejandolo desde el mando.

3.

Modelado y caractersticas del sistema

El sistema del pendulo fsico sera modelado considerando un cuerpo solido (una tabla rectangular), de masa M , altura l, anchura W y grosor w (figura 3). Este sistema

lo podemos ver como un pendulo fsico situado sobre una plataforma movil capaz de
trasladarse y rotar, de forma que el movimiento pendular esta limitado a un plano, no
es un pendulo esferico, y el desplazamiento se produce seg
un las coordenadas polares r
y . Es decir, ademas de la oscilacion, el sistema puede moverse hacia delante y atras,
as como rotar sobre s mismo. El movimiento de la plataforma se consigue por medio
de un motor conectado a las 2 ruedas de la plataforma. Su cinematica se incluye en la
seccion 5. Consideramos que la plataforma esta formada, u
nicamente, por la base del
aparato, las ruedas y aquellos elementos presentes en el eje que las une y la masa total
es m.

(a)

(b)

Figura 3: a) esquema del sistema, b) vista en 3D del sistema.

3.1.

Modelado

Para poder realizar una simulacion del sistema necesitamos conocer sus ecuaciones
de movimiento. Para la obtencion de dichas ecuaciones utilizamos el formalismo de
Lagrange:
LT U

(1)

d L
L
j
(
)(
)=Q
dt qj
qj

(2)

las coordenadas generalizadas qj del problema seran , r y (fig. 4). La variable


caracteriza la posicion del pendulo ( = 0 pendulo invertido) y {r, } representan el
j seran aquellas que
movimiento del aparato en coordenadas polares planas. Las fuerzas Q
provocan el movimiento del aparato, es decir, seran fuerzas en el sentido del movimiento:
Fr y M 2 .
Para la obtencion de T , energa cinetica, y U , energa potencial, dividimos el sistema
en dos partes: el solido y las ruedas. De esta forma la parte del solido estara caracterizada
por un momento de inercia IS (para el giro del angulo ), IS0 (para ) y masa M , y las
ruedas tendran momento IR y masa m, donde la masa m involucra todos los objetos cuyo
2

Es un momento de fuerza, pues lo que crea es un giro del sistema siguiendo el angulo .

Figura 4: Coordenadas generalizadas a partir de las cuales construiremos el modelo matematico.


centro de masas estan en el eje de las ruedas y su tama
no es suficientemente peque
no
como para no contribuir a IS . Tambien hacemos las aproximaciones:
Las ruedas giran sin deslizar.
La u
nica fuerza de rozamiento es del tipo bx.

De esta forma obtenemos:


T = TS + TR = TS,rot + TS,trans + TR,rot + TR,trans =
1
1
M
1 IR

= IS 2 + IS0 2 + (r 2 + l2 2 + 2lr cos)


+ ( + m)r 2
2
2
2
2 R

(3)

U = US + UR = M glcos + mgR

(4)

Con esto obtenemos el lagrangiano3 :


1
1
m
M

L T U = IS 2 + IS0 2 + (r 2 + l2 2 + 2lr cos)


+ r 2 M glcos mgR (5)
2
2
2
2
Ecuaciones del movimiento:
d L
L
2
rcos M glsin = 0
dt ( ) = (IS + M l ) + M l
L
d L

( r ) r = (M + m)
r + M lcos l2 sin = Fr br
dtd L
( ) L
= IS0 = M
dt

(6)

Es conveniente reescribir el sistema usando un vector de estados x:


, ]
x = [r, r,
, ,
T

(7)

y la se
nal de entrada, o de control:
u = [Fr , M ]T
3

Hemos hecho las aproximaciones: 1) m >>

IR
R

y 2) l >> R.

(8)

Podemos escribir x a partir del sistema 6 de forma que nos quedara:

r = r

F br+M

l2 sin gM
sincos

r = r

Ml
2

M
+m
cos


=
f (x, u) = x =

l2 sincos
= g(M +m)sinFr cos+bcosrM

M
+mM
lcos

= F
I0

(9)

IS +M l2
.
Ml

donde =
De esta forma tenemos una ecuacion para cada variable del vector de estado. Aunque
las ecuaciones esten acopladas, esto facilitara la implementacion del sistema para su
simulacion as como la linealizacion en torno a un punto de equilibrio.
En 9 podemos distinguir dos subsistemas, uno con r y y otro para , que son
independientes entre s. De forma que los podemos tratar como sistemas independientes
T y otro con x = [, ]
uno con vector de estados xr, = [r, r,
, ]
T.

3.2.

Puntos de equilibrio

Los puntos de equilibrio que nos interesan, para linealizar el sistema, son aquellos en
torno a los cuales = 0 y = 0. En las ecuaciones del movimiento (6) vemos que para
que esto se cumpla se debe cumplir, al menos, que el aparato este quieto, r = 0. Como
la posicion r en la que se encuentra el sistema no afecta al equilibrio, y tanto como
tampoco, las u
nicas condiciones que me faltara determinar son las de y las puedo
obtener de la energa potencial, ecuacion 4 (representacion grafica en la figura 5).
En = 0 hay un maximo, por tanto el punto x = [r, r = 0, = 0, = 0] es un
equilibrio inestable. Por el contrario, el punto x = [r, r = 0, = , = 0] sera estable,
pues es un mnimo de potencial.

3.3.

Linealizaci
on

De la misma forma que en el estudio del pendulo simple se realiza una linealizacion
en torno a = en este caso la haremos en torno a = 0. Este resultado sera utilizado
para el dise
no del control.
En un punto de equilibrio inestable, 0, por lo que se pueden hacer las aproximaciones cos = 1 y sin = y as tener un sistema lineal en torno al punto = 0. la
forma usual de expresar el sistema linealizado es:
x = A x + B u
y =C x

(10)

donde x es el vector de estados, y la salida y u la se


nal de control.
Para la obtencion de las matrices A y B hacemos el jacobiano de f respecto de x,
para A, y de u, para B.

Energa potencial en funcin del ngulo


60

40

U (energy)

20

20

40

60
4

0
(rad)

Figura 5: En la grafica de la energa potencial podemos localizar facilmente que los


puntos = son equilibrios estables, mnimos, y en = 0 tenemos equilibrio
inestable.

A=

f (x,u)
x
x=xeq ,u=ueq ,

,,

B=

f (x,u)
u
x=xeq ,u=ueq

(11)

La matriz C determina que variables del vector de estados x tomamos como salida
del sistema, por lo que su eleccion la hacemos a mano.
Como vimos en el apartado 3.1 que podemos dividir el sistema en dos subsistemas,
haremos la linealizacion de los dos sistemas de forma independiente.
Subsistema para r-
Debemos hacer la linealizacion del sistema en torno al punto de equilibrio inestable
[r, r = 0, = 0, = 0].


0
1
0
0
0
r
r
M lg
b
1
M +m
r
(M +m
0
0 M +m
Ml
Ml
r
Ml

Fr
=

0
0
0
1
0
1
g(M +m)

0 M Mb l+m
0
M lM +m
M lM +m
(12)
r



yr = 1 0 0 0
= r

Subsistema para
Este sistema es ya lineal y corresponde a un doble integrador con se
nal de control
M :

10

  
  


0 1
0
=
+
M

0 0   1/IS0


y = 1 0
=

3.4.

(13)

An
alisis de la inestabilidad

Nuestro objetivo es que el pendulo permanezca en la posicion de equilibrio inestable,


para conseguirlo hay distribuciones de masa mas convenientes que otras. Es decir, estudiaremos la energa potencial del sistema para distintos valores de M y m en funcion de
buscando que la curvatura en = 0 sea lo menor posible.
U para distintas distribuciones de masa

U para distintas distribuciones de masa


100

80
M
M
M
M

80

=
=
=
=

2,
4,
6,
8,

m
m
m
m

=
=
=
=

8
6
4
2

60

60
40
40

U (energy/angle)

U (energy)

20
20

20
20
40
40

60

60

80
4

0
(rad)

80
2

1.5

0.5

0
(rad)

0.5

1.5

Figura 6: Analisis del punto de equilibrio inestable = 0 a partir del estudio de la


curvatura de la energa potencial U .

Como observamos en la figura 6 cuanta mas masa colocamos en la parte inferior del
aparato menor es la diferencia de energa potencial entre los puntos de equilibrio =
y = 0. Esto equivaldra a que la derivada U/ es, en valor absoluto, menor cuanta
mas masa coloquemos en la base del aparato. Si nos fijamos en la ecuacion 4 vemos que
lo que realmente afecta a la disminucion de |U/| es la disminucion de la masa del
solido M , sin importar ni m ni el valor del radio.
Un descenso de masa en el solido tambien conllevara un descenso de los momentos
de inercia IS e IS0 , lo cual facilitara las rotaciones, facilitando as el control.
En la practica esta distribucion de la masa habra que tenerla en cuenta a hora
de realizar el dise
no de la maquina, colocando en el eje de las ruedas todos aquellos
componentes pesados, como las bateras, y en la parte que corresponde al solido los
sensores y demas componentes livianos. Ademas, como hemos visto en la ecuacion 4, el
a
nadir peso en m casi no afectara.

11

3.5.

Datos del sistema

Tras las observaciones hechas anteriormente podemos escoger datos de M , m, l y


R de forma que el sistema a controlar sea lo mas realista posible y cumpla con las
aproximaciones realizadas en el modelo, y a partir de estos datos obtener los momentos
de inercia IS e IS0 .
Los datos que daremos seran los propios de un peque
no robot en el que las ruedas
son movidas por motores paso a paso (o servomotores) y en la parte superior tiene la
unidad de calculo (ej: un Arduino o Raspberry pi) y los sensores.
M = msensores + mArduino 200g
m = 2 mmotor + mbateria 500g
l = 10cm
W = 8cm
w = 2cm
Is = 13 M l
1
Is0 = 13 M W 2 M ( W2 )2 = 12
MW 2
Suponemos que no hay rozamiento, b = 0, dado que la fuerza br contribuye, principalmente, a que el pendulo vaya perdiendo energa hasta pararse en una posicion de
equilibrio estable al cabo de un tiempo t. Como el pendulo esta en posicion invertida esta
fuerza no es de gran relevancia. Aunque no consideremos este termino es conveniente ser
conscientes de su presencia, pues podra ser de ayuda para tener en cuenta rozamientos
provocados por el funcionamiento de los motores.

4.

Control

El objetivo del control del sistema sera conseguir que el pendulo permanezca de forma
estable en la posicion invertida a la vez que es capaz de seguir se
nales de referencia de r y
. Tambien debemos introducir estimadores de estados para hacer una reconstruccion de
aquellos estados para los cuales no es facil realizar una medida. Por tanto, el sistema debe
ser controlable y observable. Todo este estudio lo realizamos con la funcion ctrKIFO4 ,
la cual ha sido expresamente dise
nada para esta labor.
El dise
no del control se hace para el sistema lineal, es decir, la linealizacion del sistema
que se hizo en la seccion 3.3. Al a
nadir al sistema, no lineal, un control dise
nado para
el sistema linealizado en torno a = 0 hara que solamente en un entorno de = 0 el
sistema podra ser controlado de forma que tienda a la posicion de equilibrio inestable.
Tendremos un sistema lineal que, con el controlador, tiene un punto asintoticamente
estable que es = 0 y seg
un el primer metodo de Lyapunov: si la linealizacion de un
sistema no lineal es asintoticamente estable, el sistema no lineal es astintoticmanete
estable. As que podemos usar el control lineal para controlar el sistema no lineal. Dado
4

Se puede ver el c
odigo de la funci
on en el apendice B.

12

esto, el sistema tendra dos puntos de equilibrio, cada uno con un dominio de atraccion:
= 0 (asintoticamente estable) y = (marginalmente estable).

4.1.

Controlabilidad y observabilidad

Antes de dise
nar un control debemos asegurarnos de que el sistema es controlable.
Para ello ambos subsistemas deben cumplir la condicion:


rank(Co) = rank B AB A2 B . . . An1 B = n
Tambien debemos asegurar que, al menos, el sistema para es observable:

C
CA

2
CA
rank(Ob) = rank

=n
...
CAn1

(14)

(15)

Ambos subsistemas son controlables y observables, cumplen las dos condiciones anteriores.

4.2.

Dise
no del controlador

La estructura del controlador sera:


Z
u = K x + F xref ki

(y xref )dt

(16)

donde K es la realimentacion del vector de estados, F la accion feedforward y ki la


accion integral, la cual es proporcional a la integral de la se
nal de error.
En este controlador la funcion de K es que el sistema tienda a la posicion de equilibrio
inestable, pues se dise
na a partir del sistema linealizado en torno a dicho punto. La accion
feedforward F permite el seguimiento de una se
nal de referencia y la accion integral ki
el rechazo a las perturbaciones. Tomando F = 0 y ki 6= 0 tambien conseguiriamos un
seguimiento de una se
nal de referencia, pero de una forma mas lenta de como se consigue
con F .
Ademas del controlador tambien es importante tener un metodo para poder estimar
aquellos estados que, en la practica, no sean faciles de medir. Con la funcion ctrKIFO
podemos obtener una matriz L que nos permite estimar los estados:
Z
xen+1 = dt[A xen + B u + L (y ye )]
(17)
Para establecer los autovalores que necesitamos introducir a la funcion ctrKIFO, la
cual nos devuelve los parametros K, F , ki y L habiendolos calculado mediante el metodo
de Ackerman, usaremos el comando de matlab lqr (fig. 7). Este comando nos permite
fijar los autovalores a partir de dos matrices Q y R. Son dos matices diagonales en las

13

que la relacion entre los elementos representan cuanto puede variar la correspondiente
variable de x frente a otro. R la podemos establecer como un n
umero, en lugar de una
matriz, para establecer as la magnitud de dicha variacion.

Figura 7: Esquema de como se realiza el dise


no del control.
Al incluir la accion integral ki debemos ampliar el vector de estados, de forma que
en Q a
nadimos una componente que da cuenta de la rapidez con la que el sistema se
recupera de una perturbacion. Para incluir esto hay que ampliar las matrices A, B y C y
asegurarse de que el sistema sigue siendo controlable y observable, que en nuestro caso
lo es.
4.2.1.

Control del subsistema r

El subsistema linealizado de r y es contolable, incluyendo la accion integral. Por


tanto podemos dise
nar un control que nos permita seguir se
nales de referencia de r (la
salida) sin alterar la condicion 0. La se
nal de referencia de r sera una funcion rampa
cuya pendiente es la velocidad a seguir por el aparato. No necesitamos que la velocidad
sea muy alta, pues el aparato es de dimensiones reducidas, una velocidad de 2 o 3 m/s
sera suficiente.
Tenemos que ajustar Q de forma que le demos mas margen de variacion al elemento
correspondiente a la accion integral, para as conseguir un mejor seguimiento de la se
nal
de referencia y rechazo de las perturbaciones.

1 0 0 0
0 1 0 0

Qr =
(18)
0 0 1 0 Rr = 1
0 0 0 5

En la figura 8 podemos comprobar como para el caso sin accion feedforward F = 0


tenemos una se
nal de control mas peque
na. Es cierto que se sigue la se
nal de referencia
con cierto error, pero el objetivo no es que alcance la posicion final sino que lo haga sin
necesitar grandes esfuerzos en el control. Al quitar F conseguimos la misma velocidad
que tiene la se
nal de referencia y ademas evitamos la sobre-elongacion.

14

12

15

2.5
10

10

2
8

1.5

()

Fr (N)

r (m)
4

0.5

0
5

0.5

F0
F=0
referencia

0
2

10
t (s)

15

10

1.5
2

20

10
t (s)

15

20

15

10
t(s)

15

20

Figura 8: Comparacion del controlador de r usando accion feedforward y sin usarla, con
una perturbacion en t = 14s de 1,5N .
4.2.2.

Control del subsistema

Al igual que en el caso de r aqu nuestro interes tambien sera que siga una se
nal
de referencia del tipo rampa. Esta vez no tenemos ninguna variable (como en el caso
anterior) que tenga que tender a 0 lo mas rapido posible, por tanto, podemos prescindir
de la accion feedforward. De esta forma la se
nal de salida seguira a la referencia con
un cierto retraso pero con la misma pendiente y evitando sobre-elongacion cuando se
produce un cambio en la referencia.

1 0 0
Q = 0 1 0 R = 1/IS0
(19)
0 0 1
4

200

x 10

180
3

160
140

M (Nm)

()

120
100
80

1
0

60
40
20
0
20

F0
F=0
referencia

10
t (s)

15

20

10
t (s)

15

20

Figura 9: Comparacion del controlador de usando accion feedforward y sin usarla, con
una perturbacion en t = 14s de 0,2mN m.
En la figura 9, de la comparacion entre F = 0 y F 6= 0 obtenemos las mismas
conclusiones que para el caso anterior. Aunque s deberamos destacar que en este caso

15

estamos usando un estimador de estados.

4.3.

Dominio de atracci
on

El hecho de que el sistema presente dos puntos de equilibrio estable hace que tengamos
para los cuales el sistema tiende a [ =
que buscar cuales son aquellos valores de [, ]
0, = 0]. Para realizar este estudio hacemos simulaciones para distintos valores iniciales
y estudiamos para que valores el sistema tiende a [ = 0, = 0] y para cuales
de [, ]
hay una oscilacion en torno a = .
Para tener en cuenta el comporamiento de los motores se ha introducido la condicion
de que |ur | = |Fr | < 2,5N . Esta limitacion de la se
nal de control hace que el dominio de
atraccion de = 0 se vea reducido, respecto al caso sin limitacion.
Simulaciones para distintos valores iniciales de y d
200
0

150
100

d (/s)

50
0
50
100
150
200
25

20

15

10

0
()

10

15

20

25

En azul estan
Figura 10: Simulaciones realizadas para distintos valores iniciales de y .
representados aquellos puntos iniciales para los cuales 0 y en negro
. Las dos lneas rojas son una aproximacion del dominio de atraccion
del punto = 0.
En la figura 10 podemos ver cuales son los puntos iniciales correspondientes al dominio
de atraccion de cada uno de los dos puntos de equilibrio. Vemos que si tenemos un < 0
siempre se puede encontrar un valor de > 0 para el cual se controle el sistema. En la
practica no tendremos grandes valores de por lo que el resultado mas interesante es
que cuando 0, para poder atraer al pendulo hacia la posicion invertida, debemos
tener || < 17o .

16

4.4.

Manipulaci
on de la se
nal de referencia

Para poder hacer cambios de la se


nal de referencia o, lo que es lo mismo, tener un
control sobre el movimiento del aparato se ha construido un mando (fig. 13a) que nos
permite manipular la rampa de las se
nales de referencia y r. El mando consta de
dos botones, que nos permiten indicar si gira en sentido horario o antihorario, un
potenciometro, que nos permite establecer la velocidad de variacion de la referencia de
r y dos botones secundarios para introducir perturbaciones.
El mando esta conectado a un Arduino MEGA (fig. 13b), de forma que podemos
saber cual es el estado de los pulsadores o la resistencia del potenciometro mientras la
simulacion esta corriendo. Es decir, manipulamos las se
nales de referencia a tiempo real,
pudiendo as visualizar en la pantalla del ordenador la respuesta que tiene el sistema.
La manipulacion de r esta basada en un divisor de tension constituido por un potenciometro lineal y una resistencia (figura 11) . De esta forma podemos tomar medidas de
Vout y obtener una variable lineal Rpotenciometro :
Rpotenciometro =

5V R
R
Vout

(20)

Figura 11: divisor de tension para los cambios de rref .


A cada valor de Rpotenciometro se le asocia una velocidad, de la forma:
Relacin entre posicin del potencimetro y velocidad
2
1.5

velocidad (m/s)

1
0.5
0
0.5
1
1.5
2

2000

4000
6000
Resistencia ()

8000

10000

Figura 12: correspondencia entre la resistencia del potenciometro y rref , estableciendo


una velocidad maxima de 2m/s.
La asignacion para la variacion de ref se establece con el algoritmo:
if (boton 1 = 0) and (boton 2 = 0) then
v = 0

17

else if (boton 1 = 1) and (boton 2 = 1) then


v = 0
else if (boton 1 = 1) and (boton 2 = 0) then
v = +1
else if (boton 1 = 0) and (boton 2 = 1) then
v = 1
end if
Con esta dinamica no toma esta velocidad inmediatamente sino que, como vemos
en la figura 9 la se
nal vara hasta alcanzar la pendiente deseada, no se produce una
aceleracion infinita.

(a)

(b)

Figura 13: a) Mando con el que se controla el movimiento del aparato, con los botones
para , potenciometro para r, perturbaciones e indicadores de pulsado y velocidad. b) Arduino MEGA al cual conectamos el mando para tomar medidas
y realizar la simulacion.

5.

Animaci
on

Para verifcar que el comportamiento del sistema controlado es natural, no realiza


movimientos extra
nos, se ha creado un modelo en 3D (figuras figuras 3b y 14). De esta
forma podemos visualizar el comportamiento del sistema de una forma mas clara a las
grafcas, la informacioon cualitativa que obtenemos es mas facil de interpretar.
En este modelo se incluye tanto la dinamica del solido como el movimiento de las
ruedas:
r
W

(21)
R
2R
El movimiento de las ruedas sera tal que la velocidad de rotacion de ambas sera igual
para el caso r 6= 0 y = 0. Mientras que cuando hay giros del aparato, 6= 0, tendremos
rueda =

18

que las dos ruedas giraran con distinta velocidad, aparecera el momento de fuerza M .
En el caso r = 0 y 6= 0 tendremos que ambas ruedas giran a la misma velocidad pero
sentido contrario. Este comportamiento puede ser usado para modelar el comportamiento
que deben tener los motores para fabricar el aparato.

6.

Resultados

Tras la realizacion de este proyecto tenemos un modelo 3D que podemos controlar con
un mando y as observar los resultados de la simulacion (fig. 14). As podemos comprobar
como:
Al variar la velocidad de r hay una fuerza que inclina el pendulo y cambia ,
mientras que cuando r es constante el pendulo esta vertical.
no se inclina hacia el mismo lado en aceleraciones que en deceleraciones.
Al introducir perturbaciones se observa como hay una oscilacion de en torno a
la vertical hasta que alcanza el equilibrio, viendo tambien como hay un peque
no
desplazamiento de la base del pendulo, con un movimiento de las ruedas, para
equilibrar el sistema.
Podemos introducir cambios bruscos en rref y dar perturbaciones para que el
aparato pierda el equilibrio y llevarlo hasta el dominio de atraccion de = 0, donde
observaramos que el sistema empieza a girar en torno al equilibrio marginalmente
estable de = .
Si observamos nos damos cuenta inmediatamente de que se produce una aceleracion
hasta alcanzar la velocidad de giro que le introducimos como referencia. As como al introducir una perturbacion vuelve hacia la posicion pre-perturbacion sin realizar ninguna
sobre-elongacion, pues tomamos F = 0 (accion feedforward).

7.

Conclusiones

Tras la realizacion de este proyecto hemos visto la facilidad que nos aporta la animacion del modelo 3D para interpretar los resultados. Tambien, el poder introducir
manualmente se
nales de referencia con el mando nos permite estudiar de forma rapida
el comporamiento del aparato para distintas entradas, haciendo falta una sola ejecucion
del programa. En cuanto al control, hemos visto que es conveniente anular la accion
feedforward, F = 0.
Se puede utilizar el programa creado para este proyecto usando distintos valores de
las masas M y m, as como distintos tama
nos. De esta forma podemos usar este proyecto
para simular el sitema antes de su construccion, teniendo en cuenta las caractersticas
que tendra (masa de los motores, masa de las bateras, tama
no del solido, ...). El control
esta dise
nado de forma que no se necesite una gran modificacion cada vez que se cambian

19

Figura 14: Resultado final del proyecto. Se puede ver tanto el modelo 3D como el mando
en uso y un grafico con la trayectoria seguida por el aparato. En https:
//youtu.be/xbRvnQqu24A esta disponible la grabacion de una prueba del
sistema.
los parametros del sistema (ecuaciones 18 y 19), aunque s sera conveniente realizar
peque
nas modificaciones para aprovechar al maximo la potencia de los motores.

7.1.

Perspectivas de futuro

Tras la realizacion de este trabajo queda abierta la posibilidad de la construccion


del sistema. Previo a la construccion habra que estudiar el comportamiento de motores
paso a paso o servomotores para incluirlos en la simulacion, pues la se
nal de control la
proporcionan ellos.

Figura 15: Propuesta de obtencion del vector de estados xr mediante un giroscopo y


un acelerometro.
Tambien deberamos obtener de forma experimental el vector de estados, para as co-

20

nocer la posicion del aparato (fig. 15). Con un acelerometro, colocado en el eje de las
ruedas para que as la medida no este influida por las oscilaciones del solido, podemos
obtener la aceleracion r del aparato y mediante integracion llegamos a r y r. Para la
obtencion del angulo se podra usar un giroscopo, que nos proporciona velocidad angular, y tendramos una medida de y, mediante integracion, . El vector de estados
x lo podemos estimar, como ya hemos hecho en este trabajo, o tambien lo podramos
medir con el giroscopo.
Algunos de los problemas que habra que resolver para conseguir el funcionamiento
del sistema real son:
Como para obtener algunas de las variables hay que integrar necesitamos que los
valores iniciales de la integracion sean los correctos, para poder tomar como = 0
la vertical y r el reposo.
Problemas de ruido en la medida y sensibilidad de los sensores. La se
nal que
midamos siempre tendra un margen de ruido y no tendremos infinita precision,
por lo que debemos ser conscientes de ello.
Tiempo de muestreo e intervalo de integracion. La frecuencia con la que se toman
los datos, as como la velocidad a la que se realizan las operaciones para el calculo
de la se
nal de control, deben tenerse en cuenta para introducir un controlador
discreto adecuado.

21

A.

Anexo: Modelo Simulink

En este anexo se muestran los elementos principales que componen el modelo simulink
realizado en este trabajo. En dicho modelo estan presentes las partes correspondientes
a la simulacion, control, mando y animacion.

Figura 16: Estructura general del modelo Simulink. Equivalente al diagrama de la figura
2, donde los bloques mando y perturbaciones son las entradas del sistema.

A.1.

Mando

Figura 17: Modelo Simulink del mando con el que obtenemos las se
nales de referencia.
Los bloques velocidad phi y velocidad r establecen la relacion entre la se
nal
que llega del Arduino (estado de los interruptores y potenciometro) y una
velocidad de referencia, esta relacion esta hecha tal y como se explica en la
seccion 4.4. El bloque medida >R tiene implementada la ecuacion 20.

22

A.2.

Control

Figura 18: Como vimos en la ecuacion 9 podemos diferenciar el sistema en dos subsistemas, uno para r y otro para , por lo que dise
namos un control distinto
para cada uno.

A.2.1.

Control de r

Figura 19: Implementamos un controlador como el descrito por la ecuacion 16.

A.2.2.

Control de

Figura 20: Implementamos un controlador como el descrito por la ecuacion 16 y a


nadimos una estimacion del vector de estados del sistema realizada a partir de la
matriz L, tambien mencionada en la seccion 4.2.

23

A.3.

Sistema

Figura 21: Como vimos en la ecuacion 9 podemos diferenciar el sistema en dos subsistemas, uno para r y otro para . Por tanto podemos implementar las
ecuaciones para la simulacion de cada uno de los subsistemas por separado,
pues no estan acoplados entre s.

A.3.1.

Subsistema r-

Figura 22: Como imput de este bloque tengo la se


nal de control y las perturbaciones
que introduzca al sistema. En derivadas segundas se implementan r y de 9
y por integracion obtenemos el vector de estados de este subsistema: xr =

[r, r,
, ].

A.3.2.

Subsistema

Figura 23: Como vimos en el subsistema para es un sistema linal, por lo que lo podemos
simular directamente como tal.

24

A.4.

Perturbaciones

Figura 24: Las perturbaciones las introducimos pulsando un boton, cuando este pulsado
tendremos un 1 y cuando no un 0. Este valor se multiplicara por 1,5 para
que el valor de la perturbacion sea comparable a la se
nal de control y as podamos observar como el sistema se desestabiliza y se vuelve a estabilidar. La
perturbacion de tiene exactamente la misma estructura.

A.5.

Animaci
on

Figura 25: El objetivo de esta parte del modelo Simulink es reproducir de la manera
mas fiel posible los resultados de la simulacion en el modelo 3D. Para ello
, ]
necesito el vector de estados [r, r,
, ,
pues represento tanto la posicion
del solido r, , como la dinamica de las ruedas dada por la ecuacion 21 e
implementada en RUEDAS ROTACION.

25

B.

Anexo: Funci
on ctrKIFO

function [K,Ki,L,F,Gc,Glc] = ctrKIFO(A,B,C,pc,po,pi)


% Diseno de un controlador por realimentacion del vector de estado
% con integracion, accion directa y observador.
% Par\ametros de entrada:
% * A, B, C: matrices del sistema (se supone D=0)
% * pc: autovalores para diseno del controlador (vector columna)
% * po: autovalores para diseno del observador (vector columna)
% * pi: autovalores para diseno del integrador (vector columna)
% si pi no se especifica, o es el conjunto vacio, no se
% introduce accion integral.
% Parametros de salida son:
% * K: ganancia de realimentacion del vector de estado
% * Ki:ganancia del integrador
% * L: ganancia del observador
% * F: accion directa
% * Gc: control de realimentacion con dos entradas Y, Xr
% en variables de estado
% * Glc: sistema en lazo cerrado $$ Glc = Y/R $
D = 0;
% CASO 1, sin accion integral
if isempty(pi) == 1 % No hay accion integral
co = ctrb( A, B); % Matriz de controlabilidad
ob = obsv( A, C); % Matriz de obserabilidad
n = size( A, 1);
if (rank(co) == n) && (rank(ob) == n)
fprintf(Sistema Controlable y Observable\n)
K = acker( A, B, pc );
F = 1/( C*inv( - A + B*K )*B );
L = acker(A, C, po);
Ki = 0;
Gc = ss([A-B*K-L*C,-B*Ki;0*C,0],[L,B*F;1,-1],[K,Ki],[0,F]);
Glc = ss([A-B*K,-B*Ki;C,0],[B*F;-1],[C,0],0);
Gc = tf(Gc); Glc = tf(Glc);
Ki = [];
elseif (rank(co) ~= n) && (rank(ob) == n)
fprintf(Sistema NO Controlable pero Observable\n)
K = []; Ki = []; L = []; F = []; Gc = []; Glc = [];
elseif (rank(co) == n) && (rank(ob) ~= n)
fprintf(Sistema Controlable pero NO Observable\n)
K = []; Ki = []; L = []; F = []; Gc = []; Glc = [];

26

elseif (rank(co) ~= n) && (rank(ob) ~= n)


fprintf(Sistema NO Controlable y NO Observable\n)
K = []; Ki = []; L = []; F = []; Gc = []; Glc = [];
end
end
% CASO 2, con accion integral
if isempty(pi) == 0 % Hay accion integral
Ab = [ A, zeros(size(A,1),1); C, 0];
Bb = [B; 0];
co = ctrb( Ab, Bb);
ob = obsv( A, C); % Matriz de obserabilidad
n_co = size( Ab, 1); n_ob = size( A, 1);
if (rank(co) == n_co) && (rank(ob) == n_ob)
fprintf(Sistema Controlable y Observable\n)
Kb = acker( Ab, Bb, [ pc, pi] ); % La ultima componente es Ki.
K = Kb( 1, 1:n_co-1);
Ki = Kb( 1, n_co);
F = 1/( C*inv( - A + B*K )*B );
L = acker(A, C, po);
Glc = tf( ss( [ A, -B*K, -B*Ki; L*C, A - B*K - L*C, -B*Ki; C, 0*C, 0],...
[ B*F; B*F; -1], [ C, 0*C, 0], D) );
Glc = minreal(Glc);
Gcr = ss( [A - B*K - L*C, -B*Ki; 0*C, 0 ], [L, B*F; 1, -1], [ K, Ki],...
[ 0, F]);
Gc = tf( Gcr(1) );
elseif (rank(co) ~= n_co) && (rank(ob) == n_ob)
fprintf(Sistema NO controlable \n)
K = []; Ki = []; L = []; F = []; Gc = []; Glc = [];
elseif (rank(co) == n_co) && (rank(ob) ~= n_ob)
fprintf(Sistema NO observable \n)
K = []; Ki = []; L = []; F = []; Gc = []; Glc = [];
else
fprintf(Sistema NO Controlable y NO Observable\n)
K = []; Ki = []; L = []; F = []; Gc = []; Glc = [];
end
end

27

Referencias
[1] MATLAB, the language of thecnical computing. Disponible en http://es.
mathworks.com.
[2] Arduino Website. Disponible en http://www.arduino.cc.
[3] Marco Triverio. Progetto e Implementazione del Sistema di Controllo per un Pendolo
Inverso. Tesi di Laurea. Politecnico di Milano, 2008.
Hacar Gonzalez, F. Revuelta Pe
[4] A.
na, I. Saeta Perez, P. Garca Corzo y E. Macia Barber. Mecanica Lagrangiana. Alqua. Version 0.10.1, Disponible en http:
//alqua.tiddlyspace.com/.
[5] K. J. Astrom y R. M. Murray. Feedback systems: an introduction for scientists and
engineers. Princeton University Press, 2010.
[6] E. Aranda Escolastico. The Inverted Pendulum: Control and Sampling Strategies.
Trabajo Fin de Master. UNED, 2014.
[7] A. Hernandez Largacha, M. Legaspi Martnez y J. Pelaez Martn. Control Inteligente de un Pendulo Invertido. Proyecto de Sistemas Informaticos. Universidad
Complutense de Madrid, 2012.
R and Simulink
R Users:
[8] N. Khaled. Virtual Reality and Animation for MATLAB
Visualization of Dynamic Models and Control Simulations. Springer Science & Business Media, 2012.

[9] J. M. de la Cruz. Lecciones sobre Sistemas Dinamicos y Realimentacion. Universidad Complutense de Madrid, 2014

28

También podría gustarte