{
  "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.005,
    "rotation_rad_per_step": 0.017453292519943295,
    "gripper": "-1 closed; +1 open",
    "physics_dt": 0.001,
    "control_dt": 0.05,
    "rgb_shape": [
      200,
      320,
      3
    ],
    "rgb_dtype": "uint8",
    "assets_manifest_sha256": "8eb22a0ebbc461bb728c2e2a0b601d6737a3fa3fd972dcbf2270d5cdabef9de0",
    "scene_sha256": "5be735fd530a190e8e287538ce232b101458b211d2990c03e6a1493d6a424dd7",
    "controller_details": {
      "ik_max_dq_rad": 0.025,
      "ik_delta_clip": "uniform direction-preserving",
      "joint_target_period_s": 0.001,
      "ik_damping": 0.005,
      "ik_orientation_weight": 0.2
    }
  },
  "task": {
    "version": "tube-sort-v1",
    "task_id": "Mjlab-GS-TubeSort-UR5",
    "success_definition": "every active tube settled inside its target basket, with the Phase 1 physical-validity gates",
    "sort_rule": {
      "red": "left",
      "blue": "right"
    },
    "layout": {
      "centre": {
        "name": "centre",
        "centre": [
          0.0,
          -0.14
        ],
        "interior": [
          0.115,
          0.05
        ],
        "wall_height": 0.035,
        "wall_thickness": 0.006,
        "floor_thickness": 0.003,
        "rgba": [
          0.62,
          0.6,
          0.56,
          1.0
        ]
      },
      "left": {
        "name": "left",
        "centre": [
          -0.21,
          -0.14
        ],
        "interior": [
          0.065,
          0.052
        ],
        "wall_height": 0.06,
        "wall_thickness": 0.006,
        "floor_thickness": 0.003,
        "rgba": [
          0.62,
          0.6,
          0.56,
          1.0
        ]
      },
      "right": {
        "name": "right",
        "centre": [
          0.21,
          -0.14
        ],
        "interior": [
          0.065,
          0.052
        ],
        "wall_height": 0.06,
        "wall_thickness": 0.006,
        "floor_thickness": 0.003,
        "rgba": [
          0.62,
          0.6,
          0.56,
          1.0
        ]
      },
      "tube": {
        "radius": 0.0125,
        "half_length": 0.035,
        "mass": 0.03,
        "friction": [
          0.7,
          0.005,
          0.0001
        ],
        "red_rgba": [
          0.8,
          0.12,
          0.12,
          1.0
        ],
        "blue_rgba": [
          0.12,
          0.25,
          0.85,
          1.0
        ]
      },
      "drop_margin_m": 0.035,
      "release_drop_m": 0.02
    }
  },
  "execution": {
    "prefix": 20,
    "transition_prefix": 5,
    "control_hz": 20,
    "history_frames": 16,
    "horizon": 20
  }
}