ball op• Data kinds: signal × points × table → table
• Call: import fullseye as fs; fs.ledger.fit_spin(t, p, bp: 'dict', *, omega0=None, omega_max: 'float' = 1000.0, iters: 'int' = 20, dt: 'float' = 0.001) -> 'dict' (implementation को सीधे call करना हो तो import ballistics; ballistics.fit_spin(t, p, bp: 'dict', *, omega0=None, omega_max: 'float' = 1000.0, iters: 'int' = 20, dt: 'float' = 0.001) -> 'dict', registry से लेना हो तो opsdrive.get("fit_spin"))
मुड़ने के ढंग से spin पढ़ता है: trajectory (t_i, p_i) (बिना उछाल वाला अंतराल) पर drag + Magnus के गति समीकरणों को (p₀, v₀, ω) के 9 parameters से Gauss–Newton द्वारा fit करता है (aerodynamic coefficients bp के मान = ज्ञात माने जाते हैं)।
मैग्नस बल ω × v है, इसलिए ω का v के समांतर घटक कोई बल उत्पन्न नहीं करता और प्रक्षेप-पथ से निर्धारित नहीं होता (गति की दिशा को अक्ष मानकर घूर्णन = साइडस्पिन का एक भाग)। उड़ान के दौरान v की दिशा बदलती है, इसलिए यह पूर्णतः अनिर्धार्य नहीं, पर कमज़ोर रूप से ही निर्धारित है। लौटाए गए मान में omega_perp = प्रारंभिक वेग के लंबवत घटक (पढ़ने योग्य भाग), cond = जैकोबियन की प्रतिबंध संख्या, omega_axial_sensitivity = समांतर घटक को 1 rad/s हिलाने पर पथ में परिवर्तन का rms [m] (जितना छोटा, उतना कम पढ़ने योग्य)। लौटाया गया मान {"p0", "v0", "omega", "omega_perp", "rms", "cond", "omega_axial_sensitivity", "iters", "t0"}। वास्तविक पथ देने पर 1e-3 rad/s तक वापस मिलता है (गेट)। यह पैटर्न से मापे गए कोणीय वेग (balltrack.spin_from_markers) से स्वतंत्र दूसरा मापन-तरीका है।
omega_max [rad/s] = घूर्णन के परिमाण की ऊपरी सीमा (हर चरण के बाद इस गोले पर प्रक्षेपित)। ★स्पिन-अनुपात मॉडल C_L = 1/(2 + 1/S) बड़े घूर्णन पर 0.5 पर संतृप्त हो जाता है, इसलिए बल को अपर्याप्त मानने वाला फ़िट |ω| को असीमित रूप से बड़ा कर सकता है (परिमाण निर्धारित नहीं होता)। छोटे और शोर-प्रधान पथ पर यह 1e5 rad/s तक भाग गया (2026-09-30)। डिफ़ॉल्ट 1000 rad/s ≈ 160 चक्कर/सेकंड (ज़ोरदार प्रहार की ऊपरी सीमा से ऊपर)। लौटाए गए मान में at_bound True हो तो यह सीमा से चिपका है = परिमाण पढ़ा नहीं जा सका।
• 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_table_tennis_spin — py -3.11 examples/poc_table_tennis_spin.py
table को input के रूप में लेते हैं)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
ball)ball_params · impact_params · flight_vacuum · flight_ode · flight_simulate · flight_state_at · magnus_lift_coefficient · drag_coefficient_sphere
*Provenance: ballistics.py — DRIVE operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.