Updated 26 September 2026. Goal: a vision policy that empties a box of 7–10 red tubes on the real UR5 + RG2 using only the wrist Intel RealSense D415 image and the robot state. The privileged scripted expert collects demonstrations in simulation under domain randomization, an ACT policy is trained on wrist RGB + 16 robot-state values, evaluated in simulation against the expert on the same starts, and exported as a bundle for the robot.
done 2026-09-24 D415 on mount v4, 320×180 policy image, DR in four ablatable groups. Found and fixed: overlapping box spawns, pile towers that ejected tubes, idle-arm drift from gain DR. Stability numbers below are from the final configuration.



| Real camera | Intel RealSense D415 on mount v4 (user-approved pose; hand-eye not measured) |
|---|---|
| Real stream | 1280×720 RGB at 30 fps (user's choice) |
| Intrinsics (factory) | fx 913.9, fy 912.1, cx 644.2, cy 347.9 px; distortion coefficients all zero |
| Policy image | 320×180 RGB: the 1280×720 frame area-averaged 4×4 (no crop), then a JPEG q85 round trip, identical to the stored training frames |
| Sim render | 320×180 directly, D415 intrinsics scaled by 1/4; D455 removed; mount coloured blue |
| Real D415 frame comparison | done 26 Sep with the user's wrist video: colours and lighting calibrated (see image) |
Gains are multipliers; distances in metres, angles in degrees; ranges are the full range at DR scale 1 (10% of worlds are nominal). A disabled group keeps all random draws, so ablations use identical starts.
| Group | Field | Range |
|---|---|---|
| layout (always on) | tube_count | [7, 10] |
| layout (always on) | rows_fraction | 0.5 |
| layout (always on) | table_xy_m | 0.03 |
| layout (always on) | table_yaw_deg | 3.0 |
| layout (always on) | basket_xy_m | 0.01 |
| layout (always on) | basket_yaw_deg | 5.0 |
| layout (always on) | robot_xy_m | 0.01 |
| layout (always on) | robot_yaw_deg | 1.5 |
| layout (always on) | initial_joint_deg | [6.0, 4.0, 5.0, 6.0, 5.0, 12.0] |
| layout (always on) | initial_gripper_open_min | 0.85 |
| camera | camera_xyz_m | 0.01 |
| camera | camera_rotation_deg | 5.0 |
| camera | camera_focal_fraction | 0.03 |
| camera | camera_principal_px | [12.0, 12.0] |
| camera | lens_k1 | 0.03 |
| camera | motion_blur_px | 3.0 |
| camera | motion_blur_prob | 0.3 |
| camera | stale_frame_prob | 0.05 |
| appearance | light_gain | [0.6, 1.6] |
| appearance | light_tint | [0.88, 1.12] |
| appearance | light_ambient_max | 0.12 |
| appearance | light_pos_m | 0.8 |
| appearance | light_dir_deg | 35.0 |
| appearance | light_shadow_prob | 0.8 |
| appearance | specular_gain | [0.5, 1.5] |
| appearance | material_gain | [0.9, 1.1] |
| appearance | box_colour_gain | [0.7, 1.5] |
| appearance | table_colour_gain | [0.8, 1.25] |
| appearance | table_tint | [0.92, 1.08] |
| appearance | table_saturation | [0.5, 2.2] |
| appearance | tube_colour_shade | [0.85, 1.3] |
| appearance | tube_saturation | [0.6, 1.05] |
| appearance | background_gain | [0.7, 1.3] |
| appearance | background_tint | [0.95, 1.05] |
| appearance | exposure_gain | [0.75, 1.25] |
| appearance | white_balance | [0.92, 1.08] |
| appearance | image_noise_std_255 | 3.0 |
| physics | tube_mass_scale | [0.8, 1.25] |
| physics | box_mass_scale | [0.8, 1.25] |
| physics | friction_scale | [0.7, 1.3] |
| physics | friction_per_object | True |
| physics | gripper_force_scale | [0.8, 1.2] |
| physics | gripper_kp_scale | [0.8, 1.2] |
| physics | arm_kp_scale | [0.85, 1.15] |
| physics | joint_damping_scale | [0.8, 1.2] |
| control | action_delay_steps | [0, 0] |
| control | action_noise_std | 0.05 |
| control | state_noise_joint_rad | 0.0005 |
| control | state_noise_width | 0.0005 |
| control | state_noise_tcp_m | 0.0005 |
| control | state_noise_rot | 0.002 |
| Pile settling, binpick-dr-7 | 12/32 settled in 5 s; 0 tubes left the box; 0 non-finite; peak penetration 0.09 mm |
| Pile settling, binpick-dr-8 | 9/32 settled in 5 s; 0 tubes left the box; 0 non-finite; peak penetration 0.49 mm |
| Pile settling, binpick-dr-9 | 5/32 settled in 5 s; 0 tubes left the box; 0 non-finite; peak penetration 0.43 mm |
| Pile settling, binpick-dr-10 | 2/32 settled in 5 s; 1 tubes left the box; 0 non-finite; peak penetration 0.37 mm |
| Pile settling, binpick-nominal-10 | 5/32 settled in 5 s; 1 tubes left the box; 0 non-finite; peak penetration 0.41 mm |
| Resting boxes, 10 tubes, 50 s, full DR | 0/192 boxes toppled; max box rise 0.17 mm |
| Expert running, [7, 10] tubes, 120 s, full DR | 0/64 worlds non-finite; 0 boxes toppled in 0 worlds |
| Sim 320×180 render vs 1280×720 render area-averaged 4×4 (the real pipeline) | mean abs difference 4.9–5.7/255 over 24 frames at full DR (states match to 30 mm; edge energy within 1.5%) |
done 2026-09-25 2-box demonstrations: 413 accepted episodes (D 174, E 239; expert 91-92% picked, 51-53% cleared per run). DAgger round 0 (policy-driven states labelled by the expert) started and stopped with partial data.
| Tubes | Episodes | Picked | Rate | Cleared | Valid | Mean time |
|---|---|---|---|---|---|---|
| 7 | 22 | 142/154 | 92% | 13/22 | 20/22 | 123 s |
| 8 | 34 | 251/272 | 92% | 18/34 | 21/34 | 157 s |
| 9 | 26 | 196/234 | 84% | 10/26 | 14/26 | 202 s |
| 10 | 46 | 403/460 | 88% | 15/46 | 24/46 | 238 s |
Tube, box and table colours and the lighting calibrated against the real D415 wrist video; pedestal turned 90°, smooth action noise, 2 mm near plane.
External and wrist views after the pedestal, action-noise and near-plane fixes.
Stand (pedestal) turned 90° about z; action noise now smooth (gripper no longer jitters: direction reversals in slow motion 37% -> 10%); camera near plane 2 mm so the finger linkage close to the D415 is drawn instead of see-through. 8 tubes, 1 placed in 20 s.
8 tubes (messy pile): 7 picked and placed in the right box in 98 s, valid. EE = closed-fingertip midpoint, robot base rotated 180° with home shoulder pan 0, D415 optical centre on the front glass.
3-box task (paired with the 3-box baseline, 91.5% picked). One DR group switched off at a time; every random draw is kept, so the piles are identical to the full-DR run on those starts.
| Run | Tubes picked | Cleared | Full DR on the same starts |
|---|---|---|---|
| No DR at all | 538/566 (95.1%) | 50/64 | 524/566 (92.6%), cleared 31/64 |
| Physics DR off | 512/566 (90.5%) | 35/64 | 524/566 (92.6%), cleared 31/64 |
| Control DR off (action and state noise) | 543/565 (96.1%) | 49/64 | 524/566 (92.6%), cleared 31/64 |
| Camera DR off | 516/566 (91.2%) | 33/64 | 524/566 (92.6%), cleared 31/64 |
| Appearance DR off | 514/565 (91.0%) | 31/64 | 524/566 (92.6%), cleared 31/64 |
| Full DR + action delay 0–2 steps | 335/566 (59.2%) | 21/64 | 524/566 (92.6%), cleared 31/64 |
Accepted = at least 80% of the tubes picked and valid (box contacts ≤ 2 mm). Rejections so far: {'invalid': 528, 'picked fraction below 0.8': 128}. Frames are 320×180 JPEG q85 wrist images with the 16-value state and the expert's 7-value action.
| Run | Accepted/finished | Frames | JPEG size |
|---|---|---|---|
| 3-box pilot (seed 2000, not used) | 40/64 | 139,623 | 1.6 GB |
| 3-box A (seed 3000, not used) | 99/167 | 300,601 | 3.2 GB |
| 3-box B (seed 4000, not used) | 185/300 | 598,384 | 6.6 GB |
| 3-box C (seed 5000, not used) | 188/300 | 625,880 | 6.9 GB |
| 2-box D (seed 6000, running) | 174/300 | 599,605 | 6.6 GB |
| 2-box E (seed 7000, running) | 239/450 | 804,575 | 8.9 GB |
| Total | 925/1581 | 3,068,668 | 33.7 GB |
An ACT model trained for 6,000 steps on the 40 pilot episodes (validation action L1 0.076) was exported, verified and evaluated in the simulator on 32 paired starts. As expected at this data size it does not solve the task: it approaches and grasps but carries the tube away from the boxes. Measured: bundle delivered 0/283 tubes in 150 s episodes; 6 episodes toppled a box. Pipeline: dataset → training → export → verified bundle → simulator evaluation loading only the bundle.
in progress 2026-09-25 v2 = D+E, 100k steps, validation action L1 0.055 (preliminary D-only model: 0.061 at 40k).
in progress 2026-09-25 v2 on the first 32 expert-baseline starts: picked 50/283 (17.7%, CI 12.3–24.2) vs 37/283 for the D-only model and 88.6% for the expert on the same starts; delivered 27/283; 4 box topples; 1/32 cleared. Full stage-4 evaluation (ablations) not yet run.
Picked 50/283 tubes (17.7%) on 32 paired starts; lifts 1.69 per episode. In this episode it delivers 4 of 7 tubes in about 3 minutes, then drifts up and out of the workspace with 3 tubes left.
Picked 37/283 (13.1%). After the first placement it lines the pads up over a tube and freezes for minutes.
Picked 31/283 tubes (11%). Slow grasps, carried tube drifts away (the 3-box destination ambiguity).
not started