01Gancho
Tu robot ve la línea a la derecha (p = +0.4). ¿Cuánto más rápido debe ir la rueda izquierda que la derecha para volver a centrarla?
02Concepto
El arreglo de sensores te da la posición de la línea p. Si la quieres centrada, el error del controlador es directamente e = p: positivo con la línea a la derecha, negativo a la izquierda.
El controlador convierte el error en una acción de control u, en rad/s, y la reparte entre las ruedas: ω_L = ω_base + u y ω_R = ω_base − u. Las ruedas mueven al robot, el robot mueve el arreglo y el arreglo mide un nuevo error. Ese circuito es un lazo cerrado.
El controlador más simple es el on/off: gira siempre con la misma corrección u_0, hacia el lado que marca el signo del error. Nunca manda u = 0, así que incluso con la línea centrada el robot gira hacia un lado, la cruza y gira hacia el otro. La oscilación es permanente.
El control proporcional corrige en proporción al error: u = K_p·e. Error pequeño, corrección pequeña. Con los datos del gancho y K_p = 8 rad/s, u = 8·0.4 = 3.2 rad/s: la rueda izquierda va 2u = 6.4 rad/s más rápido que la derecha.
La ganancia K_p decide el comportamiento. Con K_p bajo, el robot corrige despacio y en una curva el error crece hasta que la línea sale del arreglo. Con K_p alto, oscila: el motor no cambia de velocidad al instante, la corrección llega tarde y el robot cruza la línea antes de que termine.
K_p tampoco puede crecer sin límite. La rueda rápida pide ω_base + K_p·|e|, y ninguna rueda gira más rápido que ω_max. Para no saturar con el error más grande, ω_base + K_p·|e|_max ≤ ω_max.
Lo que corrige al robot es su velocidad angular. Según la cinemática directa, ω = (ω_R − ω_L)·r/L = −2·u·r/L. Con u positiva, ω es negativa: el robot gira a la derecha, hacia la línea.
03Fórmulas
e· error del controlador · —p· posición de la línea bajo el arreglo, en [−1, 1] · —
u· acción de control · rad/su_0· amplitud del control on/off · rad/se· error del controlador · —
u· acción de control · rad/sK_p· ganancia proporcional · rad/se· error del controlador · —
ω_L,ω_R· velocidad angular de rueda izquierda y derecha · rad/sω_base· velocidad base de las ruedas · rad/su· acción de control · rad/s
ω· velocidad angular del robot · rad/sω_L,ω_R· velocidad angular de rueda izquierda y derecha · rad/sr· radio de rueda · mL· distancia entre ruedas · mu· acción de control · rad/s
K_p· ganancia proporcional · rad/sω_max· velocidad angular máxima de la rueda · rad/sω_base· velocidad base de las ruedas · rad/s|e|_max· error máximo considerado · —
04Explora
El robot de referencia sigue la pista Óvalo con control proporcional, K_p = 8 y velocidad base ω_base = 15 rad/s. La escena muestra la pista, el robot con sus sensores y la traza que deja; las gráficas muestran el error e y la velocidad angular ω del robot en el tiempo.
CambiaK_p de 8 a 2Observala primera curva en la escena
¿Por qué el robot se sale?
Ver la respuesta
En la curva el robot necesita una ω que, con u = K_p·e, solo aparece con un error grande. Con K_p = 2 el error crece hasta que la línea sale del arreglo, a t ≈ 1.59 s. Con K_p = 8 el mismo giro pide un error cuatro veces menor, y el robot da 2 vueltas en 15 s (≈ 6.04 s y ≈ 5.85 s) sin perderla.
CambiaK_p a 20Observala gráfica del error en las rectas
¿Por qué oscila de lado a lado?
Ver la respuesta
El motor tarda en cambiar de velocidad, así que la corrección llega tarde y el robot cruza la línea antes de que termine. En los primeros 5 s el error cambia de signo 10 veces, frente a 4 con K_p = 8. En la 2.ª vuelta la oscilación saca al robot de la línea, a t ≈ 7.9 s.
Cambiael controlador a On/off y «Corrección» u_0 de 4 a 8 rad/sObservala traza en la escena y la gráfica del error
¿Por qué hay zigzag permanente aunque la recta sea perfecta?
Ver la respuesta
On/off siempre manda ±u_0 y nunca u = 0, así que el robot cruza la línea una y otra vez: 25 cambios de signo en 15 s, un RMS del error de 0.32 (RMS: el error típico, la raíz de la media de los cuadrados) y una vuelta de ≈ 8.86 s sin perder la línea. Con u_0 = 4 rad/s la conmutación es tan rápida que el motor la suaviza y el error apenas se ve (RMS 0.003). Con u_0 ≥ 8.5 rad/s el zigzag crece hasta perder la línea.
Al cambiar de controlador, el widget vuelve a los valores por defecto del nuevo (ω_base = 10 rad/s, u_0 = 4 rad/s). Por eso on/off va al final.
05Al robot
Vuelve al gancho con tu robot. Con K_p = 8 y e = 0.4, la acción de control es u = 3.2 rad/s, y con ω_base = 15 rad/s los comandos de rueda son:
Estos comandos no dependen de tu robot. La velocidad angular que producen sí, porque depende del radio de rueda r y de la distancia entre ruedas L de tu perfil de «Mi robot»:
Con el robot de referencia, ω = −1.365 rad/s: gira a la derecha, hacia la línea.
La ganancia máxima sin saturar depende de ω_max, que sale de las rpm del motor y de la reducción de tu perfil. Con ω_base = 15 rad/s y |e|_max = 1:
Si tu perfil no es un robot móvil, los dos cálculos usan el robot de referencia. Si su ω_max no supera ω_base = 15 rad/s, ninguna K_p positiva evita saturar y el cálculo de K_p máxima también usa el robot de referencia.
Con el robot de referencia, K_p ≤ 5.94. El K_p = 8 de Explora la supera: con la línea en el borde del arreglo, la rueda rápida pediría 15 + 8 = 23 rad/s, más de los 20.94 rad/s que da. La rueda solo satura cuando |e| supera (20.94 − 15)/8 = 0.74.
06Verifica
E1Tu robot sigue la línea con control proporcional: K_p = 3.000 rad/s, error e = −0.9200 y velocidad base ω_base = 13.50 rad/s. ¿Cuánto valen la acción de control u y las velocidades de rueda ω_L y ω_R, en rad/s?obligatorio
E2Tu controlador manda ω_L = 13.78 rad/s a la rueda izquierda y ω_R = 1.220 rad/s a la derecha. Con r = 0.032 m y L = 0.15 m, ¿cuál es la velocidad angular ω del robot, en rad/s?obligatorio
E3Tu robot tiene ω_max = 20.94 rad/s y sigue la línea con ω_base = 7.000 rad/s. Con |e|_max = 1, ¿cuál es la K_p máxima, en rad/s, para que ninguna rueda sature?obligatorio
07Profundiza
- Åström, K. J. y Murray, R. M. Feedback Systems. An Introduction for Scientists and Engineers, 2.ª ed. Princeton University Press, 2021. ISBN 978-0-691-19398-4. Cap. 11, "PID Control".