EmbodiedSWE: Coding Agents for Long Horizon Dexterous Robotics
Organizations: ByteDance Seed · Princeton University · Yale University · Carnegie Mellon University ·
Abstract
We study coding agents for long-horizon, dexterous robotics and ask whether their solutions can provide scalable supervision for learning general robot policies. To test this, we develop EMBODIEDSWE-BENCH, a simulation benchmark for coding agents spanning contact-rich manipulation, deformable objects, and long-horizon tasks requiring up to half an hour of continuous interaction. We find that frontier coding agents can solve complex long-horizon tasks and transfer prior solutions across both tasks and embodiments. We also design supporting tools that help agents more effectively solve these tasks. However, the resulting solutions require substantial iterative interaction and are typically specialized to individual task instances. We therefore introduce EMBODIEDSWE-GEN, which expands a single solution from coding agent into large diverse trajectories for training a VLA. VLA performance improves with more generated demonstrations, and agent-aided diversification improves generalization to held-out task variations. We also show that a VLA finetuned solely on coding-agent-generated simulation demonstrations completes a long-horizon task on real robot. Together, our framework uses coding agents to solve complex robotics tasks and turn verified solutions into scalable supervision for robot policies.
Figures & tables
| Task | Script-only | Agent-aided (ours) |
|---|---|---|
| pen_holder | ||
| tool_packing | ||
| slice | 0 | |
| bulb | ||
| nut_thread | ||
| clear_organic_objects |
| Policy | Grasp shade | Place and release shade | Grasp bulb | Unscrew and Extract bulb |
|---|---|---|---|---|
| Sim-trained | 100% | 80% | 30% | 20% |
| Pretrained -DROID | 0% | 0% | 0% | 0% |
Appendix figures & tables25 assets
Supplementary material from the paper’s appendix.
Appendix
| Suite | Task | Supported embodiments | Difficulty |
|---|---|---|---|
| Assembly | allen_bolt . Drive an Allen bolt into a threaded plate using an L-shaped key. | Franka; UFACTORY xArm7; Kinova Gen3 | Medium |
| Assembly | bulb . Pick up a light bulb and screw it into its socket until fully seated. | Franka; UFACTORY xArm7; Kinova Gen3 | Medium |
| Assembly | ikea_table . Attach four threaded legs to the corner studs of a tabletop. | Franka (bimanual) | Hard |
| Assembly | SO_101 . Assemble a robot arm. | Franka (bimanual) | Hard |
| Assembly | nut_thread . Pick up an M16 nut and thread it onto a fixed bolt. | Franka; UFACTORY xArm7; Kinova Gen3 | Easy |
| Assembly | pc_gpu . Align a graphics card with a PCIe slot and press it into place. | Franka; UFACTORY xArm7; Kinova Gen3 | Easy |
| Type | Embodiment | Arm DOFs | End-effector | Notes |
|---|---|---|---|---|
| Franka | 7 | two-finger parallel gripper | fixed base; tabletop manipulation | |
| Single arm | UFACTORY xArm7 | 7 | linkage gripper or Panda hand | 0.7 m reach |
| Kinova Gen3 | 7 | Panda hand at the flange | 0.9 m reach | |
| Bimanual | Bimanual Franka | 14 | two parallel grippers | two Frankas with per-scene base placement; actions concatenated |
| Humanoid | Unitree G1 | 17 | two three-finger hands (14 DOFs) | 29-DOF humanoid; pelvis fixed in tabletop tasks; in locomanipulation tasks, the 12 leg DOFs are driven by a pretrained locomotion policy taking a base velocity command |
| Controller | Commands | Action (per arm) | Used in |
|---|---|---|---|
| Operational-space control | torques (actuators at zero intrinsic stiffness) | six end-effector pose deltas | arm evaluations (default) |
| Differential IK | joint position targets tracked by the arm PD | six end-effector pose deltas | arm evaluations |
| Pink IK | joint position targets tracked by the arm PD | absolute end-effector pose | humanoid evaluations |
| Task-space impedance | torques (actuators at zero intrinsic stiffness) | six end-effector pose deltas | — |
| Direct joint targets | joint position targets | one target per joint | — |
| Task | Stage terms (weight) |
|---|---|
| bulb | reach (0.1): pads at the bulb’s glass belly; lift (0.1): rise above the start height, full at 8 cm; transport (0.2): kernel on the bulb’s lateral offset from the nearest socket axis; upright (0.1): cosine between the bulb and socket axes; approach (0.2): when aligned, kernel on the height above the bore mouth; thread (0.3): when engaged, depth from the bore mouth to the seat. |
| nut_thread | reach (0.1): pads at the nut; lift (0.1): rise above the table, full at 6 cm; transport (0.2): lateral offset from the nearest bolt axis; upright (0.1): cosine between the nut and bolt axes; approach (0.2): when aligned, height above the thread start; thread (0.3): when engaged, depth from the thread start to the seat. |
| slice | reach (0.1): pads at the knife handle; taken (0.1): knife rise off its rest, full at 6 cm; carry (0.15): blade-edge centre over the food; align (0.15): blade normal parallel to the cut axis; press (0.2): the edge sample nearest the next uncut plane lies in that plane and is pressed toward the board; cut (0.3): fraction of planes released. |
| pen_holder | reach (0.1): pads at the nearest not-yet-inserted pen; lift (0.1): that pen’s rise off the table, full at 10 cm; carry (0.15): the pen’s bottom end over the holder axis; tip_up (0.1): pen axis along the holder axis, tip up; insert (0.25): when over the axis, pen bottom lowered below the rim toward the target depth; all_in (0.3): fraction of pens counted as inserted. |
| tool_packing | reach (0.1): pads at the nearest unstowed tool; lift (0.1): its rise off the surface, full at 8 cm; carry (0.2): tool over its assigned drawer; stowed (0.3): fraction of tools inside their drawers; drawers (0.2): mean drawer shut-ness; doors (0.1): mean door shut-ness. |
| Task | Stage terms | Training weights |
|---|---|---|
| bulb | reach (grasp pose at the neck waist), grasp, lift, transport, upright, approach, thread | reach 0.2, grasp 0.2, lift 0.6 |
| nut_thread | reach (grasp pose on the upper half of the nut), grasp, lift, transport, upright, approach, thread | reach 0.2, grasp 0.2, lift 0.6; resumed with reach 0.1, grasp 0.1, lift 0.2, transport 0.3, upright 0.1, approach 0.2 |
| slice | reach (grasp pose at the handle centre, fingers across the plate), grasp, taken, carry, align, press, cut | reach 0.2, grasp 0.2, taken 0.6 |
| pen_holder | reach (nearest uninserted pen), grasp, lift, carry, tip_up, insert, all_in | reach 0.2, grasp 0.2, lift 0.6 |
| tool_packing | drawer ladder: reach_h (handle pinch pose), grasp_h, open (pull-out ramp plus bonus); item ladder, gated on the drawer being open: reach, grasp, lift, orient, carry, stowed | reach_h 0.05, grasp_h 0.05, open 0.15, reach 0.1, grasp 0.15, lift 0.2, orient 0.05, carry 0.1, stowed 0.15 |
| Task | Additions |
|---|---|
| bulb | Grasp point moved from the glass belly to the neck waist (2.5 cm above the cap, 2 cm wide); pad offset re-measured; warm-start hover target 10 cm above the neck. |
| nut_thread | Pinch the upper half of the 13 mm nut (24 mm across flats); pad offset re-measured to the fingertips; warm-start hover target 10 cm above the nut; final run initialized from the bulb policy. |
| slice | Joint-delta actions with scale rad per step (the arm PD caps joint speed at scale , and was too slow to reach the knife); lift target raised to 8 cm because the knife settles 2.1 cm into its notches after reset while the grader keeps the unsettled height; warm-start hover target 10 cm above the handle, with a bridging variant that stops 60% of the warm-started environments partway along the home-to-hover path; episode terminates if the knife falls off the table. |
| pen_holder | Finger targets limited to 0–20 mm with a first-order filter (coefficient 0.9), since a single noisy finger action dropped an in-hand pen; measured 7.5 mm hold width (the collider is far thinner than the visual barrel); warm-start hover target above the focused pen, with optional in-hand and re-yawed pen starts. |
| tool_packing | A drawer-pull ladder (reach handle, grasp handle, pull-out ramp with a bonus once 7 cm of tray is exposed) placed before the per-item pick-and-drop ladder; the stapler as the single active item; warm-start hover target in front of the drawer handle, or above the item once its drawer is open; a curriculum that resets half of the environments with the assigned drawer already open. |
| Task | Horizon | Steps | Ent. | Finger | Warm start | Jitter (cm) |
|---|---|---|---|---|---|---|
| bulb | 14 | 32 | 0.006 | 8,000 | 50%, 90 | 3 |
| nut_thread | 14 | 32 | 0.006 | 8,000 | 50%, 90 | 3 |
| slice | 20 | 64 | 0.006 | 2,000 | 60%, 100 | 2 |
| pen_holder | 14 | 32 | 0.006 | 2,000 | 50%, 90 | 3 |
| tool_packing | 24 | 32 | 0.006 | 8,000 | 50%, 90 | 3 |
| Target | Similar source | Shared skill | Dissimilar source |
|---|---|---|---|
| bulb | nut_thread | screwing along a thread | tool_packing |
| allen_bolt | nut_thread | threading/ratcheting a screw | pen_holder |
| pc_motherboard | allen_bolt | hex-key bolt ratcheting | spatula |
| pc_ram | pc_gpu | seating a card in a slot | bulb |
| tool_packing | pen_holder | stowing objects into recesses | nut_thread |
| spatula | allen_bolt | wielding a grasped tool | pc_gpu |
| Experiment | Setting | Score | Success | Tokens per run (M) | ||
|---|---|---|---|---|---|---|
| Unc. input | Cached input | Output | ||||
| Cross-task | similar-task hint | 31% | 1.9 | 54 | 0.13 | |
| dissimilar-task hint | 17% | 1.9 | 86 | 0.15 | ||
| no hint | 11% | 2.3 | 84 | 0.15 | ||
| Cross-embodiment | Kinova Gen3 + hint | 56% | 0.8 | 56 | 0.10 | |
| xArm7 + hint | 36% | 1.3 | 55 | 0.10 | ||
| Number of demonstrations | |||||
| Task | 10 | 50 | 100 | 200 | 400 |
| Success rate (%) | |||||
| coffee | |||||
| pc_gpu | |||||
| clear_organic_objects | |||||
| pen_holder | |||||
| Task | Revised success criterion |
|---|---|
| Coffee preparation | Press START with the bay cover closed, the capsule seated, and the mug positioned under the spout. |
| Clearing organic objects | Complete the placement of one organic object. |
| Pen holding | Insert one pen into the holder. |
| Banana slicing | Cut the banana into at least three pieces. |
Coding Agents
Coding agents use language models, tools, and feedback to modify software and complete engineering tasks.
See all 141 papers