Delivery format

Custom RLDS Dataset for Robot Learning

RLDS stores each demonstration as a sequence of steps with observations and actions, built on TFDS. We collect custom first-person video on demand against your written skill spec and deliver it as an RLDS dataset: TFDS-compatible tfrecord shards with the step and episode keys your loader reads, a QA gate before anything ships, and a buyer-owned licence.
Container
TFDS-compatible tfrecord shards
Step keys
head_rgb · depth_mm · hand_joints · action · is_terminal
Also ships as
LeRobot · WebDataset · HDF5/zarr
First batch
Median 48 h in deep-coverage settings
A contributor wearing a head-mounted capture rig performs a manual task, beside a graphic of synchronized hand-pose, depth, and action-segment annotation layers.
One captured and annotated episode, exported into the RLDS step and episode structure.

What an RLDS delivery includes

Captured to your spec, exported RLDS-ready.

01

Steps and episodes your loader already expects

Each demonstration is an episode made of steps, and each step carries observation and action fields. RLDS is built on TFDS, so the shards open with tensorflow_datasets rather than a custom parser.

02

Depth carried on every step

RLDS keeps observation.depth_mm as its own per-step field, so a policy that consumes depth reads it from the same shards as the video, with no second export.

03

Hand pose as its own field

observation.hand_joints stays a separate field per step rather than being flattened into a state vector, so you slice 2×21 joints in metres directly.

04

Readable converter source

The converter ships as readable source, so you can retarget the field mapping to your own loader instead of trusting a binary.

Definition

What is a custom RLDS dataset?

RLDS (Reinforcement Learning Datasets) is a standard for storing episodic, step-based data for robot learning, built on TFDS. It represents each demonstration as a sequence of steps with observations and actions, which makes episodes portable across training pipelines. A custom RLDS dataset is egocentric video that is specified by a buyer, captured against that written spec, and delivered in this layout.

This page is about ordering a collection with RLDS as the delivery format. It is not the format reference: the RLDS format page holds the full key mapping, loading snippet and gotchas. It is also the RLDS counterpart of the custom LeRobot dataset page, for teams whose training stack reads TFDS rather than the LeRobot layout.

Why RLDS

Why do robot-learning teams ask for RLDS delivery?

The practical reason is the pipeline. A common episodic format lets you mix datasets and reuse dataloaders instead of writing a bespoke parser for every new source, and RLDS is widely used across open robot-learning efforts. A team whose training code already imports tensorflow_datasets can load a custom collection the same way it loads everything else, and a one-off source does not need its own loader to be written and maintained.

Ordering custom data rather than relying on whatever a public dataset happened to cover means the tasks, objects and settings match what your policy is missing. RLDS also suits teams that want depth on every step: observation.depth_mm is carried per step, where the mp4-based LeRobot layout does not embed depth.

A third reason is control over the mapping. Streams are stored at native rate and the converter ships as readable source, so the field mapping can be retargeted to a loader of your own rather than accepted as a black box.

Skill spec

How does a skill spec map to RLDS episodes and steps?

Every custom collection starts with a written skill spec: the task your pipeline needs covered, the setting, the object set, the capture tier, the annotation depth and the accept criteria. That spec is quoted for reach, timeline and price before capture begins, and the accept criteria are signed into it.

In RLDS, the skill becomes the organising unit. Shards are laid out with one skill line per directory, and each episode carries episode_metadata.skill_id and episode_metadata.site_id, so a given episode can be traced back to the skill and setting it came from. One attempt at the task is one episode; each step inside it holds the head RGB frame, the depth frame, the hand joints and the action.

Where the spec names sub-steps, the segment structure is held in the canonical episode schema as action segments with start_ns, end_ns, verb and noun. The RLDS format page does not itemise a dedicated RLDS key for them, so if your policy needs segment boundaries in the RLDS files themselves, say so in the spec and confirm the mapping on the Spec Pilot batch before you scale.

Labels

Which Firsthand labels are included in the RLDS export?

Every format on this site is a projection of one canonical episode schema with four groups: meta, streams, annotations and calibration. RLDS flattens that into the step and episode keys listed on the format page, so the table below pairs each label with where the site says it lands.

Four things are stated directly for RLDS: the head RGB frame, the metric depth frame, the hand joints and the action are step keys, and the skill, site and calibration drift are episode keys. Anything the format page does not itemise is marked as such rather than assumed, because a field you rely on should be confirmed in the Spec Pilot, not inferred from this page.

The calibration drift key is worth using. episode_metadata.calib_drift_mm lets you filter on calibration quality before training, and the per-episode reject flags that apply to a batch hold across every format, so an episode excluded for failing QA does not appear in the RLDS export either.

Capture

How is the data captured?

Paid, consented contributors perform the real task against your spec while wearing the capture rig. The instrumented tier is a head-mounted stereo rig: first-person RGB, with a metric depth stream recovered from the calibrated stereo rig rather than a standalone depth sensor, and 6-DoF IMU data at 200 Hz from head- and wrist-mounted sensors.

Every stream is hardware-triggered onto one PTP clock domain with int64 nanosecond timestamps per stream, so depth, motion and hand pose are aligned to the same video frame rather than approximated afterwards. The rig is calibrated before capture and again after the session, and the head, wrist and depth transforms are solved each time.

Capture happens in the settings this site already lists on its industry and environment pages, and collection is on demand: you do not need a standing program, and a focused brief is a normal starting point. We do not capture robot or teleoperation data, and we do not capture at a customer’s own facility.

QA

How is a custom RLDS dataset QA’d before delivery?

QA happens once, against the canonical episode, before any format-specific export is produced. The RLDS shards inherit that same calibrated, synced, QA-passed data: they are a different on-disk layout of the same capture, not a separately verified pipeline.

Acceptance is measured against the signed accept criteria. An episode is accepted only if RMS reprojection stays under 0.28 px and the drift is within tolerance; otherwise it goes to the reject log, which ships with every batch. Only footage that clears the criteria is billed as a validated hour, and rejected items are recaptured at our cost.

Privacy is part of the same gate. Every episode is linked to a signed contributor release under a documented consent chain, and faces and screens in frame are detected and irreversibly blurred at ingest, with a reviewer confirming the result before anything ships. Clips that cannot be de-identified are discarded rather than delivered.

Choosing a format

RLDS or LeRobot: which delivery format should you choose?

Choose the one your training stack already imports. RLDS loads with tensorflow_datasets and suits TensorFlow-based pipelines and RL-style step sequences. LeRobot loads with lerobot.common.datasets and suits imitation-learning pipelines already built on the LeRobot ecosystem. We deliver both directly, so the decision comes down to your pipeline, not data availability.

The differences that matter are depth, pose shape and footprint. RLDS carries depth per step and keeps hand_joints as its own field; LeRobot flattens hand and body pose into one observation.state vector and does not embed depth in the mp4. LeRobot is the smaller on-disk option because video stays compressed per camera, while RLDS shards store fields directly and run larger per episode.

You do not have to decide blind. Because both are exports of the same QA-passed episodes, a team can request a second format on the same Spec Pilot batch and compare loading and disk footprint on its own pipeline before scaling. If you already hold RLDS data and want LeRobot, the converting guide covers the mapping.

Licence and delivery

What do you receive, and under what licence?

You receive the dataset under a perpetual, irrevocable, worldwide commercial licence that is non-exclusive by default, with the buyer owning the resulting dataset and exclusivity available. The same terms apply regardless of which format the episodes are exported into.

The delivery is the RLDS shards, the reject log for the batch, and the readable converter source. Format options for the same collection are RLDS, LeRobot, WebDataset, HDF5/zarr, or Rerun .rrd, plus raw streams with metadata, matching whatever your pipeline already loads.

Speed

How fast can a custom RLDS dataset be delivered?

Where coverage for the requested tasks and regions is already deep, the median time from signed spec to first validated batch is a median of 48 hours. Where it is thin, turnaround runs three to four weeks while recruiting expands in parallel across more regions.

Those are the same timelines as every other custom collection on this site; choosing RLDS as the format does not add a separate stage, because the export is built from the episodes that already passed QA.

Getting started

How do you request a custom RLDS dataset?

Write down the tasks, environments, objects and camera tier your model needs, and specify RLDS as the delivery format. Most orders begin with a Spec Pilot: a small, fast first batch that proves the spec and the accept criteria hold up on real footage before you scale to the full order.

On that pilot, load a shard with your own pipeline and check the keys you depend on. If anything you need is not itemised on the RLDS format page, such as segment boundaries or visibility flags, name it in the spec so the mapping is agreed before volume is committed.

At a glance

What you get.

Container
TFDS-compatible tfrecord shards, one skill line per directory
Step keys
observation.head_rgb, observation.depth_mm, observation.hand_joints, action, is_terminal
Episode keys
episode_metadata.skill_id, .site_id, .calib_drift_mm
Timestamps
int64 nanoseconds, PTP domain, per stream
Also available as
LeRobot, WebDataset, HDF5 & zarr, Rerun .rrd
Spec to first batch
a median of 48 hours (deep coverage)
License
Perpetual, irrevocable, buyer-owned, non-exclusive by default

Every collection runs through the same seven-stage end-to-end custom collection pipeline. End-to-end custom data collection is a managed service that takes an AI data need from problem to owned dataset in a single accountable pipeline.

Label mapping

Firsthand labels and where they land in the RLDS export

Label or stream, its field in the canonical episode schema, and its RLDS location as stated on this site. "Not itemised" means the RLDS format page does not list a dedicated key.
Label / streamEpisode-schema fieldRLDS location
Head RGB videostreams (head camera)observation.head_rgb, per step
Metric depth (from the stereo rig)streams (depth)observation.depth_mm, per step
3D hand posehand_jointsobservation.hand_joints, per step (2×21×3, metres)
Per-joint visibility flaghand_visibleNot itemised on the RLDS format page; confirm on the Spec Pilot
Contact eventscontact_eventsNot itemised on the RLDS format page; confirm on the Spec Pilot
Action segments (sub-steps)start_ns, end_ns, verb, nounNot itemised on the RLDS format page; confirm on the Spec Pilot
Actionactionaction, per step
Skill and settingskill_id, site_idepisode_metadata.skill_id, episode_metadata.site_id
Calibration qualitycalibrationepisode_metadata.calib_drift_mm
Stream timestampsper-stream timestampsint64 nanoseconds, PTP domain, per stream

RLDS vs LeRobot

RLDS and LeRobot delivery, as the site states them

The same QA-passed episodes can be exported to either layout.
RLDSLeRobot
ContainerTFDS-compatible tfrecord shardsParquet + mp4 per camera, Hugging Face datasets layout
Loading librarytensorflow_datasetslerobot.common.datasets.lerobot_dataset
Depthobservation.depth_mm carried per stepNot embedded in the mp4; pull it from the HDF5 export
Pose representationhand_joints kept as its own field per step2×21×3 hand joints flattened into observation.state, then 24×3 body joints
Timestampsint64 nanoseconds, PTP domain, per streamPer-frame, aligned to the head-camera clock
On-disk footprintStores fields directly; larger per episodeThe smaller on-disk option
Typical useTensorFlow-based pipelines, RL-style step sequencesImitation-learning pipelines on the LeRobot ecosystem

Skill spec

What the skill spec fixes, and how it shows up in RLDS

Spec element and the place a buyer can see it in the delivered RLDS files.
Spec elementWhat it decidesWhere it shows up
Task and skillWhat one attempt is and how it is namedOne episode per attempt; episode_metadata.skill_id; one skill line per directory
SettingWhere the task is performedepisode_metadata.site_id
Capture tierWhich streams are recordedStep keys such as observation.head_rgb and observation.depth_mm
Annotation depthWhich labels are producedhand_joints, action, and the annotation fields in the episode schema
Accept criteriaWhat passes QAReject log per batch; episode_metadata.calib_drift_mm for your own filtering
Delivery formatHow the data is packagedTFDS-compatible tfrecord shards

FAQ

Custom RLDS dataset, answered.

What is a custom RLDS dataset?
An egocentric video collection captured to a buyer’s skill spec and delivered as TFDS-compatible tfrecord shards, with each episode stored as a sequence of steps carrying observations and actions.
Which keys does an RLDS delivery include?
Step keys are observation.head_rgb, observation.depth_mm, observation.hand_joints, action and is_terminal. Episode keys are episode_metadata.skill_id, .site_id and .calib_drift_mm.
Does the RLDS export include depth?
Yes. observation.depth_mm is carried per step. The depth is recovered from the calibrated stereo rig rather than from a standalone depth sensor.
Can I get the same dataset in LeRobot as well as RLDS?
Yes. The episodes are captured and annotated once and can be exported into more than one format, including LeRobot, WebDataset and HDF5/zarr, so a second format on a Spec Pilot batch is a way to compare before scaling.
Are visibility flags, contact events and action segments in the RLDS files?
They are part of the canonical episode schema. The RLDS format page does not itemise dedicated RLDS keys for them, so name them in your spec and confirm the mapping on the Spec Pilot batch.
Can I retarget the field mapping to my own loader?
Yes. The converter ships as readable source, so you can change the field mapping rather than relying on a binary.
What licence does the dataset ship under?
A perpetual, irrevocable, worldwide commercial licence that is non-exclusive by default, with the buyer owning the resulting dataset and exclusivity available.
How fast can I get a custom RLDS dataset?
Where coverage for your tasks and regions is already deep, the median time from signed spec to first validated batch is a median of 48 hours. Thin coverage runs three to four weeks while recruiting expands.

Sources

Where are the delivery formats documented?

Request a custom RLDS dataset.

Tell us the tasks, environments and camera tier your model needs, and specify RLDS as the delivery format. The same episodes can also ship as LeRobot, WebDataset or HDF5/zarr, with a first validated batch in a median of 48 hours where coverage is deep.