cuttouch op• Data kinds: table × table × table × scalar → table
• Call: import fullseye as fs; fs.ledger.knife_load_from_pads(read_R: 'dict', read_L: 'dict', pad: 'dict', Lz: 'float', edge_slope: 'float' = 0.0, torsion_model: 'str' = 'partial_slip', tare=None, v_min: 'float' = 0.05, na: 'int' = 64) -> 'dict' (to call the implementation directly, import cuttouch; cuttouch.knife_load_from_pads(read_R: 'dict', read_L: 'dict', pad: 'dict', Lz: 'float', edge_slope: 'float' = 0.0, torsion_model: 'str' = 'partial_slip', tare=None, v_min: 'float' = 0.05, na: 'int' = 64) -> 'dict'; from the registry, opsdrive.get("knife_load_from_pads"))
Readings of 2 pads (pegtactile.pad_tactile_read) → the push V, pull H and moment M_x the blade receives from the food item, and the blade contact position Ly.
Lz [m]: height from the grasp point to the edge (if the blade is tilted, the value Lz₀ directly below the grasp point; with edge_slope = tangent of the edge's tilt, Ly = (M_x + Lz₀ H)/(V + s H)). torsion_model: "partial_slip" (default —— corrects the torsion read via the no-slip relation using the partial-slip numerical solution, module header) / "no_slip" (keeps the no-slip reading = the convention of pegtactile 0.4.0, for comparison). Even if the reading is the default of pegtactile.pad_tactile_read (torsion already corrected for partial slip and the no-slip torsion_no_slip), this op starts from the no-slip value, so there is no double correction. tare: the two readings of one in-air frame (read_R, read_L) (or a previous return / a pad wrench {"F": (3,), "M": (3,)}) —— subtracts the knife's weight (the in-air frame itself has V = 0 so Ly is undetermined, and it cannot be passed to this op on its own).
Returns: V, H, Mx (food → blade, gripper frame), Ly, xi (= H/V), per pad torsion (corrected value), torsion_read, torsion_ratio, slip_ratio (shear |q|/μP), c_over_a, combined_margin = 1 − max(shear ratio + torsion ratio) (sufficient condition), readable (on both pads the stick circle contains the core of the reading), Ly_range_full_slip, Ly_range_readable (the range of Ly up to full slip / up to becoming unreadable when the contact position moves with the current V, H and grip force = the limit of the handle length that can be held), pad_wrench (pad → blade, before tare), torsion_model. Raises ValueError: corrupt readings, V ≤ v_min (the blade is not pressing the food = Ly undetermined), misspelling, non-finite Lz.
• 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.
• poc_knife_tactile_toughness — py -3.11 examples/poc_knife_tactile_toughness.py
table as input)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
cuttouch)torsion_partial_slip · toughness_from_pads
*Provenance: cuttouch.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.