diff --git a/src/main/java/com/qyft/gd/common/constant/Commands.java b/src/main/java/com/qyft/gd/common/constant/Commands.java index db6dc3e..74d75a2 100644 --- a/src/main/java/com/qyft/gd/common/constant/Commands.java +++ b/src/main/java/com/qyft/gd/common/constant/Commands.java @@ -94,4 +94,14 @@ public class Commands { */ public static final String MOVE_TUBE = "moveTube"; + /** + * 机械臂爪子开启 + */ + public static final String OPEN_CLAW = "openClaw"; + + /** + * 机械臂爪子闭合 + */ + public static final String CLOSE_CLAW = "closeClaw"; + } diff --git a/src/main/java/com/qyft/gd/model/form/CMDForm.java b/src/main/java/com/qyft/gd/model/form/CMDForm.java index b6883ee..0f453d4 100644 --- a/src/main/java/com/qyft/gd/model/form/CMDForm.java +++ b/src/main/java/com/qyft/gd/model/form/CMDForm.java @@ -32,6 +32,8 @@ public class CMDForm { time: 时间 // 关于高度 height: 高度 + // 关于位置 + position: 位置 // 关于速度 speed : 速度 diff --git a/src/main/java/com/qyft/gd/service/BaseDataService.java b/src/main/java/com/qyft/gd/service/BaseDataService.java index 205dabf..02a96be 100644 --- a/src/main/java/com/qyft/gd/service/BaseDataService.java +++ b/src/main/java/com/qyft/gd/service/BaseDataService.java @@ -31,6 +31,15 @@ public class BaseDataService { this.sysSettingsMapper = sysSettingsMapper; } + // 获取拍子存放区坐标 + public String getLidPosition() { + List list = map.getLid_area(); + if (!list.isEmpty()) { + return list.get(0).getValue(); + } + return null; // 如果没有找到,返回 null + } + // 根据容液id获取泵id public String getPumpIdBySolutionId(int solutionId) { List containers = map.getContainers(); diff --git a/src/main/java/com/qyft/gd/service/CMDService.java b/src/main/java/com/qyft/gd/service/CMDService.java index 24c1d7f..51454e3 100644 --- a/src/main/java/com/qyft/gd/service/CMDService.java +++ b/src/main/java/com/qyft/gd/service/CMDService.java @@ -44,44 +44,160 @@ public class CMDService { commandMap.put(Commands.MOVE_MACHINE_ARM, this::moveMachineArm); commandMap.put(Commands.MOVE_TUBE, this::moveTube); commandMap.put(Commands.MOVE_TO_HEAT_AREA, this::moveToHeatArea); + commandMap.put(Commands.OPEN_CLAW, this::openClaw); + commandMap.put(Commands.CLOSE_CLAW, this::closeClaw); + } + // 机械臂爪子开启 + private List> openClaw(Map params) { + List> cmdList = new ArrayList<>(); + cmdList.add(() -> deviceService.openClaw()); + return cmdList; + } + + // 机械臂爪子闭合 + private List> closeClaw(Map params) { + List> cmdList = new ArrayList<>(); + cmdList.add(() -> deviceService.closeClaw()); + return cmdList; } // 移至加热 private List> moveToHeatArea(Map params) { List> cmdList = new ArrayList<>(); - cmdList.add(() -> deviceService.moveRailArmToPoint(1,2,3)); + Map map = baseDataService.getOffsetMap(); + String heatAreaPosition = baseDataService.getHeatAreaPositionById((Integer) params.get("areaId")); + String [] heatAreaPositionArr =heatAreaPosition.split(","); + int x1 = Integer.parseInt(heatAreaPositionArr[0]); + int y1 = Integer.parseInt(heatAreaPositionArr[1]); + int z1 = Integer.parseInt(heatAreaPositionArr[2]); + + String solutionAreaPosition = baseDataService.getSolutionAreaPosition(); + String [] solutionAreaPositionArr = solutionAreaPosition.split(","); + int x2 = Integer.parseInt(solutionAreaPositionArr[0]); + int y2 = Integer.parseInt(solutionAreaPositionArr[1]); + int z2 = Integer.parseInt(solutionAreaPositionArr[2]); + // 机械臂移动到加液位 + cmdList.add(() -> deviceService.moveRailArmToPoint(x2,y2,z2)); + // 打开钩子 + cmdList.add(() -> deviceService.openClaw()); + // 下降高度 + cmdList.add(() -> deviceService.moveRailArmToPoint(x2,y2, z2 - (Integer) map.get("sys_offset_tube_rack_take_height"))); + // 闭合钩子 + cmdList.add(() -> deviceService.closeClaw()); + // 机械臂抬起高度 + cmdList.add(() -> deviceService.moveRailArmToPoint(x2,y2, z2 + (Integer) map.get("sys_offset_tube_rack_take_height") + (Integer) map.get("sys_offset_tube_height"))); + // 机械臂移动到指定加热位 + cmdList.add(() -> deviceService.moveRailArmToPoint(x1,y1, z2 + (Integer) map.get("sys_offset_tube_rack_take_height") + (Integer) map.get("sys_offset_tube_height"))); + // 机械臂下降高度 + cmdList.add(() -> deviceService.moveRailArmToPoint(x1,y1, z1)); + // 机械臂打开钩子 cmdList.add(() -> deviceService.openClaw()); - cmdList.add(() -> deviceService.moveRailArmToPoint(4,5,6)); + // 机械臂上升高度 + cmdList.add(() -> deviceService.moveRailArmToPoint(x1,y1, z1 + (Integer) map.get("sys_offset_tube_rack_take_height"))); + // 关闭钩子 cmdList.add(() -> deviceService.closeClaw()); + return cmdList; } // 移动单个试管 private List >moveTube(Map params) { List> cmdList = new ArrayList<>(); - cmdList.add(() -> deviceService.moveRailArmToPoint(11,22,33)); + return cmdList; } // 机械臂 private List> moveMachineArm(Map params) { List> cmdList = new ArrayList<>(); - cmdList.add(() -> deviceService.moveRailArmToPoint(11,22,33)); + String position = (String) params.get("position"); + String [] positionArr =position.split(","); + int x = Integer.parseInt(positionArr[0]); + int y = Integer.parseInt(positionArr[1]); + int z = Integer.parseInt(positionArr[2]); + cmdList.add(() -> deviceService.moveRailArmToPoint(x,y,z)); return cmdList; } // 装回盖子 private List> putBackCap(Map params) { List> cmdList = new ArrayList<>(); - cmdList.add(() -> deviceService.moveRailArmToPoint(11,22,33)); + // 加热位机器代码 + String heaterId = baseDataService.getHeatAreaHardwareIdById((Integer) params.get("areaId")); + String lidPosition = baseDataService.getLidPosition(); + String [] lidPositionArr = lidPosition.split(","); + int x1 = Integer.parseInt(lidPositionArr[0]); + int y1 = Integer.parseInt(lidPositionArr[1]); + int z1 = Integer.parseInt(lidPositionArr[2]); + + String position = baseDataService.getHeatAreaLidPositionById((Integer) params.get("areaId")); + Map map = baseDataService.getOffsetMap(); + String [] positionArr =position.split(","); + int x2 = Integer.parseInt(positionArr[0]); + int y2 = Integer.parseInt(positionArr[1]); + int z2 = Integer.parseInt(positionArr[2]); + //机械臂移动到拍子存放位坐标 + cmdList.add(() -> deviceService.moveRailArmToPoint(x1,y1,z1)); + // 打开钩子 + cmdList.add(() -> deviceService.openClaw()); + // 机械臂下移位置 + cmdList.add(() -> deviceService.moveRailArmToPoint(x1,y1, z1 - (Integer) map.get("sys_offset_lid_take_height"))); + // 闭合钩子 + cmdList.add(() -> deviceService.closeClaw()); + // 机械臂抬起指定高度 + cmdList.add(() -> deviceService.moveRailArmToPoint(x1,y1,z1)); + // 机械臂移至指定试管架 + cmdList.add(() -> deviceService.moveRailArmToPoint(x2,y2,z2)); + // 打开钩子 cmdList.add(() -> deviceService.openClaw()); - cmdList.add(() -> deviceService.moveRailArmToPoint(4,54,6)); + // 机械臂上移指定位置 + cmdList.add(() -> deviceService.moveRailArmToPoint(x1,y1,z1 + (Integer) map.get("sys_offset_lid_take_height"))); + // 关闭钩子 cmdList.add(() -> deviceService.closeClaw()); + // 密封 + // 解除密封 + cmdList.add(() -> deviceService.setSealLid(Integer.parseInt(heaterId), true)); + // 机械臂复位 return cmdList; } // 取试管架盖 private List> takeOffCap(Map params) { List> cmdList = new ArrayList<>(); - cmdList.add(() -> deviceService.moveRailArmToPoint(13,42,53)); + // 拍子坐标 + String position = baseDataService.getHeatAreaLidPositionById((Integer) params.get("areaId")); + // 加热位机器代码 + String heaterId = baseDataService.getHeatAreaHardwareIdById((Integer) params.get("areaId")); + + Map map = baseDataService.getOffsetMap(); + String [] positionArr =position.split(","); + int x1 = Integer.parseInt(positionArr[0]); + int y1 = Integer.parseInt(positionArr[1]); + int z1 = Integer.parseInt(positionArr[2]); + + String lidPosition = baseDataService.getLidPosition(); + String [] lidPositionArr = lidPosition.split(","); + int x2 = Integer.parseInt(lidPositionArr[0]); + int y2 = Integer.parseInt(lidPositionArr[1]); + int z2 = Integer.parseInt(lidPositionArr[2]); + + //机械臂移动到拍子坐标 + cmdList.add(() -> deviceService.moveRailArmToPoint(x1,y1,z1)); + // 解除密封 + cmdList.add(() -> deviceService.setSealLid(Integer.parseInt(heaterId), false)); + // 打开钩子 cmdList.add(() -> deviceService.openClaw()); - cmdList.add(() -> deviceService.moveRailArmToPoint(4,5,6)); + // 机械臂下移位置 + cmdList.add(() -> deviceService.moveRailArmToPoint(x1,y1, z1 - (Integer) map.get("sys_offset_lid_take_height"))); + // 闭合钩子 + cmdList.add(() -> deviceService.closeClaw()); + // 机械臂抬起指定高度 + cmdList.add(() -> deviceService.moveRailArmToPoint(x1,y1,z1)); + // 机械臂移至拍子存放区 + cmdList.add(() -> deviceService.moveRailArmToPoint(x2,y2,z2)); + // 打开钩子 + cmdList.add(() -> deviceService.openClaw()); + // 机械臂上移指定位置 + cmdList.add(() -> deviceService.moveRailArmToPoint(x2,y2,z2 + (Integer) map.get("sys_offset_lid_take_height"))); + // 关闭钩子 + cmdList.add(() -> deviceService.closeClaw()); + // 机械臂复位 return cmdList; } // 拍照