enactic/openarm-2-cell-pick_up_cube_mujoco-lerobot
openarm-2-cell-pick_up_cube_mujoco-lerobot OpenArm 2 bimanual manipulation demonstrations ("pick up the cube") recorded in a MuJoCo simulation cell through VR teleoperation, converted to the LeRobot dataset format with OpenArm Dataset. Robot: OpenArm 2, bimanual (2 x 7 DoF + gripper, 16-dim state/action, joint positions) Environment: MuJoCo simulation, VR teleoperation Task: Pick up the cube. Episodes: 30 (splits: train 0:24, val 24:30) — Frames: 5405 @ 30 fps Cameras:… See the full description on the dataset page: https://huggingface.co/datasets/enactic/openarm-2-cell-pick_up_cube_mujoco-lerobot.
openarm-2-cell-pickupcube_mujoco-lerobot
OpenArm 2 bimanual manipulation demonstrations ("pick up the cube") recorded in a MuJoCo simulation cell through VR teleoperation, converted to the LeRobot dataset format with OpenArm Dataset.
<a class="flex" href="https://huggingface.co/spaces/lerobot/visualizedataset?path=k1000dai/openarm-2-cell-pickupcubemujoco-lerobot"> <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>
- Robot: OpenArm 2, bimanual (2 x 7 DoF + gripper, 16-dim state/action, joint positions)
- Environment: MuJoCo simulation, VR teleoperation
- Task:
Pick up the cube. - Episodes: 30 (splits:
train0:24,val24:30) — Frames: 5405 @ 30 fps - Cameras:
ceiling,head_left,head_right,wrist_left,wrist_right - Extra columns:
success(per-episode success flag),last_frame_index
This revision holds the v3.0 format (main).
Versions
Both LeRobot dataset formats of the same recordings live in this repository, on separate revisions (their data/ / videos/ / meta/ layouts are incompatible):
LeRobotDataset resolves the revision matching your installed LeRobot version automatically, so plain LeRobotDataset("k1000dai/openarm-2-cell-pick_up_cube_mujoco-lerobot") works on both.
Usage
from lerobot.datasets.lerobot_dataset import LeRobotDataset
dataset = LeRobotDataset("k1000dai/openarm-2-cell-pick_up_cube_mujoco-lerobot") # revision picked from your lerobot version
dataset = LeRobotDataset("k1000dai/openarm-2-cell-pick_up_cube_mujoco-lerobot", revision="v2.1") # pin the v2.1 format explicitlyDataset structure
meta/info.json:
{
"codebase_version": "v3.0",
"robot_type": "openarm_bimanual",
"total_episodes": 30,
"total_frames": 5405,
"total_tasks": 1,
"chunks_size": 1000,
"data_files_size_in_mb": 100,
"video_files_size_in_mb": 200,
"fps": 30,
"splits": {
"train": "0:24",
"val": "24:30"
},
"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": [
"right_joint1.pos",
"right_joint2.pos",
"right_joint3.pos",
"right_joint4.pos",
"right_joint5.pos",
"right_joint6.pos",
"right_joint7.pos",
"right_gripper.pos",
"left_joint1.pos",
"left_joint2.pos",
"left_joint3.pos",
"left_joint4.pos",
"left_joint5.pos",
"left_joint6.pos",
"left_joint7.pos",
"left_gripper.pos"
],
"shape": [
16
],
"fps": 30
},
"observation.state": {
"dtype": "float32",
"names": [
"right_joint1.pos",
"right_joint2.pos",
"right_joint3.pos",
"right_joint4.pos",
"right_joint5.pos",
"right_joint6.pos",
"right_joint7.pos",
"right_gripper.pos",
"left_joint1.pos",
"left_joint2.pos",
"left_joint3.pos",
"left_joint4.pos",
"left_joint5.pos",
"left_joint6.pos",
"left_joint7.pos",
"left_gripper.pos"
],
"shape": [
16
],
"fps": 30
},
"timestamp": {
"dtype": "float64",
"shape": [
1
],
"names": null,
"fps": 30
},
"frame_index": {
"dtype": "int64",
"shape": [
1
],
"names": null,
"fps": 30
},
"episode_index": {
"dtype": "int64",
"shape": [
1
],
"names": null,
"fps": 30
},
"index": {
"dtype": "int64",
"shape": [
1
],
"names": null,
"fps": 30
},
"task_index": {
"dtype": "int64",
"shape": [
1
],
"names": null,
"fps": 30
},
"success": {
"dtype": "int64",
"shape": [
1
],
"names": null,
"fps": 30
},
"last_frame_index": {
"dtype": "int64",
"shape": [
1
],
"names": null,
"fps": 30
},
"observation.images.ceiling": {
"dtype": "video",
"shape": [
600,
960,
3
],
"names": [
"height",
"width",
"channels"
],
"info": {
"video.height": 600,
"video.width": 960,
"video.codec": "h264",
"video.pix_fmt": "yuv420p",
"video.is_depth_map": false,
"video.fps": 30,
"video.channels": 3,
"has_audio": false
}
},
"observation.images.head_left": {
"dtype": "video",
"shape": [
720,
1280,
3
],
"names": [
"height",
"width",
"channels"
],
"info": {
"video.height": 720,
"video.width": 1280,
"video.codec": "h264",
"video.pix_fmt": "yuv420p",
"video.is_depth_map": false,
"video.fps": 30,
"video.channels": 3,
"has_audio": false
}
},
"observation.images.head_right": {
"dtype": "video",
"shape": [
720,
1280,
3
],
"names": [
"height",
"width",
"channels"
],
"info": {
"video.height": 720,
"video.width": 1280,
"video.codec": "h264",
"video.pix_fmt": "yuv420p",
"video.is_depth_map": false,
"video.fps": 30,
"video.channels": 3,
"has_audio": false
}
},
"observation.images.wrist_left": {
"dtype": "video",
"shape": [
600,
960,
3
],
"names": [
"height",
"width",
"channels"
],
"info": {
"video.height": 600,
"video.width": 960,
"video.codec": "h264",
"video.pix_fmt": "yuv420p",
"video.is_depth_map": false,
"video.fps": 30,
"video.channels": 3,
"has_audio": false
}
},
"observation.images.wrist_right": {
"dtype": "video",
"shape": [
600,
960,
3
],
"names": [
"height",
"width",
"channels"
],
"info": {
"video.height": 600,
"video.width": 960,
"video.codec": "h264",
"video.pix_fmt": "yuv420p",
"video.is_depth_map": false,
"video.fps": 30,
"video.channels": 3,
"has_audio": false
}
}
}
}License
Apache-2.0.
