The AY-Robots teleoperator page: become a robot operator from anywhere in the world, with a photo of the SO-100 arm operators drive
Robot DataDatasetsImitation LearningVLA ModelsData Collection

The Data Bottleneck in Robot Learning

AY-Robots ResearchAugust 23, 202618 min read

Robotics has no LAION-5B and no Common Crawl. What the largest robot datasets actually contain, why they stay small, and how many episodes one arm and one task really need.

Where is the ImageNet for robots, the multi-terabyte dump you download once and fine-tune against forever? It does not exist, it is not close, and a bigger crawl will not fix it. Here is what the largest robot datasets contain, why they stay small, and what that means for one arm on a desk.

The short version

  • Web corpora are measured in billions of samples: LAION-5B holds 5.85 billion image-text pairs. The largest pooled open robot manipulation corpus, Open X-Embodiment, holds a little over 1 million trajectories across 22 embodiments.
  • Robot data cannot be scraped: the action labels are not in the video. Every trajectory needs a robot, a human driving it, and wall-clock time. RT-1's 130k episodes took 13 robots 17 months.
  • Pooling helps less than it looks: Open X-Embodiment merges 60 datasets from 34 labs, but RT-X trained on only 9 of the 22 embodiments.
  • The published scaling analysis says diversity beats volume. Past roughly 50 demonstrations per environment-object pair, more demonstrations in the same setting stop paying.
  • Big labs work around the gap with web co-training and generated data. In Pi0.5, 97.6% of first-phase training examples do not come from the target robot at all.
  • For one arm and one task, the useful number is 30 to 50 well-varied episodes, not 30,000.

What internet-scale means, and what robotics has instead

The cleanest comparison is vision, not language. LAION-5B was crawled from the web and CLIP-filtered, ending at 5.85 billion image-text pairs, 2.32 billion of them English. Nobody staged those photographs; they existed already, as a by-product of people publishing things. Robot episodes are a by-product of nothing. Somebody sits down and produces each one.

CorpusOne sample isSizeHow it was obtained
LAION-5Bimage plus caption5.85 B pairs (2.32 B English)crawled from the open web, CLIP-filtered
Ego4Degocentric video, no actions3,670 hours, 931 camera wearers74 locations in 9 countries, head-mounted cameras
Open X-Embodimentrobot trajectory + actions1M+ trajectories, 22 embodiments, 527 skills60 datasets pooled from 34 labs
AgiBot Worldrobot trajectory + actions1,001,552 trajectories, 2,976.4 hours100+ robots, purpose-built facility over 4,000 m2
DROIDrobot trajectory + actions76k trajectories, 350 hours, 564 scenes50 collectors, 13 institutions, 12 months
BridgeData V2robot trajectory + actions60,096 trajectories, 24 environmentsone low-cost arm, lab collection
RT-1 (internal)robot trajectory + actions~130k episodes, 700+ instructions13 robots, 17 months

Read the right-hand column, not the middle one. Every robot row describes a physical operation with a payroll attached; the vision row describes a crawler. One million trajectories against 5.85 billion image-text pairs is nearly four orders of magnitude. Longer write-ups of the two biggest entries: Open X-Embodiment and the DROID dataset.

Why the corpus cannot simply be scraped

The instinct is to point at YouTube, where millions of hours of people manipulating objects are sitting right there. Six reasons that is not the corpus, all of which show up as engineering work.

  1. The action labels are not in the frame. Video shows what a hand ended up doing, not what joint command produced it. Imitation learning needs the command, not the outcome.
  2. Embodiments disagree. Open X-Embodiment pools 22 embodiments, but the RT-X models in that paper trained on data from 9 manipulators. Merging action spaces is not free.
  3. Control rates disagree. RT-1 commands actions at 3 Hz, other datasets record at 30 Hz or higher, and resampling changes what a single action means.
  4. Proprioception is missing. Joint angles, gripper width and load live in the state vector, nowhere in the pixels. A LeRobot dataset stores them as a separate parquet stream for that reason.
  5. There are almost no negatives. Teleoperated demonstrations are curated successes, so the corpus says little about what failure looks like.
  6. Data ages with the hardware. Recalibrate, move a camera 3 cm, swap a gripper finger, and your old episodes describe a robot that no longer exists.
The trap that eats a day: the dataset that describes a robot you no longer have

The most expensive mistake in small-team collection is recording 60 good episodes, then adjusting the camera mount or redoing calibration before the next 60. The halves now disagree about where the world is, and training on the union yields a policy that averages two coordinate frames and hits neither. Changing the rig starts a new dataset. See policy only works in one setup.

What collection actually costs in wall-clock time

These papers are unusually honest about their logistics, which lets you do throughput arithmetic. The rightmost column is our division, not a figure they state.

DatasetEffort described in the paperOutputThroughput (our arithmetic)
RT-113 robots, 17 months~130k episodes, 700+ instructions~590 episodes per robot-month
DROID50 collectors, 13 institutions, 12 months76k trajectories, 350 hours~7 hours per collector, per year
AgiBot World100+ robots, dedicated facility1,001,552 trajectories, 2,976.4 hours~30 hours per robot
RoboTurkcrowdsourced iPhone teleop, 22 hours of total system usage2,200+ demonstrations, 137.5 hours~100 demos per hour of system usage

The DROID row is the one worth staring at. Fifty people, thirteen institutions, twelve months, 350 hours. That is seven hours per person per year, not because the people were slow but because teleoperation has an irreducible cost: reset the scene, drive the arm, notice the grasp slipped, discard, reset. The RoboTurk row is the counterexample: its throughput scales with people rather than robots. That is the bet behind remote operator work and behind browser-based driving on the live arm.

The AY-Robots public dataset directory listing LeRobot-format datasets from SO-100 class arms
Every entry here is a dataset someone actually recorded, which is the only way robot data comes into existence.

Five things people are doing about it

1. Pool what already exists

Open X-Embodiment is the flagship attempt: 60 datasets from 34 labs, converted to RLDS and published as one union. It works well enough that RT-X showed positive transfer across platforms, and it also shows the limits of pooling. The paper's own figure notes that Franka has the largest diversity of distinct scenes, while xArm and Google Robot contribute the most trajectories because of a few large datasets. The union is not a uniform sample of robotics. It is a stack of lab-shaped lumps.

bash
# Open X-Embodiment lives in a public GCS bucket, stored as RLDS episodes.
# Pull one sub-dataset rather than the whole thing:
gsutil -m cp -r gs://gdm-robotics-open-x-embodiment/bridge ~/tensorflow_datasets/

# DROID ships four variants. Start with the 100-episode debug slice (2 GB),
# not the 1.7 TB RLDS build and definitely not the 8.7 TB raw stereo build.
gsutil -m cp -r gs://gresearch/robotics/droid_100 ./droid_100

# Full RLDS DROID, 1.7 TB, only when you know you need it:
# gsutil -m cp -r gs://gresearch/robotics/droid ./droid
Bucket paths and sizes as documented by the Open X-Embodiment repo and the DROID dataset page, checked 24 August 2026.

2. Make the robot cheap enough that data comes from everywhere

The second strategy: drop the price of a data-producing rig until hobbyists outnumber labs. Hence the SO-100 at roughly 110 to 150 EUR in parts, and LeRobot as a common format. Narrowly it works: on 24 August 2026 the Hugging Face Hub listed 78,214 datasets under the robotics task category. Broadly it does not, because most are a few episodes of one task on one desk, with no language annotation and no consistent camera convention. Repository count is not usable data. The data quality guide is the checklist for landing in the usable half.

3. Borrow supervision from the web

If you cannot get more robot data, lean on data that is not robot data. This is the co-training argument behind every current vision-language-action model. The clearest published number is Pi0.5: about 400 hours of mobile manipulator data from about 100 home environments, but 97.6% of the first-phase training examples come from elsewhere, including cross-embodiment lab data, non-mobile robot data and web data such as captioning and visual question answering. The robot data steers a model the internet mostly taught. Mechanism in the VLA overview, model-by-model numbers on the policies page.

4. Manufacture the data you cannot collect

NVIDIA's GR00T N1 paper calls this a data pyramid: web and human video at the base, synthetic data in the middle, real teleoperation at the peak. The ratios are the interesting part. The in-house teleoperated set was 88 hours; video generation models expanded it to 827 hours of neural trajectories. Separately, DexMimicGen produced 780,000 simulation trajectories, about 6,500 hours equivalent, in 11 hours. The base is action-less human video from Ego4D, EPIC-KITCHENS, HOI4D and similar, with pseudo-actions attached by latent action models and inverse dynamics.

Generated data is not free data

Eleven hours of generation for 6,500 simulated hours is a real win, but only where the simulator is faithful, and contact, deformables and cloth are where it stops being faithful. Generated data broadens a policy that already works on real hardware. It does not replace the first 50 real episodes.

5. Curate instead of collect

The cheapest lever left is using the data you already have better. Re-Mix optimises the mixture weights over Open X-Embodiment sub-datasets rather than guessing them, and reports 38% over uniform weights and 32% over the human-selected weights used for the RT-X models, with no new robot hours collected. A small team can copy the idea: before recording another 200 episodes, check whether half of them are duplicates of one lighting condition.

Starting from a pooled public dataset instead of your own
Advantages
  • Free, downloadable now, already in a standard format (RLDS for Open X-Embodiment and DROID, LeRobot on the Hugging Face Hub).
  • Breadth you will never record yourself: 527 skills across 22 embodiments, 564 scenes in DROID.
  • Published baselines exist, so you can tell whether the run is broken or the data is.
  • Good for pretraining a backbone, or sanity-checking a pipeline before you own hardware.
Trade-offs
  • Skewed by construction. A few large sub-datasets dominate the trajectory count, so 'more data' often means 'more of the same robot'.
  • None of it is your arm, camera placement, lighting or table height, which is exactly what a fine-tuned policy latches onto.
  • Storage is real: DROID is 1.7 TB as RLDS, 8.7 TB as raw stereo. The 2 GB droid_100 slice exists because most people should not download the rest.
  • Format friction. RLDS is not LeRobot, and a mismatched schema shows up as a training crash, not a warning.

What the scaling analyses actually say

The most useful paper here is Data Scaling Laws in Imitation Learning for Robotic Manipulation (Lin et al., posted October 2024, revised through June 2026): over 40,000 demonstrations with handheld UMI grippers and over 15,000 real-world rollouts, to answer one question: what do you get for each additional unit of data?

QuestionWhat they variedWhat they found
Does performance scale at all?distinct environments and objectsRoughly power-law in environment and object count
Volume or diversity?demonstrations per pair, with environment and object count held fixedNo clear power law: performance rises then plateaus, so diversity outweighs raw demonstration count
How many demos per setting?8, 16 and 32 environment-object pairsPlateaus at 400, 800 and 1600 demonstrations, i.e. about 50 per pair
What does that cost?32 pairs, 50 demonstrations eachFour collectors, one afternoon, ~90% on two tasks in novel environments with unseen objects
The finding that should change your plan

Lin et al. state it directly: once demonstrations per environment or object pass a threshold, "additional demonstrations have minimal effect". Their own recommendation is 50 demonstrations per environment-object pair. A fifth batch of 50 episodes at the same table, same light, same cube buys almost nothing. Move the cube, move the lamp, change the tablecloth, and those 50 are worth far more.

That does not remove the corpus problem, it reframes it. What is scarce is not trajectory count, it is covered conditions. A lab chasing a generalist policy across every kitchen on earth needs an enormous number of conditions. You, chasing one pick-and-place on one desk, need about a dozen.

The manual path: getting real data on disk today

  1. 1
    Install LeRobot and check it runs

    The format most of this ecosystem standardised on. Dataset v3.0 ships in lerobot 0.4.0 and later.

    bash
    pip install lerobot
    lerobot-info
  2. 2
    Pull a small public slice before you pull a large one

    The 100-episode DROID slice is 2 GB and tells you in minutes whether your loader and disk are up to it. The full RLDS build is 1.7 TB.

    bash
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ./droid_100
  3. 3
    Record your own episodes, because the public data is not your robot

    The command that actually creates new data. Vary the scene between batches rather than repeating one setup.

    bash
    lerobot-record \
      --robot.type=so101_follower \
      --robot.port=/dev/tty.usbmodem585A0076841 \
      --robot.id=my_awesome_follower_arm \
      --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 1920, height: 1080, fps: 30}}" \
      --teleop.type=so101_leader \
      --teleop.port=/dev/tty.usbmodem58760431551 \
      --teleop.id=my_awesome_leader_arm \
      --display_data=true \
      --dataset.repo_id=${HF_USER}/record-test \
      --dataset.num_episodes=5 \
      --dataset.single_task="Grab the black cube"
  4. 4
    Know which format version you produced

    v3.0 packs many episodes per parquet and mp4 file; v2.1 was one file per episode. Some trainers accept only one, so check before renting a GPU.

    bash
    cat meta/info.json | python3 -m json.tool | head -20
  5. 5
    Convert between format versions when the trainer demands it

    Mind the direction. The documented converter goes v2.1 to v3.0: it aggregates per-episode files into shards and rewrites the episode offsets. GR00T N1.7 and N1.5 want v2.0 or v2.1, so for those the job is to have the v2.1 dataset in the first place, not to run this script.

    bash
    python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=<HF_USER/DATASET_ID>
  6. 6
    Train, then measure on the real arm rather than on the loss curve

    Falling loss says the model reproduces your demonstrations. It says nothing about whether the arm finishes the task.

    bash
    lerobot-train \
      --policy.type=act \
      --dataset.repo_id=${HF_USER}/record-test
Two format traps and one hardware trap

First: a LeRobot v3.0 dataset crashes the GR00T loader. GR00T N1.7 and N1.5 want v2.0 or v2.1, so a v3.0 recording must be converted down first. See dataset rejected as v3. Second: call dataset.finalize() before push_to_hub(), or the parquet footers are never written and the dataset will not load. Third, and this one costs money rather than a day: Feetech STS3215 bus servos on the SO-100 and SO-101 run at 7.4 V. Feeding them 12 V destroys them. Check the supply label before the first power-on.

Two ways to get from no data to a trained policy

All of it is reproducible on your own hardware. The cost is not money, it is the number of systems you end up owning: a build, a serial and camera stack, a recording pipeline, a GPU rental, a trainer config, a serving path back to the arm.

  1. Build an SO-100 or SO-101 from the published BOM, 110 to 170 EUR in parts, and calibrate both arms.
  2. Install lerobot, wire up leader and follower ports, confirm the cameras enumerate the same way across reboots.
  3. Record 30 to 50 episodes in total, varying scene and lighting between batches rather than repeating one setup.
  4. Push to the Hub or keep it local, and check the format version against your chosen trainer.
  5. Rent a GPU, install the trainer (Isaac-GR00T, openpi or lerobot), fight the CUDA versions, launch.
  6. Copy the checkpoint back, stand up an inference server next to the robot, evaluate on the real arm.
Where the time actually goes

Recording is the predictable part. The unpredictable parts are USB and serial enumeration, camera indices shuffling between reboots, and trainer dependency conflicts. The failure-mode index exists because those eat more hours than the training does.

What this means for a small team

The practical number is smaller than the papers make it sound. Because these policies start from vendor base checkpoints, not random weights, fine-tuning needs demonstrations in the tens, not the tens of thousands. The exception is ACT, which has no base model and trains from scratch on your task.

PolicyMinimum episodesDataset formatGPU tierTypical cost per run
GR00T N1.750LeRobot v2.0 or v2.1A100 80 GB or H100 80 GBabout 4 to 12 USD
GR00T N1.550LeRobot v2.0 or v2.1A100 80 GB or H100 80 GBabout 4 to 12 USD
Pi0.550LeRobot v3.0A100 80 GB or H100 80 GBabout 4 to 12 USD
SmolVLA30LeRobot v3.0RTX 4090 or any 24 GB cardabout 1 to 3 USD
ACT (from scratch)50LeRobot v3.0RTX 4090 or any 24 GB cardabout 1 to 3 USD

Thirty is the lowest bar there, which is why SmolVLA is usually the right first attempt: 30 episodes on a 24 GB card for one to three dollars tells you whether the data is any good before you commit to a GR00T N1.7 run on an A100. If the small model produces nothing, the problem is almost always the dataset. Full pricing is on its own page.

The AY-Robots pricing page showing what a training run on each GPU tier costs
Cost per run by GPU tier. The 24 GB tier exists so that finding out your dataset is broken costs a dollar.

Where this platform does not help

Nothing here manufactures training data for you, and no proprietary corpus sits behind the login. The dataset directory holds what people chose to publish, which for your specific task is probably nothing. If the task is 'sort my particular bolts into my particular tray', the published record of robotics contains zero episodes of it, and you are going to record them.

The latency limit, stated plainly

Action step latency here runs from 20 ms for ACT to 485 ms for Pi0.5. Public-internet round trips on top of that turn a working policy into a hesitant one. Cloud inference is viable for slow pick-and-place, not for fast reactive motion, and no amount of data fixes that. Anything time-critical needs the inference next to the servos.

Record the episodes that do not exist yet

No public corpus contains your task on your arm. The desktop client records LeRobot-format datasets - episodes, camera streams, joint states - straight from a teleoperation session.

Get the desktop client

A collection plan you can run this weekend

The scaling analysis translated into an afternoon: one arm, one task, one person, the case the papers never describe.

  1. Pick one task and write its instruction string first. If it does not fit in one sentence, it is two tasks.
  2. Define six to twelve conditions before recording anything: object position, object identity, lighting, background, table height, distractors. These are your environment-object pairs.
  3. Record 5 to 10 episodes per condition. Six conditions at 8 episodes is 48, which clears the 30-episode SmolVLA bar.
  4. Do not adjust the rig between conditions. Adjust it before condition one or after the last, never in the middle.
  5. Discard failed episodes at record time. A half-successful grasp teaches half-successful grasps.
  6. Train SmolVLA first, for one to three dollars, and evaluate on the real arm.
  7. Only once the small model shows signs of life, spend 4 to 12 dollars on GR00T N1.7 or Pi0.5 with the same data.

Works in condition one, fails in condition six? That is a data answer: record more of six. Fails everywhere? Read loss falls but the policy does nothing before recording anything else. Never recorded a dataset at all? Record your first dataset walks the loop end to end, and SO-100 data collection covers the arm-specific parts.

Comparison table of the five trainable policies with parameters, GPU tier, latency and minimum episodes
The five trainable policies side by side. The minimum-episode column is what matters when deciding how much to record.
Why can't robots just learn from YouTube?

Video contains outcomes, not commands. An imitation learning policy predicts the action that produced the next state, and that action is not recoverable from pixels. Research systems infer pseudo-actions instead: GR00T N1 uses latent action models and inverse dynamics to attach approximate actions to action-less human video from Ego4D, EPIC-KITCHENS and similar sources. That helps as a pretraining signal. It does not replace real trajectories with real joint commands.

How big is Open X-Embodiment really, and should I train on it?

It pools 60 datasets from 34 labs, covering 22 embodiments, 527 skills and over 1 million real robot trajectories. It is useful as a pretraining corpus, which is what RT-X used it for, though those experiments trained on data from 9 manipulators rather than all 22. For a single SO-100 and a single task it is the wrong move: fine-tuning a vendor base checkpoint on 30 to 50 of your own episodes beats it, because none of Open X-Embodiment was recorded on your arm.

How many episodes do I actually need?

The trainer minimums here are 30 episodes for SmolVLA and 50 for ACT, GR00T N1.5, GR00T N1.7 and Pi0.5. The scaling analysis suggests a more useful framing per condition: about 50 demonstrations per environment-object pair, across as many distinct pairs as you can set up. Fifty episodes across six varied conditions beats 300 of the same scene.

Does simulation solve the data problem?

Partly, and cheaply where it works. DexMimicGen generated 780,000 simulation trajectories for GR00T N1, about 6,500 hours equivalent, in 11 hours, a ratio teleoperation cannot match. The catch is fidelity: contact-rich manipulation, deformables and anything resting on friction estimates transfer poorly. Simulation broadens a policy that already works on real hardware. It does not skip the first real episodes.

Will the bottleneck ever go away?

The trend is that fewer real episodes are needed per task, not that more become available. Pi0.5 already draws 97.6% of its first-phase training examples from non-target sources. If that ratio keeps improving, the requirement drops from 50 episodes toward 20 or 5, which matters far more to a small team than a ten-million-trajectory corpus would. Nothing published suggests a scraped robot corpus is coming.

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started