Phase 09 - Lesson 11
Transferencia Sim-to-Real
This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.
Una política entrenada en un simulador que falla en el hardware es una política que memorizó el simulador. La aleatorización de dominio, la adaptación de dominio y la identificación de sistemas son las tres herramientas para hacer que los controladores aprendidos superen la brecha de la realidad (reality gap).
Tipo: Learn Idiomas: Python Prerrequisitos: Phase 9 · 08 (PPO), Phase 2 · 10 (Bias/Variance) Tiempo: ~45 minutos
El Problema
Entrenar un robot real es lento, peligroso y costoso. Un bípedo requiere millones de episodios de entrenamiento para aprender a caminar; un bípedo real que se cae aunque sea una sola vez rompe el hardware. La simulación ofrece reinicios ilimitados, reproducibilidad de manera determinante, entornos paralelos y ningún daño físico.
Pero los simuladores se equivocan. Los rodamientos tienen más fricción que los modelos de MuJoCo. Las cámaras tienen distorción de lente que el simulador no incluye. Los motores tienen retrasos, holguras (backlash) y saturación que el 99% de los modelos de simulación omiten. El viento, el polvo y la iluminación variable sabotean una política entrenada en una renderización estéril. La brecha de la realidad (reality gap) — la diferencia sistemática entre la distribución de la simulación y la distribución real — es el problema central del RL implementado para la robótica.
Necesitas una política que sea robusta al desvío de distribución sim-to-real. Tres enfoques históricos: aleatorizar el simulador (aleatorización de dominio), adaptar la política con un poco de datos reales (adaptación de dominio / ajuste fino) o identificar los parámetros del sistema real y emparejarlos (identificación de sistemas). En 2026, la receta dominante combina los tres con simulación paralela masiva (Isaac Sim, Isaac Lab, Mujoco MJX en GPU).
El Concepto
Aleatorización de Dominio (DR - Domain Randomization). Tobin et al. 2017, Peng et al. 2018. Durante el entrenamiento, se aleatoriza cada parámetro del simulador que pueda diferir en el robot real: masas, coeficientes de fricción, ganancias PD del motor, ruido de los sensores, posición de la cámara, iluminación, texturas, modelos de contacto. La política aprende una distribución condicional sobre "en qué simulación se encuentra hoy" y se generaliza a lo largo de todo el rango. Si el robot real cae dentro del límite de entrenamiento, la política funciona.
- Ventaja: no se necesitan datos reales. Una sola receta, muchos robots.
- Desventaja: el entrenamiento con exceso de aleatorización produce una política "universal" pero demasiado cautelosa. Demasiado ruido ≈ demasiada regularización.
Identificación de Sistemas (SI - System Identification). Ajusta los parámetros del simulador a los datos del mundo real antes del entrenamiento. Si puedes medir la fricción de las articulaciones del brazo en el robot real, introduce ese valor en el simulador. Luego, entrena una política que espere esos valores. Requiere acceso al sistema real pero reduce directamente la brecha de la realidad.
- Ventaja: objetivo de entrenamiento preciso y de bajo ruido.
- Desventaja: el error residual del modelo es invisible para la política; los pequeños efectos no identificados (por ejemplo, la zona muerta del motor) siguen afectando la implementación.
Adaptación de Dominio. Entrena en el simulador, realiza un ajuste fino con una pequeña cantidad de datos reales. Dos variantes:
- Real2Sim2Real: aprende un simulador residual
f(s, a, z) - f_sim(s, a)usando trayectorias reales, entrena en el simulador corregido. Cierra la brecha sin requerir muchos datos reales. - Adaptación de observaciones: entrena una política que mapea observaciones reales → observaciones similares a las de la simulación mediante un extractor de características aprendido (por ejemplo, GAN pixel a pixel). El controlador permanece en el simulador.
Aprendizaje privilegiado / maestro-estudiante (teacher-student). Miki et al. 2022 (cuadrúpedo ANYmal). Entrena a un maestro en simulación que tiene acceso a información privilegiada (fricción real, altura del terreno, desviación del IMU). Destila un estudiante que solo ve observaciones de sensores reales. El estudiante aprende a inferir características privilegiadas a partir del historial, manteniéndose robusto frente a los parámetros físicos.
Simulación masivamente paralela. 2024–2026. Isaac Lab, Mujoco MJX, Brax ejecutan miles de robots paralelos en una sola GPU. PPO con 4,096 humanoides paralelos acumula años de experiencia en horas. La "brecha de la realidad" se reduce a medida que se amplía la distribución de entrenamiento; la DR se vuelve casi gratuita cuando cada uno de esos 4,096 entornos tiene parámetros aleatorizados diferentes.
La receta del mundo real para 2026 (ejemplo de caminata de cuadrúpedo):
- Simulación masivamente paralela con gravedad, fricción, ganancias del motor y carga útil aleatorizadas por dominio.
- Política del maestro entrenada con información privilegiada (mapa del terreno, velocidad real del cuerpo).
- Política del estudiante destilada del maestro utilizando únicamente propiocepción (codificadores de las articulaciones de las patas).
- Adaptación de observaciones opcional mediante un autoencoder en el IMU real.
- Implementar. Zero-shot en más de 10 entornos. Si falla, realiza unos minutos de ajuste fino en el mundo real con PPO bajo restricciones de seguridad.
Build It
Paso 1: simulación parametrizada
def step(state, action, slip):
if rng.random() < slip:
action = random_perpendicular(action)
...
slip es un parámetro que expone el simulador. En la robótica real, podría ser la fricción, la masa, la ganancia del motor — cualquier cosa que varíe entre la simulación y el mundo real.
Paso 2: entrenar con DR
Al inicio de cada episodio, genera una muestra de slip ~ Uniform[0.0, 0.4]. Entrena PPO / Q-learning / lo que sea. Haz esto durante muchos episodios.
Paso 3: evaluar zero-shot en deslizamientos (slips) "reales"
Evalúa en slip ∈ {0.0, 0.1, 0.2, 0.3, 0.5, 0.7}. Los primeros cuatro se encuentran dentro del soporte de entrenamiento; 0.5 y 0.7 están fuera de él. Una política entrenada con DR debería mantenerse casi óptima dentro del soporte y degradarse gradualmente fuera de él. Una política entrenada con un slip fijo será frágil fuera de su nivel de entrenamiento.
Paso 4: comparar con el entrenamiento restringido
Entrena una segunda política únicamente con slip = 0.0. Evalúa con el mismo barrido de slip. Deberías ver una caída catastrófica tan pronto como el slip real sea > 0.
Pitfalls
- Demasiada aleatorización. Entrena en
slip ∈ [0, 0.9]y tu política será tan aversa al riesgo que nunca intentará la ruta óptima. Ajusta a la distribución esperada del mundo real, no a un escenario de "cualquier cosa podría pasar". - Muy poca aleatorización. Entrena en una franja estrecha y la política no podrá generalizar en absoluto. Utiliza un currículo adaptativo (Aleatorización Automática de Dominio / Automatic Domain Randomization) que amplíe la distribución a medida que la política mejore.
- Espacio de parámetros mal identificado. Aleatorizar la variable incorrecta (el tono de la cámara cuando la brecha real es el retraso del motor) hace que la DR no sirva de nada. Realiza un perfil (profile) del robot real primero.
- Filtración de información privilegiada. Un maestro que utiliza el estado global para tomar acciones, y no solo observaciones, puede producir un estudiante que no logre estar a la altura. Asegúrate de que la política del maestro sea realizable por el estudiante a partir de su historial de observaciones.
- Fallo en la transferencia sim-to-sim. Si tu política no es robusta ante una variante de simulación más difícil, tampoco lo será ante el mundo real. Prueba siempre en una variante de simulación reservada (held-out) antes de implementarla.
- Sin envoltura de seguridad en el mundo real. Una política que funciona en el simulador y "funciona en la realidad" sin un escudo de seguridad de bajo nivel de todos modos puede dañar el hardware. Añade límites de tasa, límites de torque y límites de articulación en un controlador no aprendido.
Use It
La pila (stack) sim-to-real en 2026:
| Dominio | Stack |
|---|---|
| Locomoción con patas (ANYmal, Spot, humanoide) | Isaac Lab + DR + maestro / estudiante privilegiado |
| Manipulación (manos diestras, pick-and-place) | Isaac Lab + DR + DR-GAN para visión |
| Conducción autónoma | CARLA / NVIDIA DRIVE Sim + DR + ajuste fino real |
| Carreras de drones | RotorS / Flightmare + DR + adaptación en línea |
| Manipulación en la mano (in-hand manipulation) | OpenAI Dactyl (DR a una escala sin precedentes) |
| Brazos industriales | MuJoCo-Warp + SI + pequeño ajuste fino real |
Para el control a cualquier escala, el flujo de trabajo es constante: ajusta el simulador lo mejor que puedas, aleatoriza lo que no puedas ajustar, entrena políticas masivas, destila e implementa con un escudo de seguridad.
Ship It
Save as outputs/skill-sim2real-planner.md:
---
name: sim2real-planner
description: Plan a sim-to-real transfer pipeline for a given robot + task, covering DR, SI, and safety.
version: 1.0.0
phase: 9
lesson: 11
tags: [rl, sim2real, robotics, domain-randomization]
---
Given a robot platform, a task, and access to real hardware time, output:
1. Reality gap inventory. Suspected sources ranked by expected impact (contact, sensing, actuation delay, vision).
2. DR parameters. Exact list, ranges, distribution. Justify each range against real measurements.
3. SI steps. Which parameters to measure; measurement method.
4. Teacher/student split. What privileged info the teacher uses; what obs the student uses.
5. Safety envelope. Low-level limits, emergency stops, backup controller.
Refuse to deploy without (a) a zero-shot sim-variant test, (b) a safety shield, (c) a rollback plan. Flag any DR range wider than 3× measured real variability as likely over-randomized.
Ejercicios
- Fácil. Entrena un agente de Q-learning en el GridWorld con slip fijo (slip=0.0). Evalúa en slip ∈ {0.0, 0.1, 0.3, 0.5}. Grafica el retorno vs. slip.
- Medio. Entrena un agente de Q-learning con DR generando muestras de
slip ~ Uniform[0, 0.3]. Evalúa en el mismo barrido. ¿Cuánto aporta la DR cuando el slip=0.5 (fuera de distribución)? - Difícil. Implementa un currículo: comienza con slip=0.0, amplía el rango de DR cada vez que la política alcance el 90% del óptimo. Mide el total de pasos en el entorno para alcanzar slip=0.3 de forma zero-shot en comparación con una línea base (baseline) de DR fija.
Términos Clave
| Término | Lo que dice la gente | Lo que realmente significa |
|---|---|---|
| Brecha de la realidad (Reality gap) | "Diferencia sim-to-real" | Desvío de distribución entre la física/sensoriamento del entrenamiento y las condiciones de la implementación real. |
| Aleatorización de dominio (DR) | "Entrenar en simuladores aleatorios" | Aleatorizar parámetros de simulación durante el entrenamiento para que la política se generalize. |
| Identificación de sistemas (SI) | "Medir lo real y ajustar el simulador" | Estimar parámetros físicos reales; configurar el simulador para que coincida. |
| Adaptación de dominio | "Ajustar con datos reales (fine-tune)" | Pequeño ajuste fino en el mundo real tras el entrenamiento en simulación; puede adaptar observaciones o dinámica. |
| Información privilegiada | "Verdad básica (ground truth) para el maestro" | Información que solo posee el simulador; el estudiante debe inferirla a partir del historial de observaciones. |
| Maestro/estudiante | "Destilar de privilegiado -> observable" | Maestro entrenado con atajos; el estudiante aprende a imitarlo sin ellos. |
| ADR | "Aleatorización Automática de Dominio" | Currículo que amplía los rangos de DR a medida que la política mejora. |
| Real2Sim | "Cerrar la brecha con datos reales" | Aprender un residuo para hacer que el simulador imite trayectorias (rollouts) reales. |
Lectura Adicional
- Tobin et al. (2017). Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World — el artículo original sobre DR (visión para robótica).
- Peng et al. (2018). Sim-to-Real Transfer of Robotic Control with Dynamics Randomization — DR para dinámica, locomoción cuadrúpeda.
- OpenAI et al. (2019). Solving Rubik's Cube with a Robot Hand — Dactyl, ADR a escala.
- Miki et al. (2022). Learning robust perceptive locomotion for quadrupedal robots in the wild — maestro-estudiante para ANYmal.
- Makoviychuk et al. (2021). Isaac Gym: High Performance GPU Based Physics Simulation for Robot Learning — el simulador masivamente paralelo que impulsa las implementaciones de 2025–2026.
- Akkaya et al. (2019). Automatic Domain Randomization — método de currículo ADR.
- Sutton & Barto (2018). Ch. 8 — Planning and Learning with Tabular Methods — el marco conceptual de Dyna (usar un modelo para planificación + trayectorias) que sustenta los pipelines modernos de sim-to-real.
- Zhao, Queralta & Westerlund (2020). Sim-to-Real Transfer in Deep Reinforcement Learning for Robotics: a Survey — taxonomía de métodos sim-to-real con resultados de benchmark.