MÓDULO 2.3 · VLA / ROBÓTICA

️ Simuladores: MuJoCo, Isaac Sim, PyBullet

Treinar robôs sem quebrar nada: simulação física de alta fidelidade para VLA. MuJoCo a 2.7M steps/s, Isaac Sim com ray-tracing a 94k FPS, e PyBullet para prototipagem rápida — cada um com seu nicho.

1

⚡ MuJoCo: 2.7M steps/s, o padrão acadêmico

O simulador de física mais rápido para treinamento de RL e políticas VLA em CPU.

Conceito principal

MuJoCo (Multi-Joint dynamics with Contact) é um motor de física otimizado para simulação de contato entre corpos rígidos e articulações. Adquirido pelo Google DeepMind em 2021 e liberado como open-source (Apache 2), processa 2.7 milhões de steps por segundo em CPU — tornando viável treinar políticas VLA com milhões de episódios em horas.

Grid ✓/✗

✓ Quando usar MuJoCo

  • ✓ Reproduzir papers acadêmicos (dm_control, Gymnasium)
  • ✓ Treinar RL em escala massiva em CPU
  • ✓ Simular manipulação com contato suave e preciso
  • ✓ Usar MJX para GPU paralela (JAX backend)

✗ Quando NÃO usar MuJoCo

  • ✗ Precisar de renderização fotorrealística para sim-to-real visual
  • ✗ Simular sensores LiDAR/câmera depth nativos
  • ✗ Integrar diretamente com ROS2 sem bridge
  • ✗ Simular fluidos ou materiais deformáveis
Conceitos-chave grid
2

🎮 NVIDIA Isaac Sim: 94k FPS, ray-tracing

Simulação fotorrealística para sim-to-real de alta fidelidade — o ambiente do GR00T N1.

Box de dado/pesquisa
📊

Número que importa: 94.000 FPS

Isaac Sim roda a 94.000 frames por segundo com ray-tracing em GPU NVIDIA A100. Isso significa que 1 hora de GPU equivale a ~26 horas de simulação em tempo real — viabilizando domain randomization com texturas fotorrealísticas em escala. O GR00T N1 da NVIDIA foi treinado inteiramente neste ambiente.

Isaac Sim é a plataforma de simulação robótica da NVIDIA construída sobre Omniverse e PhysX 5. Oferece renderização fotorrealística em tempo real e pode simular milhares de robôs em paralelo usando GPU.

Timeline de evolução

Evolução da plataforma

2020

Isaac Gym (descontinuado)

Primeiro ambiente de RL massivamente paralelo em GPU da NVIDIA. Precursor do Isaac Sim, sem renderização fotorrealística.

2022

Isaac Sim + Omniverse

Integração com USD (Universal Scene Description) e ray-tracing RTX em tempo real. PhysX 5 com simulação de GPU acelerada.

2024

Isaac Lab + GR00T N1

Framework unificado de RL/IL sobre Isaac Sim. Ambiente de treinamento do modelo GR00T N1 — humanóide foundation model da NVIDIA.

Conceitos-chave grid
Omniverse USD Formato universal de cena 3D
PhysX 5 Física GPU-accelerated
Isaac Lab Framework RL/IL unificado
OmniGraph Lógica visual (node graph)
ROS2 bridge Integração nativa com ROS2
RTX ray-tracing 94k FPS em A100
3

🐍 PyBullet: leve e open-source

Um simulador funcional em qualquer laptop — o caminho mais rápido para rodar sua primeira política.

Box código
import pybullet as p import pybullet_data # 1. Conectar ao simulador p.connect(p.GUI) # ou p.DIRECT para headless p.setAdditionalSearchPath(pybullet_data.getDataPath()) # 2. Configurar física p.setGravity(0, 0, -9.81) plane = p.loadURDF("plane.urdf") # 3. Carregar robô robot = p.loadURDF("kuka/kuka.urdf", basePosition=[0, 0, 0]) # 4. Loop de simulação for _ in range(1000): p.stepSimulation() joint_state = p.getJointState(robot, 0) p.disconnect()

PyBullet é o wrapper Python do Bullet Physics Engine. Com um simples pip install pybullet, você tem simulação 3D com URDF loader, detecção de colisão e constraints — ideal para prototipar políticas antes de migrar para simuladores mais pesados.

Tip box
💡

Dica: headless para treinamento

Use p.connect(p.DIRECT) em vez de p.GUI para treinar sem display — até 10× mais rápido pois não renderiza frames. Reserve GUI para debugging visual.

Conceitos-chave
4

🔗 Gazebo + ROS2: integração nativa

O simulador que fala ROS2 nativamente — código do sim e do robô real são quase idênticos.

SVG inline — diagrama Gazebo ↔ ROS2
Gazebo box Gazebo (gz-sim) 📷 Camera plugin 📡 LiDAR plugin 🧲 IMU plugin SDF world files Simulação de sensores reais Bridge ros_gz_bridge Gz ↔ ROS2 Topics ROS2 bus ROS2 Nodes 🧠 VLA inference node 🔄 TF2 transformer 🦾 MoveIt2 planner 🤖 ros2_control Mesmo código → robô real Setas

Gazebo (agora "Gz") é o simulador integrado ao ecossistema ROS2. Diferente de MuJoCo (focado em RL), Gazebo simula sensores reais — câmeras depth, LiDAR, IMU — e se comunica com ROS2 via topics nativamente através do ros_gz_bridge.

Grid ✓/✗

✓ Vantagens do Gazebo

  • ✓ Código ROS2 idêntico no sim e no robô real
  • ✓ Sensores virtuais (câmera, LiDAR, IMU) embutidos
  • ✓ Gazebo Fuel: repositório de modelos 3D prontos
  • ✓ Integração nativa com Nav2 e MoveIt2

✗ Limitações

  • ✗ Mais lento que MuJoCo para RL em escala
  • ✗ Renderização não fotorrealística (vs Isaac Sim)
  • ✗ Configuração mais trabalhosa (SDF + plugins)
  • ✗ Gzebo clássico vs Gz (incompatibilidades)
Conceitos-chave
5

🎲 Domain Randomization: variabilidade para transferência

A técnica que viabilizou o primeiro sim-to-real bem-sucedido em larga escala.

Conceito principal

Domain randomization varia aleatoriamente parâmetros do simulador — texturas, iluminação, massas, fricção, cores — durante o treinamento. A política aprende a ser robusta às variações em vez de memorizar o ambiente perfeito do sim. Foi a técnica que permitiu à OpenAI ensinar um robô a resolver o cubo de Rubik em 2019.

Timeline de tipos de randomização

Tipos de randomização

👁️

Visual Randomization

Varia texturas de objetos, cor do fundo, posição e intensidade de luzes, tipo de câmera. A política não deve depender de cores específicas para reconhecer um objeto.

⚖️

Physics Randomization

Varia massa dos objetos, coeficiente de fricção, damping das juntas, latência do atuador. Simula a imprecisão do mundo real onde parâmetros físicos nunca são exatos.

📈

ADR — Automatic Domain Randomization

Curriculum automático: começa com variações pequenas e aumenta progressivamente conforme a política melhora. Implementado pela OpenAI para o projeto Dactyl (mão robótica).

Tip box
💡

Dica: começa simples, escala depois

Não randomize tudo de uma vez — a política pode não convergir. Comece com randomização visual mínima (cor do fundo), valide que a política ainda aprende, depois adicione física. Use ADR para automatizar esse curriculum.

Conceitos-chave
6

🔄 Sim-to-sim: validação antes do real

Teste em 2 simuladores diferentes antes de arriscar hardware caro — uma validação barata e poderosa.

Sim-to-sim é a prática de transferir uma política treinada em um simulador (ex: MuJoCo) para outro simulador com física diferente (ex: Isaac Sim) como etapa intermediária. Se a política falha em outro sim, vai falhar no robô real — mas você descobriu isso sem quebrar nada.

Box código — conversão MJCF → USD
# URDF → MJCF (MuJoCo) python -m mujoco.mjcf.convert robot.urdf robot.xml # URDF → USD (Isaac Sim / Omniverse) from omni.isaac.urdf import _urdf urdf_interface = _urdf.acquire_urdf_interface() urdf_interface.parse_urdf(urdf_path, dest_path) # Benchmark cross-simulator com SIMPLER python eval_simpler.py \ --policy checkpoint.pt \ --env SimplerEnv-MuJoCo \ --n_eval_episodes 50 # Mesmo benchmark em Isaac Sim python eval_simpler.py \ --policy checkpoint.pt \ --env SimplerEnv-IsaacSim \ --n_eval_episodes 50
Grid ✓/✗ diagnóstico

✓ Sinais de política robusta

  • ✓ Success rate semelhante em MuJoCo e Isaac Sim
  • ✓ Comportamento consistente com diferentes texturas
  • ✓ Tolerance intervals se sobrepõem entre sims
  • ✓ Falhas são distribuídas aleatoriamente, não sistemáticas

✗ Sinais de overfitting ao sim

  • ✗ 90% sucesso no MuJoCo, 20% no Isaac Sim
  • ✗ Política pára no mesmo frame toda vez no 2º sim
  • ✗ Falhas consistentes ao mudar textura do objeto
  • ✗ Comportamento diferente com mesmo URDF/MJCF
Tip box
💡

Protocolo mínimo de validação

Use sempre N ≥ 50 episódios por ambiente para calcular intervalos de confiança (95%). Com N < 20, a variância é tão alta que você pode confundir sorte com robustez. Registre vídeos de episódios falhos — eles revelam padrões que métricas não capturam.

Conceitos-chave

Recall check

0 of …

Diga a resposta em voz alta antes de revelar — recordar é o que fixa, não releituras.

  1. MuJoCo = velocidade— 2.7M steps/s em CPU, padrão acadêmico, pré-requisito para reproduzir papers de RL e benchmarks Gymnasium.

  2. Isaac Sim = fidelidade— 94k FPS com ray-tracing, PhysX 5 e integração ROS2 nativa; escolha para sim-to-real visual de alta qualidade.

  3. Domain randomization é obrigatória— sem variar texturas, massas e iluminação, políticas overfitam no sim e falham catastroficamente no real.

  4. Sim-to-sim antes do real— valide em 2+ simuladores com N ≥ 50 episódios antes de arriscar hardware caro; falhas sistemáticas revelam fragilidades.