Robótica com IA · Real2Sim

Da foto da mesa ao robô que já treinou antes de se mexer

Uma foto vira gêmeo de simulação, o gêmeo gera dados de treino rotulados e o plano só vai para o robô real depois de passar na física.

Da foto ao robô: braço robótico sobre a mesa e o gêmeo de simulação ao lado
Em resumo

O robotica-real2sim é um projeto aberto que reproduz no seu computador a ideia que o Google mostrou na parte de robótica do Gemini 4 Argon: tirar uma foto de uma mesa e transformá-la numa simulação física onde um braço robótico treina. Serve para quem quer entender e testar robótica com IA sem ter robô. Ele monta o "gêmeo" da mesa, gera dezenas de tentativas rotuladas para treino e testa cada plano na simulação antes de mandá-lo a um robô real. Precisa de Python, do MuJoCo (simulador gratuito) e, para ler a foto, do Codex.

O que é

Três peças que mudam como se treina um robô

O gargalo da robótica sempre foi dado: gente de óculos de VR guiando o braço por horas. Aqui o dado sai da simulação, e a simulação sai de uma foto.

Seis etapas: foto da mesa, gêmeo MuJoCo, malha fechada, 100 episódios, prova na física, perguntas abertas

📷 Foto → gêmeo

Um modelo de visão lê a foto, mede os objetos usando uma folha A4 como régua e monta a cena no MuJoCo com o braço Franka Panda.

🔁 Dados que se rotulam

Um gerador de movimento em malha fechada pega e solta cada objeto com variações; cada tentativa sai com anotação em 4 níveis e selo de qualidade.

✅ Prova antes do real

O plano escrito pela IA roda 20 vezes na física. Abaixo de 90% de acerto, ele é reprovado e não chega ao robô.

Como funciona

Do pixel ao movimento, em cinco etapas

Cada etapa é um comando do r2s.py e grava um arquivo que você pode abrir e conferir.

Foto da mesa→ cena.json (metros)→ Gêmeo MuJoCo→ Gerador em malha fechada→ Episódios rotulados→ Plano da IA→ Prova na física

Malha fechada

A cada 20 ms o gerador lê onde o objeto está e recalcula o alvo. Se o objeto se mexe, o braço corrige. É o que o Google chama de closed-loop IK trajectory generator.

Anotação em retrospecto

Objetivo → subtarefas (pegar, levar, soltar) → primitivas com início e fim → eventos (contato dos dois dedos, objeto levantado, sucesso).

Variação de domínio

Cada episódio sorteia posição (±4 cm), giro, massa (±30%). Um modelo treinado nisso aprende a lidar com o mundo que não é igual à foto.

O que o Google mostrou

Gemini 4 Argon na robótica, em números

Publicado em 13/10/2026. O post é uma coleção de exemplos com vídeo; fontes completas em docs/PESQUISA.md.

Este repositório não usa o Argon. Ele replica o fluxo com ferramentas abertas. O Argon está no AI Studio (assinatura Ultra), na Gemini API paga (gemini-4-argon, US$ 2 / US$ 10 por milhão de tokens no preço de lançamento) e no Antigravity.
ExemploO que aconteceNúmero
Uma foto → VLA melhorFoto de uma bancada com 2 braços Franka FR3 vira gêmeo MuJoCo, 77 tarefas, gerador IK em malha fechada, 4.500+ episódios para ajustar um VLA56% → 75% de sucesso no robô real; 35 s → 24 s
ERQABenchmark de raciocínio incorporado87%, acima dos outros modelos de fronteira
SpotCria o gêmeo de uma lixeira com pedal, treina o equilíbrio em 3 patas no MuJoCo e só então pisa no pedal realsem taxa publicada
SO-101Braço barato melhora a própria tarefa olhando logs e vídeo, sob regras de um AGENTS.md58,9 s → 22,9 s → 17,4 s
ALOHA 2Origami de 136 s anotado em 4 níveis com controle de qualidade1 objetivo, 6 subtarefas, 17 primitivas
DroneBench (Andon Labs)Modelos escrevem o código para um drone de US$ 129 achar e seguir uma pessoamelhor modelo a 84% do caminho; ninguém fecha as 5 tarefas
Pré-requisitos

O que você precisa

Roda em Linux, macOS e WSL. Testado num ARM de 20 núcleos com GPU (renderização por EGL).

Python 3.10+ e git

O instalador cria o ambiente e baixa o Panda do MuJoCo Menagerie.

# conferir
python3 --version && git --version

Renderização sem tela

Em servidor ou WSL, o MuJoCo desenha pela GPU. Sem GPU, use osmesa.

# padrão do projeto
export MUJOCO_GL=egl

Codex CLI (opcional)

Só para ler a foto e escrever o plano. Sem ele, escreva a cena à mão.

# uma vez
codex login
Guia de uso · passo a passo

Do zero ao plano aprovado

Comandos reais. Cada um imprime o que fez e grava o resultado.

1

Instalar

Cria o .venv, instala o MuJoCo, baixa o Franka Panda e roda os 8 testes (~11 s).

git clone https://github.com/inematds/robotica-real2sim && cd robotica-real2sim
./instalar.sh   # termina em "TUDO OK"
2

Foto → cena

Fotografe a mesa de cima, com uma folha A4 visível como régua. O modelo devolve cada objeto com tipo, tamanho e posição; o script converte para o referencial do braço e avisa se precisou aproximar algo do alcance.

./r2s.py foto minha-mesa.jpg cena.json --pedido "pôr o cubo vermelho na bandeja"
# cena: 4 objetos -> cena.json
./r2s.py ver cena.json gemeo.png --camera cima   # compare com a foto
3

Ver o braço trabalhando

Filma um episódio com três câmeras (geral, de cima e no pulso) e a fase escrita na tela.

./r2s.py filmar cena.json episodio.mp4 --cameras geral,cima,pulso
# sucesso: objeto dentro do destino (269 quadros)
4

Gerar dados de treino

N episódios com variação. --imagens grava também as câmeras de cima e do pulso (128×128, 10 Hz). Episódio que falhou fica com peso_no_treino: 0.

./r2s.py episodios cena.json dados/ -n 50 --imagens
# 50/50 episódios com sucesso (100%) em 8.7 s
5

Pedir um plano em português

O Codex lê a cena e devolve passos pegar → destino. O script recusa plano que cite objeto inexistente ou destino que não é recipiente.

./r2s.py planejar cena.json "arrume a mesa: tudo que é redondo vai para a bandeja" plano.json
#   pegar lata_azul -> bandeja_cinza
#   pegar bola_tenis -> bandeja_cinza
6

Provar antes de mandar ao robô

O plano roda 20 vezes com variação. Sem vagas, a bola cai em cima da lata. Com uma vaga por objeto (padrão), passa.

./r2s.py provar cena.json plano.json --sem-vagas
# plano completo em 4/20 (20%) -> REPROVADO: não mande ao robô
./r2s.py provar cena.json plano.json
# plano completo em 19/20 (95%) -> APROVADO para o robô real
Resultados medidos

O que rodou de verdade (14/10/2026)

Arquivos em resultados/. A foto de exemplo foi gerada por IA.

Foto de uma mesa com cubo vermelho, lata azul, bola de tênis, bandeja e folha A4
A foto: cubo à esquerda, lata, bola, bandeja à direita e uma folha A4 de régua.
Gêmeo de simulação com o braço Panda e os mesmos objetos
O gêmeo montado em ~9 s pelo Codex: mesmas posições, tamanhos estimados em centímetros.
Um episódio com três câmeras: geral, de cima e no pulso (o que um VLA veria).
O plano aprovado: lata e bola na bandeja, cada uma na sua vaga.
MedidaResultado
Episódios na cena da foto (cubo → bandeja, com variação)50/50 em 8,7 s
Episódios na cena de teste50/50 em 8,4 s
Cada objeto sozinho (cubo, lata, bola × 2 cenas, 20 variações)20/20 em todos
Plano "tudo que é redondo vai para a bandeja", sem vagas4/20 (20%) → reprovado
Mesmo plano com uma vaga por objeto19/20 (95%) → aprovado

Até a lata funcionar, a simulação errou de três jeitos: pegada alta demais enfiava a lata na palma, o contato cilindro × dedo empurrava na direção errada e a garra do modelo apertava só ~3 N (a real faz 70 N). Cada erro daria um número falso. É por isso que gêmeo precisa ser conferido.

Teste dos modelos

Mesma foto, quatro modelos

Codex, Claude, Gemini Robotics-ER 2 e Gemini 4 Argon montaram a cena da mesma foto e escreveram o plano para o mesmo pedido. A física decidiu. Dados completos em docs/CODEX-VS-CLAUDE.md.

Tabela: distância medida, tempo, tokens, custo e prova de cada modelo
ModeloViaFoto → cena: entrada / saídaPlano: entrada / saídaCustoCubo–bandejaProva sem / com vagas
Codex
gpt-6-luna
codex exec26.760 / 27924.741 / 100assinatura78 cm4/20 / 19/20
Claude
claude-opus-5-5
claude -p174.040 / 3.928
111.596 cache
116.476 / 662
20.936 cache
assinatura48 cm16/20 / 16/20
Gemini Robotics-ER 2
gemini-robotics-er-2-preview
Gemini API1.600 / 433
+1.538 raciocínio
377 / 70
+1.145 raciocínio
US$ 0 · grátis45 cm0/20 / 16/20
Gemini 4 Argon
google/gemini-4-argon
OpenRouter1.614 / 542389 / 72US$ 0,010141 cm7/20 / 20/20
As perguntas que isso levanta

Oito questões, ampliadas

Versão completa, com fontes e o que medimos, em docs/QUESTOES.md.

1. Onde para o laço que melhora a si mesmo?

Jack Clark (Anthropic) via 60% de chance de autoaperfeiçoamento recursivo até 2028; um agregador diz que ele adiantou para 2027, sem fonte original. O que o Google mostra é melhoria de tarefa, não de pesos. A pergunta útil: quem aprova a próxima volta?

2. Vigilância ao alcance de qualquer um?

Drone de US$ 129 e código escrito por IA já seguem uma pessoa melhor que o código humano de referência. A própria Andon Labs diz que o público precisa decidir os limites.

3. Robô com LLM pode ser enganado?

Pode: o RoboPAIR fez jailbreak em três robôs, com sucesso "frequentemente 100%". A defesa precisa estar fora do modelo: limite de força, zona proibida, parada física e prova na simulação.

4. A simulação mente?

O Google mostra um único número real (56% → 75%). Aqui, três erros de física dariam resultados falsos. Pergunte sempre qual número do robô real sustenta o resultado.

5. Quem fica com os dados?

Se o dado fica barato (50 episódios em 9 s), o poder passa para quem tem o modelo que gera o dado e o hardware que valida. O contrapeso é aberto: MuJoCo, LeRobot, SO-101, OpenVLA.

6. E quem opera robô?

O primeiro trabalho atingido é o do teleoperador que gera dado e o do engenheiro que escreve simulação à mão. A nova função é revisar e calibrar o que o modelo produz.

7. O modelo escreve a própria prova?

No exemplo do Google, o Argon monta o ambiente e confere reward == 1.0 nele. O DroneBench registra trapaça em até 66% das execuções de um modelo. Separe quem monta, quem julga e quem confere.

8. Quem regula?

Na UE, o Regulamento de Máquinas vale a partir de 20/01/2027 e exige avaliação por terceiros quando a segurança depende de IA. O mínimo prático: registrar modelo, simulação que aprovou e resultado no real.

Humanoides

Real2Sim acelera o treino de humanoides?

Sim, e os ganhos já são relevantes. Na simulação, várias cópias do humanoide treinam em paralelo, sem desgastar o equipamento. Texto completo, com fontes e conferência, em docs/HUMANOIDES.md.

+40%

Desempenho do GR00T N1

Com dados sintéticos + reais, contra só dados reais.

780 mil

Trajetórias geradas

Movimentos artificiais criados em 11 horas.

6.500 h

Volume equivalente

Em duração de demonstrações humanas.

591×

Velocidade de geração

6.500 h de trajetórias em 11 h. É geração de dados, não treino inteiro mais rápido.

Dados da NVIDIA, março de 2025 (blog técnico).

Onde a simulação ajuda mais

CapacidadeGanho potencial
Aprender a andarExperimentar quedas e terrenos sem quebrar o robô
EquilíbrioSimular empurrões, tropeços e cargas diferentes
ManipulaçãoAprender a pegar objetos de vários tamanhos
Coordenação das mãosGerar muitas tentativas de movimentos finos
Ambientes novosPreparar comportamentos antes da implantação
SegurançaTestar situações perigosas virtualmente
1.620×

Caminhada do Unitree G1 no Isaac Lab

Numa RTX 4090, cada segundo de computação vale cerca de 27 minutos de experiência virtual, com 4.096 ambientes em paralelo. Vem do paralelismo: o robô não ficou 1.620× mais inteligente. É uma conta sobre a tabela de benchmarks e muda com a versão.

8 ações

G1 na construção civil (2026)

Entre elas, empurrar e arrastar carrinho de mão. Cada ação passou antes por simulação em dois motores de física, e só as aprovadas foram ao robô real. Locomoção, ainda sem autonomia na obra (arXiv 2608.01600).

Onde entra o Real2Sim do INEMA

A oportunidade não é competir com o Isaac Lab: é automatizar a criação do ambiente onde o humanoide vai aprender. Filmar uma cozinha ou uma fábrica, gerar o gêmeo digital, preparar as tarefas, treinar o humanoide virtual, validar e só então levar ao robô. Reconstruir o lugar não basta: é preciso modelar contatos, portas e gavetas, sensores e a dinâmica do próprio humanoide. A referência mais próxima é o Video2Sim2Real (junho de 2026): habilidade de manipulação a partir de um único vídeo humano, refinada na simulação e transferida ao robô.

O que ainda falta resolver: o reality gap

A pergunta que vale investigar

Quanto custa e quanto tempo leva ensinar uma tarefa nova a um humanoide com Real2Sim2Real, comparado com ensiná-la por demonstrações humanas? Com a mesma tarefa e o mesmo robô, essa comparação prova muito mais do que números isolados de velocidade de simulação.

Na prática

Como o robô recebe instruções e aprende

A foto monta o lugar; quem ensina é a simulação, com milhares de variações da mesma tarefa. Texto completo, com o passo a passo do SO-101, em docs/APRENDER.md.

O que entra

EntradaPara que serve
1 fotoMesa simples, tudo à vista. É o que já funciona aqui.
3–4 fotos de ângulos diferentesMedidas melhores e objetos escondidos. A medida é o que mais erra.
Sequência de fotosTarefa de várias etapas: cada foto é o estado que o robô precisa alcançar.
Vídeo de uma pessoa fazendoEnsina o como, não só o lugar: o movimento humano vira movimento do robô, refinado na simulação.

Como a instrução chega ao motor

1

Plano

A IA escreve "pegar o cubo, levar à bandeja, soltar". Uma vez por tarefa.

2

Movimento

Posição da garra vira ângulo de cada junta (cinemática inversa), 10 a 50 vezes por segundo.

3

Motor

Posição-alvo de cada servo pela USB até a placa do braço, centenas de vezes por segundo.

Hoje funciona o modo programado: a IA planeja, a simulação prova e o braço executa. O próximo é o modo aprendido: uma rede neural olha a câmera e as juntas e decide a próxima ação, num laço contínuo.

Como são os dados

Cada tentativa é um episódio: em cada instante, o que o robô viu e o que fez.

episódio 0007 · "Pôr o cubo vermelho na bandeja cinza."
t=0,0  câmeras: cima, pulso   juntas: [0,10 -0,50 0,80 …]
       ação: juntas-alvo [0,12 -0,48 0,79 …]   garra: aberta
t=0,1  …
fim    sucesso = sim
50/50

Episódios com câmeras

Gerados em 30 s a partir da foto da mesa.

4.361

Quadros no LeRobot

A 10 Hz, com estado, ação e duas câmeras.

69 s

Exportação

Pela API oficial do LeRobot 0.6.1, numa CPU.

9,7 MB

Dataset pronto

Abre de volta no LeRobot, pronto para treinar.

./instalar.sh --lerobot
./r2s.py episodios exemplos/mesa-foto/cena.json eps/ -n 50 --imagens
./r2s.py exportar eps/ dataset/

Como ele aprende no mundo real

1. Braço-mestre

Você move o braço líder com a mão, o seguidor copia e tudo é gravado. Com 50 a 100 demonstrações, uma política ACT já aprende uma tarefa simples.

2. Misturar com a simulação

Milhares de episódios sintéticos dão variedade; poucas demonstrações reais corrigem a física que a simulação errou.

3. Correção durante o uso

O robô tenta, você assume quando ele erra, e a correção vira dado novo (DAgger).

4. Ciclo contínuo

Cada falha no real entra no conjunto de dados e a política é treinada de novo. Tentativa e erro direto no real existe, mas é lento e gasta o equipamento.

Tenho um SO-101: o que faço?

1–4
Montar, instalar e calibrarPar líder + seguidor, 1 ou 2 câmeras USB. pip install "lerobot[feetech,core-scripts,training]", depois lerobot-find-port, lerobot-setup-motors, lerobot-calibrate e lerobot-teleoperate para ver o seguidor copiar o líder.
5
Gêmeo da sua mesaFoto, cena, episódios com câmeras e exportação, com este repositório.
6
Gravar demonstrações reais50 a 100 com lerobot-record, variando a posição dos objetos; --dataset.push_to_hub=false deixa tudo local.
7–8
Treinar e rodarlerobot-train --policy.type=act e lerobot-rollout no braço, devagar e com a parada à mão.
9–10
Corrigir e medir--strategy.type=dagger para corrigir; taxa de acerto em 20 tentativas: só sintético, só real e os dois juntos.

O braço da simulação ainda é o Franka Panda: o dado sintético vale direto para o SO-101 depois de trocar o modelo pelo do MuJoCo Menagerie.

Próximos passos

Do gêmeo ao braço de verdade

O que já existe e o caminho para quem quiser levar ao real.

Feito
Foto → gêmeo → dados → provaPanda do Menagerie, gerador em malha fechada, episódios com anotação em 4 níveis, plano do Codex provado com e sem vagas, 8 testes.
Feito
Episódios no formato do LeRobotr2s.py exportar: 50 episódios com câmeras viram um dataset que o LeRobot abre e treina (na prática).
Próximo
SO-101 na simulaçãoTrocar o Panda pelo braço aberto SO-101 (o Menagerie já tem o modelo; o kit custa de US$ 100 a 500) para o dado sintético servir direto ao braço real.
Depois
Treinar uma políticaAjustar um VLA aberto (OpenVLA, pi0) nos episódios e medir no braço real, comparando com e sem os dados sintéticos.
Regra
Nada vai ao real sem provaTodo plano passa por r2s.py provar antes de mover um motor.