Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PovedaGalvisLeidyTatiana2016 PDF
PovedaGalvisLeidyTatiana2016 PDF
Director:
Ing. MsC Frank Nixon Giraldo Ramos
Bogotá, Colombia
2016
La concepción y culminación de este proyecto contiene el aporte
de muchas personas que a su manera contribuyeron,
por lo tanto es menester dedicar este proyecto a una persona
especial, el profesor Frank Giraldo que siempre procuró educarnos
para la vida.
Agradecimientos1
Tatiana Poveda
José Martínez
Palabras clave: Python, Raspberry Pi, bola y plato- Plataforma Stewart, estrategias de
control.
Abstract
In this work we will describe the practices and theoretical implications about the cor-
responding investigation for optimal control LQR design and implementation ( lineal
quadratic regulator) in the raspberry pi card, this technique of control for a Stewart
platform, it was previously simulated and identified. The plant which was imple-
mented control techniques according to this project ( LQR and PID- proportional, in-
tegral and derivate controller) it is a ball and plant system put in a stewart platform,
which mecanic and assembly design was made by the authors. This device is consid-
ered among the parallel robots because it has six arms located at different points of
the platform, these have the function to support and give mobility . Each terminal is
connected to an actuator (servomotor in this case) provided there in order to provide
six degrees of freedom which characterize it and vary its inclination and rotation.
The Stewart platform is controlled by two techniques LQR and PID with the purpose
of deciding which one has better results evaluating own parameters of the reaction
curve plant. Such as overshoot, stabilization time, steady – state error and sturdiness
(in the case of optimal control).
As the project title specified, the development of control strategies as obtaining data
from the plant were executed and processed by the raspberry pi card model B+ through
programming language Python its lines of Code are executed through the raspbian
operation system.
Python has different compatible compilers With raspbian, the last one was installed on
the card in order to control the GPIO module to generate and receive signals produced
by implementing control algorithms.
Keywords: Python, raspberry pi, ball and plate- Stewart platform, control Strategies.
Contenidos
1.2.2 Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . 3
I
C APÍTULO 4—C ONTROL LQR
4.1 G ENERALIDADES . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.1.1 Controlabilidad . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.2 Observabilidad . . . . . . . . . . . . . . . . . . . . . . . . 54
4.1.3 Selección de las matrices [ Q] y [ R] . . . . . . . . . . . . . . . . . . 54
A. Comunicación SSH 69
A.1 C ONEXIÓN SSH . . . . . . . . . . . . . . . . . . . . . . . . . 69
A.1.1 Establecer ip estática en el computador . . . . . . . . . . . . . . . . 70
A.1.2 Establecer ip estática en la Raspberry Pi . . . . . . . . . . . . . . . . 70
A.1.3 Establecer conexión entre los dispositivos . . . . . . . . . . . . . . . 71
B. Aclaraciones matemáticas 75
B.1 I DENTIDAD SUMA DE SENO Y COSENO . . . . . . . . . . . . . . . . . 75
B IBLIOGRAFÍA
II
Índice de Figuras
1.1. Diagrama de bloques para el control del sistema bola y plato montado sobre
una plataforma Stewart [Autores]. . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Diagrama de bloques metodología de desarrollo [Autores]. . . . . . . . . . . 4
1.3. Diagrama esquemático de la Raspberry Pi [Autores]. . . . . . . . . . . . . . 7
1.4. Diagrama esquemático del puerto GPIO Raspberry Pi modelo B [Autores]. 9
III
2.12. Distribución espacial en las placas superior e inferior de la plataforma Ste-
wart [Autores]. (a) Medición de los ángulos β. (b) Ubicación de los motores
en la placa base. (C) Ubicación de las junturas en la placa superior. . . . . . 30
2.13. Sistema bola y plato acoplado a plataforma Stewart [Autores]. . . . . . . . . 34
IV
4.4. (a) Curva de reacción para valores de la matriz de constantes de control
k11 = 13, 41, k12 = 5, 18, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 13, 41,
k24 = 5, 18. (b) Recorrido de la esfera en la superficie de la placa móvil. . . . 62
4.5. (a) Curva de reacción para valores de la matriz de constantes de control
k11 = 38, 72, k12 = 8, 806, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 38, 72,
k24 = 8, 806. (b) Recorrido de la esfera en la superficie de la placa móvil. . . 63
4.6. (a) Curva de reacción para valores de la matriz de constantes de control
k11 = 42, 42, k12 = 9, 211, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 42, 42,
k24 = 9, 211. (b) Recorrido de la esfera en la superficie de la placa móvil. . . 64
C.1. Medidas del brazo y de la leva de la plataforma. (a) Longitud del i-ésimo
brazo rígido. (b) Longitud de la leva del i-ésimo servomotor medida desde
la unión leva–motor [Autores]. . . . . . . . . . . . . . . . . . . . . . . . . . . 78
C.2. Gráficas de funcionamiento de cada servomotor con respecto a la señal
PWM necesaria para producir un movimiento angular específico [Autores].
(a) Servomotor 1. (b) Servomotor 2. (c) Servomotor 3. (d) Servomotor 4. (e)
Servomotor 5. (f) Servomotor 6 [Autores]. . . . . . . . . . . . . . . . . . . . . 79
V
Capítulo
1 Preliminares
En este capitulo se describen aspectos previos que son de necesaria comprensión antes
de la realización de los algoritmos de control en la tarjeta de desarrollo. Así mismo es
imprescindible conocer cuáles son los objetivos y enfoques del trabajo que se nombra-
rán a continuación.
1.1 I NTRODUCCIÓN
Dependiendo del proceso o planta que se quiera controlar puede surgir la necesidad
de contar con sistemas de control robusto como lo es LQR, que constituye una exce-
lente opción gracias a su aplicabilidad en casi cualquier proceso. Este tipo de control
ha sido concebido para manejar procesos multivariables como lo son los SIMO (una
entrada, múltiples salidas) y los MIMO (múltiples entradas, múltiples salidas) los cua-
les se caracterizan por presentar “matrices de transferencia” en lugar de “funciones de
transferencia” .
Cuando se habla de control óptimo, se hace referencia al sistema de control que es
capaz de llevar un proceso a la estabilización al rededor de un punto de trabajo de-
terminado mientras minimiza el coste que implica la operación dinámica de la planta
controlada; esto es precisamente el control LQR, ajustar un controlador proporcional
1
1. P RELIMINARES
2
1.2. Objetivos
Los problemas que se resuelven con la implementación del control LQR en una tarjeta
Raspberry Pi son: ausencia de un algoritmo de control LQR de fácil implementación
en procesos reales, la no utilización del software open source en la academia para apli-
caciones de control robusto con la posibilidad de dar soluciones a nivel industrial, la
falta de exploración de tecnologías emergentes para la puesta en marcha de estrategias
de control moderno y una justificación que indique qué estrategia de control es más
efectiva en procesos específicos si PID o LQR.
1.2 O BJETIVOS
1.2.1 General
1.2.2 Específicos
3
1. P RELIMINARES
Proceso
Proceso
Se estructura todo lo referente al sistema plato y bola montado sobre una plataforma
Stewart, tanto su diseño y ensamble físico como su análisis matemático el cual hace
4
1.3. Metodología de desarrollo
5
1. P RELIMINARES
Cuando se le aplica una acción de control al sistema bola y plato montado sobre la
plataforma Stewart, el objetivo es estabilizar una bola que recorre un plato oscilante;
entonces en este caso la curva de reacción del proceso es la gráfica de las diferentes
posiciones que recorre la bola antes de llegar al punto de referencia de manera esta-
ble, cuando la estabilización ocurre tanto el plato como la bola entran en movimiento
traslacional y rotacional nulo.
Ya que la esfera tiene movimiento en los ejes coordenados x y y son dos las curvas
de reacción del proceso puestas en observación, el análisis de estas curvas de reacción
permitirán saber la efectividad tanto de la deducción matemática del sistema dinámico
como del control aplicado.
Tanto para el control LQR como para el PID a partir de la curva de reacción obtenida
cuando se controla el proceso deben calcularse los parámetros de desempeño que per-
miten evaluar cuál de las dos estrategias de control funciona “mejor” para controlar el
proceso propuesto; dichos parámetros corresponden a: Máximo sobreimpulso, tiempo
de estabilización, error de estado estacionario y robustez. Para la estrategia de control
LQR también hay otros parámetros que indican el desempeño del mismo como lo son:
Medida de la desviación de los estados con respecto a los estados deseados, medida
del esfuerzo del control, entre otros.
En este caso la comparación entre parámetros de desempeño solo puede hacerse entre
aquellos que corresponden al control clásico, por lo tanto es importante precisar que
no solo la comparación entre estos parámetros es determinante para conocer cuál es la
estrategia de control que mejores resultados presenta, también deben tenerse en cuenta
los parámetros de desempeño adicionales que pueden ser calculados del control LQR.
El dispositivo que procesa los datos y ejecuta los algoritmos realizados en este trabajo
es la tarjeta Raspberry pi modelo B que se muestra en la Figura 1.3. Cuenta con una
capacidad de memoria RAM (Random Access Memory -memoria de acceso aleatorio-)
de 512 MB, puerto ethernet, arquitectura ARM, puerto HDMI, puertos USB y 17 pines
del GPIO que pueden ser usados como entradas o salidas digitales a 3,3V a 20mA.
6
1.4. Tarjeta de desarrollo: Raspberry pi
Conectores
GPIO
ARM11 700MHz
Broadcom BCM2835
HDMI
En la Figura 1.4 se puede ver la descripción de cada uno de los pines que se pueden
utilizar para salida o entrada de datos, existen pines para propósitos especificos como
lo es la comunicación RS232 o I2C. La nomenclatura de cada uno de ellos no tiene
relación con el orden específico en el que se encuentran dispuestos; por ejemplo el pin
que corresponde al GPIO14 es el que está en el lugar número 8.
Para poner en marcha a la Rasberry Pi, es necesario instalar un sistema operativo en la
memoria SD, la cual será utilizada como disco duro de este mini computador.
Raspbian es un sistema operativo (SO) libre basado en Debian optimizado para el hard-
ware de Raspberry Pi. Raspbian ofrece más que un SO puro, viene con más de 35000
paquetes, programas precompilados en un formato que hace más fácil su instalación
en la Raspberry Pi [8].
Posterior a la instalación del SO esta tarjeta puede usarse como un computador, solo
es cuestión de conectar periféricos como mouse, teclado (ambos mediante vía USB) y
un monitor con conexión VGA.
En el Apéndice A sección A.1 se explica de que manera puede usarse la Raspberry Pi
desde un computador sin tener la necesidad de conectarla a periféricos usando un tipo
de conexión llamada SSH.
Este lenguaje no necesita compilador, es de alto nivel y solo requiere un interprete por
lo tanto cuando se ejecutan las lineas de código se hace directamente y sin necesidad
de generar ejecutables [9]. Otra característica importante es que Python es orientado a
objetos, cuenta con elementos como :
7
1. P RELIMINARES
Método: Función que contiene acciones que deben realizar los objetos, su sintaxis
es Def nombre_metodo():
Herencia: Una clase puede heredar a otra si los objetos comparten propiedades
y/o métodos.
Para crear un objeto no es necesario declarar su tipo solo basta con asignarle un nombre
y un valor, al momento de ejecutarlo el interprete le asignará un tipo de acuerdo a los
valores a los que el nombre del objeto haya sido igualado.
Cualquier código que se quiera ejecutar con python debe ser guardado con la extensión
.py.
Cuando se instala el sistema operativo Raspbian se tiene python instalado por defecto,
con simples lineas de código puede seleccionarse un pin del GPIO y determinar si es
de salida o entrada. Como se ve en la Figura 1.4 hay diferentes funcionalidades de
cada pin del GPIO y de acuerdo a esto pueden agruparse en tres definiciones: Pines de
alimentación que ofrecen voltajes de 5 V y de 3,3 V, pines GND y pines multipropósito.
Los del último grupo pueden ser subdivididos en dos subgrupos: los de propósito
específico (SPI, I2C, Rs232 y PWM) que son 9 y los restantes 8 de salida o entrada
digital reciben o transmiten 3,3 V.
Para empezar con el uso del GPIO desde python solo deben escribirse las siguientes
lineas de código: import RPi.GPIO as GPIO se importa la librería que permite con-
trolar los pines según su función; GPIO.setmode(GPIO.BCM) se pone el modulo GPIO
en modo BCM para que la nomenclatura de cada pin pueda cumplirse como en la
Figura 1.4; GPIO.setup(#pin, GPIO.Tipo_sal) esta línea de código es para especi-
ficar el número del pin y definir si se configura como salida o como entrada, la palabra
Tipo_sal se reemplaza por IN para que funcione como entrada y OUT como salida, en
caso de que el pin se configure como salida el código será GPIO.output(#pin, Nivel
) donde Nivel puede ser 1 para una salida de 3,3 V o 0 para una salida de 0 V, en el
caso de que se configure como entrada el pin solo aceptaŕa niveles de voltaje digitales,
es decir que estará solo en 1 o en 0 y para leerla se usa la línea GPIO.input(#pin).
8
1.4. Tarjeta de desarrollo: Raspberry pi
A pesar de que existe un pin específico para el PWM que es el GPIO18, cualquier pin
multipropósito configurado como salida puede producir una señal PWM.
Primero debe configurarse el pin deseado como salida GPIO.setup(#pin, GPIO.OUT
), luego debe crearse el objeto PWM especificando pin y frecuencia de la señal var=
GPIO.PWM(#pin, Freq) donde var es el objeto, se inicia el PWM con un ciclo útil
determinado var.start(ciclo), si se requiere puede variar el ciclo útil con esta línea
de código: var.ChangeDutyCycle(18) y por último se suspende la transmisión de la
señal con var.stop().
Debido a que la Raspberry modelo B no cuenta con ADC (conversor análogo- digital)
ni con DAC (conversor digital- análogo) es imprescindible contar con algún módulo
externo que le permita leer o entregar niveles de voltaje que estén dentro de un rango
determinado. Dicho módulo puede ser un integrado o una tarjeta con la capacidad
de transmitirle las lecturas analógicas usando un canal de comunicación serie como
por ejemplo I2C o RS232, en este caso se maneja el primero en consecuencia de haber
seleccionado un ADC de 16 bits y 4 canales.
Para este trabajo se necesitó un ADC que posibilitara la lectura de los cambios de vol-
taje que presenta la pantalla táctil cuando se hace presión en algún punto de su super-
ficie, entonces se eligió el integrado ADS1115 de la empresa Texas Instruments [10]. Se
usan dos de sus cuatro canales para leer las dos coordenadas del punto de presión en
la pantalla táctil, cada lectura es enviada vía I2C a la raspberry Pi, razón por la cual hay
dos hilos de conexión entre el integrado y la tarjeta que son los pines GPIO2 y GPIO3.
9
1. P RELIMINARES
Adafruit que es una empresa fabricante de kits de desarrollo con componentes electró-
nicos, la compañía realizó una tarjeta que incluye el ADS1115 con el fin de disponer de
una ganancia programable y un control de la comunicación I2C mediante una librería
denominada Adafruit_ADS1x15 que se encarga también de gestionar la lectura de un
canal determinado [11]. Dicha librería puede ser utilizada con líneas de código en pyt-
hon siempre y cuando este guardada en la misma carpeta del documento con extensión
.py que la invoque con la línea de código en python: from Adafruit_ADS1x15 import
ADS1x15 para importar la librería desarrollada por Adafruit, se especifica el valor de la
ganancia del amplificador programable PGA, las muestras leídas por segundo SPS, con
adc = ADS1x15(ic=0x01) se especifica la dirección del registro de lectura y por últi-
mo puede ser leído un canal específico con la instrucción adc.readADCSingleEnded(
canal, pga, sps).
El dato leído del canal del ADC se obtiene en valores de mili voltios con más de tres
cifras después de la coma flotante, así que son lecturas con una muy buena sensibilidad
y precisión numérica muy útil para hallar las coordenadas de ubicación de la esfera de
manera acertada.
10
Capítulo
2 Planta seleccionada
11
2. P LANTA SELECCIONADA
La plataforma está compuesta por dos placas, una inferior estática y una superior pro-
vista de movilidad gracias a las seis cadenas cinemáticas servocontroladas, estas a su
vez tienen uniones con junturas esféricas tanto con el actuador como con la placa su-
perior. Con el fin de obtener seis grados de libertad de la placa superior las junturas
deben ser con uniones esféricas en los dos extremos de cada brazo, cabe aclarar que
un extremo se une mediante una juntura al rotor del servomotor y el otro también está
unido con una juntura a la placa superior como se ve en la figura 2.1.
Rótula
Placa móvil
Brazo
Placa base
Rótula
Figura 2.1: Estructura física plataforma Leva
Motor
Stewart [Autores].
La plataforma tipo Stewart tiene propiedades de rigidez porque al contar con 6 sopor-
tes se reducen las deformaciones de manera significativa, si se dispone alguna masa en
la placa superior de la plataforma el peso de dicha masa será repartido entre sus extre-
midades, así cada una de ellas soportará un sexto del peso [14]. Al tener una tensión
distribuida, la plataforma es capaz de soportar cargas superiores a su propio peso,
a raíz de esto puede moverse rápidamente debido a que cada servomotor solo debe
mover una fracción de la inercia total [12].
Cuando se habla de seis grados de libertad se hace referencia al movimiento tridimen-
sional y la rotación de la placa superior al rededor de los tres ejes cartesianos, es decir
que hay movimiento en tres direcciones lineales y tres direcciones angulares a través
del movimiento armónico de los seis brazos.
Se han hecho varios diseños de la plataforma Stewart, los que más destacan son en los
que la movilidad de su placa superior se origina en: Brazos o extensiones hidráulicas
y los brazos servocontrolados.
12
2.2. Diseño y ensamble plataforma Stewart
Los actuadores de la plataforma con brazos hidráulicos son seis cilindros hidráulicos
cuyo émbolo se conecta a la placa superior de la plataforma mediante una juntura es-
férica, que cuando funcionan provocan un cambio en la longitud que separa la placa
superior y la placa inferior, a diferencia de esta los actuadores de la plataforma servo-
controlada son servomotores que con movimiento rotacional hacen que los brazos de
longitud fija se desplacen de manera tridimensional [13].
Estos dos tipos de diseño mecánico tienen en común que los extremos de cada brazo
están unidos con la plataforma mediante junturas esféricas, en este caso se manejaron
rótulas 2M (de dos milímetros de diámetro). Por cada brazo se utilizan 2 rótulas, una
que lo une a la placa superior y otra lo une al rotor del servomotor.
32 mm
28,5 mm
19,5 mm 32 mm
tierra 23 mm
12 mm Vcc Figura 2.2: Dimensiones y estructura del
PWM
servo motor SG90 [Autores].
Este tipo de motor fue implementado en la planta debido a que es posible controlar
su ángulo de rotación mediante una señal de control PWM la cual es recibida por el
motor a través del hilo indicado en la figura 2.2 y entre más ancho sea el pulso, el
rotor hará un desplazamiento angular más largo en el sentido de las manecillas del
reloj. En el interior de este tipo de motores hay una caja reductora y un multiplicador
de fuerza además de un circuito electrónico que responde a una señal de control para
definir la cantidad de movimiento angular del motor, dicha señal debe ser un pulso
de amplitud constante y frecuencia determinada en forma de tren de pulsos según
las especificaciones técnicas del fabricante [15]. Cuando entra la señal al servomotor
primero pasa por un conversor ancho de pulso/ voltaje, luego por un amplificador
operacional que se encarga de calcular el error a través de la resta entre la salida del
conversor y la salida del potenciómetro con acople mecánico a la caja reductora, esta
diferencia será la señal que va directamente al motor.
13
2. P LANTA SELECCIONADA
Hay tres pares de servomotores acoplados a la plataforma, cada par tiene la leva o
hélice enfrentada o dicho de otra forma tienen un eje de simetría vertical en la mitad
del par tal como se ve en la Figura 2.3.
P1 P2
s1
s2
l1 l2
A1 A2
B1 B2
Figura 2.3: Pares de servomotores, posi-
ción inicial [Autores]. Impar Par
En cuanto a su radio de rotación el servomotor está limitado entre ±45° y por lo tanto
el ancho de pulso de la señal de control también tiene un rango limitado de valores,
dichos límites deben ser calculados empezando por la posición inicial de las levas en-
frentadas.
tiempo
r= [µseg/radian] (2.1)
angulo
En (2.2) se describe el ancho de pulso para el servomotor derecho y (2.3) para el iz-
quierdo; donde Wi0 es el ancho de pulso necesario para que el servomotor mantenga
la leva en la posición inicial, αi es el ángulo que se forma entre la leva y los ejes coor-
denados, α0 corresponde al ángulo de la posición inicial de la leva y r descrito en (2.1)
hace referencia a una constante que se calcula de acuerdo al tiempo de ciclo útil necesa-
rio para obtener un desplazamiento rotacional de acuerdo a los límites determinados,
donde tiempo son los micro segundos que debe durar el ancho de pulso para que el
servomotor rote hasta angulo en grados [1].
Se dan las ecuaciones (2.2) y (2.3) porque si bien la plataforma es simétrica con respec-
to al eje z, los servomotores han sido montados en pares y cada par es opuesto a su
homólogo.
Para hallar Wi0 y r es necesario observar las gráficas que describen el comportamiento
de cada motor referente a la cantidad de ángulos de giro con respecto al ciclo útil del
PWM aplicado, dichas gráficas pueden observarse en el Apéndice C sección C.2.
14
2.2. Diseño y ensamble plataforma Stewart
Vmaxx Vmaxy
y
x
Vminy
Vminx 10 in
El primer paso que se efectúa para el reconocimiento de cada uno de los hilos de la
pantalla es medir con un multímetro en qué par de hilos hay resistencia fija, es decir
que no varía independientemente de que se haga presión en cualquier punto de la
superficie de la pantalla; como se ve en la figura 2.5(a), el primer par de hilos en los
que hay una resistencia fija es entre el 1 y el 3 y el segundo par es el 2 y el 4 .
Después de tener plenamente identificados los hilos entre los cuales la resistencia es
fija, debe saberse que si se energiza una de ellas podrá hallarse una coordenada y si se
energiza la otra se hallará la coordenada que falta, claro está que se debe aterrizar el
otro extremo de la resistencia fija que se ha energizado previamente [16]. En este punto
debe aclararse el hecho de que cuando se trabaja con una pantalla resistiva no es posi-
ble hallar ambas coordenadas (x y y) de manera simultánea, entonces el procedimiento
correcto es hallar una y luego la otra.
Para leer la coordenada x primero se conectan los hilos de la pantalla como se muestra
en la figura 2.5(c) y luego se lee y conectándola como se muestra en la figura 2.5(b); el
hilo de lectura en cada caso son los que se referencian con A0 y A1 , los cuales presentan
una variación en mili voltios con un valor máximo y mínimo a lo largo de cada eje
según el punto de presión en la superficie de la pantalla como se muestra en la figura
2.4, cuando los hilos se conectan en alguna configuración que corresponda a la figura
2.5(b) o 2.5(c).
15
2. P LANTA SELECCIONADA
R f ija 1 2 3 4 1 2 3 4
NC A0 A1 NC
2 4
1 3 10 kΩ 10 kΩ
R f ija 3, 3 V 3, 3 V
Figura 2.5: Salidas de la pantalla táctil resistiva de 4 hilos, cada punto representa un hilo [Autores].
(a) Medida de la resistencia fija. (b) Configuración para leer la coordenada y. (c) Configuración
para leer la coordenada x.
El cambio de conexión de los cuatro hilos de la pantalla para leer cada coordenada
se hace manipulando los pines I/O del GPIO de la Raspberry Pi Usando las lineas del
listado de código 2.1. Cuando se necesita que un hilo de la pantalla resistiva esté en
NC (No conexión) como se ve en la imagen 2.5, se configura el pin del GPIO conectado
a él como entrada
Listado de código 2.1: Manipulación pines GPIO para lectura de coordenadas de la pantalla táctil.
#Lectura del eje x
#disposición pines pantalla
GPIO.setup(22, GPIO.IN) # Hilo 1 pantalla touch en No conexion
GPIO.setup(17, GPIO.OUT) # Hilo 2 pantalla touch
GPIO.setup(4, GPIO.OUT) # Hilo 3 pantalla touch
GPIO.setup(27, GPIO.OUT) # Hilo 4 pantalla touch
#salida de los pines
GPIO.output(17, 1) # nivel alto de voltaje para base de transistor,
hilo 3 a tierra
GPIO.output(4, 0) # nivel bajo de voltaje para base de transistor,
hilo 2 a canal ADC 1
GPIO.output(27, 1)
#asignación de la lectura de la coordenada
x= adc.readADCSingleEnded(0, pga, sps)
16
2.3. Cinemática de la plataforma Stewart
hilo 2 a tierra
GPIO.output(17, 0) # nivel bajo de voltaje para base de transistor,
hilo 3 a canal ADC 0
#asignación de la lectura de la coordenada
y= adc.readADCSingleEnded(1, pga, sps)
Notese que para leer cualquier coordenada se necesita que uno de los hilos 2 o 3 de la
pantalla esté a tierra y el otro conectado a la lectura del ADC, debido a que la lectura
analógica se hace con un dispositivo externo (Ver capitulo 1) no se pueden instanciar
las entradas de los canales de lectura para que sean una salida y así hacer conexión de
uno de los dos hilos de la pantalla con tierra. Entonces lo que se hace con el fin cumplir
la disposición de los hilos de la pantalla para leer cualquier coordenada como se ve en
la figura 2.5, se hace un arreglo con un transistor NPN conectando su base a un pin del
GPIO de la raspberry pi de tal manera que si se envía un nivel alto de voltaje el hilo de
la pantalla haga conexión con con tierra y si se envía un nivel bajo, haga conexión con
el canal ADC del dispositivo externo de lectura, esto se especifica en los comentarios
del listado de código 2.1.
17
2. P LANTA SELECCIONADA
′
z
Placa superior ′
móvil y Pi
O pi
′
x
T
qi
Placa inferior z li
base fija
y
O bi
Figura 2.6: Diagrama de Cuerpo libre para el x
Bi
i −ésimo brazo [1].
Resolver la primera etapa requiere tener claros los puntos relevantes en el diagrama
del cuerpo de la plataforma, tal y como se ve en la Figura 2.6, luego se calculan las
distancias entre las junturas de la base y las junturas de la placa superior plantean-
do matrices de rotación y traslación; con la ecuación (2.4) se expresa la longitud del
i −ésimo brazo y en (2.5) se expresa qi que describe las coordenadas del punto de ancla
Pi tomando como referencia la placa base.
li = T + R PB pi − bi (2.4)
qi = T + R PB pi (2.5)
En (2.4) y (2.5) T hace referencia a la distancia que hay entre el punto central de la placa
inferior O y el punto central de la placa superior O’ y también puede ser visto como el
vector de traslación que varía conforme cambia la distancias entre las placas superior
e inferior de la plataforma, esta distancia está dada por el desplazamiento de posición
lineal entre los dos puntos centrales por lo tanto es el vector de traslación. pi es la
distancia entre el punto central O’ de la placa superior y la i −ésima juntura esférica o
rótula adherida a ella, la distancia pi puede ser definida como un vector en el cual se
determinan las coordenadas del punto de ancla Pi con respecto a la placa superior. bi
es la distancia entre el punto central O de la placa inferior y la i −ésima juntura esférica
o rótula adherida a ella, la distancia bi representa el vector que define las coordenadas
18
2.3. Cinemática de la plataforma Stewart
y z z
P P
x′
y′ ψ x′ z′ φ y′
z′
C B B D J B
θ
θ P y
ψ x x φ
O A O E O K
Figura 2.7: Rotación. (a) Con respecto al eje z. (b) Con respecto al eje y. (C) Con respecto al eje
x. Figura basada en [1] página 1.
R PB = Rz (ψ) · Ry (θ ) · R x ( φ) (2.6)
La placa base tiene los ejes ortogonales x, y y z y la placa móvil tiene los ejes ortogonales
x’, y′ y z′ , para cada eje se pueden identificar 3 desplazamientos traslacionales con
respecto a la base y 3 movimientos angulares que definen la orientación de la placa
móvil con respecto a la base: .
x = OA − CB (2.7)
Luego se expresa (2.7) en términos del ángulo ψ y las distancias de los ejes coor-
denados x ′ y y′ haciendo uso de las definiciones de las funciones trigonométricas
seno y coseno como se ve en 2.8, haciendo la traslación necesaria de dicho ángulo
19
2. P LANTA SELECCIONADA
y = AB + CP (2.9)
x = OE + BD (2.12)
z = BE − DP (2.14)
20
2.3. Cinemática de la plataforma Stewart
y = OK − JB (2.17)
z = KB + JP (2.19)
21
2. P LANTA SELECCIONADA
Teniendo las matrices de rotación que corresponden a los ejes coordenados (2.11), (2.16)
y (2.21) puede hallarse (2.6).
cos (ψ) sin (ψ) 0 cos (θ ) 0 sin (θ ) 1 0 0
R PB = sin (ψ) cos (ψ) 0 · 0 1 0 · 0 cos ( φ) − sin ( φ)
1 0 0 − sin (θ ) 0 cos (θ ) 0 sin ( φ) cos ( φ)
cos (ψ) cos (θ ) − sin (ψ) cos ( φ) + cos (ψ) sin (θ ) sin ( φ)
R PB = sin (ψ) cos (θ ) cos (ψ) cos ( φ) + sin (ψ) sin (θ ) sin ( φ)
− sin (θ ) cos (θ ) sin ( φ)
sin (ψ) sin ( φ) + cos (ψ) sin (θ ) cos ( φ)
− cos (ψ) sin ( φ) + sin (ψ) sin (θ ) cos ( φ) (2.22)
cos (θ ) cos ( φ)
Pi Pi z
s
li y
li s
Ai
Figura 2.8: Representaciones gráficas de la ro-
α
tación del servomotor. (a) Hélice del i −ésimo
Bi
servomotor anclada al i −ésimo brazo rígido S. Bi β
(b) Representación cinemática del recorrido de x
x
la hélice del servomotor anclada a S.Figura ba-
(a) (b)
sada en [1] página 3 y [2]
Donde Ai es el punto de ancla del i −ésimo brazo con la hélice del rotor de su corres-
pondiente servomotor, Bi es el punto de unión de la hélice del servomotor con el rotor,
S es la longitud del i −ésimo brazo rígido de la plataforma, li como se ve en (2.4) es la
distancia variable que existe entre el punto de ancla Pi del brazo con la placa superior y
22
2.3. Cinemática de la plataforma Stewart
z z
Ai Ai
(i = impar) (i = par) Ai
y
y
π−α α za
ya α Figura 2.9: Recorrido angular
π+β Bi β ω de la hélice del servomotor con
x xa β respecto a los tres ejes coorde-
barrido de nados x, y y z. Figura basada
la leva x
en [1] páginas 4 y 5.
xb
Bi = yb (2.25)
zb
xp
Pi = y p
zp
A cada coordenada se le suma la correspondiente componente de Bi como se ve en
(2.25) debido a que este punto no es (0,0,0), hay una distancia fija entre el origen y el
centro de anclaje de la hélice con el rotor, a continuación se hallan las coordenadas de
Ai para el servomotor par al cual le corresponden los ángulos α y β.
23
2. P LANTA SELECCIONADA
a2 = ( x a − x b )2 + ( y a − y b )2 + ( z a − z b )2
De (2.29) y (2.30) se despejan las expresiones que se ven en (2.32) y (2.33) respectiva-
mente. 2
x a + y2a + z2a = − a2 − 2 ( x a xb + y a yb + z a zb ) + xb2 + y2b + z2b
(2.32)
x2p + y2p + z2p = −l 2 − 2 x p xb + y p yb + z p zb + xb2 + y2b + z2b
(2.33)
24
2.3. Cinemática de la plataforma Stewart
(2.36)
Se hace sustitución de variables para simplificar la expresión (2.36).
M = 2a z p − zb (2.37)
N = 2a cos ( β) x p − xb + sin ( β) y p − yb (2.38)
L = l 2 − S2 − a2
(2.39)
Se reemplaza (2.37), (2.38) y (2.39) en (2.36).
En la sección (B.1) del apéndice B se explica con detalle el procedimiento seguido para
hallar (2.41) a partir de (2.40).
L N
α = arcsin √ − arctan (2.41)
M2 + N 2 M
Ahora puede calcularse la longitud entre las placas superior e inferior asociada al án-
gulo α de rotación del servomotor; antes de hacerlo es necesario saber cual es la posi-
ción inicial de los motores que dan la longitud inicial ho que separa ambas placas, en
(2.42) q0 representa las coordenadas del punto de ancla Pi (situado en la placa superior)
con respecto a la placa inferior para h0 .
q0 = T + R PB pi
0 1 0 0 xp
q0 = 0 + 0 1 0 y p
h0 0 0 1 zp
0 xp
q0 = 0 + y p
h0 zp
25
2. P LANTA SELECCIONADA
xp
q0 = yp (2.42)
h0 + z p
Notese que el vector T de traslación para la posición inicial solo considera la distancia
inicial h0 la cual se da con respecto al eje z y la matriz de rotación R PB para la posición
inicial es una matriz identidad.
P1 P2
s1
s2
l1 l2
Se considera que la posición inicial del brazo del servo impar está enfrentada como
espejo con respecto al brazo del servo par, como se ve en la Figura 2.10. Cuando el
servo está en su posición inicial se forma un ángulo de 90° entre S y a entonces es
posible calcular la distancia l inicial que está entre los puntos P y B usando el teorema
de Pitágoras como se ve en (2.43).
l 2 = S2 + a2 (2.43)
Teniendo en cuenta la equivalencia de l hallada en (2.30) se tiene la ecuación (2.44).
2 2 2
l 2 = x p − xb + y p − yb + z p − zb
(2.44)
Si se igualan (2.30) y (2.44) y se despeja h0 se obtiene (2.45).
2 2 2
S2 + a2 = x p − x b + y p − y b + z p − z b
2 2 2
S2 + a2 = x p − x b + y p − y b + h0 + z p
2 2
h0 + z p = S2 + a2 − x p − x b − y p − y b
2 2
h0 = S2 + a2 − x p − x b − y p − y b − z p (2.45)
26
2.3. Cinemática de la plataforma Stewart
ángulo α0 que se define igual que α con la diferencia de que el primero se da cuando la
plataforma esta en sus condiciones iniciales el cual se deduce de (2.4).
li = T + R PB ( pi − bi )
0 1 0 0 xp xb
l0 = 0 + 0 1 0 y p − y b
h0 0 0 1 zp zb
0 x p − xb
l0 = 0 + y p − y b
h0 zp − 0
x p − xb
l0 = y p − y b (2.46)
h0 + z p
Haciendo uso de (2.43) y de (2.46) se halla l0 como se ve en (2.47).
2 2 2
l02 = x p − xb + y p − yb + h0 + z p
(2.47)
L0 = S2 + a2 − S2 − a2
L0 = 2a2 (2.49)
Para M0 se tiene en cuenta (2.47) y para N0 se asume que β es 0° (situación que no
podría verse en la realidad ya que si β variara seria necesario romper la leva del motor),
entonces se obtiene (2.50) y (2.51).
M0 = 2a h0 + z p (2.50)
N0 = 2a cos (0) x p − xb + sin (0) y p − yb
N0 = 2a x p − xb (2.51)
27
2. P LANTA SELECCIONADA
x
y T li = T + R PBii ( pi − bi )
z
ψ
θ R PBii = [3X3] αi = arcsin √ L
− arctan N
M
ϕ M2 + N 2
Cinemática h0 α0 Wi Salida
inversa proceso
28
2.4. Aplicación de la cinemática de la plataforma Stewart
Listado de código 2.2: Código python para hallar las coordenadas del punto p y el punto b.
1 # d e f i n i c i o n de l o s angulos de u b i c a c i o n de l o s motores
2 ang_base = ( 3 4 4 , 1 6 , 1 0 4 , 1 3 6 , 2 2 4 , 2 5 6 )
3 # d e f i n i c i o n de l o s angulos de u b i c a c i o n de l a s j u n t u r a s
4 ang_plamov = ( 3 1 5 . 3 , 4 4 . 7 , 7 5 . 3 , 1 6 4 . 7 , 1 9 5 . 3 , 2 8 4 . 7 )
5 # m a t r i z b i d i m e n s i o n a l d e 6 x3 u b i c a c i o n j u n t a s b a s e
29
2. P LANTA SELECCIONADA
servo 2 servo 1
16° 344°
32°
y y
β5 β4 120°
x x y
y y 104° 356°
β3 servo 6
β6
x servo 3
136° 224°
servo 4 servo5
y y
β1 β2
x x junta 2 49,7° 315,3° junta 1 x
164,7° 195,3°
junta 4 x junta 5
(c)
Figura 2.12: Distribución espacial en las placas superior e inferior de la plataforma Stewart [Autores].
(a) Medición de los ángulos β. (b) Ubicación de los motores en la placa base. (C) Ubicación de las
junturas en la placa superior.
6 uniones_ba = numpy . z e r o s ( ( 6 , 3 ) )
7 # m a t r i z b i d i m e n s i o n a l d e 6 x3 u b i c a c i o n j u n t a s p l a c a m o v i l
8 u n i o n e s _ p l a = numpy . z e r o s ( ( 6 , 3 ) )
9
10 f o r i in range ( 6 ) :
11 # en e s t e m e t o d o s e c a l c u l a n xb yb p a r a c a d a s e r v o
12 bx=rad_bas * math . cos ( math . r a d i a n s ( ang_base [ i ] ) )
13 by=rad_bas * math . s i n ( math . r a d i a n s ( ang_base [ i ] ) )
14 uniones_ba [ i ] [ 0 ] =bx
15 uniones_ba [ i ] [ 1 ] =by
16 uniones_ba [ i ] [ 2 ] =0
17 # en e s t e m e t o d o s e c a l c u l a n xp yp p a r a c a d a s e r v o
18 px= r a d _ p l a c * math . cos ( math . r a d i a n s ( ang_plamov [ i ] ) )
19 py= r a d _ p l a c * math . s i n ( math . r a d i a n s ( ang_plamov [ i ] ) )
20 u n i o n e s _ p l a [ i ] [ 0 ] =px
21 u n i o n e s _ p l a [ i ] [ 1 ] =py
22 u n i o n e s _ p l a [ i ] [ 2 ] =0
30
2.4. Aplicación de la cinemática de la plataforma Stewart
Con qi y li calculados se aplica la ecuación (2.41) para hallar α que es el ángulo de ro-
tación para cada hélice del servo según las coordenadas de traslación y rotación dadas
como se ve en la Lista de código 2.4.
31
2. P LANTA SELECCIONADA
Listado de código 2.4: Código python para calcular el ángulo α de cada hélice de los servomotores.
1 # d e f i n i c i o n d e l o s a n g u l o s b e t h a l e v a con r e s p e c t o xy
2 ang_betas = ( 9 0 , 2 7 0 , 2 1 0 , 3 0 , 3 3 0 , 1 5 0 )
3 # m a t r i z b i d i m e n s i o n a l d e 6 x1 a n g u l o s a l f a
4 a n g _ a l f a = numpy . z e r o s ( ( 6 , 1 ) )
5 c =q
6 d =l
7 m=uniones_ba
8 n=u n i o ne s _ p l a
9 # m a t r i z b i d i m e n s i o n a l d e 6 x1
10 h0 = numpy . z e r o s ( ( 6 , 1 ) )
11 a n g _ a l f a 0 = numpy . z e r o s ( ( 6 , 1 ) )
12 f o r i in range ( 6 ) :
13 L = ( ( d [ i ] [ 0 ] * * 2 ) +(d [ i ] [ 1 ] * * 2 ) +(d [ i ] [ 2 ] * * 2 ) ) +( a * * 2 ) −(s * * 2 )
14 M=2 * a * ( c [ i ][2] −m[ i ] [ 2 ] )
15 N=2 * a * ( ( ( math . cos ( math . r a d i a n s ( ang_betas [ i ] ) ) ) * ( c [ i ][0] −m[ i ] [ 0 ] ) ) + ( (
math . s i n ( math . r a d i a n s ( ang_betas [ i ] ) ) ) * ( c [ i ][1] −m[ i ] [ 1 ] ) ) )
16 H=math . degrees ( math . a s i n ( L/( math . s q r t (M* * 2 +N * * 2 ) ) ) )
17 J =( math . degrees ( math . atan2 (N,M) ) )
18 a n g _ a l f a [ i ]=H−J
19 h0 [ i ] = ( math . s q r t ( ( s * * 2 ) +( a * * 2 ) − (( c [ i ][0] −m[ i ] [ 0 ] ) * * 2 ) − (( c [ i ][1] −m
[ i ] [ 1 ] ) * * 2 ) ) )−c [ i ] [ 2 ]
20 L0 = 2 * ( a * * 2 )
21 M0=2 * a * ( h0 [ i ]+ c [ i ] [ 2 ] )
22 a n g _ a l f a 0 [ i ] = ( math . degrees ( math . a s i n ( L0 /( math . s q r t (M0* * 2 +N * * 2 ) ) ) )
) −(math . degrees ( math . atan2 (N, M0) ) )
Por ultimo se procede a calcular el ancho de pulso introducido como señal de control
para los servomotores necesario para que roten αi grados, este pulso Wi se obtiene co-
mo se ve en la Lista de Código 2.5. Es necesario aclarar que las constantes de r y W0 se
obtienen a través de la aplicación de las curvas del comportamiento de los servomoto-
res las cuales se especifican en el apéndice C sección C.2.
Listado de código 2.5: Código python para calcular el ancho de pulso Wi necesario en cada
servomotor.
1 # c o n s t a n t e s r p a r a l o s s e r v o s , p u l s o r e q u e r i d o p a r a que e l
s e r v o r o t e a l a max p o s i c i o n
2 r =(1650/135 ,800/45 ,1700/135 ,930/45 ,1850/135 ,780/45)
3 # pulso actual del servo
4 W = numpy . z e r o s ( ( 6 , 1 ) )
5 # p u l s o en m i c r o s e g r e q u e r i d o p a r a que l o s s e r v o s r o t e n a l a
posicion inicial
6 W0 = ( 1 3 9 8 , 1 1 0 6 , 1 4 3 0 , 1 2 0 2 , 1 5 7 6 , 1 0 8 6 )
7 v= a n g _ a l f a
8 o= a n g _ a l f a 0
9 f o r i in range ( 6 ) :
32
2.5. Bola y plato
33
2. P LANTA SELECCIONADA
Esfera metálica
Pantalla
Aclaradas las condiciones físicas del sistema en las que se basa el análisis, se procede a
hallar la equivalencia de los términos en (2.53).
La energía cinética rotacional de un cuerpo rígido que gira en torno a un eje fijo de-
pende del momento de inercia y de la velocidad angular del cuerpo, se define como
Ecr = 12 Iω 2 donde I y es el momento de inercia y ω es la velocidad angular que para
una esfera de masa m, radio R y velocidad de movimiento a lo largo de un sistema
coordenado horizontal v = ẋ2 + ẏ2 , corresponden a Ibola = 52 mR2 y ωbola = Rv [17].
En el caso del plato su velocidad angular θ̇ se expresa como θ̇ 2 = θ̇ x2 + θ̇y2 y su velocidad
lineal debido a la rotación está dada por Ṡ2 = x θ̇ x + yθ̇y .
v 2
Erot bola = 21 Ibola ωbola
2 = 12 Ibola R Etras bola = 12 mv2 (t)
1
Erot pla = 2 Ibola θ̇ 2 (t) Etras pla = 12 mṡ2 (t)
34
2.5. Bola y plato
Para terminar con las expresiones que componen (2.52) se halla la energía potencial del
sistema, sabiendo que por definición esta corresponde
a E p = −mgh donde la altura
h se expresa como h = x sin (θ x ) + y sin θy [17] y m y g representan la masa y la
gravedad respectivamente, reemplazando estos términos y (2.54) en (2.52) se halla la
ecuación de Lagrange (ver (2.55)).
1 v 2 1 1 1
+ mv2 (t) + Ibola θ̇ 2 (t) + mṡ2 (t) + mg x sin (θ x ) + y sin θy
L (t) = Ibola
2 R 2 2 2
ẋ2 ẏ2
1 1 2
2 2
L (t) = Ibola θ̇ x + θ̇y + 2 + 2 + m ẋ2 + ẏ2 + x θ̇ x + yθ̇y
+ mg x sin (θ x ) + y sin θy
2 R R 2
(2.55)
Con el método de Lagrange se simplifica el modelo matemático del sistema, sin em-
bargo es necesario aplicar las ecuaciones de Euler- Lagrange (ver (2.56) donde L es la
ecuación de Lagrange, qi es la posición en la dirección i y Qi es la componente de fuerza
[18]) para determinar las ecuaciones diferenciales del sistema y así hallar una repre-
sentación de estado[19].
d ∂L ∂L
− = Qi (2.56)
dt ∂q̇i ∂qi
m x θ̇ x2 + θ̇ x yθ̇y + g sin (θ x )
ẍ = Ibola
(2.57)
R2
+m
d ∂L ∂L
− =0
dt ∂ẏ ∂y
Ibola
= mx θ̇ x θ̇y + myθ̇y2 + mg sin θy
∂L ∂L
∂ẏ = R2
ẏ + mẏ ∂y
35
2. P LANTA SELECCIONADA
m x θ̇ x θ̇y + yθ̇y2 + g sin θy
ÿ = Ibola
(2.58)
R2
+m
Si se asume que el rango de rotación del plato es pequeño se pueden hacer las si-
aproximaciones que llevan a la linealización del sistema [18]: sin (θ x ) ≃ θ x ,
guientes
sin θy ≃ θy , myθ˙x θ˙y ≃ 0, mx θ̇ x2 ≃ 0, m xθ˙ x θ˙y ≃ 0 y myθ̇y2 ≃ 0[19]. Si se reem-
plazan estas aproximaciones en (2.57) y (2.58) se obtiene (2.59) y (2.60) sabiendo que
Ibola = 25 mR2 y g ≃ 9, 8 [20].
mgθ x 5
ẍ = Ibola
→ ẍ = gθ x (2.59)
+m 7
R2
mgθy 5
ÿ = Ibola
→ ÿ = gθy (2.60)
+m 7
R2
Haciendo la transformada de Laplace de (2.59) y (2.60) se obtiene (2.61) y (2.62).
θ x (s) 7
Gx ( s ) = = 2 (2.61)
X (s) s
θy (s) 7
Gy (s) = = 2 (2.62)
Y (s) s
Para aplicar la función de transferencia encontrada, es necesario discretizar el proceso
haciendo uso de la técnica del retenedor de orden 0 como se ve a continuación.
7
G (s) =
s2
G (s)
−1
G (z) = 1 − z Z
s
7
G ( z ) = 1 − z −1 Z 3 (2.63)
s
T 2 z ( z +1)
Resolver (2.63) requiere saber que Z 2/s3 equivale a
3 donde T es el tiempo
( z −1)
de muestreo, y a partir de ello se obtiene (2.64) como se muestra a continuación.
z−1
2
G (z) = Z 3,5 3
z s
2
z−1 T z ( z + 1)
G (z) = 3,5
z ( z − 1)3
T 2 ( z + 1)
G (z) = 3,5
( z − 1)2
36
2.5. Bola y plato
T 2 ( z + 1)
G (z) = 3,5 (2.64)
z2 − 2z + 1
La discretización obtenida se aplica para el movimiento de la esfera en ambos ejes
coordenados, por lo tanto (2.64) puede ser usada para describir el movimiento de la
esfera a lo largo de los ejes x y y.
Nótese que el peso de la esfera no tiene ninguna incidencia en la dinámica del sistema
debido a que su masa no es un factor que esté presente en su función de transferencia,
sin embargo m si es un factor que modifica la lectura de posición de la esfera gracias a
que el sensor de posición es una pantalla táctil resistiva, entre más presión se ejerza en
alguno de sus puntos más grande es la variación en resistencia y por lo tanto el voltaje
entregado es mayor.
37
Capítulo
3 Control PID
3.1 G ENERALIDADES
En la Figura 3.1 se puede observar que para controlar la planta seleccionada es nece-
sario aplicar un PID para controlar la posición de la esfera en cada eje, es decir un PID
para la posición en x y otro para y.
Las señales tratadas en el desarrollo del control aplicado al sistema Plataforma Stewart-
Bola y plato que se illustran en la Figura 3.1 se definen y se explican a continuación:
39
3. C ONTROL PID
xbre f xerror
+ PIDx
ref -
θx
Proceso
Plataforma Bola y Plato x, y
ybre f yerror θy Stewart
+
ref - PIDy
Detección
xb , yb
k d s2 + k p s + k i
c (s) = (3.1)
s
Siendo este un caso de implementación del control PID en una tarjeta digital la dicre-
tización tanto de las acciones de control como de la función de transferencia hallada a
partir del comportamiento dinámico del proceso bola y plato- plataforma Stewart.
40
3.1. Generalidades
Ventajas Desventajas
Si existe ruido a la
Si aumenta k p la
salida, este será
respuesta se hace más
amplificado gracias a al
Proporcional rápida y disminuye el
aumento del k p . En
error en estado
algunos casos provoca
estacionario.
excesiva oscilación.
Cuando se agrega
componente k i se
asegura un error en Puede que gracias a su
estado estable muy acción la respuesta se
Integral
pequeño. vuelva lenta y/o
Asegura robustez y oscilatoria
minimiza la presencia
de ruido
Puede maximizar el
ruido, debido a su
Con k d el sistema
sensibilidad ante él.
Derivativo responde más
Nunca puede aplicarse
rapidamente
sola porque
descontrola el sistema
41
3. C ONTROL PID
ess
OVS
Re f
Vf in
También se requiere que las variables de control estén dentro de los límites admisibles
(lo cual depende de la dinámica del sistema), es decir que para emular el comporta-
miento de una planta es necesario tener en cuenta las condiciones de operación que se
tienen en la realidad.
42
3.3. Algoritmo de control implementado
q0 z2 + q1 z + q1
C (z) =
z2 − 1
q 2 z −2 + q 1 z −1 + q 0
C (z) = (3.7)
1 − z −2
La sustitución de variables se hizo para encontrar de una manera más fácil el valor de
las constantes de control en base a la función de transferencia discreta del proceso que
se pretende controlar (ver (2.64)).
Teniendo en cuenta [22] la función de transferencia del control PID expresado en (3.6)
puede ser escrita como se ve en (3.8), por lo tanto las equivalencias de las constantes
de control pasan a ser: q0 = k p + k i + k d , q1 = −k p − 2k d y q2 = k d .
k p + k i + k d − k p + 2k d z−1 + k d z−2
C (z) = (3.8)
1 − z −1
Y (z) q 2 z −2 + q 1 z −1 + q 0
=
U (z) 1 − z −1
Y ( z ) 1 − z −1 = U ( z ) q 2 z −2 + q 1 z −1 + q 0
Y ( z ) − Y ( z ) z −1 = U ( z ) q 2 z −2 + U ( z ) q 1 z −1 + U ( z ) q 0
y [ n ] = y [ n − 1] + q2 u [ n − 2] + q1 u [ n − 1] + q0 U [ n ] (3.9)
En el listado de código 3.1 se puede ver el algoritmo PID que se implementó para con-
trolar la posición de la esfera, es necesario el manejo de memorias que se denominan
como Mn en las cuales se almacenan estados anteriores tanto de la salida como de
entrada del control y [n] y u [n] respectivamente como se puede ver en (3.9).
43
3. C ONTROL PID
Haciendo una analogía con la ecuación en diferencias del control PID (3.9) y el listado
de código 3.1, M4x y M4y corresponde a y [n], M5x y M5y a y [n − 1], M3x y M3y a
u [n − 2], M2x y M2y a u [n − 1] y M1x y M1y a u [n]. Así teniendo como entrada la po-
sición de la esfera se determina mediante el cálculo del error los ángulos de rotación θ x
y θy del sistema bola y plato o si quiere verse en la notación descrita para la cinemática
de la plataforma Stewart pueden llamarse θ y φ.
44
3.4. Resultados
3.4 R ESULTADOS
3.4.1 Experimento
45
3. C ONTROL PID
(a) (b)
Pos x Pos y
200
150 150
Eje x pantalla
Posición
(t p = 1.2916; x = 123)
100 100
(t p = 0.76317; y = 86)
50 50
0 1 2 3 4 5 6 20 40 60 80
Tiempo [s] Eje y pantalla
Figura 3.3: (a) Curva de reacción para las constantes de control k pxy = −0, 092, k ixy = 0 y
k dxy = −0, 76. (b) Recorrido de la esfera en la superficie de la placa móvil.
46
3.4. Resultados
(a) (b)
Pos x Pos y
200
150 150
Eje x pantalla
Posición
50 50
0 5 10 15 20 20 40 60 80
Tiempo [s] Eje y pantalla
Figura 3.4: (a) Curva de reacción para las constantes de control en x con valores k px = −0, 04,
k ix = 0 y k dx = −0, 76 y las constantes de control en y de valores k py = −0, 1, k iy = 0, k dy =
−0, 25. (b) Recorrido de la esfera en la superficie de la placa móvil.
(a) (b)
Pos x Pos y
200
150 150
Eje x pantalla
Posición
(t p = 1.1228; x = 106)
100 100
(t p = 8.357; y = 90)
50 50
0 2 4 6 8 10 12 20 40 60 80
Tiempo [s] Eje y pantalla
Figura 3.5: (a) Curva de reacción para las constantes de control en x con valores k px = −0, 92,
k ix = 0, 001 y k dx = −0, 76 y las constantes de control en y de valores k py = −0, 92, k iy = 0,001,
k dy = −0, 76. (b) Recorrido de la esfera en la superficie de la placa móvil.
47
3. C ONTROL PID
(a) (b)
Pos x Pos y
200
150 150
Eje x pantalla
(t p = 1.1262; x = 140)
Posición
100 100
(t p = 0.77226; y = 87)
50 50
0 2 4 6 8 10 20 40 60 80
Tiempo [s] Eje y pantalla
Figura 3.6: (a) Curva de reacción para las constantes de control en x con valores k px = −0, 92,
k ix = −0, 001 y k dx = −0, 76 y las constantes de control en y de valores k py = −0, 92, k iy = −0,001,
k dy = −0, 76. (b) Recorrido de la esfera en la superficie de la placa móvil.
48
3.4. Resultados
(a) (b)
200
Pos x (t p y= 10.945; x = 202)
Pos
150 150
Eje x pantalla
Posición
100
(t p = 7.217; y = 90) 100
50 50
0 2 4 6 8 10 12 14 20 40 60 80
Tiempo [s] Eje y pantalla
Figura 3.7: (a)Curva de reacción para las constantes de control en x con valores k px = −0, 04,
k ix = 0 y k dx = 0, 74 y las constantes de control en y de valores k py = −0, 1, k iy = 0, k dy = 0, 0022.
(b) Recorrido de la esfera en la superficie de la placa móvil.
Cuadro 3.2: Constantes de control con las que se consigue la estabilización del sistema y su relación
con los parámetros de desempeño para el control PID.
49
3. C ONTROL PID
(a) (b)
Pos x Pos y
200
150 150
Eje x pantalla
(t p = 1.1748; x = 131)
Posición
100 100
(t p = 0.99683; y = 70)
50 50
0 2 4 6 8 10 20 40 60 80
Tiempo [s] Eje y pantalla
Figura 3.8: Mejor respuesta del controlador PID para el proceso plataforma Stewart- bola y plato
(a)Curva de reacción para las constantes de control en x con valores k px = −0, 065, k ix = −0, 001 y
k dx = −0, 82 y las constantes de control en y de valoresk py = −0, 065, k iy = −0, 001 y k dy = −0, 82
(b) Recorrido de la esfera en la superficie de la placa móvil.
Cuanto más bajos sean los parámetros de desempeño que la dinámica de la planta
presente en relación a un conjunto de constantes de control definidas, se asume que
es el control aplicado es el más apropiado. Si se observan los valores en la tabla 3.2 se
puede determinar que el mejor comportamiento dinámico ocurre en las condiciones
mostradas en la Figura 3.8
Aunque hay respuestas que presentan un menor OVS con respecto a la elegida como
la mejor, también se tomó en cuenta la respuesta del sistema ante perturbaciones y el
ruido en estado estable.
50
Capítulo
4 Control LQR
Representación Estados
ref u Plataforma Bola y Plato x, y
+
- Stewart
x̂
LQR Observador
ŷ
51
4. C ONTROL LQR
4.1 G ENERALIDADES
Las siglas LQR indican control óptimo cuadrático, es una acción de control moderno
multivariable que se caracteriza por su robustez tanto en tiempo discreto como en
tiempo continuo [23] [4].
Se dice que es una estrategia de control óptima ya que se procura la operación del
sistema dinámico al menor costo, es decir que los ajustes del controlador proporcional
se encuentran usando un algoritmo matemático que minimiza la función de coste o
desviaciones no deseadas.
Cuando se trata de una planta no lineal el calculo de las constantes de control debe
hacerse en función del punto de trabajo, por eso es necesario escogerlo previamente
dentro del margen de operación de la planta. Esto ocurre en consecuencia a la no linea-
lidad de la planta, dependiendo del grado de no linealidad responderá de diferente
manera al rededor de varios puntos de trabajo.
En primera instancia es necesario disponer de las ecuaciones de estado del sistema
proceso o planta que se desea controlar las cuales son de la forma (4.1) y (4.2).
.
x = [ A] [ x ] + [ B] [u] (4.1)
La ley control LQR responde en esencia a una acción de control proporcional como se
ve en (4.3), debe determinarse con cálculos matemáticos los componentes de la matriz
(4.4) que representa las constantes del control proporcional.
[k (t)] = R−1 [ B]T [ P (t)] (4.4)
El control LQR se calcula minimizando la función de coste J según (4.5), la cual tiene
una expresión que se suma cuando el proceso que se controla no es de régimen per-
manente, es decir cuando no es controlable ni observable, sin embargo en este caso no
se presenta esta expresión debido a que la planta (plataforma Stewart) es observable
y controlable como más adelante se demostrará . Se habla de un proceso en régimen
permanente cuando existe una única matriz de control óptimo [k (t)] tal que pueda
estabilizar al sistema en lazo cerrado con (4.3).
ˆ∞
J= [ x ]T [ Q] [ x ] + [u]T [ R] [u] dt (4.5)
0
52
4.1. Generalidades
4.1.1 Controlabilidad
B AB A2 B . . . An−1 B
rango =n (4.7)
B AB A2 B . . . An−1 B
det =U (4.8)
Según el criterio de Cayley-Hamilton se evalúa que la matriz (4.8) sea singular, es decir
que el determinante de la matriz sea igual a 0 para asegurar que pueda ser invertible y
53
4. C ONTROL LQR
4.1.2 Observabilidad
Como se puede ver en las ecuaciones (4.3), (4.4), y (4.6) contienen los términos [ Q] y
[ R] estas son matrices propias del control LQR. Hay algunos parámetros que deben
tomarse en cuenta para seleccionar estas matrices, sin embargo no existe una regla
determinada para hacerlo [23] además la estrategia LQR tiene la ventaja de que inde-
pendientemente de la selección de [ Q] y [ R] sigue siendo capaz de estabilizar al sistema
54
4.2. Observadores de estado
porque es un control robusto. Algunos parámetros que suelen seguirse para seleccio-
nar estas matrices son:
[ Q] = [C ] T [C ] (4.11)
55
4. C ONTROL LQR
u ẋ x y
ref + + 1
Pre - B - s C
ref ẋ x y K
Pre + u B + 1
C
- - s
A ẋˆ x̂ ŷ
+ + 1 +
B + s C -
K +
(a) (b)
Figura 4.2: Control LQR con realimentación de estados.(a) Topología control LQR (sin realimen-
tación a la salida). (b) Control LQR y observador de estados [4].
56
4.3. Implementación LQR
Para iniciar los experimentos del control LQR la [ Q] inicial y la [ R], fueron establecidas
como se ve en (4.14) y (4.15).
1 0 0 0
0 0 0 0
[ Q] = C T C =
0 0 1 0
(4.14)
0 0 0 0
1 0
[ R] = (4.15)
0 1
En el trabajo de optimización experimental del control LQR hay dos alternativas que
pueden ser evaluadas: La observación del lugar de las raíces de A − BK (que influye
directamente en el tiempo de respuesta) y la minimización de la función de coste (4.5).
En cualquiera de estos dos casos se debe hallar la matriz de ganancias K haciendo uso
de la ecuación de Ricatti (4.6).
En cualquier opción que se tome para optimizar y/o sintonizar el controlador, es nece-
sario variar los elementos no nulos de la matriz [ Q], la cual en un principio se escoge
de manera arbitraria [26].
2. Resolver la ecuación de Ricatti y hallar las ganancias del control LQR con (4.4)
57
4. C ONTROL LQR
Cuando se hallan las ganancias que cumplen con la optimización deseada se procede
a desarrollar el control del proceso en lazo cerrado.
TA − FT = LC (4.18)
Con la ecuación de Lyapunov (4.18) y la representación de estados del sistema (ver (4.1))
es posible determinar los estados estimados del sistema diseñando un observador de
estados, como sigue [27]:
58
4.4. Código LQR en Python
6. Formular (4.20).
ż = Fz + Ly + TBu (4.20)
Luego de determinar las constantes del observador, este es agregado al sistema para
determinar los estados estimados conforme va variando la entrada en cada instante de
tiempo y posteriormente hacer el seguimiento del error como se ve en (4.22).
e = re f ∗ pre − K x̂ (4.22)
Siguiendo con el orden para la implementación del control LQR, primero se procede
con su optimización. Se halla la matriz de constantes K resolviendo la ecuación de
Ricatti, a partir de las matrices de la dinámica de la planta A, B y C y de las matrices Q
y R escogidas, como se muestra en el Listado de código 4.1.
Listado de código 4.1: Código Python para hallar las ganancias LQR.
1 # l i b r e r i a s p a r a e l m a n e j o d e m a t r i c e s en p y t h o n
2 from numpy
3 import matrix from numpy
4 import l i n a l g
5 import numpy as np
6 import s c i p y . l i n a l g
7
8 # d e f i n i c i ó n de l a s m a t r i c e s d e l s i s t e m a
9 A = matrix ( [ [ 0 , 1 , 0 , 0 ] , [ 0 , 0 , 0 , 0 ] , [ 0 , 0 , 0 , 1 ] , [ 0 , 0 , 0 , 0 ] ] )
10 B= −7* matrix ( [ [ 0 , 0 ] , [ 1 , 0 ] , [ 0 , 0 ] , [ 0 , 1 ] ] )
11 C=matrix ( [ [ 1 , 0 , 0 , 0 ] , [ 0 , 0 , 1 , 0 ] ] )
12 # matrices R y Q escogidas
13 R=matrix ( [ [ 2 0 , 0 ] , [ 0 , 2 0 ] ] )
14 Q=(C . T ) * C
15
16 # R e s o l u c i ó n de l a e c u a c i ó n de R i c a t t i
59
4. C ONTROL LQR
17 P = np . matrix ( s c i p y . l i n a l g . s o l v e _ c o n t i n u o u s _ a r e (A, B , Q, R ) )
18 # Se h a l l a l a m a t r i z d e g a n a n c i a s
19 K = np . matrix ( s c i p y . l i n a l g . inv (R ) * ( B . T * P ) )
20 # s e o b s e r v a e l l u g a r d e l a s r a í c e s
21 e i g V a l s , e i g V e c s = s c i p y . l i n a l g . e i g (A−B * K)
Listado de código 4.2: Código Python para la implementación online del control LQR con obser-
vador de estado.
1 import math
2 import numpy
3 from numpy import matrix
4 from numpy import l i n a l g
5 import numpy as np
6 import s c i p y . l i n a l g
7 # i n i c i a l i z a c i o n de c o n s t a n t e s y memorias
8 A = matrix ( [ [ 0 , 1 , 0 , 0 ] , [ 0 , 0 , 0 , 0 ] , [ 0 , 0 , 0 , 1 ] , [ 0 , 0 , 0 , 0 ] ] )
9 B= −7* matrix ( [ [ 0 , 0 ] , [ 0 , 0 ] , [ 1 , 0 ] , [ 0 , 1 ] ] )
10 C=matrix ( [ [ 1 , 0 , 0 , 0 ] , [ 0 , 0 , 1 , 0 ] ] )
11 # l a r e f e r e n c i a d e l s i s t e m a d e b e s e r una m a t r i z d e 2 x1
12 r e f =matrix ( [ [ 1 1 0 ] , [ 4 5 ] ] )
13 # m a t r i z d e g a n a n a c i a s o p t i m a s c o n t r o l LQR
14 K=matrix ( [ [ − 0 . 3 1 6 2 , − 0 . 3 0 4 7 , 0 , 0 ] , [ 0 , 0 , − 0 . 3 1 6 2 , − 0 . 3 0 4 7 ] ] )
15 # ganancias observador
16 L=matrix ( [ [ 0 . 5 6 6 , 6 . 8 3 7 ] , [ − 0 . 0 1 1 , 0 . 0 9 2 ] , [ 0 . 5 6 6 , 6 . 8 3 7 ] , [ − 0 . 0 1 1 , 0 . 0 9 2 ] ] )
17 #x [ n ] e s t i m a d a
18 x0=numpy . z e r o s ( ( 4 , 1 ) )
19 # x [ n − 1] e s t i m a d a
20 x1=numpy . z e r o s ( ( 4 , 1 ) )
21 # matriz para almacenar l a l e c t u r a de p o s i c i o n a c t u a l
22 y=numpy . z e r o s ( ( 2 , 1 ) )
23 # s e ñ a l de c o n t r o l
24 u=numpy . z e r o s ( ( 2 , 1 ) )
25 # Matriz d e l precompensador
26 K0=matrix ( [ [ − 4 . 2 9 , 0 ] , [ 0 , − 4 . 2 9 ] ] )
27 # loop para la e j e c u c i o n del c o n t r o l
28 while ( 1 ) :
29 # l e c t u r a de p o s i c i o n
60
4.5. Resultados
30 y[0]= lee_x ( )
31 y[1]= lee_y ( )
32 x1 = ( (A−L * C) * x0 ) +(B * u ) +(L * y )
33 u=(−K * x1 ) +(K0 * r e f )
34 x0=x1
35 # s e a s i g n a l o s angulos de r o t a c i o n de l a p l a c a movil
36 phi=u [ 0 ]
37 t h e t a =u [ 1 ]
4.5 R ESULTADOS
Experimento 1: En este caso todos los valores de Q son nulos excepto q11 = 1 y
q33 = 1 y en R también todos son 0 a excepción de los valores r11 = 1 y r22 = 1.
La curva de reacción que se ve en la Figura 4.3 es el resultado de aplicar el con-
trol LQR y sin observador con las matrices Q y R descritas, los parámetros de
desempeño obtenidos son: OVS = 4,31 %, ts = 7,04s y ess = 0 %. A pesar de que
esta respuesta presenta un sobreimpulso satisfactorio y sigue la referencia para
ambos ejes de movimiento, el tiempo de estabilización es muy grande es decir es
muy lento.
61
4. C ONTROL LQR
(a) (b)
Pos x Pos y
200
150 150
Eje x pantalla
Posición
(t p = 4.44; x = 114.754)
100 100
50 (t p = 4.44; y = 46.945) 50
0 2 4 6 8 10 20 40 60 80
Tiempo [s] Eje y pantalla
Figura 4.3: (a) Curva de reacción para valores de la matriz de constantes de control k11 = 1,
k12 = 1, 414, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 1, k24 = 1, 414. (b) Recorrido de la esfera
en la superficie de la placa móvil.
(a) (b)
Pos x Pos y
200
150 150
Eje x pantalla
Posición
(t p = 1.21; x = 114.753)
100 100
50 (t p = 1.21; y = 46.944) 50
0 2 4 6 8 10 20 40 60 80
Tiempo [s] Eje y pantalla
Figura 4.4: (a) Curva de reacción para valores de la matriz de constantes de control k11 = 13, 41,
k12 = 5, 18, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 13, 41, k24 = 5, 18. (b) Recorrido de la
esfera en la superficie de la placa móvil.
62
4.5. Resultados
(a) (b)
Pos x Pos y
200
150 150
Eje x pantalla
Posición
100 100
50 50
(t p = 0.71; x = 39.744)
(t p = 0.71; y = 16.259)
0 2 4 6 8 10 20 40 60 80
Tiempo [s] Eje y pantalla
Figura 4.5: (a) Curva de reacción para valores de la matriz de constantes de control k11 = 38, 72,
k12 = 8, 806, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 38, 72, k24 = 8, 806. (b) Recorrido de la
esfera en la superficie de la placa móvil.
63
4. C ONTROL LQR
(a) (b)
Pos x Pos y
200
150 150
Eje x pantalla
Posición
(t p = 0.79; x = 114.754)
100 100
50 (t p = 0.79; y = 46.945) 50
Figura 4.6: (a) Curva de reacción para valores de la matriz de constantes de control k11 = 42, 42,
k12 = 9, 211, k13 = 0, k14 = 0, k21 = 0, k22 = 0, k23 = 42, 42, k24 = 9, 211. (b) Recorrido de la
esfera en la superficie de la placa móvil.
Cuadro 4.1: Parámetros de desempeño obtenidos de la curva de reacción del proceso para el control
LQR con respecto a las variaciones de Q y R.
64
Capítulo
5 Comparación de resulta-
dos
La diferencia entre la topología del control LQR con respecto a la del control PID, se
hace muy evidente al momento de implementarlos usando código python. Mientras el
primero requiere de un observador para hacer el seguimiento de la referencia, en el
PID solo se necesitan las ganancias que corresponden a cada una de las acciones de
control que lo compone.
65
5. C OMPARACIÓN DE RESULTADOS
Cuadro 5.1: Parámetros de desempeño obtenidos aplicando control LQR y PID en el proceso bola
y plato- Plataforma Stewart.
A raíz de que el proceso es multivariado, para la aplicación del control PID se necesita
la aplicación simultánea y paralela de un par de esta estrategia, con el objetivo con-
trolar cada eje de desplazamiento de la bola que recorre la pantalla táctil resistiva. Sin
embargo en el caso de la aplicación del control LQR no sucede lo mismo. Al hallar
las matrices que describen el sistema dinámico de la planta, se incluyen ambos ejes de
movimiento; entonces a la salida y a la entrada de la misma estrategia de control LQR
se obtienen vectores, cuyos valores incluyen las magnitudes necesarias para ejecutar el
control multivariado.
En la Tabla 5.1 se muestran los parámetros de desempeño que se han calculado en base
a la observación de la curva de reacción del proceso. Esto para la mejor respuesta en la
aplicación de cada una de las dos estrategias de control al proceso seleccionado.
Los resultados que se tratan en esta sección son los mejores en la aplicación del LQR
y el PID, en ambos casos se consigue una estabilización y seguimiento de la referen-
cia satisfactoria. También se observa una robustez experimental del sistema, cuando
se somete a perturbaciones externas, el sistema reacciona con el balance de la bola
en la posición deseada. Dichas perturbaciones se provocan cuando se empuja la bola
aplicando, una fuerza adicional a la propia inercia de la bola, la cual hace que esta se
mueva.
66
Capítulo
6 Conclusiones
67
6. C ONCLUSIONES
68
Apéndice
A Comunicación SSH
En este apéndice se explica una forma de manejar las funcionalidades del sistema ope-
rativo instalado previamente en la tarjeta Raspberry Pi, desde un computador, me-
diante conexión física con el cable ethernet, accediendo a la terminal de Raspbian y a las
carpetas de archivos que contiene la memoria SD (Secure Digital) que funciona como
“disco duro de la tarjeta”.
Con el fin de evitar el uso de periféricos como teclado y monitor conectados a la Rasp-
berry Pi, se puede establecer conexión desde un computador mediante el cable ethernet
usando el protocolo SSH (Secure SHell) y así controlar la tarjeta de desarrollo usando
los periféricos del computador; este método es especialmente útil cuando no se dispo-
ne de un monitor HDMI o un cable conversor HDMI-VGA para conectar a la Raspberry
Pi. Es necesario tener en cuenta que en la tarjeta SD de la Raspberry Pi debe estar insta-
lado el sistema operativo (como el Raspbian por ejemplo), y así se pueden efectuar los
pasos que siguen:
69
A. C OMUNICACIÓN SSH
Ambos dispositivos deben tener una ip estática para hacer conexión entre ellos. En un
computador con Ubuntu se accede a “Editar las conexiones...” como se ve en la Figura
A.1 que se encuentra en el botón de redes en la parte superior derecha del escritorio
.
En la ventana de “Conexiones de red” se hace clic en “Añadir” y luego se elige tipo
de conexión “Cableada”. En la ventana de edición se puede poner un nombre que
identifique la conexión, como Raspberry Pi. Para asignar la ip fija, se hace clic en la
pestaña “Ajustes de IPv4”, se selecciona el método manual en el menú desplegable y
luego con el botón “Añadir”, se añade una dirección. En este caso se usó el número
192.168.200.1 para que no entre en conflicto con las direcciones ip asignadas en la red
inalámbrica (ver Figura A.2).
70
A.2. Usar gestor de archivos con SSH
71
A. C OMUNICACIÓN SSH
Figura A.4: Ventana para introducir la dirección del servidor con el que se quiere establecer conexión
[Autores].
El gestor de archivos de Ubuntu 14.04 con Unity se llama Nautilus, el cual permite ver
los archivos de un servidor SSH directamente sin necesidad de recurrir a la terminal.
El primer paso es acceder a Archivo>Conectar al servidor como se ve en la Figura A.3.
Luego en el cuadro de diálogo que se abre hay un espacio para insertar la dirección
del servidor de la forma sftp://usuario@direccion/carpeta/ y como se ve en la
Figura A.4, en este caso en específico se inserta sftp://pi@192.168.200.2/home/pi.
Una vez se tiene Nautilus funcionando con la conexión SSH sólo resta copiar y pegar
de forma gráfica los archivos que se quieran utilizar en la tarjeta conectando al servidor
como se muestra en la Figura A.5.
72
A.3. Problemas conocidos
Figura A.5: Ventana para seleccionar el servidor con el que se quiere establecer conexión [Autores].
73
Apéndice
B Aclaraciones matemáticas
C
H
v
Figura B.1: Triángulo para deducción
J
de la identidad [Autores].
Sin embargo se hacen algunos arreglos matemáticos para expresarla de otra manera
como se ve en (B.2), sabiendo las igualdades de la Tabla B.1 deducidas de acuerdo a la
Figura B.1.
J H
sin ( x + v) = sin ( x ) + cos ( x )
C C
75
B. A CLARACIONES MATEMÁTICAS
L = C sin (α + δ)
L = N 2 + M2 sin (α + δ)
L
sin (α + δ) = √
N 2 + M2
L
arcsin √ = α+δ (B.3)
N 2 + M2
N
Se sabe que δ = arctan M teniendo en cuenta la Tabla B.1 y las sustituciones de
variable hechas, entonces se reemplaza δ en (B.3) y se obtiene (B.4).
L N
arcsin √ = α + arctan (B.4)
2
N +M 2 M
76
Apéndice
C Condiciones físicas de la
planta
77
C. C ONDICIONES FÍSICAS DE LA PLANTA
Si = 129 mm
(a)
ai = 1,25 mm
(b)
Figura C.1: Medidas del brazo y de la leva de la plataforma. (a) Longitud del i-ésimo brazo rígido.
(b) Longitud de la leva del i-ésimo servomotor medida desde la unión leva–motor [Autores].
En la Figura C.2 se ven las gráficas que reflejan la medición anteriormente descrita
y en las ecuaciones (C.1), (C.2), (C.3), (C.4), (C.5), y (C.6) se expresa la aproximación
lineal que corresponde a cada gráfica. Con la cual puede calcularse el ciclo útil que se
requiere para que la hélice del servomotor se mueva a un grado deseado.
Debido a la disposición enfrentada de los servomotores los impares y los pares se mi-
den con los ángulos contrarios.
78
C.2. PWM necesario para cada servomotor
(a) (b)
25 25
20 20
% PWM
% PWM
15 15
10 10
5 5
0 0
-100 -50 0 50 100 50 100 150 200 250 300
Grados Grados
(c) (d)
25 25
20 20
% PWM
% PWM
15
15
10
5 10
0 5
-100 -50 0 50 100 50 100 150 200 250 300
Grados Grados
(e) (f)
25
20 20
% PWM
% PWM
15
15
10
10 5
5
-100 -50 0 50 100 100 150 200 250
Grados Grados
Figura C.2: Gráficas de funcionamiento de cada servomotor con respecto a la señal PWM necesaria
para producir un movimiento angular específico [Autores]. (a) Servomotor 1. (b) Servomotor 2. (c)
Servomotor 3. (d) Servomotor 4. (e) Servomotor 5. (f) Servomotor 6 [Autores].
79
Bibliografía
[1] Unknown. The mathematics of the stewart platform. Wokingham U3A Math
Group. [Online]. Available: https://web.archive.org/web/20130506134518/http:
//www.wokinghamu3a.org.uk/Maths%20of%20the%20Stewart%20Platform%
20v5.pdf
[2] R. Ajna and T. Hersan. (2014, Jul.) Controlling a stewart platform.
memememe. [Online]. Available: http://www.memememememememe.me/
controlling-stewart-platform/
[3] K. Ogata, Ingeniería de control Moderna, 3rd ed., P. Hall, Ed. Pearson, 1998.
[4] D. S. Naidu, Optimal Control Systems, S. Richard C. Dorf, Ed. CRC Press, 2003.
[5] M. Triantafyllou and F. Hover, Maneuvering and control of marine vehi-
cles. Department of Ocean Engineering, Mar. 2013, ch. 19. [On-
line]. Available: http://ocw.mit.edu/courses/mechanical-engineering/
2-154-maneuvering-and-control-of-surface-and-underwater-vehicles-13-49-fall-2004/
lecture-notes/1349_notes.pdf
[6] J. Gómez, Beneficios del Software Libre, U. de Manizales, Ed. Ventana Informática,
2003. [Online]. Available: http://issuu.com/cridumuniversidaddemanizales/
docs/04-beneficios-del-software-libre
[7] M. Lemos, M. Marques, G. Botura, and F. Soares, “Una pro-
puesta robusta e de bajo costo para ejecutar Robótica Educativa,”
Universidad Estadual Paulista Julio de Mesquita Filho, 2014. [Online]. Availa-
ble: https://www.academia.edu/14804078/Una_propuesta_robusta_e_de_bajo_
costo_para_ejecutar_Rob%C3%B3tica_Educativa
[8] Bitemark. Welcome to raspbian. [Online]. Available: http://www.raspbian.org/
[9] E. Bahit, Curso: Python para Principiantes. Eugenia Bahit, 2012.
[10] T. I. Incorporated, Ultra-Small, Low-Power, 16-Bit Analog-to-Digital Converter with
Internal Reference, Oct. 2009. [Online]. Available: http://www.ti.com/lit/ds/
symlink/ads1115.pdf
81
B IBLIOGRAFÍA
[14] F. Szufnarowski, “Stewart platform with fixed rotary actuators: a low cost
design study,” Bielefeld University, 2013. [Online]. Available: http://www.techfak.
uni-bielefeld.de/~fszufnar/publications/Szufnarowski2013.pdf
[16] AVR341: Four and five-wire Touch Screen Controller, Atmel Corporation, 2007.
[Online]. Available: http://www.atmel.com/Images/doc8091.pdf
82
Bibliografía
[23] A. Menéndez and S. Simón, Aportación al Control del Convertidor CC/CA de Tres
Niveles, Nov. 2004, ch. 5. [Online]. Available: http://www.tdx.cat/handle/10803/
6330
[25] O. H. Bosgra, H. Kwakernaak, and G. Meinsma, Design Methods for Control Sys-
tems, D. I. of Systems and Control, Eds. unknown, 2008.
[26] M. Rentsh, “Controlling a ball and plate process using computer vision,” Ph.D.
dissertation, Lund Institute of Technology, Mar. 1998.
[27] B. Nath, Numerical Methods for Linear Control Systems. Department of Mathemati-
cal Sciences, Northern Illinois University, 2004, ch. 12- State Estimation: Observer
and The Kalman Filter, pp. 469– 518.
[32] S. Kucuk, Serial and Parallel Robot Manipulators - Kinematics, Dynamics, Control
and Optimization. InTech, 2012, ch. 10, pp. 179–202. [Online]. Available:
http://cdn.intechopen.com/pdfs-wm/34400.pdf
83
B IBLIOGRAFÍA
requestedDomain=www.mathworks.com&requestedDomain=www.mathworks.
com
84