# AnyH — FR3 Real-Robot Weights Real-robot policy checkpoints for the **FR3 Fundamental-Taskset** (single-arm Franka FR3, 7-DoF end-effector control, front + wrist cameras, 15 Hz). These weights back the AnyH any-execution-horizon study on a physical robot. All deploy conventions (action space, proprioception, image preprocessing, control frequency, per-checkpoint inference parameters) are specified in **[MANIFEST.md](MANIFEST.md)** — read it before serving any checkpoint. Norm/stats are carried inside each checkpoint payload; no separate stats files are needed. To stand up the inference server on a lab workstation (env, code clone, weight download, launch, morning runbook), follow **[SETUP_WORKSTATION.md](SETUP_WORKSTATION.md)**. ## Tasks (8-family Fundamental-Taskset) | id | instruction | |----|-------------| | 0 | pick up the orange cube and place it in the bowl | | 1 | pick up the white cube and place it in the bowl | | 2 | push the grey cube into the dustpan | | 3 | push the orange cube into the dustpan | | 4 | stack the blue cup into the gray cup | | 5 | stack the pink cup into the gray cup | | 6 | sweep the grey cube into the dustpan | | 7 | sweep the orange cube into the dustpan | The A2A any-h model is language-free (one model handles all 8 tasks with no prompt). ## Checkpoints (this release) Located under `weights/`. ### A2A checkpoints (epoch-400) | path | policy | NFE | horizon | |------|--------|-----|---------| | `weights/fr3_anyh/400.ckpt` | dynamic_a2a_v5z (1-NFE any-h) | 1 | dial h ∈ {2,4,8,16,32}, H_max=32 | | `weights/fr3_fixh8/400.ckpt` | dynamic_a2a_v5z (fixed) | 1 | h=8 | | `weights/fr3_fixh16/400.ckpt` | dynamic_a2a_v5z (fixed) | 1 | h=16 | | `weights/fr3_multistep/400.ckpt` | fm_dit (multi-step) | 10 | h=8 | ### π0.5 any-h baseline (openpi format, step-30000) | path | policy | horizon | |------|--------|---------| | `weights/pi05_anyh_fr3/30000/` | π0.5 flow-matching, any-h finetune (from pi05_base) | dial h ∈ {2,8,16,32}, H_max=32 | This is an **openpi PyTorch checkpoint directory**, not a single `.ckpt`. It contains `model.safetensors` plus `assets/.../norm_stats.json`; serve it directly with the openpi PyTorch policy loader pointed at the `30000/` directory. Language-conditioned (per-task prompt). ### π0.5 canonical baseline (openpi format, step-30000) | path | policy | horizon | |------|--------|---------| | `weights/fr3_vanilla_L50/30000/` | π0.5 flow-matching, canonical fixed L=50 (from pi05_base) | fixed L=50 | Canonical π0.5 external anchor: a standard fixed-horizon (L=50) finetune, no any-h dial. Same **openpi PyTorch checkpoint directory** layout as the any-h baseline (`model.safetensors` + `assets/.../norm_stats.json`); serve with the openpi PyTorch policy loader pointed at the `30000/` directory. Language-conditioned (per-task prompt). ### π0.5 fixed-horizon ablation control (openpi format, step-30000) | path | policy | horizon | |------|--------|---------| | `weights/fr3_vanilla_h32/30000/` | π0.5 flow-matching, any-h dial OFF, fixed L=32 (from pi05_base) | fixed L=32 | Ablation control for the any-h dial: identical π0.5 finetune recipe with the any-horizon conditioning disabled and a fixed execution horizon of L=32 (matching H_max of the any-h baseline). Same **openpi PyTorch checkpoint directory** layout (`model.safetensors` + `assets/.../norm_stats.json`); serve with the openpi PyTorch policy loader pointed at the `30000/` directory. Language-conditioned (per-task prompt). ## Data bridge `bridge/fr3_to_zarr.py` converts the LeRobot v2.0 source dataset (parquet state/action + mp4 front/wrist video) into the A2A training zarr layout. Kept here as a record of the exact data semantics (7-dim EEF state/action, 256×256 bilinear-resized frames, per-episode cumulative ends).