Robot learning in simulation

Machines among us

What we taught a walking robot and a robot arm, what broke, and why every large organization needs people who understand this now.

Field notes from a one-workstation robot lab2026

Same seed, same walkers, three brains

Three robots, one patrol, full run

What that race really tested

The test was timed to the slow robot

Planner lane at 5:14: patrol succeeded, 8 of 8 checkpoints, robot parked at the charger, a walker 0.12 m away knocks it over

5:14 · patrol done, 8 of 8, parked · nearest walker 0.12 m

The walkers kept a fixed timetable, fitted to the robot with no avoidance.

The two smarter robots ran ahead. They passed every encounter before its walker arrived, so they never faced the test.

The only contacts were late walkers reaching the charger after the robots had parked. One knocked the parked planner over.

If the test doesn't react to the system under test, a faster system skips it. We rebuilt the crowd so pedestrians react to whichever robot is in front of them.

What changed

The tools went open, and the cost fell to one desk

7B

Open action models

Foundation models that output motor commands. FLUX 3 Action predicts a robot's next moves and the video of what will happen.

4,096

Parallel worlds

Open GPU simulators (Isaac Lab) run thousands of deterministic copies of a world at once.

2 h

2.1 billion steps

One training run, one workstation GPU, about 290,000 simulated steps per second.

The stack

Three brains, stacked. We trained the middle one.

MISSION

Where to go, what to report

Waypoints and event rules. Written by people, or an LLM agent.

SKILL · OURS

How to get past people

Learned with reinforcement learning. Reads lidar, outputs speed and turn ten times a second.

MOTOR

How to walk

NVIDIA's pretrained Spot locomotion policy. We did not train the legs.

Play with it: explorer · the stack

Why simulate

Fail ten million times before anyone gets hurt

Safe to fail

Collisions cost nothing. Learning needs a lot of them.

Parallel

Thousands of worlds at once, faster than real time.

Repeatable

Same seed, same world. Any incident can be replayed frame by frame.

Ground truth

We know where every person was. Scoring never relies on the robot's own opinion.

The catch: simulation is not reality. Every result here is a simulated result, and we treat it that way.

The world we built

A patrol through a fictional industrial site

Overhead view of the simulated industrial compound with buildings, zones and Spot's route
100 × 150 m compound · 8 waypoints · deterministic

IT REPORTS SIX OBJECTIVE EVENTS

  • Perimeter breach
  • Restricted-zone entry
  • Person fall
  • Vehicle in a prohibited zone
  • Gate left open
  • Route obstruction

It reports what happened. It never judges people.

It notices what matters

3 of 3 incidents found, 0 false alerts

Both scenarios, plus 10 of 10 randomized variants. Left: overhead view. Right: chase camera.

How it learns

See, act, get scored, adjust. Billions of times.

SEES · 134–198 NUMBERS

64 lidar sectors now and a moment ago, where the goal is, how fast it's moving.

DOES · 3 NUMBERS, 10× A SECOND

Forward speed 0–1 m/s, sideways ±0.5 m/s, turn ±1 rad/s.

THINKS · TWO SMALL NETWORKS

256 × 256 neurons each: one picks actions, one predicts how good things are going.

The algorithm: PPO

Do more of what beat expectations, but never change too much at once

less likely±20% trust zonemore likely

When an action turned out better than the critic expected, make it more likely. The gain stops counting past a 20% change, so one lucky episode can't hijack the policy.

γ 0.99 · λ 0.95 · clip 0.2 · 4 epochs × 4 minibatches · lr 3e-4 · entropy 0.003 · target KL 0.03

Explore: explorer · PPO

The reward is the spec

Whatever you don't price in, it will ignore

TermWhenWeight
Progresseach metre closer to the goal+1.0
Timeevery step (0.1 s)−0.01
Smoothnessjerky commands, ‖Δa‖²−0.01
Near missinside 0.3 m of a personup to −1 / step
Personal space (v3)inside 1 m−0.2 · depth²
Contact · Wallepisode ends−10
Successgoal reached+10

Each line is a policy decision someone made: how much is a second worth? How close is too close?

Try your own weights: explorer · reward

Five versions in two days

Each version fixed what the last one taught us

Easy

People walk straight lines and never react.

96% success

v1

Add adversarial pedestrians that react to the robot.

31%

v2

Give it memory: scans from 0.3 s and 0.6 s ago, because 0.1 s hid their motion.

41%

v3

Realistic crowd density near the robot, plus a personal-space penalty.

32%, nothing moved

v4

Planned: fix how speed is represented. One change at a time.

not yet run

End-of-training success rate (smoothed) in each version's own world. Harder worlds mean lower numbers; these aren't directly comparable.

Training curves

An easy world is learned in minutes. A hostile one plateaus.

Success rate per training episode (smoothed) vs billions of simulated steps. Each run: 2 hours, 4,096 worlds. Explore: explorer · curves

Read the actions, not just the score

e¹

= 2.718: the ceiling we set on the policy's speed noise. Every run hit it.

Its throttle became an on/off switch

92% of forward commands were full speed. 1.6% were anything in between.

The output is squashed through tanh, so huge noise pins it to the ends. Our leading suspect for the crowd bumps. A suspect, not a proven cause, so v4 tests it on its own.

Report the denominator

On the headline metric, it tied. Overall, it lost.

80 held-out runs, hard tierRL v1RL v2RL v3Hand-written
Adversarial hit rate per committed approach37.2%35.2%40.0%38.5%
Runs that bumped an ordinary person61 / 8055 / 8056 / 8027 / 80
Median patrol time462 s388 s405 s377 s

Contacts per 100 person-seconds within 4 m: 1.23 learned vs 0.24 hand-written. Explore: explorer · denominator

Watch the video, not just the table

Always run a control

Top: with avoidance vs none, people who never react. Zero contacts, closest pass 0.47 m. The control was knocked over at 164 s.

Bottom: the control in a live crowd.

Second robot: an arm

Teaching a hand: from 0 of 8 to 30 of 48

Scripted expert: scene camera and wrist camera, 30 Hz

A low-cost open arm (SO-101) moves a mug into a bowl. First we wrote an expert to generate demonstrations.

The breakthrough was measuring the asset: the mug's origin sat 2.2 cm off the cup's centre. Then 909 successful demos fine-tuned a 7B open action model in 3.4 h.

The overnight run

Seven successes. All seven fake.

Scored "success": the bowl spawned on top of the object
The first real one: grasp, lift, carry, place

True overnight score: 0. A fixed random seed replayed one bad placement for every policy, and the success check never required a lift. With the jaw pre-opened: 1 of 6, genuinely. Try it: explorer · real or fake

Swap the model, keep the test · NVIDIA GR00T N1.7

It picks it up. It never lets go.

Night 1, blue block: lifted, carried to the bowl, held there for the full 20 s
8 / 72

strict real places · 6 objects × 12

Same 909 demos, objects, seeds and strict rule as FLUX (0 real). Lifted but not placed: in 48 of 59, it never opened the jaw.

The cause was the data. The recorder reset the instant the object landed, so each demo held about 1 release frame in ~145.

Night 2 · same model, re-recorded demos

Fix the data, not the model

training object mug · 20 / 24
never trained on cracker box · 5 / 24
8/72 73/144

Strict, night 2 · training objects 61/96, never trained on 12/48

Demos keep the release: median 42 release frames (862 demos), plus 5× loss weight on gripper open/close.

Residual RL · night-1 GR00T frozen · sealed test seeds

Or learn when to let go

GR00T alone
+ release gate

TRAINING OBJECTS

58/465 → 382/465

NEVER TRAINED ON

22/236 → 122/236

A small PPO policy on top adds a ≤ 4° arm correction and a "release now" gate. Paired: same layout, same GR00T noise. Not comparable to night 2: different seeds, different base model.

Can a local vision model tell whether it worked?

Check it after it settles. Fine‑tuning traded one error for another.

SERVED · 95 SETTLED FRAMES

ModelRightFalse "done"Latency
Gemma 4 12B94.7%5/500.64 s
Qwen 3.8 27B97.9%1/501.9 s

At the instant of release, fingers still around the object, Gemma missed 24 of 45 real places. So the arm retreats and waits before the picture.

GEMMA 4 12B · 4-BIT QLoRA (UNSLOTH)

BaseTuned
False "done", settled12/503/50
Missed, at release15/4541/45
Missed, unseen objects3/129/12

One training seed. Base re-scored in the fine-tune harness; compare within a table, not across.

Same model, split into skills · a planner calls pick up → move to → release

The skill undid its own lift, until a checker said "it's up"

STRICT PLACES · 20 S EPISODES · SAME SEEDS

Training objectsNever trained on
Skills, fixed 8 s per skill28/967/48
Skills + fine-tuned checker60/9612/48
+ retry + RL-tuned grasp85/9620/48
Night 2, one model end to end61/9612/48

Median time to a place: about 11 s for skills, 4.5 s for the single model.

Pick up lifted the object, kept moving for its full 8 s and set it back down; the after-skill check rightly said "not held", so it retried until time ran out.

Now the fine-tuned Gemma looks every second during the skill: "is it up?" On yes, stop and move on.

Then the misses were grasps: in 59 of 72 failures the claw never got hold of the object. A small RL correction trained on the grasp step took it to 85 of 96.

World models · FLUX 3 Action

The model imagines the next two seconds, and we can watch

Real (top) vs imagined (bottom), public robot data
Same model, asked only for video

It plans 2.1 s of motion in 1.0 s, predicting both the joint commands and the video of what will happen.

Next idea: imagine several futures, pick the best one.

Honest status

What isn't mature yet

crowds

Our learned steering doesn't beat a hand-written planner around ordinary people yet.

hands

The arm now places 73 of 144 in simulation, but only 12 of 48 on objects it never trained on.

reality

Everything here is simulated. The gap to real floors, light and people is real.

evals

Evaluations are easy to fool, and so are model checkers. We fooled ourselves twice in one week, and caught it.

Where this shows up

Every industry with floors, fields, or fleets

Warehousing

Mobile robots sharing aisles with people

Manufacturing

Arms leaving cages for shared workcells

Energy & utilities

Legged inspection of plants, lines, substations

Construction

Site scanning, layout, progress checks

Agriculture

Harvesting and field robots near workers

Healthcare logistics

Delivery robots in hospital corridors

Retail

Shelf scanning and restocking in open hours

Facilities & security

Patrols that report events, like ours

More detail per industry: explorer · industries

The questions every organization will face

Does it behave around people?

How often does it fail, per hour of exposure?

Can we replay an incident exactly?

Can we test a vendor's promise before it's on our floor?

Simulation and honest evaluation answer all four. That's a skill set, not a product.

Why now, if it's immature

Judgment takes years to grow. The tools took weeks.

The cost collapsed

One workstation, open simulators, open models. Everything in this talk.

You'll buy before it's mature

Vendors will arrive with demos and one headline number. Someone has to ask for the denominator.

Your people are halfway there

Agent builders know tools and evals. LLM trainers know PPO and fine-tuning. The gap is physics and sensors.

Federated capability

A small core builds once. Every team reuses it.

OperationsFacilitiesLogisticsProductPartnersCoreteam

THE CORE OWNS

A scenario library from real operations · an evaluation harness with controls and held-out seeds · exposure-normalised metrics and incident replay · training recipes

TEAMS AND PARTNERS GET

Tested scenarios for their own sites · a way to check vendor numbers · people who've done it once, embedded with them

See it animated: explorer · federate

A starter path

Ninety days, one workstation, three people

WEEKS 1–2

Run the basics

Install a simulator, train a classic control task, watch a pretrained robot walk.

WEEKS 3–6

One real scenario

Rebuild one situation from your own operations. Add a no-action control.

WEEKS 7–10

Evaluation first

Held-out seeds, exposure rates, video review, a success check you've tried to break.

WEEKS 11–13

Test a vendor

Run an open model or a vendor system through it. Share the harness.

One line to remember

Evaluation is the product.

Models and robots will keep getting better on their own. Knowing when to trust them won't.

Hands-on companion: explorer.html

Thank youQuestions

Credits

Built on downloadable tools, models and data

  • NVIDIA Isaac Sim 6.1 and Isaac Lab 3.0, including the Spot robot asset and its pretrained locomotion policy
  • FLUX 3 Action © Black Forest Labs, used under the FLUX Kommunity License
  • NVIDIA GR00T N1.7 (Isaac-GR00T); rollout media non-commercial, see MEDIA-LICENSE
  • Gemma 4 12B and Qwen 3.8 27B as local checkers; QLoRA fine-tune with Unsloth
  • DROID robot manipulation dataset (CC BY 4.0)
  • SO-101 open-hardware arm and the LeRobot project

All scenes, people and sites shown are simulated or fictional.

Side quest · Splat Lab

One picture in, a 3D scene you can turn

The input: a white cat in a purple felt hat on a snowy rock

A video model with a camera-orbit LoRA walked a camera all the way round this one image; that video became a 3D Gaussian splat.

Drag to orbit, scroll to zoom. Needs WebGL 2.

The full story: Splat Lab (opens in a new tab).

Video: MiniMax-H3 with the ORB360 LoRA; generated media under the MiniMax H3 Community License. Reconstruction: Spirula Studio, COLMAP, SAM 2.1. Viewer: Spark and three.js.

Speaker notes

← → move · N notes · G grid · F fullscreen