Control continuo
El control continuo opera con señales que varían de forma suave en el tiempo. Utiliza ecuaciones diferenciales para modelar el comportamiento de sistemas dinámicos. Las señales de los sensores usados son analógicas con valores en un rango continuo, el principal controlador usado se conoce como PID que es controlador por retroalimentación más usado en la industria.
Control Lógico
Sección titulada «Control Lógico»A diferencial del control continuo, el control lógico se basa en reglas discretas de verdadero/falso (1/0). Trabaja con estados bien definidos y transiciones entre ellos, para estos:
- Las señales discretas o binarias
- Usa lógica booleana: AND, OR, NOT
- Se implementa principalmente usando autómatas/máquinas de estados finitos (MEF)
Los sistemas modernos frecuentemente combinan ambos enfoques: lógica para decisiones secuenciales y control continuo para regular variables analógicas.
Control PID
Sección titulada «Control PID»El controlador PID es un mecanismo de retroalimentación que ajusta continuamente la entrada del sistema para minimizar el error entre el valor deseado y el valor actual. Cada letra representa un componente:
- la P (Proporcional) genera una acción proporcional al error presente
- la I (Integral) acumula errores históricos para eliminar desviaciones persistentes
- la D (Derivativa) anticipa cambios futuros del error basándose en su tasa de cambio.
La combinación de estos tres términos permite que el PID mantenga el sistema estable y cercano al punto de referencia deseado.
1. Ejemplo
Sección titulada «1. Ejemplo»Para el ejemplo con el LEGO usaremos inicialmente un control proporcional. Para este necesitaremos la camára conectada al mismo wifi del PC y el LEGO emparejado al PC.
Preguntas
Sección titulada «Preguntas»- ¿Porqué el robot no se alinea con el centro de la imagen?
- ¿Qué haria falta?
2. Ejercicio
Sección titulada «2. Ejercicio»Usar el siguiente código en para el LEGO y probar el seguimiento de linea.
Cuando usemos el código, variar con la flecha del teclado lo siguiente:
- Aumentar el valor de la velocidad translacional
- Aumentar el valor de la ganancia proporcional
Preguntas
Sección titulada «Preguntas»- ¿Qué ocurre en cada caso, al aumentar y al diminuir los valores?
Explicación del PID
Sección titulada «Explicación del PID»Ver el siguiente vídeo del MIT sobre el control PID en vehículos autónomos
Paso a Paso
Sección titulada «Paso a Paso»Paso 1 — Instalar las librerías
pip install ev3-dc thread_task scipy matplotlib keyboardev3-dc controla el EV3 por Bluetooth, como en la semana 12; thread_task ejecuta la orden de los motores cada 0.1 s en paralelo con la cámara, y keyboard lee las flechas del teclado en el ejercicio.
Paso 2 — Conectar el EV3 y la cámara
- Encienda el EV3 y verifique que está emparejado por Bluetooth con el PC, como en la semana 12.
- Inicie la cámara del celular y compruebe la IP con C01 (práctica 1).
- Tenga a mano la dirección MAC de su ladrillo y los valores de radio de rueda y trocha calibrados de su robot.
Paso 3 — Configurar C04
Descargue C04-control-P-rotational-speed.py y llene los dos bloques del inicio:
MAC = '00:16:53:50:8A:86'RADIUS_WHEEL = 0.0210TREAD_DISTANCE = 0.1224TRANSLATIONAL_SPEED = 0.0MAC: la dirección del ladrillo.RADIUS_WHEEL: el radio calibrado de la rueda, en metros.TREAD_DISTANCE: la trocha calibrada, es decir, la distancia completa entre las ruedas, en metros.TRANSLATIONAL_SPEED: la velocidad de avance en m/s. Déjela en0.0para el paso 4.- Los datos de la cámara (llene
IP,PUERTOeIPHONE, igual que en C01) y la rotación de la imagen, si en la práctica 1 tuvo que cambiarla.
Paso 4 — Girar hacia la línea
-
Pegue una tira de cinta negra en el piso y ponga el robot encima, con la cinta desviada hacia un lado de la imagen.
-
Ejecute C04 con
TRANSLATIONAL_SPEED = 0.0: sin velocidad de avance, el robot solo gira buscando centrar la línea. -
Observe la ventana de video: la línea vertical roja oscura es el centro de la imagen y el punto es el centro de la línea.
-
Para medir cuánto queda desalineado, agregue después del cálculo de
vr_newuna línea que imprima los dos valores:print(f"error_x = {error_x:.0f} px vr = {vr_new:.2f}") -
Repita el experimento desde varias posiciones iniciales, a ambos lados, y anote el error final en cada caso.
-
Presione q en la ventana de video para detener el programa; el robot frena antes de terminar.
Paso 5 — Responder las preguntas del ejemplo
Con los errores finales que anotó, responda las preguntas del ejemplo 1. Pistas para pensar:
- ¿Qué valor le llega al motor cuando
Kp * error_xes menor que 1? Revise qué haceint()dentro deupdate_speed_turn. - ¿Qué término del PID está pensado justamente para el error que se queda?
Paso 6 — Seguir la línea con el teclado (C05)
-
Descargue C05-control-P-rotational-speed-keyboard.py y haga los mismos cambios del paso 3.
-
Arme un recorrido con cinta negra que tenga al menos una recta y una curva.
-
Ejecute el programa. El robot arranca con
vt = 0yKp = 0.05. Las flechas cambian los valores mientras el programa corre, y cada cambio se imprime en la terminal:Tecla Efecto ↑ / ↓ sube / baja la velocidad de avance en 5 ← / → sube / baja la ganancia en 0.01 -
Observe la ventana de gráficas. Abajo está la gráfica temporal del control: la referencia (línea azul punteada, el centro de la imagen) y la medida (línea roja, el centro de la cinta) durante los últimos 20 segundos. La distancia entre las dos es el error que corrige el control P.
-
Suba poco a poco hasta que el robot avance siguiendo la cinta.
-
Con fijo, pruebe varias ganancias, por ejemplo 0.02, 0.05, 0.1 y 0.2. Anote en una tabla si el robot sigue la línea, si oscila o si la pierde en la curva, y describa cómo se ve la medida en la gráfica temporal: ¿se acerca a la referencia?, ¿se queda separada?, ¿oscila alrededor de ella?
-
Repita con una mayor y compare.
Paso 7 — Ver el video y cerrar
- Vea el video del MIT de la actividad 3.
- Con su tabla del paso 6, responda las preguntas del ejercicio: qué pasa al subir y al bajar cada valor, y por qué una velocidad mayor exige ajustar la ganancia.