Authors: Filippo Marcantoni and Prahladh Raja
This repository contains the experiment artifacts for imitation learning on the robosuite PickPlaceCan task. The project uses robomimic to train and evaluate Behavioral Cloning and Diffusion Policy models from successful human demonstrations collected with a Panda robot.
The repository is organized as a reproducibility and reporting artifact: it includes training configurations, training logs, and rollout videos. The raw HDF5 dataset and model checkpoints are expected to be stored externally because of their size.
- Task: robosuite
PickPlaceCan - Robot: Panda
- Control: 7-dimensional
OSC_POSEaction space - Dataset: 59 successful human demonstrations
- Frameworks: robosuite for simulation and demonstration collection, robomimic for training, evaluation, logging, checkpointing, and rollout video generation
- Methods evaluated: Behavioral Cloning, recurrent Behavioral Cloning, GMM variants, and Diffusion Policy
- Primary metric: rollout success rate
Unless otherwise noted, rollout evaluations use 10 episodes with a horizon of 400 environment steps.
.
|-- README.md
|-- logs/
| |-- *.txt
| `-- demo_count/
| |-- bc/
| `-- diffusion/
|-- training_configs/
| `-- *.json
`-- videos/
|-- bc_rollout.mp4
|-- diffusion_rollout.mp4
`-- diff_demo50_rollout.mp4
training_configs/: robomimic JSON configuration files for the main BC and Diffusion Policy runs.logs/: full terminal logs from training and rollout evaluation.logs/demo_count/: logs for the controlled data-efficiency study using 5, 10, 20, and 50 demonstrations.videos/: representative rollout videos for the best BC run, the diffusion hyperparameter sweep, and the final 50-demonstration diffusion run.
The following files are referenced by the configs and logs but are not included in the current repository snapshot:
datasets/demo_obs.hdf5: processed demonstration dataset.*.pthmodel checkpoints: saved robomimic policy weights.- TensorBoard event directories and generated figures, if used for the final report.
The expected training dataset path is:
datasets/demo_obs.hdf5
The dataset contains 59 successful demonstrations for the PickPlaceCan task. The main configurations use the following low-dimensional observation keys:
robot0_eef_posrobot0_eef_quatrobot0_gripper_qposobject
Image-based experiments additionally use RGB observations from:
agentview_imagerobot0_eye_in_hand_image
Rendered RGB observations are configured at 84 x 84 resolution. The demonstration-count experiments use dataset filters such as demo_count_train_5, demo_count_train_10, demo_count_train_20, demo_count_train_50, and demo_count_valid.
The success rates below are extracted from the included training logs. Peak reports the best checkpoint-level rollout result observed during training, while Final reports the last logged rollout result for that run.
| Result | Run | Modality | Peak Success | Final Success |
|---|---|---|---|---|
| Best overall policy | diff_demo50_image |
Low-dimensional state + RGB | 0.90 at epoch 500 |
0.90 |
| Best BC policy | bc_rnn_seq20_lr1e4 |
Low-dimensional state | 0.90 at epoch 950 |
0.80 |
| Best diffusion sweep run | diffusion_image_1000_lr5e5 |
Low-dimensional state + RGB | 0.90 at epoch 650 |
0.50 |
| Best low-dimensional diffusion run | diffusion_lowdim_h32 |
Low-dimensional state | 0.60 at epoch 350 |
0.40 |
The strongest overall result came from image-based Diffusion Policy trained on the 50-demonstration subset, which reached and finished at 0.90 rollout success. Recurrent BC also performed strongly: the best sequence-length-20 LSTM BC checkpoint reached 0.90, with a final logged success rate of 0.80.
| Run | Config | Log | Observations | Peak Success | Final Success |
|---|---|---|---|---|---|
| Original BC baseline | training_configs/bc_50_original.json |
logs/bc_50_log.txt |
Low-dimensional state | 0.04 |
0.02 |
| Image BC | training_configs/bc_image_lr1e4.json |
logs/bc_image_lr1e4_log.txt |
Low-dimensional state + RGB | 0.20 |
0.00 |
| Low-dimensional GMM BC | training_configs/bc_lowdim_gmm.json |
logs/bc_lowdim_gmm_log.txt |
Low-dimensional state | 0.20 |
0.20 |
| Higher-learning-rate BC | training_configs/bc_lowdim_lr3e4_b64.json |
logs/bc_lowdim_lr3e4_b64_log.txt |
Low-dimensional state | 0.10 |
0.00 |
| RNN-GMM BC, sequence length 10 | training_configs/bc_rnn_gmm_seq10.json |
logs/bc_rnn_gmm_seq10_log.txt |
Low-dimensional state | 0.00 |
0.00 |
| RNN BC, sequence length 10 | training_configs/bc_rnn_seq10_lr3e5.json |
logs/bc_rnn_seq10_lr3e5_log.txt |
Low-dimensional state | 0.80 |
0.10 |
| RNN BC, sequence length 20 | training_configs/bc_rnn_seq20_lr1e4.json |
logs/bc_rnn_seq20_lr1e4_log.txt |
Low-dimensional state | 0.90 |
0.80 |
| RNN BC, sequence length 20, 1500 epochs | training_configs/bc_rnn_seq20_lr1e4_1500.json |
logs/bc_rnn_seq20_lr1e4_1500_log.txt |
Low-dimensional state | 0.90 |
0.50 |
| RNN BC, sequence length 30 | training_configs/bc_rnn_seq30_lr1e4.json |
logs/bc_rnn_seq30_lr1e4_log.txt |
Low-dimensional state | 0.70 |
0.50 |
The main BC improvement came from adding temporal context with an LSTM policy. The sequence-length-20 RNN BC configuration was the strongest and most reliable BC setting in the included experiment set.
| Run | Config | Log | Observations | Peak Success | Final Success |
|---|---|---|---|---|---|
| Image diffusion baseline | training_configs/diffusion_image_base.json |
logs/diffusion_image_base_log.txt |
Low-dimensional state + RGB | 0.70 |
0.50 |
Image diffusion, 1e-4 learning rate |
training_configs/diffusion_image_1000_lr1e4.json |
logs/diffusion_image_1000_lr1e4_log.txt |
Low-dimensional state + RGB | 0.80 |
0.30 |
Image diffusion, 5e-5 learning rate |
training_configs/diffusion_image_1000_lr5e5.json |
logs/diffusion_image_1000_lr5e5_log.txt |
Low-dimensional state + RGB | 0.90 |
0.50 |
| Low-dimensional diffusion, horizon 32 | training_configs/diffusion_lowdim_h32.json |
logs/diffusion_lowdim_h32_log.txt |
Low-dimensional state | 0.60 |
0.40 |
The image-based diffusion runs used both low-dimensional state and the two RGB camera views. The strongest diffusion hyperparameter-sweep checkpoint used learning rate 5e-5, sequence length 16, observation horizon 2, action horizon 8, prediction horizon 16, and batch size 16.
BC and Diffusion Policy were retrained with controlled subsets of 5, 10, 20, and 50 demonstrations. The BC runs used the sequence-length-20 recurrent BC setup, and the diffusion runs used the image-based diffusion setup.
| Demonstrations | BC Log | BC Peak / Final | Diffusion Log | Diffusion Peak / Final |
|---|---|---|---|---|
| 5 | logs/demo_count/bc/bc_demo5_log.txt |
0.20 / 0.10 |
logs/demo_count/diffusion/diff_demo5_log.txt |
0.10 / 0.00 |
| 10 | logs/demo_count/bc/bc_demo10_log.txt |
0.30 / 0.10 |
logs/demo_count/diffusion/diff_demo10_log.txt |
0.20 / 0.10 |
| 20 | logs/demo_count/bc/bc_demo20_log.txt |
0.80 / 0.10 |
logs/demo_count/diffusion/diff_demo20_log.txt |
0.60 / 0.60 |
| 50 | logs/demo_count/bc/bc_demo50_log.txt |
0.90 / 0.80 |
logs/demo_count/diffusion/diff_demo50_log.txt |
0.90 / 0.90 |
The demonstration-count study shows that performance improves substantially with more demonstrations. Diffusion Policy showed especially strong final performance at 20 and 50 demonstrations, while BC required more data to reach high final success.
| File | Description |
|---|---|
videos/bc_rollout.mp4 |
Representative rollout from the recurrent BC policy. |
videos/diffusion_rollout.mp4 |
Representative rollout from the image-based diffusion hyperparameter sweep. |
videos/diff_demo50_rollout.mp4 |
Representative rollout from the 50-demonstration image-based diffusion policy. |
Install robomimic and robosuite in a Python environment with MuJoCo support, then place the processed dataset at:
datasets/demo_obs.hdf5
Example command for the best recurrent BC configuration:
python robomimic/robomimic/scripts/train.py \
--config training_configs/bc_rnn_seq20_lr1e4.json \
--dataset datasets/demo_obs.hdf5 \
--name bc_rnn_seq20_lr1e4Example command for the strongest diffusion sweep configuration:
python robomimic/robomimic/scripts/train.py \
--config training_configs/diffusion_image_1000_lr5e5.json \
--dataset datasets/demo_obs.hdf5 \
--name diffusion_image_1000_lr5e5Some robomimic versions rely only on the dataset path stored inside the JSON config. If --dataset is not supported in your local version, update train.data[0].path in the relevant config file before training.
If a trained .pth checkpoint is available, a rollout evaluation can be generated with robomimic's trained-agent script:
python robomimic/robomimic/scripts/run_trained_agent.py \
--agent path/to/model.pth \
--n_rollouts 10 \
--horizon 400 \
--video_path videos/rollout.mp4 \
--camera_names agentview robot0_eye_in_handUse --n_rollouts 50 to match the original bc_50_original baseline configuration. Most other included experiments used 10 rollout episodes.
- The included logs are the authoritative source for the reported training curves, validation losses, rollout returns, success rates, checkpoint-save events, and rollout video paths.
- Results can vary across reruns because policy training and physics rollouts are stochastic.
- This repository snapshot does not include the raw dataset, model checkpoints, or local robomimic / robosuite source trees.