dp-blockpick-10k-statenoise
LeRobot diffusion policy (ROBOTIS lerobot-cyclo fork, 288 M parameters) for a top-down block pick with the left arm of the ROBOTIS FFW SG2 (SG2 + ROBOTIS CAD gripper, calibrated wrist cameras, 29.25 in table).
Files at the repo root = step 100k (DiffusionPolicy.from_pretrained("padiredd/dp-blockpick-10k-statenoise")); step-10000/, step-20000/, step-30000/, step-40000/, step-50000/, step-60000/, step-70000/, step-80000/, step-90000/ = intermediate checkpoints
(every 10k steps).
| data | padiredd/pick-cube-topdown-region10k-full-dr2-3cam: 11,710 sim demos, 1,984,945 frames, ROBOTIS FFW SG2 in Isaac Lab, left-arm top-down pick of a lime 5x5x4 cm block anywhere in the arm's full reachable table region (1,154 cm2), dr2 randomization (start pose +-2 deg, gripper open/close per episode, slow pushes with clean labels, spotlights, camera shifts, demo timing, table height -2..+2 cm) |
| sampling | uniform over all frames (LeRobot default EpisodeAwareSampler) |
| inputs / outputs | head + left wrist + right wrist cameras, each 240x240, + 22-dim joint state; action = 16 joint targets, 15 Hz |
| image augmentation | heavy, random order, up to 5 of: brightness 0.6-1.4, contrast 0.6-1.4, saturation 0.3-1.7, hue +-0.1, sharpness 0.3-2.0, affine +-10 deg / 10 % / 0.9-1.1, perspective 0.2, blur, random erasing, grayscale |
| state noise | 1 deg Gaussian noise on the 7 left-arm joint positions of the state input during training (state_noise_std in config.json is a field of our lerobot-cyclo patch; delete it to load with stock lerobot-cyclo, it is training-only) |
| recipe | 100k steps, batch 32, ResNet18 per camera, Adam 1e-4, cosine, DDPM 100 steps, horizon 64 / 32 executed, n_obs_steps 1, seed 1000 |
| hardware | one NVIDIA RTX A5000 24 GB, 4-5.7 steps/s (shared with sim data collection late in the run) |
Task string: "pick up the lime green block with the left arm". Simulation evaluation results are below.
Sim evaluation
Evaluated 2026-11-02 in the collection scene (Isaac Sim 5.1, data_collection/rollout_policy.py; protocol and scripts in
data_collection/region10k/eval/ of the cyclo_lab-real2sim repo). 100 block poses uniform over the whole left-arm
pickable region (the region the training data covers: x >= 0.275 m, reach profile from the shoulder point (0.006, 0.228),
yaw +-10 deg; eval/points_region100.json), the same 100 poses for every model and condition, so results are paired.
Nominal scene: yaml start pose (no offset), table at 29.25 in (no height offset), no pushes, nominal lights. Success = block
held >= 5 cm above the table for 1 s within 400 ticks (26.7 s at 15 Hz). Samplers: the checkpoint's DDPM (100 steps) and
DDIM with 10 steps (eta 0). Conditions: clean (nominal look) and dr (random backdrop real photo / texture / grid,
table colour / texture, block colour, lights, camera mounts: appearance randomization NONE of these models saw in training).
Step 100k (files at the repo root), success over 100 episodes:
| model | DDPM clean | DDIM-10 clean | DDPM dr | DDIM-10 dr |
|---|---|---|---|---|
| fullregion-dr2 | 74% | 66% | 60% | 54% |
| fullregion-dr2-statenoise (this model) | 48% | 26% | 31% | 16% |
| cotrain-real075-statenoise | 78% | 87% | 59% | 63% |
Checkpoint sweep, DDIM-10, clean (step-<n>/ folders): success still rising at 100k, so longer training should help.
| model | 20k | 40k | 60k | 80k | 100k |
|---|---|---|---|---|---|
| fullregion-dr2 | 0% | 1% | 26% | 49% | 66% |
| fullregion-dr2-statenoise (this model) | 0% | 5% | 22% | 24% | 26% |
| cotrain-real075-statenoise | 33% | 46% | 76% | 87% | 87% |
This model by block position (picked / episodes per band) and failure type. "miss" = the gripper closed on air (block never lifted), the dominant failure; "holding@timeout" = block in the gripper when the 400 ticks ran out:
run x0.28-0.33 x0.33-0.39 x0.39-0.44 x0.44-0.50 | y-0.08-+0.15 y+0.15-+0.35 y+0.35-+0.65 | miss(closed) holding@timeout other
dr2sn_100k_ddpm_clean 14/35 15/23 16/28 3/14 | 9/26 13/36 26/38 | 48 2 2
dr2sn_100k_ddpm_dr 7/35 9/23 12/28 3/14 | 11/26 12/36 8/38 | 52 1 16
dr2sn_100k_ddim10_clean 12/35 8/23 6/28 0/14 | 1/26 7/36 18/38 | 68 0 6
dr2sn_100k_ddim10_dr 7/35 1/23 6/28 2/14 | 2/26 4/36 10/38 | 71 5 8
eval/<run>.json = full per-episode results (block pose, picked, ticks, max lift, final gripper position, randomization
draw); eval/videos/ = head-camera videos of 2 picked + 2 failed episodes per condition.
- Downloads last month
- 38