PPS Checkpoints β€” IsaacLab DROID proxy steering models

PROXY steering models for TritiumR/pps, trained on IsaacLab DROID manipulation tasks with joint-position actions.

Each task ships a pair of proxies used by eval_steering.py:

  • task/<step>/ β€” the task proxy, trained on task demonstrations
  • reference/20000/ β€” the reference proxy, the steering baseline

At inference the base pi0.5 velocity is nudged by their difference:

v_t[:, :, :proxy_action_dim] += steer_scale * (task_v_t - ref_v_t)

Contents

Task Task proxy Reference proxy IsaacLab task id
pot task/24000 reference/20000 Isaac-Pot-Droid-Visuomotor-v0
tea task/32000 reference/20000 Isaac-Tea-Droid-Visuomotor-v0
weight task/24000 reference/20000 Isaac-Weight-Droid-Visuomotor-v0

Only the final task step and the reference are published β€” these are exactly the checkpoints the evaluation scripts load. Optimizer state is not included, so these are for inference / steering, not resuming training.

Each step directory holds model.safetensors (the Gemma-based action expert plus projection heads, ~135 MB fp32), metadata.pt, and assets/cn356/<dataset>/norm_stats.json.

Download

These must land under a directory literally named checkpoints/. eval_steering.py derives the training-config name from the path β€” it finds the checkpoints/ segment and reads the next segment as the config name (e.g. .../checkpoints/proxy_isaaclab_droid_pot_pi05_jointpos/task/24000). Unpacking anywhere else raises Could not derive a training config name.

From the repo root:

python openpi/fetch_checkpoints.py

or equivalently:

from huggingface_hub import snapshot_download

snapshot_download(
    repo_id="Tritiumac/PPS_checkpoints",
    local_dir="openpi/checkpoints",
)

Usage

You also need the base pi0.5 policy at openpi/checkpoints/pytorch/pi05_droid_jointpos, and the scene assets from Tritiumac/PPS_assets.

python eval_steering.py \
  --task Isaac-Pot-Droid-Visuomotor-v0 \
  --base_checkpoint_dir openpi/checkpoints/pytorch/pi05_droid_jointpos \
  --task_checkpoint_dir openpi/checkpoints/proxy_isaaclab_droid_pot_pi05_jointpos/task/24000 \
  --ref_checkpoint_dir  openpi/checkpoints/proxy_isaaclab_droid_pot_pi05_jointpos/reference/20000 \
  --prompt "remove the lid of the pot and put egg in it" \
  --exp_name demo --seed_start 42 --seed_end 43

Prompts used for the published results:

Task Prompt
pot remove the lid of the pot and put egg in it
tea pour the tea from the teapot into the cup
weight put pear and apple on the scale

Model details

Configs are registered in openpi/src/openpi/training/config.py under names matching the directory names (proxy_isaaclab_droid_<task>_pi05_jointpos):

  • action expert: gemma_12m, action horizon 15, action dim 8
  • vision backbone: facebook/dinov3-vits16-pretrain-lvd1689m
  • quantile normalization, joint-position action space

The DINOv3 backbone is not bundled β€” it is fetched from the Hub at load time and carries its own license terms.

License

Apache-2.0, matching openpi. The DINOv3 vision backbone is a runtime dependency under Meta's DINOv3 license.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading