Downloads · 30 days
15
15% of all-time downloads
ahmedsohail2003/act-so101-pickplace-dr2
act-so101-pickplace-dr2 is a robotics model from ahmedsohail2003. 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.
ACT (~52M) trained from scratch on so101-sim-pickplace-dr2 — 210 domain-randomized SO-ARM100 pick-and-place demonstrations of which ~30% deliberately oversample a small near-field spawn band (r∈[0.19,0.23], θ∈[−14°,+2…
Downloads · 30 days
15
15% of all-time downloads
All-time downloads
103
Public
Parameters
51.6M
206 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors206 MB · 100%
From the Hugging Face model README
ACT (~52M) trained from scratch on
so101-sim-pickplace-dr2 —
210 domain-randomized SO-ARM100 pick-and-place demonstrations of which ~30%
deliberately oversample a small near-field spawn band (r∈[0.19,0.23],
θ∈[−14°,+2°]) covering the pocket where the previous best policy,
ACT-DR, put all
5 of its 50-episode-eval failures (spawn r ≈ 0.19–0.21 m). Same recipe
otherwise (chunk 45, n_action_steps 15, batch 8; 75k steps to approximately
match epochs on the larger set, ~25.7 vs ~28.7). The hypothesis was ≥95%
nominal. The result is a documented negative: the targeted data closed the
measured hole everywhere we probed — and opened a new one.
50 evaluation episodes, fixed eval seed (identical spawn sequence for both models):
| 50-ep nominal | failures (episode #) | |
|---|---|---|
| ACT-DR | 45/50 (90%) | {1, 10, 22, 25, 26} — all near-field, spawn r≈0.19–0.21 |
| ACT-dr2 (this model) | 44/50 (88%) | {3, 6, 8, 26, 43, 44} — five far-field, spawn r≈0.256–0.266, plus shared ep 26 |
The two failure sets share only episode 26. dr2 fixed 4 of ACT-DR's 5
failures and introduced 5 new ones — a coverage swap, confirmed on fixed
spawn grids (scripts/probe_spawns.py):
| 12-spawn fixed grid | ACT-DR | ACT-dr2 |
|---|---|---|
| old pocket (r 0.200–0.212, θ −10°…−3°) | 5/12 | 12/12 |
| far field (r 0.250–0.268, θ −9°…−1°) | 12/12 | 4/12 (0/8 at r ≥ 0.259) |
Robustness sweep (15 eps/level, same seed across levels):
| nominal | + visual DR | + physics DR | + full DR | |
|---|---|---|---|---|
| ACT-DR | 87% | 87% | 87% | 100% |
| ACT-dr2 | 80% | 87% | 73% | 93% |
Temporal ensembling (inference-only, coeff 0.01, 20 eps): 18/20 (90%) — comparable to ACT-DR's 18/20 under the same protocol.
Follow-ups this predicts: append pocket episodes to the full uniform set at a lower mixing fraction (e.g. 10–15%), or reweight per-sample loss instead of resampling — either preserves far-field exposure while still covering the pocket. The cleanest attribution experiment is an untargeted 210-episode control retrain at 75k steps, which isolates the reweighting effect from the episode-count/step changes.
lerobot-train, single Kaggle T4, AMP — 75k steps
(~25.7 epochs of 210 episodes; ACT-DR: 60k steps ≈ 28.7 epochs of 150)--policy.type=act --policy.chunk_size=45 --policy.n_action_steps=15 --batch_size=8from lerobot.policies import make_pre_post_processors
from lerobot.policies.act.modeling_act import ACTPolicy
repo = "ahmedsohail2003/act-so101-pickplace-dr2"
policy = ACTPolicy.from_pretrained(repo).to("cuda").eval()
pre, post = make_pre_post_processors(
policy_cfg=policy.config, pretrained_path=repo,
preprocessor_overrides={"device_processor": {"device": "cuda"}},
)
# batch: observation.state (1,6) + observation.images.front / .wrist (1,3,224,224) in [0,1]
action = post(policy.select_action(pre(batch)))
| Model | Data | Nominal | Robustness (n/v/p/f) |
|---|---|---|---|
| act v1 (local) | 100 nominal eps | 65% (20 eps) | 60/60/53/40 |
| -v2 | 160 eps + recovery demos | 50% (20 eps) | 47/33/40/33 |
| -dr | 150 DR eps | 90% (50 eps) | 87/87/87/100 |
| -dr2 (this) | 210 DR eps, 30% pocket | 88% (50 eps) | 80/87/73/93 |
Full study in the Part A README.
Data recorded by a scripted expert (success-filtered) in the author's MuJoCo
work-cell; robot model from
MuJoCo Menagerie
(trs_so_arm100, Apache-2.0).