Downloads · 30 days
14
24% of all-time downloads
Suyang99/xlerobot-act-cup-grasp-right
xlerobot-act-cup-grasp-right is a robotics model from Suyang99. Use it for the robotics task on the model card, and read the license before you ship it in a product. It is set up for lerobot. The card lists the license as apache-2.0.
Trained with LeRobot ACT on Suyang99/xlerobot-cup-grasp-20260820-0230.
Downloads · 30 days
14
24% of all-time downloads
All-time downloads
58
Public
Parameters
51.7M
414 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors207 MB · 100%
From the Hugging Face model README
Trained with LeRobot ACT on
Suyang99/xlerobot-cup-grasp-20260820-0230.
| Task | Pick up the cup and place it down — right arm only (arms: 1.0) |
| Dataset | 50 episodes / 19,453 frames / 30 fps, 5 cup positions |
| Policy | ACT, 51.6 M parameters |
Checkpoint on main | step 20 000 of 20 000 (training ran to completion) |
| Earlier revision | step 4 000, kept at revision a920f833 |
| Trained on | Jetson Orin Nano Super (8 GB unified), torch 2.8.0, batch size 2 |
| Cameras | head, left_arm_wrist, right_arm_wrist |
| Action / state | 17-dim (left arm 6 · right arm 6 · head 2 · base 3) |
A previous version of this card read
step 200001211111. That was an upload-script bug (tr -dc '0-9'concatenated every digit intraining_step.json), not a real step count. Fixed.
Read this before comparing the checkpoint against anything.
| step | loss | l1_loss | kld | grad norm | epoch |
|---|---|---|---|---|---|
| 100 | 11.630 | 0.413 | 1.1220 | 378.0 | 0.01 |
| 2 000 | 1.926 | 0.249 | 0.1680 | 110.0 | 0.21 |
| 6 000 | 0.664 | 0.168 | 0.0500 | 57.2 | 0.62 |
| 10 000 | 0.310 | 0.137 | 0.0170 | 34.1 | 1.03 |
| 14 000 | 0.196 | 0.115 | 0.0080 | 23.4 | 1.44 |
| 18 000 | 0.159 | 0.107 | 0.0050 | 18.8 | 1.85 |
| 20 000 | 0.138 | 0.094 | 0.0040 | 17.3 | 2.06 |
The curve is healthy — monotone, no divergence, no oscillation, gradient norm down 95%. But over the last 5 000 steps the mean loss still fell 13.2% (0.1750 → 0.1519). A converged run is flat there. This checkpoint stopped where it was still learning.
The reason is the step budget: batch_size = 2 × 20 000 steps = 40 000 samples over a
19 453-frame dataset — 2.06 epochs total. ACT is normally trained far longer.
eval_freq was None, so every number above is training loss. Nothing here measures
overfitting or generalisation, and loss: 0.138 must not be read as "the policy learned the
task". The project's own guidance is explicit that training loss is not an acceptance criterion.
The generalisation evidence that does exist comes from the sibling SmolVLA run
(Suyang99/xlerobot-smolvla-cup-grasp-right),
which was given a held-out cup position: unseen-position loss 0.2300 vs trained-position
0.2348 (0.98×). That is offline replay of recorded observations, not a closed-loop rollout.
kl_weight = 10.0, yet KLD fell from 1.122 to 0.004. The CVAE latent is effectively unused and
the model has degenerated to deterministic chunk regression. Not unusual for ACT on a small
single-task dataset, but worth knowing before treating the latent as meaningful.
Ten checkpoints were written during training (every 2 000 steps). Eight no longer exist — they were deleted from the Jetson under disk pressure and never uploaded. Only these two survive:
| step | where |
|---|---|
| 4 000 | revision a920f833 of this repo |
| 20 000 | main |
hf download Suyang99/xlerobot-act-cup-grasp-right \
--revision a920f833 --local-dir ./act_step4000
(huggingface-cli is deprecated and on recent versions prints help and exits 0 without
downloading anything — use hf, or snapshot_download(..., revision="a920f833") from Python.)
Dimensions 0–5 (the left arm) hold a single constant across every frame — the recording ran with
arms: 1.0, so the left arm never followed the operator. This policy therefore cannot drive the
left arm, and it will not transfer to a left-arm version of the task. A bimanual task needs its
own recording with arms: 0.0.
The gripper is being replaced (Fin-Ray blade 68 mm → 90 mm). Once that lands, the arm's dynamics change and this checkpoint's real-world behaviour has to be re-measured.
As of 2026-08-21 this checkpoint has never driven the physical arm. Any policy-to-motor path must go through the project's safety wrapper first (NaN/inf rejection, per-joint absolute and per-step clamps, Cartesian envelope rejection, base zeroing, head lock).