File size: 10,551 Bytes
1cb92e5
 
15d1dad
 
 
 
 
 
 
 
 
 
 
1cb92e5
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
---
license: apache-2.0
language:
  - en
library_name: pytorch
datasets:
  - MINT-SJTU/Evo-DexBench-dataset
tags:
  - robotics
  - dexterous-manipulation
  - diffusion-policy
  - 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)
![License](https://img.shields.io/badge/License-Apache_2.0-green)

Six 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

- **Three policies:** DP-T, DP-C, and KineDex.
- **Two checkpoints per policy:** Single2 Core and Double3 Core.
- **Four tasks per checkpoint:** separate single-arm and bimanual policies.
- **Independent model and simulation environments**, connected through the
  benchmark's WebSocket + MessagePack Policy API.

These are task-family specialists, not universal policies for all 30 benchmark
tasks. This repository contains model checkpoints, not simulation assets,
demonstrations, or training code.

## πŸ“¦ Contents

The six checkpoints total approximately **5.80 GB** (**5.40 GiB**).

```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
β”œβ”€β”€ manifest.json
└── README.md
```

| Policy | Architecture | Inputs | Single2 / Double3 size |
| --- | --- | --- | --- |
| DP-T | Official Diffusion Policy Transformer | RGB + robot state | 0.171 / 0.171 GB |
| DP-C | Official Diffusion Policy convolutional U-Net | RGB + robot state | 1.177 / 1.185 GB |
| KineDex | Official KineDex visual/tactile diffusion policy with the Evo-DexBench adapter | RGB + robot state + tactile | 1.544 / 1.552 GB |

Each checkpoint was trained jointly on its four Core tasks. The exported
payload retains the original inference EMA weights, normalizers, model
configuration, and policy metadata **without changing tensor precision or
values**. EMA weights are stored under the inference model entry; duplicate
weights, optimizer state, and training-progress state have been removed.
These files are **inference-only**, not full training-resume checkpoints.
They use the native policy-workspace `.ckpt` format, not a Transformers or
Diffusers `from_pretrained` model layout.

The [manifest](manifest.json) records file sizes, SHA256 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 |

### Observation and action contract

All checkpoints use **30 Hz control** and **two observation frames**. Benchmark
simulation runs at **120 Hz**. Default receding-horizon execution applies eight
actions before requesting the next chunk.

| 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.

**Double3 uses the interaction camera, not the default dual-arm context view.**
Select the camera options shown below when evaluating its checkpoints. DP
retains the original 100-step DDPM inference; KineDex retains its checkpoint's
DDIM settings. Do not change action timing or sensor contracts to compensate
for a slower GPU.

## πŸš€ 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

In the simulator environment:

```bash
hf download MINT-SJTU/Evo-DexBench_model_access_example \
  --repo-type model --local-dir checkpoints/model-access-example
```

To download only one policy, add, for example, `--include 'DP-C/*.ckpt'`.
Only load checkpoints from trusted sources: these `.ckpt` files use Python
pickle and must be loaded through the provided model server.

### 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
```

The ten-episode commands are integration checks, not standard benchmark
results. 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

The released checkpoints are provided under **Apache License 2.0** by
**MINT-SJTU**. Upstream policy implementations, simulation software, datasets,
and assets retain their respective licenses. This repository does not
redistribute PartNet-Mobility geometry.

## πŸ™ Acknowledgement

We thank the authors of
[Diffusion Policy](https://github.com/real-stanford/diffusion_policy),
[KineDex](https://github.com/DinoMini00/KineDex_code),
[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` and KineDex to
`9246f77d7b969b181b0f1b600601b9a9c8083011`.

## πŸ“„ 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},
}
```