Skip to content

Home / Formats / RLDS TFRecord

RLDS dataset format and Open X-Embodiment compatibility.

EgoVista ships every dataset in the RLDS TFRecord schema, with the conventions used by Open X-Embodiment and RT-X. If your team trains on the tensorflow_datasets ecosystem, the integration is one library call away.

1 of 8 sections

Why RLDS for robotics datasets.

RLDS, short for Reinforcement Learning Datasets, was introduced by DeepMind to standardize how sequential decision making data is stored on disk. It is, in practice, the format the robotics research community converged on for cross-embodiment imitation learning, and it powers the Open X-Embodiment collaboration as well as the RT-X benchmark family. Datasets in this format are episodes of typed steps, encoded as TFRecord shards, with a typed features dictionary that the tensorflow_datasets library consumes natively.

For an ML team, RLDS matters in two situations. First, when the goal is to benchmark a new policy against Open X-Embodiment or RT-X numbers, the dataset must share the action space conventions and the observation keys used by those benchmarks. Second, when the existing training infrastructure is built around tensorflow and TFDS data loaders, an RLDS dataset slots into that stack with zero glue code. EgoVista produces datasets that satisfy both situations from a single source of raw annotations.

2 of 8 sections

RLDS specification overview.

An RLDS dataset is a collection of episodes, each episode is a sequence of steps, and each step is a typed dictionary with a stable schema. The encoding lives in TFRecord shards, and the schema is described separately so a data loader can deserialize without scanning the data.

RLDS episode and per-step features dictAnatomy of an RLDS episode produced by EgoVista: a sequence of typed steps on the left, an expanded view of the per-step features dictionary on the right, with the observation and action keys, their tensor types, and the optional reward and discount fields.Episodesequence of typed stepsstep t₀is_firststep t₁step t₂step tₙis_lastis_terminalexpanded viewFeatures dictper step, typedKEYTYPEobservation.image_primaryTensor[H,W,3]observation.depth_mapTensor[H,W,1]observation.hand_pose_2dTensor[21,2]observation.hand_pose_3dTensor[21,3]observation.segmentation_maskTensor[H,W,1]action.contact_phaseint (0-3)action.language_instructionstringdiscountfloatrewardfloat · optionalSharded TFRecord on disk · compatible with tensorflow_datasets and Open X-Embodiment.
RLDS TFRecord episode structure and features dict.

The concrete pieces of an RLDS dataset on disk:

The RLDS step structure follows a fixed convention: every step has a flag for is_first, is_last, and is_terminal, plus the observation, action, reward, and discount fields. EgoVista datasets do not produce rewards or discount signals for human demonstrations, so those fields are present as zero scalars to keep the schema valid while documenting their absence.

3 of 8 sections

Standard features for manipulation datasets.

The EgoVista 9-layer annotation stack is mapped into the RLDS features dictionary with stable keys. Observation keys follow Open X-Embodiment naming where one exists, and we add extra keys for the layers OXE does not standardize.

Default features in an EgoVista RLDS dataset:

Loading an EgoVista RLDS dataset:

import tensorflow_datasets as tfds

ds = tfds.load("egovista/manipulation_egocentric", split="train")
for episode in ds.take(1):
    for step in episode["steps"]:
        print(step["action"]["language_instruction"].numpy())
        print(step["observation"]["hand_pose_3d"].shape)

4 of 8 sections

Open X-Embodiment and RT-X integration.

Open X-Embodiment is a multi-institution effort to combine robotics datasets from many labs and many robots into one corpus, with a unified schema that supports cross-embodiment training. RT-X is the family of policies trained on that corpus. EgoVista datasets are produced with the OXE conventions in mind so they can be mixed with the public OXE corpus during training.

What this means concretely:

The mapping decisions, especially the action space ones, are documented in the dataset card so an auditor or a reviewer can reproduce them.

5 of 8 sections

From raw capture to RLDS TFRecord.

The path from a raw egocentric video to a delivered RLDS dataset is a sequence of deterministic stages. Every stage is logged so any TFRecord shard can be traced back to the exact source video and the exact model versions that produced its annotations.

  1. Ingest the contributor video into Cloudflare R2 in the EU region.
  2. Apply face anonymization locally with MediaPipe Face Detection. The anonymized version is the only one that ever leaves the local zone for downstream processing.
  3. Run the 9 annotation layers on EU compute: 2D and 3D hand pose, depth, EgoHOS segmentation, contact timing, action labels via Vertex AI Gemini in europe-west4, plus camera intrinsics and metadata.
  4. Map annotations into the RLDS features dictionary using the canonical schema, plus any client-specific overrides.
  5. Encode steps into TFRecord shards, typically between 50 and 100 MB each, with one or more full episodes per shard.
  6. Generate features.json, dataset_info.json and tfds_builder.py, then validate the dataset by running a smoke tfds.load on a sampled shard.
  7. Deliver via signed URL with the engagement-specific retention policy.

All processing operates on EU infrastructure. See the GDPR compliance details for the legal basis attached to each operation.

6 of 8 sections

Choosing between LeRobot and RLDS.

Both formats are well designed, both are actively maintained, and a single EgoVista capture can be exported to either. The pick depends on the rest of your stack. LeRobot is more recent and uses parquet, which fits well with the modern Python data tooling and the Hugging Face Hub flow. The visualization tools and the training scripts in the LeRobot repository accelerate iteration speed for teams comfortable in that ecosystem.

RLDS is older, more conservative, and built around TFRecord and tensorflow_datasets. It remains the right choice for teams that benchmark against Open X-Embodiment or RT-X, that already operate a tensorflow data pipeline at scale, or that want their dataset to interoperate with the broader OXE corpus during multi-embodiment training. See the LeRobot v3.0 format page for the matching breakdown.

7 of 8 sections

RLDS format frequently asked questions.

Do you produce datasets compatible with the RT-X benchmark?

Yes. RT-X compatibility means following the Open X-Embodiment conventions: a consistent action space, a fixed set of observation keys, and the standard RLDS step structure. EgoVista datasets are produced with those conventions in mind, and we document the mapping in the dataset card so a reviewer can audit how each feature was derived. If your team needs the dataset to plug directly into the RT-X benchmark harness, we can deliver under the exact feature names expected by that harness without re-collecting data.

How do you handle action space mapping for cross-embodiment training?

Action space mapping is the hard part of cross-embodiment work. We deliver the raw human signal (hand pose in 3D, contact transitions, action language) and let your retargeting layer translate that into your robot action space. We do not pretend to know your kinematics, so we do not produce robot-specific actions. For teams that want a pre-mapped action, we can deliver against a custom action schema once you describe the target embodiment, with the original human signal preserved alongside for ablations.

Can you deliver both LeRobot and RLDS for the same dataset?

Yes. The annotations are produced once from the raw source, then re-packed to either format on demand. A team can start with one format for prototyping and add the other for production training. There is a re-pack delay, typically a couple of business days, but no re-collection of video or re-running of the annotation pipeline. Both exports share the same canonical schema version so episode by episode parity is preserved.

What is the typical TFRecord shard size?

TFRecord shards are sized for parallel loading on standard ML clusters, typically between 50 and 100 MB per shard. Each shard contains one or more full episodes, never a partial episode, which keeps the dataloader logic simple. A `dataset_info.json` file accompanies the shards with the total number of episodes, per-feature shapes and dtypes, and the recommended train/validation split. You can re-shard on your side without re-encoding if your training infrastructure needs a different size.

Do you provide tfds metadata builder code?

Yes. Every RLDS dataset ships with a `tfds_builder.py` that registers the dataset under a stable name, declares the features dictionary, and points to the TFRecord shards. Once the file is on a Python path, `tfds.load("egovista/<dataset_name>")` works without any further configuration. The builder is generated at build time from the dataset spec, so it always matches the actual schema of the delivered files.

How are continuous and discrete actions encoded?

Continuous signals like hand pose coordinates are encoded as float32 tensors with their natural shape, no quantization unless explicitly requested. Discrete events like contact phase transitions are encoded as int8 scalars with documented value semantics. Action language descriptions are encoded as UTF-8 strings, and a confidence score is provided alongside as a float32 scalar. The features dictionary in the RLDS metadata documents every encoding choice so your data loader knows exactly what to expect.

8 of 8 sections

Request an RLDS sample.

Tell us the task and the embodiment you target. We can ship a 10 to 20 episode RLDS dataset so your team can validate the shard layout, the features dictionary, and the tfds.load integration before any scale up. For related material, see the LeRobot v3.0 export, the full product page, or the GDPR pipeline details.

Request an RLDS sampleTalk to an engineer