Diffusion Policy β€” put-bread-in-container (3 cameras, hardware-limit normalization)

LeRobot Diffusion Policy trained on put-bread-in-container for the ROBOTIS FFW SG2 Rev1, using shared-norm statistics pooled across its composition group.

Cameras

cam_left_head, cam_left_wrist, cam_right_wrist β€” all re-encoded to 240x240; the head camera is required for these tasks (the wrist views cannot see the object). Normalization bounds come from the robot's URDF joint limits, not from data -- see below.

Diffusion Policy requires every camera to share one resolution, and this robot's do not (head 376x672, wrist 424x240). The wrist-only variant is uniform as recorded; the 3-camera variant required re-encoding all views to a common size.

Composition group D

Bounds are hardware-derived, not data-derived: each joint uses its URDF <limit lower/upper>, with a 75% pad on the grippers, head and lift joints (whose URDF limits do not cover the observed driven range) and fixed +/-1.0 on the 3 odometry state dims (no URDF joint covers base velocity; the engine zero-pads them at inference and they carry no loss).

This transform never changes when data is added, so adding demonstrations to any group member does not invalidate the others or require a retrain. min=q01 and max=q99, mean=(lo+hi)/2, std=(hi-lo)/2, so MIN_MAX, QUANTILES and MEAN_STD all yield the same mapping -- these policies are composable across architectures as well (GR00T reads q01/q99, Diffusion Policy reads min/max, SmolVLA reads mean/std).

Members: put-bread-in-container, put-bread-in-tray, put-bread-in-pan.

sha256(observation.state + action, normalization fields)[:12] = 1184068d20ae

Only compose models reporting this same hash.

Note on cross-architecture composition: the GR00T policies for these same tasks share the same pooled statistics file but consume different fields β€” GR00T uses q01/q99 min-max (use_percentiles=True), Diffusion Policy uses min/max (STATE/ACTION default to MIN_MAX). So diffusion composes with diffusion and GR00T with GR00T, but not across the two.

Training β€” LeRobot defaults

Policy diffusion (LeRobot 0.6.1, ROBOTIS lerobot-cyclo fork)
Steps 100 000
Batch size 8
Optimizer lr 1e-4, betas (0.95, 0.999), weight decay 1e-6
Noise scheduler DDPM
Params 287504496
Data rate 15 fps
Final train loss 0.000

Dataset in LeRobot v3.0 format (converted from v2.1, with pooled statistics restored after conversion β€” the v2.1β†’v3.0 converter regenerates stats and would otherwise have replaced the group-pooled values with per-task ones).

Downloads last month
9
Safetensors
Model size
0.3B params
Tensor type
F32
Β·
Video Preview
loading