catch_plan_ballistic — DRIVE kendama op

• 数据种类:table → any

• 调用: import fullseye as fs; fs.ledger.catch_plan_ballistic(kp: 'dict', *, v_max: 'float' = 2.0, a_max: 'float' = 20.0, g: 'float' = None, v_target: 'float' = 0.5, v_rel_max: 'float' = 1.0, n_planes: 'int' = 12, plane_step: 'float' = 0.02, clearance: 'bool' = False, margin: 'float' = 0.002)(要直接调用实现,import kendama; kendama.catch_plan_ballistic(kp: 'dict', *, v_max: 'float' = 2.0, a_max: 'float' = 20.0, g: 'float' = None, v_target: 'float' = 0.5, v_rel_max: 'float' = 1.0, n_planes: 'int' = 12, plane_step: 'float' = 0.02, clearance: 'bool' = False, margin: 'float' = 0.002);从台账取用则 opsdrive.get("catch_plan_ballistic"))

用法

由松弛球的 (p, v) 用抛物线闭式求出皿的到达点的计划。返回 plan(t, p, v, cup_state) → dict。

接球判定发生在"球以相对速度 ≤ v_rel_max 向下进入皿窗口上端(边缘面 + h_c + 1.5 r_b)"的瞬间, 因此选择球以速度 v_target 到达窗口上端的平面: 由顶点 z_a = z + v_z²/(2g) 得 z_c = z_a − (h_c + 1.5 r_b) − v_target²/(2g)。到达时刻为 z + v_z τ − ½ g τ² = z_c + h_c + 1.5 r_b 的较晚的根(下降段)τ = (v_z + √(v_z² − 2g(z_c + h_c + 1.5 r_b − z)))/g, 目标 xy = (x + v_x τ, y + v_y τ)。若皿以 bang-bang 方式在 τ 之前到不了(闭式移动时间: 从静止起为 2√(d/a) 或 d/v + v/a,若正在运动则计入当前速度),则将平面每次下降 plane_step,最多搜索 n_planes 层(越往下时间越多, 到达速度也越大)。若所有平面都来不及,则 返回最上层 并给出 feasible=False(押注到达速度最小的平面。"退到最下层"会在到达前 τ → 0 而必然判为不可行,皿下沉 20 cm 导致掉球 —— 经测量后弃用)。

返回值 {"target" (皿の中心), "t_hit", "z_plane", "v_ball_hit", "speed_hit", "feasible", "travel", "apex"}。clearance=True: 在球下端高出边缘面(+ margin)的时刻 τ_up 之前,不横向移动皿(只将高度移到平面)—— 大皿边缘是剑玉的最高处,因此只要球高于边缘面,xy 在哪里都不会碰撞。能否赶上按 τ − τ_up 判断, 球不越过边缘面的平面为不可行。返回值中增加 "landing"(落点 = 最终目标)和 "wait"(τ_up,0 = 不等待)。限制(如实说明): 皿在目标处静止等待(到达时的相对速度 = 球的速度)。对来不及的平面"配合球下降皿"的速度匹配未实现 —— 依赖 v_rel_max。忽略阻力(60 mm 的球飞行 ≤ 0.5 s 仅偏差几 mm,且每 step 重新规划,因此会消除)。

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

参考(示例数据、文献)

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

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

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

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

• gallery_drive_kendama_racket — py -3.11 examples/gallery_drive_kendama_racket.py

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

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

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