Domain Randomization: la técnica que hace que los robots aprendan en simulación y funcionen en el mundo real
Al entrenar un robot con parámetros de simulación aleatorios, la realidad se vuelve solo otro caso más que el algoritmo ya conoce.

Domain Randomization es la idea de no intentar igualar a la perfección el entorno simulado con el real, sino de aleatorizar los parámetros de la simulación hasta que la realidad resulte ser simplemente otro caso dentro de la distribución que el agente ya ha visto. Es una de las técnicas de mayor impacto en el aprendizaje sim‑to‑real y se puede integrar de forma sencilla en cualquier pipeline que use MuJoCo u otro simulador.
¿Qué se randomiza?
- Visuales: colores, texturas, iluminación y distorsión de la cámara.
- Dinámicas: fricción, masa, amortiguación y ganancias de los actuadores.
- Sensores y latencia: ruido en imágenes y estados, y retrasos variables.
- Posición de la cámara: pequeñas variaciones en el montaje.
El código muestra funciones que, en cada reset o step, alteran estos atributos usando distribuciones uniformes o normales. El entorno resultante, DomainRandomizedEnv, aplica la randomización en cada episodio, garantizando que la política se entrenará con una amplia variedad de escenarios.
¿Cuánta randomización?
La pregunta central es el ajuste de la escala. Demasiado poco no cubre la variabilidad real; demasiado mucho vuelve la tarea tan impredecible que la política no aprende nada útil. Una estrategia práctica es:
- Comenzar con rangos estrechos alrededor de los valores óptimos identificados por el sistema.
- Entrenar y evaluar en simulación, verificando que la política siga resolviendo la tarea.
- Ampliar gradualmente los rangos, reentrenar y revaluar hasta que el rendimiento en sim se degrade.
- Probar la política final en hardware real y compararla con un baseline no randomizado.
El código incluye una función randomization_sweep que prueba diferentes escalas de randomización y reporta la tasa de éxito en sim. Además, se sugiere un enfoque de curriculum, donde la randomización se aumenta progresivamente a medida que la política mejora.
Por qué importa
Implementar domain randomization permite a los equipos de desarrollo de robots evitar el tedioso ajuste fino de modelos físicos y de sensores. Con un entrenamiento en simulación que ya cubre la variabilidad real, el salto a hardware real se vuelve mucho más suave, reduciendo costes y tiempo de despliegue. Los ingenieros pueden enfocarse en el diseño de políticas en lugar de en la calibración de cada sensor.
Próximos pasos
Para integrar esta técnica, basta con añadir las funciones de randomización a tu pipeline de MuJoCo y configurar el entorno DomainRandomizedEnv. Si tu proyecto ya tiene una base de datos de simulaciones, simplemente expande los rangos de los parámetros y observa cómo mejora la robustez en hardware real.


