← Voltar à Trilha 2 MÓDULO 2.3

🌐 Simuladores: MuJoCo, Isaac Sim, Habitat

Dados reais são caros e perigosos; simulação é barata, segura e paralelizável em milhares de ambientes. Aqui você compara MuJoCo/MJX, Isaac Sim/Lab e Habitat, entende o gap sim-real e mede generalização em LIBERO e Meta-World.

6
Tópicos
45
Minutos
Inter.
Nível
Prática
Tipo

Conteúdo detalhado

N envs paralelos na GPU → uma política env 1 env 2 env 3 … env N Política batched rollout Update grad / RL
1

🔹 Por que simular: barato, seguro, paralelo, reset infinito

Cada demo real exige um humano, um robô e tempo de relógio. Em simulação, um cluster gera milhões de trajetórias de madrugada, sem desgaste mecânico nem colisões caras. Crucial para RL, que precisa de ordens de magnitude mais interações do que imitação.

📊 As quatro vantagens

  • Custo — sem hardware desgastando, sem operador humano por trajetória.
  • Segurança — políticas ruins quebram pixels, não atuadores.
  • Paralelismo — milhares de envs simultâneos na GPU.
  • Reset infinito — ground-truth de estado, randomização programática, replay.

⚡ Dica prática

Sim não substitui o real — complementa. A receita vencedora é sim para volume + RL e real para fine-tuning final com poucas demos. Tentar transferir 100% do sim sem dado real costuma frustrar.

Custo

Dados quase grátis.

Segurança

Falha sem dano físico.

Paralelismo

Milhares de envs.

Ground truth

Estado exato disponível.

2

🔹 MuJoCo / MJX: contato preciso e física diferenciável

MuJoCo (Multi-Joint dynamics with Contact, hoje open-source pela DeepMind) é referência em física de contato e atrito para manipulação. MJX reimplementa o solver em JAX, rodando milhares de simulações em GPU/TPU com vmap e gradientes via grad — abrindo otimização diferenciável de trajetória.

pip install mujoco mujoco-mjx jax[cuda12]

import mujoco, mujoco.mjx as mjx, jax
model = mujoco.MjModel.from_xml_path("scene.xml")   # MJCF
mx = mjx.put_model(model)

@jax.vmap                       # 4096 mundos em paralelo
def step(state, ctrl):
    data = mjx.step(mx, state.replace(ctrl=ctrl))
    return data
# jax.grad(step) -> física diferenciável

⚡ Dica prática

Cenas em MuJoCo são MJCF (XML). Comece com os modelos do mujoco_menagerie (Franka, ALOHA, mãos) em vez de modelar do zero — geometria de colisão errada é a causa nº 1 de física instável.

MuJoCo

Contato preciso.

MJX

JAX, vmap em GPU.

Diferenciável

Gradiente da dinâmica.

MJCF

Cena em XML.

3

🔹 NVIDIA Isaac Sim / Isaac Lab: GPU sim com RTX

Isaac Sim (sobre Omniverse/PhysX 5) entrega física e renderização RTX na GPU; Isaac Lab é o framework de RL/aprendizado em cima dele, rodando milhares de ambientes paralelos sem sair da GPU — observações, física e política convivem na mesma VRAM, eliminando o gargalo CPU↔GPU.

📊 Por que escala

  • PhysX 5 na GPU — milhares de envs, sem ida-e-volta para a CPU.
  • RTX — renderização fotorrealista útil para sim-to-real visual.
  • USD/OpenUSD — formato de cena interoperável e modular.
  • Sensores — câmeras, LiDAR e RGB-D sintéticos prontos.

✓ Fazer

  • Usar Isaac Lab para RL massivo (locomoção, whole-body).
  • Aproveitar RTX para domain randomization visual.
  • Conferir requisitos de GPU NVIDIA + drivers antes de começar.

✗ Evitar

  • Esperar rodar Isaac Sim em hardware não-NVIDIA.
  • Confundir fotorrealismo com fidelidade física.
  • Ignorar o custo de setup; MuJoCo é mais leve para protótipo.

Isaac Sim

Omniverse + PhysX 5.

Isaac Lab

Framework de RL.

RTX

Render fotorrealista.

OpenUSD

Cena interoperável.

4

🔹 Habitat e cia: navegação e embodied QA

Habitat (Meta) foca em ambientes 3D fotorrealistas para navegação e embodied question answering — o agente se move por cenas escaneadas (HM3D, Matterport) respondendo "onde está a chave?". É outro ponto do espectro: menos manipulação de contato, mais percepção espacial e exploração.

📊 Espectro de simuladores

  • MuJoCo — contato/manipulação, física fina.
  • Isaac Sim — escala + RTX, locomoção e manipulação.
  • Habitat — navegação, EQA, cenas reais escaneadas.
  • Genesis / SAPIEN — novas opções 2024-26, velocidade e articulados.
import habitat_sim
cfg = habitat_sim.SimulatorConfiguration()
cfg.scene_id = "data/scene_datasets/hm3d/00800-TEEsavR23oF.glb"
sim = habitat_sim.Simulator(habitat_sim.Configuration(cfg, [agent_cfg]))
obs = sim.step("move_forward")   # navegação em cena escaneada real
obs["rgb"], obs["depth"]         # sensores sintéticos

Habitat

Navegação 3D.

EQA

Perguntas incorporadas.

HM3D

Cenas escaneadas.

SAPIEN

Objetos articulados.

5

🔹 O gap de física e renderização (sim ≠ real)

Nenhum simulador é o mundo. O reality gap aparece em atrito mal modelado, objetos deformáveis e líquidos, ruído e latência de sensores, e domínio visual (iluminação, texturas). Uma policy que acerta 95% em sim pode despencar no real — tema central da Trilha 3.

1

Física

Atrito, contato, deformáveis e fluidos são aproximações; rígidos são fáceis, panos não.

2

Sensores

RGB-D real tem ruído, buracos e latência que o render perfeito ignora.

3

Aparência

Distribuição visual difere; domain randomization mitiga (Trilha 3).

⚡ Dica prática

Avalie no real (ou em sim diferente do de treino). Reportar só success rate em sim de treino é a forma mais comum de se enganar sobre uma policy.

Reality gap

Sim ≠ real.

Deformáveis

Pano/fluido difíceis.

Ruído de sensor

RGB-D imperfeito.

Eval honesto

Medir transfer real.

✓ Fazer

  • Randomizar física/visual no treino para fechar o gap.
  • Reservar um sim/cenário de avaliação separado do de treino.
  • Validar no robô real antes de declarar sucesso.

✗ Evitar

  • Reportar success rate só no sim de treino.
  • Modelar deformáveis/fluidos como rígidos e confiar.
  • Ignorar ruído/latência de sensor real no pipeline.
6

🔹 Benchmarks: LIBERO, Meta-World, RoboSuite

Benchmarks padronizam a comparação. LIBERO mede aprendizado contínuo e transferência de conhecimento em manipulação (LIBERO-Spatial, Object, Goal, Long); Meta-World oferece 50 tarefas para meta/multi-task RL; RoboSuite (MuJoCo) é uma suíte modular de manipulação muito usada em papers VLA.

⚡ Dica prática

Reporte o benchmark completo, não só a suite onde seu modelo brilha. Cherry-picking de uma única suite LIBERO é o "p-hacking" da robótica — revisores e a comunidade esperam todas as quatro suites mais a média.

# avaliar OpenVLA fine-tunado em LIBERO (suites padrão)
python run_libero_eval.py \
  --model_path outputs/openvla-libero \
  --task_suite_name libero_spatial \
  --num_trials_per_task 50
# reporta success rate médio por suite -> número comparável entre papers

📊 O que cada um mede

  • LIBERO — lifelong learning, 4 suites de transferência.
  • Meta-World — 50 tarefas, ML1/ML10/ML45 para generalização.
  • RoboSuite — manipulação modular, base de muitos VLAs.

LIBERO

Lifelong / transferência.

Meta-World

50 tarefas multi-task.

RoboSuite

Manipulação modular.

Success rate

Métrica comparável.

✅ Resumo do módulo

Simular — barato, seguro, paralelo e com reset infinito.
MuJoCo/MJX — contato preciso e física diferenciável em JAX.
Isaac Sim/Lab — escala GPU e RTX para RL massivo.
Reality gap — sim ≠ real; avalie honestamente.
Benchmarks — LIBERO, Meta-World, RoboSuite comparam policies.

Próximo módulo

2.4 — ROS2: o middleware que leva sua policy do simulador ao braço real, com tf2, MoveIt2 e tempo real.