File size: 14,386 Bytes
1cb92e5
15d1dad
 
 
 
 
 
 
 
d85a8cb
 
15d1dad
 
1cb92e5
15d1dad
 
 
 
 
 
 
 
 
d85a8cb
15d1dad
 
 
 
 
d85a8cb
 
 
 
 
 
15d1dad
d85a8cb
 
15d1dad
 
 
d85a8cb
 
15d1dad
 
 
 
 
 
 
 
 
 
 
 
d85a8cb
 
 
 
 
 
 
 
 
15d1dad
 
 
 
d85a8cb
15d1dad
d85a8cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15d1dad
 
 
 
 
 
 
 
 
 
 
 
 
d85a8cb
 
 
 
15d1dad
 
 
d85a8cb
 
 
15d1dad
 
 
 
 
 
 
 
 
 
 
 
d85a8cb
 
 
 
 
 
 
 
 
 
 
15d1dad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d85a8cb
 
15d1dad
 
d85a8cb
15d1dad
 
 
d85a8cb
 
 
 
 
 
 
 
 
 
 
 
 
 
15d1dad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d85a8cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15d1dad
 
 
 
 
 
 
 
 
d85a8cb
 
 
 
 
 
 
 
 
15d1dad
 
 
 
 
 
d85a8cb
15d1dad
 
 
 
d85a8cb
 
 
15d1dad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
---
language:
  - en
datasets:
  - MINT-SJTU/Evo-DexBench-dataset
tags:
  - robotics
  - dexterous-manipulation
  - diffusion-policy
  - vision-language-action
  - jax
  - tactile
  - simulation
---

# Evo-DexBench Model Access Examples

[![Paper](https://img.shields.io/badge/arXiv-Paper-red)](https://arxiv.org/abs/2610.21180)
[![Code](https://img.shields.io/badge/πŸ’»_Code-GitHub-blue)](https://github.com/MINT-SJTU/Evo-DexBench)
[![Project Page](https://img.shields.io/badge/🌐_Project_Page-Website-blue)](https://mint-sjtu.github.io/Evo-DexBench.io)
[![Dataset](https://img.shields.io/badge/πŸ€—_Dataset-Hugging_Face-yellow)](https://huggingface.co/datasets/MINT-SJTU/Evo-DexBench-dataset)
[![Assets](https://img.shields.io/badge/πŸ“¦_Assets-Hugging_Face-yellow)](https://huggingface.co/datasets/MINT-SJTU/Evo-DexBench_Assets)

Eight inference checkpoint examples for **Evo-DexBench**, developed by
**MINT-SJTU**. Use them to connect a policy server to the benchmark's simulator
and reproduce the model integration workflow.

## ✨ Overview

- **Four policies** across eight inference checkpoints.
- **Single-arm** checkpoints cover Single2 Core for all four policies.
- **Bimanual** checkpoints cover Double3 Core for DP-T, DP-C, and KineDex,
  and Double2 Core for Ο€0.5.
- **Separate model and simulator environments** communicate over WebSocket.
  The Ο€0.5 adapter uses OpenPI's WebSocket protocol.

Each checkpoint covers four tasks in one benchmark task family. The links above
point to the separate benchmark code, datasets, and simulation assets.

## πŸ“¦ Contents

The eight checkpoints total approximately **30.68 GB**. DP-T, DP-C, and
KineDex account for **5.80 GB**. The two Ο€0.5 checkpoints account for **24.88 GB**.

```text
Evo-DexBench_model_access_example/
β”œβ”€β”€ DP-T/
β”‚   β”œβ”€β”€ single2-core.ckpt
β”‚   └── double3-core.ckpt
β”œβ”€β”€ DP-C/
β”‚   β”œβ”€β”€ single2-core.ckpt
β”‚   └── double3-core.ckpt
β”œβ”€β”€ KineDex/
β”‚   β”œβ”€β”€ single2-core.ckpt
β”‚   └── double3-core.ckpt
β”œβ”€β”€ pi05/
β”‚   β”œβ”€β”€ single2-core/
β”‚   β”‚   β”œβ”€β”€ params/
β”‚   β”‚   └── assets/single2-core/norm_stats.json
β”‚   β”œβ”€β”€ double2-core/
β”‚   β”‚   β”œβ”€β”€ params/
β”‚   β”‚   └── assets/double2-core/norm_stats.json
β”‚   β”œβ”€β”€ LICENSE_GEMMA.txt
β”‚   └── NOTICE
β”œβ”€β”€ manifest.json
└── README.md
```

| Policy | Inputs | Single-arm checkpoint | Bimanual checkpoint |
| --- | --- | --- | --- |
| DP-T | RGB + robot state | Single2 Β· 0.171 GB | Double3 Β· 0.171 GB |
| DP-C | RGB + robot state | Single2 Β· 1.177 GB | Double3 Β· 1.185 GB |
| KineDex | RGB + robot state + tactile | Single2 Β· 1.544 GB | Double3 Β· 1.552 GB |
| Ο€0.5 (OpenPI JAX) | RGB + robot state + task instruction | Single2 Β· 12.441 GB | Double2 Β· 12.442 GB |

DP-T (Transformer), DP-C (convolutional U-Net), and KineDex use native policy
workspace `.ckpt` files. These exports preserve the original EMA weights,
normalizers, model configuration, and policy metadata. The Ο€0.5 exports use
native OpenPI JAX/Orbax directories with float32 EMA weights in `params/` and
the training normalization statistics in `assets/`. Keep both subdirectories
together. All eight exports are for inference and omit the optimizer and
training state required to resume the original runs.

The [manifest](manifest.json) records checkpoint sizes, SHA-256 checksums,
and observation contracts.

### Supported tasks

| Checkpoint group | Task ID | Task name |
| --- | --- | --- |
| `single2-core` | `m06_v1` | FaucetHandle |
| | `m07_v1` | MouseWheel |
| | `m08_v1` | CoffeeKnob |
| | `m09_v1` | KettleLidTab |
| `double3-core` | `b11_v1` | LaptopClosing |
| | `b12_v1` | StaplerPaperMark |
| | `b13_v1` | ScissorsOpening |
| | `b14_v1` | BoxLidOpening |
| `double2-core` (Ο€0.5) | `b06_v1` | PenCapping |
| | `b07_v1` | CupSleeveFit |
| | `b08_v1` | BottleFunnelInsertion |
| | `b09_v1` | PlugInsertion |

### Observation and action contract

All checkpoints use **30 Hz control** with **120 Hz simulation**. DP-T, DP-C,
and KineDex use two observation frames and execute eight actions per request
by default.

| Group | RGB views, in order | State | DP motion action | KineDex action |
| --- | --- | ---: | ---: | ---: |
| Single2 | context, interaction, wrist_right | 31 | 30 | 30 motion + 5 force |
| Double3 | **interaction**, wrist_left, wrist_right | 62 | 60 | 60 motion + 10 force |

RGB views are supplied as `224Γ—224` model inputs. KineDex uses full tactile
observations with five finger arrays per hand, padded to `29Γ—1` each. Its
client converts predicted finger forces into bounded joint-control residuals.
DP-T and DP-C do not request tactile observations. These examples do not use
depth inputs.

For Double3, select the interaction camera with the client options shown
below. DP uses the original 100-step DDPM inference, and KineDex uses its
checkpoint's DDIM settings.

Ο€0.5 uses one observation frame and the task instruction. It predicts a
50-action chunk and executes ten actions per request by default.

| Ο€0.5 group | RGB views, in order | State (model) | Action (model) | Prompt token limit |
| --- | --- | ---: | ---: | ---: |
| Single2 | context, interaction, wrist_right | 31 (32) | 30 (32) | 200 |
| Double2 | context, wrist_left, wrist_right | 62 (64) | 60 (64) | 384 |

## πŸš€ Quick Start

Run setup and evaluation from an
[Evo-DexBench code checkout](https://github.com/MINT-SJTU/Evo-DexBench).
DP checkpoints require a code revision containing
`examples/policies/diffusion_policy/` and the `policy-dp` setup profile. If these
are absent, obtain a DP-enabled release before following the DP commands.

### 1. Prepare the simulator and assets

```bash
tools/setup_environment.sh --profile sim --name evodex-sim \
  --with-dp-client --with-kinedex-client
conda activate evodex-sim
hf auth login
dexbench assets download --asset-dir "$PWD/assets"
source assets/activate_evodex_assets.sh
```

Accept the terms and obtain access to the official
[PartNet-Mobility repository](https://huggingface.co/datasets/sapien-sim/PartNetMobility)
before configuring assets. See the
[asset repository](https://huggingface.co/datasets/MINT-SJTU/Evo-DexBench_Assets)
for asset distribution and licensing details.

### 2. Download checkpoints

Select the policy and task group you want to run. For example, download a
single DP-C checkpoint:

```bash
hf download MINT-SJTU/Evo-DexBench_model_access_example DP-C/single2-core.ckpt \
  --repo-type model --local-dir checkpoints/model-access-example
```

For Ο€0.5, download the complete Orbax directory along with the license,
notice, and manifest:

```bash
hf download MINT-SJTU/Evo-DexBench_model_access_example \
  --repo-type model --local-dir checkpoints/model-access-example \
  --include 'pi05/single2-core/*' --include 'pi05/LICENSE_GEMMA.txt' \
  --include 'pi05/NOTICE' --include 'manifest.json'
```

Use `pi05/double2-core/*` for the bimanual checkpoint. Each Ο€0.5 directory
requires about 12.44 GB of disk space. Running `hf download` without a file
or include filter downloads all eight checkpoints. Load PyTorch `.ckpt` files
from trusted sources because their format uses Python pickle.

### 3. Run DP-C or DP-T

Create the independent model environment:

```bash
tools/setup_environment.sh --profile policy-dp --name evodex-dp
```

Terminal 1 β€” start a DP-C server:

```bash
conda activate evodex-dp
python -m dp_policy.server \
  --checkpoint checkpoints/model-access-example/DP-C/single2-core.ckpt \
  --upstream-root "$PWD/.third_party/DiffusionPolicy-official" \
  --host 127.0.0.1 --port 8100 --device cuda:0
```

Terminal 2 β€” run ten diagnostic episodes:

```bash
conda activate evodex-sim
source assets/activate_evodex_assets.sh
dexbench evaluate --policy dp_c --task-id m09_v1 \
  --episodes 10 --num-envs 1 --obs-mode rgb \
  --policy-kwargs '{"host":"127.0.0.1","port":8100,"embodiment":"single","execute_steps":8}' \
  --log results/dp_c_m09.jsonl
```

For **DP-T**, serve `DP-T/single2-core.ckpt` and select `--policy dp_t` in the
client. Either single-arm checkpoint supports all four Single2 Core tasks.

For **Double3**, restart the server with the matching
`double3-core.ckpt`, then use a supported bimanual task and the interaction view:

```bash
dexbench evaluate --policy dp_c --task-id b11_v1 \
  --episodes 10 --num-envs 1 --obs-mode rgb \
  --policy-kwargs '{"host":"127.0.0.1","port":8100,"embodiment":"dual","execute_steps":8,"camera_roles":["interaction","wrist_left","wrist_right"]}' \
  --log results/dp_c_b11.jsonl
```

For a DP-T Double3 checkpoint, use the same camera contract and `--policy dp_t`.

### 4. Run KineDex

Create its independent model environment:

```bash
tools/setup_environment.sh --profile policy-kinedex --name evodex-kinedex
```

Terminal 1 β€” start the model server:

```bash
conda activate evodex-kinedex
python -m kinedex_policy.server \
  --checkpoint checkpoints/model-access-example/KineDex/single2-core.ckpt \
  --upstream-root "$PWD/.third_party/KineDex-official" \
  --host 127.0.0.1 --port 8400 --device cuda:0
```

Terminal 2 β€” evaluate with full tactile inputs:

```bash
conda activate evodex-sim
source assets/activate_evodex_assets.sh
dexbench evaluate --policy kinedex --task-id m07_v1 \
  --episodes 10 --num-envs 1 --obs-mode rgb \
  --policy-kwargs '{"host":"127.0.0.1","port":8400,"embodiment":"single","execute_steps":8,"tactile_mode":"full"}' \
  --log results/kinedex_m07.jsonl
```

For **Double3**, restart the server with `KineDex/double3-core.ckpt`, then run:

```bash
dexbench evaluate --policy kinedex --task-id b11_v1 \
  --episodes 10 --num-envs 1 --obs-mode rgb \
  --policy-kwargs '{"host":"127.0.0.1","port":8400,"embodiment":"dual","execute_steps":8,"tactile_mode":"full","camera_profile":"interaction"}' \
  --log results/kinedex_b11.jsonl
```

### 5. Run Ο€0.5 with the Evo-DexBench adapter

For Ο€0.5 simulator inference, use a release of the
[official Evo-DexBench repository](https://github.com/MINT-SJTU/Evo-DexBench)
that includes `examples/policies/pi05/` and the `policy-pi05` setup profile.
The adapter supplies the camera, state, and action mappings for
[OpenPI JAX](https://github.com/Physical-Intelligence/openpi).

Install [uv](https://docs.astral.sh/uv/getting-started/installation/) before
setting up the model server. Run the setup from the benchmark checkout.
It creates a separate Python 3.11 environment in `.third_party/openpi/.venv`:

```bash
tools/setup_environment.sh --profile policy-pi05
```

If you already created the simulator environment in step 1, add the Ο€0.5
client to it:

```bash
conda activate evodex-sim
python -m pip install -e examples/policies/pi05
```

For a new Ο€0.5 simulator environment, use
`tools/setup_environment.sh --profile sim --name evodex-sim --with-pi05-client`
and complete the asset setup in step 1. The client package installs the
lightweight OpenPI client and requires `websockets>=15`.

Terminal 1 runs the model server from the benchmark checkout:

```bash
export OPENPI_ROOT="$PWD/.third_party/openpi"
"$OPENPI_ROOT/.venv/bin/python" examples/policies/pi05/serve.py \
  --openpi-root "$OPENPI_ROOT" --embodiment single \
  --checkpoint checkpoints/model-access-example/pi05/single2-core --port 8000
```

Wait for the server to listen on port 8000 before starting the simulator.

Terminal 2 runs ten simulator episodes:

```bash
conda activate evodex-sim
source assets/activate_evodex_assets.sh
dexbench evaluate --policy pi05 --task-id m09_v1 \
  --episodes 10 --num-envs 1 --obs-mode rgb \
  --control-mode arm_pd_ee_delta_pose_hand_pd_joint_pos \
  --policy-kwargs '{"host":"127.0.0.1","port":8000,"embodiment":"single","execute_steps":10}' \
  --log results/pi05_m09.jsonl
```

For Double2, set the server's checkpoint path to
`checkpoints/model-access-example/pi05/double2-core` and pass `--embodiment dual`.
Set `"embodiment":"dual"` in the client options and select one of
`b06_v1`–`b09_v1`. The adapter uses the context camera for Double2.

### Evaluation protocol

The ten-episode commands run diagnostic integration checks. To run the
standard 100-episode, four-worker protocol, omit
`--episodes` and `--num-envs`. Use a new log filename for every invocation.
GPU memory use includes both model inference and simulation rendering; a
single-worker check is the starting point for memory-constrained machines.

Training and additional policy options are documented in the code repository's
DP and KineDex examples. This model repository does not duplicate their code.

## βš–οΈ License

MINT-SJTU provides the DP-T, DP-C, and KineDex checkpoints under **Apache
License 2.0**. Upstream implementations, simulation software, datasets, and
assets retain their respective licenses.

MINT-SJTU fine-tuned the PaliGemma-based Ο€0.5 model on Evo-DexBench
demonstrations. The Ο€0.5 checkpoints are subject to the Gemma Terms of Use,
including the use restrictions in the Gemma Prohibited Use Policy. See the
[Gemma Terms of Use](pi05/LICENSE_GEMMA.txt), [redistribution notice](pi05/NOTICE),
and [Gemma Prohibited Use Policy](https://ai.google.dev/gemma/prohibited_use_policy).

## πŸ™ Acknowledgement

We thank the authors of
[Diffusion Policy](https://github.com/real-stanford/diffusion_policy),
[KineDex](https://github.com/DinoMini00/KineDex_code),
[OpenPI](https://github.com/Physical-Intelligence/openpi),
[LeRobot](https://github.com/huggingface/lerobot),
[ManiSkill](https://github.com/haosulab/ManiSkill), and
[SAPIEN](https://github.com/haosulab/SAPIEN) for their open-source tools.
The adapters pin Diffusion Policy to
`5ba07ac6661db573af695b419a7947ecb704690f`, KineDex to
`9246f77d7b969b181b0f1b600601b9a9c8083011`, and OpenPI to
`15a9616a00943ada6c20a0f158e3adb39df2ccac`.

## πŸ“„ Citation

If you find Evo-DexBench useful in your research, please cite:

```bibtex
@misc{cheng2026evodexbenchbenchmarkinggeneralizationrelated,
      title={Evo-DexBench: Benchmarking Generalization across Related Tasks for Dexterous Manipulation},
      author={Bing Cheng and Yiran Mao and Zewei Ye and Yifan Jin and Xinyi Chen and Ruifeng Tu and Shuhuai Wang and Tao Lin and Zhimu Zhou and Yuxin Du and Fangwei Zhong and Junchi Yan and Bo Zhao},
      year={2026},
      eprint={2610.21180},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2610.21180},
}
```