| | |
| | | |
| | | switch (Objects.requireNonNull(ActionTypeType.get(action.getActionTypeEl()))) { |
| | | case TurnCorner: |
| | | simulateWalking(agv, agvDetail, action); |
| | | simulateRotating(agv, agvDetail, action); |
| | | break; |
| | | case StraightBackUnturnable: |
| | |
| | | |
| | | |
| | | 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); // 根据距离消耗电量 |
| | | |
| | |
| | | |
| | | action.setActionSts(ActionStsType.FINISH.val()); |
| | | actionService.updateById(action); |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param action 当前动作 |
| | | */ |
| | | private void simulateRotating(Agv agv, AgvDetail agvDetail, Action action) throws InterruptedException { |
| | | |
| | | // double totalAngle = Double.parseDouble(action.getParams()); |
| | | // double stepAngle = 90.0; |
| | | // 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)); // 根据角度消耗电量 |
| | | // |
| | | // agvDetailService.updateById(agvDetail); |
| | | // |
| | | // Thread.sleep(1000); |
| | | // |
| | | // actionProgress += angleToRotate; |
| | | // } |
| | | |
| | | double actionAngle = Double.parseDouble(action.getParams()); |
| | | |
| | | double newAngle = (agvDetail.getAgvAngle() + actionAngle) % 360; |
| | | |
| | | agvDetail.setAgvAngle(newAngle); |
| | | agvDetail.setAgvAngle(actionAngle); |
| | | // 模拟电量消耗? |
| | | // agvDetail.setVol(agvDetail.getVol() - 0.05 * (angleToRotate / 15.0)); // 根据角度消耗电量 |
| | | |
| | | Thread.sleep(1000); |
| | | |
| | | agvDetailService.updateById(agvDetail); |
| | | |
| | | action.setActionSts(ActionStsType.FINISH.val()); |
| | | actionService.updateById(action); |
| | | } |