The AY-Robots operator page, Become a Robot Operator from anywhere in the world, with a photo of the SO-100 arm operators drive
teleoperationrobot data collectioncareersimitation learningLeRobotSO-100

How to Become a Robot Teleoperator: The Job, Skills and Data

AY-Robots ResearchAugust 23, 202618 min read

What a robot teleoperator actually does hour to hour, the habits that make demonstrations trainable, the hardware and skills you need, and the pay figures that can be sourced.

Robot teleoperator was not a job title five years ago. It is one now, because modern robot policies train on human demonstrations and somebody has to record them. This page covers the work hour to hour, what separates a demonstration that helps a model from one that quietly poisons it, and which pay figures survive being checked.

Two paths run through it. Get an arm, install lerobot, record episodes, train on them. Or work through a platform that already owns the robots and the customers. Most people good at the second spent a few weekends on the first.

The short version

  • A teleoperator drives a real robot through a task repeatedly so the recording becomes training data. Precision repetition under a camera, not robot programming.
  • Demonstration quality is measurable. robomimic shipped each task twice, once from one proficient operator and once from six of mixed skill, because the resulting policies differ.
  • Scale is why the job exists. DROID took 50 data collectors 12 months to record 76,000 trajectories; the pi0 pre-training mixture was 10,000 hours.
  • Entry hardware is cheap: SO-100 parts cost about 110 to 150 EUR, and a leader-follower rig needs a leader and a follower.
  • Published pay data is thin. Fortune reported Tesla's Data Collection Operator role at 25.25 to 48 USD per hour in August 2024. Treat salary-aggregator averages as marketing.
  • This platform's episode floors are 30 for SmolVLA and 50 for GR00T N1.7, GR00T N1.5, Pi0.5 and ACT. Floors, not targets.

What a robot teleoperator actually does

Teleoperation means driving a robot you are not touching. In robot learning it has one purpose: producing demonstrations. You perform the task through the robot's body, the software records every joint angle and camera frame at a fixed rate, and that recording becomes one episode. Enough episodes make a policy, a network mapping camera frames and joint states to the next actions. That is imitation learning, and you supply the imitation.

The common rig on cheap arms is leader-follower: you move an unpowered copy of the arm by hand and the powered one mirrors your joint angles. That is much of why the SO-100 became the default teaching arm. Other rigs change the job: VR controllers, a 3D mouse, a phone held in the air as in RoboTurk, or a mocap suit for a humanoid.

Kind of workTypical rigWhat the shift produces
Demonstration recordingLeader arm, VR controllers, 3D mouse, phoneEpisodes in a dataset for imitation learning
Embodied motion captureMocap suit plus VR headsetHuman motion retargeted onto a robot
Remote fallbackVR headset and a live video linkA finished customer task and a correction episode
Review and annotationA browser, no robotKept or rejected episodes, task labels

Listings mix these four freely, so read the physical requirements before the title. Fortune reported in August 2024 that Tesla's Data Collection Operator role paid 25.25 to 48 USD per hour and required walking more than seven hours a day in a motion-capture suit and a VR headset. Fortune gives the height window as 5 ft 7 to 5 ft 11; the posting itself says 5 ft 7 to 6 ft. Read the posting, not the coverage: it also names Palo Alto, three shift options, up to 30 lbs of equipment and daily written reports.

The fallback category is growing on its own. 1X is taking pre-orders for NEO, a home robot with teleoperation built in, at 20,000 USD or 499 USD a month. Owners schedule when an operator may take over and name the task. Engadget reports that the company can blur people out of the operator's view, that owners can designate no-go zones, and that operators cannot take control without the owner's approval.

An hour on the clock

The arithmetic surprises people. DROID holds 76,000 trajectories totalling 350 hours, roughly 17 seconds of robot motion per trajectory. lerobot's recorder defaults to 60 seconds per episode and 60 seconds of reset. The demonstration is the short part; half your clock, by default, is putting the cube back.

So an hour is ten minutes of setup, then a loop until the counter hits its target. The commands below are the lerobot CLI at 0.6.1, released 3 August 2026, which needs Python 3.12 or newer. Version matters here: the module behind lerobot-record moved to lerobot.scripts.lerobot_record in 0.4.0, so a python -m invocation from an older tutorial no longer resolves, and running a trained policy moved into a separate lerobot-rollout in 0.6.0.

  1. 1
    Install the right extras, then find the serial ports

    Since 0.6.0 a bare install pulls no dataset, hardware or visualisation dependencies, so lerobot-record does not run. The extra that maps to the recording scripts is core_scripts; STS3215 servos need the Feetech SDK on top. Then find the ports: the tool asks you to unplug the USB cable and prints the one that disappeared.

    bash
    # NOT enough on 0.6.x: pip install lerobot
    pip install 'lerobot[core_scripts,feetech]'
    
    lerobot-find-port
    lerobot-find-cameras
  2. 2
    Calibrate both arms

    Put every joint roughly mid-range first. The calibration file is keyed by the id you pass here, so reuse that id in every later command.

    bash
    lerobot-calibrate \
        --robot.type=so101_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower_arm
    
    lerobot-calibrate \
        --teleop.type=so101_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader_arm
  3. 3
    Dry run the teleop link before recording

    Drive the task five times without recording. Check that the follower tracks without lag, that both views cover the workspace, and that you can finish looking only at the feeds.

    bash
    lerobot-teleoperate \
        --robot.type=so101_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower_arm \
        --robot.cameras="{ top: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so101_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader_arm \
        --display_data=true
  4. 4
    Record the block of episodes

    One task string per dataset, phrased as an instruction starting with a verb. Right arrow saves the episode and moves on, left arrow re-records the last one, Escape stops and encodes. Over a laggy SSH or VNC link use the single-byte equivalents n, r and q: arrow keys arrive as multi-byte escape sequences the link can split. The dataset is pushed to your Hugging Face account by default, so --dataset.push_to_hub=false is what keeps a client's kitchen off the public Hub.

    bash
    lerobot-record \
        --robot.type=so101_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower_arm \
        --robot.cameras="{ top: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so101_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader_arm \
        --dataset.repo_id=${HF_USER}/so101_pickplace \
        --dataset.num_episodes=30 \
        --dataset.single_task="Put the red brick in the bowl" \
        --dataset.streaming_encoding=true \
        --display_data=true
  5. 5
    Reset the scene deliberately, and resume rather than restart

    New object position every episode, but fixed camera, lighting and strategy. The lerobot guide suggests at least 50 episodes, about 10 per location. Resuming the next day has three traps. --dataset.num_episodes now means additional episodes, not the new total; --dataset.root must be set or the resume fails; and the directory is not the name you typed, because on creation lerobot-record stamps _YYYYMMDD_HHMMSS onto the repo id unless you passed --dataset.no_stamp=true.

    bash
    # the first run stamped the repo id, so look up what it actually created
    ls ~/.cache/huggingface/lerobot/${HF_USER}/
    
    # resume it with the same robot and teleop flags as above;
    # num_episodes is now ADDITIONAL episodes, not the new total
    lerobot-record \
        --dataset.repo_id=${HF_USER}/so101_pickplace_20260823_141500 \
        --dataset.root=~/.cache/huggingface/lerobot/${HF_USER}/so101_pickplace_20260823_141500 \
        --dataset.num_episodes=20 \
        --resume=true
The habit that costs you a day

When an episode goes wrong halfway, the tempting move is to rescue it: back the gripper out, re-approach, finish. Do not. You have just recorded a demonstration in which the correct response to a good approach is to retreat, and the model cannot tell you were embarrassed. Delete it and redo it. The exception is deliberate recovery data, where every episode contains a retry; mixing the two ends on policy freezes mid-motion.

What separates a useful operator from an expensive one

Nobody watches you work, and the feedback loop is long: you record for two hours, someone trains for four, and the result tells you something about your recordings you can no longer reconstruct.

  1. One strategy per task, across every episode. Approaching from the left in episode 3 and from above in episode 4 does not give the model two options, it gives it a coin flip at the same observation.
  2. Constant pacing. Policies using action chunking predict a block of future actions from one observation, so a demonstration that starts slow and ends panicked teaches an inconsistent mapping.
  3. Vary the world, not the method. Object position and clutter change between episodes; camera placement, lighting, grip strategy and speed do not.
  4. Drive from the camera feed. The lerobot guide states the rule of thumb: you should be able to do the task yourself looking only at the camera images.
  5. Stop when you get tired. Fatigue shows up in the last third of a session as systematic bias, not useful noise.

There is published evidence that operator skill changes the outcome. The robomimic study released each task in two variants so the effect could be measured.

Dataset variantOperatorsTrajectories per taskHow it was labelled
PH, proficient human1200One skilled demonstrator, collected through RoboTurk
MH, multi-human6300, 50 from each2 labelled worse, 2 okay, 2 better: deliberately mixed quality

Note what that implies about hiring. A team does not need six identical experts; it needs to know which operator produced which episode, so a bad batch can be traced and dropped.

Your reader is a model that cannot ask questions

A human trainee would ask why you skipped a step. A policy cannot. Everything it learns about your intent comes from the pixels and joint angles you recorded, so assume nothing unrecorded was communicated. The data quality guide goes deeper.

What happens to the hour you just recorded

Your session lands on disk as a LeRobot dataset: per-frame observations and actions, camera streams encoded as video, plus metadata for the features and frame rate. That shared format is why an episode recorded on an SO-100 in your kitchen trains in somebody else's pipeline without conversion.

python
from lerobot.datasets.lerobot_dataset import LeRobotDataset

ds = LeRobotDataset("your-username/so101_pickplace")

print("episodes:", ds.num_episodes)
print("frames:  ", ds.num_frames)
print("fps:     ", ds.fps)
print("features:", list(ds.features))

# frames / (episodes * fps) is your mean episode length in seconds.
# Far below your task time means episodes are being cut short.
Sanity-check a dataset you just recorded, lerobot 0.6.1

From there the dataset goes into a training run and comes out as a checkpoint. Two details decide whether it even starts. A LeRobot v3.0 dataset crashes the GR00T loader and has to be converted down to v2.1. And the episode count, which varies by model.

PolicyMin episodesDataset formatGPU tierInference per step
GR00T N1.750LeRobot v2.0 or v2.1A100 or H100 80 GB152 ms
GR00T N1.550LeRobot v2.0 or v2.1A100 or H100 80 GB165 ms
Pi0.550LeRobot v3.0A100 or H100 80 GB485 ms
SmolVLA30LeRobot v3.0RTX 4090, any 24 GB card245 ms
ACT50LeRobot v3.0RTX 4090, any 24 GB card20 ms

Those are floors, not targets: they say when a fine-tune has enough to bite, not when the policy is good. If a job dies on the loader or never leaves the queue, dataset rejected as v3 and training job stuck queued come first.

The AY-Robots public dataset directory listing recorded LeRobot datasets
The public dataset directory. Every entry started as somebody sitting at an arm for an afternoon.

Does hobbyist data help? The SmolVLA team curated 487 community datasets focused on the SO-100 arm, standardised at 30 fps, around 10 million frames, and pre-trained on them. Success on SO-100 went from 51.7 percent without that pre-training to 78.3 percent with it. Their own description of the corpus is varied lighting, suboptimal demonstrations, unconventional objects, heterogeneous control schemes. They kept the mess and cleaned only the labels, rewriting each instruction to under 30 characters starting with an action verb.

Skills and hardware you actually need

The skill list is short and none of it is a degree. Steady hands matter more than programming, and patience more than either, because the fiftieth repetition has to look like the fifth.

  • Hand-eye coordination from a 2D camera feed rather than direct sight. This separates people fast, and it is trainable in a few hours.
  • Tolerance for repetition. The job is closer to a machinist's than a programmer's.
  • Basic terminal literacy: install a package, pass flags, read an error.
  • Enough mechanical sympathy to notice a servo running hot before it strips.
  • A stable connection if the robot is not in the room with you.
ArmServosVoltageParts costSupport level
SO-100Feetech STS3215 bus servos7.4 V110 to 150 EURFull, reference arm
SO-101Feetech STS32157.4 V130 to 170 EURFull
Koch v1.1Dynamixel XL330 / XL4305 V and 12 V rails250 to 350 EURCompatible
LeKiwiFeetech STS3215, driven base7.4 V arm, 12 V base400 to 500 EURCompatible
7.4 V means 7.4 V

Feetech STS3215 servos run at 7.4 V. Feeding them 12 V from a bench supply or a LeKiwi base brick destroys them, usually silently and not all at once, so you spend the next session chasing a phantom control bug. If a joint has gone soft, start at servo not responding and arm twitches then sags, not at your code.

The AY-Robots SO-100 hub page with links to setup, data collection and imitation learning guides
The SO-100 hub. If you are choosing a first arm, this is the one most public datasets were recorded on.
Teleoperation work, honestly assessed
What is genuinely good about it
  • Almost no entry barrier. No degree, no portfolio, and practice hardware costs about as much as a mid-range phone.
  • The skill compounds. Operators who understand why an episode was rejected end up doing dataset review and training runs.
  • The output is verifiable. Either the gripper closed or it did not.
  • The tooling is public rather than locked to one employer.
What to know before committing
  • Repetitive by design. If a session feels interesting, you are probably varying your strategy, which means worse data.
  • Pay data is scarce, and the roles that publish numbers are mostly in-person and physically demanding.
  • Latency caps which tasks can be done remotely at all.
  • The work is explicitly aimed at automating the task you are demonstrating.
  • Hardware fails on your shift, and troubleshooting it is part of the job whether the listing said so or not.

That cap has a number. The control loop runs from 20 ms per action step for ACT to 485 ms for Pi0.5. A public-internet round trip on top of that turns a working policy, or a working operator, into a hesitant one. See inference latency.

Pay and market size: what can be sourced

This is where most articles invent numbers. There is no occupational classification for robot teleoperator and no government wage series, only individual job postings, a few news reports, and collection statistics inside research papers. Here is everything in that category that survived being checked.

SourceWhat it documentsThe figure
Fortune, August 2024Tesla Data Collection Operator, mocap and VR25.25 to 48 USD per hour, walking 7+ hours a day, height 5 ft 7 to 5 ft 11
The Tesla posting itselfShifts and physical demands, same rolePalo Alto, three shifts, up to 30 lbs carried, daily reports, height 5 ft 7 to 6 ft
DROID, 2024Human effort behind one open dataset50 collectors, 12 months, 76,000 trajectories, 350 hours, 564 scenes, 84 tasks
RoboTurk platform paper, CoRL 2018Output of one crowdsourced run137.5 hours, over 2,200 successful demonstrations, in 22 hours of system usage
RoboTurk scaling paper, IROS 2019Throughput of remote crowdsourcing54 users, over 111 hours, 3 tasks, in 1 week
Hugging Face SmolVLA postWhether hobbyist data is worth anything487 community datasets, about 10 M frames, success 51.7 to 78.3 percent
Numbers you will see that I could not verify

Salary aggregators publish confident averages for "robot teleoperation" derived from keyword-matched postings that are mostly not this job. Other pages quote per-hour data-collection prices from vendor rate cards as though they were wages; a rate card covers hardware, supervision and facilities, and the operator sees a fraction of it. Neither traced back to a named publisher and a date, so neither appears above.

What you can infer is direction, not magnitude. The pi0 pre-training mixture was 10,000 hours of dexterous manipulation data from 7 robot configurations and 68 tasks, with a further 9 percent of its timesteps from Open X-Embodiment, Bridge v2 and DROID. Open X-Embodiment is itself 22 robots from 21 institutions covering 527 skills, every hour of it recorded by a person at a rig.

How to start, two ways

Less alternatives than a sequence. Recording your own dataset tells you whether you like the work; a platform is how you get paid without buying hardware or finding customers.

Full control, no gatekeeper, everything you produce is yours. You are also your own IT department, and you pay for the GPU.

  1. 1
    Get two arms and assemble them

    A powered follower plus a leader you move by hand. Parts cost about 110 to 150 EUR for an SO-100 and 130 to 170 EUR for an SO-101, plus printing time. SO-100 getting started walks the build.

  2. 2
    Install the extras and verify the chain end to end

    Ports, cameras, calibration, teleop, in that order. Do not skip the dry run; a camera that is not recording is the failure you find after 40 episodes.

    bash
    pip install 'lerobot[core_scripts,feetech]'
    lerobot-find-port
    lerobot-find-cameras
  3. 3
    Record 30 to 50 episodes of one narrow task

    One task, one strategy, varied placement, roughly 10 episodes per location. Record your first dataset covers this with screenshots.

  4. 4
    Train something small enough to finish

    ACT or SmolVLA on a 24 GB card. Training needs its own extra, and SmolVLA its policy extra on top. ACT has no base model, so it only exists after you train it.

    bash
    pip install 'lerobot[training]'      # add ,smolvla for SmolVLA
    
    lerobot-train \
        --dataset.repo_id=${HF_USER}/so101_pickplace \
        --policy.type=act \
        --output_dir=outputs/train/act_so101 \
        --job_name=act_so101 \
        --policy.device=cuda \
        --steps=20000
  5. 5
    Run it back on the arm and watch what it copies

    Every hesitation the policy shows is something you did in the data. This is what teaches you to record better.

    bash
    lerobot-rollout \
        --strategy.type=base \
        --policy.path=${HF_USER}/my_policy \
        --robot.type=so101_follower \
        --robot.port=/dev/ttyACM0 \
        --task="Put the red brick in the bowl" \
        --duration=60
Budget for the boring failures

Expect ports that move between reboots, a camera index that changes when you plug in a webcam, and a gripper that closes on air. Camera not detected, arm not detected and gripper does not close are the three you hit first.

The AY-Robots download page for the desktop client that records LeRobot datasets from a teleoperation session
The desktop client. It is the piece that turns a teleop session into an episode on disk.

Become a robot operator

Drive real SO-100 class arms from wherever you are and record the demonstrations that policies get trained on. No prior robotics experience assumed.

See the operator programme

Is this a job with a future?

It is a job whose shape keeps changing. Current vision-language-action models are data-hungry in a way only human demonstration satisfies, and nothing on the horizon removes that for contact-rich manipulation. What changes is the mix: as policies handle the easy cases, the valuable hours shift from bulk recording toward the episodes where the robot failed, which are exactly the episodes nobody has.

For background, the RoboTurk write-up covers where crowdsourced teleoperation started and the VLA overview covers what your episodes feed. The arena holds 85 models and 332 benchmark results, each value linked to its source.

Do I need a robotics degree to become a robot teleoperator?

No. The core skills are hand-eye coordination from camera feeds, patience with repetition, and enough terminal literacy to run a recording command and read an error. A degree helps only if you want to move from operating into dataset design or training runs.

What does a robot teleoperator get paid?

There is no reliable wage series for this role, so be sceptical of any single number. The best-sourced public figure is Fortune's August 2024 report that Tesla's Data Collection Operator role paid 25.25 to 48 USD per hour, and that is an in-person mocap role in Palo Alto with heavy physical requirements, not a remote desk job.

How many demonstrations before a policy actually works?

The floors on this platform are 30 episodes for SmolVLA and 50 for GR00T N1.7, GR00T N1.5, Pi0.5 and ACT: minimums for a fine-tune to bite, not targets. The lerobot docs suggest at least 50 episodes, around 10 per object location, for a simple grasping task. In practice 50 consistent episodes beat 200 inconsistent ones.

Can this be done fully remotely?

For slow, deliberate manipulation, yes. The RoboTurk scaling paper reported 54 remote users producing over 111 hours of manipulation data in a week, and the 2018 platform paper found that low bandwidth and high delay did not substantially affect remote users' ability to demonstrate successfully. What remote does not survive is fast reactive motion, where the round trip on top of a 20 to 485 ms control loop breaks the task.

Will teleoperation jobs disappear once robots are autonomous?

The bulk-recording tier will shrink as policies handle routine cases, which is the explicit goal of the work. What replaces it is intervention: taking over when a deployed robot fails, which completes the customer's task and produces the failure-recovery episode no autonomous run would generate. 1X is already selling NEO on pre-order with scheduled human teleoperation built in.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started