VABAR

Self-learning case study: the syringe jam

Task-level success says whether an execution achieved its objective, not where or why it failed. That matters for agentic robotics, where execution feedback is used to diagnose failures, revise programs and introduce recovery behaviours. This case study follows one failure through that loop on Syringe Packing, from a recurring jam to a new skill in the policy graph.

Run→Verification fails→Inspect physical state→Add a recovery skill→Run again

1The failure

On cluttered trays the graph posts several syringes, then stops. In sweep s6, every failed trial ended the same way. After 3–5 posts, the syringes already in the box stood or leaned under the hole, and the next one landed on them. That syringe was left standing in the aperture, the post-release check returned blocked, and the episode aborted.

Video 1. The jam, recorded. Episode t01. Scene view alongside the container mouth.

2The diagnosis

An error message says only that verification failed. Pairing task-level verification with simulator ground-truth inspection identifies the physical conditions behind it. Two jammed episodes, t01 and t29, terminate with final verification reporting blocked and 7/8 and 6/8 syringes posted. In both, a syringe straddles the lid plane, with its needle end inside the cavity and its opposite end above the opening.

The surrounding syringes sit in different configurations, which shows execution-induced variation: earlier placements alter the geometry encountered by later insertions. The box cavity (89 × 166 × 172 mm) holds about five syringes lying flat, so a tray of 6–8 fills it, and the jam is partly a capacity limit.

Left: a syringe standing in the sharps box hole, with a top-down view into the box. Right: side and front projections of episodes t01 and t29, with one red syringe crossing the lid plane above blue syringes.
Figure 1. Physical-state inspection supports failure diagnosis. Left: simulated syringe-packing scene with a top-down inset. Right: ground-truth projections of jammed episodes t01 and t29. Red segments highlight syringes straddling the lid plane; blue segments show other syringes, black dots mark needle ends, and gold outlines indicate container geometry.

3The new skill

The diagnosis points at a specific recovery: a syringe standing on a pile is easy to topple. So the graph gained an unjam step that runs before it gives up. The closed gripper comes top-down over the hole, pushes the fingertips 25 mm below the rim onto the protruding top, and sweeps ±10 mm along the box's long axis. The check then runs again, and only a second blocked aborts.

Video 2. Without the unjam skill. Verification reports blocked and the graph aborts. Speed and run label are burned into the frame.
Video 3. With the unjam skill. The blocked insertion triggers a push-and-re-verify recovery, and the episode completes.

4What changed across sweeps

Each sweep ran the graph over the same 30 cluttered-tray trials, holding 176 syringes in total.

SweepChanges since the previous sweepTrials solvedSyringes posted
s6Before the unjam recovery8 / 30 (27%)64%
s7Unjam recovery, half-turn grasp, tilt-check fix13 / 30 (43%)137 / 176 (78%)
s8Stricter blocked threshold, stricter candidate filter, slower reconfiguring turns16 / 30 (53%)152 / 176 (86%)
Table 1. Sweeps of gap_perception_v2 on tray_clutter, 2026-09-13. Each row bundles several changes, so the gain from s6 to s7 is not the unjam skill's alone. Each trial ran once.

The loop did not finish the task. In s8, 8 of the 14 failures were still box jams, where a later syringe stayed blocked after the unjam push. Another 4 were grasps stopping short in tight corners, and 2 were syringes that slipped or fell from the fingers, which the seat check correctly refused. The next round of diagnosis starts from those records.

See task definitions, components and execution records →