puck_detect — DRIVE puck op

• 데이터 종류: image2d × table → any

• 호출: import fullseye as fs; fs.ledger.puck_detect(frame, cam: 'dict', *, mode: 'str' = 'dark', thresh: 'float' = 0.85, radius_tol: 'float' = 0.5, color=None, color_tol: 'float' = 0.25)(구현을 직접 호출하려면 import puck; puck.puck_detect(frame, cam: 'dict', *, mode: 'str' = 'dark', thresh: 'float' = 0.85, radius_tol: 'float' = 0.5, color=None, color_tol: 'float' = 0.25), 원장에서 가져오려면 opsdrive.get("puck_detect"))

사용법

balltrack.ball_detect의 facade: 바로 위에서 본 프레임에서 원반을 1개 찾아 호모그래피로 테이블 평면 (x, y) [m]에 옮깁니다.

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

mode = "dark"(白い台に暗いパック、合成)/ "color"・"chroma"(色で、MuJoCo の赤いパック)。thresh は台の値(0.92)の少し下に置く: ball_detect の重みは (thresh − 画素値) なので、しきい値が台に近いほど重み ∝ 被覆率で重心が面積重心に一致する。中間の 0.5 では縁の画素が切れて位相依存の偏りが出る(実測 2026-10-04、r = 6.3 px:

thresh 0.5 → 最大 0.08 px / 0.7 → 0.03 / 0.85 → 0.005、雑音 σ 0.01 でも 0.014)。半径が期待(puck_radius·px_per_m)の (1 ± radius_tol) 倍から外れる塊は捨てる。返り値 {"col","row","radius","fill","x","y"} か、見つからなければ None(fail-closed)。知らない mode は ValueError。

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

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• poc_air_hockey_intercept — py -3.11 examples/poc_air_hockey_intercept.py

타입이 이어지는 다음 연산자(any 를 입력으로 받는 것)

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

같은 카테고리(puck)

puck_table · puck_wall_bounce · puck_slide_predict · puck_state_at · puck_crossing_point · puck_mirror_path · puck_stop_distance · puck_camera


*Provenance: puck.py — DRIVE 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

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