kendama op• Datenarten: table → any
• Aufruf: import fullseye as fs; fs.ledger.catch_plan_staged(kp: 'dict', *, v_max: 'float' = 2.0, a_max: 'float' = 20.0, g: 'float' = None, margin: 'float' = 0.005, absorb_time: 'float' = None, absorb_depth: 'float' = 0.02) (die Implementierung direkt: import kendama; kendama.catch_plan_staged(kp: 'dict', *, v_max: 'float' = 2.0, a_max: 'float' = 20.0, g: 'float' = None, margin: 'float' = 0.005, absorb_time: 'float' = None, absorb_depth: 'float' = 0.02); aus dem Register: opsdrive.get("catch_plan_staged"))
Fangsteuerung mit expliziten Phasen (derselbe Plan dient für große Schale, kleine Schale, mittlere Schale und Kerze: die Schalenausrichtung stammt aus der Trick-Haltung in kp). Rückgabewert plan(t, p, v, cup_state) → dict (der catch_plan von kendama_simulate).
Stufen (bilden den Kniff des Menschen nach: "mit den Knien senkrecht hochziehen, nachdem die Schnur erschlafft ist, den Teller waagerecht genau unter die Kugel tragen, bei der Landung absenken und den Stoß abfangen (nicht schöpfen, sondern warten)"):
0. lift / wait (auf Seite von kendama_simulate): Während des Hochschwingens und vor dem Erschlaffen wird der Plan nicht aufgerufen = erst nach dem Erschlaffen bewegen.
1. hold: Der Teller wird nicht bewegt, bis die Unterkante der Kugel über den höchsten Punkt des Kendama (Hand + kp["top_offset"], + margin) steigt (der Ken kann die Kugel nicht schieben, daher wird der Ken nicht an die aufsteigende Kugel herangeführt. Bei einer Bahn, auf der die Kugel nicht so hoch steigt, bleibt es bei hold = kein Fangen).
2. carry: Der Teller wird in der aktuellen Höhe waagerecht genau unter den Punkt getragen, an dem die Kugel auf dem Rand landet: der Punkt, der sich aus dem xy der Kugel zum Zeitpunkt τ, zu dem ihr Mittelpunkt auf "Tellermittelpunkt + h_c·Achse" herabsinkt (spätere Wurzel von z(τ) = Tellerhöhe + h_c·a_z = nach dem Scheitel im Abstieg), minus h_c·(a_x, a_y) ergibt.
3. absorb: Ab absorb_time (Standard √(absorb_depth / a_max) = Umkehrzeit der bang-bang-Absenkbewegung) vor der Landung wird das Ziel um absorb_depth abgesenkt: Im Moment der Landung bewegt sich der Teller mit Höchstgeschwindigkeit √(a_max·absorb_depth) abwärts (0.63 m/s bei 20 m/s² und 2 cm) = die relative Geschwindigkeit wird verringert. Wird absorb_time lang gewählt, ist der Teller vor der Landung bereits ganz abgesenkt und steht, und die Kugel fällt entsprechend tiefer und wird schneller (bei 0.06 s prallte sie bei allen 4 Tricks vom Rand ab — gemessen und verworfen).
Rückgabe {"target" (皿の中心の目標), "stage", "landing" (玉が縁に乗る点の真下の皿の中心), "t_land", "wait" (hold の残り), "feasible", "apex", "travel"}. Bahnen, deren Scheitel die Höhe zum Landen auf dem Rand nicht erreicht, ergeben feasible=False mit hold. Einschränkungen (ehrlich): Die Tellerlage ist je Trick fest (das Handgelenk wird nicht gedreht, um die Kugel zu empfangen); Luftwiderstand geht nicht in die Vorhersage ein (jedes Mal neu aus der Wahrnehmung).
Leere Eingabe (kp ist ein leeres dict) löst ValueError aus.
• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).
• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• poc_kendama — py -3.11 examples/poc_kendama.py
any als Eingabe)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 Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.