torque_decompose — DRIVE 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' (implementation को सीधे call करना हो तो 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', registry से लेना हो तो opsdrive.get("torque_decompose"))

उपयोग

marker field को 3 यांत्रिक मात्राओं में बाँटता है: translation = window के अंदर औसत displacement (shear Q, एक-दिशीय घटक), omega = rigid rotation कोण (rigid_rotation_fit) → torsion Mz (a आवश्यक; omega_curl = औसत curl/2 संदर्भ के लिए), D = divergence dipole (area-weighted) → tilt M1 = D / coef (coef default = half-space का closed form −(1−2ν)/(2G), असली hardware पर calibrated मान दें), tau = (−M1_y, M1_x)। औसत displacement घटाने पर divergence और curl नहीं बदलते (स्थिरांक का derivative 0), इसलिए क्रम से फ़र्क नहीं पड़ता। window (cx, cy, R) contact वृत्त तक सीमित है (half-space में pure shear पूरी window पर divergence dipole बनाता है, module docstring देखें)। radius = divergence के लिए पड़ोस त्रिज्या (आवश्यक)।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

ねじり: 無滑りの関係(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, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_tactile_dipole_torque — py -3.11 examples/poc_tactile_dipole_torque.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

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

इसी category के (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. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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