pegsym op• Data kinds: matrix × matrix × scalar → table
• Call: import fullseye as fs; fs.ledger.polygon_two_point_depth(peg_vertices, hole_vertices, theta: 'float', tilt_dir: 'float' = 0.0, depth_max: 'float' = 0.05, tol: 'float' = 1e-10) -> 'dict' (to call the implementation directly, import pegsym; pegsym.polygon_two_point_depth(peg_vertices, hole_vertices, theta: 'float', tilt_dir: 'float' = 0.0, depth_max: 'float' = 0.05, tol: 'float' = 1e-10) -> 'dict'; from the registry, opsdrive.get("polygon_two_point_depth"))
Exact two-point-contact depth l₂ [m] (from the narrowest part z = 0 to the center of the tip) of a tilted polygonal peg: the part of the peg at z ≤ 0 at depth l is the convex hull of the tip-face vertices and the points where the side ridges cross z = 0. Since the hole is a vertical prism, the peg enters while the horizontal projection of these vertices fits into the hole by translation (polygon_fit_check) and stops fitting as l deepens — that boundary is found by bisection. tilt_dir = horizontal tilt direction [rad] (world frame, the same frame as the peg cross-section). The circle formula for comparison (Whitney; the exact 3-D cylinder formula of pegsim (2R − r(cos θ + sec θ))/tan θ) is returned for the inscribed circle (r = A, R = A + δ) and the circumscribed circle (r = A/cos(π/n), R = (A + δ)/cos(π/n)) (circle_in, circle_out). The small-angle limit for a square tilted about an axis parallel to a face is Eq. (2.28) of Goli et al. 2024, φ = (v − v′)/h, i.e. l₂ tan θ → 2δ (goli_small_angle = 2δ/tan θ). For odd n (triangle) a vertex lies opposite each face, so it is deeper than the inscribed-circle formula in every direction. For even n it matches the inscribed-circle formula in the face-normal direction (1e-11 m for the square). Some combinations go up to 0.03 % beyond the inscribed-circle side (tilt 6°, 15° from the face). Returns l2, circle_in, circle_out and goli_small_angle (δ is the mean difference of apothems, n the number of vertices). Raises ValueError: θ ≤ 0 or ≥ 30°, does not enter even when straight, no two-point contact up to depth_max.
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• The canonical algorithm (author, year) and its uses are named in the family usage guide above.
• poc_peg_symmetry_search — py -3.11 examples/poc_peg_symmetry_search.py
table as 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 · rotation_window · polygon_coverage_image · plane_topview · polygon_yaw_read · relative_yaw_from_images
*Provenance: pegsym.py — DRIVE operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.