Filter the point cloud range in the X, Y, and Z directions to remove non-target points outside the FoV.
Use the RANSAC algorithm to extract planes and retain the largest plane (with the most inliers).
Rotate the plane point cloud to align with the z=0 plane, forming a 2D point cloud for subsequent boundary point detection and circle fitting.
Detect boundary points in the 2D point cloud by calculating the polar coordinate angles of neighboring points within a 0.03m radius relative to the center point. Sort the angles in ascending or descending order, compute the differences between adjacent angles, and identify the largest angular gap. If the largest gap exceeds π/4, it is considered a boundary point.
Perform Euclidean clustering on the boundary points and attempt 2D circle fitting for each cluster. Filter qualified circles based on fitting error and restore the circle center coordinates from the z=0 plane to the original coordinate system.






