tactorque op• Data kinds: matrix × matrix → table
• Call: import fullseye as fs; fs.ledger.tactile_dipole_moment(pts, u, form: 'str' = 'divergence', origin='midpoint', weight: 'str' = 'area', area: 'float | None' = None, window=None, rho=None, radius: 'float | None' = None) -> 'dict' (to call the implementation directly, import tactorque; tactorque.tactile_dipole_moment(pts, u, form: 'str' = 'divergence', origin='midpoint', weight: 'str' = 'area', area: 'float | None' = None, window=None, rho=None, radius: 'float | None' = None) -> 'dict'; from the registry, opsdrive.get("tactile_dipole_moment"))
Tactile dipole moment D = Σ_i w ρ_i r_i (2 components). form: * "divergence" — paper (arXiv 2404.15626) Eqs. 4–8: ρ_i = (∇·u)_i (pass rho, or marker_divergence via radius). * "norm_cross" — the paper's baseline (Eqs. 10–11, Yamaguchi & Atkeson style): ρ_i = |u_i| (the vector norm in place of the normal force). The tilt component of l_i × f_i is (l_y|u|, −l_x|u|), i.e. D rotated by 90°, so it is returned in the same "1st moment" slot. Under a symmetric tilt after zeroing, |u| is an even function of M, so it is identically 0 (blind to the sign; gate). * "radial" — this module's variant: ρ_i = u_i · r̂_i (radial component). origin: "midpoint" (Eqs. 6–7, midpoint of the positive and negative centroids) / "centre" (mean of pts, the baseline's convention) / (x0, y0). weight: "area" = multiply by the area per 1 point area [m²] (comparable with the closed-form coefficient −(1−2ν)/(2G), unit m³) / "mean" = 1/N (paper). With window = (cx, cy, R) only points within radius R are used (a window that cuts off shear leakage; rationale in the module docstring). Invalid points (nan) are excluded. Returns D (2,), tau_dir = (−D_y, D_x) (direction of Eq. 9, without coefficient), origin, n, rho, form, keep. Raises ValueError: unknown form/origin/weight (misspellings fail closed), shape of pts/u, "area" without area, fewer than 3 usable points.
• 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_tactile_dipole_torque — py -3.11 examples/poc_tactile_dipole_torque.py
table as input)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
tactorque)punch_pressure · punch_surface_uz · hertz_pressure_shifted · ellipse_pressure_shifted · pressure_first_moment · boussinesq_kernel · boussinesq_surface_displacement · surface_divergence_closed_form
*Provenance: tactorque.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.