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 के लिए पड़ोस त्रिज्या (आवश्यक)।
मरोड़: बिना फिसलन वाला संबंध (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 (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 में दिए गए हैं।
• poc_tactile_dipole_torque — py -3.11 examples/poc_tactile_dipole_torque.py
table को 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. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.