insertion_failure_table — DRIVE pegfail op

• Data kinds: none → table (an op determined by its arguments alone — it takes no image or data input)

• Call: import fullseye as fs; fs.ledger.insertion_failure_table() -> 'list' (to call the implementation directly, import pegfail; pegfail.insertion_failure_table() -> 'list'; from the registry, opsdrive.get("insertion_failure_table"))

Usage

Failure classification table (data): each row = {cls, when (field → set of allowed values, "*" = anything), recovery, basis}.

The basis of each row (basis) is Whitney 1982 (page of the OCW slides) or the geometry of contact formation. The order has no meaning —— at most one row matches a signature (insertion_failure_validate checks every pair). The vocabulary of recovery primitives is insertion_recovery_primitive.

Table (contact / depth band / progress / wedge / jam / offset → class → recovery):

• none|plate, above|mouth, stalled, *, *, large → missed_hole → lift_recentre (the tip cannot ride onto the chamfer, |ε₀| > W + c_r, derivation (4))

• chamfer, above|mouth, *, *, *, small → chamfer_sliding → continue (passing the chamfer is a normal process, OCW p.26)

• plate, above|mouth, advancing, *, *, * → nominal → continue (touched the plate but still advancing = transient of a soft contact)

• chamfer|one_point|two_point|floor, *, *, *, *, large → wrong_hole → lift_reapproach (there is contact, but it is W + c_r or more away from the fixture's target hole)

• one_point, mouth|hole, advancing, *, *, small → nominal → continue (advancing in one-point contact, p.26)

• two_point, hole, advancing, *, *, small → nominal → continue (advancing in two-point contact = inside the parallelogram, p.34)

• two_point, hole, stalled, over, *, small → wedging → retract_reduce_tilt (θ > c/μ, p.28)

• two_point, hole, stalled, below, outside, small → jamming → steer_force (force ratio outside the parallelogram, p.34)

• one_point, mouth|hole, stalled, *, outside, small → jamming → steer_force (friction limit of one-point contact |F_x/F_z| > 1/μ = vertical edge)

• floor, hole, *, *, *, small → blocked_hole → lift_abort (hit something hard before reaching the bottom)

• floor, bottom, *, *, *, small → seated → stop (bottomed out = done)

• none, *, advancing, *, *, * → nominal → continue (descending in the air)

Non-matching examples (deliberately unknown): plate·stalled·small (resting on the plate and stopping inside the chamfer is geometrically impossible = a measurement contradiction), two_point·stalled·below·inside (a stall where Whitney says it should slide = outside the model), none·stalled·small (stopped without pushing).

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• poc_peg_failure_recovery — py -3.11 examples/poc_peg_failure_recovery.py

Ops the type connects to (they accept table as input)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

Same category (pegfail)

insertion_failure_validate · insertion_signature · insertion_failure_classify · insertion_recovery_primitive · jamming_parallelogram_planar · jamming_force_check · wedging_risk · insertion_stall_detect


*Provenance: pegfail.py — DRIVE operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.