CoolFace
Datasetpublic

TacVerse/xtac-umi-g1-insert-rubber-stopper

Representative frames from TacVerse's bimanual demonstrations. Collected with XTac-UMI-G1 grippers, released as LeRobot datasets. This dataset was created using LeRobot. Explore this dataset with the LeRobot Dataset Viewer. Dataset Structure meta/info.json: { "codebase_version": "v3.0", "robot_type": "xtac_umi_g1", "total_episodes": 10, "total_frames": 6204, "total_tasks": 1, "chunks_size": 1000, "data_files_size_in_mb": 100… See the full description on the dataset page: https://huggingface.co/datasets/TacVerse/xtac-umi-g1-insert-rubber-stopper.

sourceHugging Facecc-by-sa-4.0updated 13d agoView on Hugging Face
0likes465downloads
Dataset Card

<img src="assets/footer.png" width="100%" alt="Xense Robotics"/>

<p align="center"><em>Representative frames from TacVerse's bimanual demonstrations.</em></p>

<img src="assets/teaser.png" width="100%" alt="TacVerse collection and processing pipeline"/>

<p align="center"><em>Collected with XTac-UMI-G1 grippers, released as LeRobot datasets.</em></p>

This dataset was created using LeRobot.

Explore this dataset with the LeRobot Dataset Viewer.

Dataset Description

  • —Homepage: TacVerse/TacVerse
  • —Paper: [More Information Needed]
  • —License: cc-by-sa-4.0

Dataset Structure

meta/info.json:

json
{
    "codebase_version": "v3.0",
    "robot_type": "xtac_umi_g1",
    "total_episodes": 10,
    "total_frames": 6204,
    "total_tasks": 1,
    "chunks_size": 1000,
    "data_files_size_in_mb": 100,
    "video_files_size_in_mb": 200,
    "fps": 30,
    "splits": {
        "train": "0:10"
    },
    "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",
    "features": {
        "action": {
            "dtype": "float32",
            "names": [
                "left_tcp.x",
                "left_tcp.y",
                "left_tcp.z",
                "left_tcp.r1",
                "left_tcp.r2",
                "left_tcp.r3",
                "left_tcp.r4",
                "left_tcp.r5",
                "left_tcp.r6",
                "left_gripper.pos",
                "right_tcp.x",
                "right_tcp.y",
                "right_tcp.z",
                "right_tcp.r1",
                "right_tcp.r2",
                "right_tcp.r3",
                "right_tcp.r4",
                "right_tcp.r5",
                "right_tcp.r6",
                "right_gripper.pos",
                "head.x",
                "head.y",
                "head.z",
                "head.r1",
                "head.r2",
                "head.r3",
                "head.r4",
                "head.r5",
                "head.r6"
            ],
            "shape": [
                29
            ]
        },
        "observation.state": {
            "dtype": "float32",
            "names": [
                "left_tcp.x",
                "left_tcp.y",
                "left_tcp.z",
                "left_tcp.r1",
                "left_tcp.r2",
                "left_tcp.r3",
                "left_tcp.r4",
                "left_tcp.r5",
                "left_tcp.r6",
                "left_gripper.pos",
                "right_tcp.x",
                "right_tcp.y",
                "right_tcp.z",
                "right_tcp.r1",
                "right_tcp.r2",
                "right_tcp.r3",
                "right_tcp.r4",
                "right_tcp.r5",
                "right_tcp.r6",
                "right_gripper.pos",
                "head.x",
                "head.y",
                "head.z",
                "head.r1",
                "head.r2",
                "head.r3",
                "head.r4",
                "head.r5",
                "head.r6"
            ],
            "shape": [
                29
            ]
        },
        "observation.tracker_confidence": {
            "dtype": "float32",
            "names": [
                "left_tracker.confidence",
                "right_tracker.confidence"
            ],
            "shape": [
                2
            ]
        },
        "observation.images.head_left": {
            "dtype": "video",
            "shape": [
                480,
                640,
                3
            ],
            "names": [
                "height",
                "width",
                "channels"
            ],
            "info": {
                "video.height": 480,
                "video.width": 640,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.is_depth_map": false,
                "video.fps": 30,
                "video.channels": 3,
                "has_audio": false,
                "video.video_backend": "pyav"
            }
        },
        "observation.images.head_right": {
            "dtype": "video",
            "shape": [
                480,
                640,
                3
            ],
            "names": [
                "height",
                "width",
                "channels"
            ],
            "info": {
                "video.height": 480,
                "video.width": 640,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.is_depth_map": false,
                "video.fps": 30,
                "video.channels": 3,
                "has_audio": false,
                "video.video_backend": "pyav"
            }
        },
        "observation.images.left_tactile_left": {
            "dtype": "video",
            "shape": [
                400,
                700,
                3
            ],
            "names": [
                "height",
                "width",
                "channels"
            ],
            "info": {
                "video.height": 400,
                "video.width": 700,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.is_depth_map": false,
                "video.fps": 30,
                "video.channels": 3,
                "has_audio": false,
                "video.video_backend": "pyav",
                "taccap.rectified": true,
                "taccap.rectify_kind": "tactile",
                "taccap.rectify_config": {
                    "base_grid": [
                        84,
                        216,
                        210,
                        151,
                        348,
                        86,
                        563,
                        48,
                        84,
                        273,
                        211,
                        332,
                        351,
                        398,
                        556,
                        433
                    ],
                    "cols": 2,
                    "padding": [
                        0,
                        0,
                        0,
                        0
                    ],
                    "rot": 0.0,
                    "rows": 4,
                    "scale": 1.0,
                    "trans_x": 0.0,
                    "trans_y": 0.0
                }
            }
        },
        "observation.images.left_tactile_right": {
            "dtype": "video",
            "shape": [
                400,
                700,
                3
            ],
            "names": [
                "height",
                "width",
                "channels"
            ],
            "info": {
                "video.height": 400,
                "video.width": 700,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.is_depth_map": false,
                "video.fps": 30,
                "video.channels": 3,
                "has_audio": false,
                "video.video_backend": "pyav",
                "taccap.rectified": true,
                "taccap.rectify_kind": "tactile",
                "taccap.rectify_config": {
                    "base_grid": [
                        71,
                        201,
                        192,
                        139,
                        325,
                        73,
                        529,
                        35,
                        69,
                        257,
                        193,
                        318,
                        328,
                        383,
                        535,
                        414
                    ],
                    "cols": 2,
                    "padding": [
                        0,
                        0,
                        0,
                        0
                    ],
                    "rot": 0.0,
                    "rows": 4,
                    "scale": 1.0,
                    "trans_x": 0.0,
                    "trans_y": 0.0
                }
            }
        },
        "observation.images.left_wrist": {
            "dtype": "video",
            "shape": [
                480,
                640,
                3
            ],
            "names": [
                "height",
                "width",
                "channels"
            ],
            "info": {
                "video.height": 480,
                "video.width": 640,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.is_depth_map": false,
                "video.fps": 30,
                "video.channels": 3,
                "has_audio": false,
                "video.video_backend": "pyav"
            }
        },
        "observation.images.right_tactile_left": {
            "dtype": "video",
            "shape": [
                400,
                700,
                3
            ],
            "names": [
                "height",
                "width",
                "channels"
            ],
            "info": {
                "video.height": 400,
                "video.width": 700,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.is_depth_map": false,
                "video.fps": 30,
                "video.channels": 3,
                "has_audio": false,
                "video.video_backend": "pyav",
                "taccap.rectified": true,
                "taccap.rectify_kind": "tactile",
                "taccap.rectify_config": {
                    "base_grid": [
                        77,
                        225,
                        200,
                        164,
                        340,
                        97,
                        549,
                        55,
                        77,
                        288,
                        205,
                        339,
                        343,
                        405,
                        549,
                        441
                    ],
                    "cols": 2,
                    "padding": [
                        0,
                        0,
                        0,
                        0
                    ],
                    "rot": 0.0,
                    "rows": 4,
                    "scale": 1.0,
                    "trans_x": 0.0,
                    "trans_y": 0.0
                }
            }
        },
        "observation.images.right_tactile_right": {
            "dtype": "video",
            "shape": [
                400,
                700,
                3
            ],
            "names": [
                "height",
                "width",
                "channels"
            ],
            "info": {
                "video.height": 400,
                "video.width": 700,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.is_depth_map": false,
                "video.fps": 30,
                "video.channels": 3,
                "has_audio": false,
                "video.video_backend": "pyav",
                "taccap.rectified": true,
                "taccap.rectify_kind": "tactile",
                "taccap.rectify_config": {
                    "base_grid": [
                        72,
                        211,
                        196,
                        150,
                        332,
                        84,
                        546,
                        47,
                        74,
                        267,
                        197,
                        327,
                        337,
                        394,
                        554,
                        435
                    ],
                    "cols": 2,
                    "padding": [
                        0,
                        0,
                        0,
                        0
                    ],
                    "rot": 0.0,
                    "rows": 4,
                    "scale": 1.0,
                    "trans_x": 0.0,
                    "trans_y": 0.0
                }
            }
        },
        "observation.images.right_wrist": {
            "dtype": "video",
            "shape": [
                480,
                640,
                3
            ],
            "names": [
                "height",
                "width",
                "channels"
            ],
            "info": {
                "video.height": 480,
                "video.width": 640,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.is_depth_map": false,
                "video.fps": 30,
                "video.channels": 3,
                "has_audio": false,
                "video.video_backend": "pyav"
            }
        },
        "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
        }
    }
}

Sensor key map

<p align="center"> <img src="assets/sensorkeymap.png" width="760" alt="Sensor key map — each image stream keyed to its physical mount"/> </p>

<p align="center"><em>Tactile keys map to fingertip sensors; wrist keys to gripper cameras; head keys to the headset's stereo eyes.</em></p>

Citation

BibTeX:

bibtex
@misc{tacverse2026,
  title        = {TacVerse: A Large-Scale Bimanual Visuo-Tactile Manipulation Dataset},
  author       = {Xense Robotics},
  year         = {2026},
  howpublished = {\url{https://huggingface.co/datasets/TacVerse/TacVerse}},
  note         = {Collected with the XTac-UMI-G1 handheld gripper and Xense Neutron visuotactile sensors}
}