pegtactile op• 데이터 종류: table × signal × signal × signal × signal × signal → table
• 호출: import fullseye as fs; fs.ledger.contact_state_from_wrench(kp, F, M_g, g, tip, axis, f_air: 'float' = 0.05, tau: 'float' = 0.35, tol: 'float' = 8e-05, geometry: 'bool' = True, tol_l: 'float' = 5e-05) -> 'dict'(구현을 직접 호출하려면 import pegtactile; pegtactile.contact_state_from_wrench(kp, F, M_g, g, tip, axis, f_air: 'float' = 0.05, tau: 'float' = 0.35, tol: 'float' = 8e-05, geometry: 'bool' = True, tol_l: 'float' = 5e-05) -> 'dict', 원장에서 가져오려면 opsdrive.get("contact_state_from_wrench"))
접촉 렌치(페그가 구멍에서 받는 F와 파지점 g 기준 M, 월드 좌표계) → 접촉 상태(학습 없는 규칙).
단일 점 접촉이라면, 그 점 둘레의 모멘트는 0(점에 우력 없음). 기하적으로 닿을 수 있는 후보점 c(contact_candidates)마다의정규화 잔차 e(c) = |M_g − (c − g) × F| / (|F| r) 의 최소가 tau 미만이면 일점(선단의 가장자리에서 깊이 < W 이면 모따기), 어느 후보로도 설명할 수 없고 선단과 몸통 양쪽에 유효한 후보가 있으면 이점, |F| < f_air 이면 무접촉. geometry 이면 Whitney 의 기하를 우선한다: 기울기 θ 에서선단이 최협부로부터 l₂(θ) − tol_l 보다 깊으면 양쪽에 닿을 수밖에 없다(이점을 강제). 쐐기의 경계 θ = c/μ 에서는 선단의 마찰 원뿔의 가장자리가입구의 접촉점을 지나며(입구와 선단을 잇는 선의 기울기 c/θ = μ), 이점의 렌치를 "입구의 일점"과 구별할 수 없다 —— 렌치만의 규칙의 원리적 사각. 반환 state(CONTACT_STATES), e_tip·e_mouth, where("none" / "tip" / "mouth" / "tip+mouth" / "?"), c(닿은 점, 일점일 때), Fmag·depth·forced. Raises ValueError: 벡터가 유한한 3 성분이 아님, tau ≤ 0.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• poc_peg_insertion_tactile — py -3.11 examples/poc_peg_insertion_tactile.py
table 를 입력으로 받는 것)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
pegtactile)pad_params · pad_context · peg_wrench_to_pad_loads · pad_loads_to_peg_wrench · pad_shear_asymmetry · pad_marker_displacement · pad_tactile_frame · pad_tactile_read
*Provenance: pegtactile.py — DRIVE 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.