Upload folder using huggingface_hub
Browse files- README.md +69 -0
- best.pt +3 -0
- norm_stats.json +1 -0
- train.log +0 -0
- training_status.md +40 -0
README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# climbing-holds-rig-with-taxonomy
|
| 2 |
+
|
| 3 |
+
DP3-style point-cloud diffusion policy for grasping climbing holds with a
|
| 4 |
+
Franka arm + LEAP hand, trained on the spring-testbed-era rig dataset
|
| 5 |
+
([`rlogh/climbing-holds-rig`](https://huggingface.co/datasets/rlogh/climbing-holds-rig)).
|
| 6 |
+
|
| 7 |
+
**This is the taxonomy-conditioned model.** The point cloud + robot state are
|
| 8 |
+
fused with a 64-d grasp-type embedding (crimp / sloper / pinch / jug, one-hot)
|
| 9 |
+
before being passed into the diffusion U-Net. At inference time the operator
|
| 10 |
+
provides the grasp-type label.
|
| 11 |
+
|
| 12 |
+
The unconditioned counterpart (ablation) lives at
|
| 13 |
+
[`rlogh/climbing-holds-rig-no-taxonomy`](https://huggingface.co/rlogh/climbing-holds-rig-no-taxonomy).
|
| 14 |
+
|
| 15 |
+
## Files
|
| 16 |
+
|
| 17 |
+
| File | Size | Purpose |
|
| 18 |
+
|------|------|---------|
|
| 19 |
+
| `best.pt` | 415 MB | EMA weights + optimizer + config dict (best training loss, epoch 2939) |
|
| 20 |
+
| `norm_stats.json` | 2 KB | Min-max normalization stats — required by `evaluate.py` |
|
| 21 |
+
| `training_status.md` | <1 KB | Final loss + recent-epoch table |
|
| 22 |
+
| `train.log` | ~170 KB | Full epoch-by-epoch loss + LR log |
|
| 23 |
+
|
| 24 |
+
## Training summary
|
| 25 |
+
|
| 26 |
+
- Dataset: 200 episodes (50 / grasp type), 24,621 valid samples
|
| 27 |
+
- Epochs: 3000 (cosine LR decay after 500-step warmup)
|
| 28 |
+
- Batch size: 128, AMP enabled
|
| 29 |
+
- Best loss: **0.001670** (final 0.001760)
|
| 30 |
+
- Wall time: 8.9 h on RTX 2080 Ti
|
| 31 |
+
- Conditioning: PointNet(1024×3) → 256-d + State MLP → 128-d + **GraspType MLP → 64-d** → Fuse → 512-d
|
| 32 |
+
- U-Net dims: (256, 512, 1024), 100-step cosine DDPM
|
| 33 |
+
- State / action dim: 23 (Franka 7 + LEAP 16)
|
| 34 |
+
- `--no-grasp-conditioning` flag: OFF (taxonomy conditioning ENABLED)
|
| 35 |
+
|
| 36 |
+
## Usage (robot machine)
|
| 37 |
+
|
| 38 |
+
```bash
|
| 39 |
+
mkdir -p checkpoints/pc_with_taxonomy_rig
|
| 40 |
+
hf download rlogh/climbing-holds-rig-with-taxonomy \
|
| 41 |
+
--local-dir checkpoints/pc_with_taxonomy_rig
|
| 42 |
+
|
| 43 |
+
python3 data_collection/evaluate.py \
|
| 44 |
+
--checkpoint checkpoints/pc_with_taxonomy_rig/best.pt \
|
| 45 |
+
--pull-dist 0.130 \
|
| 46 |
+
--hold 1 --grasp-type crimp
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
`evaluate.py` autodetects the encoder type and conditioning state from the
|
| 50 |
+
embedded config dict. `--grasp-type` is required and is fed into the model's
|
| 51 |
+
grasp-type embedding branch.
|
| 52 |
+
|
| 53 |
+
## Paired-evaluation result (spring testbed, 80 paired trials, 2026-05-15)
|
| 54 |
+
|
| 55 |
+
| Grasp | WITH median | WITHOUT median | Δ | Wilcoxon p | Cohen's d |
|
| 56 |
+
|-------|-------------|----------------|---|------------|-----------|
|
| 57 |
+
| Crimp | 15.7 N | 9.2 N | +6.5 N | 0.0007 | 1.05 *** |
|
| 58 |
+
| Jug | 15.7 N | 14.4 N | +1.3 N | 0.0278 | 0.55 * |
|
| 59 |
+
| Sloper | 7.9 N | 5.2 N | +2.6 N | 0.0012 | 1.08 ** |
|
| 60 |
+
| Pinch | 15.7 N | 9.2 N | +6.5 N | <0.001 | 1.82 *** |
|
| 61 |
+
| **Overall** | **13.1 N** | **7.9 N** | **+5.2 N** | **<0.001** | **0.95 \*\*\*** |
|
| 62 |
+
|
| 63 |
+
Primary metric: slip force from a parallel-spring linear ratchet testbed. Pull is a
|
| 64 |
+
13 cm impedance-controlled displacement (180°, toward robot base) after policy
|
| 65 |
+
convergence. See repository README for full protocol.
|
| 66 |
+
|
| 67 |
+
## Citation
|
| 68 |
+
|
| 69 |
+
Repository: [github.com/rumilog/rock-climb](https://github.com/rumilog/rock-climb)
|
best.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:948116d2b3ba0eca6003d43a95bd439798e584ee69d89a8dc966d46b68611b5b
|
| 3 |
+
size 415566046
|
norm_stats.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"state_min": [-0.31995153427124023, -0.3798457980155945, -0.26970672607421875, -2.9576244354248047, -0.6354063749313354, 1.846912145614624, -0.5814480185508728, -0.6550073623657227, -0.23623061180114746, 0.09817719459533691, -0.050618886947631836, -0.1043081283569336, -0.14572572708129883, -0.055220842361450195, 0.053691864013671875, -0.16720128059387207, -0.17793917655944824, 0.1349928379058838, -0.19788098335266113, -0.40036654472351074, -0.5798420906066895, 0.0046045780181884766, 0.2193617820739746], "state_range": [0.4736313223838806, 1.529477834701538, 0.7550710439682007, 1.8895576000213623, 1.008399248123169, 1.2278730869293213, 2.4966161251068115, 1.2900779247283936, 1.4864275455474854, 1.532447099685669, 1.872990369796753, 0.40036892890930176, 2.3193788528442383, 1.6996510028839111, 1.5523886680603027, 1.3008158206939697, 2.2933013439178467, 1.5585243701934814, 1.9619615077972412, 2.3393208980560303, 0.5046796798706055, 1.5800001621246338, 1.685844898223877], "action_min": [-0.31995153427124023, -0.3418472409248352, -0.26970672607421875, -2.9576244354248047, -0.6354063749313354, 1.846912145614624, -0.5814480185508728, -0.6550073623657227, -0.23623061180114746, 0.09817719459533691, -0.050618886947631836, -0.1043081283569336, -0.14572572708129883, -0.055220842361450195, 0.053691864013671875, -0.16720128059387207, -0.17793917655944824, 0.1349928379058838, -0.19788098335266113, -0.40036654472351074, -0.5798420906066895, 0.0046045780181884766, 0.2193617820739746], "action_range": [0.4736313223838806, 1.4914793968200684, 0.7550674080848694, 1.8895576000213623, 1.008399248123169, 1.2278730869293213, 2.4966161251068115, 1.2900779247283936, 1.4864275455474854, 1.532447099685669, 1.872990369796753, 0.40036892890930176, 2.3193788528442383, 1.6996510028839111, 1.5523886680603027, 1.3008158206939697, 2.2933013439178467, 1.5585243701934814, 1.9619615077972412, 2.3393208980560303, 0.5046796798706055, 1.5800001621246338, 1.685844898223877], "normalization": "minmax"}
|
train.log
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
training_status.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Training Status
|
| 2 |
+
|
| 3 |
+
**Mode:** Point Cloud (DP3)
|
| 4 |
+
|
| 5 |
+
**Epoch:** 3000 / 3000
|
| 6 |
+
|
| 7 |
+
**Current loss:** 0.001760
|
| 8 |
+
|
| 9 |
+
**Best loss:** 0.001670
|
| 10 |
+
|
| 11 |
+
**Elapsed:** 8.9 hours
|
| 12 |
+
|
| 13 |
+
**ETA:** 0.0 hours
|
| 14 |
+
|
| 15 |
+
**Dataset:** /mnt/ssd/rumi_tele_datasets/climbing_holds_rig.zarr (23-dim, 24621 samples)
|
| 16 |
+
|
| 17 |
+
## Recent Losses
|
| 18 |
+
|
| 19 |
+
| Epoch | Loss |
|
| 20 |
+
|---|---|
|
| 21 |
+
| 2981 | 0.001773 |
|
| 22 |
+
| 2982 | 0.001680 |
|
| 23 |
+
| 2983 | 0.001740 |
|
| 24 |
+
| 2984 | 0.001757 |
|
| 25 |
+
| 2985 | 0.001718 |
|
| 26 |
+
| 2986 | 0.001692 |
|
| 27 |
+
| 2987 | 0.001702 |
|
| 28 |
+
| 2988 | 0.001738 |
|
| 29 |
+
| 2989 | 0.001737 |
|
| 30 |
+
| 2990 | 0.001699 |
|
| 31 |
+
| 2991 | 0.001713 |
|
| 32 |
+
| 2992 | 0.001707 |
|
| 33 |
+
| 2993 | 0.001773 |
|
| 34 |
+
| 2994 | 0.001736 |
|
| 35 |
+
| 2995 | 0.001718 |
|
| 36 |
+
| 2996 | 0.001727 |
|
| 37 |
+
| 2997 | 0.001738 |
|
| 38 |
+
| 2998 | 0.001714 |
|
| 39 |
+
| 2999 | 0.001733 |
|
| 40 |
+
| 3000 | 0.001760 |
|