diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java index cf7e273..b27d2a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -45,4 +45,9 @@ * 机器人巡点栅格 */ String KEY_CUR_TARGET_POINT_ID = "CUR_TARGET_POINT_ID_"; + + /** + * 障碍物栅格信息缓存 + */ + String KEY_CUR_COST_MAP_ID = "CUR_COST_MAP_ID_"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java index cf7e273..b27d2a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -45,4 +45,9 @@ * 机器人巡点栅格 */ String KEY_CUR_TARGET_POINT_ID = "CUR_TARGET_POINT_ID_"; + + /** + * 障碍物栅格信息缓存 + */ + String KEY_CUR_COST_MAP_ID = "CUR_COST_MAP_ID_"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 8d77492..78d5ec0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,6 +14,8 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), //当前版本 暂不支撑 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java index cf7e273..b27d2a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -45,4 +45,9 @@ * 机器人巡点栅格 */ String KEY_CUR_TARGET_POINT_ID = "CUR_TARGET_POINT_ID_"; + + /** + * 障碍物栅格信息缓存 + */ + String KEY_CUR_COST_MAP_ID = "CUR_COST_MAP_ID_"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 8d77492..78d5ec0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,6 +14,8 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), //当前版本 暂不支撑 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java new file mode 100644 index 0000000..fe69a25 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +/** + * 分辨率设置 + */ +@Component("COSTMAP_RESOLUTION") +public class CostMapResolutionCmdHandler extends AbstractCmdHandler { + + protected CostMapResolutionCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(CostMapResolutionRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO res = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return res; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(CostMapResolutionRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java index cf7e273..b27d2a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -45,4 +45,9 @@ * 机器人巡点栅格 */ String KEY_CUR_TARGET_POINT_ID = "CUR_TARGET_POINT_ID_"; + + /** + * 障碍物栅格信息缓存 + */ + String KEY_CUR_COST_MAP_ID = "CUR_COST_MAP_ID_"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 8d77492..78d5ec0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,6 +14,8 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), //当前版本 暂不支撑 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java new file mode 100644 index 0000000..fe69a25 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +/** + * 分辨率设置 + */ +@Component("COSTMAP_RESOLUTION") +public class CostMapResolutionCmdHandler extends AbstractCmdHandler { + + protected CostMapResolutionCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(CostMapResolutionRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO res = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return res; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(CostMapResolutionRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java new file mode 100644 index 0000000..0335693 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 障碍物栅格数据接收 + */ +@Slf4j +@Component("/app_costmap_sender") +public class AppCostMapHandler extends AbstractSocketHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public AppCostMapHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + statusInfoService.saveCostMap(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java index cf7e273..b27d2a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -45,4 +45,9 @@ * 机器人巡点栅格 */ String KEY_CUR_TARGET_POINT_ID = "CUR_TARGET_POINT_ID_"; + + /** + * 障碍物栅格信息缓存 + */ + String KEY_CUR_COST_MAP_ID = "CUR_COST_MAP_ID_"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 8d77492..78d5ec0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,6 +14,8 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), //当前版本 暂不支撑 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java new file mode 100644 index 0000000..fe69a25 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +/** + * 分辨率设置 + */ +@Component("COSTMAP_RESOLUTION") +public class CostMapResolutionCmdHandler extends AbstractCmdHandler { + + protected CostMapResolutionCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(CostMapResolutionRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO res = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return res; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(CostMapResolutionRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java new file mode 100644 index 0000000..0335693 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 障碍物栅格数据接收 + */ +@Slf4j +@Component("/app_costmap_sender") +public class AppCostMapHandler extends AbstractSocketHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public AppCostMapHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + statusInfoService.saveCostMap(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java new file mode 100644 index 0000000..1c09cb9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 软件急停 + */ +@Data +public class CostMapResolutionRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "分辨率设置(默认0.2 (米))", dataType = "Integer") + private Double resolution; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java index cf7e273..b27d2a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -45,4 +45,9 @@ * 机器人巡点栅格 */ String KEY_CUR_TARGET_POINT_ID = "CUR_TARGET_POINT_ID_"; + + /** + * 障碍物栅格信息缓存 + */ + String KEY_CUR_COST_MAP_ID = "CUR_COST_MAP_ID_"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 8d77492..78d5ec0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,6 +14,8 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), //当前版本 暂不支撑 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java new file mode 100644 index 0000000..fe69a25 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +/** + * 分辨率设置 + */ +@Component("COSTMAP_RESOLUTION") +public class CostMapResolutionCmdHandler extends AbstractCmdHandler { + + protected CostMapResolutionCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(CostMapResolutionRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO res = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return res; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(CostMapResolutionRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java new file mode 100644 index 0000000..0335693 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 障碍物栅格数据接收 + */ +@Slf4j +@Component("/app_costmap_sender") +public class AppCostMapHandler extends AbstractSocketHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public AppCostMapHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + statusInfoService.saveCostMap(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java new file mode 100644 index 0000000..1c09cb9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 软件急停 + */ +@Data +public class CostMapResolutionRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "分辨率设置(默认0.2 (米))", dataType = "Integer") + private Double resolution; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java new file mode 100644 index 0000000..551bafd --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.robot.opt.instruct.response; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 栅格障碍物 + */ +@Data +public class AppCostmapResponseDTO implements Serializable { + /** + * 分辨率 + */ + private Double resolution; + /** + * 宽 + */ + private Integer width; + /** + * 高 + */ + private Integer height; + /** + * 栅格原点坐标x + */ + private BigDecimal origin_x; + /** + * 栅格原点坐标Y + */ + private BigDecimal origin_y; + /** + * 障碍物栅格数据 + */ + private List data; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java index cf7e273..b27d2a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -45,4 +45,9 @@ * 机器人巡点栅格 */ String KEY_CUR_TARGET_POINT_ID = "CUR_TARGET_POINT_ID_"; + + /** + * 障碍物栅格信息缓存 + */ + String KEY_CUR_COST_MAP_ID = "CUR_COST_MAP_ID_"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 8d77492..78d5ec0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,6 +14,8 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), //当前版本 暂不支撑 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java new file mode 100644 index 0000000..fe69a25 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +/** + * 分辨率设置 + */ +@Component("COSTMAP_RESOLUTION") +public class CostMapResolutionCmdHandler extends AbstractCmdHandler { + + protected CostMapResolutionCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(CostMapResolutionRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO res = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return res; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(CostMapResolutionRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java new file mode 100644 index 0000000..0335693 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 障碍物栅格数据接收 + */ +@Slf4j +@Component("/app_costmap_sender") +public class AppCostMapHandler extends AbstractSocketHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public AppCostMapHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + statusInfoService.saveCostMap(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java new file mode 100644 index 0000000..1c09cb9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 软件急停 + */ +@Data +public class CostMapResolutionRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "分辨率设置(默认0.2 (米))", dataType = "Integer") + private Double resolution; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java new file mode 100644 index 0000000..551bafd --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.robot.opt.instruct.response; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 栅格障碍物 + */ +@Data +public class AppCostmapResponseDTO implements Serializable { + /** + * 分辨率 + */ + private Double resolution; + /** + * 宽 + */ + private Integer width; + /** + * 高 + */ + private Integer height; + /** + * 栅格原点坐标x + */ + private BigDecimal origin_x; + /** + * 栅格原点坐标Y + */ + private BigDecimal origin_y; + /** + * 障碍物栅格数据 + */ + private List data; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index 18e8728..ea3ac98 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -3,6 +3,7 @@ import com.casic.missiles.modular.robot.dto.PointNextDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; /** * 机器人缓存服务 @@ -82,4 +83,12 @@ * @return */ PoseMessageResponseDTO readRobotPoint(Long robotId); + + /** + * 更新栅格缓存数据 + * + * @param robotId 机器人ID + * @param msg 消息 + */ + void updateCostMap(String robotId, AppCostmapResponseDTO msg); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java index cf7e273..b27d2a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -45,4 +45,9 @@ * 机器人巡点栅格 */ String KEY_CUR_TARGET_POINT_ID = "CUR_TARGET_POINT_ID_"; + + /** + * 障碍物栅格信息缓存 + */ + String KEY_CUR_COST_MAP_ID = "CUR_COST_MAP_ID_"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 8d77492..78d5ec0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,6 +14,8 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), //当前版本 暂不支撑 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java new file mode 100644 index 0000000..fe69a25 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +/** + * 分辨率设置 + */ +@Component("COSTMAP_RESOLUTION") +public class CostMapResolutionCmdHandler extends AbstractCmdHandler { + + protected CostMapResolutionCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(CostMapResolutionRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO res = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return res; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(CostMapResolutionRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java new file mode 100644 index 0000000..0335693 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 障碍物栅格数据接收 + */ +@Slf4j +@Component("/app_costmap_sender") +public class AppCostMapHandler extends AbstractSocketHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public AppCostMapHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + statusInfoService.saveCostMap(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java new file mode 100644 index 0000000..1c09cb9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 软件急停 + */ +@Data +public class CostMapResolutionRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "分辨率设置(默认0.2 (米))", dataType = "Integer") + private Double resolution; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java new file mode 100644 index 0000000..551bafd --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.robot.opt.instruct.response; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 栅格障碍物 + */ +@Data +public class AppCostmapResponseDTO implements Serializable { + /** + * 分辨率 + */ + private Double resolution; + /** + * 宽 + */ + private Integer width; + /** + * 高 + */ + private Integer height; + /** + * 栅格原点坐标x + */ + private BigDecimal origin_x; + /** + * 栅格原点坐标Y + */ + private BigDecimal origin_y; + /** + * 障碍物栅格数据 + */ + private List data; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index 18e8728..ea3ac98 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -3,6 +3,7 @@ import com.casic.missiles.modular.robot.dto.PointNextDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; /** * 机器人缓存服务 @@ -82,4 +83,12 @@ * @return */ PoseMessageResponseDTO readRobotPoint(Long robotId); + + /** + * 更新栅格缓存数据 + * + * @param robotId 机器人ID + * @param msg 消息 + */ + void updateCostMap(String robotId, AppCostmapResponseDTO msg); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6ab9802..1675445 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -95,4 +95,10 @@ * @param message 消息体 */ void saveVoltageResponseMessage(String robotId, MqttMessage message); + + /** + * @param robotId 机器人障碍物栅格数据保存 + * @param message 消息体 + */ + void saveCostMap(String robotId, MqttMessage message); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java index cf7e273..b27d2a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -45,4 +45,9 @@ * 机器人巡点栅格 */ String KEY_CUR_TARGET_POINT_ID = "CUR_TARGET_POINT_ID_"; + + /** + * 障碍物栅格信息缓存 + */ + String KEY_CUR_COST_MAP_ID = "CUR_COST_MAP_ID_"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 8d77492..78d5ec0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,6 +14,8 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), //当前版本 暂不支撑 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java new file mode 100644 index 0000000..fe69a25 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +/** + * 分辨率设置 + */ +@Component("COSTMAP_RESOLUTION") +public class CostMapResolutionCmdHandler extends AbstractCmdHandler { + + protected CostMapResolutionCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(CostMapResolutionRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO res = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return res; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(CostMapResolutionRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java new file mode 100644 index 0000000..0335693 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 障碍物栅格数据接收 + */ +@Slf4j +@Component("/app_costmap_sender") +public class AppCostMapHandler extends AbstractSocketHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public AppCostMapHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + statusInfoService.saveCostMap(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java new file mode 100644 index 0000000..1c09cb9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 软件急停 + */ +@Data +public class CostMapResolutionRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "分辨率设置(默认0.2 (米))", dataType = "Integer") + private Double resolution; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java new file mode 100644 index 0000000..551bafd --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.robot.opt.instruct.response; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 栅格障碍物 + */ +@Data +public class AppCostmapResponseDTO implements Serializable { + /** + * 分辨率 + */ + private Double resolution; + /** + * 宽 + */ + private Integer width; + /** + * 高 + */ + private Integer height; + /** + * 栅格原点坐标x + */ + private BigDecimal origin_x; + /** + * 栅格原点坐标Y + */ + private BigDecimal origin_y; + /** + * 障碍物栅格数据 + */ + private List data; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index 18e8728..ea3ac98 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -3,6 +3,7 @@ import com.casic.missiles.modular.robot.dto.PointNextDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; /** * 机器人缓存服务 @@ -82,4 +83,12 @@ * @return */ PoseMessageResponseDTO readRobotPoint(Long robotId); + + /** + * 更新栅格缓存数据 + * + * @param robotId 机器人ID + * @param msg 消息 + */ + void updateCostMap(String robotId, AppCostmapResponseDTO msg); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6ab9802..1675445 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -95,4 +95,10 @@ * @param message 消息体 */ void saveVoltageResponseMessage(String robotId, MqttMessage message); + + /** + * @param robotId 机器人障碍物栅格数据保存 + * @param message 消息体 + */ + void saveCostMap(String robotId, MqttMessage message); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index 5265a7d..c522def 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,12 +1,11 @@ package com.casic.missiles.modular.robot.service.impl; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.RandomUtil; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dto.PointNextDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import com.casic.missiles.modular.robot.service.IRobotCacheService; import com.casic.missiles.modular.robot.service.IRobotInfoService; import org.springframework.stereotype.Service; @@ -78,6 +77,11 @@ } @Override + public void updateCostMap(String robotId, AppCostmapResponseDTO msg) { + CacheUtil.put(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_COST_MAP_ID + robotId, msg); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; @@ -95,5 +99,4 @@ return currId; } - -} +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java index cf7e273..b27d2a4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/constants/RobotDictConstants.java @@ -45,4 +45,9 @@ * 机器人巡点栅格 */ String KEY_CUR_TARGET_POINT_ID = "CUR_TARGET_POINT_ID_"; + + /** + * 障碍物栅格信息缓存 + */ + String KEY_CUR_COST_MAP_ID = "CUR_COST_MAP_ID_"; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java index 8d77492..78d5ec0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/enums/InstructCodeEnums.java @@ -14,6 +14,8 @@ public enum InstructCodeEnums { TRACK_LIST("/get_track_list" , "/get_track_list_response" , "获取轨迹列表" , true, new TypeReference>>() { }), + COSTMAP_RESOLUTION("/set_costmap_resolution" , "/set_costmap_resolution_response" , "设置栅格分辨率" , true, new TypeReference>() { + }), TASKPOINT_LIST("/get_taskpoint_list" , "/get_taskpoint_list_response" , "获取关键点列表" , true, new TypeReference>>() { }), //当前版本 暂不支撑 diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java new file mode 100644 index 0000000..fe69a25 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/CostMapResolutionCmdHandler.java @@ -0,0 +1,48 @@ +package com.casic.missiles.modular.robot.opt.handler.cmd; + +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.opt.IRobotRouteOptService; +import com.casic.missiles.modular.robot.opt.enums.InstructCodeEnums; +import com.casic.missiles.modular.robot.opt.handler.AbstractCmdHandler; +import com.casic.missiles.modular.robot.opt.instruct.base.dto.MessageRequestDTO; +import com.casic.missiles.modular.robot.opt.instruct.dto.CostMapResolutionRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.stereotype.Component; + +/** + * 分辨率设置 + */ +@Component("COSTMAP_RESOLUTION") +public class CostMapResolutionCmdHandler extends AbstractCmdHandler { + + protected CostMapResolutionCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + super(optService, service); + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Override + public ResponseDataDTO senderCmd(CostMapResolutionRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + messageDTO.setMsg(request); + ResponseDataDTO res = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return res; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(CostMapResolutionRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java new file mode 100644 index 0000000..0335693 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/AppCostMapHandler.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.robot.opt.handler.msg; + +import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; +import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 障碍物栅格数据接收 + */ +@Slf4j +@Component("/app_costmap_sender") +public class AppCostMapHandler extends AbstractSocketHandler { + private final IRobotStatusInfoService statusInfoService; + private static Map index = new ConcurrentHashMap<>(); + + public AppCostMapHandler(IRobotStatusInfoService statusInfoService) { + this.statusInfoService = statusInfoService; + } + + @Override + public void process(String robotId, String topic, MqttMessage message) { + statusInfoService.saveCostMap(robotId, message); + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java new file mode 100644 index 0000000..1c09cb9 --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/dto/CostMapResolutionRequest.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.robot.opt.instruct.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 软件急停 + */ +@Data +public class CostMapResolutionRequest extends BaseRobotCmdDTO { + @ApiModelProperty(value = "分辨率设置(默认0.2 (米))", dataType = "Integer") + private Double resolution; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java new file mode 100644 index 0000000..551bafd --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/instruct/response/AppCostmapResponseDTO.java @@ -0,0 +1,38 @@ +package com.casic.missiles.modular.robot.opt.instruct.response; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 栅格障碍物 + */ +@Data +public class AppCostmapResponseDTO implements Serializable { + /** + * 分辨率 + */ + private Double resolution; + /** + * 宽 + */ + private Integer width; + /** + * 高 + */ + private Integer height; + /** + * 栅格原点坐标x + */ + private BigDecimal origin_x; + /** + * 栅格原点坐标Y + */ + private BigDecimal origin_y; + /** + * 障碍物栅格数据 + */ + private List data; +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java index 18e8728..ea3ac98 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotCacheService.java @@ -3,6 +3,7 @@ import com.casic.missiles.modular.robot.dto.PointNextDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; /** * 机器人缓存服务 @@ -82,4 +83,12 @@ * @return */ PoseMessageResponseDTO readRobotPoint(Long robotId); + + /** + * 更新栅格缓存数据 + * + * @param robotId 机器人ID + * @param msg 消息 + */ + void updateCostMap(String robotId, AppCostmapResponseDTO msg); } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java index 6ab9802..1675445 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/IRobotStatusInfoService.java @@ -95,4 +95,10 @@ * @param message 消息体 */ void saveVoltageResponseMessage(String robotId, MqttMessage message); + + /** + * @param robotId 机器人障碍物栅格数据保存 + * @param message 消息体 + */ + void saveCostMap(String robotId, MqttMessage message); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java index 5265a7d..c522def 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotCacheServiceImpl.java @@ -1,12 +1,11 @@ package com.casic.missiles.modular.robot.service.impl; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.RandomUtil; import com.casic.missiles.core.cache.CacheUtil; import com.casic.missiles.modular.constants.RobotDictConstants; import com.casic.missiles.modular.robot.dto.PointNextDTO; import com.casic.missiles.modular.robot.model.RobotInfo; import com.casic.missiles.modular.robot.opt.instruct.dto.PoseMessageResponseDTO; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import com.casic.missiles.modular.robot.service.IRobotCacheService; import com.casic.missiles.modular.robot.service.IRobotInfoService; import org.springframework.stereotype.Service; @@ -78,6 +77,11 @@ } @Override + public void updateCostMap(String robotId, AppCostmapResponseDTO msg) { + CacheUtil.put(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_COST_MAP_ID + robotId, msg); + } + + @Override public Long readTaskId(Long robotId) { Long currId = CacheUtil.get(RobotDictConstants.CACHE_SCHEMA, RobotDictConstants.KEY_CUR_TASK_ID + robotId); return currId; @@ -95,5 +99,4 @@ return currId; } - -} +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java index 609a4af..4646c2c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/service/impl/RobotStatusInfoServiceImpl.java @@ -18,9 +18,11 @@ import com.casic.missiles.modular.robot.opt.instruct.base.dto.RobotResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.ProcessMessageResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.dto.SensorStatusDTO; +import com.casic.missiles.modular.robot.opt.instruct.response.AppCostmapResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.response.SpeedResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.response.StopStateResponseDTO; import com.casic.missiles.modular.robot.opt.instruct.response.VoltageResponseDTO; +import com.casic.missiles.modular.robot.service.IRobotCacheService; import com.casic.missiles.modular.robot.service.IRobotInfoService; import com.casic.missiles.modular.robot.service.IRobotStatusInfoService; import lombok.extern.slf4j.Slf4j; @@ -47,17 +49,19 @@ public class RobotStatusInfoServiceImpl extends ServiceImpl implements IRobotStatusInfoService { private final AbstractDictService dictService; private final IRobotInfoService robotInfoService; + private final IRobotCacheService cacheService; - public RobotStatusInfoServiceImpl(AbstractDictService dictService, @Lazy IRobotInfoService robotInfoService) { + public RobotStatusInfoServiceImpl(AbstractDictService dictService, @Lazy IRobotInfoService robotInfoService, @Lazy IRobotCacheService cacheService) { this.dictService = dictService; this.robotInfoService = robotInfoService; + this.cacheService = cacheService; } @Override public void updateConnStatus(String robotId, Integer status) { UpdateWrapper query = new UpdateWrapper<>(); - query.set("conn_status" , status); - query.eq("robot_id" , robotId); + query.set("conn_status", status); + query.eq("robot_id", robotId); update(query); } @@ -71,29 +75,29 @@ } private void wrapInfo(RobotStatusInfo statusInfo) { - statusInfo.setDiscernTypeName(getDictName("discernType" , statusInfo.getDiscernType())); + statusInfo.setDiscernTypeName(getDictName("discernType", statusInfo.getDiscernType())); //暂停状态 - statusInfo.setAppNavPauseName(getDictName("appNavPause" , statusInfo.getAppNavPause())); + statusInfo.setAppNavPauseName(getDictName("appNavPause", statusInfo.getAppNavPause())); //开启状态 - statusInfo.setTrackStatusName(getDictName("trackStatus" , statusInfo.getTrackStatus())); - String statusName = getDictName("trackStatus" , statusInfo.getNavigationStatus()); + statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); + String statusName = getDictName("trackStatus", statusInfo.getNavigationStatus()); statusInfo.setNavigationStatusName(statusName); - statusInfo.setDataRecordName(getDictName("trackStatus" , statusInfo.getDataRecord())); - statusInfo.setTrackStatusName(getDictName("trackStatus" , statusInfo.getTrackStatus())); - statusInfo.setTrackName(getDictName("trackStatus" , statusInfo.getTrack())); - statusInfo.setInsStatusName(getDictName("trackStatus" , statusInfo.getInsStatus())); - statusInfo.setAppStopNavtrackName(getDictName("trackStatus" , statusInfo.getAppStopNavtrack())); - statusInfo.setTrackRecordName(getDictName("trackStatus" , statusInfo.getTrackRecord())); + statusInfo.setDataRecordName(getDictName("trackStatus", statusInfo.getDataRecord())); + statusInfo.setTrackStatusName(getDictName("trackStatus", statusInfo.getTrackStatus())); + statusInfo.setTrackName(getDictName("trackStatus", statusInfo.getTrack())); + statusInfo.setInsStatusName(getDictName("trackStatus", statusInfo.getInsStatus())); + statusInfo.setAppStopNavtrackName(getDictName("trackStatus", statusInfo.getAppStopNavtrack())); + statusInfo.setTrackRecordName(getDictName("trackStatus", statusInfo.getTrackRecord())); //收到状态 - statusInfo.setLidarMsgName(getDictName("lidarMsg" , statusInfo.getLidarMsg())); - statusInfo.setImuMsgName(getDictName("lidarMsg" , statusInfo.getImuMsg())); - statusInfo.setChargeMsgName(getDictName("lidarMsg" , statusInfo.getChargeMsg())); - statusInfo.setGpsMsgName(getDictName("lidarMsg" , statusInfo.getGpsMsg())); + statusInfo.setLidarMsgName(getDictName("lidarMsg", statusInfo.getLidarMsg())); + statusInfo.setImuMsgName(getDictName("lidarMsg", statusInfo.getImuMsg())); + statusInfo.setChargeMsgName(getDictName("lidarMsg", statusInfo.getChargeMsg())); + statusInfo.setGpsMsgName(getDictName("lidarMsg", statusInfo.getGpsMsg())); //连接状态 - statusInfo.setConnStatusName(getDictName("connStatus" , statusInfo.getConnStatus())); + statusInfo.setConnStatusName(getDictName("connStatus", statusInfo.getConnStatus())); } @@ -125,11 +129,11 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); SensorStatusDTO msg = responseDTO.getMsg(); - query.set("lidar_msg" , msg.getLidarMsg() == null ? 0 : msg.getLidarMsg()); - query.set("imu_msg" , msg.getImuMsg() == null ? 0 : msg.getImuMsg()); - query.set("charge_msg" , msg.getChargeMsg() == null ? 0 : msg.getChargeMsg()); - query.set("gps_msg" , msg.getGpsMsg() == null ? 0 : msg.getGpsMsg()); - query.eq("robot_id" , robotId); + query.set("lidar_msg", msg.getLidarMsg() == null ? 0 : msg.getLidarMsg()); + query.set("imu_msg", msg.getImuMsg() == null ? 0 : msg.getImuMsg()); + query.set("charge_msg", msg.getChargeMsg() == null ? 0 : msg.getChargeMsg()); + query.set("gps_msg", msg.getGpsMsg() == null ? 0 : msg.getGpsMsg()); + query.eq("robot_id", robotId); update(query); } } @@ -148,8 +152,8 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); ProcessMessageResponseDTO msg = responseDTO.getMsg(); - query.set("process_message" , msg.getP()); - query.eq("robot_id" , robotId); + query.set("process_message", msg.getP()); + query.eq("robot_id", robotId); update(query); } } @@ -168,8 +172,8 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); RobotMsgDTO msg = responseDTO.getMsg(); - query.set("app_nav_pause" , msg.getResult()); - query.eq("robot_id" , robotId); + query.set("app_nav_pause", msg.getResult()); + query.eq("robot_id", robotId); update(query); } } @@ -182,8 +186,8 @@ if (responseDTO.getMsg() != null) { UpdateWrapper query = new UpdateWrapper<>(); RobotMsgDTO msg = responseDTO.getMsg(); - query.set("app_stop_navtrack" , msg.getResult()); - query.eq("robot_id" , robotId); + query.set("app_stop_navtrack", msg.getResult()); + query.eq("robot_id", robotId); update(query); } } @@ -191,16 +195,16 @@ @Override public void updateCurrTask(String robotId, Long currRouteId, Long currTaskId) { UpdateWrapper query = new UpdateWrapper<>(); - query.set("curr_route_id" , currRouteId); - query.set("curr_task_id" , currTaskId); - query.eq("robot_id" , robotId); + query.set("curr_route_id", currRouteId); + query.set("curr_task_id", currTaskId); + query.eq("robot_id", robotId); update(query); } @Override public RobotStatusInfo getStatusByRobotId(String robotId) { QueryWrapper query = new QueryWrapper<>(); - query.eq("robot_id" , robotId); + query.eq("robot_id", robotId); return getOne(query); } @@ -210,11 +214,11 @@ RobotResponseDTO responseDTO = JSON.parseObject(json, new TypeReference>() { }); if (responseDTO != null && responseDTO.getMsg() != null) { - log.info("速度信息保存:{}" , responseDTO.getMsg()); + log.info("速度信息保存:{}", responseDTO.getMsg()); UpdateWrapper query = new UpdateWrapper<>(); - query.set("robot_v" , responseDTO.getMsg().getSpeed().getV()); - query.set("robot_w" , responseDTO.getMsg().getSpeed().getW()); - query.eq("robot_id" , robotId); + query.set("robot_v", responseDTO.getMsg().getSpeed().getV()); + query.set("robot_w", responseDTO.getMsg().getSpeed().getW()); + query.eq("robot_id", robotId); update(query); } } @@ -224,7 +228,7 @@ RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() { }); if (responseDTO != null && responseDTO.getMsg() != null) { - log.info("急停状态保存:{}" , responseDTO.getMsg()); + log.info("急停状态保存:{}", responseDTO.getMsg()); LambdaUpdateWrapper query = new LambdaUpdateWrapper<>(); query.set(RobotStatusInfo::getButton, responseDTO.getMsg().getButton()); query.set(RobotStatusInfo::getCollision, responseDTO.getMsg().getCollision()); @@ -243,14 +247,14 @@ //电压下限 45V 电压上限 58.8V 估算电量 if (responseDTO != null && responseDTO.getMsg() != null) { RobotInfo info = robotInfoService.getById(robotId); - log.info("电压状态保存:{}" , responseDTO.getMsg()); + log.info("电压状态保存:{}", responseDTO.getMsg()); LambdaUpdateWrapper query = new LambdaUpdateWrapper<>(); if (CollectionUtil.isNotEmpty(responseDTO.getMsg().getVoltage())) { Integer v = responseDTO.getMsg().getVoltage().get(0); query.set(RobotStatusInfo::getVoltage, v); //计算电量 - Double quantity = new BigDecimal(v - info.getVoltageMin()).divide(new BigDecimal(info.getVoltageMax() - info.getVoltageMin()),2, BigDecimal.ROUND_HALF_UP).doubleValue(); - query.set(RobotStatusInfo::getElectricityQuantity, quantity*100); + Double quantity = new BigDecimal(v - info.getVoltageMin()).divide(new BigDecimal(info.getVoltageMax() - info.getVoltageMin()), 2, BigDecimal.ROUND_HALF_UP).doubleValue(); + query.set(RobotStatusInfo::getElectricityQuantity, quantity * 100); query.eq(RobotStatusInfo::getRobotId, robotId); update(query); } @@ -258,6 +262,16 @@ } + @Override + public void saveCostMap(String robotId, MqttMessage message) { + RobotResponseDTO responseDTO = parseJson(message, new TypeReference>() { + }); + if (responseDTO != null && responseDTO.getMsg() != null) { + cacheService.updateCostMap(robotId, responseDTO.getMsg()); + log.info("----------------------------------------------------- json data:{}", JSON.toJSONString(responseDTO.getMsg())); + } + } + private RobotResponseDTO parseJson(MqttMessage message, TypeReference> cls) { String json = new String(message.getPayload()); if (json.startsWith("\"")) { @@ -266,7 +280,7 @@ if (json.endsWith("\"")) { json = json.substring(0, json.length() - 1); } - json = json.replaceAll("\\\\" , ""); + json = json.replaceAll("\\\\", ""); log.info(json); RobotResponseDTO responseDTO = JSON.parseObject(json, cls); return responseDTO;