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.
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
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:
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:
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: trueLayout and provenance
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 camerasAll 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.
