pegsym op• Data kinds: scalar × scalar × scalar → table
• Call: import fullseye as fs; fs.ledger.rotation_window(n: 'int', apothem: 'float', clearance: 'float', chamfer: 'float' = 0.0, peg_vertices=None, hole_vertices=None, tol: 'float' = 1e-10, mu: 'float | None' = None) -> 'dict' (implementation को सीधे call करना हो तो import pegsym; pegsym.rotation_window(n: 'int', apothem: 'float', clearance: 'float', chamfer: 'float' = 0.0, peg_vertices=None, hole_vertices=None, tol: 'float' = 1e-10, mu: 'float | None' = None) -> 'dict', registry से लेना हो तो opsdrive.get("rotation_window"))
rotation window जिसमें peg छेद में (chamfer हो तो उसके मुँह में) प्रवेश करता है। नियमित n-gon का closed form (व्युत्पन्न): केंद्र मिलाने पर vertex face normal से π/n ∓ φ की दिशा में होते हैं, और सबसे बाहर निकले vertex की normal दिशा में लंबाई a cos(π/n − |φ|) अगर A + δ (+ W) से अधिक न हो तो peg प्रवेश करता है: φ = π/n − arccos(x), x = (A + δ + W) cos(π/n)/A (x ≥ 1 हो तो window पूरी half period π/n भर देती है)। arccos में 1 के पास rounding floor होता है, इसलिए इसे atan2(√(1 − x²), x) के रूप में लिखा जाता है। peg_vertices और hole_vertices देने पर linear program (polygon_fit_check, translation भी मुक्त) पर bisection से धनात्मक और ऋणात्मक दिशा की window भी मापी जाती है (2nd (स्वतंत्र) implementation; keyed shape के लिए केवल यही)। phi_fit (मुँह नहीं, सबसे संकरा भाग), phi_cap (chamfer का मुँह), period = 2π/n, M = ⌈period/(2 phi_cap)⌉ और lp (plus/minus: vertex देने पर, मुँह में प्रवेश वाली window के दोनों छोर = 0 को समाहित करने वाला connected अंतराल; scan half period को 360 step में बाँटता है, छोर bisection से) लौटाता है।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
mu を渡すと摩擦で止まる限界も返す(導出、45° の面取り): 口に載った頂点(面の法線から β = π/n − φ の向き)が面取りを滑り下りるには、ペグが回らなければならない(偶数の n では向かい合う頂点の横向きの力が打ち消し合い、並進しない)。軸まわりのばねが弱いと接触力の軸まわりのモーメントが 0 で釣り合う: 面取りの法線の接線成分 sin β/√2 と、滑りの向き(面の上で下り + 回転)に逆らう摩擦 μ/√(1 + sin²β) が等しい所が境で、回るのは s√(1 + s²) > √2 μ(s = sin β)、すなわち s² > (√(1 + 8μ²) − 1)/2 の時。phi_friction = π/n − β*、phi_eff = max(phi_fit, min(phi_cap, phi_friction))(面取りに頼らず入る分は摩擦に依らない)。六角形(頂点が面の法線に近い)は摩擦で窓が狭まり、三角形・四角形は幾何で決まる —— MuJoCo の試作で確かめた(PoC の --full)。Raises ValueError: n < 1、apothem ≤ 0、clearance < 0、chamfer < 0、mu < 0、頂点を片方だけ渡した。
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।
• poc_peg_symmetry_search — py -3.11 examples/poc_peg_symmetry_search.py
table को input के रूप में लेते हैं)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
pegsym)polygon_peg · polygon_offset · polygon_fit_check · polygon_two_point_depth · polygon_coverage_image · plane_topview · polygon_yaw_read · relative_yaw_from_images
*Provenance: pegsym.py — DRIVE operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.