catch_success_rate — DRIVE kendama op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.catch_success_rate(kp: 'dict', *, n: 'int' = 20, seed: 'int' = 0, noise_pos: 'float' = 0.0, noise_vel: 'float' = 0.0, jitter_pos: 'float' = 0.01, jitter_vel: 'float' = 0.05, lift: 'float' = None, T_lift: 'float' = 0.15, kind: 'str' = 'bang', t_end: 'float' = 1.5, dt: 'float' = 0.001, v_max: 'float' = 2.0, a_max: 'float' = 20.0, v_rel_max: 'float' = 1.0, v_target: 'float' = 0.5, origin=(0.0, 0.0, 0.0), perceiver_factory=None, dodge=(0.0, -0.1, 0.0), clearance: 'bool' = True, keep_runs: 'bool' = False, planner: 'str' = 'staged', contact=None, absorb: 'bool' = True) -> 'dict' (implementation को सीधे call करना हो तो import kendama; kendama.catch_success_rate(kp: 'dict', *, n: 'int' = 20, seed: 'int' = 0, noise_pos: 'float' = 0.0, noise_vel: 'float' = 0.0, jitter_pos: 'float' = 0.01, jitter_vel: 'float' = 0.05, lift: 'float' = None, T_lift: 'float' = 0.15, kind: 'str' = 'bang', t_end: 'float' = 1.5, dt: 'float' = 0.001, v_max: 'float' = 2.0, a_max: 'float' = 20.0, v_rel_max: 'float' = 1.0, v_target: 'float' = 0.5, origin=(0.0, 0.0, 0.0), perceiver_factory=None, dodge=(0.0, -0.1, 0.0), clearance: 'bool' = True, keep_runs: 'bool' = False, planner: 'str' = 'staged', contact=None, absorb: 'bool' = True) -> 'dict', registry से लेना हो तो opsdrive.get("catch_success_rate"))

उपयोग

बड़े cup की सफलता दर: प्रारंभिक state को n बार बिखेरता है (गेंद pivot (cross-piece का डोरी वाला छेद) से L नीचे लटकी, बगल में σ = jitter_pos और velocity पर σ = jitter_vel (tangential component) के Gaussian perturbations के साथ), swing_up_plan (हाथ का शुरुआती बिंदु origin) से ऊपर झुलाता है, और catch_plan_ballistic से cup ले जाता है।

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

計画: planner="staged"(既定、catch_plan_staged: hold → carry → absorb、absorb=False で着地で下げない)か "plane"(catch_plan_ballistic、clearance つき)。lift 既定 None = swing_up_lift(技ごとに頂点が皿の h_c + 0.9 r_b 上)。contact(hand, p) → 隙間 を渡すとけん玉に触れた試行は "hit_ken" で失敗。

知覚: 既定は noisy_perceiver(noise_pos [m]、noise_vel [m/s]; 0 なら真値)。perceiver_factory(i) → perceive を渡すとそれを使う(試行 i ごとに新しい知覚: kendamaworld.camera_perceiver で画像だけから予測する閉ループ)。初期状態の揺らぎは知覚によらず seed で決まる(同じ seed なら真値と画像の試行が対になる)。返り値 {"rate", "n", "caught_list", "mean_lateral", "catch_times", "end_reasons", "laterals", "starts"} (mean_lateral = 捕った試行の捕球時の横ずれの平均、無ければ nan。starts = 各試行の (p0, v0))。dodge / clearance は swing_up_plan / catch_plan_ballistic へ(既定 = 手元を糸穴の側(−y)へ 10 cm 逃がし、玉が大皿の縁より上に出てから

皿を戻す: 玉がけん玉を突き抜けない構え。逃がさない (0, 0, 0)・False だと 20 試行すべてで玉が皿胴を突き抜けた —— 測って退けた。+y へ逃がすとカメラ 2 から見てけんが玉の手前に来て玉を隠し、画像の予測の横ずれが 0.14 → 2.8 mm に増えた)。keep_runs=True で各試行の kendama_simulate の返り値と知覚を "runs" / "perceivers" に残す。n ≤ 0 は ValueError。

संदर्भ (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_kendama — py -3.11 examples/poc_kendama.py

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

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

इसी category के (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.