Lightwheel-Tasks-X7S
收藏资源简介:
This dataset was created using [LeRobot](https://github.com/huggingface/lerobot). # 1 Dataset Description This dataset includes 117 Lightwheel-Libero-Tasks and 89 Lightwheel-Robocasa-Tasks, collected using the x7s robot in environments provided by LW-BenchHub. The robot configuration used during data collection is **`X7s-Abs`**, using `X7SAbsEnvCfg` inherits from `X7SEnvCfg`. --- ## 1.1 Robot State The robot state recorded in the environment is stored in: **observation.state** - **Dimension**: 25 - **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**: 21 The action is ordered as: base (3), body (2), left arm (7), right arm (7), left gripper (1), right gripper (1). | Component | Dimension | Description | |:----------------|:---------:|:------------------------------------| | Base action | 3 | Planar base motion | | Body action | 2 | Vertical and pitch motion | | Arm action | 14 | 7-DOF left arm + 7-DOF right arm | | Gripper action | 2 | Binary gripper control | ## 1.2.1 Base Action The base action is implemented using `RelativeJointPositionActionCfg`. - **Controlled joints**: - `base_x_joint` (index 0) - `base_y_joint` (index 1) - `base_yaw_link` (index 2) - **Scale**: `0.01` ```python self.action_config.base_action = mdp.RelativeJointPositionActionCfg( asset_name="robot", joint_names=["base.*"], scale=0.01, use_zero_offset=True, ) ``` ## 1.2.2 Body Action The body action controls the torso motion and is implemented using `RelativeJointPositionActionCfg`. - **Controlled joints**: - `body_z_joint` (index 3) - `body_y_joint` (index 4) - **Scale**: `0.025` ```python self.action_config.body_action = mdp.RelativeJointPositionActionCfg( asset_name="robot", joint_names=["body.*"], scale=0.025, use_zero_offset=True, ) ``` ## 1.2.3 Arm Action The arm actions are implemented using `JointPositionActionCfg`. - **Controlled joints**: - `left_shoulder_y` (index 5), `right_shoulder_y` (index 12) - `left_shoulder_x` (index 6), `right_shoulder_x` (index 13) - `left_shoulder_z` (index 7), `right_shoulder_z` (index 14) - `left_elbow_y` (index 8), `right_elbow_y` (index 15) - `left_elbow_x` (index 9), `right_elbow_x` (index 16) - `left_wrist_y` (index 10), `right_wrist_y` (index 17) - `left_wrist_z` (index 11), `right_wrist_z` (index 18) ```python self.action_config.left_arm_action = mdp.JointPositionActionCfg( asset_name="robot", joint_names=["left_shoulder_y", "left_shoulder_x", "left_shoulder_z", "left_elbow_y", "left_elbow_x", "left_wrist_y", "left_wrist_z"], scale=1.0, use_default_offset=True ) self.action_config.right_arm_action = mdp.JointPositionActionCfg( asset_name="robot", joint_names=["right_shoulder_y", "right_shoulder_x", "right_shoulder_z", "right_elbow_y", "right_elbow_x", "right_wrist_y", "right_wrist_z"], scale=1.0, use_default_offset=True ) ``` ## 1.2.4 Gripper Action Grippers are controlled using `BinaryJointPositionActionCfg`. In the action data, `-1` indicates closing the gripper, `+1` indicates opening the gripper. The action commands for opening and closing the left and right grippers are defined as follows: - **Left gripper** (index 19) - **Right gripper** (index 20) - **Action cmd**: - `-1`: close gripper - `+1`: open gripper - Each gripper is actuated by two joints together, and the open/close commands are mapped explicitly to joint positions. ```python # left gripper self.action_config.left_gripper_action = mdp.BinaryJointPositionActionCfg( asset_name="robot", joint_names=["left_gripper.*"], open_command_expr={ "left_gripper1": 0.044, "left_gripper2": 0.044, }, close_command_expr={ "left_gripper1": 0.0, "left_gripper2": 0.0, }, ) ``` ```python # right gripper self.action_config.right_gripper_action = mdp.BinaryJointPositionActionCfg( asset_name="robot", joint_names=["right_gripper.*"], open_command_expr={ "right_gripper1": 0.0, "right_gripper2": 0.0, }, close_command_expr={ "right_gripper1": -0.04, "right_gripper2": -0.04, }, ) ``` --- ## Dataset Structure [meta/info.json](meta/info.json): ```json { "codebase_version": "v3.0", "robot_type": "x7s", "total_episodes": 10300, "total_frames": 10336395, "total_tasks": 206, "chunks_size": 1000, "fps": 50, "splits": { "train": "0:10300" }, "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": [ 25 ], "names": [ "base_x_joint", "base_y_joint", "base_yaw_link", "body_z_joint", "body_y_joint", "right_shoulder_y", "head_z_joint", "left_shoulder_y", "right_shoulder_x", "head_y_joint", "left_shoulder_x", "right_shoulder_z", "left_shoulder_z", "right_elbow_y", "left_elbow_y", "right_elbow_x", "left_elbow_x", "right_wrist_y", "left_wrist_y", "right_wrist_z", "left_wrist_z", "right_gripper1", "right_gripper2", "left_gripper1", "left_gripper2" ], "fps": 50 }, "action": { "dtype": "float32", "shape": [ 21 ], "names": [ "base_x_joint", "base_y_joint", "base_yaw_link", "body_z_joint", "body_y_joint", "left_shoulder_y", "left_shoulder_x", "left_shoulder_z", "left_elbow_y", "left_elbow_x", "left_wrist_y", "left_wrist_z", "right_shoulder_y", "right_shoulder_x", "right_shoulder_z", "right_elbow_y", "right_elbow_x", "right_wrist_y", "right_wrist_z", "left_gripper", "right_gripper" ], "fps": 50 }, "processed_action": { "dtype": "float32", "shape": [ 23 ], "names": [ "base_x_joint", "base_y_joint", "base_yaw_link", "body_z_joint", "body_y_joint", "left_shoulder_y", "left_shoulder_x", "left_shoulder_z", "left_elbow_y", "left_elbow_x", "left_wrist_y", "left_wrist_z", "right_shoulder_y", "right_shoulder_x", "right_shoulder_z", "right_elbow_y", "right_elbow_x", "right_wrist_y", "right_wrist_z", "left_gripper1", "left_gripper2", "right_gripper1", "right_gripper2" ], "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](https://docs.lightwheel.net/lw_benchhub/)] ## License: [[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0)]



