Phase 09 - Lesson 11
Transferência Sim-to-Real
This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.
Uma política treinada em um simulador que falha no hardware é uma política que memorizou o simulador. Randomização de domínio, adaptação de domínio e identificação de sistema são as três ferramentas para fazer com que controladores aprendidos cruzem a lacuna da realidade (reality gap).
Tipo: Learn Linguagens: Python Pré-requisitos: Phase 9 · 08 (PPO), Phase 2 · 10 (Bias/Variance) Tempo: ~45 minutos
O Problema
Treinar um robô real é lento, perigoso e caro. Um bípede leva milhões de episódios de treinamento para aprender a andar; um bípede real que cai apenas uma vez quebra o hardware. A simulação oferece reinicializações ilimitadas, reprodutibilidade determinante, ambientes paralelos e nenhum dano físico.
Mas os simuladores estão errados. Os rolamentos têm mais atrito do que os modelos do MuJoCo. As câmeras têm distorção de lente que o simulador não inclui. Os motores têm atrasos, folgas (backlash) e saturação que 99% dos modelos de simulação ignoram. Vento, poeira e iluminação variável sabotam uma política treinada em renderização estéril. A lacuna da realidade (reality gap) — a diferença sistemática entre a distribuição da simulação e a distribuição real — é o problema central do RL implantado para robótica.
Você precisa de uma política que seja robusta ao desvio de distribuição sim-to-real. Três abordagens históricas: randomizar o simulador (randomização de domínio), adaptar a política com um pouco de dados reais (adaptação de domínio / ajuste fino) ou identificar os parâmetros do sistema real e alinhá-los (identificação de sistema). Em 2026, a receita dominante combina os três com simulação paralela massiva (Isaac Sim, Isaac Lab, Mujoco MJX em GPU).
O Conceito
Randomização de Domínio (DR - Domain Randomization). Tobin et al. 2017, Peng et al. 2018. Durante o treinamento, randomiza-se cada parâmetro da simulação que possa diferir no robô real: massas, coeficientes de atrito, ganhos PD do motor, ruído do sensor, posição da câmera, iluminação, texturas, modelos de contato. A política aprende uma distribuição condicional sobre "em qual simulação ela está hoje" e se generaliza por todo o intervalo. Se o robô real estiver dentro do envelope de treinamento, a política funciona.
- Vantagem: nenhum dado real é necessário. Uma única receita, muitos robôs.
- Desvantagem: o treinamento excessivamente randomizado produz uma política "universal", mas excessivamente cautelosa. Ruído excessivo ≈ regularização excessiva.
Identificação de Sistema (SI - System Identification). Ajusta os parâmetros do simulador aos dados do mundo real antes do treinamento. Se você puder medir o atrito das articulações do braço no robô real, insira isso no simulador. Em seguida, treine uma política que espere esses valores. Requer acesso ao sistema real, mas reduz a lacuna da realidade diretamente.
- Vantagem: alvo de treinamento preciso e de baixo ruído.
- Desvantagem: o erro de modelo residual é invisível para a política; pequenos efeitos não identificados (por exemplo, zona morta do motor) ainda quebram a implantação.
Adaptação de Domínio. Treine na simulação, ajuste fino com uma pequena quantidade de dados reais. Duas vertentes:
- Real2Sim2Real: aprende um simulador residual
f(s, a, z) - f_sim(s, a)usando trajetórias reais, e treina no simulador corrigido. Fecha a lacuna sem precisar de muitos dados reais. - Adaptação de observação: treina uma política que mapeia obs reais → obs parecidas com a simulação por meio de um extrator de características aprendido (por exemplo, GAN pixel a pixel). O controlador permanece na simulação.
Aprendizado privilegiado / professor-aluno (teacher-student). Miki et al. 2022 (quadrúpede ANYmal). Treina um professor na simulação que tem acesso a informações privilegiadas (atrito real do solo, altura do terreno, desvio do IMU). Destila um aluno que vê apenas observações de sensores reais. O aluno aprende a inferir características privilegiadas a partir do histórico, mantendo-se robusto em relação aos parâmetros físicos.
Simulação massivamente paralela. 2024–2026. Isaac Lab, Mujoco MJX, Brax executam milhares de robôs paralelos em uma única GPU. O PPO com 4.096 humanoides paralelos coleta anos de experiência em horas. A "lacuna da realidade" encolhe à medida que a distribuição de treinamento se alarga; a DR torna-se quase gratuita quando cada um desses 4.096 ambientes possui diferentes parâmetros randomizados.
A receita do mundo real para 2026 (exemplo de caminhada de quadrúpede):
- Simulação massivamente paralela com gravidade, atrito, ganhos do motor e carga útil randomizados por domínio.
- Política do professor treinada com informações privilegiadas (mapa do terreno, velocidade real do corpo).
- Política do aluno destilada a partir do professor usando apenas propriocepção (codificadores das articulações das pernas).
- Adaptação de observação opcional via autoencoder no IMU real.
- Implantar. Zero-shot em mais de 10 ambientes. Se falhar, realize alguns minutos de ajuste fino no mundo real com PPO sob restrição de segurança.
Build It
Passo 1: simulação parametrizada
def step(state, action, slip):
if rng.random() < slip:
action = random_perpendicular(action)
...
slip é um parâmetro exposto pelo simulador. Na robótica real, poderia ser o atrito, a massa, o ganho do motor — qualquer coisa que varie entre a simulação e o mundo real.
Passo 2: treinar com DR
No início de cada episódio, amostre slip ~ Uniform[0.0, 0.4]. Treine PPO / Q-learning / qualquer outro algoritmo. Faça isso por muitos episódios.
Passo 3: avaliar zero-shot em deslizamentos (slips) "reais"
Avalie em slip ∈ {0.0, 0.1, 0.2, 0.3, 0.5, 0.7}. Os primeiros quatro estão dentro do suporte de treinamento; 0.5 e 0.7 estão fora. Uma política treinada com DR deve permanecer próxima do ideal dentro do suporte e degradar de forma suave fora dele. Uma política treinada com slip fixo será frágil fora do seu slip de treinamento.
Passo 4: comparar com treinamento restrito
Treine uma segunda política apenas com slip = 0.0. Avalie na mesma varredura de slip. Você deverá ver uma queda catastrófica assim que o slip real for > 0.
Pitfalls
- Randomização excessiva. Treine em
slip ∈ [0, 0.9]e sua política será tão avessa ao risco que nunca tentará o caminho ideal. Alinhe com a distribuição esperada do mundo real, não com um cenário onde "qualquer coisa pode acontecer". - Pouca randomização. Treine em uma faixa muito estreita e a política não conseguirá se generalizar. Use um currículo adaptativo (Randomização Automática de Domínio / Automatic Domain Randomization) que alarga a distribuição à medida que a política melhora.
- Espaço de parâmetros incorreto. Randomizar a coisa errada (a matiz da câmera quando a lacuna real é o atraso do motor) fará com que a DR não ajude. Faça o perfil (profile) do robô real primeiro.
- Vazamento de informações privilegiadas. Um professor que usa o estado global para ações, e não apenas observações, pode produzir um aluno incapaz de alcançá-lo. Garanta que a política do professor seja realizável pelo aluno a partir do histórico de observações.
- Falha na transferência sim-to-sim. Se a sua política não for robusta a uma variante de simulação mais difícil, ela também não será robusta no mundo real. Sempre teste em uma variante de simulação separada (held-out) antes de implantar.
- Ausência de um envelope de segurança no mundo real. Uma política que funciona na simulação e "funciona no mundo real" sem um escudo de segurança de baixo nível ainda pode quebrar o hardware. Adicione limites de taxa, limites de torque e limites de articulação em um controlador não aprendido.
Use It
A pilha (stack) sim-to-real de 2026:
| Domínio | Stack |
|---|---|
| Locomoção com pernas (ANYmal, Spot, humanoide) | Isaac Lab + DR + professor / aluno privilegiado |
| Manipulação (mãos destras, pick-and-place) | Isaac Lab + DR + DR-GAN para visão |
| Condução autônoma | CARLA / NVIDIA DRIVE Sim + DR + ajuste fino real |
| Corrida de drones | RotorS / Flightmare + DR + adaptação online |
| Manipulação na mão (in-hand manipulation) | OpenAI Dactyl (DR em escala sem precedentes) |
| Braços industriais | MuJoCo-Warp + SI + pequeno ajuste fino real |
Para controle em todas as escalas, o fluxo de trabalho é consistente: ajuste a simulação o melhor que puder, randomize o que você não conseguir ajustar, treine políticas enormes, destile e implante com um escudo de segurança.
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.
Exercícios
- Fácil. Treine um agente de Q-learning no GridWorld com slip fixo (slip=0.0). Avalie em slip ∈ {0.0, 0.1, 0.3, 0.5}. Plote o retorno vs slip.
- Médio. Treine um agente de Q-learning com DR amostrando
slip ~ Uniform[0, 0.3]. Avalie na mesma varredura. Quanto a DR ajuda com slip=0.5 (fora de distribuição)? - Difícil. Implemente um currículo: comece com slip=0.0, alargue a faixa de DR toda vez que a política atingir 90% do ideal. Meça o total de passos no ambiente para atingir slip=0.3 zero-shot em comparação com uma linha de base (baseline) de DR fixa.
Termos-Chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| Lacuna da realidade (Reality gap) | "Diferença sim-to-real" | Desvio de distribuição entre a física/sensoriamento do treinamento e as condições de implantação real. |
| Randomização de domínio (DR) | "Treinar em vários simuladores aleatórios" | Randomizar parâmetros de simulação durante o treinamento para que a política se generalize. |
| Identificação de sistema (SI) | "Medir o real e ajustar o simulador" | Estimar parâmetros físicos reais; configurar o simulador para corresponder. |
| Adaptação de domínio | "Ajustar com dados reais (fine-tune)" | Pequeno ajuste fino no mundo real após o treinamento na simulação; pode adaptar observações ou dinâmica. |
| Informações privilegiadas | "Verdade básica (ground truth) para o professor" | Informações que apenas o simulador possui; o aluno deve inferi-las a partir do histórico de observações. |
| Professor/aluno | "Destilar do privilegiado -> observável" | Professor treinado com atalhos; aluno aprende a imitá-lo sem eles. |
| ADR | "Randomização Automática de Domínio" | Currículo que amplia as faixas de DR à medida que a política melhora. |
| Real2Sim | "Fechar a lacuna com dados reais" | Aprender um residual para fazer o simulador imitar execuções (rollouts) reais. |
Leitura Adicional
- Tobin et al. (2017). Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World — o artigo original sobre DR (visão para robótica).
- Peng et al. (2018). Sim-to-Real Transfer of Robotic Control with Dynamics Randomization — DR para dinâmica, locomoção quadrúpede.
- OpenAI et al. (2019). Solving Rubik's Cube with a Robot Hand — Dactyl, ADR em escala.
- Miki et al. (2022). Learning robust perceptive locomotion for quadrupedal robots in the wild — professor-aluno para o ANYmal.
- Makoviychuk et al. (2021). Isaac Gym: High Performance GPU Based Physics Simulation for Robot Learning — o simulador massivamente paralelo que impulsiona as implantações 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 — a estrutura Dyna (uso de um modelo para planejamento + execuções) que sustenta os pipelines modernos de sim-to-real.
- Zhao, Queralta & Westerlund (2020). Sim-to-Real Transfer in Deep Reinforcement Learning for Robotics: a Survey — taxonomia de métodos sim-to-real com resultados de benchmark.