deformable-bench/grasp_bag_strap_dr_v1
grasp_bag_strap_dr_v1 Bimanual grasp-the-strap-and-lift on a deformable non-woven bag, collected in simulation (Newton SolverStyle3D cloth + SolverMuJoCo robot co-simulation, Omniverse Kit rendering). Two randomisation axes vary per episode: the bag appearance (10 texture variants of one mother asset) and the strap stretch/shear stiffness. Everything else is held fixed. Contents Episodes / frames 200 / 83,566 FPS 25 Cameras static_cam… See the full description on the dataset page: https://huggingface.co/datasets/deformable-bench/grasp_bag_strap_dr_v1.
graspbagstrapdrv1
Bimanual grasp-the-strap-and-lift on a deformable non-woven bag, collected in simulation (Newton SolverStyle3D cloth + SolverMuJoCo robot co-simulation, Omniverse Kit rendering).
Two randomisation axes vary per episode: the bag appearance (10 texture variants of one mother asset) and the strap stretch/shear stiffness. Everything else is held fixed.
Contents
Randomisation
Strap stiffness — sampled once per episode, constant over the trajectory: value = exp(U(ln 300, ln 8000)) (log-uniform, N/m). It replaces tri_aniso_ke on the 3,588 of 40,682 triangles whose three vertices all lie in the left_strap / right_strap vertex sets; both straps share the value. The bag body stays at 8,000 and bending at 1e-5. Saved episodes span 302 - 7,957.
Appearance — one of 10 texture variants per episode (beige-dense-weave, caramel-leather-visual-proxy, fine-sand-stripe, herb-crest-screen-print, mist-blue-navy, oatmeal-charcoal, open-trail-screen-print, sage-fine-check, soft-terracotta-burgundy, warm-ivory-olive), 18-23 episodes each. All variants share the mother asset's geometry (20,274 vertices / 40,682 faces) and physical metadata, so appearance is a pure render-side change.
Pose — bag at x 0.43 +/- 0.03 m, y +/- 0.02 m, yaw +/- 15 deg; robot initial-pose noise 0.5. Lighting and table texture randomisation are off.
Per-episode metadata
meta/episodes/**/*.parquet carries, in addition to the LeRobot columns:
synreal/attempt_id- collection attempt index (not equal toepisode_index: failed attempts are not saved)synreal/seed- collection seed (43)synreal/parameters- JSON withregion_stretch_stiff,body_stretch_stiff,bend_stiff,appearance_asset,cloth_base_pos,cloth_rot_z_deg, contact and gripper settingssynreal/metrics- JSON with the lift-time strap heights and pinch distancessynreal/success- always true for saved episodes
Per-episode RNG is default_rng([seed, attempt_id]), so every episode is reproducible from those two numbers. asset_schedule_s{0..3}.json record the appearance assigned to each attempt id.
Collection
Collected in four parallel shards on one 4-GPU machine, with disjoint attempt-id ranges (0-, 10000-, 20000-, 30000-), 50 saved episodes each; 19 attempts failed and were dropped. Because stiffness is sampled before the outcome is known, the saved stiffness distribution is conditioned on success and is therefore not exactly log-uniform; the unconditioned samples live in the collection run's attempt records, not in this dataset.
Success requires the bag centre of mass to rise above 30 mm with both strap tips and midpoints above 350 mm and both gripper pinch distances under 20 mm. Control is position-servoed (PD) with the stopface_h contact recipe.
