From cd67e854d4715bc92a16dc7bffdbde7be1da9957 Mon Sep 17 00:00:00 2001 From: vincentlu <t1341870251@gmail.com> Date: 星期四, 27 三月 2025 13:02:37 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 51 insertions(+), 1 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java index c01c7ec..cb00614 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java +++ b/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; // 灏嗚搴﹁浆鎹负姝e�� @@ -183,8 +195,46 @@ } public void unlockPath(String agvNo, String codeData) { + if (Cools.isEmpty(agvNo, codeData)) { + return; + } try { unlockTaskQueue.offer(new UnlockPathTask(agvNo, codeData), 5, TimeUnit.SECONDS); + +// Integer lev = null; +// +// String[][] codeMatrix = mapDataDispatcher.getCodeMatrix(null); +// int[] codeMatrixIdx = mapDataDispatcher.getCodeMatrixIdx(lev, codeData); +// +// +// DynamicNode[][] dynamicMatrix = mapDataDispatcher.getDynamicMatrix(lev); +// +// DynamicNode dynamicNode = dynamicMatrix[codeMatrixIdx[0]][codeMatrixIdx[1]]; +// +// +// int serial = dynamicNode.getSerial(); +// +// List<int[]> resetCodeIdxList = new ArrayList<>(); +// +// for (int i = 0; i < dynamicMatrix.length; i++) { +// for (int j = 0; j < dynamicMatrix[i].length; j++) { +// +//// if (i == codeMatrixIdx[0] && j == codeMatrixIdx[1]) { continue; } +// +// DynamicNode node = dynamicMatrix[i][j]; +// if (node.getVehicle().equals(agvNo)) { +// if (node.getSerial() < serial) { +// resetCodeIdxList.add(new int[] {i, j}); +// } +// } +// } +// } +// +// if (!Cools.isEmpty(resetCodeIdxList)) { +// +// mapDataDispatcher.clearDynamicMatrixByCodeList(lev, resetCodeIdxList); +// } + } catch (InterruptedException e) { log.error("unlockTaskQueue", e); } -- Gitblit v1.9.1