Skip to content

About

CoachWorld source code

Resources

Stars

4 stars

Watchers

0 watching

Forks

Repository files navigation

RoboCoach logo

CoachWorld

The action-conditioned world model behind RoboCoach

RoboCoach: World Models as Active Coaches for Compositional Robot Skills

Paper on arXiv Project page Pretrained model on Hugging Face Watch the teaser video

Jiajun Liu, Yifan Chen, Yichao Liu, Jiayi Zhang, Ruoqu Chen,
Shaoxuan Xie, Guocai Yao, Mengdi Xu, Sen Cui, Changshui Zhang

🌟 Overview

RoboCoach turns imagined failures into targeted supervision for robot skills. In its Route–Imagine–Diagnose–Improve loop, skill policies act inside CoachWorld, a progress judge identifies the first unfinished subtask, and aggregated failures guide demonstration collection and expert updates.

RoboCoach overview: routing, world-model rollout, progress judging, and targeted improvement

CoachWorld makes these interactions possible with an adapted Wan2.2 TI2V-5B backbone:

  • Action-conditioned prediction: generate future observations from sparse visual history and robot end-effector actions.
  • Single-arm and bimanual robots: use a shared two-slot action representation with camera-aware conditioning.
  • Autoregressive rollout: feed predicted observations back into the policy across successive video chunks.

With 150 additional subtask demonstrations, the full RoboCoach system improves success from 13.3% to 75.0% on Franka and 40.0% to 83.8% on AgileX. See the paper for evaluation details and the project page for interactive examples.

📦 Release and Code

This repository provides the CoachWorld model, inference components, and training tools. The router, progress judge, and expert-update pipeline are separate parts of RoboCoach.

Component Where
Action-conditioned world model and training code coachworld/world_model/
Modified Wan2.2 backbone and VAE components coachworld/wan/
Video-latent data and action/camera contracts coachworld/data/, coachworld/calibration/
Distributed training entry point and example config scripts/training/train_world_model.py, configs/training/coachworld.yaml
Model and data contract tests tests/
CoachWorld pretraining weights Hugging Face

The released checkpoint is the CoachWorld pretrain model, trained on heterogeneous single-arm and dual-arm robot data. The target-only ablation and platform-specific post-trained models are distinct from this release.

⚙️ Installation

Use Python 3.10 or 3.11 on a GPU machine with a PyTorch/CUDA setup suitable for Wan2.2. From the repository root:

git clone https://github.com/RoboCoach-AI/CoachWorld.git
cd CoachWorld
python -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[dev]'
python -m pytest -q tests

The tests cover model components and data contracts. All commands below run from the repository root.

🤗 Pretrained Model

Download the CoachWorld pretrain release:

python -m pip install -U huggingface_hub
hf download JEdward/CoachWorld --local-dir models/CoachWorld

The release includes dit_model.safetensors, training_config.yaml, and model metadata. Use the custom coachworld implementation to load the checkpoint; the model card describes the release.

Preparing inputs: match the action coordinate frames, normalization, camera calibration, and temporal sampling specified in coachworld/data/. The inference components require these prepared inputs; a standalone inference CLI is not included.

🏋️ Training

Prepare the assets

Training starts from the Wan2.2 TI2V-5B base assets and a prepared CoachWorld video_latent dataset. The example config expects:

<COACHWORLD_MODEL_ROOT>/Wan2.2-TI2V-5B/
<COACHWORLD_DATA_ROOT>/video_latent/
  manifest.json
  train.index.jsonl
  val.index.jsonl
  stats/arm_slot_eef_pose.json
  ... latent and signal shards ...

The validation split is required by the default config. See coachworld/data/video_latent.py for the manifest and index schema. coachworld/data/video_latent_release.py packages an existing collection; it does not download or create the dataset.

Launch training

Set the asset roots and a positive training length. The step count below is an example:

export COACHWORLD_MODEL_ROOT=/path/to/base-models
export COACHWORLD_DATA_ROOT=/path/to/prepared-data
export COACHWORLD_OUTPUT_ROOT=/path/to/outputs
export COACHWORLD_MAX_TRAIN_STEPS=10000

torchrun --nproc_per_node=5 scripts/training/train_world_model.py \
  --config configs/training/coachworld.yaml

COACHWORLD_MODEL_ROOT points to the parent of the Wan2.2 directory, not to the CoachWorld checkpoint downloaded above. Adjust the GPU/process count and configuration for your hardware.

Warm-start or resume

Append the appropriate argument to the training command:

Goal Argument Restores
Start from the released CoachWorld weights --init_from models/CoachWorld Model weights; training starts at step 0
Continue an existing training run --resume /path/to/checkpoint-N Model, optimizer, and training step

--init_from takes the directory containing dit_model.safetensors. A resumable checkpoint must have been saved by this trainer, including optimizer state. Configuration values can also be overridden with dotlist arguments such as world_model.learning_rate=1e-5.

📝 Citation

If you use CoachWorld, please cite the RoboCoach paper:

@article{liu2026robocoach,
  title={RoboCoach: World Models as Active Coaches for Compositional Robot Skills},
  author={Liu, Jiajun and Chen, Yifan and Liu, Yichao and Zhang, Jiayi
          and Chen, Ruoqu and Xie, Shaoxuan and Yao, Guocai
          and Xu, Mengdi and Cui, Sen and Zhang, Changshui},
  journal={arXiv preprint arXiv:2609.39685},
  year={2026},
  url={https://arxiv.org/abs/2609.39685}
}

🙏 Acknowledgments and License

RoboCoach-authored code is released under the root MIT license. Modified Wan2.2 components retain Apache-2.0 terms, and PRoPE retains its MIT header. See THIRD_PARTY.md for attribution. Model weights and datasets have their own terms.

About

CoachWorld source code

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages