tactorque op• Data kinds: matrix × matrix × scalar × scalar × scalar → table
• Call: import fullseye as fs; fs.ledger.torque_decompose(pts, u, area: 'float', G: 'float', nu: 'float', a: 'float | None' = None, window=None, radius: 'float | None' = None, coef: 'float | None' = None, P: 'float | None' = None, mu: 'float | None' = None, torsion_model: 'str' = 'partial_slip') -> 'dict' (to call the implementation directly, import tactorque; tactorque.torque_decompose(pts, u, area: 'float', G: 'float', nu: 'float', a: 'float | None' = None, window=None, radius: 'float | None' = None, coef: 'float | None' = None, P: 'float | None' = None, mu: 'float | None' = None, torsion_model: 'str' = 'partial_slip') -> 'dict'; from the registry, opsdrive.get("torque_decompose"))
Splits the marker field into 3 mechanical quantities: translation = mean displacement in the window (shear Q, unidirectional component), omega = rigid rotation angle (rigid_rotation_fit) → torsion Mz (needs a; omega_curl = mean curl/2 for reference), D = divergence dipole (area-weighted) → tilt M1 = D / coef (coef defaults to the half-space closed form −(1−2ν)/(2G); on real hardware pass the calibrated value), tau = (−M1_y, M1_x). Divergence and curl do not change when the mean displacement is subtracted (the derivative of a constant is 0), so the order does not matter. The window (cx, cy, R) is limited to the contact circle (because in a half-space pure shear creates a divergence dipole over the whole window; see the module docstring). radius = neighborhood radius for the divergence (required).
> The detailed description below is the original text — the summary and the headings are translated.
ねじり: 無滑りの関係(Reissner–Sagoci)M = (16Ga³/3)ω を Mz_no_slip に残す。★torsion_model="partial_slip"(既定、2026-10-06 から) では、Hertz 接触(法線力 P、摩擦 mu、接触半径 a)の部分滑りの数値解(cuttouch.torsion_partial_slip の contact と from_no_slip_read)で直した値を Mz に返す —— Hertz 接触のねじりは縁から必ず滑るので、無滑りの関係のままだと M を過大に読む(全滑りまでの比 0.5 で +33 %、0.8 で +85 %)。Mz_ratio(全滑りまでの比)、Mz_c_over_a(固着円の半径 / a)、Mz_readable(全滑りでなく、固着円が当てはめの窓の半径を含む —— 偽なら数は返すが当てにならない。窓が無ければ偽)も返す。a を渡して P か mu が無いと補正できないので ValueError(黙って無滑りの値を返さない)。"no_slip" は 0.4.0 までの値(Mz = Mz_no_slip)—— 平頭押し込み子(全滑りの 8/(3π) 倍まで無滑りが厳密)や接着した円盤の場合。Raises ValueError: area, G ≤ 0、ν が [0, 0.5] の外、点の形、radius 無し、窓内の点が 3 未満、torsion_model の綴り違い、partial_slip で a があるのに P・mu が正の有限でない。
• 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.