Domain Randomization
- Detto anche: DR, sim-to-real randomization
- Categoria: Learning & autonomy › RL & simulation
- Tag: sim-to-real, transfer-learning, simulation, reinforcement-learning, robot-learning, generalization
Tecnica di trasferimento sim-to-real che addestra in simulazione gli algoritmi di apprendimento robotico con aspetto visivo, parametri fisici e condizioni ambientali fortemente randomizzati.
Definizione
La domain randomization è una tecnica usata nell'apprendimento robotico per colmare il divario tra gli ambienti di addestramento simulati e il mondo reale. Invece di cercare di rendere le simulazioni perfettamente realistiche (cosa estremamente difficile), la domain randomization adotta l'approccio opposto: durante l'addestramento fa variare deliberatamente i parametri della simulazione su un ampio intervallo, così che la policy appresa diventi robusta a queste variazioni. Quando la policy viene impiegata su un robot reale, il mondo reale appare semplicemente come un'ulteriore variazione che rientra nella distribuzione già sperimentata.
La tecnica è stata resa popolare da ricercatori di OpenAI e NVIDIA intorno al 2017-2018 ed è diventata un componente standard delle pipeline di trasferimento sim-to-real. La domain randomization si può applicare alle proprietà visive (illuminazione, texture, colori, posizioni della telecamera, aspetto degli oggetti), ai parametri fisici (attrito, massa, smorzamento, ritardi dei motori, rumore dei sensori) e alle condizioni ambientali (posizioni degli oggetti, oggetti di disturbo, scene di sfondo). Addestrando su migliaia di variazioni casuali, la policy appresa non può fare affidamento su alcun dettaglio visivo o fisico specifico ed è costretta ad apprendere caratteristiche e comportamenti generalizzabili.
La domain randomization visiva è particolarmente efficace per i compiti basati sulla percezione. Un robot addestrato a rilevare oggetti con immagini renderizzate con texture, condizioni di illuminazione e angolazioni della telecamera casuali apprende caratteristiche che si trasferiscono alle telecamere reali senza aver mai visto un'immagine reale durante l'addestramento. Questo elimina la necessità di grandi dataset del mondo reale, costosi e lunghi da raccogliere in robotica.
La domain randomization fisica affronta il reality gap nella dinamica, cioè il fatto che la fisica simulata non corrisponde mai perfettamente a quella reale. Variando durante l'addestramento i coefficienti di attrito, le masse degli oggetti, i ritardi degli attuatori e i parametri di contatto, la policy impara a essere robusta alla fisica specifica (e sconosciuta) del robot reale. Questo è particolarmente importante per i compiti di manipolazione e di locomozione, dove la dinamica dei contatti è difficile da modellare con precisione.
Il limite principale della domain randomization è che una randomizzazione eccessivamente ampia può rendere il problema di apprendimento troppo difficile, producendo policy robuste ma subottimali: funzionano in modo accettabile ovunque, ma in modo eccellente da nessuna parte. Approcci più sofisticati come la domain adaptation e l'identificazione del sistema possono integrare la domain randomization restringendo l'intervallo di randomizzazione sulla base di dati di calibrazione reali.
Perché è importante
La domain randomization ha risolto uno dei maggiori problemi pratici dell'apprendimento robotico: come addestrare in simulazione e impiegare su hardware reale senza che la policy fallisca per le imprecisioni della simulazione. Ha reso possibili risultati storici come la mano robotica di OpenAI che risolve il cubo di Rubik e ha fatto del trasferimento sim-to-real un approccio ingegneristico praticabile anziché una curiosità di ricerca.
Applicazioni principali
- Manipolazione fine: addestrare mani robotiche in simulazione a manipolare oggetti nel mondo reale
- Locomozione con zampe: apprendere policy di camminata che si trasferiscono dalla simulazione a quadrupedi fisici
- Rilevamento visivo di oggetti: addestrare modelli di percezione su immagini sintetiche randomizzate che funzionano con telecamere reali
- Navigazione dei droni: apprendere policy di evitamento degli ostacoli che si trasferiscono da ambienti simulati randomizzati
- Presa e pick-and-place: addestrare policy di presa robuste alle variazioni di forma, posizione e superficie degli oggetti
- Compiti di assemblaggio: apprendere una manipolazione ricca di contatti che si trasferisce nonostante una simulazione fisica imperfetta
In pratica
Una tipica pipeline di domain randomization per addestrare una policy di presa robotica funziona così: in un simulatore fisico come Isaac Gym o MuJoCo, centinaia di ambienti paralleli girano contemporaneamente. In ogni ambiente un oggetto viene posto su un tavolo con posizione, orientamento, massa, attrito e aspetto visivo casuali. Il robot tenta di afferrarlo con illuminazione, rumore della telecamera e ritardo degli attuatori casuali. Nel corso di milioni di episodi attraverso tutte queste variazioni, la policy impara ad afferrare in modo affidabile indipendentemente dalle condizioni specifiche.
Il lavoro storico di OpenAI del 2019, che ha risolto il cubo di Rubik con una mano robotica, ha usato una domain randomization aggressiva, facendo variare durante l'addestramento 37 parametri fisici e decine di parametri visivi. La policy risultante si è trasferita su un vero robot Shadow Hand ed è riuscita a risolvere il cubo pur non essendo mai stata addestrata su dati del mondo reale. Questa dimostrazione ha convinto buona parte della comunità robotica che la domain randomization fosse uno strumento ingegneristico pratico e non solo un espediente di ricerca.
Idee sbagliate comuni
- La domain randomization rende irrilevante la precisione della simulazione: serve comunque un realismo di base; la randomizzazione colma un divario, non un abisso
- Più randomizzazione è sempre meglio: una randomizzazione eccessiva rende impossibile l'apprendimento o produce policy troppo conservative
- La domain randomization si applica solo all'apprendimento per rinforzo: è altrettanto utile per l'apprendimento supervisionato, l'apprendimento per imitazione e l'addestramento della percezione
- Dopo la domain randomization serve sempre un fine-tuning nel mondo reale: molte policy si trasferiscono zero-shot (senza addestramento nel mondo reale) quando la randomizzazione è ben progettata
Chi dovrebbe saperlo
- Ricercatori di apprendimento robotico che lavorano sul trasferimento sim-to-real
- Ingegneri di visione artificiale che addestrano modelli di percezione con dati sintetici
- Professionisti dell'apprendimento per rinforzo che applicano l'RL a robot fisici
- Ingegneri di simulazione che progettano ambienti di addestramento per l'apprendimento robotico
- Studenti di robotica che esplorano l'intersezione tra IA e sistemi fisici
Tecnologie correlate
- Trasferimento sim-to-real
- Domain adaptation
- Identificazione del sistema
- Isaac Gym
- MuJoCo
- Generazione procedurale
Progetti correlati
- GENESIS: World's fastest physics engine: 43M FPS for embodied AI learning
- LeRobot: HuggingFace ML library for real-world robotics in PyTorch
- MuJoCo: DeepMind physics engine for robotics and ML research
- PyBullet: Python physics simulator for robotics and RL research with fast CPU-based simulation
- OpenPI: Physical Intelligence VLA foundation models for general robot control
- Microduck: Pollen Robotics' $399 walking duck robot: open-source software, closed hardware
Video
- Lecture 22 Sim2Real and Domain Randomization -- CS287-FA19 Advanced Robotics at UC Berkeley: Pieter Abbeel