kendama op• Data kinds: table → any
• Call: import fullseye as fs; fs.ledger.catch_plan_staged(kp: 'dict', *, v_max: 'float' = 2.0, a_max: 'float' = 20.0, g: 'float' = None, margin: 'float' = 0.005, absorb_time: 'float' = None, absorb_depth: 'float' = 0.02) (implementation को सीधे call करना हो तो import kendama; kendama.catch_plan_staged(kp: 'dict', *, v_max: 'float' = 2.0, a_max: 'float' = 20.0, g: 'float' = None, margin: 'float' = 0.005, absorb_time: 'float' = None, absorb_depth: 'float' = 0.02), registry से लेना हो तो opsdrive.get("catch_plan_staged"))
स्पष्ट stages वाला catch control (बड़े cup, छोटे cup, मध्य cup और candle के लिए वही plan: cup की दिशा kp की trick pose से)। return value plan(t, p, v, cup_state) → dict (kendama_simulate का catch_plan)।
चरण (मनुष्य की युक्ति "घुटनों से सीधे ऊपर खींचो, धागा ढीला होने के बाद कप को गेंद के ठीक नीचे क्षैतिज रूप से ले जाओ, उतरते समय नीचे करके झटका सोखो (लपकने मत जाओ, प्रतीक्षा करो)" की नकल):
0. lift / wait (kendama_simulate की ओर): ऊपर झुलाने के दौरान और ढीला होने से पहले योजना नहीं बुलाई जाती = ढीला होने के बाद ही चलाया जाता है।
1. hold: जब तक गेंद का निचला सिरा केंडामा के सबसे ऊँचे भाग (हाथ + kp["top_offset"], + margin) से ऊपर न निकले, कप नहीं हिलाया जाता (ken गेंद को धक्का नहीं दे सकता, इसलिए ऊपर आती गेंद की ओर ken नहीं ले जाया जाता। यदि प्रक्षेपपथ में गेंद वहाँ तक न चढ़े तो hold ही रहता है = पकड़ा नहीं जाता)।
2. carry: कप को वर्तमान ऊँचाई पर ही क्षैतिज रूप से उस बिंदु के ठीक नीचे ले जाया जाता है जहाँ गेंद किनारे पर टिकेगी: उस समय τ पर जब गेंद का केंद्र "कप का केंद्र + h_c·अक्ष" तक उतरता है (z(τ) = कप की ऊँचाई + h_c·a_z का बाद वाला मूल = शीर्ष पार करके उतरते हुए), गेंद के xy से h_c·(a_x, a_y) घटाया गया बिंदु।
3. absorb: उतरने से absorb_time (डिफ़ॉल्ट √(absorb_depth / a_max) = bang-bang से नीचे करने की गति के मुड़ने का समय) पहले से लक्ष्य को absorb_depth नीचे किया जाता है: उतरने के क्षण कप नीचे की ओर अधिकतम गति √(a_max·absorb_depth) (20 m/s², 2 cm पर 0.63 m/s) से चल रहा होता है = सापेक्ष गति घटती है। absorb_time लंबा लेने पर कप उतरने से पहले पूरा नीचे जाकर रुक जाता है, और गेंद उतनी गहरी गिरकर तेज़ हो जाती है (0.06 s पर सभी 4 तकनीकों में गेंद किनारे से उछल गई — मापकर अस्वीकार किया)।
रिटर्न मान {"target" (皿の中心の目標), "stage", "landing" (玉が縁に乗る点の真下の皿の中心), "t_land", "wait" (hold の残り), "feasible", "apex", "travel"}। जिस प्रक्षेपपथ का शीर्ष किनारे पर टिकने की ऊँचाई तक नहीं पहुँचता, वह feasible=False के साथ hold रहता है। सीमाएँ (ईमानदारी से): कप की मुद्रा प्रति तकनीक स्थिर है (कलाई घुमाकर गेंद का स्वागत नहीं करता), कर्षण भविष्यवाणी में शामिल नहीं (हर बार अनुभूति से नए सिरे से)।
खाली इनपुट (kp एक खाली dict) पर ValueError उठता है।
• 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_kendama — py -3.11 examples/poc_kendama.py
any को input के रूप में लेते हैं)course_crank · course_s_curve · course_turnaround · course_slope · course_intersection · course_parallel_parking · course_crossing · course_road
kendama)kendama_params · elliptic_k_agm · pendulum_period_exact · pendulum_launch_speed · pendulum_rod_simulate · tether_tension_fixed · tether_slack_angle · swing_up_plan
*Provenance: kendama.py — DRIVE operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.