A ponte mais difícil da robótica moderna: como transferir habilidades do simulador para o robô real. Domain randomization, system identification e o loop real-to-sim-to-real que alimenta os robôs de produção da NVIDIA, Figure e Physical Intelligence.
O reality gap é a diferença entre o comportamento de um robô no simulador e no mundo real. Uma política perfeita em sim pode falhar 100% no real — e entender por quê é o ponto de partida de todo sim-to-real sólido.
Grid de tipos de gapDomain randomization varia sistematicamente os parâmetros do simulador a cada episódio. A política é forçada a generalizar porque nunca vê o mesmo cenário duas vezes — a realidade se torna apenas mais um "domínio" que o modelo aprendeu a lidar.
Box dica práticaA OpenAI usou domain randomization para resolver o Cubo de Rubik com mão robótica Dexterous (2019) — 200+ parâmetros randomizados, 13K years de experiência em sim. A NVIDIA usa em Isaac Lab para humanoides. Sem DR, políticas overfitam na aparência do simulador e falham catastroficamente no real.
# Visual DR — randomiza aparência
visual_dr:
texture_randomization: true # texturas aleatórias em cada objeto
background_color: [0.1, 0.9] # range de luminosidade do fundo
light_intensity: [0.5, 1.5] # posição e intensidade das luzes
camera_position_noise: 0.02 # ruído na posição da câmera (m)
# Physics DR — randomiza dinâmica
physics_dr:
object_mass: [0.7, 1.3] # ±30% na massa dos objetos
friction_coefficient: [0.5, 1.5] # ±50% no coeficiente de atrito
joint_damping: [0.8, 1.2] # amortecimento das juntas
action_delay_steps: [1, 3] # delay de 1 a 3 steps nos comandos
# ADR — Automatic Domain Randomization
adr:
enabled: true
performance_threshold: 0.85 # aumenta ranges quando perf > 85%
range_increment: 0.05 # incremento gradual dos ranges
System identification (sysid) é o processo de medir os parâmetros físicos reais do robô — massas, inércias, atrito, rigidez — e configurar o simulador para matchá-los. Em vez de randomizar tudo, você calibra o sim para ser o mais próximo possível do real.
Timeline do processo sysidExecuta trajetórias específicas (sinusoidais, step) no robô real e registra posições, velocidades e torques com alta frequência. Esse dataset vai alimentar a otimização.
Usa Bayesian Optimization ou gradient descent para encontrar os parâmetros do sim (massas, fricções, damping) que minimizam a diferença entre trajetória real e simulada.
Uma rede neural aprende a diferença residual entre o sim calibrado e o real — capturando efeitos que equações físicas não modelam bem, como hysteresis e compliance de cabos.
Domain randomization com ranges muito amplos degrada performance. SysId permite usar ranges estreitos centrados nos valores reais — robustez de DR com a precisão de sysid. Pipeline ideal: sysid primeiro para calibrar o centro, DR depois para robustez ao redor desse centro.
O pipeline completo de sim-to-real transfer envolve treinamento com DR/sysid, validação sim-to-sim, deploy progressivo com safety constraints e iteração com dados reais. É o gargalo de toda robótica baseada em aprendizado.
Grid Fazer vs Evitarclass ActionSmoother:
"""Filtro EMA para suavizar comandos e evitar movimentos bruscos."""
def __init__(self, alpha: float = 0.7):
self.alpha = alpha # 0.7 = suave; 1.0 = sem filtro
self.prev_action = None
def __call__(self, raw_action):
if self.prev_action is None:
self.prev_action = raw_action
return raw_action
# Exponential Moving Average
smoothed = self.alpha * raw_action + (1 - self.alpha) * self.prev_action
self.prev_action = smoothed
return smoothed
# Uso no loop de controle
smoother = ActionSmoother(alpha=0.7)
while True:
obs = robot.get_observation()
raw_action = policy(obs)
safe_action = smoother(raw_action)
robot.execute(np.clip(safe_action, -v_max, v_max))
Um único pass de sim-to-real raramente é suficiente. O loop real-to-sim-to-real é iterativo: coleta dados no robô real, usa esses dados para calibrar e melhorar o simulador, re-treina a política no sim melhorado, e deploya novamente. Cada ciclo melhora tanto o sim quanto a política.
SVG meio: Data Flywheel Conceitos data flywheel Dica industrialFigure, NVIDIA e Physical Intelligence rodam dezenas de iterações real-to-sim-to-real antes de declarar um comportamento "production-ready". Um único pass de sim-to-real é sempre o ponto de partida, nunca o ponto de chegada.
Os marcos do sim-to-real provam que a abordagem funciona para tarefas de complexidade extrema. As lições aprendidas nesses projetos são diretamente aplicáveis a qualquer pipeline VLA.
Timeline de casosO marco fundador: mão robótica resolvia Rubik's Cube com ADR massivo.
Treinamento paralelo massivo em Isaac Sim para robôs humanoides.
Validação de VLAs em sim antes do deploy — correlação alta com performance real.
Diga a resposta em voz alta antes de revelar — recordar é o que fixa, não releituras.
Reality gap tem 4 dimensões— visual, dinâmica, sensor e atuador. Cada uma exige técnicas específicas para ser mitigada.
Domain randomization + SysId— a combinação é mais poderosa do que cada técnica isolada: sysid calibra o centro, DR cobre a incerteza ao redor.
Deploy progressivo e safety-first— sim → sim-sim → real limitado → real completo. Action smoothing e force limits são obrigatórios.
Real-to-sim-to-real é iterativo— o data flywheel é o que diferencia projetos amadoras de robôs de produção industrial.