catch_success_rate — DRIVE kendama op

• 数据种类:table → table

• 调用: 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'(要直接调用实现,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';从台账取用则 opsdrive.get("catch_success_rate"))

用法

大皿的成功率:将初始状态散布 n 次(球挂在支点(皿胴的穿绳孔)下方 L 处,横向加 σ = jitter_pos、速度加 σ = jitter_vel(切向分量)的高斯扰动),用 swing_up_plan(手端出发点 origin)上摆,用 catch_plan_ballistic 移动皿。

计划: 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。

空输入(kp 为空 dict)会引发 ValueError。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者、年份)与用途见上面的族使用指南。

可运行的示例(实际调用该算子并已验证的样例)

• poc_kendama — py -3.11 examples/poc_kendama.py

类型可衔接的下一个算子(可接受 table 作为输入)

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

同类别(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 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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