swing_up_plan — DRIVE kendama op

• 数据种类:table → any

• 调用: import fullseye as fs; fs.ledger.swing_up_plan(kp: 'dict', *, lift: 'float' = 0.265, T_lift: 'float' = 0.15, kind: 'str' = 'bang', origin=(0.0, 0.0, 0.0), dodge=(0.0, 0.0, 0.0))(要直接调用实现,import kendama; kendama.swing_up_plan(kp: 'dict', *, lift: 'float' = 0.265, T_lift: 'float' = 0.15, kind: 'str' = 'bang', origin=(0.0, 0.0, 0.0), dodge=(0.0, 0.0, 0.0));从台账取用则 opsdrive.get("swing_up_plan"))

用法

手端(皿胴中心;绳的支点和大皿相对它偏移 kp 的 offset 并随之一起运动)的开环轨迹:从 origin 竖直向上以 T_lift 秒提升 lift,之后静止。返回值为函数 t → (3,)(t ≤ 0 时为 origin,t ≥ T_lift 时静止于 origin + lift·ẑ)。

kind="bang": 以 a = 4·lift/T² 加速 T/2,再以 −a 减速 T/2(速度三角形)。kind="trap": 加速、匀速、减速各 T/3 (速度梯形,a = 9·lift/(2T²))。球要上升,减速的加速度必须超过 g(swing_up_apex 以闭式给出答案)。默认 lift = 0.265 m、T = 0.15 s(a = 47 m/s² ≈ 4.8 g,手部最高速度 3.5 m/s)时,球的顶点在大皿边缘上方 4.9 cm (绳的有效长度 0.42 m,大皿边缘在手部上方 35 mm: swing_up_apex)。

dodge (3,)(水平): 进入减速、球离开后(bang: T/2 → T,trap: 2T/3 → T)将手部横向移开 dodge (S 形 bang-bang)。球从皿身绳孔正下方笔直上升,不移开的话会穿过皿身和小皿(物理不求解球与剑玉的碰撞 —— 用 kendamaworld.kendama_clearance 计数)。移开的量由 catch_plan_ballistic 的 clearance 在球升到大皿边缘以上之后收回。

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

参考(示例数据、文献)

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

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

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

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

• poc_kendama — py -3.11 examples/poc_kendama.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_apex


*Provenance: kendama.py — DRIVE 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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