File size: 3,599 Bytes
6cee890
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
---
license: apache-2.0
library_name: openpi
tags:
  - robotics
  - vla
  - pi0
  - isaaclab
  - manipulation
---

# PPS Checkpoints — IsaacLab DROID proxy steering models

PROXY steering models for [`TritiumR/pps`](https://github.com/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

> [!IMPORTANT]
> 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:

```bash
python openpi/fetch_checkpoints.py
```

or equivalently:

```python
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](https://huggingface.co/datasets/Tritiumac/PPS_assets).

```bash
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](https://github.com/Physical-Intelligence/openpi).
The DINOv3 vision backbone is a runtime dependency under Meta's DINOv3 license.