CoolFace
Datasetpublic

qualiadev/qsim-shelf-restocking-mujoco-300-lerobot

Qsim Shelf Restocking — LeRobot v2.1 300 successful simulated shelf-restocking episodes, converted from the original Qsim HDF5 dataset to LeRobot v2.1 for the current Q-research / OpenPI training stack. 600 successful placements: 297 with the left arm, 303 with the right arm. 300 placements on the middle shelf and 300 on the top shelf. 542,518 state/action rows at 50 Hz, about 3.01 hours of trajectories. Three 320 × 240 RGB cameras: robot head (context), left wrist, right… See the full description on the dataset page: https://huggingface.co/datasets/qualiadev/qsim-shelf-restocking-mujoco-300-lerobot.

sourceHugging Faceupdated 9d agoView on Hugging Face
0likes95downloads
Dataset Card

Qsim Shelf Restocking — LeRobot v2.1

300 successful simulated shelf-restocking episodes, converted from the original Qsim HDF5 dataset to LeRobot v2.1 for the current Q-research / OpenPI training stack.

  • —600 successful placements: 297 with the left arm, 303 with the right arm.
  • —300 placements on the middle shelf and 300 on the top shelf.
  • —542,518 state/action rows at 50 Hz, about 3.01 hours of trajectories.
  • —Three 320 × 240 RGB cameras: robot head (context), left wrist, right wrist.
  • —64 task instructions specifying the carton order, arm, shelf, and destination slot.
  • —Stock bimanual OpenArm, MuJoCo physics, Mink/DAQP IK, contact-based grasps.

Timing and action semantics

The source cameras captured at 10 Hz; robot states and actions were recorded at 50 Hz. This conversion preserves every state/action row. Each camera image is held until the next captured image and encoded into a 50 FPS video. Repeated images are not additional camera observations. There is no interpolation or future-frame lookup. Image age ranges from 0 to 0.08 seconds and is recorded in observation.camera_age; capture timestamps and frame indices are also retained.

An observation precedes the corresponding action. action contains absolute joint-position targets in radians, held for 0.02 seconds. It is not a delta action or a measured next state. State/action/velocity vectors are converted to float32; their values and order otherwise match the source. Gripper values remain joint angles, with negative opening angles for the right gripper.

The 16 dimensions are left joints 1–7, left_gripper, right joints 1–7, right_gripper. These gripper names allow Q-research to derive its joint-only delta-action mask. The original MuJoCo joint names are mapped in meta/conversion.json.

Features

FeatureMeaning
observation.state16 measured joint positions, radians.
observation.velocity16 measured joint velocities, radians/second.
action16 absolute joint-position targets, radians.
observation.images.contextRobot-mounted head RGB view.
observation.images.wrist_leftLeft wrist RGB view.
observation.images.wrist_rightRight wrist RGB view.
observation.simulation_timeOriginal simulator observation timestamp.
observation.camera_timestampMost recent camera capture time, relative to episode start.
observation.camera_ageObservation time minus camera capture time.
observation.camera_frame_indexIndex of the original captured RGB frame.
timestampRelative episode time at 50 Hz.
frame_index, episode_index, index, task_indexStandard LeRobot indices.

Videos use H.264, YUV420P, CRF 18, with a keyframe interval of two frames for efficient random access. Video encoding is lossy. Original RGB and privileged simulator state remain available in the source HDF5 dataset.

Load with LeRobot v2.1

The export is validated with lerobot==0.3.3 and datasets==3.6.0:

python
from lerobot.datasets.lerobot_dataset import LeRobotDataset

dataset = LeRobotDataset(
    "qualiadev/qsim-shelf-restocking-mujoco-300-lerobot",
    revision="v2.1",
    video_backend="pyav",
)
sample = dataset[0]
print(sample["observation.state"].shape)          # (16,)
print(sample["action"].shape)                     # (16,)
print(sample["observation.images.context"].shape) # (3, 240, 320)
print(sample["task"])

The older Q-research environment imports the same v2.1 reader from lerobot.common.datasets.lerobot_dataset. This dataset is intentionally v2.1; LeRobot versions requiring v3 need a separate format migration.

Q-research training configuration:

yaml
repo_id: qualiadev/qsim-shelf-restocking-mujoco-300-lerobot
data_layer: generic
cameras:
  cam_1: observation.images.context
  cam_2: observation.images.wrist_left
  cam_3: observation.images.wrist_right
relativize: true
bimanual: true

Layout and provenance

text
meta/info.json                 # v2.1 schema and paths
meta/tasks.jsonl               # Task instructions
meta/episodes.jsonl            # Episode lengths and task associations
meta/episodes_stats.jsonl      # Per-episode normalization statistics
meta/stats.json                # Aggregated statistics
meta/conversion.json           # Conversion conventions and joint-name mapping
meta/validation.json           # Full validation report
meta/file_checksums.json       # SHA-256 hashes for all Parquet/MP4 files
meta/source/                   # Original configurations, outcomes, seeds and provenance
data/chunk-000/                # 300 per-episode Parquet files
videos/chunk-000/              # 900 MP4 files across the three cameras

All 300 episodes are in the train split; no held-out split is claimed. Seeds 42–341 cover all 64 available ordered placement plans, so repeated plans must be accounted for when constructing an evaluation split. Image normalization stats use pixels sampled on a 4×4 spatial grid, weighted by the number of held control rows. Numerical state/action statistics use every row.

Each episode places E14 and E27 cartons, with randomized order, arm, shelf assignment, and slot. Slot 1/2 is numbered within the chosen shelf row and arm's workspace, at absolute Y offsets 0.16/0.25 m. Coordinates mirror with arm choice. Cameras, geometry, colors, and lighting are fixed. This is an uncalibrated simulation baseline; simulator success does not establish real-robot transfer.

The source robot model originates from enactic/openarm_mujoco. The dataset is public and ungated. No additional dataset license is asserted.