2x speed

      

This program was written by a coding agent

No supplied planner, skills, or simulator source code

Coding Agents for Generalized Task and Motion Planning ProblemsAnonymous ICRA 2027 submission

TAMP planner
Generalized TAMP
Coding agent
engineer / LLM
predicates
operators
samplers
skills
abstractions
environment
coding agent
planner
planner
planner
generalized policy
program

TAMP problems with a variable number of objects

TAMP planner: given abstractions, one search per instance

Generalized TAMP: given abstractions, one policy for all instances

Drop the abstractions: only a coding agent and the environment?

task description

# Shelf3DEnv (variable object count)
A 3D task where the robot must pick up objects from the ground and place them onto a space-constrained shelf in a cupboard with three layers. The robot has a holonomic mobile base with powered casters and a Kinova Gen3 arm.
This environment contains a VARIABLE number of objects.

simulator client
4x
stalls on the floor · its recalled arm model says the fingertip is 2.4 cm above it
8x
where its prior arm model put the block · shown 5x
arm model error, 41 probes: 38.9 mm → 1.8 mm
6x
drops the cube at the shelf and never goes back for it
3x
fix: checks each grasp with its arm model, retries cubes left on the floor

reset(seed) · step(action) · render()
object-centric state in, action out

sandbox

Python · NumPy · SciPy
no environment source · no network
$20 · 60 s per test instance

coding agent
approach.pyfrozen · no LLM

    
15x speed

100 held-out instances, 1 to 8 cubes
no LLM at test time
0 solved

Given: a task description, a simulator, a bare sandbox and $20

It probes: the arm model it wrote from memory is wrong

It holds a block and fits its own arm model

It writes a policy: reset() and get_action()

It tests on the seeds it chooses: four of five fail

It debugs and commits, 13 times in this run

Frozen program, 100 held-out instances, no LLM

task description

# StickButton2DEnv (variable object count)
A 2D environment where the goal is to touch all buttons. The robot has a movable circular base and a retractable arm with a rectangular vacuum end effector.
This environment contains a VARIABLE number of objects. Your program must handle ANY number of them.

simulator client

reset(seed) · step(action) · render()
object-centric state in, action out

sandbox

Python · NumPy · SciPy
no environment source · no network
$20 · 60 s per test instance

coding agent
approach.pyfrozen · no LLM

    
real time

100 held-out instances, 1 to 5 buttons
no LLM at test time
0 solved

Given: a task description, a simulator, a bare sandbox and $20

It probes the black box: read states, push until the wall stops it

It writes a policy: reset() and get_action()

It tests where it wants: 300-seed sweeps, worst cases first

It debugs and commits, 14 times in this run

Frozen program, 100 held-out instances, no LLM

28 environments × 5 synthesis methods × 5 runs each × 100 held-out instances

70,000 evaluation episodes

14 of 28 environments at 95% success or above
Mean success per family
AgenticGenPlanCoding agent, bare sandbox, no abstractions. One program per environment.
PlannerHand-written predicates, operators, samplers, skills. New plan per instance.
LLMGenPlanLLM writes the program from the environment source. Fixed feedback, no tools.
AgenticGenPlan · main setting · 0% Claude Code
AgenticGenPlan + source · 57% Claude Code
6x speed
Policy computation per action · 44 matched seeds, 13 environments

With the environment source: recovered, 7x slower per action

AgenticGenPlan · main settingClaude Code
3x speed
Goalevery cube in the bin
human demonstration · 4x
expectedunderhand throw

Winds up to an overhand throw

AgenticGenPlan · main settingClaude Code
8x speed
Goalget the balls to the right of the wall, at least half of them
human demonstration · 4x
expectedsmall scoops

Regrasps the tool, then one huge scoop

AgenticGenPlan + sourceClaude Code
5x speed
Goalmove the pile of crumbs into the green tray
human demonstration · 4x
expecteduse the scoop tool

Grabs and dumps the tray, ignoring the tool

AgenticGenPlan + sourceClaude Code
6x speed
Goalopen the drawer and sweep the crumbs in
human demonstration · 4x
expecteduse the sweep tool

Sweeps with the arm instead of the tool

AgenticGenPlan · main settingClaude Code
4x speed
Goalevery block inside the shelf

Makes room by pushing stored blocks deeper

AgenticGenPlan · main settingClaude Code
4x speed
Goalretrieve the target block to the target region

25 objects: clears a path to the target

AgenticGenPlan + sourceClaude Code
6x speed
48x speed
Goaleach cube in the bin of its colour

Recovers from failed grasps

AgenticGenPlan + sourceClaude Code
real time
Goalpush the movable button onto the target button

Swings the hook like a windmill, pushing with its long side

AgenticGenPlan · main settingCodex · early version of the program
real time
Goalany blue block on the green plate

Early in synthesis: the grasp fails

AgenticGenPlan · main settingCodex · final program
1.5x speed
Goalany blue block on the green plate

Later: it goes for the spare blocks on the far table

0.0 s space play · arrows cue · shift+arrows scene · t theme · c captions · ?t=SS ?theme=x ?record=1