kendama op• 데이터 종류: 없음 → table(인자만으로 정해지는 연산자 —— 이미지나 데이터 입력을 받지 않습니다)
• 호출: import fullseye as fs; fs.ledger.kendama_params(preset: 'str' = 'jka_16_2', *, trick: 'str' = 'ozara', ball_radius: 'float' = None, mass: 'float' = 0.075, string: 'float' = 0.39, cup_radius_big: 'float' = None, cup_depth: 'float' = None, ken_length: 'float' = None, width: 'float' = None, rho: 'float' = 1.2, cd=0.4, cup_offset=None, tie_offset=None, cup_axis=None, g: 'float' = 9.81) -> 'dict'(구현을 직접 호출하려면 import kendama; kendama.kendama_params(preset: 'str' = 'jka_16_2', *, trick: 'str' = 'ozara', ball_radius: 'float' = None, mass: 'float' = 0.075, string: 'float' = 0.39, cup_radius_big: 'float' = None, cup_depth: 'float' = None, ken_length: 'float' = None, width: 'float' = None, rho: 'float' = 1.2, cd=0.4, cup_offset=None, tie_offset=None, cup_axis=None, g: 'float' = 9.81) -> 'dict', 원장에서 가져오려면 opsdrive.get("kendama_params"))
> 이 연산자의 설명은 아직 번역이 없습니다. 원문을 그대로 싣습니다.
けん玉の表。既定 = `preset="jka_16_2"`(玉 60 mm、横幅 70 mm、全長 180 mm は日本けん玉協会の公表値、けんの高さ 160 mm と
皿 42 / 38 / 35 mm はユーザー提供の JKA 16-2 型の説明(一次資料は未確認))。`"recommended_large_cup"` = 大皿 49 mm・穴 24 mm。
鍵: `ball_radius 0.030、string 0.39(糸 = 推奨 38〜40 cm)、pendulum_length` = 糸 + 玉の半径(結び目 → 玉の中心、
玉の糸穴は大きな穴の反対側と置く)、`cup_radius_big / cup_radius_base / cup_radius_small(縁の半径)、cup_depth`
(大皿の深さ。既定 = 縁に乗った玉の下端の沈み r_b − √(r_b² − r_c²) + 1.5 mm = 玉が底に触れない深さ、と置く仮定)、`ken_length(けんの高さ = けん先 → 中皿の縁、160 mm)、width`(大皿の縁 〜 小皿の縁、70 mm)、
`hole_radius / hole_depth(玉の大きな穴。深さ = けん + 玉 − 全長 = 40 mm)、total_length`(組み立ての全長 = けん + 玉 − 穴の深さ)、
`cross_radius / ken_radius / spike_length / cross_from_tip(仮定)、mass(玉、仮定 75 g)・ken_mass`(仮定 70 g)。
技 `trick(:data:KENDAMA_TRICKS`: "ozara" 大皿 / "kozara" 小皿 / "chuzara" 中皿 / "ろうそく" = "rousoku")が姿勢を決める:
`R_ken(けんの局所座標 → 世界: 局所はけん先 +x・大皿 +z・原点 = 皿胴の中心)、grip`(持つ所、局所)、受ける皿
`catch_cup("big" / "small" / "base")。そこから手元(= 持つ所)に対する cup_offset(受ける皿の縁の中心)、cup_axis`
(受ける皿の軸、世界)、`tie_offset(皿胴の糸穴: 局所 (0, −cross_radius, 0))、top_offset`(けん玉のいちばん高い所)、
`cup_radius`(受ける皿の縁の半径)を出す。けんと皿胴は 1 つの剛体(姿勢は技ごとに固定、手元は並進)。
`cup_offset / tie_offset / cup_axis` を渡すとその値で上書き(0 を渡すと点のけん = 支点 = 皿 = 手元: 定理の門)。
`catch_window = 0.003 m: :func:kendama_simulate` は玉の中心が「縁に乗る高さ h_c から 3 mm 以内」に下りてきた瞬間を捕球とする
(玉が縁に触れた = 着地。縁から 1.5 r_b 上の窓に入っただけでは捕らない: 頂点が窓の中だと頂点で「捕れて」しまう —— 測って退けた)。
`rho/cd` = 空気密度・抗力係数(rho = 0 で真空: 定理の門はこれで走らせる)。
fail-closed: 未知の preset、寸法 ≤ 0、皿の縁 ≥ 玉(縁で受けられない = けん玉ではない)、横幅 < 大皿の直径、糸 ≤ 玉の半径、
穴の深さが (0, 玉の直径) の外、けん先の太さが穴に入らない、は ValueError。
返り値には派生量 `"cup_rest_height" = √(r_b² − r_c²)(受ける皿の縁に乗った玉の中心の高さ)、"bp"(:func:ballistics.ball_params`、中実球)。
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• poc_kendama — py -3.11 examples/poc_kendama.py
table 를 입력으로 받는 것)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
kendama)elliptic_k_agm · pendulum_period_exact · pendulum_launch_speed · pendulum_rod_simulate · tether_tension_fixed · tether_slack_angle · swing_up_plan · swing_up_apex
*Provenance: kendama.py — DRIVE 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.