Parte: 11 — IA encarnada, robótica y uso de computadores
Nivel: experto · Horas estimadas: 6
Laboratorio: robotics · Estado: EXECUTABLE_CORE
Comprender control clásico y control aprendido dentro de la evolución de la inteligencia artificial, implementar un experimento mínimo verificable y distinguir qué parte constituye evidencia frente a una afirmación todavía no comprobada.
Al finalizar podrás:
- Explicar control clásico y control aprendido usando los conceptos
PID,control,policy,stability. - Ejecutar el laboratorio con una semilla explícita y revisar su contrato JSON.
- Identificar al menos un supuesto, una limitación y un riesgo de aplicación.
- Comparar el enfoque con la etapa anterior de la ruta de aprendizaje.
- Producir una evidencia reproducible y una conclusión que no exceda los datos.
PID, control, policy, stability
La planificación (clase 139) produce trayectorias; el control es quien las ejecuta cientos de veces por segundo contra la física real. El PID — formulado hace un siglo — sigue gobernando la inmensa mayoría de lazos industriales, y entender por qué funciona (y cuándo no) es requisito para apreciar qué aporta el control aprendido por refuerzo, que hoy domina en locomoción de cuadrúpedos y manipulación diestra. Esta clase une la robótica con la Parte de RL del programa: una política aprendida es un controlador.
Un controlador recibe una referencia r(t) (consigna) y el estado medido
y(t), calcula el error e(t) = r(t) − y(t) y produce una acción u(t) que
empuja el sistema hacia la referencia. Métricas del lazo: tiempo de subida,
sobreimpulso (overshoot), tiempo de asentamiento y error estacionario.
u(t) = Kp·e(t) + Ki·∫e(τ)dτ + Kd·de/dt
forma discreta (periodo Δt):
u_k = Kp·e_k + Ki·Σ(e_i·Δt) + Kd·(e_k − e_{k−1})/Δt
- P: reacciona al error presente. Solo-P deja error estacionario ante perturbaciones constantes (necesita error para generar acción) y demasiado Kp produce oscilación.
- I: acumula el pasado y elimina el error estacionario; en exceso causa sobreimpulso y windup (la integral se satura durante transitorios largos y luego descarga de golpe — se mitiga con anti-windup: limitar la integral).
- D: anticipa el futuro con la pendiente del error; amortigua oscilaciones, pero amplifica el ruido de medición (en la práctica se filtra o se deriva la medición, no el error).
Sintonización: reglas empíricas (Ziegler-Nichols: subir Kp hasta
oscilación sostenida en Ku con periodo Tu; usar Kp=0.6Ku, Ki=1.2Ku/Tu, Kd=0.075Ku·Tu), o iterar P→PD→PID validando cada métrica. El ejemplo
trabajado muestra la iteración manual completa.
PID es lineal, monovariable (SISO) y sin modelo: excelente para lazos individuales (temperatura, velocidad de una rueda), insuficiente cuando hay fuertes acoplamientos no lineales (un cuadrúpedo con 12 articulaciones y contactos intermitentes), restricciones activas o dinámica difícil de modelar. El escalón intermedio es el control con modelo (LQR: óptimo para dinámica lineal y coste cuadrático; MPC: optimiza en horizonte con restricciones).
Una política π(a|s) entrenada con refuerzo (PPO, SAC) reemplaza al
controlador: el "diseño" se convierte en la definición de la función de
recompensa y del entorno de entrenamiento (simulación masiva, luego
sim-to-real — clase 142). Ventajas: maneja no linealidades, contactos y alta
dimensión; descubre estrategias no obvias. Costes: sin garantías formales de
estabilidad, hambre de datos, riesgo de reward hacking, y comportamiento
pobre fuera de la distribución de entrenamiento. El patrón operativo actual es
híbrido: la política RL genera consignas de alto nivel y PIDs de bajo
nivel las ejecutan en cada articulación, con envolventes de seguridad clásicas
alrededor (límites de par, watchdogs).
Control de velocidad de crucero simplificado. Dinámica discreta
(Δt = 0.1 s): v_{k+1} = v_k + 0.1·(u_k − 0.5·v_k) (el término −0.5·v
es la fricción). Referencia r = 10 m/s, v_0 = 0.
Intento 1 — solo P, Kp = 1: en equilibrio u = 0.5·v (la acción debe
compensar la fricción). Con u = 1·e: e = 0.5·v ⇒ 10 − v = 0.5·v ⇒ v_∞ = 6.67 m/s. Error estacionario de 3.33 m/s: el P solo llega donde el
error genera exactamente la acción que pide la fricción.
Intento 2 — Kp = 5: 10 − v = 0.1·v ⇒ v_∞ = 9.09. Menos error (0.91)
pero respuesta más brusca; con Kp muy grande y Δt finito el lazo discreto
llega a oscilar. Subir la ganancia reduce el error estacionario pero nunca
lo elimina.
Intento 3 — PI, Kp = 2, Ki = 1: la integral acumula el error y aporta en
equilibrio exactamente u = 0.5·10 = 5 con e = 0. El error estacionario
desaparece; aparece un ligero sobreimpulso (~5-10 %) mientras la integral se
descarga. Si se observa windup al arrancar desde v=0 (integral crece durante
todo el transitorio), se limita la integral o se congela mientras |e| es
grande.
Intento 4 — PID, añadir Kd = 0.5: el término derivativo frena la
aproximación y recorta el sobreimpulso a ~1-2 % con tiempo de asentamiento
similar. Este es el flujo de sintonización manual estándar: P para velocidad
de respuesta, I para el error final, D para amortiguar.
| Enfoque | Modelo requerido | Garantías | No linealidad / contactos | Coste de diseño | Uso típico |
|---|---|---|---|---|---|
| PID | Ninguno | Empíricas (por lazo) | Pobre | Horas | 90 % de lazos industriales |
| LQR | Lineal exacto | Óptimo (coste cuadrático) | No | Días (modelado) | Estabilización local |
| MPC | Modelo + restricciones | Restricciones garantizadas | Media | Semanas | Automoción, química |
| Política RL | Simulador | Ninguna formal | Excelente | Semanas + GPU | Locomoción, manipulación |
| Híbrido RL+PID | Simulador + lazos | Envolvente clásica | Excelente | Semanas | Cuadrúpedos comerciales |
flowchart LR
R[Referencia r] --> E((e = r − y))
E --> P[Kp·e]
E --> I[Ki·∫e dt<br/>+ anti-windup]
E --> D[Kd·de/dt<br/>+ filtro de ruido]
P --> SUM((Σ))
I --> SUM
D --> SUM
SUM -->|u| PLANT[Planta<br/>robot / motor]
PLANT -->|y medido| SENS[Sensor + ruido]
SENS --> E
- "Subiendo Kp lo suficiente desaparece el error estacionario." Solo lo reduce asintóticamente; eliminarlo ante perturbación constante requiere el término integral (o feedforward).
- "El término D predice el futuro del sistema." Solo extrapola la pendiente del error; con medición ruidosa esa pendiente es basura amplificada — de ahí que muchos lazos industriales sean solo PI.
- "Una política RL entrenada es estable." No hay garantía formal; la estabilidad empírica en simulación no se transfiere automáticamente al hardware ni a estados fuera de distribución.
- "PID está obsoleto frente a RL." Los robots comerciales con RL lo usan encima de PIDs articulares; el clásico ejecuta, el aprendido decide.
- "Sintonizar = probar valores al azar." Existe una lógica causal: P marca la agresividad, I el régimen final, D el amortiguamiento; cada síntoma (oscilación, error residual, sobreimpulso) señala el término a tocar.
Entre este modelo didáctico y un controlador desplegado median: identificación del sistema real (retardos, saturaciones, zonas muertas que el modelo lineal ignora), ejecución con periodo garantizado (RT, prioridades), anti-windup y bumpless transfer entre modos manual/automático, límites de seguridad independientes del controlador (clase 143) y, para políticas RL, validación sim-to-real con randomización de dominio (clase 142) más un plan de reversión a control clásico cuando la política sale de su envolvente validada.
python lab.pyEl laboratorio llama a ai_evolution.labs.run_lab("robotics"). Esta
decisión evita 183 implementaciones divergentes: cada clase tiene un entrypoint
propio, pero los motores didácticos se prueban como una biblioteca común.
- tipo de laboratorio y semilla;
- entradas o decisiones observables;
- resultado estructurado;
- lista
evidencecon hechos que pueden inspeccionarse; - lista
limitationsque impide presentar la demo como producción.
- 📓
notebook.ipynb: recorrido guiado con la materia resumida. - ✍️
notebook_student.ipynb: ejercicios para resolver. - ✅
notebook_solution.ipynb: solución de referencia explicada.
| Criterio | Peso |
|---|---|
| Comprensión conceptual | 25 % |
| Ejecución reproducible | 25 % |
| Interpretación basada en evidencia | 25 % |
| Riesgos, límites y mejora propuesta | 25 % |
Consulta assessment.md para preguntas y criterio de aceptación.
| Síntoma | Causa probable | Corrección |
|---|---|---|
| El código corre, pero no hay conclusión | Se confundió ejecución con aprendizaje | Explica qué demuestra y qué no demuestra |
| El resultado cambia sin explicación | No se registró semilla o configuración | Conserva semilla, versión y parámetros |
| Se promete uso real | Se extrapoló desde una demo educativa | Declara entorno, datos, límites y revisión humana |
| Se copia una métrica aislada | No existe baseline ni costo de error | Añade comparación y criterio de decisión |
¿Debo usar una API comercial?
No. El núcleo funciona localmente. Las extensiones LIVE se documentan por separado.
¿El laboratorio representa una implementación industrial?
No por sí solo. Enseña el contrato y el patrón; producción exige integración,
seguridad, observabilidad, pruebas y operación.
¿Dónde profundizo?
Revisa las especializaciones enlazadas en el README raíz y la ruta siguiente.
- Åström, K. J. & Murray, R. M. Feedback Systems: An Introduction for Scientists and Engineers — PDF oficial gratuito (Caltech) — uso: referencia consultada en su fuente original
- Gymnasium — entornos de control clásico (CartPole, Pendulum) para practicar control aprendido — uso: referencia consultada en su fuente original
- Sutton, R. & Barto, A. Reinforcement Learning: An Introduction, 2e — caps. 13 y 16 (políticas y aplicaciones de control) — uso: desarrollo extendido del tema
- Hwangbo, J. et al. (2019). Learning agile and dynamic motor skills for legged robots. Science Robotics. arXiv:1901.08652 — uso: fuente primaria del mecanismo estudiado
- Siciliano, B. & Khatib, O. (eds.). Springer Handbook of Robotics, 2e — parte B, Design y Control — uso: referencia consultada en su fuente original
- ros2_control — documentación oficial — uso: referencia consultada en su fuente original
Bloque generado por
python scripts/link_papers_to_classes.py. La fuente espapers/catalog/papers.json.
| Paper | Año | Qué desbloqueó | Miniatura |
|---|---|---|---|
| P102 · Algoritmos de optimización proximal de políticas | 2017 | Consigue la estabilidad de TRPO con una función objetivo que se implementa en unas líneas y se optimiza con descenso de gradiente corriente. | notebook |
Cada ficha explica el problema anterior, la matemática mínima, los límites y los errores de atribución más frecuentes. Para leerlas con método: cómo leer un paper de IA · anexos matemáticos.
Bloque generado por
python scripts/link_sources_to_classes.py. Cada obra lleva su localizador verificado ensources/bibliography.json.
Los papers dicen de dónde salió el mecanismo. Estas obras lo desarrollan con el espacio que una clase no tiene: teoría completa, demostraciones y ejercicios.
| Obra | Edición | Localizador | Papel en esta clase |
|---|---|---|---|
| Sutton, Richard S. y Barto, Andrew G. — Reinforcement Learning: An Introduction | 2.ª · 2018 | ISBN 9780262039246 · web de la obra | citada en las referencias de esta clase · caps. 13 y 16 |
| Sebastian Thrun — Probabilistic Robotics | 2005 | ISBN 9780262201629 · web de la obra | obra de referencia de la parte 11 · toda la parte |