zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -667,7 +667,7 @@ List<Action> actionList = new ArrayList<>(); // start node Code lastCode = codeService.getCacheById(agvDetail.getRecentCode()); Double lastDirection = agvDetail.getAgvAngle(); Double lastDirection = MapService.mapToNearest(agvDetail.getAgvAngle()); if (!lastCode.getData().equals(pathList.get(0))) { throw new CoolException("AGV[" + agvNo + "]定位偏移..."); } zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
@@ -123,6 +123,18 @@ }).collect(Collectors.toList()); } public static Double mapToNearest(Double angle) { if (null == angle) { return null; } angle = (angle + 360) % 360; double remainder = angle % 45; if (remainder < 22.5) { return angle - remainder; } else { return angle + (45 - remainder); } } // 角度计算 public Double calculateDirection(Code startCode, Code endCode, int angleOffsetVal) { @@ -134,7 +146,7 @@ double deltaX = x1 - x0; double deltaY = y1 - y0; double angle = -Math.atan2(deltaX, deltaY); double angle = Math.atan2(deltaX, deltaY); angle = Math.toDegrees(angle) + angleOffsetVal; angle = (angle + 360) % 360; // 将角度转换为正值