
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 work | Typical rig | What the shift produces |
|---|---|---|
| Demonstration recording | Leader arm, VR controllers, 3D mouse, phone | Episodes in a dataset for imitation learning |
| Embodied motion capture | Mocap suit plus VR headset | Human motion retargeted onto a robot |
| Remote fallback | VR headset and a live video link | A finished customer task and a correction episode |
| Review and annotation | A browser, no robot | Kept 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.
- 1Install 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 - 2Calibrate 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.
bashlerobot-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 - 3Dry 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.
bashlerobot-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 - 4Record 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.
bashlerobot-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 - 5Reset 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
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.
- 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.
- 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.
- Vary the world, not the method. Object position and clutter change between episodes; camera placement, lighting, grip strategy and speed do not.
- 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.
- 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 variant | Operators | Trajectories per task | How it was labelled |
|---|---|---|---|
| PH, proficient human | 1 | 200 | One skilled demonstrator, collected through RoboTurk |
| MH, multi-human | 6 | 300, 50 from each | 2 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.
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.
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.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.
| Policy | Min episodes | Dataset format | GPU tier | Inference per step |
|---|---|---|---|---|
| GR00T N1.7 | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 152 ms |
| GR00T N1.5 | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 165 ms |
| Pi0.5 | 50 | LeRobot v3.0 | A100 or H100 80 GB | 485 ms |
| SmolVLA | 30 | LeRobot v3.0 | RTX 4090, any 24 GB card | 245 ms |
| ACT | 50 | LeRobot v3.0 | RTX 4090, any 24 GB card | 20 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.

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.
| Arm | Servos | Voltage | Parts cost | Support level |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 bus servos | 7.4 V | 110 to 150 EUR | Full, reference arm |
| SO-101 | Feetech STS3215 | 7.4 V | 130 to 170 EUR | Full |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | 250 to 350 EUR | Compatible |
| LeKiwi | Feetech STS3215, driven base | 7.4 V arm, 12 V base | 400 to 500 EUR | Compatible |
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.

- 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.
- 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.
| Source | What it documents | The figure |
|---|---|---|
| Fortune, August 2024 | Tesla Data Collection Operator, mocap and VR | 25.25 to 48 USD per hour, walking 7+ hours a day, height 5 ft 7 to 5 ft 11 |
| The Tesla posting itself | Shifts and physical demands, same role | Palo Alto, three shifts, up to 30 lbs carried, daily reports, height 5 ft 7 to 6 ft |
| DROID, 2024 | Human effort behind one open dataset | 50 collectors, 12 months, 76,000 trajectories, 350 hours, 564 scenes, 84 tasks |
| RoboTurk platform paper, CoRL 2018 | Output of one crowdsourced run | 137.5 hours, over 2,200 successful demonstrations, in 22 hours of system usage |
| RoboTurk scaling paper, IROS 2019 | Throughput of remote crowdsourcing | 54 users, over 111 hours, 3 tasks, in 1 week |
| Hugging Face SmolVLA post | Whether hobbyist data is worth anything | 487 community datasets, about 10 M frames, success 51.7 to 78.3 percent |
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.
- 1Get 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.
- 2Install 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.
bashpip install 'lerobot[core_scripts,feetech]' lerobot-find-port lerobot-find-cameras - 3Record 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.
- 4Train 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.
bashpip 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 - 5Run 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.
bashlerobot-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
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.
No hardware, no GPU account, no customers to find. The trade is that you work inside somebody else's queue and quality bar.
- 1Drive a real arm first, with no signup
/live puts a physical arm in front of you through the browser, queue-based. Ten minutes there tells you more about whether you want this job than any article, this one included.
- 2Read the operator documentation before applying
The operator guide is where the shape of the programme is written down, and sessions and teleoperation cover the mechanics of a shift. Read those rather than inferring terms from a jobs page.
- 3Learn both control modes
The platform drives a real SO-100 over the internet from the browser, leader-follower or with an on-screen pad. The pad is what you have away from your own rig, so it is the one worth practising.
- 4Install the desktop client if you record locally
The desktop client records LeRobot-format datasets straight from a teleop session: episodes, camera streams, joint states. Datasets can also come from a Hugging Face repo id or your own machine, and the directory lists the public ones.
- 5Train on what you recorded
A form picks model, dataset and hyperparameters; the backend rents a GPU by required VRAM and writes checkpoints to object storage. SmolVLA on SO-100 is the cheapest useful start, and the CLI and MCP server expose the same operations.
| GPU tier | Models | Typical run | Price per hour | Cost per run |
|---|---|---|---|---|
| A100 / H100 80 GB | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 to 6 hours | 1.20 to 2.00 USD | about 4 to 12 USD |
| RTX 4090, 24 GB | SmolVLA, ACT | 2 to 5 hours | 0.30 to 0.60 USD | about 1 to 3 USD |
Remote inference has a hard limit. The control loop is 20 to 485 ms per action step depending on the model, and public-internet round trips add to that. A policy served from a cloud pod is fine for slow pick-and-place and not for fast reactive motion; for that, inference has to sit next to the servos. GR00T N1.7, GR00T N1.5 and Pi0.5 are cloud-only here; SmolVLA and ACT also run locally.

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 programmeIs 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.
Sources
- RoboTurk: A Crowdsourcing Platform for Robotic Skill Learning through Imitation (CoRL 2018)
- Scaling Robot Supervision to Hundreds of Hours with RoboTurk: Robotic Manipulation Dataset through Human Reasoning and Dexterity (IROS 2019)
- What Matters in Learning from Offline Human Demonstrations for Robot Manipulation (robomimic)
- robomimic v0.1 datasets: the PH and MH operator proficiency variants
- DROID: A Large-Scale In-The-Wild Robot Manipulation Dataset
- Open X-Embodiment: Robotic Learning Datasets and RT-X Models
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- SmolVLA: Efficient VLA trained on LeRobot community data
- LeRobot installation: the core_scripts, training and feetech extras
- LeRobot CLI cheat sheet: find-port, calibrate, teleoperate, record, train, rollout
- LeRobot: imitation learning on real robots (recording defaults, resume, tips)
- lerobot v0.6.0 release notes: breaking changes from v0.5.1 (minimal default install)
- Fortune: Tesla is hiring people to wear motion-capture suits to train Optimus
- Tesla Data Collection Operator posting: duties, shifts and physical requirements
- Engadget: 1X NEO, a home robot that learns chores via teleoperation
Sources
- RoboTurk: A Crowdsourcing Platform for Robotic Skill Learning through Imitation (CoRL 2018)
- Scaling Robot Supervision to Hundreds of Hours with RoboTurk: Robotic Manipulation Dataset through Human Reasoning and Dexterity (IROS 2019)
- What Matters in Learning from Offline Human Demonstrations for Robot Manipulation (robomimic)
- robomimic v0.1 datasets: the PH and MH operator proficiency variants
- DROID: A Large-Scale In-The-Wild Robot Manipulation Dataset
- Open X-Embodiment: Robotic Learning Datasets and RT-X Models
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- SmolVLA: Efficient VLA trained on LeRobot community data
- LeRobot installation: the core_scripts, training and feetech extras
- LeRobot CLI cheat sheet: find-port, calibrate, teleoperate, record, train, rollout
- LeRobot: imitation learning on real robots (recording defaults, resume, tips)
- lerobot v0.6.0 release notes: breaking changes from v0.5.1 (minimal default install)
- Fortune: Tesla is hiring people to wear motion-capture suits to train Optimus
- Tesla Data Collection Operator posting: duties, shifts and physical requirements
- Engadget: 1X NEO, a home robot that learns chores via teleoperation
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started