| | |
| | | # 割草机地块障碍物配置文件 |
| | | # 生成时间:2025-12-27T16:33:13.889689700 |
| | | # 生成时间:2025-12-27T22:24:22.132171500 |
| | | # 坐标系:WGS84(度分格式) |
| | | |
| | | # ============ 地块基准站配置 ============ |
| | |
| | | #Dikuai Properties |
| | | #Sat Dec 27 16:33:13 GMT+08:00 2025 |
| | | #Sat Dec 27 22:24:22 GMT+08:00 2025 |
| | | LAND1.intelligentSceneAnalysis=-1 |
| | | LAND1.mowingSafetyDistance=0.53 |
| | | LAND1.landArea=577.12 |
| | |
| | | LAND1.boundaryOriginalXY=-1 |
| | | LAND1.mowingWidth=1.00 |
| | | LAND1.plannedPath=73.87,49.87;50.78,50.04;41.97,22.44;49.61,19.99;51.85,34.26;66.29,36.70;66.29,21.40;78.09,24.75;73.87,49.87;73.96,49.37;50.62,49.54;50.30,48.54;74.12,48.37;74.29,47.37;49.98,47.54;49.66,46.55;74.46,46.37;74.63,45.37;49.34,45.55;49.02,44.55;74.80,44.37;74.96,43.37;48.71,43.55;48.39,42.55;75.13,42.36;75.30,41.36;48.07,41.56;47.75,40.56;75.47,40.36;75.64,39.36;47.43,39.56;47.11,38.56;75.80,38.36;75.97,37.36;46.79,37.57;46.48,36.57;64.75,36.44;66.29,36.43;76.14,36.36;76.31,35.36;66.29,35.43;59.07,35.48;46.16,35.57;45.84,34.57;53.38,34.52;66.29,34.43;76.48,34.35;76.64,33.35;66.29,33.43;51.73,33.53;45.52,33.57;45.20,32.58;51.57,32.53;66.29,32.43;76.81,32.35;76.98,31.35;66.29,31.43;51.42,31.53;44.88,31.58;44.56,30.58;51.26,30.53;66.29,30.43;77.15,30.35;77.32,29.35;66.29,29.43;51.11,29.53;44.25,29.58;43.93,28.59;50.95,28.54;66.29,28.43;77.48,28.35;77.65,27.35;66.29,27.43;50.79,27.54;43.61,27.59;43.29,26.59;50.64,26.54;66.29,26.43;77.82,26.34;77.99,25.34;66.29,25.43;50.48,25.54;42.97,25.59;42.65,24.59;50.32,24.54;66.29,24.43;76.69,24.35;73.25,23.38;66.29,23.43;50.17,23.54;42.33,23.60;42.02,22.60;50.01,22.54;66.29,22.43;69.81,22.40;66.38,21.43;66.29,21.43;49.85,21.54;44.66,21.58;47.85,20.56;49.70,20.54 |
| | | LAND1.updateTime=2025-12-27 16\:33\:13 |
| | | LAND1.updateTime=2025-12-27 22\:24\:22 |
| | | LAND1.baseStationCoordinates=3949.89151752,N,11616.79267501,E |
| | | LAND1.boundaryPointInterval=-1 |
| | | LAND1.createTime=2025-12-23 17\:08\:09 |
| | |
| | | #Current work land selection updated |
| | | #Sat Dec 27 20:42:43 GMT+08:00 2025 |
| | | #Mower Configuration Properties - Updated |
| | | #Sat Dec 27 22:24:35 GMT+08:00 2025 |
| | | appVersion=-1 |
| | | simCardNumber=-1 |
| | | currentWorkLandNumber=LAND1 |
| | |
| | | boundaryLengthVisible=false |
| | | idleTrailDurationSeconds=60 |
| | | handheldMarkerId=1872 |
| | | viewCenterX=-61.89 |
| | | viewCenterY=-39.06 |
| | | viewCenterX=-60.00 |
| | | viewCenterY=-34.94 |
| | | manualBoundaryDrawingMode=false |
| | | mowerId=6258 |
| | | serialPortName=COM15 |
| | | serialAutoConnect=true |
| | | mapScale=17.84 |
| | | mapScale=12.39 |
| | | measurementModeEnabled=false |
| | | firmwareVersion=-1 |
| | | cuttingWidth=200 |
| | |
| | | package lujing; |
| | | |
| | | import java.util.*; |
| | | import java.util.Set; |
| | | import java.util.HashSet; |
| | | |
| | | /** |
| | | * 异形草地路径规划 - 凹多边形兼容优化版 V5.0 |
| | |
| | | } |
| | | |
| | | private static int getEdgeIndex(Point p, List<Point> poly) { |
| | | int bestIdx = -1; |
| | | double minD = Double.MAX_VALUE; |
| | | for (int i = 0; i < poly.size(); i++) { |
| | | Point p1 = poly.get(i); |
| | | Point p2 = poly.get((i + 1) % poly.size()); |
| | | if (distToSegment(p, p1, p2) < 1e-3) return i; |
| | | double d = distToSegment(p, p1, p2); |
| | | if (d < minD) { |
| | | minD = d; |
| | | bestIdx = i; |
| | | } |
| | | return -1; |
| | | } |
| | | // 只要找到最近的边即可,放宽阈值以应对浮点误差和旋转变形 |
| | | // 如果距离过大(例如超过1米),可能确实不在边界上,但在路径规划上下文中, |
| | | // 这些点是由扫描线生成的,理论上一定在边界上,所以强制吸附是安全的。 |
| | | return minD < 1.0 ? bestIdx : -1; |
| | | } |
| | | |
| | | private static double distToSegment(Point p, Point s, Point e) { |
| | |
| | | #Updated User Properties |
| | | #Sat Dec 27 20:42:59 GMT+08:00 2025 |
| | | #Sat Dec 27 21:15:06 GMT+08:00 2025 |
| | | registrationTime=-1 |
| | | lastLoginTime=1766747566698 |
| | | lastLoginTime=1766841306666 |
| | | password=123456 |
| | | rememberPassword=0 |
| | | rememberPassword=1 |
| | | language=zh |
| | | userName=981894274@qq.com |
| | | userId=-1 |