swing_up_plan — DRIVE kendama op

• Datenarten: table → any

• Aufruf: 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)) (die Implementierung direkt: 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)); aus dem Register: opsdrive.get("swing_up_plan"))

Verwendung

Open-Loop-Trajektorie der Hand (Mitte des Querstücks; der Aufhängepunkt der Schnur und die große Schale sind um die Offsets aus kp versetzt und bewegen sich mit): hebt von origin in T_lift Sekunden um lift senkrecht an und bleibt danach stehen. Rückgabewert ist eine Funktion t → (3,) (origin für t ≤ 0, in Ruhe bei origin + lift·ẑ für t ≥ T_lift).

kind="bang": Beschleunigung a = 4·lift/T² für T/2, Verzögerung −a für T/2 (Geschwindigkeitsdreieck). kind="trap": Beschleunigung, konstante Geschwindigkeit und Verzögerung je T/3 (Geschwindigkeitstrapez, a = 9·lift/(2T²)). Damit die Kugel steigt, muss die Verzögerung g übersteigen (swing_up_apex antwortet in geschlossener Form). Mit den Standardwerten lift = 0,265 m, T = 0,15 s (a = 47 m/s² ≈ 4,8 g, Spitzengeschwindigkeit der Hand 3,5 m/s) liegt der Scheitel der Kugel 4,9 cm über dem Rand der großen Schale (effektive Schnurlänge 0,42 m, Rand der großen Schale 35 mm über der Hand: swing_up_apex).

dodge (3,) (horizontal): Nachdem die Verzögerung begonnen und die Kugel sich gelöst hat (bang: T/2 → T, trap: 2T/3 → T), wird die Hand um dodge seitlich ausgewichen (S-förmiges Bang-Bang). Die Kugel steigt gerade von direkt unterhalb des Schnurlochs im Schalenkörper auf, ohne Ausweichen würde sie also durch Schalenkörper und kleine Schale hindurchgehen (die Physik löst die Kollision zwischen Kugel und Kendama nicht auf —— sie wird mit kendamaworld.kendama_clearance gezählt). Der ausgewichene Betrag wird von clearance in catch_plan_ballistic zurückgenommen, nachdem die Kugel über den Rand der großen Schale gestiegen ist.

Leere Eingabe (kp ist ein leeres dict) löst ValueError aus.

Referenzen (Beispieldaten, Literatur)

• 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.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• poc_kendama — py -3.11 examples/poc_kendama.py

Typkompatible Folge-Operatoren (nehmen any als Eingabe)

course_crank · course_s_curve · course_turnaround · course_slope · course_intersection · course_parallel_parking · course_crossing · course_road

Gleiche Kategorie (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 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.