From 2bdbfd1ac24d4e9a87daf6fb8b99ec32264d5752 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期六, 21 十二月 2024 11:25:27 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java | 53 ++++++++++++++++++++--------------------------------- 1 files changed, 20 insertions(+), 33 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java index 1b2b688..a19aff2 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java @@ -5,6 +5,8 @@ import com.zy.acs.common.domain.protocol.AGV_11_UP; import com.zy.acs.common.enums.AgvCompleteType; import com.zy.acs.common.utils.RedisSupport; +import com.zy.acs.manager.core.scheduler.MapDataWsScheduler; +import com.zy.acs.manager.core.service.MapService; import com.zy.acs.manager.manager.entity.Action; import com.zy.acs.manager.manager.entity.Agv; import com.zy.acs.manager.manager.entity.AgvDetail; @@ -14,6 +16,7 @@ import com.zy.acs.manager.manager.service.ActionService; import com.zy.acs.manager.manager.service.AgvDetailService; import com.zy.acs.manager.manager.service.CodeService; +import com.zy.acs.manager.manager.service.JamService; import lombok.extern.slf4j.Slf4j; import java.util.List; @@ -29,6 +32,8 @@ private final AgvDetailService agvDetailService; private final ActionService actionService; private final CodeService codeService; + private final MapService mapService; + private final JamService jamService; private final List<Action> actionList; private final RedisSupport redis; @@ -41,6 +46,8 @@ , AgvDetailService agvDetailService , ActionService actionService , CodeService codeService + , MapService mapService + , JamService jamService , List<Action> actionList ) { this.agv = agv; @@ -48,6 +55,8 @@ this.agvDetailService = agvDetailService; this.actionService = actionService; this.codeService = codeService; + this.mapService = mapService; + this.jamService = jamService; this.actionList = actionList; this.groupId = actionList.get(0).getGroupId(); @@ -78,6 +87,7 @@ switch (Objects.requireNonNull(ActionTypeType.get(action.getActionTypeEl()))) { case TurnCorner: + simulateWalking(agv, agvDetail, action); simulateRotating(agv, agvDetail, action); break; case StraightBackUnturnable: @@ -99,23 +109,21 @@ private void simulateWalking(Agv agv, AgvDetail agvDetail, Action action) throws InterruptedException { - Code currCode = codeService.getById(agvDetail.getRecentCode()); Code code = codeService.selectByData(action.getCode()); - agvDetail.setPos(1); agvDetail.setCode(code.getId()); - // 妯℃嫙鐢甸噺娑堣�� // agvDetail.setVol(agvDetail.getVol() - 0.1 * distanceToMove); // 鏍规嵁璺濈娑堣�楃數閲� + Thread.sleep(MapDataWsScheduler.WEBSOCKET_BROADCAST_INTERVAL); + agvDetailService.updateById(agvDetail); - Thread.sleep(1000); + mapService.unlockPath(agv.getUuid(), code.getData()); + jamService.checkIfFinish(agv.getId(), code.getData()); action.setActionSts(ActionStsType.FINISH.val()); actionService.updateById(action); - - } /** @@ -126,34 +134,13 @@ * @param action 褰撳墠鍔ㄤ綔 */ private void simulateRotating(Agv agv, AgvDetail agvDetail, Action action) throws InterruptedException { -// Double agvAngle = agvDetail.getAgvAngle(); -// double actionAngle = Double.parseDouble(action.getParams()); + double actionAngle = Double.parseDouble(action.getParams()); + agvDetail.setAgvAngle(actionAngle); + // 妯℃嫙鐢甸噺娑堣��? +// agvDetail.setVol(agvDetail.getVol() - 0.05 * (angleToRotate / 15.0)); // 鏍规嵁瑙掑害娑堣�楃數閲� - - - double totalAngle = Double.parseDouble(action.getParams()); // 鍋囪Action鏈塧ngle灞炴�� - double stepAngle = 45.0; // 姣忕鏃嬭浆15搴︼紝鍏蜂綋鍊兼牴鎹渶姹傝皟鏁� - double actionProgress = 0.0; - - while (actionProgress < totalAngle) { - double angleToRotate = Math.min(stepAngle, totalAngle - actionProgress); - // 鏇存柊AGV鐨勮搴� - double newAngle = (agvDetail.getAgvAngle() + angleToRotate) % 360; - agvDetail.setAgvAngle(newAngle); - - // 妯℃嫙鐢甸噺娑堣�� -// agvDetail.setVol(agvDetail.getVol() - 0.05 * (angleToRotate / 15.0)); // 鏍规嵁瑙掑害娑堣�楃數閲� - - // 鏇存柊AGV璇︾粏淇℃伅 - agvDetailService.updateById(agvDetail); - - // 妯℃嫙瀹為檯鎵ц鏃堕棿 - Thread.sleep(1000); // 姣忕鎵ц涓�娆� - - actionProgress += angleToRotate; - } - - // 鍔ㄤ綔瀹屾垚锛屾洿鏂扮姸鎬� + Thread.sleep(MapDataWsScheduler.WEBSOCKET_BROADCAST_INTERVAL); + agvDetailService.updateById(agvDetail); action.setActionSts(ActionStsType.FINISH.val()); actionService.updateById(action); } -- Gitblit v1.9.1