catch_success_rate — DRIVE kendama op

• 데이터 종류: table → table

• 호출: import fullseye as fs; fs.ledger.catch_success_rate(kp: 'dict', *, n: 'int' = 20, seed: 'int' = 0, noise_pos: 'float' = 0.0, noise_vel: 'float' = 0.0, jitter_pos: 'float' = 0.01, jitter_vel: 'float' = 0.05, lift: 'float' = None, T_lift: 'float' = 0.15, kind: 'str' = 'bang', t_end: 'float' = 1.5, dt: 'float' = 0.001, v_max: 'float' = 2.0, a_max: 'float' = 20.0, v_rel_max: 'float' = 1.0, v_target: 'float' = 0.5, origin=(0.0, 0.0, 0.0), perceiver_factory=None, dodge=(0.0, -0.1, 0.0), clearance: 'bool' = True, keep_runs: 'bool' = False, planner: 'str' = 'staged', contact=None, absorb: 'bool' = True) -> 'dict'(구현을 직접 호출하려면 import kendama; kendama.catch_success_rate(kp: 'dict', *, n: 'int' = 20, seed: 'int' = 0, noise_pos: 'float' = 0.0, noise_vel: 'float' = 0.0, jitter_pos: 'float' = 0.01, jitter_vel: 'float' = 0.05, lift: 'float' = None, T_lift: 'float' = 0.15, kind: 'str' = 'bang', t_end: 'float' = 1.5, dt: 'float' = 0.001, v_max: 'float' = 2.0, a_max: 'float' = 20.0, v_rel_max: 'float' = 1.0, v_target: 'float' = 0.5, origin=(0.0, 0.0, 0.0), perceiver_factory=None, dodge=(0.0, -0.1, 0.0), clearance: 'bool' = True, keep_runs: 'bool' = False, planner: 'str' = 'staged', contact=None, absorb: 'bool' = True) -> 'dict', 원장에서 가져오려면 opsdrive.get("catch_success_rate"))

사용법

큰 접시의 성공률: 초기 상태를 n회 흩뜨려(공은 지점(사라도의 실 구멍)의 L 아래에 매달고, 옆으로 σ = jitter_pos, 속도에 σ = jitter_vel(접선 성분)의 가우스 흔들림), swing_up_plan(손잡이 출발점 origin)으로 스윙업하고, catch_plan_ballistic으로 접시를 옮깁니다.

> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.

計画: planner="staged"(既定、catch_plan_staged: hold → carry → absorb、absorb=False で着地で下げない)か "plane"(catch_plan_ballistic、clearance つき)。lift 既定 None = swing_up_lift(技ごとに頂点が皿の h_c + 0.9 r_b 上)。contact(hand, p) → 隙間 を渡すとけん玉に触れた試行は "hit_ken" で失敗。

知覚: 既定は noisy_perceiver(noise_pos [m]、noise_vel [m/s]; 0 なら真値)。perceiver_factory(i) → perceive を渡すとそれを使う(試行 i ごとに新しい知覚: kendamaworld.camera_perceiver で画像だけから予測する閉ループ)。初期状態の揺らぎは知覚によらず seed で決まる(同じ seed なら真値と画像の試行が対になる)。返り値 {"rate", "n", "caught_list", "mean_lateral", "catch_times", "end_reasons", "laterals", "starts"} (mean_lateral = 捕った試行の捕球時の横ずれの平均、無ければ nan。starts = 各試行の (p0, v0))。dodge / clearance は swing_up_plan / catch_plan_ballistic へ(既定 = 手元を糸穴の側(−y)へ 10 cm 逃がし、玉が大皿の縁より上に出てから

皿を戻す: 玉がけん玉を突き抜けない構え。逃がさない (0, 0, 0)・False だと 20 試行すべてで玉が皿胴を突き抜けた —— 測って退けた。+y へ逃がすとカメラ 2 から見てけんが玉の手前に来て玉を隠し、画像の予測の横ずれが 0.14 → 2.8 mm に増えた)。keep_runs=True で各試行の kendama_simulate の返り値と知覚を "runs" / "perceivers" に残す。n ≤ 0 は ValueError。

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(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)

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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

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