
Camera pose and object placement destroy a trained policy. Backgrounds and distractors barely dent it. The measured ranking from the published ablations, and a factor grid you can run on an SO-100.
A policy that works is a policy that works under the conditions it was measured in. Move the camera three centimetres and a checkpoint that scored 90 percent yesterday can score 20 today. Change the tablecloth and it may not notice. That asymmetry has been measured factor by factor.
Below is what the ablations say about which changes a trained policy survives, plus a test you can run on an SO-100 in an afternoon. Every number comes from a paper linked beside it.
The short version
- •Camera pose is the most destructive change. Viewpoint shift drops Pi0 from 94.2 to 15.8 percent in LIBERO-Plus; OpenVLA falls from 76.5 to 1.1.
- •Where the object starts is nearly as bad: robot initial state costs Pi0 87.6 points.
- •Backgrounds, distractors and lighting are usually survivable: 91.7 percent on the training setup, 88.9 with new backgrounds.
- •The surface under the task is not a background. New table texture took the same policy to 52.8 percent, a new camera pose to 45.8.
- •Language does less than the acronym suggests. Delete the instruction entirely and OpenVLA-OFT barely changes on the object suite.
- •Diversity beats volume: RT-1 lost as much generalisation from cutting 25 percent of tasks as from cutting 49 percent of the data.
What generalisation means when you trained the thing yourself
In the papers it means held-out tasks. For anyone who fine-tuned ACT or SmolVLA on fifty of their own episodes that is the wrong frame: the task is fixed, what moves is the room. Xie, Lee, Xiao and Finn made this precise by decomposing an environment into independent factors.
A behaviour cloning policy maps pixels and joint angles to actions. It cannot tell which pixels are the task and which are the room. Whatever correlated with the right action in your LeRobot dataset is a valid feature, including your monitor's shadow and the table edge in frame.
| Factor | On your desk | Controllable at inference? |
|---|---|---|
| Camera pose | Bumped or re-clamped | Yes, and you should |
| Robot initial state | Arm starts from a different pose | Yes, scripted reset |
| Object placement | Cube starts 6 cm left of usual | Partly, that is the task |
| Table texture | New mat under the task | Yes, keep one mat |
| Distractors | Non-target objects in frame | Rarely |
| Lighting | Blinds open, evening not noon | Rarely |
| Object dynamics | Rolls, deforms, or is heavier | No |
The measured ranking, from two independent studies
Xie et al. (arXiv, July 2023) ran one checkpoint on a real mobile manipulator across two lighting conditions, three sets of distractors, three table textures, three backgrounds and two camera poses, twelve trials each. That policy already used random crop and photometric augmentation, so these are numbers for a hardened model.
| Condition | Success rate | Drop |
|---|---|---|
| Training setup, no shift | 91.7% | - |
| New backgrounds | 88.9% | 2.8 pts |
| New lighting | 83.3% | 8.4 pts |
| New distractor objects | 80.6% | 11.1 pts |
| New table texture | 52.8% | 38.9 pts |
| New camera pose | 45.8% | 45.9 pts |
| New table texture + background | 55.6% | 36.1 pts |
| New table texture + distractors | 50.0% | 41.7 pts |
Two details matter more than the ordering. Background and table texture used the same patterned paper, so 88.9 against 52.8 is clean: not the pattern, but where it is. The pairs also do not compound: of 21 factor pairs in their simulated benchmark, 16 landed within plus or minus 6 percent of the harder single factor.
You can debug generalisation one factor at a time. Fix the camera and you have fixed it in every combination containing the camera, so you need one test column per factor, not a factorial grid. LIBERO-Plus later measured a small negative interaction between pairs, so call it mostly additive rather than independent.
LIBERO-Plus (Fei et al., revised December 2025) ran the same idea against modern VLA checkpoints in simulation across seven dimensions. It is the closest thing to a robustness datasheet for models people actually download.
| Model | Original | Camera | Robot init | Language | Light | Background | Layout |
|---|---|---|---|---|---|---|---|
| OpenVLA | 76.5 | 1.1 | 4.1 | 26.8 | 4.4 | 25.3 | 31.6 |
| OpenVLA-OFT | 97.1 | 59.7 | 37.2 | 81.5 | 85.8 | 92.4 | 77.1 |
| OpenVLA-OFT, third view only | 95.3 | 16.8 | 43.7 | 73.2 | 68.2 | 92.5 | 72.3 |
| Pi0 | 94.2 | 15.8 | 6.6 | 61.0 | 79.6 | 78.5 | 70.4 |
| Pi0-FAST | 85.5 | 66.4 | 24.8 | 63.3 | 73.0 | 67.7 | 70.3 |
| UniVLA | 95.2 | 4.3 | 50.3 | 71.8 | 59.1 | 80.0 | 34.3 |
Same ordering, only harsher. Note rows two and three: OpenVLA-OFT with a wrist camera holds 59.7 percent under viewpoint shift, the same model with only the third-person view holds 16.8. The authors credit close-range cues that do not move when the scene camera does.

The list that kills a policy
1. Moving the camera
First by a wide margin. Jiang et al. (2025) pinned the mechanism: policies without explicit camera extrinsics infer the viewpoint from static background cues, and that shortcut collapses as soon as the mount shifts. The policy was never viewpoint-invariant, it was reading the wall.
Xie et al. measured how the damage scales. Sampling camera and table position over radii of 0.025, 0.050 and 0.075 metres, the gap roughly doubles at each step: the gap at 2.5 cm is about half the gap at 5 cm and a quarter of the gap at 7.5 cm.
You unplug the rig to tidy the desk and re-clamp the camera next morning "in the same place". It is not the same place. Every rollout after that looks like a broken policy while the loss curve looks perfect, and you lose a day suspecting normalisation. Tape the mount before you unclamp, and keep a screenshot of frame 0 from a training episode. If the pose is gone, start at policy only works in one setup.
2. Where the object starts
LIBERO-Plus reports robot initial state as the most expensive factor for several models: Pi0 loses 87.6 points, OpenVLA-OFT 59.9. They split object layout into 'add confounders' and 'move the target'. Clutter barely hurt; moving the target hurt badly. The models learned where the target sits, not what it is.
If every one of your episodes starts with the cube in the same square of the mat, you trained a policy that reaches for that square. Randomising the start pose is cheap while recording and impossible afterwards. See the recording walkthrough and the SO-100 data collection page.
3. The surface the task happens on
Table texture is the factor people misfile as background: 38.9 points where the background cost 2.8. In simulation, table position was about as hard as table texture, and object texture about as hard as camera position. Anything inside the manipulation region is a foreground feature.
4. Motions the arm never performed
A ceiling, not a difficulty. The RT-2 authors state it in their limitations: pretraining boosts generalisation over semantic and visual concepts, but the robot acquires no new motions. Their failure figure shows the model reaching correctly for a pen and a banana, then failing on contact dynamics it had only seen with blocks.
So a vision-language-action model fine-tuned on pick-and-place data will not learn to unscrew a lid because the backbone read the internet. If the motion is not in your episodes it is not in the policy. That is the boundary of fine-tuning on 50 to 100 demonstrations.
The list a policy usually survives
- New backgrounds: 88.9 percent against a 91.7 baseline, and among the smallest drops in LIBERO-Plus.
- New distractors: 80.6 percent. Confounders barely moved Pi0, Pi0-FAST, RIPT-VLA, UniVLA or WorldVLA.
- New lighting, with a wrist camera. OpenVLA-OFT lost 11.3 points, the third-person-only variant 27.1.
- New instances of a familiar object. Pi0.5 scored seen categories with new instances separately from unseen categories, and the former improved faster with scale.
- Photometric sensor noise: 20.4 points off OpenVLA-OFT, 14.8 off Pi0.
LIBERO-Plus replaced every camera feed with black frames and success collapsed to roughly zero. Masking only the third-person view, so the wrist camera carries the task alone, left the three wrist-equipped models at 43.6 (OpenVLA-OFT), 43.0 (Pi0) and 67.3 percent (Pi0-FAST). If one wrist view still carries half to four fifths of the score, a lighting change that mostly hits the room camera is not your problem.
Language does much less than the acronym implies
LIBERO-Plus found language perturbations produced one of the smallest average drops, which sounds like robustness. It is not. They replaced the instruction with an empty string and OpenVLA-OFT's object-suite score barely moved. Then they swapped the target inside the instruction, from 'pick up the alphabet soup' to 'pick up the tomato sauce' with both present: success fell close to zero and the model kept reaching for the original target.
The apparent robustness came from ignoring language: a nominal VLA can degenerate into a vision-action model. Worth knowing before you spend a week on task strings for one SmolVLA fine-tune.
| BC-Z conditioning | Training tasks | Held-out tasks |
|---|---|---|
| One-hot task id | 42% | not applicable |
| Language embedding | 40% | 32% |
| Human video embedding | 24% | 4% |
BC-Z is the instructive contrast. Jang et al. trained on 25,877 demonstrations across 100 tasks, then gave the policy unseen sentences: non-zero success on 24 of 29 held-out tasks, averaging 44 percent on those 24. Single-task policies trained on 300 or more demonstrations of the four easiest held-out tasks scored 0 percent. Language generalisation is real, but a hundred tasks bought it. Our BC-Z walkthrough covers that dataset.
What actually buys generalisation
Diversity, not volume
RT-1 ran the cleanest version: cap episodes per task (same diversity, less data), then delete the smallest tasks (almost all the data, fewer tasks).
| RT-1 variant | % tasks | % data | Seen | Unseen tasks | Distractors | Backgrounds |
|---|---|---|---|---|---|---|
| Full | 100 | 100 | 97 | 76 | 83 | 59 |
| Same tasks, half the data | 100 | 51 | 71 | 52 | 39 | 59 |
| Same tasks, a fifth of the data | 100 | 22 | 59 | 14 | 31 | 41 |
| Fewer tasks, same data | 75 | 97 | 86 | 67 | 42 | 53 |
Removing 25 percent of the tasks while keeping 97 percent of the data cost about as much generalisation as deleting 49 percent of the data. Lin et al. (ICLR 2025) agreed from the other direction, over 40,000 demonstrations and 15,000 real rollouts: generalisation scales roughly as a power law with the count of objects, environments or environment-object pairs. Hold those fixed and add demonstrations and there is no power law.
Lin et al. recommend as many distinct environments as possible with one unique object each. At around 32 environment-object pairs with roughly 50 demonstrations apiece, their policies reached about 90 percent success in novel environments with unseen objects, and above 16 environments extra objects stopped helping. Pi0.5 makes the point at another scale: a model trained on 104 locations, with no test-home data, matched a control trained directly on those homes.
For one SO-100 on one desk that is uncomfortable, because you have one environment. The translation: move the mat, change the lighting, shift the table and rotate the base between recording blocks. The minimum of 50 episodes for GR00T N1.7 or 30 for SmolVLA is easier to spend across six setups than one.
Augmentation, which is off by default
In lerobot (main branch checked 24 August 2026, version 0.6.2) image augmentation is opt-in. ImageTransformsConfig ships with enable False, max_num_transforms 3, random_order False, and six transforms: brightness and contrast over (0.8, 1.2), saturation (0.5, 1.5), hue (-0.05, 0.05), sharpness (0.5, 1.5), and a RandomAffine of plus or minus 5 degrees with 0.05 translation.
lerobot-train \
--dataset.repo_id=youruser/so100_pick_place \
--policy.type=act \
--dataset.image_transforms.enable=true \
--dataset.image_transforms.max_num_transforms=3 \
--dataset.image_transforms.random_order=true \
--output_dir=outputs/act_augTwo caveats. The default set is photometric plus a weak affine, with no random crop, and random crop is exactly what Xie et al. found most valuable, helping most on new camera positions and table textures. It also helped non-spatial factors, which they called surprising.
- 1Look at what the transforms do to your frames
lerobot ships a visualiser that dumps the original frame plus per-transform minimum, mean and maximum examples. Run it before training.
bashlerobot-imgtransform-viz \ --repo_id=youruser/so100_pick_place \ --episodes='[0]' \ --image_transforms.enable=True # writes to outputs/image_transforms/<dataset>/ - 2Hold out episodes so you get a number, not a vibe
DatasetConfig carries eval_split, and the trainer refuses eval_steps unless eval_split is above zero. A held-out loss is not a success rate, but it is the cheapest signal there is.
bashlerobot-train \ --dataset.repo_id=youruser/so100_pick_place \ --policy.type=act \ --dataset.eval_split=0.1 \ --eval_steps=1000 \ --max_eval_samples=200 - 3Drop episodes you know are broken
exclude_episodes takes indices and applies on top of any episodes filter. An off-distribution episode is a generalisation problem in disguise.
bashlerobot-train \ --dataset.repo_id=youruser/so100_pick_place \ --dataset.exclude_episodes='[7,19,42]' \ --policy.type=act
For scene robustness on a small budget, GreenAug (Teoh et al., 2024) is the strongest published result: record against a green screen, chroma-key the background out, replace it with random textures. GreenAug-Rand beat no augmentation by roughly 65 percent across eight tasks, and generative augmentation by about 21 percent. Random backgrounds beat semantically plausible ones like kitchens and living rooms, so the policy is learning to stop caring what is behind the object.

Pretraining, which buys semantics and nothing else
RT-2's headline table is the clearest evidence that a large pretrained backbone changes generalisation without changing in-distribution skill. On seen tasks RT-1 scored 92, RT-2-PaLI-X-55B 91, RT-2-PaLM-E-12B 93.
| Model | Seen | Unseen objects (easy/hard) | Unseen backgrounds (easy/hard) | Unseen environments (easy/hard) | Unseen avg |
|---|---|---|---|---|---|
| RT-1 | 92 | 31 / 43 | 71 / 9 | 26 / 14 | 32 |
| RT-2-PaLI-X-55B | 91 | 70 / 62 | 96 / 48 | 63 / 35 | 62 |
| RT-2-PaLM-E-12B | 93 | 84 / 76 | 75 / 71 | 36 / 33 | 62 |
Roughly 2x off-distribution, none on seen tasks. That is the argument for a vendor base checkpoint: GR00T N1.7, GR00T N1.5 or Pi0.5 over ACT. ACT has no base model at all. Our RT-2 explainer covers the co-fine-tuning recipe behind those numbers.

A generalisation test you can run in an afternoon
Because the factors are mostly additive you do not need a factorial grid. One column per factor, everything else at baseline.
| Condition | What you change | Trials | What a drop means |
|---|---|---|---|
| Baseline | Nothing, the recording setup | 20 | If low, stop. Not a generalisation problem |
| Camera nudge | Move the camera 2 to 3 cm | 20 | Expect the biggest drop. Tape the mount |
| Camera re-aim | Rotate 5 to 10 degrees | 20 | Collapse here means a viewpoint shortcut |
| Start pose | Randomise the object start | 20 | Positional bias in the training data |
| Table surface | Swap the mat | 20 | Texture dependence. Add crops or GreenAug |
| Lighting | Blinds open plus a side lamp | 20 | Mild, with a wrist camera |
| Distractors | Three unrelated objects | 20 | Mild. If not, it is scene-matching |
| Background | Change the wall behind the arm | 20 | Almost free |
Success rate is binomial. An observed 5 out of 10 has a 95 percent Wilson interval of roughly 24 to 76 percent. Twenty trials narrows it to 30 to 70, fifty to 37 to 63. A 10 point gap at 10 trials each is a coin, not a result. Budget 20 per cell, treat gaps under about 20 points as unresolved, and never compare today's number with last week's unless the baseline was re-run alongside it.
Run each cell with lerobot's rollout CLI. Its episodic strategy mirrors teleoperated recording: the policy drives each episode, an optional leader arm resets the scene between them.
# One cell of the grid: 20 policy-driven episodes with manual resets
lerobot-rollout \
--strategy.type=episodic \
--policy.path=outputs/act_aug/checkpoints/last/pretrained_model \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
--teleop.type=so100_leader \
--teleop.port=/dev/ttyACM1 \
--dataset.repo_id=youruser/rollout_gen_camera_nudge \
--dataset.num_episodes=20 \
--dataset.single_task="Grab the cube"For slower policies add RTC inference. Pi0.5 runs at 485 ms per action step and SmolVLA at 245 ms on this platform, and one synchronous call per tick makes them look hesitant for reasons unrelated to generalisation. Use --inference.type=rtc so latency is not misread as a camera shift. See inference latency and action chunking.
Two ways to run this
You need lerobot installed, an SO-100 with a scene camera and ideally a wrist camera, and a GPU for training.
- 1Record across several setups, not one
Between blocks, move the mat, change the light, shift the arm's base. Each counts as an environment.
bashlerobot-record \ --robot.type=so100_follower --robot.port=/dev/ttyACM0 \ --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \ --dataset.repo_id=youruser/so100_pick_place \ --dataset.num_episodes=50 \ --dataset.single_task="Grab the cube" - 2Train with augmentation on and a held-out split
Transforms are off by default and eval_split is 0.0. Both have to be set explicitly.
bashlerobot-train \ --dataset.repo_id=youruser/so100_pick_place \ --policy.type=act \ --dataset.image_transforms.enable=true \ --dataset.eval_split=0.1 --eval_steps=1000 \ --output_dir=outputs/act_aug - 3Run the factor grid
Eight cells, 20 episodes each, baseline first and last. Score by hand; there is no automatic success detector for a real arm.
bashfor cell in baseline cam_nudge cam_rotate start_pose mat light distractors background; do echo "set up $cell, then press enter"; read lerobot-rollout --strategy.type=episodic \ --policy.path=outputs/act_aug/checkpoints/last/pretrained_model \ --robot.type=so100_follower --robot.port=/dev/ttyACM0 \ --dataset.repo_id=youruser/rollout_gen_$cell \ --dataset.num_episodes=20 --dataset.single_task="Grab the cube" done
- You own the GPU, the drivers, the dataset version and the failures.
- You can add augmentations lerobot does not ship, including a real random crop.
- Nothing stops you converting or mixing datasets locally.
The platform removes the GPU and deployment plumbing, not the part where you get up and move the camera. Pick a model and dataset in the training form, the backend rents a GPU on a spot market by required VRAM, runs the trainer and writes checkpoints to object storage.
| Tier | Models | Run time | Cost per run |
|---|---|---|---|
| A100 80 GB or H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 to 6 hours | about 4 to 12 USD |
| RTX 4090 or any 24 GB card | SmolVLA, ACT | 2 to 5 hours | about 1 to 3 USD |
Cost matters because the honest fix for a fragile policy is usually to record a more diverse dataset and train again. For inference, /api/inference/pod auto-provisions a cloud GPU pod that serves the policy while the local robot client talks to it. Pods carry an idle watchdog and destroy themselves after an idle period.
- /directory lists public datasets, so you can borrow scene diversity instead of recording it.
- /arena compares 85 VLA models with 332 benchmark results, each linked to its source.
- /cli and /mcp expose the same operations to a terminal and to AI agents, which is how you script the grid.
- /live has a physical arm streaming with no signup.
Harden the policy, or lock the setup down?
Two legitimate strategies, and most people should pick the second first. Hardening means diverse data, augmentation, a wrist camera and a bigger backbone. Locking down means tape, one mat and a scripted reset pose.
- Removes the top two factors. Camera pose and initial state are the most destructive changes in every study here, and both are yours.
- Costs nothing: tape, a marked mat, a scripted home pose.
- Makes your numbers mean something: the baseline stops drifting.
- Matches Xie et al.'s own advice: keep camera and table position constant.
- The policy stays brittle. Anything that touches the rig resets you to zero.
- It does not transfer. A different desk means re-recording.
- It hides the problem until the worst moment.
- It cannot fix what you do not control, such as afternoon sun through a window.
Do both: lock down what you control, and spend the diversity budget on what you cannot. The policy only works in one setup and loss falls, policy does nothing pages cover the diagnosis order.
Where this platform does not help
- Nobody moves the camera for you. The factor grid is manual work with a real arm.
- There is no automatic success detector for a real rollout. You score by hand.
- The arena numbers are in-distribution scores. They say which model is stronger on a benchmark, not which survives a bumped tripod.
- Remote inference makes latency worse. The control loop is 20 to 485 ms per action step, and public-internet round trips on top turn a working policy into a hesitant one. Viable for slow pick-and-place, not reactive motion.
- A LeRobot v3.0 dataset crashes the GR00T loader and must be converted down to v2.1, so a rebuild is also a format decision. See dataset rejected v3.
- GR00T training is not seedable: its fine-tuning entry point exposes no seed, so its runs are not bit-for-bit reproducible. ACT, SmolVLA and Pi0.5 do take a seed, and lerobot's default is 1000.
None of that is a reason to skip the measurement, only to budget an afternoon before concluding a model is bad. Most reports of a policy that does not work describe one that works in exactly one configuration nobody wrote down. If you have recorded nothing, train your first policy and the data collection guide are the place to start; the training docs cover the form.
Five policies, compared with real numbers
Parameters, GPU tier, per-step latency and minimum episodes for GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA and ACT.
Compare the policiesWhich single change is most likely to break my trained policy?▾
Moving the camera. In LIBERO-Plus, viewpoint perturbation dropped Pi0 from 94.2 to 15.8 percent and OpenVLA from 76.5 to 1.1. On a real robot, Xie et al. measured 91.7 percent on the training setup and 45.8 under a new camera pose.
Will a wrist camera actually help?▾
Yes, for viewpoint and lighting. LIBERO-Plus compared OpenVLA-OFT with and without the wrist view: 59.7 against 16.8 percent under camera perturbation, 85.8 against 68.2 under lighting. Masking only the third-person view, leaving the wrist camera to carry the task alone, still left it at 43.6 percent.
More episodes or more setups?▾
More setups. RT-1 lost about as much generalisation from cutting 25 percent of tasks as from cutting 49 percent of the data. Lin et al. found generalisation scales as a power law with environments and objects but plateaus with demonstrations once those are fixed, hitting roughly 90 percent in novel environments at around 32 environment-object pairs.
Can a big pretrained VLA learn a motion my demonstrations never contained?▾
No. The RT-2 authors state it in their limitations: web-scale pretraining improves generalisation over semantic and visual concepts, but the robot acquires no new motions.
How many rollouts before a difference is real?▾
An observed 5 out of 10 has a 95 percent Wilson interval of roughly 24 to 76 percent. Twenty trials narrows that to about 30 to 70, fifty to about 37 to 63. Budget 20 per condition and treat gaps under about 20 points as unresolved.
Sources
- Xie, Lee, Xiao, Finn: Decomposing the Generalization Gap in Imitation Learning for Visual Robotic Manipulation (arXiv, July 2023)
- Factor World project page: videos, code and the 19-task, 11-factor benchmark
- Fei et al.: LIBERO-Plus, In-depth Robustness Analysis of Vision-Language-Action Models (revised December 2025)
- Jang et al.: BC-Z, Zero-Shot Task Generalization with Robotic Imitation Learning (CoRL 2021)
- Brohan et al.: RT-2, Vision-Language-Action Models Transfer Web Knowledge to Robotic Control
- Brohan et al.: RT-1, Robotics Transformer for Real-World Control at Scale
- Lin et al.: Data Scaling Laws in Imitation Learning for Robotic Manipulation (ICLR 2025)
- Data Scaling Laws project page: tasks, protocol and released data
- Physical Intelligence: Pi0.5, a Vision-Language-Action Model with Open-World Generalization
- Teoh, Patidar, Ma, James: Green Screen Augmentation Enables Scene Generalisation in Robotic Manipulation
- Jiang et al.: Do You Know Where Your Camera Is? View-Invariant Policy Learning with Camera Conditioning
- Know Your Camera project page: tasks, demonstrations and code
- lerobot: ImageTransformsConfig, enable=False by default and the six shipped transforms
- lerobot: DatasetConfig, including eval_split and exclude_episodes
- lerobot: lerobot-rollout strategies and inference backends
Sources
- Xie, Lee, Xiao, Finn: Decomposing the Generalization Gap in Imitation Learning for Visual Robotic Manipulation (arXiv, July 2023)
- Factor World project page: videos, code and the 19-task, 11-factor benchmark
- Fei et al.: LIBERO-Plus, In-depth Robustness Analysis of Vision-Language-Action Models (revised December 2025)
- Jang et al.: BC-Z, Zero-Shot Task Generalization with Robotic Imitation Learning (CoRL 2021)
- Brohan et al.: RT-2, Vision-Language-Action Models Transfer Web Knowledge to Robotic Control
- Brohan et al.: RT-1, Robotics Transformer for Real-World Control at Scale
- Lin et al.: Data Scaling Laws in Imitation Learning for Robotic Manipulation (ICLR 2025)
- Data Scaling Laws project page: tasks, protocol and released data
- Physical Intelligence: Pi0.5, a Vision-Language-Action Model with Open-World Generalization
- Teoh, Patidar, Ma, James: Green Screen Augmentation Enables Scene Generalisation in Robotic Manipulation
- Jiang et al.: Do You Know Where Your Camera Is? View-Invariant Policy Learning with Camera Conditioning
- Know Your Camera project page: tasks, demonstrations and code
- lerobot: ImageTransformsConfig, enable=False by default and the six shipped transforms
- lerobot: DatasetConfig, including eval_split and exclude_episodes
- lerobot: lerobot-rollout strategies and inference backends
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started