File size: 3,646 Bytes
a3f036c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
license: apache-2.0
library_name: pytorch
pipeline_tag: robotics
tags:
  - act
  - action-chunking
  - franka
  - isaac-lab
  - imitation-learning
datasets:
  - Boyun7/GroundProbe-dataset
---

# GroundProbe ACT Checkpoints

Two Action Chunking with Transformers (ACT) policies trained on one cell of
the [GroundProbe demonstrations](https://huggingface.co/datasets/Boyun7/GroundProbe-dataset):
`quest_l2_cubes_pilot`, instruction T1 ("Pick the left red block and place it
in the bin") at the `clean` complexity, simulated Franka Panda in NVIDIA
Isaac Lab-Arena.

ACT has no language input, so these are **not grounding baselines**. They
exist to show that the demonstrations and the closed-loop evaluation path
support learning the skill, and they are useful as a reference point when
bringing up a new policy on the benchmark.

Code, scenes and the evaluation harness: <https://github.com/AndersonYu7/Benchmark>

## Checkpoints

| folder | action encoding | dataset column | qpos input | best epoch |
|---|---|---|---|---:|
| `delta_pose/` | delta pose, 7-D | `action` | TCP pose, 7-D | 510 |
| `joint/` | absolute joint targets, 8-D | `action.joint` | 7 joint positions + total finger opening | 230 |

Each folder holds:

- `policy_best.ckpt`: the weights with the lowest validation loss
- `config.json`: architecture settings, the training/validation episode split and their layout seeds
- `dataset_stats.pkl`: the normalisation statistics the policy was trained with

`config.json` names the delta-pose encoding `"action_space": "tcp"`; that is
the `action` column of the dataset.

## Results

Closed-loop rollouts under the benchmark success criterion (target inside the
bin for 30 consecutive control steps), at most 1000 control steps, executing
the first 25 actions of every 50-action chunk before re-querying the policy.

| policy | evaluation layouts | success | Wilson 95% |
|---|---|---:|---|
| delta pose | the 20 training-demonstration layouts | 17/20 (85%) | [64%, 95%] |
| joint | the 20 training-demonstration layouts | 16/20 (80%) | [58%, 92%] |
| joint | the 5 held-out validation layouts | 2/5 (40%) | [12%, 77%] |
| joint | 20 layouts outside the collection seed range | 5/20 (25%) | [11%, 47%] |

With 50 demonstrations of one cell, the drop on unseen layouts is expected.

## Training

ResNet-18 backbone, 4 encoder / 7 decoder layers, hidden size 512,
feed-forward 3200, 8 heads, dropout 0.1, chunk size 50, both cameras
(`third_camera`, `wrist_camera`) at 240×240, AdamW with learning rate 1e-5
(backbone 1e-5) and weight decay 1e-4, batch size 8, KL weight 10.
45 training and 5 validation episodes; validation every 10 epochs; stopped
after 300 epochs without improvement.

## Using them

The evaluation harness loads these through `script/policy_adapters.py`
(`ACTAdapter`), which reads `config.json` and `dataset_stats.pkl` from the
checkpoint's folder:

```bash
hf download Boyun7/GroundProbe-ACT --local-dir act_ckpt

python -m script.eval_policy --policy ACT --scene cubes \
    --ckpt act_ckpt/joint/policy_best.ckpt \
    --eval-episodes 20 --exec-horizon 25 --headless --out eval_out/act_joint \
    --environment l2_spatial_tasks.examples.manipulation.l2_spatial_env:L2SpatialEnv \
    --enable_cameras l2_spatial_env --embodiment franka --enable_cameras True
```

`config.json` records the dataset path as `dataset/quest_l2_cubes_pilot`,
relative to the repository root, and the harness reads the control rate and
the joint policy's starting configuration from it. Download the dataset into
`dataset/` at the repository root before evaluating.

## License

Apache 2.0, matching the code and the dataset.