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.
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.referenceis the distribution the 12/12 full-cycle result was measured on; the other profiles areGENERALIZATION_PLAN.mdstep 7's stages. - physics:
PHYSX_CONTACT_LAST=1 PHYSX_STABILIZATION=1 PHYSX_DETERMINISM=1plus 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 ownLooks/Gripmaterial (1.2/1.0), re-bound after the spawn and combined withmax. The earliercentrifuge-generalization-broken-*datasets were recorded withCARRY_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 byprobes/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 inHANDOFF.md. - seeds are the reset draws, so episode
iis thei-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_DONEFailures 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:
{
"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:
[More Information Needed]