From 7ab46b9068121228b91f5668d77ed7717a91972e Mon Sep 17 00:00:00 2001 From: yuliang <398780299@qq.com> Date: Sun, 22 Jun 2025 15:23:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E8=BD=A6=E4=BB=BB=E5=8A=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../amrCommunication/AmrMessageHandler.java | 33 +++++++-- .../amrCommunication/AmrStatusAndInfo.java | 9 +++ .../galaxis/rcs/connector/cl2/Cl2Connector.java | 51 ++++++++++--- .../galaxis/rcs/connector/cl2/Cl2ConnectorImp.java | 27 ++++++- .../rcs/connector/cl2/VirtualCl2Connector.java | 20 +++--- .../connector/cl2/sendEntity/AmrTaskMessage.java | 84 ++++++++++++++++++++++ .../rcs/connector/cl2/sendEntity/Cmd10010.java | 84 ---------------------- .../dashboard/DashboardManager.java | 21 +++--- 8 files changed, 210 insertions(+), 119 deletions(-) create mode 100644 servo/src/main/java/com/galaxis/rcs/connector/cl2/sendEntity/AmrTaskMessage.java delete mode 100644 servo/src/main/java/com/galaxis/rcs/connector/cl2/sendEntity/Cmd10010.java diff --git a/servo/src/main/java/com/galaxis/rcs/communication/amrCommunication/AmrMessageHandler.java b/servo/src/main/java/com/galaxis/rcs/communication/amrCommunication/AmrMessageHandler.java index 8db3623..c99173f 100644 --- a/servo/src/main/java/com/galaxis/rcs/communication/amrCommunication/AmrMessageHandler.java +++ b/servo/src/main/java/com/galaxis/rcs/communication/amrCommunication/AmrMessageHandler.java @@ -9,11 +9,14 @@ import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskModeChangeData; import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskStatusChangeData; import com.galaxis.rcs.connector.cl2.receiveEntity.base.TaskTypeChangeData; import lombok.extern.slf4j.Slf4j; +import org.clever.core.AppContextHolder; import org.clever.core.json.JsonWrapper; +import org.clever.data.redis.Redis; import org.eclipse.paho.mqttv5.common.MqttMessage; import org.springframework.stereotype.Service; import java.nio.charset.StandardCharsets; +import java.util.concurrent.ConcurrentHashMap; @Slf4j @Service @@ -35,11 +38,20 @@ public class AmrMessageHandler { private static final TypeReference> typeRef20150Message = new TypeReference>() {}; private static final TypeReference> typeRef20200Message = new TypeReference>() {}; private static final TypeReference> typeRef20250Message = new TypeReference>() {}; + + private static final Redis redis = AppContextHolder.getBean("defaultRedis", Redis.class, true); + + private static final ConcurrentHashMap agvStatusMap = new ConcurrentHashMap<>(); public static void handleAgvRobotStatusMessage(MqttMessage message) { byte[] messageData = message.getPayload(); String json = new String(messageData, StandardCharsets.UTF_8); JsonWrapper jw = new JsonWrapper(json); int id = jw.asInt("id"); + int agvId = jw.asInt("content", "VehicleId"); + if (!agvStatusMap.containsKey(agvId)) { + agvStatusMap.put(agvId, new AmrStatusAndInfo(agvId + "")); + } + AmrStatusAndInfo agvStatusAndInfo = agvStatusMap.get(agvId); /* * 消息标识 @@ -61,7 +73,7 @@ public class AmrMessageHandler { AmrMessage amrMessage = null; switch (id) { case 20010: - amrMessage = JacksonGenericUtils.parse(json, typeRef20010Message); + AmrMessage taskCompletedMessage = JacksonGenericUtils.parse(json, typeRef20010Message); break; case 20011: { int EventId = jw.asInt("content", "EventId"); @@ -97,16 +109,30 @@ public class AmrMessageHandler { amrMessage = JacksonGenericUtils.parse(json, typeRef20050Message); break; case 20060: - amrMessage = JacksonGenericUtils.parse(json, typeRef20060Message); + AmrMessage statusMessage = JacksonGenericUtils.parse(json, typeRef20060Message); + agvStatusAndInfo.agvSOC = statusMessage.content.CurBattery.SOC; + agvStatusAndInfo.agvBatteryVoltage = statusMessage.content.CurBattery.Voltage; +// agvStatusAndInfo.agvChargingStatus = statusMessage.content.CurBattery.ChargingStatus; + agvStatusAndInfo.agvChargingCurrent = statusMessage.content.CurBattery.ChargingCurrent; + agvStatusAndInfo.agvDischargingCurrent = statusMessage.content.CurBattery.DischargingCurrent; + agvStatusAndInfo.agvBatteryTemperature = statusMessage.content.CurBattery.Temperature; + agvStatusAndInfo.x = statusMessage.content.X; + agvStatusAndInfo.y = statusMessage.content.Y; + agvStatusAndInfo.orientation = statusMessage.content.CurOrientation; + if (statusMessage.content.VehicleId == 32) { + log.info("Received message: " + json); + } break; case 20100: - amrMessage = JacksonGenericUtils.parse(json, typeRef20100Message); + AmrMessage heartbeatMessage = JacksonGenericUtils.parse(json, typeRef20100Message); + // if (amrMessage.content instanceof AmrHeartbeatMessage) { // AmrHeartbeatMessage msg = (AmrHeartbeatMessage) amrMessage.content; // if (msg.VehicleId == 102) { // log.info("Received message: " + json); // } // } + break; case 20147: amrMessage = JacksonGenericUtils.parse(json, typeRef20147Message); @@ -132,5 +158,4 @@ public class AmrMessageHandler { } } - } diff --git a/servo/src/main/java/com/galaxis/rcs/communication/amrCommunication/AmrStatusAndInfo.java b/servo/src/main/java/com/galaxis/rcs/communication/amrCommunication/AmrStatusAndInfo.java index 216872f..c253f5b 100644 --- a/servo/src/main/java/com/galaxis/rcs/communication/amrCommunication/AmrStatusAndInfo.java +++ b/servo/src/main/java/com/galaxis/rcs/communication/amrCommunication/AmrStatusAndInfo.java @@ -1,5 +1,10 @@ package com.galaxis.rcs.communication.amrCommunication; +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor public class AmrStatusAndInfo { // agvId 车唯一标识 public String agvId; @@ -31,4 +36,8 @@ public class AmrStatusAndInfo { public double z; // agv当前方向 public double orientation; + + public AmrStatusAndInfo(String agvId) { + this.agvId = agvId; + } } diff --git a/servo/src/main/java/com/galaxis/rcs/connector/cl2/Cl2Connector.java b/servo/src/main/java/com/galaxis/rcs/connector/cl2/Cl2Connector.java index 54a2dc8..64edd48 100644 --- a/servo/src/main/java/com/galaxis/rcs/connector/cl2/Cl2Connector.java +++ b/servo/src/main/java/com/galaxis/rcs/connector/cl2/Cl2Connector.java @@ -3,19 +3,50 @@ package com.galaxis.rcs.connector.cl2; public interface Cl2Connector { // RCS发往CL2的指令 - // 0 运输 - public int transport(); + /** + * 移动 robotMove + * @param executorId 机器人设备ID + * @param startWayPoint 起点Id, WayPointId + * @param endWayPoint 终点ID, WayPointId + * @param armRotation number类型,货叉/机械臂,相对于头的角度, 逆时针为正 + */ + void robotMove(String executorId, String startWayPoint, String endWayPoint, double armRotation); - // 1 接货 - public int pickup(); + /** + * 旋转 robotRotate + * @param executorId 机器人编号 + * @param worldRotation 转动身体到世界角度 90 度 + */ + void robotRotation(String executorId, double worldRotation); - // 2 卸货 - public int unload(); + /** + * 取货 robotLoad + * @param executorId 机器人编号 + * @param rackItem 货架ID + * @param bay 列 + * @param level 层 + * @param cell 格 + * @param storeBarCode 地标二维码编号 + * @param boxItem 容器ID + */ + void robotLoad(String executorId, String rackItem, int bay, int level, int cell, String storeBarCode, String boxItem); - // 3 充电 - public int charge(); + /** + * 放货 robotUnload + * @param executorId 机器人编号 + * @param rackItem 货架ID + * @param bay 列 + * @param level 层 + * @param cell 格 + * @param storeBarCode 地标二维码编号 + */ + void robotUnload(String executorId, String rackItem, int bay, int level, int cell, String storeBarCode); - // 4:提升移载取货或卸货 - public int lift(); + /** + * 充电 robotCharge + * @param executorId 机器人编号 + * @param chargerItem 充电桩ID + */ + void robotCharger(String executorId, String chargerItem); } diff --git a/servo/src/main/java/com/galaxis/rcs/connector/cl2/Cl2ConnectorImp.java b/servo/src/main/java/com/galaxis/rcs/connector/cl2/Cl2ConnectorImp.java index 274a99a..7a674d0 100644 --- a/servo/src/main/java/com/galaxis/rcs/connector/cl2/Cl2ConnectorImp.java +++ b/servo/src/main/java/com/galaxis/rcs/connector/cl2/Cl2ConnectorImp.java @@ -1,4 +1,29 @@ package com.galaxis.rcs.connector.cl2; -public class Cl2ConnectorImp { +public class Cl2ConnectorImp implements Cl2Connector { + @Override + public void robotMove(String executorId, String startWayPoint, String endWayPoint, double armRotation) { + // 获取车当前位置 + + } + + @Override + public void robotRotation(String executorId, double worldRotation) { + + } + + @Override + public void robotLoad(String executorId, String rackItem, int bay, int level, int cell, String storeBarCode, String boxItem) { + + } + + @Override + public void robotUnload(String executorId, String rackItem, int bay, int level, int cell, String storeBarCode) { + + } + + @Override + public void robotCharger(String executorId, String chargerItem) { + + } } diff --git a/servo/src/main/java/com/galaxis/rcs/connector/cl2/VirtualCl2Connector.java b/servo/src/main/java/com/galaxis/rcs/connector/cl2/VirtualCl2Connector.java index d00e4e4..28177cc 100644 --- a/servo/src/main/java/com/galaxis/rcs/connector/cl2/VirtualCl2Connector.java +++ b/servo/src/main/java/com/galaxis/rcs/connector/cl2/VirtualCl2Connector.java @@ -7,27 +7,27 @@ package com.galaxis.rcs.connector.cl2; public class VirtualCl2Connector implements Cl2Connector { @Override - public int transport() { - return 0; + public void robotMove(String executorId, String startWayPoint, String endWayPoint, double armRotation) { + } @Override - public int pickup() { - return 0; + public void robotRotation(String executorId, double worldRotation) { + } @Override - public int unload() { - return 0; + public void robotLoad(String executorId, String rackItem, int bay, int level, int cell, String storeBarCode, String boxItem) { + } @Override - public int charge() { - return 0; + public void robotUnload(String executorId, String rackItem, int bay, int level, int cell, String storeBarCode) { + } @Override - public int lift() { - return 0; + public void robotCharger(String executorId, String chargerItem) { + } } diff --git a/servo/src/main/java/com/galaxis/rcs/connector/cl2/sendEntity/AmrTaskMessage.java b/servo/src/main/java/com/galaxis/rcs/connector/cl2/sendEntity/AmrTaskMessage.java new file mode 100644 index 0000000..fddedb8 --- /dev/null +++ b/servo/src/main/java/com/galaxis/rcs/connector/cl2/sendEntity/AmrTaskMessage.java @@ -0,0 +1,84 @@ +package com.galaxis.rcs.connector.cl2.sendEntity; + +import java.util.List; + +public class AmrTaskMessage { + // 作业序号 UInt32 + public long SeqNo; + // 作业类型 UInt8 0:运输 1:接货 2:卸货 3:充电 4:提升移栽取货或卸货 5:滚筒取货或卸货(双向作业) + public short OperationType; + //充电桩朝向UseBriefLocation UInt8 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 + public short ChargeDirection; + // 充电工位坐标和充电桩之间距离 UInt16 单位:mm + public int ChargeLocation; + // 目标货架编号 String 仅做校验使用(仅接货用) + public String StorageRacksNo; + // 小车起始X坐标 UInt16 + public int StartX; + // 小车起始Y坐标 UInt16 + public int StartY; + // 小车目标X坐标 UInt16 + public int EndX; + // 小车目标Y坐标 UInt16 + public int EndY; + // 任务是否立即执行 bool 默认为true + public boolean GoNow; + // 路径分段数 UInt8 + public short LinkCounts; + // 路径分段信息 + public List Links; + // AMR内置货位ID(仅对多层移栽有意义)UInt8 1~N + public short BuiltinSlotNo; + // 提升移栽货物拣货模式 UInt8 0:不控制(无动作) 1:从货架上取货 2:将货物放到货架上 3:仅调整托盘高度(不进行取放货操作) 4:调整车身货物(仅供调试,RCS勿发送此命令) 5:仅调整载货台到取货高度,但是不动作 6:仅调整载货台到放货高度,但是不动作 + public short PickMode; + // 目标货位相对于地面的绝对高度 UInt16 单位:mm + public int GoodsSlotHeight; + // 目标货位朝向 UInt8 朝向定义与充电桩朝向相同。 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 + public short GoodsSlotDirection; + // 多机构^[1]^的拣货模式 UInt8[3] 数组形式,意义同"PickMode" + public List MPickMode; + // 多机构^[1]^的目标货位高度 UInt16[3] 单位:mm + public List MGoodsSlotHeight; + // 多机构^[1]^的目标货位朝向 UInt8[3] 朝向定义与充电桩朝向相同。 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 + public List MGoodsSlotDirection; + // 多机构的目标货箱ID String[3] 仅做校验使用(仅接货用) + public List MStorageRacksNo; + // 滚筒1 运动操作 对于左右滚动的双滚筒机型,此滚筒为靠近车头的滚筒。 对于前后滚动的双滚筒机型,此滚筒为车身左侧的滚筒。 UInt8 0:不控制(无动作) 1:从货架上取货 2:将货物放到货架上 3:仅调整托盘高度(不进行取放货操作) 4:调整车身货物(仅供调试,RCS勿发送此命令) 5:仅调整载货台到取货高度,但是不动作 6:仅调整载货台到放货高度,但是不动作 + public short Roll1Motion; + // 滚筒2 运动操作 对于左右滚动的双滚筒机型,此滚筒为靠近车尾的滚筒。 对于前后滚动的双滚筒机型,此滚筒为车身右侧的滚筒。 对于单滚筒机型,此参数无意义。 UInt8 0:不控制(无动作) 1:从货架上取货 2:将货物放到货架上 3:仅调整托盘高度(不进行取放货操作) 4:调整车身货物(仅供调试,RCS勿发送此命令) 5:仅调整载货台到取货高度,但是不动作 6:仅调整载货台到放货高度,但是不动作 + public short Roll2Motion; + // 与滚筒1对接的站台朝向 UInt8 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 + public short Roll1StationDirection; + // 与滚筒2对接的站台朝向 对于单滚筒机型,此参数无意义。 UInt8 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 + public short Roll2StationDirection; + // 滚筒1目标货物长度 UInt16 单位:mm + public int Roll1GoodsLength; + // 滚筒2目标货物长度 对于单滚筒机型,此参数无意义。UInt16 单位:mm + public int Roll2GoodsLength; + // 滚筒1目标货物数量 UInt16 1~N + public int Roll1GoodsQuantity; + // 滚筒2目标货物数量 对于单滚筒机型,此参数无意义。 UInt16 1~N + public int Roll2GoodsQuantity; + // 多滚筒运动模式 UInt8[6] 数组形式,0:不控制(无动作) 1:从货架上取货 2:将货物放到货架上 3:仅调整托盘高度(不进行取放货操作) 4:调整车身货物(仅供调试,RCS勿发送此命令) 5:仅调整载货台到取货高度,但是不动作 6:仅调整载货台到放货高度,但是不动作 + public List MRollMotion; + // 多滚筒对接的站台朝向 UInt8[6] 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 + public List MRollStationDirection; + // 多滚筒目标货物数量 UInt16[6] 数组形式,意义同"RollGoodsQuantity" + public List MRollGoodsQuantity; + // 是否仅执行任务的准备部分 bool 默认为false,仅执行该动作的准备部分,如仅进行导航,调整托盘高度等,但不进行取放货操作 + public boolean Preparing; + // 货架标识 uint32 车根据货架类型查询尺寸进行避障 + public long RackTypeId; + // 终点自适应 bool 默认为false,为true时,会根据任务和对应器件的位置,自动调整停止点 + public boolean EndSelfAdaption; + + static class Link { + //该段目标点X坐标 UInt16 逻辑单位,乘以一定系数才是物理距离 + public int X; + //该段目标点Y坐标 UInt16 逻辑单位,乘以一定系数才是物理距离 + public int Y; + // 该段行驶速度 Int16 mm/s + public int Speed; + + } +} diff --git a/servo/src/main/java/com/galaxis/rcs/connector/cl2/sendEntity/Cmd10010.java b/servo/src/main/java/com/galaxis/rcs/connector/cl2/sendEntity/Cmd10010.java deleted file mode 100644 index 257f98b..0000000 --- a/servo/src/main/java/com/galaxis/rcs/connector/cl2/sendEntity/Cmd10010.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.galaxis.rcs.connector.cl2.sendEntity; - -import java.util.List; - -public class Cmd10010 { - // 作业序号 UInt32 - public long SeqNo; - // 作业类型 UInt8 0:运输 1:接货 2:卸货 3:充电 4:提升移栽取货或卸货 5:滚筒取货或卸货(双向作业) - public short OperationType; - //充电桩朝向UseBriefLocation UInt8 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 - public short ChargeDirection; - // 充电工位坐标和充电桩之间距离 UInt16 单位:mm - public int ChargeLocation; - // 目标货架编号 String 仅做校验使用(仅接货用) - public String StorageRacksNo; - // 小车起始X坐标 UInt16 - public int StartX; - // 小车起始Y坐标 UInt16 - public int StartY; - // 小车目标X坐标 UInt16 - public int EndX; - // 小车目标Y坐标 UInt16 - public int EndY; - // 任务是否立即执行 bool 默认为true - public boolean GoNow; - // 路径分段数 UInt8 - public short LinkCounts; - // 路径分段信息 - public List Links; - // AMR内置货位ID(仅对多层移栽有意义)UInt8 1~N - public short BuiltinSlotNo; - // 提升移栽货物拣货模式 UInt8 0:不控制(无动作) 1:从货架上取货 2:将货物放到货架上 3:仅调整托盘高度(不进行取放货操作) 4:调整车身货物(仅供调试,RCS勿发送此命令) 5:仅调整载货台到取货高度,但是不动作 6:仅调整载货台到放货高度,但是不动作 - public short PickMode; - // 目标货位相对于地面的绝对高度 UInt16 单位:mm - public int GoodsSlotHeight; - // 目标货位朝向 UInt8 朝向定义与充电桩朝向相同。 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 - public short GoodsSlotDirection; - // 多机构^[1]^的拣货模式 UInt8[3] 数组形式,意义同"PickMode" - public short[] MPickMode; - // 多机构^[1]^的目标货位高度 UInt16[3] 单位:mm - public int[] MGoodsSlotHeight; - // 多机构^[1]^的目标货位朝向 UInt8[3] 朝向定义与充电桩朝向相同。 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 - public short[] MGoodsSlotDirection; - // 多机构的目标货箱ID String[3] 仅做校验使用(仅接货用) - public String[] MStorageRacksNo; - // 滚筒1 运动操作 对于左右滚动的双滚筒机型,此滚筒为靠近车头的滚筒。 对于前后滚动的双滚筒机型,此滚筒为车身左侧的滚筒。 UInt8 0:不控制(无动作) 1:从货架上取货 2:将货物放到货架上 3:仅调整托盘高度(不进行取放货操作) 4:调整车身货物(仅供调试,RCS勿发送此命令) 5:仅调整载货台到取货高度,但是不动作 6:仅调整载货台到放货高度,但是不动作 - public short Roll1Motion; - // 滚筒2 运动操作 对于左右滚动的双滚筒机型,此滚筒为靠近车尾的滚筒。 对于前后滚动的双滚筒机型,此滚筒为车身右侧的滚筒。 对于单滚筒机型,此参数无意义。 UInt8 0:不控制(无动作) 1:从货架上取货 2:将货物放到货架上 3:仅调整托盘高度(不进行取放货操作) 4:调整车身货物(仅供调试,RCS勿发送此命令) 5:仅调整载货台到取货高度,但是不动作 6:仅调整载货台到放货高度,但是不动作 - public short Roll2Motion; - // 与滚筒1对接的站台朝向 UInt8 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 - public short Roll1StationDirection; - // 与滚筒2对接的站台朝向 对于单滚筒机型,此参数无意义。 UInt8 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 - public short Roll2StationDirection; - // 滚筒1目标货物长度 UInt16 单位:mm - public int Roll1GoodsLength; - // 滚筒2目标货物长度 对于单滚筒机型,此参数无意义。UInt16 单位:mm - public int Roll2GoodsLength; - // 滚筒1目标货物数量 UInt16 1~N - public int Roll1GoodsQuantity; - // 滚筒2目标货物数量 对于单滚筒机型,此参数无意义。 UInt16 1~N - public int Roll2GoodsQuantity; - // 多滚筒运动模式 UInt8[6] 数组形式,0:不控制(无动作) 1:从货架上取货 2:将货物放到货架上 3:仅调整托盘高度(不进行取放货操作) 4:调整车身货物(仅供调试,RCS勿发送此命令) 5:仅调整载货台到取货高度,但是不动作 6:仅调整载货台到放货高度,但是不动作 - public short[] MRollMotion; - // 多滚筒对接的站台朝向 UInt8[6] 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向 - public short[] MRollStationDirection; - // 多滚筒目标货物数量 UInt16[6] 数组形式,意义同"RollGoodsQuantity" - public int[] MRollGoodsQuantity; - // 是否仅执行任务的准备部分 bool 默认为false,仅执行该动作的准备部分,如仅进行导航,调整托盘高度等,但不进行取放货操作 - public boolean Preparing; - // 货架标识 uint32 车根据货架类型查询尺寸进行避障 - public long RackTypeId; - // 终点自适应 bool 默认为false,为true时,会根据任务和对应器件的位置,自动调整停止点 - public boolean EndSelfAdaption; - - static class Link { - //该段目标点X坐标 UInt16 逻辑单位,乘以一定系数才是物理距离 - public int X; - //该段目标点Y坐标 UInt16 逻辑单位,乘以一定系数才是物理距离 - public int Y; - // 该段行驶速度 Int16 mm/s - public int Speed; - - } -} diff --git a/servo/src/main/java/com/yvan/logisticsMonitor/dashboard/DashboardManager.java b/servo/src/main/java/com/yvan/logisticsMonitor/dashboard/DashboardManager.java index 6e685fc..62321a6 100644 --- a/servo/src/main/java/com/yvan/logisticsMonitor/dashboard/DashboardManager.java +++ b/servo/src/main/java/com/yvan/logisticsMonitor/dashboard/DashboardManager.java @@ -3,28 +3,29 @@ package com.yvan.logisticsMonitor.dashboard; import com.galaxis.rcs.connector.cl2.Cl2Connector; public class DashboardManager implements Cl2Connector { + @Override - public int transport() { - return 0; + public void robotMove(String executorId, String startWayPoint, String endWayPoint, double armRotation) { + } @Override - public int pickup() { - return 0; + public void robotRotation(String executorId, double worldRotation) { + } @Override - public int unload() { - return 0; + public void robotLoad(String executorId, String rackItem, int bay, int level, int cell, String storeBarCode, String boxItem) { + } @Override - public int charge() { - return 0; + public void robotUnload(String executorId, String rackItem, int bay, int level, int cell, String storeBarCode) { + } @Override - public int lift() { - return 0; + public void robotCharger(String executorId, String chargerItem) { + } }