The AY-Robots arena leaderboard listing VLA models with their benchmark results, including RT-1 and RT-1-X
RT-1Vision-Language-ActionImitation LearningRobot DatasetsAction Tokenization

RT-1: The Robot Transformer That Started It All

AY-Robots ResearchAugust 23, 202624 min read

RT-1 turned 130,000 teleoperation demonstrations into a 35M transformer that ran at 3 Hz. Its action tokenisation, real success rates, and what still holds in 2026.

RT-1 was the paper that made large-scale imitation learning for robots look like a serious engineering programme rather than a demo. It arrived on arXiv on 13 December 2022 as arXiv 2212.06817, carried 51 authors from Robotics at Google, Everyday Robots and Google Research, and was published at Robotics: Science and Systems 2023. Its claim was narrow and testable: a 35 million parameter transformer, trained by imitation learning on about 130,000 human teleoperation demonstrations, can perform over 700 language instructions on a real robot at 97 percent success and still run its control loop at 3 Hz.

RT-1 in eight lines

  • RT-1 is a 35 M parameter policy: a FiLM-conditioned EfficientNet-B3 image tokeniser (16 M) plus a decoder-only transformer (19 M).
  • Training data: about 130,000 teleoperated demonstrations, 744 instructions grouped into skills, 13 robots, 17 months of collection.
  • Every continuous action dimension is discretised into 256 uniform bins and predicted as a classification token, with a plain cross-entropy loss.
  • Reported success rates: 97 percent seen instructions, 76 percent unseen, 83 percent under distractors, 59 percent on new backgrounds.
  • Network inference measured at 15 ms, against a stated budget of under 100 ms for 3 Hz closed-loop control.
  • The most durable result is not the architecture. Cutting task diversity hurt generalisation more than cutting data volume did.
  • The action tokenisation survived into RT-2, RT-1-X and OpenVLA. It was abandoned by the flow-matching and diffusion policies that followed.
  • Weights are still public and still run under TensorFlow. The robot they were trained on, the Everyday Robots mobile manipulator, no longer exists.

What RT-1 actually is

Strip the marketing and RT-1 is a sequence model that maps six camera frames plus one instruction string to eleven integers. Those integers index bins. Each bin decodes back to a float that the robot's controller consumes as a delta command. There is no planner, no state estimator, no task graph. The whole policy is one forward pass, repeated three times a second until the model emits a terminate token or the episode hits a step limit.

PropertyValue as published
Full titleRT-1: Robotics Transformer for Real-World Control at Scale
PreprintarXiv 2212.06817, v1 13 Dec 2022, v2 11 Aug 2023
VenueRobotics: Science and Systems 2023, proceedings paper p025
Parameters~35 M total: 16 M image and instruction tokeniser, 19 M transformer
Vision input6 RGB frames at 300 x 300, ImageNet-pretrained EfficientNet-B3
Language inputone instruction string, embedded with Universal Sentence Encoder
Action dimensions7 arm (x, y, z, roll, pitch, yaw, gripper), 3 base (x, y, yaw), 1 mode
Discretisation256 uniform bins per continuous dimension
Losscategorical cross-entropy with causal masking
Control rate3 Hz closed loop
Measured network inference15 ms (paper Table 13)
RobotEveryday Robots mobile manipulator: 7-DoF arm, two-finger gripper, mobile base
Code licenceApache 2.0

The mode dimension is the part people forget. It is a three-way switch: control the arm, control the base, or terminate. RT-1 is a mobile manipulation policy, not an arm policy, and the base dimensions are part of the same token sequence as the wrist rotation. That matters if you try to port the idea to a fixed-base arm like the SO-100, where three of the eleven dimensions have nothing to predict.

Where the 97 percent comes from

The 97 percent over 700 instructions is a claim from the paper's introduction, not its abstract; the abstract states no success rate at all. Section 6.1 is more precise about what was measured: the seen-task evaluation covers over 200 tasks sampled from the training set, split as 36 picking, 35 knocking, 35 placing upright, 48 moving, 18 drawer open/close and 36 in-and-out-of-drawer. The 97 percent is measured on those 200-plus evaluation instructions, not on all 744 training instructions. The whole evaluation programme ran over 3000 real-world trials.

The 130,000 demonstrations, and how they were collected

Thirteen robots, seventeen months, one purpose-built room. The paper calls the collection sites robot classrooms: partial kitchen counters modelled on two real office kitchens, which were kept as held-out evaluation environments. Each robot drove itself to its station, told the human operator which instruction to demonstrate and how to randomise the scene, then recorded the episode. Demonstrations were captured with two VR remotes in direct line of sight, with the remote's 6-DoF displacement mapped onto the policy's own action space so that the transition dynamics stayed consistent between demonstration and rollout.

SkillInstruction countExample instruction
Move object near object337move pepsi can near rxbar blueberry
Pick object from receptacle and place on counter162pick green jalapeno chip bag from paper bowl and place on counter
Pick object130pick iced tea can
Place object into receptacle84place brown chip bag into white bowl
Place object upright8place water bottle upright
Knock object over8knock redbull can over
Open / close drawer6open the top drawer
Additional long-instruction skills9pull napkin out of dispenser
Total744-

That distribution is worth staring at. Two skills account for 499 of the 744 instructions. Placing upright and knocking over have eight each. RT-1 is not evenly multi-task; it is a picking-and-moving policy with a long tail. If you have ever built your own LeRobot dataset you will recognise the shape: the task you started with dominates, and the variations you added later are thin. The public dataset directory has the same skew.

The dataset itself is public. It ships as fractal20220817_data in TensorFlow Datasets: 87,212 train episodes, 111.38 GiB, images at 256 x 320, with the instruction carried both as a string and as a precomputed 512-dimensional sentence embedding. It later became one of the larger single components of Open X-Embodiment, whose own dataset figure names xArm and Google Robot as the two embodiments contributing the most trajectories.

Action tokenisation: 256 bins, and nothing clever

This is the single idea from RT-1 that spread furthest, and it is almost embarrassingly simple. Clip the action to the spec bounds, normalise to [0, 1], multiply by 255, cast to int. The released tokeniser is 157 lines. Here is the entire encode path, verbatim from the archived repository:

python
a = tf.clip_by_value(a, spec.minimum, spec.maximum)
# Normalize the action [batch, actions_size]
token = (a - spec.minimum) / (spec.maximum - spec.minimum)
# Bucket and discretize the action to vocab_size, [batch, actions_size]
token = tf.cast(token * (self._vocab_size - 1), tf.int32)
robotics_transformer/tokenizers/action_tokenizer.py, RT1ActionTokenizer.tokenize()
python
a = action_tokens[..., token_index:token_index + 1]
a = tf.cast(a, tf.float32)
a = a / (self._vocab_size - 1)
a = (a * (spec.maximum - spec.minimum)) + spec.minimum
The decode path, from the same file

Integer-typed dimensions such as the terminate flag are assumed to be tokens already and pass through with an argmax. Everything continuous gets the bucket treatment. RT1ActionTokenizer itself has no default bin count: vocab_size is a required constructor argument. The 256 comes one level up, from TransformerNetwork, which defaults to vocab_size=256 and passes that straight into the tokeniser. The tokeniser docstring's worked example builds eight tokens per action (terminate, three world-vector, three rotation-delta, one gripper) rather than the eleven the paper describes, because the spec in that example has no mobile-base dimensions.

The failure mode hiding in uniform min-max bins

Bin edges are uniform between the spec minimum and maximum. One outlier action in your training data widens the interval and every ordinary action collapses into a handful of central bins. OpenVLA hit this and changed the rule: it uses the same 256 bins but sets the interval to the 1st and 99th quantile of the training actions instead of the min and max, explicitly to stop outliers from destroying effective resolution. If you ever tokenise your own actions, do the quantile version. If your loss falls but the arm barely moves, this is one of the candidates on the loss-falls-policy-does-nothing page.

The architecture, stage by stage

StageWhat it doesOutputNotes
Universal Sentence EncoderEmbeds the instruction string512-d vectorPretrained, used as FiLM conditioning input
FiLM-EfficientNet-B3ImageNet-pretrained CNN, 26 layers of MBConv blocks and FiLM layers9 x 9 x 512 feature map, flattened to 81 tokens per frame16 M parameters, images are not patchified
TokenLearnerElement-wise attention that soft-selects informative token combinations8 tokens per frame, 48 across the 6-frame history2.4x inference speedup
Transformer decoder8 self-attention layers over the 48 image tokens11 action tokens, 256-way softmax each19 M parameters, not autoregressive over actions

Two details in that table did real work. First, the FiLM layers are identity-initialised: the dense layers producing the affine transform start at zero, so the inserted FiLM layer initially does nothing and the ImageNet weights survive intact. Insert FiLM naively into a pretrained network and you scramble the intermediate activations you paid for. Second, action tokens are emitted in a single pass, not autoregressively. The ablation shows why: autoregressive actions cost more than 2x inference time (36 ms against 15 ms) for no gain worth having.

The released library exposes the whole thing as a Keras network, though its constructor defaults are the library defaults rather than the paper configuration. Read them for the shape of the model, not for the numbers that produced the published results.

python
TransformerNetwork(
    vocab_size=256,
    token_embedding_size=512,
    num_layers=1,
    layer_size=4096,
    num_heads=8,
    feed_forward_size=512,
    dropout_rate=0.1,
    time_sequence_length=1,
    use_token_learner=True,
)
Constructor defaults of the TransformerNetwork class in robotics_transformer/transformer_network.py. The paper's model uses num_layers=8 and time_sequence_length=6.

The numbers RT-1 reported

Every baseline in the comparison was retrained on RT-1's own dataset, so this table compares architectures, not data. Gato was shrunk from 1.2 B parameters to 37 M because the full model needed 1.9 s per action on the robot, which is not a control loop. BC-Z is the ResNet feedforward policy from the BC-Z paper, also present in SayCan.

ModelSeen tasksUnseen tasksDistractorsBackgroundsNetwork inference
Gato architecture, 37 M65524335129 ms
BC-Z721947415.3 ms
BC-Z XL564323355.9 ms
RT-1, 35 M9776835915 ms

The ablation table is more informative than the headline. It tells you which design choices carried weight and which were decoration. One caution on the size row: the paper gives two different figures for the same ablation. The ablation description says the model was cut from 35 M to 21 M parameters, and the discussion says that cut removed 40 percent of the parameters, which only fits 35 to 21. The same sentence then prints 31 M to 25 M, which is a 19 percent cut. The two self-consistent numbers are used here.

VariantSeenUnseenDistractorsBackgroundsInference
RT-1, full9776835915 ms
Continuous Gaussian actions instead of tokens6843373516 ms
No ImageNet pretraining8443604115 ms
No history, single frame8262505915 ms
No transformer, EfficientNet only8662675926 ms
Autoregressive action decoding8571676536 ms
Smaller model, 35 M cut to 21 M8962775313.5 ms
Read the continuous-actions row twice

Replacing the 256-way softmax with a multivariate Gaussian and an MSE loss cost 29 points on seen tasks and 46 points on distractor robustness, at identical inference cost. The paper's explanation is that per-dimension discretisation represents multi-modal action distributions while a single Gaussian captures one mode. When several demonstrators solved the same scene differently, the Gaussian averages them into a motion nobody demonstrated.

The AY-Robots arena leaderboard, a sortable table of VLA models with benchmark results, each value linked to its source paper or model card
RT-1 and RT-1-X sit in the arena alongside 85 VLA models and 332 benchmark results. Every number links back to the paper or model card it came from, which is the only way a leaderboard like this stays honest.

The finding that outlived the architecture

Section 6.5 of the paper is the part still worth quoting in 2026. The team built reduced datasets two ways: cap the number of examples per task (same breadth, less depth) or delete the tasks with the least data (same depth, less breadth). Then they measured what broke.

Dataset% tasks% dataSeenGeneralisation (all)Unseen tasksDistractorsBackgrounds
Full1001009773768359
Capped at 200 per task100517150523959
Capped at 100 per task100375546573547
Capped at 50 per task100225929143141
Narrow: fewest-data tasks removed75978654674253

Removing 25 percent of the tasks while keeping 97 percent of the frames damaged generalisation about as much as throwing away half the dataset. The paper's own summary: data diversity has a larger impact than data size. That is the single most transferable sentence in the paper, and it is the reason the platform's minimum-episode numbers are floors rather than targets. Fifty episodes of one scene will fit; fifty episodes spread over lighting, object placement and start pose will generalise. There is more on this in the guide to collecting high-quality VLA training data and in the recording tutorial.

Running RT-1 today, in 2026

The original repository, google-research/robotics_transformer, is archived and read-only; its last commit landed on 31 January 2024. It contains the tokenisers, the FiLM-EfficientNet backbone, the transformer and three SavedModel checkpoints. It contains no training script and no dataset loader, and its requirements file sets floors from the TensorFlow 1.13 era (tensorflow>=1.13.0, tensorflow-serving-api>=1.13.0, tf-agents>=0.3.0) and installs tensor2robot from git. Do not start there.

The working path is SimplerEnv, the real-to-sim benchmark from the SIMPLER paper. It ships a maintained RT-1 policy wrapper, and Google's public bucket still hosts three RT-1 checkpoints at different training stages plus the RT-1-X one. This runs today on a single NVIDIA GPU.

  1. 1
    Create the environment

    SimplerEnv needs CUDA 11.8 or newer and below 13, an NVIDIA GPU (ray tracing is slow on non-RTX cards), and Python 3.10 or 3.11. TPUs are not supported because SAPIEN needs a GPU.

    bash
    conda create -n simpler_env python=3.10
    conda activate simpler_env
    git clone https://github.com/simpler-env/SimplerEnv --recurse-submodules
  2. 2
    Install the simulator, with numpy pinned

    The numpy pin is not optional. Newer numpy breaks inverse kinematics in pinocchio, and the failure looks like a physics bug rather than a dependency bug.

    bash
    pip install numpy==1.24.4
    cd SimplerEnv/ManiSkill2_real2sim && pip install -e .
    cd .. && pip install -e .
  3. 3
    Add the TensorFlow stack for RT-1 inference

    RT-1 is a TensorFlow SavedModel. This is the step that pulls in a couple of gigabytes.

    bash
    sudo apt install ffmpeg
    pip install tensorflow==2.15.0
    pip install -r requirements_full_install.txt
    pip install 'tensorflow[and-cuda]==2.15.1'
  4. 4
    Download the checkpoints

    Four public checkpoints sit in the same bucket: three of RT-1, named by training step, and one of RT-1-X. rt_1_tf_trained_for_000400120 is the converged RT-1 used for the headline results; each of the three RT-1 directories is 617 MiB across the SavedModel and the raw ckpt files. The 58,240-step and 1,120-step checkpoints exist so you can measure a policy that is partly and barely trained, which is genuinely useful for calibrating your own eval harness.

    bash
    mkdir -p checkpoints
    BUCKET=gs://gdm-robotics-open-x-embodiment/open_x_embodiment_and_rt_x_oss
    
    # converged RT-1, 400,120 steps
    gsutil -m cp -r $BUCKET/rt_1_tf_trained_for_000400120 checkpoints/
    
    # RT-1 at 15% of training, 58,240 steps
    gsutil -m cp -r $BUCKET/rt_1_tf_trained_for_000058240 checkpoints/
    
    # RT-1-X, 2,272,480 steps, 739 MiB zip
    gsutil -m cp $BUCKET/rt_1_x_tf_trained_for_002272480_step.zip .
    unzip rt_1_x_tf_trained_for_002272480_step.zip -d checkpoints/
  5. 5
    Run one episode

    The prepackaged visual-matching environments give you a Google Robot scene with real backgrounds composited in. Google Robot environments run at 3 Hz control and roughly 500 Hz simulation, matching RT-1's own control rate.

    python
    import simpler_env
    from simpler_env.utils.env.observation_utils import get_image_from_maniskill2_obs_dict
    
    env = simpler_env.make('google_robot_pick_coke_can')
    obs, reset_info = env.reset()
    instruction = env.get_language_instruction()
    print('Instruction', instruction)
The git-lfs trap that eats an afternoon

The checkpoints inside the archived robotics_transformer repo are stored with git-lfs. Its .gitattributes is a single line: *.data* filter=lfs diff=lfs merge=lfs -text. Clone without git-lfs installed and trained_checkpoints/rt1main/variables/variables.data-00000-of-00001 arrives as a 134-byte text pointer instead of the 141 MB of weights it claims to be. TensorFlow then fails deep inside the loader with an error about a corrupt file, and you go looking for a TensorFlow version problem that does not exist. Run git lfs install before cloning, or take the checkpoints from the public bucket instead.

Two paths to a language-conditioned policy on your own arm

You cannot fine-tune RT-1 on your arm. There is no released training script, the action space is hard-wired to a 7-DoF arm plus a mobile base, and the tokeniser's bin edges come from a spec that describes the Everyday Robots manipulator. What you can do is reproduce the recipe: record demonstrations, discretise your actions, train a transformer, serve it next to the servos.

  1. Build or buy the arm and calibrate it. Budget a weekend.
  2. Record demonstrations by teleoperation, annotate each episode with an instruction string, and vary the scene between episodes rather than repeating one setup.
  3. Convert to whatever dataset format your trainer expects, then check the conversion actually produced the frames you think it did.
  4. Pick a policy that has public training code. RT-1 does not qualify; ACT, SmolVLA, Pi0.5 and GR00T do.
  5. Rent a GPU, install the trainer and its CUDA-specific dependencies, and get one run to completion before you tune anything.
  6. Write the serving loop: load the checkpoint, stream camera frames in, decode actions, respect the control rate.
  7. Build an evaluation harness, because training loss will not tell you whether the arm works.
The honest cost

The modelling is the small part. Most of the elapsed time goes into dependency pinning, dataset format conversion, and discovering that your camera indices changed after a reboot. Every one of those is a solved problem that you will re-solve.

What survived, and what did not

RT-1's design choices, judged from 2026
Held up
  • Discrete action tokens with a cross-entropy loss. RT-2 adopted the scheme unchanged, RT-1-X reused the whole architecture, and OpenVLA still uses 256 bins per dimension.
  • Early language fusion. Conditioning the image encoder on the instruction via FiLM, rather than fusing a language embedding late as Gato does, is the paper's own explanation for the distractor gap, though it is hedged: the paper writes that late fusion may be the cause of Gato's poor distractor performance, 43 percent against RT-1's 83.
  • Diversity over volume as a data-collection principle. This is now the default advice for anyone recording a manipulation dataset.
  • Treating inference latency as a hard architectural constraint rather than an implementation detail. The 100 ms budget shaped every choice, including dropping autoregressive decoding.
  • Publishing the dataset. fractal20220817_data outlived the model, the robot and the team, and is still a standard training-mixture component.
Did not hold up
  • Uniform min-max bins. One outlier action degrades resolution for every ordinary action; OpenVLA replaced min-max with the 1st and 99th quantile for exactly this reason.
  • Per-dimension, per-timestep binning at high control rates. The FAST paper finds this scheme performs poorly when learning dexterous skills from high-frequency robot data, and replaces it with a discrete cosine transform, coefficient quantisation and a byte-pair encoding pass over the result.
  • One action per forward pass. Modern policies emit chunks; see action chunking for why that fixes both jitter and latency.
  • 3 Hz. Fine for kitchen pick-and-place, useless for anything reactive.
  • The 11-dimensional action space is welded to one robot. Nothing about RT-1 transfers to a different embodiment without retraining from scratch.
  • TensorFlow-only, no training code, archived repository. RT-1 is a paper you read and a checkpoint you benchmark, not a codebase you build on.
ModelAction representationMechanism
RT-1 (2022)Discrete tokens256 uniform bins per dimension, between the spec minimum and maximum
RT-2 (2023)Discrete tokens in the LLM vocabularySame 256-bin scheme; PaLI-X maps integer tokens, PaLM-E overwrites its 256 least-frequent tokens
RT-1-X (2023)Discrete tokensRT-1's architecture unchanged, trained on the Open X-Embodiment mixture
OpenVLA (2024)Discrete tokens256 bins, interval set by the 1st and 99th quantile of training actions
pi0-FAST (2025)Compressed tokensDiscrete cosine transform per dimension, quantise the coefficients, then byte-pair encode the flattened sequence
Pi0.5 on this platformContinuousFlow matching, no bins
GR00T N1.7 on this platformContinuousDiffusion action head, no bins
ACT on this platformContinuousDirect chunk regression, no bins

Read that table as a fork, and it is the fork that shapes every vision-language-action model built since. The token branch runs through RT-2 into OpenVLA and buys you an off-the-shelf language model as your policy backbone. The continuous branch runs through diffusion and flow matching and buys you smooth, high-rate control. The head-to-head on GR00T N1.7 against Pi0.5 is a comparison between two members of the second branch; neither of them tokenises actions the way RT-1 did.

The AY-Robots head-to-head comparison page for GR00T N1.7 against Pi0.5, showing parameters, GPU tier, inference latency and dataset format side by side
Both descendants of the RT-1 line, and neither discretises actions. The column that RT-1 would have won is inference latency: 152 ms and 485 ms per action step against RT-1's 15 ms of network time.

How RT-1 holds up when someone else evaluates it

The SIMPLER benchmark re-ran RT-1 under controlled simulation in 2024 and reported both the original real-world numbers and the simulated ones. On the visual-matching setup the correlation with real performance is strong: Pearson r of 0.976 on pick-coke-can and 0.915 on the drawer tasks.

TaskRT-1 converged, realRT-1 converged, SIMPLER visual matching
Pick coke can (average of three orientations)85.3 %85.7 %
Move near63.3 %44.2 %
Open / close drawer87.0 %73.0 %
Open top drawer and place apple18.5 %6.5 %

That last row is the honest one. On a two-stage task, the converged RT-1 succeeds under one attempt in five. The 97 percent headline was measured on single-skill instructions. Chain two of them and the success rate multiplies down, which is exactly why the SayCan long-horizon results in the paper top out at 67 percent execution success over roughly ten steps.

Camera pose is still the thing that breaks policies

SIMPLER measured RT-1's sensitivity to distribution shifts one factor at a time in its simulated pick-coke-can environment. For the RT-1 variant trained without image augmentation, the absolute change in success rate was 1.3 points for background, 4.0 for lighting, 2.7 for distractors and 11.3 for table texture. Camera pose cost 75.3 points. Augmentation did not rescue it: the augmented variant still moved 61.3 points under a camera-pose shift. The real-world tabletop column in the same table tracks the ordering, with camera pose again the largest single factor. Four years and several model generations later this has not changed: move the camera after recording and the policy stops working. That is the whole content of the policy-only-works-in-one-setup page, and it is why camera mounting deserves more care than hyperparameter tuning.

What this means if you have an SO-100 on your desk

RT-1's scale is not reachable in a hobby setup and does not need to be. 130,000 demonstrations across 13 robots over 17 months is an industrial data-collection programme. What transfers is the method: vary the scene between episodes, keep the instruction annotated, prefer more tasks over more repetitions of one task, and treat inference latency as a design constraint rather than a benchmark line.

The latency point deserves a plain statement, because this platform does not solve it. RT-1 ran its 3 Hz loop with the model on the robot. Cloud inference here has a control loop of 20 to 485 ms per action step depending on the model, and adding public-internet round trips on top turns a working policy into a hesitant one. Remote inference is viable for slow pick-and-place. It is not viable for fast reactive motion. If your task needs reactivity, the model has to sit next to the servos, and that constrains which of the five policies you can actually use.

The AY-Robots policies comparison table showing GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA and ACT with parameters, GPU tier, inference latency and minimum episodes
Five policies, with the per-step inference figure in its own column. RT-1's 35 M parameters and 15 ms of network time sit closest to the ACT row, and furthest from Pi0.5.

If you want to feel the difference between a 2022 discrete-token policy and a 2026 flow-matching one without buying hardware, the live arm streams a physical SO-100 with no signup, and the three ways to start page lays out what each route costs. The RT-1 arena entry and the RT-1-X entry carry the published benchmark numbers with links back to their sources.

The footnote nobody puts in the abstract

Everyday Robots, the Alphabet subsidiary that built the mobile manipulators RT-1 was trained on, was closed in February 2023 during Alphabet's layoffs, roughly two months after the RT-1 preprint appeared. Parts of the team and technology were folded into Google Research. The robot in every figure of the paper no longer exists as a product. What outlived it is the dataset, the tokenisation scheme, and one sentence about data diversity beating data quantity, which is a reasonable definition of a paper that mattered.

85 VLA models, 332 benchmark results, every number sourced

RT-1, RT-1-X, RT-2 and everything that came after them, in one sortable table. Each value links to the paper or model card it was taken from, so you can check the claim instead of trusting the leaderboard.

Open the arena
Can I fine-tune RT-1 on my own robot arm?

No. The archived repository ships inference code and three SavedModel checkpoints but no training script and no dataset loader, and the action space is fixed to a 7-DoF arm plus a three-dimensional mobile base. Even if you wrote the trainer, the tokeniser's bin edges come from the Everyday Robots action spec. For a language-conditioned policy on an SO-100 or SO-101, train SmolVLA, Pi0.5 or GR00T N1.7 instead; the guides are at /train.

What is the difference between RT-1 and RT-1-X?

Identical architecture. RT-1-X is the same 35 M network trained on the Open X-Embodiment robotics mixture instead of RT-1's own data. On the small-scale dataset domains its mean success rate is 50 percent higher than either the method originally published with those datasets or RT-1. On the large-scale evaluation it goes the other way: 73 percent against RT-1's 92 percent on the RT-1 paper's six-skill set. The Open X-Embodiment paper attributes that to underfitting, since the architecture does not have the capacity to absorb a nine-embodiment mixture, which is why RT-2-X exists.

Why 256 bins specifically?

The paper does not defend the number. It reports the choice (each continuous dimension is mapped to one of 256 uniformly spaced bins) and ablates discrete against continuous actions, which discrete wins by 29 points on seen tasks, but it runs no sweep over bin counts. What later work shows is that the bin edges matter more than the count: OpenVLA kept 256 bins and changed the interval from min-max to the 1st and 99th quantile, and FAST abandoned per-dimension binning altogether for high-frequency data. One practical consequence of 256 is that RT-2 could reserve exactly 256 tokens in a language model's vocabulary: for PaLI-X, where every integer up to 1000 already has its own token, the bins map onto those tokens directly, while for PaLM-E, which has no such representation, RT-2 overwrites the 256 least frequently used tokens.

Is 3 Hz really enough to control a robot?

For the tasks in the paper, yes. The team measured humans performing the same instructions in 2 to 4 seconds and set 3 Hz as the floor, with a fixed 280 ms wait after state capture to keep the rate consistent and avoid jitter. For anything reactive it is far too slow. Modern policies emit action chunks rather than single actions precisely to decouple the planning rate from the execution rate.

Does the RT-1 dataset still exist?

Yes. It is fractal20220817_data in TensorFlow Datasets: 87,212 train episodes, 111.38 GiB, with RGB frames at 256 x 320 and each episode carrying its instruction as both a string and a 512-dimensional embedding. It is also one of the components of Open X-Embodiment, where the Google Robot data is among the two largest contributors of trajectories. Three RT-1 checkpoints remain in Google's public gdm-robotics-open-x-embodiment bucket, at 1,120, 58,240 and 400,120 training steps and 617 MiB each, alongside the RT-1-X checkpoint at 2,272,480 steps as a 739 MiB zip.

How does RT-1 compare to ACT, which this platform trains?

They are close in size and speed and opposite in method. RT-1 is 35 M parameters, classifies 256 bins per dimension, emits one action per pass and runs at 3 Hz. ACT is roughly 80 M parameters, regresses continuous action chunks and runs at about 20 ms per action step on a 24 GB card. RT-1 was trained once on 130k demonstrations across 744 instructions; ACT is trained from scratch on your task from as few as 50 episodes and has no base model at all.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started