CoolFace
Datasetpublic

LightwheelAI/Lightwheel-Tasks-G1-Controller

This dataset was created using LeRobot. 1 Dataset Description This dataset includes 62 Lightwheel-Robocasa-Tasks, collected using the g1-controller robot in environments provided by LW-BenchHub.The robot configuration used during data collection is G1-Controller, using UnitreeG1ControllerEnvCfg inherits from UnitreeG1EnvCfg. 1.1 Robot State The robot state recorded in the environment is stored in: observation.state Dimension: 31 Description: Joint positions of… See the full description on the dataset page: https://huggingface.co/datasets/LightwheelAI/Lightwheel-Tasks-G1-Controller.

sourceHugging Faceapache-2.0updated 9mo agoView on Hugging Face
0likes197downloads
Dataset Card

This dataset was created using LeRobot.

1 Dataset Description

This dataset includes 62 Lightwheel-Robocasa-Tasks, collected using the g1-controller robot in environments provided by LW-BenchHub. The robot configuration used during data collection is `G1-Controller`, using UnitreeG1ControllerEnvCfg inherits from UnitreeG1EnvCfg.


1.1 Robot State

The robot state recorded in the environment is stored in: observation.state

  • Dimension: 31
  • Description: Joint positions of the robot
  • Joint mapping: The exact joint ordering and semantics can be found in the Dataset Structure section below.

1.2 Robot Action

The robot actions are recorded in: action

  • Dimension: 19 The action is ordered as: base (3), left arm (7), right arm (7), left hand (1), right hand (1).
ComponentDimensionDescription
Base action3Planar base motion in world frame
Arm action147-DOF left arm + 7-DOF right arm (end-effector poses)
Hand action2Continuous gripper control
python
@configclass
class G1PinkActionsCfg(PinkActionsCfg):
    base_action: mdp.RelativeJointPositionActionCfg = mdp.RelativeJointPositionActionCfg(
        asset_name="robot",
        joint_names=["base_.*"],
        scale={
            "base_x_joint": 0.01,
            "base_y_joint": 0.01,
            "base_yaw_joint": 0.02,
        },
        use_zero_offset=True,
    )

    arms_action: G1ActionCfg = G1ActionCfg(asset_name="robot", joint_names=[
        "left_shoulder_pitch_joint",
        "left_shoulder_roll_joint",
        "left_shoulder_yaw_joint",
        "left_elbow_joint",
        "left_wrist_roll_joint",
        "left_wrist_pitch_joint",
        "left_wrist_yaw_joint",
        "right_shoulder_pitch_joint",
        "right_shoulder_roll_joint",
        "right_shoulder_yaw_joint",
        "right_elbow_joint",
        "right_wrist_roll_joint",
        "right_wrist_pitch_joint",
        "right_wrist_yaw_joint"
    ])

1.2.1 Base Action

The base action is implemented using RelativeJointPositionActionCfg, you can refer to the G1PinkActionsCfg above.

  • Controlled dimensions:
  • base_x_joint (index 0): Forward/backward movement in world frame
  • base_y_joint (index 1): Left/right movement in world frame
  • base_yaw_joint (index 2): Yaw rotation
  • Scale:
  • base_x_joint: 0.01
  • base_y_joint: 0.01
  • base_yaw_joint: 0.02

1.2.2 Arm Action

The arm actions control the end-effector poses (position and orientation) in the robot root frame. The 14-dimensional arm action is passed to G1ActionCfg, where it is interpreted as a pose vector: [leftarmpos (3), leftarmquat (4), rightarmpos (3), rightarmquat (4)] This pose representation is then converted into a 14-dimensional joint-space command via inverse kinematics.

  • Left arm action (indices 3-9):
  • left_arm_pos_x (index 3): X position in robot root frame
  • left_arm_pos_y (index 4): Y position in robot root frame
  • left_arm_pos_z (index 5): Z position in robot root frame
  • left_arm_quat_w (index 6): Quaternion w component
  • left_arm_quat_x (index 7): Quaternion x component
  • left_arm_quat_y (index 8): Quaternion y component
  • left_arm_quat_z (index 9): Quaternion z component
  • Right arm action (indices 10-16):
  • right_arm_pos_x (index 10): X position in robot root frame
  • right_arm_pos_y (index 11): Y position in robot root frame
  • right_arm_pos_z (index 12): Z position in robot root frame
  • right_arm_quat_w (index 13): Quaternion w component
  • right_arm_quat_x (index 14): Quaternion x component
  • right_arm_quat_y (index 15): Quaternion y component
  • right_arm_quat_z (index 16): Quaternion z component
  • Coordinate frame: Robot root frame

1.2.3 Gripper Action

Grippers are controlled using continuous values. In the action data, -1.0 indicates fully open, +1.0 indicates fully closed.

  • Action values:
  • -1.0: fully open gripper
  • +1.0: fully closed gripper
  • Continuous values in between represent partial opening/closing
  • Left gripper (index 17): Continuous value from -1.0 (open) to 1.0 (closed)
  • Right gripper (index 18): Continuous value from -1.0 (open) to 1.0 (closed)
  • Source: VR trigger mapping
  • trigger=0.0 (not pressed) → -1.0 (open)
  • trigger=1.0 (fully pressed) → 1.0 (closed)

Dataset Structure

meta/info.json:

json
{
    "codebase_version": "v3.0",
    "robot_type": "g1_controller",
    "total_episodes": 3100,
    "total_frames": 2694024,
    "total_tasks": 62,
    "chunks_size": 1000,
    "fps": 50,
    "splits": {
        "train": "0:3100"
    },
    "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": {
        "observation.images.left_hand": {
            "dtype": "video",
            "shape": [
                480,
                640,
                3
            ],
            "names": [
                "height",
                "width",
                "channel"
            ],
            "video_info": {
                "video.width": 640,
                "video.height": 480,
                "video.fps": 50.0,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.channels": 3,
                "video.is_depth_map": false,
                "has_audio": false
            }
        },
        "observation.images.first_person": {
            "dtype": "video",
            "shape": [
                480,
                640,
                3
            ],
            "names": [
                "height",
                "width",
                "channel"
            ],
            "video_info": {
                "video.width": 640,
                "video.height": 480,
                "video.fps": 50.0,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.channels": 3,
                "video.is_depth_map": false,
                "has_audio": false
            }
        },
        "observation.images.right_hand": {
            "dtype": "video",
            "shape": [
                480,
                640,
                3
            ],
            "names": [
                "height",
                "width",
                "channel"
            ],
            "video_info": {
                "video.width": 640,
                "video.height": 480,
                "video.fps": 50.0,
                "video.codec": "h264",
                "video.pix_fmt": "yuv420p",
                "video.channels": 3,
                "video.is_depth_map": false,
                "has_audio": false
            }
        },
        "observation.state": {
            "dtype": "float32",
            "shape": [
                31
            ],
            "names": [
                "base_x_joint",
                "base_y_joint",
                "base_yaw_joint",
                "left_shoulder_pitch_joint",
                "right_shoulder_pitch_joint",
                "left_shoulder_roll_joint",
                "right_shoulder_roll_joint",
                "left_shoulder_yaw_joint",
                "right_shoulder_yaw_joint",
                "left_elbow_joint",
                "right_elbow_joint",
                "left_wrist_roll_joint",
                "right_wrist_roll_joint",
                "left_wrist_pitch_joint",
                "right_wrist_pitch_joint",
                "left_wrist_yaw_joint",
                "right_wrist_yaw_joint",
                "left_hand_index_0_joint",
                "left_hand_middle_0_joint",
                "left_hand_thumb_0_joint",
                "right_hand_index_0_joint",
                "right_hand_middle_0_joint",
                "right_hand_thumb_0_joint",
                "left_hand_index_1_joint",
                "left_hand_middle_1_joint",
                "left_hand_thumb_1_joint",
                "right_hand_index_1_joint",
                "right_hand_middle_1_joint",
                "right_hand_thumb_1_joint",
                "left_hand_thumb_2_joint",
                "right_hand_thumb_2_joint"
            ],
            "fps": 50
        },
        "action": {
            "dtype": "float32",
            "shape": [
                19
            ],
            "names": [
                "base_x",
                "base_y",
                "base_yaw",
                "left_arm_pos_x",
                "left_arm_pos_y",
                "left_arm_pos_z",
                "left_arm_quat_w",
                "left_arm_quat_x",
                "left_arm_quat_y",
                "left_arm_quat_z",
                "right_arm_pos_x",
                "right_arm_pos_y",
                "right_arm_pos_z",
                "right_arm_quat_w",
                "right_arm_quat_x",
                "right_arm_quat_y",
                "right_arm_quat_z",
                "left_gripper",
                "right_gripper"
            ],
            "fps": 50
        },
        "processed_action": {
            "dtype": "float32",
            "shape": [
                29
            ],
            "names": [
                "base_x_joint",
                "base_y_joint",
                "base_yaw_joint",
                "left_shoulder_pitch_joint",
                "left_shoulder_roll_joint",
                "left_shoulder_yaw_joint",
                "left_elbow_joint",
                "left_wrist_roll_joint",
                "left_wrist_pitch_joint",
                "left_wrist_yaw_joint",
                "right_shoulder_pitch_joint",
                "right_shoulder_roll_joint",
                "right_shoulder_yaw_joint",
                "right_elbow_joint",
                "right_wrist_roll_joint",
                "right_wrist_pitch_joint",
                "right_wrist_yaw_joint",
                "left_hand_thumb_1_joint",
                "left_hand_thumb_2_joint",
                "left_hand_index_0_joint",
                "left_hand_index_1_joint",
                "left_hand_middle_0_joint",
                "left_hand_middle_1_joint",
                "right_hand_thumb_1_joint",
                "right_hand_thumb_2_joint",
                "right_hand_index_0_joint",
                "right_hand_index_1_joint",
                "right_hand_middle_0_joint",
                "right_hand_middle_1_joint"
            ],
            "fps": 50
        },
        "timestamp": {
            "dtype": "float32",
            "shape": [
                1
            ],
            "names": null,
            "fps": 50
        },
        "episode_index": {
            "dtype": "int64",
            "shape": [
                1
            ],
            "names": null,
            "fps": 50
        },
        "task_index": {
            "dtype": "int64",
            "shape": [
                1
            ],
            "names": null,
            "fps": 50
        },
        "index": {
            "dtype": "int64",
            "shape": [
                1
            ],
            "names": null,
            "fps": 50
        },
        "frame_index": {
            "dtype": "int64",
            "shape": [
                1
            ],
            "names": null,
            "fps": 50
        }
    },
    "data_files_size_in_mb": 100,
    "video_files_size_in_mb": 500
}

Homepage: [Lightwheel-BenchHub]

License: [Apache License 2.0]