Reprodução e análise empírica do trabalho “Robot Skill Adaptation via Soft Actor-Critic Gaussian Mixture Models” (Nematollahi et al., ICRA 2022) aplicado ao benchmark CALVIN.
Status: experimentos em andamento. Trabalho em preparação para submissão.
Skill avaliada: open_drawer em CALVIN scene D. Avaliação com 20 episódios × 3 seeds (42–44) = 60 episódios por método, com as mesmas posições iniciais para uma comparação justa.
| Seed | Aciertos | Fallos | Accuracy |
|---|---|---|---|
| 1 (42) | 3 / 20 | 17 | 15% |
| 2 (43) | 5 / 20 | 15 | 25% |
| 3 (44) | 6 / 20 | 14 | 30% |
| Total | 14 / 60 | 46 / 60 | — |
| Seed | Aciertos | Fallos | Accuracy |
|---|---|---|---|
| 1 (42) | 4 / 20 | 16 | 20% |
| 2 (43) | 8 / 20 | 12 | 40% |
| 3 (44) | 9 / 20 | 11 | 45% |
| Total | 21 / 60 | 39 / 60 | — |
gmm_ppo_open_drawer_best.zip (51K/200K steps — entrenamiento incompleto)| Seed | Aciertos | Fallos | Accuracy |
|---|---|---|---|
| 1 (42) | 13 / 20 | 7 | 65% |
| 2 (43) | 15 / 20 | 5 | 75% |
| 3 (44) | 15 / 20 | 5 | 75% |
| Total | 43 / 60 | 17 / 60 | — |
sac_gmm_open_drawer_best.ckpt| Método | Aciertos | Media accuracy | ±std | Length |
|---|---|---|---|---|
| GMM only | 14 / 60 | 23.3% | ±6.2% | 62.1 |
| GMM+PPO | 21 / 60 | 35.0% | ±10.8% | 63.5 |
| GMM+SAC | 43 / 60 | 71.7% | ±4.7% | 55.7 |
Lectura para la expo:
| Job ID | Método | Recursos | Status | Resultado |
|---|---|---|---|---|
68501 |
Extract demos open_drawer |
a5000, 30 min | ✅ COMPLETED | 152 train + 30 val demos |
68510 |
SAC-GMM training (lightning) | l40s, 8h | ✅ TIME LIMIT (12h wall-clock) | Convergiu a ep 1060, 100% eval_return=10 |
69066 |
SAC SB3 smoke test (1500 steps) | a5000, 15min | ✅ COMPLETED | Pipeline OK |
69068 |
SAC puro (SB3) training | a5000, 8h | 🟢 RUNNING ahora | mean_reward=10 desde ~250K steps |
Histórico de jobs falhos (tentativas de SAC puro nativo antes de mudar para SB3):
68488, 68489, 68491, 68493, 68507, 68508, 68509, 68928, 68929, 68956, 68957, 68959
— todos falharam por incompletude do código upstream (ver changelog).
Dynamical system treinado em 152 trajetórias de open_drawer. Chega ao cajón
mas frequentemente falha em agarrar/puxar limpamente.
Mesmo GMM, refinado por SAC após ~1000 episódios de treinamento no cluster.
Movimentos decididos e corrigidos pelo Δθ do SAC a cada 32 passos.
Eval accuracy chega a 100% pelo episódio ~1060 (primeira hora de treinamento no cluster). Os episódios seguintes mantêm o plateau sem melhora.


SAC-GMM é um método híbrido para aprendizado de skills: um Gaussian Mixture Model (K=3) é ajustado offline em poucas demonstrações humanas para fornecer um dynamical system que controla o robô em alta frequência. Um agente Soft Actor-Critic então refina esse GMM em runtime predizendo correções de parâmetros (Δπ, Δμ, ΔΣ) a cada N=32 passos, usando recompensas esparsas de completação de tarefa e observações visuais via autoencoder. O GMM fornece um skill prior robusto; o SAC adapta-o ao ambiente real ruidoso.
config_path do Hydra para sistemas com espaços no path (macOS).bayesian_gmm quando não usando wandb.matplotlib.tab10 para suportar K > 7 Gaussianas.calvin_env.play_table_env para installs editáveis (__file__ None).Módulo Lightning ausente implementado: sac_gmm.models.sac_model.SAC
(referenciado em sac_train.py mas inexistente no upstream).
Baseline SAC puro via Stable-Baselines3 ao invés de tentar consertar o
SACAgent nativo (que tinha 7+ chamadas a métodos inexistentes:
set_skill, prepare_action, record_frame, etc.).
scripts/agent_eval_record.py):
integração com STATE_LOGGING_VIDEO_MP4 do PyBullet + métricas CSV/JSON
por run.Setup completo: ver setup.md.
| Passo | Script |
|---|---|
| Extrair demos de uma skill | scripts/extract_calvin_demos.py skill=calvin_open_drawer |
| Ajustar GMM (K=3) | scripts/gmm_train.py skill=calvin_open_drawer logger=tb_logger |
| Treinar SAC-GMM | sbatch run_sac_gmm.sbatch (~8h L40S/A5000) |
| Treinar SAC puro | sbatch run_sac_sb3.sbatch (~8h) |
| Avaliar + gravar vídeo | scripts/agent_eval_record.py agent=... show_gui=true |
Ver changelog.md para a bitácora completa do projeto.
Trabalho em preparação. Código baseado em nematoli/sac_gmm com patches de reprodutibilidade para o benchmark CALVIN.