Browse Source

Merge remote-tracking branch 'origin/master'

master
lizw-2015 6 months ago
parent
commit
0cbd038674
  1. 28
      servo/src/main/java/com/galaxis/rcs/plan/path/PathUtils.java
  2. 19
      servo/src/main/java/com/galaxis/rcs/ptr/AmrMessageHandler.java
  3. 6
      servo/src/main/java/com/galaxis/rcs/ptr/AmrTaskMode.java
  4. 7
      servo/src/main/java/com/galaxis/rcs/ptr/PtrAgvItem.java

28
servo/src/main/java/com/galaxis/rcs/plan/path/PathUtils.java

@ -180,4 +180,32 @@ public class PathUtils {
float diff = Math.abs(angle1 - angle2) % 360; float diff = Math.abs(angle1 - angle2) % 360;
return diff > 180 ? 360 - diff : diff; return diff > 180 ? 360 - diff : diff;
} }
public static short amrAngleToDirection(double angle) {
// 误差范围 +-1度
double angleRange = 1.0f;
while (angle < 0) {
angle += 360;
}
while (angle >= 360) {
angle -= 360;
}
if (angle <= angleRange || angle >= 360 - angleRange) {
return 0;
}
if (angle <= 90 + angleRange && angle >= 90 - angleRange) {
return 1;
}
if (angle <= 180 + angleRange && angle >= 180 - angleRange) {
return 2;
}
if (angle <= 270 + angleRange && angle >= 270 - angleRange) {
return 3;
}
return 15;
}
} }

19
servo/src/main/java/com/galaxis/rcs/ptr/AmrMessageHandler.java

@ -3,6 +3,7 @@ package com.galaxis.rcs.ptr;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.galaxis.rcs.plan.path.PathUtils;
import com.galaxis.rcs.ptr.receiveEntity.*; import com.galaxis.rcs.ptr.receiveEntity.*;
import com.galaxis.rcs.ptr.receiveEntity.base.*; import com.galaxis.rcs.ptr.receiveEntity.base.*;
import com.galaxis.rcs.ptr.sendEntity.*; import com.galaxis.rcs.ptr.sendEntity.*;
@ -432,7 +433,7 @@ public class AmrMessageHandler {
agvItem.x = message.X; agvItem.x = message.X;
agvItem.y = message.Y; agvItem.y = message.Y;
agvItem.orientation = message.CurOrientation; agvItem.orientation = message.CurOrientation;
agvItem.direction = PathUtils.amrAngleToDirection(message.CurOrientation);
agvItem.updatePosition(message.CurLogicX, message.CurLogicY, message.CurDirection); agvItem.updatePosition(message.CurLogicX, message.CurLogicY, message.CurDirection);
} }
@ -448,26 +449,12 @@ public class AmrMessageHandler {
agvItem.orientation = message.CurOrientation; agvItem.orientation = message.CurOrientation;
agvItem.logicX = message.CurLogicX; agvItem.logicX = message.CurLogicX;
agvItem.logicY = message.CurLogicY; agvItem.logicY = message.CurLogicY;
agvItem.direction = PathUtils.amrAngleToDirection(message.CurOrientation);
// 更新Redis // 更新Redis
agvItem.updateRedisStatus(); agvItem.updateRedisStatus();
} }
private void handleTaskStatusMessage(PtrAgvItem agvItem, JsonWrapper jw, String json) throws MqttException, JsonProcessingException { private void handleTaskStatusMessage(PtrAgvItem agvItem, JsonWrapper jw, String json) throws MqttException, JsonProcessingException {
// int eventId = jw.asInt("content", "EventId");
// int seqNo = jw.asInt("content", "SeqNo");
//
// switch (eventId) {
// case 4: // 任务完成
// int curLogicX = jw.asInt("content", "Info", "CurLogicX");
// int curLogicY = jw.asInt("content", "Info", "CurLogicY");
// agvItem.updateDeviceTaskStatus(seqNo, curLogicX, curLogicY, eventId);
// break;
// default:
// agvItem.updateDeviceTaskStatus(seqNo, 0, 0, eventId);
// break;
// }
int EventId = jw.asInt("content", "EventId"); int EventId = jw.asInt("content", "EventId");
// log.info("1-Received message: " + json); // log.info("1-Received message: " + json);

6
servo/src/main/java/com/galaxis/rcs/ptr/AmrTaskMode.java

@ -44,11 +44,7 @@ public enum AmrTaskMode {
/** /**
* 自定义模式 * 自定义模式
*/ */
AMR_CUSTOMIZE_MODE(8, "自定义模式"), AMR_CUSTOMIZE_MODE(8, "自定义模式");
/**
* 主程序退出关机或关服务时会进入这个模式
*/
AMR_SHUTDOWN_MODE(8, "主程序退出");
// 枚举值映射 // 枚举值映射
private static final Map<Integer, AmrTaskMode> VALUE_MAP; private static final Map<Integer, AmrTaskMode> VALUE_MAP;

7
servo/src/main/java/com/galaxis/rcs/ptr/PtrAgvItem.java

@ -261,7 +261,10 @@ public abstract class PtrAgvItem extends ExecutorItem {
if (this.isPaused) { if (this.isPaused) {
return false; return false;
} }
return true; if (this.taskMode != AmrTaskMode.AMR_FREE_MODE) {
return false;
}
return this.isOnline;
} }
public void taskCompleted(int logicX, int logicY, short direction, int taskStatus) { public void taskCompleted(int logicX, int logicY, short direction, int taskStatus) {
@ -390,7 +393,7 @@ public abstract class PtrAgvItem extends ExecutorItem {
} }
public void updateTaskMode(int taskMode) { public void updateTaskMode(int taskMode) {
this.taskMode = AmrTaskMode.fromValue(taskMode);
} }
public void updateRedisStatus() { public void updateRedisStatus() {

Loading…
Cancel
Save