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.