Instructions to use Suyang99/xlerobot-act-cup-grasp-right with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use Suyang99/xlerobot-act-cup-grasp-right with LeRobot:
- Notebooks
- Google Colab
- Kaggle
ACT β right-arm cup grasp (XLeRobot)
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.
Training did not converge β it was cut off while still improving
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.
No validation was run
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.
KLD collapsed
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.
Checkpoint availability
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.)
Important: the left arm is parked in this data
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.
Hardware caveat
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.
Not yet run on a robot
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).
- Downloads last month
- 14