{
 "episodes": 128,
 "tubes_total": 1120,
 "tubes_picked": 992,
 "tubes_picked_rate": 0.8857142857142857,
 "tubes_picked_rate_ci95": [
  0.859075405401432,
  0.9104721953578336
 ],
 "tubes_delivered": 975,
 "tubes_delivered_rate": 0.8705357142857143,
 "tubes_delivered_rate_ci95": [
  0.8395678034059474,
  0.8986637652933231
 ],
 "episodes_all_delivered": 53,
 "episodes_with_box_topple": 1,
 "mean_picked_fraction": 0.8885819692460318,
 "episodes_cleared": 56,
 "cleared_rate": 0.4375,
 "cleared_rate_wilson95": [
  0.35462168452480924,
  0.5240205649624543
 ],
 "successes": 38,
 "success_rate": 0.296875,
 "success_rate_wilson95": [
  0.2245804687093706,
  0.3810068421242358
 ],
 "valid_episodes": 79,
 "robot_fault_episodes": 9,
 "physics_fault_episodes": 46,
 "validity_reason_counts": {
  "tube_penetration": 42,
  "actuator_force": 5,
  "box_penetration": 8,
  "joint_speed": 3,
  "box_toppled": 1
 },
 "first_box_touch_by_phase": {
  "reach": 39,
  "nudge_reach": 54,
  "push": 23,
  "select": 5,
  "grasp": 2
 },
 "timed_out_episodes": 3,
 "nonfinite_episodes": 0,
 "spilled_while_settling": 1,
 "dropped_on_floor": 2,
 "tubes_outside_total": 13,
 "mean_seconds_per_picked_tube": 27.45048502604167,
 "mean_seconds": 189.18281249999998,
 "recoveries_total": 1221,
 "nudges_total": 412,
 "tubes_left_by_reason": {
  "left_wall_blocked": 115,
  "left_missed": 11,
  "left_never_abandoned": 0
 },
 "by_tube_count": {
  "7": {
   "episodes": 22,
   "tubes_picked": 142,
   "tubes_total": 154,
   "picked_rate": 0.922077922077922,
   "tubes_delivered": 141,
   "delivered_rate": 0.9155844155844156,
   "cleared": 13,
   "cleared_rate": 0.5909090909090909,
   "valid": 20,
   "mean_seconds": 122.73181818181816,
   "timed_out": 0,
   "time_cap_s": 420.0
  },
  "8": {
   "episodes": 34,
   "tubes_picked": 251,
   "tubes_total": 272,
   "picked_rate": 0.9227941176470589,
   "tubes_delivered": 250,
   "delivered_rate": 0.9191176470588235,
   "cleared": 18,
   "cleared_rate": 0.5294117647058824,
   "valid": 21,
   "mean_seconds": 156.99558823529412,
   "timed_out": 0,
   "time_cap_s": 420.0
  },
  "9": {
   "episodes": 26,
   "tubes_picked": 196,
   "tubes_total": 234,
   "picked_rate": 0.8376068376068376,
   "tubes_delivered": 188,
   "delivered_rate": 0.8034188034188035,
   "cleared": 10,
   "cleared_rate": 0.38461538461538464,
   "valid": 14,
   "mean_seconds": 202.0019230769231,
   "timed_out": 2,
   "time_cap_s": 465.0
  },
  "10": {
   "episodes": 46,
   "tubes_picked": 403,
   "tubes_total": 460,
   "picked_rate": 0.8760869565217392,
   "tubes_delivered": 396,
   "delivered_rate": 0.8608695652173913,
   "cleared": 15,
   "cleared_rate": 0.32608695652173914,
   "valid": 24,
   "mean_seconds": 237.5086956521739,
   "timed_out": 1,
   "time_cap_s": 510.0
  }
 },
 "policy": "scripted-expert",
 "bundle": null,
 "policy_safety_stops": null,
 "expert": {
  "version": "tube-binpick-side-stroke-v6-two-box",
  "motion": "one C1 Hermite stroke per reach and per carry, wrist turning en route, vertical final approach, jittered via points and pace",
  "speeds_mps": {
   "cruise": 0.13,
   "rise": 0.11,
   "descend": 0.05,
   "lift": 0.09,
   "lower": 0.07,
   "push": 0.05
  },
  "turn": {
   "fraction_of_stroke": 0.85,
   "rate_margin": 0.9
  },
  "grasp_modes": [
   "side"
  ],
  "side_grasp_axial_candidates_m": [
   0.0,
   -0.012,
   0.012,
   -0.024,
   0.024,
   -0.03,
   0.03
  ],
  "selection": "highest unobstructed tube that nothing rests on, then nearest; wall-hugging tubes are nudged toward the middle first",
  "recovery_codes": {
   "0": "none",
   "1": "box motion/contact",
   "2": "missed grasp",
   "3": "motion timeout",
   "4": "lost carried tube",
   "5": "descent blocked"
  },
  "placement": "right box only (left box parked); live destination lanes, slow lower, narrow release, verified separation",
  "box_motion_abort_m": {
   "rise": 0.01,
   "translation": 0.025
  },
  "phases": [
   "select",
   "reach",
   "grasp",
   "carry",
   "release",
   "reopen",
   "nudge_reach",
   "push",
   "home",
   "done"
  ],
  "dt_s": 0.05,
  "diverse": true,
  "retry_fraction": 0.0,
  "gripper": {
   "travel_open": 0.6,
   "release": "selected approach gap until rim clearance"
  },
  "heights_m": {
   "transport_tcp": 0.12,
   "hover_above_grasp": 0.07,
   "release_support_gap": 0.003,
   "floor_clearance": 0.006
  },
  "settle_steps": {
   "min": 40,
   "max": 120,
   "quiet": 10,
   "quiet_mps": 0.02
  },
  "phase_seconds": {
   "grasp": 0.75,
   "release": 0.6,
   "reopen": 0.5
  },
  "max_retries_per_tube": 3,
  "nudge": {
   "press_m": 0.006,
   "room_needed_m": {
    "wall": 0.036,
    "tube": 0.044
   },
   "max_push_m": 0.07,
   "speed_mps": 0.05,
   "max_per_tube": 3
  }
 },
 "randomize": true,
 "dr_scale": 1.0,
 "seed": 1000,
 "contact_profile": "hard2_dt1",
 "paired_starts": true,
 "disabled_groups": [],
 "action_delay_steps": [
  0,
  0
 ],
 "max_steps": 3600,
 "time_cap": "60 s + 45 s per tube",
 "wall_seconds": 9643.414718024433,
 "simulator_contract": {
  "version": "mjlab-gs-cartesian-v4",
  "observation_mode": "visual",
  "controller": "gpu-differential-ik",
  "arm_bias_compensation": true,
  "state_dim": 16,
  "goal_dim": 3,
  "goal_frame": "robot/base",
  "action_dim": 7,
  "action_frame": "robot/base",
  "translation_m_per_step": 0.01,
  "rotation_rad_per_step": 0.05235987755982988,
  "gripper": "-1 closed; +1 open",
  "physics_dt": 0.001,
  "control_dt": 0.05,
  "rgb_shape": null,
  "rgb_dtype": "uint8",
  "assets_manifest_sha256": "8eb22a0ebbc461bb728c2e2a0b601d6737a3fa3fd972dcbf2270d5cdabef9de0",
  "scene_sha256": "5be735fd530a190e8e287538ce232b101458b211d2990c03e6a1493d6a424dd7",
  "controller_details": {
   "ik_max_dq_rad": 0.05,
   "ik_delta_clip": "uniform direction-preserving",
   "joint_target_period_s": 0.001,
   "ik_damping": 0.005,
   "ik_orientation_weight": 0.2
  }
 },
 "task_spec": {
  "version": "tube-binpick-v1-free-hazel-pla",
  "asset_contract": {
   "box": "hazel_500ml_box",
   "box_mass_kg": 0.016,
   "box_free_joint": true,
   "tubes": [
    "red_pla_tube_20x16x80",
    "blue_pla_tube_20x16x80"
   ],
   "tube_mass_kg": 0.01,
   "geometry_scale_randomization": false,
   "appearance": "source visual mesh with per-world red/blue RGBA"
  },
  "task_id": "Mjlab-GS-TubeBinPick-UR5",
  "success_definition": "every active tube out of the centre box (in a side box or on the table), released by the gripper, with the robot and physics validity gates",
  "sort_rule": null,
  "colour_target_index": [
   0,
   2
  ],
  "observation_mode": "visual",
  "observations": {
   "actor": {
    "terms": {
     "state": {
      "func": "mjlab_gs.tasks.tube_binpick.mdp.policy_state",
      "params": {},
      "noise": null,
      "clip": null,
      "scale": null,
      "delay_min_lag": 0,
      "delay_max_lag": 0,
      "delay_per_env": true,
      "delay_hold_prob": 0.0,
      "delay_update_period": 0,
      "delay_per_env_phase": true,
      "history_length": 0,
      "flatten_history_dim": true
     }
    },
    "concatenate_terms": true,
    "concatenate_dim": -1,
    "enable_corruption": false,
    "history_length": null,
    "flatten_history_dim": true,
    "nan_policy": "disabled",
    "nan_check_per_term": true
   },
   "critic": {
    "terms": {
     "state": {
      "func": "mjlab_gs.tasks.tubesort.mdp.critic",
      "params": {},
      "noise": null,
      "clip": null,
      "scale": null,
      "delay_min_lag": 0,
      "delay_max_lag": 0,
      "delay_per_env": true,
      "delay_hold_prob": 0.0,
      "delay_update_period": 0,
      "delay_per_env_phase": true,
      "history_length": 0,
      "flatten_history_dim": true
     }
    },
    "concatenate_terms": true,
    "concatenate_dim": -1,
    "enable_corruption": false,
    "history_length": null,
    "flatten_history_dim": true,
    "nan_policy": "disabled",
    "nan_check_per_term": true
   }
  },
  "goal_observation_dim": 0,
  "critic_dim": 169,
  "visual_actor_profile": {
   "name": "act-style-single-action-v1",
   "backbone": "resnet18",
   "transformer_dim": 256,
   "attention_heads": 8,
   "encoder_layers": 3,
   "decoder_layers": 2,
   "feedforward_dim": 1024,
   "dropout": 0.0,
   "batch_norm": "frozen statistics",
   "pretrained_weights": false,
   "history_frames": 1,
   "action_queries": 1,
   "ppo_head_hidden_dims": [
    256
   ]
  },
  "layout": {
   "centre": {
    "name": "centre",
    "centre": [
     0.0,
     -0.156
    ],
    "interior": [
     0.0745,
     0.047
    ],
    "wall_height": 0.032,
    "wall_thickness": 0.013,
    "floor_thickness": 0.004,
    "rgba": [
     0.62,
     0.6,
     0.56,
     1.0
    ]
   },
   "left": {
    "name": "left",
    "centre": [
     -0.205,
     -0.156
    ],
    "interior": [
     0.0745,
     0.047
    ],
    "wall_height": 0.032,
    "wall_thickness": 0.013,
    "floor_thickness": 0.004,
    "rgba": [
     0.62,
     0.6,
     0.56,
     1.0
    ]
   },
   "right": {
    "name": "right",
    "centre": [
     0.205,
     -0.156
    ],
    "interior": [
     0.0745,
     0.047
    ],
    "wall_height": 0.032,
    "wall_thickness": 0.013,
    "floor_thickness": 0.004,
    "rgba": [
     0.62,
     0.6,
     0.56,
     1.0
    ]
   },
   "tube": {
    "radius": 0.01,
    "half_length": 0.04,
    "mass": 0.01,
    "friction": [
     0.5,
     0.005,
     0.0005
    ],
    "red_rgba": [
     0.8,
     0.12,
     0.12,
     1.0
    ],
    "blue_rgba": [
     0.12,
     0.25,
     0.85,
     1.0
    ],
    "shape": "capsule",
    "damping": 0.0,
    "armature": 0.0,
    "condim": 6,
    "margin": 0.0,
    "solref": [
     0.01,
     1.0
    ],
    "solimp": [
     0.9,
     0.95,
     0.001
    ]
   },
   "pile_half_x": 0.1,
   "pile_half_y": 0.045,
   "drop_margin_m": 0.035,
   "release_drop_m": 0.02,
   "pile_layers": 4
  },
  "randomization": {
   "enabled": true,
   "nominal_fraction": 0.1,
   "tube_count": [
    7,
    10
   ],
   "uniform_count": true,
   "red_fraction": 1.0,
   "tube_colour_shade": [
    0.8,
    1.15
   ],
   "tube_radius_scale": [
    1.0,
    1.0
   ],
   "tube_length_scale": [
    1.0,
    1.0
   ],
   "tube_mass_scale": [
    0.8,
    1.25
   ],
   "basket_xy_m": 0.01,
   "basket_yaw_deg": 5.0,
   "table_xy_m": 0.03,
   "table_yaw_deg": 3.0,
   "robot_xy_m": 0.01,
   "robot_yaw_deg": 1.5,
   "initial_joint_deg": [
    6.0,
    4.0,
    5.0,
    6.0,
    5.0,
    12.0
   ],
   "initial_gripper_open_min": 0.85,
   "camera_xyz_m": 0.01,
   "camera_rotation_deg": 5.0,
   "camera_focal_fraction": 0.03,
   "camera_principal_px": [
    12.0,
    12.0
   ],
   "friction_scale": [
    0.7,
    1.3
   ],
   "joint_damping_scale": [
    0.8,
    1.2
   ],
   "light_gain": [
    0.6,
    1.4
   ],
   "material_gain": [
    0.8,
    1.2
   ],
   "exposure_gain": [
    0.75,
    1.25
   ],
   "white_balance": [
    0.92,
    1.08
   ],
   "image_noise_std_255": 3.0,
   "lens_k1": 0.03,
   "motion_blur_px": 3.0,
   "motion_blur_prob": 0.3,
   "stale_frame_prob": 0.05,
   "light_pos_m": 0.5,
   "light_dir_deg": 20.0,
   "specular_gain": [
    0.5,
    1.5
   ],
   "box_colour_gain": [
    0.7,
    1.5
   ],
   "table_colour_gain": [
    0.7,
    1.0
   ],
   "tube_saturation": [
    0.75,
    1.1
   ],
   "background_gain": [
    0.7,
    1.3
   ],
   "background_tint": [
    0.9,
    1.1
   ],
   "box_mass_scale": [
    0.8,
    1.25
   ],
   "friction_per_object": true,
   "gripper_force_scale": [
    0.8,
    1.2
   ],
   "gripper_kp_scale": [
    0.8,
    1.2
   ],
   "arm_kp_scale": [
    0.85,
    1.15
   ],
   "action_delay_steps": [
    0,
    0
   ],
   "action_noise_std": 0.05,
   "state_noise_joint_rad": 0.0005,
   "state_noise_width": 0.005,
   "state_noise_tcp_m": 0.0005,
   "state_noise_rot": 0.002,
   "rows_above": 10,
   "rows_min": 7,
   "rows_fraction": 0.5,
   "disabled_groups": [],
   "park_baskets": [
    "left"
   ]
  },
  "curriculum": {
   "enabled": false,
   "boundaries": [
    0,
    20000,
    50000,
    100000,
    200000
   ],
   "scales": [
    0.05,
    0.15,
    0.35,
    0.65,
    1.0
   ],
   "evaluation_scale": 1.0
  },
  "objective": {
   "settle_speed": 0.05,
   "contact_force_n": 0.05,
   "contact_grace_s": 0.2,
   "max_penetration_m": 0.003,
   "max_box_penetration_m": 0.002,
   "max_tube_penetration_m": 0.0015,
   "hard_penetration_m": 0.02,
   "max_joint_speed": 1.57,
   "terminate_on_success": false,
   "capture_metrics": true
  },
  "contact_profile": "hard2_dt1",
  "physics": {
   "timestep": 0.001,
   "integrator": "implicitfast",
   "impratio": 5.0,
   "cone": "elliptic",
   "jacobian": "auto",
   "solver": "cg",
   "iterations": 80,
   "tolerance": 1e-06,
   "ls_iterations": 50,
   "ls_tolerance": 0.01,
   "ccd_iterations": 50,
   "gravity": [
    0.0,
    0.0,
    -9.81
   ],
   "disableflags": [],
   "enableflags": []
  },
  "episode_length_s": 240.0,
  "scale_rewards_by_dt": true,
  "rewards": {
   "picked": {
    "func": "mjlab_gs.tasks.tube_binpick.config.picked_progress",
    "params": {},
    "weight": 1.0
   }
  },
  "commands": {},
  "tube_colours": "red only"
 }
}