10 changed files with 259 additions and 275 deletions
@ -1,49 +0,0 @@ |
|||
package com.galaxis.rcs.communication.amrCommunication; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
@AllArgsConstructor |
|||
public class AmrStatusAndInfo { |
|||
// agvId 车唯一标识
|
|||
public String agvId; |
|||
// agv名称
|
|||
public String agvName; |
|||
// agv类型
|
|||
public String agvType; |
|||
// agv型号
|
|||
public String agvModel; |
|||
// AMR功能型号
|
|||
public String agvFnModel; |
|||
// agv电量
|
|||
public double agvSOC; |
|||
// agv电池电压
|
|||
public double agvBatteryVoltage; |
|||
// agv充电状态
|
|||
public boolean agvChargingStatus; |
|||
// agv充电电流
|
|||
public double agvChargingCurrent; |
|||
// agv放电电流
|
|||
public double agvDischargingCurrent; |
|||
// agv电池温度
|
|||
public double agvBatteryTemperature; |
|||
// agv当前x坐标
|
|||
public double x; |
|||
// agv当前y坐标
|
|||
public double y; |
|||
// agv当前z坐标
|
|||
public double z; |
|||
// 当前所在站点的逻辑X坐标 Int32
|
|||
public int logicX; |
|||
// 当前所在站点的逻辑Y坐标 Int32
|
|||
public int logicY; |
|||
// 当前方向 UInt8 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向
|
|||
public short direction; |
|||
// agv当前转动角度值
|
|||
public double orientation; |
|||
|
|||
public AmrStatusAndInfo(String agvId) { |
|||
this.agvId = agvId; |
|||
} |
|||
} |
|||
@ -0,0 +1,110 @@ |
|||
package com.yvan.logisticsModel; |
|||
|
|||
import com.galaxis.rcs.common.entity.RcsTaskPlan; |
|||
import com.galaxis.rcs.plan.PlanTaskSequence; |
|||
import com.google.common.collect.Queues; |
|||
|
|||
import java.util.Map; |
|||
import java.util.concurrent.BlockingQueue; |
|||
|
|||
public class PtrAgvItem extends ExecutorItem { |
|||
private final int BLOCKING_QUEUE_CAPACITY = 100; |
|||
|
|||
// ip
|
|||
public String ip; |
|||
// agv名称
|
|||
public String agvName; |
|||
// agv类型
|
|||
public String agvType; |
|||
// agv型号
|
|||
public String agvModel; |
|||
// AMR功能型号
|
|||
public String agvFnModel; |
|||
// agv电量
|
|||
public double agvSOC; |
|||
// agv电池电压
|
|||
public double agvBatteryVoltage; |
|||
// agv充电状态
|
|||
public boolean agvChargingStatus; |
|||
// agv充电电流
|
|||
public double agvChargingCurrent; |
|||
// agv放电电流
|
|||
public double agvDischargingCurrent; |
|||
// agv电池温度
|
|||
public double agvBatteryTemperature; |
|||
// agv当前x坐标
|
|||
public double x; |
|||
// agv当前y坐标
|
|||
public double y; |
|||
// agv当前z坐标
|
|||
public double z; |
|||
// 当前所在站点的逻辑X坐标 Int32
|
|||
public int logicX; |
|||
// 当前所在站点的逻辑Y坐标 Int32
|
|||
public int logicY; |
|||
// 当前方向 UInt8 0: X轴正向 1: Y轴正向 2: X轴负向 3: Y轴负向 15: 未知方向
|
|||
public short direction; |
|||
// agv当前转动角度值
|
|||
public double orientation; |
|||
|
|||
|
|||
/** |
|||
* 当前执行的任务规划列表 |
|||
*/ |
|||
final BlockingQueue<RcsTaskPlan> planQueue = Queues.newArrayBlockingQueue(BLOCKING_QUEUE_CAPACITY); |
|||
|
|||
|
|||
/** |
|||
* 连接器线程 |
|||
*/ |
|||
private final PtrAgvConnectorThread connectorThread; |
|||
/** |
|||
* 启动连接器线程 |
|||
*/ |
|||
public void startConnector() { |
|||
if (!connectorThread.isRunning()) { |
|||
connectorThread.start(); |
|||
System.out.println("Connector started for executor: " + this.getId()); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 停止连接器线程 |
|||
*/ |
|||
public void stopConnector() { |
|||
connectorThread.stop(); |
|||
System.out.println("Connector stopped for executor: " + this.getId()); |
|||
} |
|||
|
|||
/** |
|||
* 添加任务序列到当前执行器 |
|||
*/ |
|||
public void appendSequence(PlanTaskSequence sequence) { |
|||
if (sequence == null || sequence.taskList.isEmpty()) { |
|||
return; |
|||
} |
|||
|
|||
// 检查 planList 是不是全都是我的任务
|
|||
for (RcsTaskPlan plan : sequence.taskList) { |
|||
if (!plan.getExecutorId().equals(this.getId())) { |
|||
throw new RuntimeException("plan not belong executor:" + this.getId() + ", " + plan.getExecutorId()); |
|||
} |
|||
} |
|||
|
|||
LogisticsRuntime runtime = sequence.logisticsRuntime; |
|||
|
|||
planQueue.addAll(sequence.taskList); |
|||
|
|||
// TODO: 开启轮询线程,等待下一个待执行任务
|
|||
} |
|||
|
|||
public boolean isFree() { |
|||
return (this.planQueue.isEmpty() && this.connectorThread.isRunning()); |
|||
} |
|||
|
|||
public PtrAgvItem(LogisticsRuntime logisticsRuntime, Map<String, Object> raw) { |
|||
super(logisticsRuntime, raw); |
|||
this.connectorThread = new PtrAgvConnectorThread(this, logisticsRuntime); |
|||
} |
|||
|
|||
} |
|||
Loading…
Reference in new issue