CoolFace
Datasetpublic

ar0s/centrifuge-generalization-C

This dataset was created using LeRobot. What this dataset is Rendered expert episodes of the KUKA centrifuge task on a widened reset distribution, recorded to show what the distribution does to the expert -- including the episodes the expert cannot finish. A failed attempt is recorded as the episode (TaskExpert stops commanding where the attempt died), so a failure here is data, not a gap. reset profile: C -- machine translation ±100 mm, machine yaw ±45°, each vial ±100… See the full description on the dataset page: https://huggingface.co/datasets/ar0s/centrifuge-generalization-C.

sourceHugging Faceapache-2.0updated 1d agoView on Hugging Face
0likes40downloads
Dataset Card

This dataset was created using LeRobot.

<a class="flex" href="https://huggingface.co/spaces/lerobot/visualize_dataset?path=ar0s/centrifuge-generalization-C"> <img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface/badges/resolve/main/visualize-this-dataset-xl.svg"/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface/badges/resolve/main/visualize-this-dataset-xl-dark.svg"/> </a>

What this dataset is

Rendered expert episodes of the KUKA centrifuge task on a widened reset distribution, recorded to show what the distribution does to the expert -- including the episodes the expert cannot finish. A failed attempt is recorded as the episode (TaskExpert stops commanding where the attempt died), so a failure here is data, not a gap.

  • reset profile: C -- machine translation ±100 mm, machine yaw ±45°, each vial ±100 mm, sampled uniformly per seed by autolab_sim/tasks/centrifuge_layout.py. reference is the distribution the 12/12 full-cycle result was measured on; the other profiles are GENERALIZATION_PLAN.md step 7's stages.
  • physics: PHYSX_CONTACT_LAST=1 PHYSX_STABILIZATION=1 PHYSX_DETERMINISM=1 plus the vial's solver iterations -- the settings the load fix needs. Recordings made without them are the pre-fix physics and are not comparable: the reference dataset recorded that way is 3 successes in 12 episodes.
  • grip: the jaws close onto the cap, not through it -- CARRY_GRIP = 85, which puts one pad 0.16-0.32mm inside the 16.6mm cap, symmetrically, and leaves the vial 0.03-0.15 deg off the jaw axis. The grasp friction is the cap's own Looks/Grip material (1.2/1.0), re-bound after the spawn and combined with max. The earlier centrifuge-generalization-broken-* datasets were recorded with CARRY_GRIP = 90, i.e. the jaws 5.3mm inside the cap with one pad 4.72mm in and the other 0.13mm, at a cap-pad friction of 0.85; that is what tilts the vial in the grip, and it is why those and these are not comparable either. Measured per step by probes/check_grasp_penetration.py.
  • rendering: front-centre and wrist-left cameras, 30 fps, control dt=1/30, physics_dt=1/60. Rendered episodes are their own rollouts; their step counts do not match the headless measurements in HANDOFF.md.
  • seeds are the reset draws, so episode i is the i-th (profile, seed) pair listed below. The same seed reproduces the same starting bench.

Episode index, in dataset order:

episode 0  profile C  seed 0  task_expert: attempt failed: AssertionError: ('transfer did not reach its endpoint', array([14.62237849,  4.14599792,  1.16140882]), array([14.61477424,  4.14729681,  1.17948729]), 'conv=False perr_mm=19.6 rerr_deg=0.37 jstep=0.0/13.3 j=[9.0, -66.8, 54.0, -0.5, 110.0, 96.7] min_room=0.00')
episode 1  profile C  seed 1  task_expert: attempt failed: AssertionError: ('vial', 'return', array([0.07623863, 0.01238775, 0.00849974], dtype=float32))
episode 2  profile C  seed 2  OK
episode 3  profile C  seed 3  task_expert: attempt failed: AssertionError: ('transfer did not reach its endpoint', array([14.59937637,  3.71684674,  1.07309184]), array([14.59439591,  3.71208835,  1.0773396 ]), 'conv=False perr_mm=8.0 rerr_deg=0.15 jstep=0.0/13.3 j=[-43.7, -30.8, 10.6, -0.0, 110.0, -43.7] min_room=0.00')
episode 4  profile C  seed 4  task_expert: attempt failed: AssertionError: ('transfer did not reach its endpoint', array([14.52843386,  3.72891409,  0.95892561]), array([14.50143909,  3.70779228,  0.96749998]), 'conv=False perr_mm=35.2 rerr_deg=0.61 jstep=0.0/13.3 j=[-38.0, -14.2, 0.8, -0.0, 102.7, -38.0] min_room=7.28')
episode 5  profile C  seed 5  task_expert: attempt failed: AssertionError: ('transfer did not reach its endpoint', array([14.66872875,  3.90085641,  1.07462559]), array([14.57287884,  3.84758377,  0.96749998]), 'conv=True perr_mm=0.0 rerr_deg=0.00 jstep=0.0/0.0 j=[-30.2, -50.0, 65.2, -0.0, 74.8, -30.2] min_room=35.21')
episode 6  profile C  seed 6  task_expert: attempt failed: RuntimeError: no reachable wrist roll for [-0.06915367 -0.54023096  0.83867054]
episode 7  profile C  seed 7  task_expert: attempt failed: AssertionError: ('transfer did not reach its endpoint', array([14.57948631,  3.82462318,  0.97414559]), array([14.58141708,  3.82594728,  0.96749998]), 'conv=True perr_mm=0.0 rerr_deg=0.00 jstep=0.0/0.0 j=[-32.9, -49.1, 63.8, -0.0, 75.3, -32.9] min_room=34.66')
episode 8  profile C  seed 8  task_expert: attempt failed: AssertionError: ('transfer blocked too far from its endpoint', np.float64(0.14583168349942247), [np.float64(0.1457129498320637), np.float64(0.1457004625598864), np.float64(0.14577079819308675), np.float64(0.1456403791758106), np.float64(0.14578754087819948), np.float64(0.1456731417888), np.float64(0.145808691068007), np.float64(0.14570674645412518), np.float64(0.1457724284324802), np.float64(0.14576006402606284)], array([14.45680254,  4.13345397,  1.19708462]), array([14.47677329,  3.99088142,  1.17382269]), 'conv=True perr_mm=0.0 rerr_deg=0.00 jstep=0.0/0.0 j=[-6.0, -55.1, 35.5, -8.4, 97.1, 32.2] min_room=12.95')
episode 9  profile C  seed 9  task_expert: attempt failed: AssertionError: ('transfer did not reach its endpoint', array([14.67371055,  3.87843236,  1.00030695]), array([14.6835928 ,  3.88620663,  0.96749998]), 'conv=True perr_mm=0.0 rerr_deg=0.00 jstep=0.0/0.0 j=[-33.6, -70.8, 97.0, 0.0, 63.8, -33.6] min_room=46.17')
episode 10  profile C  seed 10  OK
episode 11  profile C  seed 11  task_expert: attempt failed: AssertionError: ('transfer blocked too far from its endpoint', np.float64(0.1373659986915439), [np.float64(0.13735762229528012), np.float64(0.13735693123703946), np.float64(0.1373565227901812), np.float64(0.13735931904028503), np.float64(0.13735978849501557), np.float64(0.1373574998576561), np.float64(0.1373582206155049), np.float64(0.13736086218302002), np.float64(0.13736396766341957), np.float64(0.13736539683541513)], array([14.36732346,  4.04806713,  1.19852795]), array([14.40688989,  3.91696822,  1.18771175]), 'conv=False perr_mm=19.5 rerr_deg=0.34 jstep=0.0/13.3 j=[-8.0, -35.8, 2.1, -17.2, 98.5, 29.4] min_room=11.50')
RECORD_LAYOUT_DONE

Failures by stage are the expert's own assertions: transfer blocked is the lid close never reaching its pose, disturbed is picking one vial moving the other, unload grasp/extraction stalled is the pads missing the cap, tilt is insertion, return is a vial not coming back to where it started.

Dataset Description

  • Homepage: [More Information Needed]
  • Paper: [More Information Needed]
  • License: apache-2.0

Dataset Structure

meta/info.json:

json
{
    "codebase_version": "v3.0",
    "fps": 30,
    "features": {
        "action": {
            "dtype": "float32",
            "names": [
                "ee_x.pos",
                "ee_y.pos",
                "ee_z.pos",
                "ee_wx.pos",
                "ee_wy.pos",
                "ee_wz.pos",
                "gripper.pos"
            ],
            "shape": [
                7
            ]
        },
        "observation.state": {
            "dtype": "float32",
            "names": [
                "ee_x.pos",
                "ee_y.pos",
                "ee_z.pos",
                "ee_wx.pos",
                "ee_wy.pos",
                "ee_wz.pos",
                "gripper.pos"
            ],
            "shape": [
                7
            ]
        },
        "observation.images.wrist_left": {
            "dtype": "video",
            "shape": [
                480,
                640,
                3
            ],
            "names": [
                "height",
                "width",
                "channels"
            ],
            "info": {
                "is_depth_map": false,
                "video.height": 480,
                "video.width": 640,
                "video.codec": "av1",
                "video.pix_fmt": "yuv420p",
                "video.fps": 30,
                "video.channels": 3,
                "has_audio": false,
                "video.g": 2,
                "video.crf": 30,
                "video.preset": 12,
                "video.fast_decode": 0,
                "video.video_backend": "pyav",
                "video.extra_options": {}
            }
        },
        "observation.images.front_center": {
            "dtype": "video",
            "shape": [
                480,
                640,
                3
            ],
            "names": [
                "height",
                "width",
                "channels"
            ],
            "info": {
                "is_depth_map": false,
                "video.height": 480,
                "video.width": 640,
                "video.codec": "av1",
                "video.pix_fmt": "yuv420p",
                "video.fps": 30,
                "video.channels": 3,
                "has_audio": false,
                "video.g": 2,
                "video.crf": 30,
                "video.preset": 12,
                "video.fast_decode": 0,
                "video.video_backend": "pyav",
                "video.extra_options": {}
            }
        },
        "timestamp": {
            "dtype": "float32",
            "shape": [
                1
            ],
            "names": null
        },
        "frame_index": {
            "dtype": "int64",
            "shape": [
                1
            ],
            "names": null
        },
        "episode_index": {
            "dtype": "int64",
            "shape": [
                1
            ],
            "names": null
        },
        "index": {
            "dtype": "int64",
            "shape": [
                1
            ],
            "names": null
        },
        "task_index": {
            "dtype": "int64",
            "shape": [
                1
            ],
            "names": null
        }
    },
    "total_episodes": 12,
    "total_frames": 25353,
    "total_tasks": 1,
    "chunks_size": 1000,
    "data_files_size_in_mb": 100,
    "video_files_size_in_mb": 200,
    "data_path": "data/chunk-{chunk_index:03d}/file-{file_index:03d}.parquet",
    "video_path": "videos/{video_key}/chunk-{chunk_index:03d}/file-{file_index:03d}.mp4",
    "robot_type": "isaac_kuka",
    "splits": {
        "train": "0:12"
    }
}

Citation

BibTeX:

bibtex
[More Information Needed]