diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } 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 684ba69..8d77492 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 @@ -21,7 +21,7 @@ }), DATA_RECORD("/data_record" , "/data_record_response" , "启动或关闭录包功能" , true, new TypeReference>() { }), - APP_CMD_VEL("/1app_cmd_vel1" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { + APP_CMD_VEL("/app_cmd_vel" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { }), CHANGE_PCD("/change_pcd" , "/change_pcd_response" , "转换栅格地图" , true, new TypeReference>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } 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 684ba69..8d77492 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 @@ -21,7 +21,7 @@ }), DATA_RECORD("/data_record" , "/data_record_response" , "启动或关闭录包功能" , true, new TypeReference>() { }), - APP_CMD_VEL("/1app_cmd_vel1" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { + APP_CMD_VEL("/app_cmd_vel" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { }), CHANGE_PCD("/change_pcd" , "/change_pcd_response" , "转换栅格地图" , true, new TypeReference>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java index b5f46d3..e195e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.model.RobotInfo; 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; @@ -16,6 +17,7 @@ @Component("CHANGE_PCD") public class ChangPcdCmdHandler extends AbstractCmdHandler { + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { super(optService, service); } @@ -47,6 +49,11 @@ */ @Override public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + + if (request.getAction() == 0) { + RobotInfo robotInfo = service.getById(request.getRobotId()); + service.loadPcd(robotInfo); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } 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 684ba69..8d77492 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 @@ -21,7 +21,7 @@ }), DATA_RECORD("/data_record" , "/data_record_response" , "启动或关闭录包功能" , true, new TypeReference>() { }), - APP_CMD_VEL("/1app_cmd_vel1" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { + APP_CMD_VEL("/app_cmd_vel" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { }), CHANGE_PCD("/change_pcd" , "/change_pcd_response" , "转换栅格地图" , true, new TypeReference>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java index b5f46d3..e195e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.model.RobotInfo; 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; @@ -16,6 +17,7 @@ @Component("CHANGE_PCD") public class ChangPcdCmdHandler extends AbstractCmdHandler { + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { super(optService, service); } @@ -47,6 +49,11 @@ */ @Override public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + + if (request.getAction() == 0) { + RobotInfo robotInfo = service.getById(request.getRobotId()); + service.loadPcd(robotInfo); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java deleted file mode 100644 index d6139dc..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -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.TargetPointRequest; -import com.casic.missiles.modular.robot.service.IRobotInfoService; -import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -@Component("SET_TARGETPOINT") -public class TargentPointCmdHandler extends AbstractCmdHandler { - private final ITaskInfoService taskInfoService; - private final IRouteKeyPointInfoService keyPointInfoService; - - protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { - super(optService, service); - this.taskInfoService = taskInfoService; - this.keyPointInfoService = keyPointInfoService; - } - - /** - * 发送命令 - * - * @param request 消息请求体 - * @param enums 指令集 - * @return - */ - @Transactional - @Override - public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - //读取默认关键点信息 - messageDTO.setMsg(request); - ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); - return list; - } - - /** - * 结果集调用 - * - * @param request 消息请求体 - * @param response 响应体 - * @return - */ - @Override - public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { - //增加循迹任务记录 -// taskInfoService.reloadTask(request, getRobotInfo()); - return response; - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } 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 684ba69..8d77492 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 @@ -21,7 +21,7 @@ }), DATA_RECORD("/data_record" , "/data_record_response" , "启动或关闭录包功能" , true, new TypeReference>() { }), - APP_CMD_VEL("/1app_cmd_vel1" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { + APP_CMD_VEL("/app_cmd_vel" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { }), CHANGE_PCD("/change_pcd" , "/change_pcd_response" , "转换栅格地图" , true, new TypeReference>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java index b5f46d3..e195e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.model.RobotInfo; 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; @@ -16,6 +17,7 @@ @Component("CHANGE_PCD") public class ChangPcdCmdHandler extends AbstractCmdHandler { + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { super(optService, service); } @@ -47,6 +49,11 @@ */ @Override public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + + if (request.getAction() == 0) { + RobotInfo robotInfo = service.getById(request.getRobotId()); + service.loadPcd(robotInfo); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java deleted file mode 100644 index d6139dc..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -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.TargetPointRequest; -import com.casic.missiles.modular.robot.service.IRobotInfoService; -import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -@Component("SET_TARGETPOINT") -public class TargentPointCmdHandler extends AbstractCmdHandler { - private final ITaskInfoService taskInfoService; - private final IRouteKeyPointInfoService keyPointInfoService; - - protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { - super(optService, service); - this.taskInfoService = taskInfoService; - this.keyPointInfoService = keyPointInfoService; - } - - /** - * 发送命令 - * - * @param request 消息请求体 - * @param enums 指令集 - * @return - */ - @Transactional - @Override - public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - //读取默认关键点信息 - messageDTO.setMsg(request); - ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); - return list; - } - - /** - * 结果集调用 - * - * @param request 消息请求体 - * @param response 响应体 - * @return - */ - @Override - public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { - //增加循迹任务记录 -// taskInfoService.reloadTask(request, getRobotInfo()); - return response; - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java new file mode 100644 index 0000000..c1c09fa --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java @@ -0,0 +1,54 @@ +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.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargetPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargetPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } 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 684ba69..8d77492 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 @@ -21,7 +21,7 @@ }), DATA_RECORD("/data_record" , "/data_record_response" , "启动或关闭录包功能" , true, new TypeReference>() { }), - APP_CMD_VEL("/1app_cmd_vel1" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { + APP_CMD_VEL("/app_cmd_vel" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { }), CHANGE_PCD("/change_pcd" , "/change_pcd_response" , "转换栅格地图" , true, new TypeReference>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java index b5f46d3..e195e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.model.RobotInfo; 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; @@ -16,6 +17,7 @@ @Component("CHANGE_PCD") public class ChangPcdCmdHandler extends AbstractCmdHandler { + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { super(optService, service); } @@ -47,6 +49,11 @@ */ @Override public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + + if (request.getAction() == 0) { + RobotInfo robotInfo = service.getById(request.getRobotId()); + service.loadPcd(robotInfo); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java deleted file mode 100644 index d6139dc..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -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.TargetPointRequest; -import com.casic.missiles.modular.robot.service.IRobotInfoService; -import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -@Component("SET_TARGETPOINT") -public class TargentPointCmdHandler extends AbstractCmdHandler { - private final ITaskInfoService taskInfoService; - private final IRouteKeyPointInfoService keyPointInfoService; - - protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { - super(optService, service); - this.taskInfoService = taskInfoService; - this.keyPointInfoService = keyPointInfoService; - } - - /** - * 发送命令 - * - * @param request 消息请求体 - * @param enums 指令集 - * @return - */ - @Transactional - @Override - public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - //读取默认关键点信息 - messageDTO.setMsg(request); - ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); - return list; - } - - /** - * 结果集调用 - * - * @param request 消息请求体 - * @param response 响应体 - * @return - */ - @Override - public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { - //增加循迹任务记录 -// taskInfoService.reloadTask(request, getRobotInfo()); - return response; - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java new file mode 100644 index 0000000..c1c09fa --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java @@ -0,0 +1,54 @@ +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.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargetPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargetPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java index 27a3499..2926635 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java @@ -38,7 +38,7 @@ } MessageRequestDTO messageDTO = new MessageRequestDTO(); messageDTO.setMsg(request); - ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.TASKPOINT_LIST, messageDTO); + ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), enums, messageDTO); return list; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } 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 684ba69..8d77492 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 @@ -21,7 +21,7 @@ }), DATA_RECORD("/data_record" , "/data_record_response" , "启动或关闭录包功能" , true, new TypeReference>() { }), - APP_CMD_VEL("/1app_cmd_vel1" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { + APP_CMD_VEL("/app_cmd_vel" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { }), CHANGE_PCD("/change_pcd" , "/change_pcd_response" , "转换栅格地图" , true, new TypeReference>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java index b5f46d3..e195e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.model.RobotInfo; 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; @@ -16,6 +17,7 @@ @Component("CHANGE_PCD") public class ChangPcdCmdHandler extends AbstractCmdHandler { + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { super(optService, service); } @@ -47,6 +49,11 @@ */ @Override public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + + if (request.getAction() == 0) { + RobotInfo robotInfo = service.getById(request.getRobotId()); + service.loadPcd(robotInfo); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java deleted file mode 100644 index d6139dc..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -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.TargetPointRequest; -import com.casic.missiles.modular.robot.service.IRobotInfoService; -import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -@Component("SET_TARGETPOINT") -public class TargentPointCmdHandler extends AbstractCmdHandler { - private final ITaskInfoService taskInfoService; - private final IRouteKeyPointInfoService keyPointInfoService; - - protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { - super(optService, service); - this.taskInfoService = taskInfoService; - this.keyPointInfoService = keyPointInfoService; - } - - /** - * 发送命令 - * - * @param request 消息请求体 - * @param enums 指令集 - * @return - */ - @Transactional - @Override - public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - //读取默认关键点信息 - messageDTO.setMsg(request); - ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); - return list; - } - - /** - * 结果集调用 - * - * @param request 消息请求体 - * @param response 响应体 - * @return - */ - @Override - public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { - //增加循迹任务记录 -// taskInfoService.reloadTask(request, getRobotInfo()); - return response; - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java new file mode 100644 index 0000000..c1c09fa --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java @@ -0,0 +1,54 @@ +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.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargetPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargetPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java index 27a3499..2926635 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java @@ -38,7 +38,7 @@ } MessageRequestDTO messageDTO = new MessageRequestDTO(); messageDTO.setMsg(request); - ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.TASKPOINT_LIST, messageDTO); + ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), enums, messageDTO); return list; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java index 6fa567e..035f79e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java @@ -2,19 +2,22 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.IBaseRobotService; 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.TrackRecordRequest; import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component("TRACK_RECORD") public class TrackRecordCmdHandler extends AbstractCmdHandler { - - protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + private final IBaseRobotService baseRobotService; + protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service,@Lazy IBaseRobotService baseRobotService) { super(optService, service); + this.baseRobotService = baseRobotService; } /** @@ -44,6 +47,9 @@ */ @Override public ResponseDataDTO afterInvoke(TrackRecordRequest request, ResponseDataDTO response) { + if(request.getAction()==0){ + baseRobotService.reloadTrack(request); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } 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 684ba69..8d77492 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 @@ -21,7 +21,7 @@ }), DATA_RECORD("/data_record" , "/data_record_response" , "启动或关闭录包功能" , true, new TypeReference>() { }), - APP_CMD_VEL("/1app_cmd_vel1" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { + APP_CMD_VEL("/app_cmd_vel" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { }), CHANGE_PCD("/change_pcd" , "/change_pcd_response" , "转换栅格地图" , true, new TypeReference>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java index b5f46d3..e195e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.model.RobotInfo; 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; @@ -16,6 +17,7 @@ @Component("CHANGE_PCD") public class ChangPcdCmdHandler extends AbstractCmdHandler { + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { super(optService, service); } @@ -47,6 +49,11 @@ */ @Override public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + + if (request.getAction() == 0) { + RobotInfo robotInfo = service.getById(request.getRobotId()); + service.loadPcd(robotInfo); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java deleted file mode 100644 index d6139dc..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -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.TargetPointRequest; -import com.casic.missiles.modular.robot.service.IRobotInfoService; -import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -@Component("SET_TARGETPOINT") -public class TargentPointCmdHandler extends AbstractCmdHandler { - private final ITaskInfoService taskInfoService; - private final IRouteKeyPointInfoService keyPointInfoService; - - protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { - super(optService, service); - this.taskInfoService = taskInfoService; - this.keyPointInfoService = keyPointInfoService; - } - - /** - * 发送命令 - * - * @param request 消息请求体 - * @param enums 指令集 - * @return - */ - @Transactional - @Override - public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - //读取默认关键点信息 - messageDTO.setMsg(request); - ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); - return list; - } - - /** - * 结果集调用 - * - * @param request 消息请求体 - * @param response 响应体 - * @return - */ - @Override - public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { - //增加循迹任务记录 -// taskInfoService.reloadTask(request, getRobotInfo()); - return response; - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java new file mode 100644 index 0000000..c1c09fa --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java @@ -0,0 +1,54 @@ +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.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargetPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargetPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java index 27a3499..2926635 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java @@ -38,7 +38,7 @@ } MessageRequestDTO messageDTO = new MessageRequestDTO(); messageDTO.setMsg(request); - ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.TASKPOINT_LIST, messageDTO); + ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), enums, messageDTO); return list; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java index 6fa567e..035f79e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java @@ -2,19 +2,22 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.IBaseRobotService; 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.TrackRecordRequest; import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component("TRACK_RECORD") public class TrackRecordCmdHandler extends AbstractCmdHandler { - - protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + private final IBaseRobotService baseRobotService; + protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service,@Lazy IBaseRobotService baseRobotService) { super(optService, service); + this.baseRobotService = baseRobotService; } /** @@ -44,6 +47,9 @@ */ @Override public ResponseDataDTO afterInvoke(TrackRecordRequest request, ResponseDataDTO response) { + if(request.getAction()==0){ + baseRobotService.reloadTrack(request); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java index 1bc34e1..1cf0e55 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -3,7 +3,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructStatusMsgEnums; import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.springframework.stereotype.Component; @@ -17,7 +16,6 @@ private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { this.robotTrajectoryInfoService = robotTrajectoryInfoService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } 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 684ba69..8d77492 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 @@ -21,7 +21,7 @@ }), DATA_RECORD("/data_record" , "/data_record_response" , "启动或关闭录包功能" , true, new TypeReference>() { }), - APP_CMD_VEL("/1app_cmd_vel1" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { + APP_CMD_VEL("/app_cmd_vel" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { }), CHANGE_PCD("/change_pcd" , "/change_pcd_response" , "转换栅格地图" , true, new TypeReference>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java index b5f46d3..e195e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.model.RobotInfo; 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; @@ -16,6 +17,7 @@ @Component("CHANGE_PCD") public class ChangPcdCmdHandler extends AbstractCmdHandler { + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { super(optService, service); } @@ -47,6 +49,11 @@ */ @Override public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + + if (request.getAction() == 0) { + RobotInfo robotInfo = service.getById(request.getRobotId()); + service.loadPcd(robotInfo); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java deleted file mode 100644 index d6139dc..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -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.TargetPointRequest; -import com.casic.missiles.modular.robot.service.IRobotInfoService; -import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -@Component("SET_TARGETPOINT") -public class TargentPointCmdHandler extends AbstractCmdHandler { - private final ITaskInfoService taskInfoService; - private final IRouteKeyPointInfoService keyPointInfoService; - - protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { - super(optService, service); - this.taskInfoService = taskInfoService; - this.keyPointInfoService = keyPointInfoService; - } - - /** - * 发送命令 - * - * @param request 消息请求体 - * @param enums 指令集 - * @return - */ - @Transactional - @Override - public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - //读取默认关键点信息 - messageDTO.setMsg(request); - ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); - return list; - } - - /** - * 结果集调用 - * - * @param request 消息请求体 - * @param response 响应体 - * @return - */ - @Override - public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { - //增加循迹任务记录 -// taskInfoService.reloadTask(request, getRobotInfo()); - return response; - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java new file mode 100644 index 0000000..c1c09fa --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java @@ -0,0 +1,54 @@ +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.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargetPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargetPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java index 27a3499..2926635 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java @@ -38,7 +38,7 @@ } MessageRequestDTO messageDTO = new MessageRequestDTO(); messageDTO.setMsg(request); - ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.TASKPOINT_LIST, messageDTO); + ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), enums, messageDTO); return list; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java index 6fa567e..035f79e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java @@ -2,19 +2,22 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.IBaseRobotService; 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.TrackRecordRequest; import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component("TRACK_RECORD") public class TrackRecordCmdHandler extends AbstractCmdHandler { - - protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + private final IBaseRobotService baseRobotService; + protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service,@Lazy IBaseRobotService baseRobotService) { super(optService, service); + this.baseRobotService = baseRobotService; } /** @@ -44,6 +47,9 @@ */ @Override public ResponseDataDTO afterInvoke(TrackRecordRequest request, ResponseDataDTO response) { + if(request.getAction()==0){ + baseRobotService.reloadTrack(request); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java index 1bc34e1..1cf0e55 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -3,7 +3,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructStatusMsgEnums; import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.springframework.stereotype.Component; @@ -17,7 +16,6 @@ private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { this.robotTrajectoryInfoService = robotTrajectoryInfoService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java index 51192fd..511df3d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java @@ -39,60 +39,6 @@ this.taskInfoService = taskInfoService; } - @Override - public void getRobotStatus(Long id) { - - } - - @Override - public void travel(float priority, float vSpeed, float wSpeed) { - - } - - @Override - public void monitorStatus() { - //机器人状态监测 - } - - @Transactional - @SneakyThrows - @Override - public void initMonitor(RobotInfo info) { - try { - // 默认主题订阅(用于机器消息推送) - MqttClientConnection mqttClient = MqttClientConnection.mqttClients.get(info.getId() + ""); - MqttClient client = mqttClient.getMqttClient(); - - //线路读取 - TrackListRequest trackListRequest = new TrackListRequest(); - trackListRequest.setRobotId(info.getId()); - trackListRequest.setSn(info.getId() + ""); - ResponseDataDTO> requestDTO = execCmdHandler(trackListRequest, InstructCodeEnums.TRACK_LIST); - - //线路关键点读取 - if (requestDTO.getData() != null) { - for (RouteInfo routeInfo : requestDTO.getData()) { - TrackPointListRequest request = new TrackPointListRequest(); - request.setRobotId(routeInfo.getRobotId()); - request.setSn(routeInfo.getRobotId() + ""); - request.setTrack_name(routeInfo.getTargetId()); - execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST); - } - } - - if (StrUtil.isNotEmpty(info.getDefaultTopic())) { - String[] topics = info.getDefaultTopic().split(","); - // 订阅默认消息,消息处理器统一处理 - client.subscribe(topics); - } - //机器人pcd读取 - robotInfoService.loadPcd(info); - } catch (Exception e) { - log.error("机器人信息初始化读取失败" , e); - } - } - - /** * 机器人实时控制接口 * @@ -119,11 +65,64 @@ @Override public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums, IBaseCmdHandler cmdHandler) { cmdHandler.initHandler((BaseRobotCmdDTO) request); - ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request,enums); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, enums); result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); return result; } + @Transactional + @Override + public void reloadRobot(BaseRobotCmdDTO request) { + RobotInfo info = robotInfoService.getById(request.getRobotId()); + initMonitor(info); + } + @Transactional + @SneakyThrows + @Override + public void initMonitor(RobotInfo info) { + try { + MqttClientConnection mqttClient = MqttClientConnection.mqttClients.get(info.getId() + ""); + MqttClient client = mqttClient.getMqttClient(); + + if (StrUtil.isNotEmpty(info.getDefaultTopic())) { + String[] topics = info.getDefaultTopic().split(","); + // 订阅默认消息,消息处理器统一处理 + client.subscribe(topics); + } + BaseRobotCmdDTO cmdDTO = new BaseRobotCmdDTO(); + cmdDTO.setRobotId(info.getId()); + reloadTrack(cmdDTO); + reloadPcd(info); + } catch (Exception e) { + log.error("机器人信息初始化读取失败", e); + } + } + + @Override + public void reloadTrack(BaseRobotCmdDTO dto) { + //线路读取 + TrackListRequest trackListRequest = new TrackListRequest(); + trackListRequest.setRobotId(dto.getRobotId()); + trackListRequest.setSn(dto.getRobotId() + ""); + ResponseDataDTO> requestDTO = execCmdHandler(trackListRequest, InstructCodeEnums.TRACK_LIST); + //线路关键点读取 + if (requestDTO.getData() != null) { + for (RouteInfo routeInfo : requestDTO.getData()) { + TrackPointListRequest request = new TrackPointListRequest(); + request.setRobotId(routeInfo.getRobotId()); + request.setSn(routeInfo.getRobotId() + ""); + request.setTrack_name(routeInfo.getTargetId()); + execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST); + } + } + } + + @Override + public void reloadPcd(RobotInfo info) { + //机器人pcd读取 + robotInfoService.loadPcd(info); + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } 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 684ba69..8d77492 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 @@ -21,7 +21,7 @@ }), DATA_RECORD("/data_record" , "/data_record_response" , "启动或关闭录包功能" , true, new TypeReference>() { }), - APP_CMD_VEL("/1app_cmd_vel1" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { + APP_CMD_VEL("/app_cmd_vel" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { }), CHANGE_PCD("/change_pcd" , "/change_pcd_response" , "转换栅格地图" , true, new TypeReference>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java index b5f46d3..e195e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.model.RobotInfo; 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; @@ -16,6 +17,7 @@ @Component("CHANGE_PCD") public class ChangPcdCmdHandler extends AbstractCmdHandler { + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { super(optService, service); } @@ -47,6 +49,11 @@ */ @Override public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + + if (request.getAction() == 0) { + RobotInfo robotInfo = service.getById(request.getRobotId()); + service.loadPcd(robotInfo); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java deleted file mode 100644 index d6139dc..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -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.TargetPointRequest; -import com.casic.missiles.modular.robot.service.IRobotInfoService; -import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -@Component("SET_TARGETPOINT") -public class TargentPointCmdHandler extends AbstractCmdHandler { - private final ITaskInfoService taskInfoService; - private final IRouteKeyPointInfoService keyPointInfoService; - - protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { - super(optService, service); - this.taskInfoService = taskInfoService; - this.keyPointInfoService = keyPointInfoService; - } - - /** - * 发送命令 - * - * @param request 消息请求体 - * @param enums 指令集 - * @return - */ - @Transactional - @Override - public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - //读取默认关键点信息 - messageDTO.setMsg(request); - ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); - return list; - } - - /** - * 结果集调用 - * - * @param request 消息请求体 - * @param response 响应体 - * @return - */ - @Override - public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { - //增加循迹任务记录 -// taskInfoService.reloadTask(request, getRobotInfo()); - return response; - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java new file mode 100644 index 0000000..c1c09fa --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java @@ -0,0 +1,54 @@ +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.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargetPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargetPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java index 27a3499..2926635 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java @@ -38,7 +38,7 @@ } MessageRequestDTO messageDTO = new MessageRequestDTO(); messageDTO.setMsg(request); - ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.TASKPOINT_LIST, messageDTO); + ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), enums, messageDTO); return list; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java index 6fa567e..035f79e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java @@ -2,19 +2,22 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.IBaseRobotService; 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.TrackRecordRequest; import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component("TRACK_RECORD") public class TrackRecordCmdHandler extends AbstractCmdHandler { - - protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + private final IBaseRobotService baseRobotService; + protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service,@Lazy IBaseRobotService baseRobotService) { super(optService, service); + this.baseRobotService = baseRobotService; } /** @@ -44,6 +47,9 @@ */ @Override public ResponseDataDTO afterInvoke(TrackRecordRequest request, ResponseDataDTO response) { + if(request.getAction()==0){ + baseRobotService.reloadTrack(request); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java index 1bc34e1..1cf0e55 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -3,7 +3,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructStatusMsgEnums; import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.springframework.stereotype.Component; @@ -17,7 +16,6 @@ private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { this.robotTrajectoryInfoService = robotTrajectoryInfoService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java index 51192fd..511df3d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java @@ -39,60 +39,6 @@ this.taskInfoService = taskInfoService; } - @Override - public void getRobotStatus(Long id) { - - } - - @Override - public void travel(float priority, float vSpeed, float wSpeed) { - - } - - @Override - public void monitorStatus() { - //机器人状态监测 - } - - @Transactional - @SneakyThrows - @Override - public void initMonitor(RobotInfo info) { - try { - // 默认主题订阅(用于机器消息推送) - MqttClientConnection mqttClient = MqttClientConnection.mqttClients.get(info.getId() + ""); - MqttClient client = mqttClient.getMqttClient(); - - //线路读取 - TrackListRequest trackListRequest = new TrackListRequest(); - trackListRequest.setRobotId(info.getId()); - trackListRequest.setSn(info.getId() + ""); - ResponseDataDTO> requestDTO = execCmdHandler(trackListRequest, InstructCodeEnums.TRACK_LIST); - - //线路关键点读取 - if (requestDTO.getData() != null) { - for (RouteInfo routeInfo : requestDTO.getData()) { - TrackPointListRequest request = new TrackPointListRequest(); - request.setRobotId(routeInfo.getRobotId()); - request.setSn(routeInfo.getRobotId() + ""); - request.setTrack_name(routeInfo.getTargetId()); - execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST); - } - } - - if (StrUtil.isNotEmpty(info.getDefaultTopic())) { - String[] topics = info.getDefaultTopic().split(","); - // 订阅默认消息,消息处理器统一处理 - client.subscribe(topics); - } - //机器人pcd读取 - robotInfoService.loadPcd(info); - } catch (Exception e) { - log.error("机器人信息初始化读取失败" , e); - } - } - - /** * 机器人实时控制接口 * @@ -119,11 +65,64 @@ @Override public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums, IBaseCmdHandler cmdHandler) { cmdHandler.initHandler((BaseRobotCmdDTO) request); - ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request,enums); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, enums); result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); return result; } + @Transactional + @Override + public void reloadRobot(BaseRobotCmdDTO request) { + RobotInfo info = robotInfoService.getById(request.getRobotId()); + initMonitor(info); + } + @Transactional + @SneakyThrows + @Override + public void initMonitor(RobotInfo info) { + try { + MqttClientConnection mqttClient = MqttClientConnection.mqttClients.get(info.getId() + ""); + MqttClient client = mqttClient.getMqttClient(); + + if (StrUtil.isNotEmpty(info.getDefaultTopic())) { + String[] topics = info.getDefaultTopic().split(","); + // 订阅默认消息,消息处理器统一处理 + client.subscribe(topics); + } + BaseRobotCmdDTO cmdDTO = new BaseRobotCmdDTO(); + cmdDTO.setRobotId(info.getId()); + reloadTrack(cmdDTO); + reloadPcd(info); + } catch (Exception e) { + log.error("机器人信息初始化读取失败", e); + } + } + + @Override + public void reloadTrack(BaseRobotCmdDTO dto) { + //线路读取 + TrackListRequest trackListRequest = new TrackListRequest(); + trackListRequest.setRobotId(dto.getRobotId()); + trackListRequest.setSn(dto.getRobotId() + ""); + ResponseDataDTO> requestDTO = execCmdHandler(trackListRequest, InstructCodeEnums.TRACK_LIST); + //线路关键点读取 + if (requestDTO.getData() != null) { + for (RouteInfo routeInfo : requestDTO.getData()) { + TrackPointListRequest request = new TrackPointListRequest(); + request.setRobotId(routeInfo.getRobotId()); + request.setSn(routeInfo.getRobotId() + ""); + request.setTrack_name(routeInfo.getTargetId()); + execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST); + } + } + } + + @Override + public void reloadPcd(RobotInfo info) { + //机器人pcd读取 + robotInfoService.loadPcd(info); + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/task/RobotStatusTask.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/task/RobotStatusTask.java index 0d8689a..c1513e7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/task/RobotStatusTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/task/RobotStatusTask.java @@ -25,8 +25,8 @@ /** * 每5分钟采集一次机器人状态 */ - @Scheduled(cron = "0 */5 * * * *") +// @Scheduled(cron = "0 */5 * * * *") public void execute() { - baseRobotService.monitorStatus(); + } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java index e1e713c..1395aa4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/IBaseRobotService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.robot.opt.handler.IBaseCmdHandler; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelRequest; import com.casic.missiles.modular.robot.opt.instruct.dto.AppCmdVelResponse; +import com.casic.missiles.modular.robot.opt.instruct.dto.BaseRobotCmdDTO; /** * 机器人操作类 @@ -20,24 +21,6 @@ */ IRobotRouteOptService getRobotRouteOptService(); - /** - * 机器人状态读取 - * - * @param id 机器人主键 - */ - void getRobotStatus(Long id); - - /** - * @param priority 优先级0-5 遥操作:0 跟随:1 自主导航:2 其它:3 - * @param vSpeed 线速度,单位m/s,正数为前进 - * @param wSpeed 角速度,单位rad/s,正数为逆时针旋转 - */ - void travel(float priority, float vSpeed, float wSpeed); - - /** - * 定时监测数据 - */ - void monitorStatus(); /** * 初始化监听数据 @@ -77,4 +60,17 @@ * @return 执行结果 */ ResponseDataDTO execCmdHandler(R req, InstructCodeEnums enums, IBaseCmdHandler cmdHandler); + + void reloadRobot(BaseRobotCmdDTO request); + + /** + * 路线信息重载 + * @param request + */ + void reloadTrack(BaseRobotCmdDTO request); + /** + * pcd数据重载 + * @param info + */ + void reloadPcd(RobotInfo info); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java index 2763a3a..30ed038 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/controller/RobotOptController.java @@ -42,20 +42,20 @@ this.robotInfoService = robotInfoService; } - @ApiOperation(value = "启动/关闭录包" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/关闭录包", notes = "返回 1成功 0失败") @PostMapping(value = "/dataRecord") public ResponseDataDTO dataRecord(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.DATA_RECORD); } - @ApiOperation(value = "启动/关闭建图" , notes = "返回 1成功 0失败,建图进度请求状态接口") + @ApiOperation(value = "启动/关闭建图", notes = "返回 1成功 0失败,建图进度请求状态接口") @PostMapping(value = "/slam") public ResponseDataDTO slam(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SLAM); } - @ApiOperation(value = "转栅格地图" , notes = "返回 1成功 0失败") + @ApiOperation(value = "转栅格地图", notes = "返回 1成功 0失败") @PostMapping(value = "/changePcd") public ResponseDataDTO changePcd(@RequestBody DataRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.CHANGE_PCD); @@ -75,11 +75,22 @@ robotInfoService.updateSpeed(robotInfo); return ResponseDataDTO.success(); } + + @ApiOperation(value = "机器人数据更新", notes = "1.pcd重载 2.路线及关键点数据重载") + @PostMapping(value = "/reload") + public ResponseDataDTO reload(@RequestBody BaseRobotCmdDTO request) { + RobotInfo robotInfo = robotInfoService.getById(request.getRobotId()); + baseRobotService.reloadTrack(request); + baseRobotService.reloadPcd(robotInfo); + return ResponseDataDTO.success(); + } + @ApiOperation(value = "软件急停") @PostMapping(value = "/softwareStop") public ResponseDataDTO softwareStop(@RequestBody SoftwareStopRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SOFTWARE_STOP); } + @ApiOperation(value = "循迹列表读取") @PostMapping(value = "/trackList") public ResponseDataDTO> trackList(@RequestBody TrackListRequest request) { @@ -98,29 +109,31 @@ * @param request * @return */ - @ApiOperation(value = "启动或关闭轨迹录制功能" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动或关闭轨迹录制功能", notes = "返回 1成功 0失败") @PostMapping(value = "/trackRecord") public ResponseDataDTO trackRecord(@RequestBody TrackRecordRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.TRACK_RECORD); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "寻点指令" , notes = "") + @ApiOperation(value = "寻点指令", notes = "") @PostMapping(value = "/targetPoint") public ResponseDataDTO targetPoint(@RequestBody TargetPointRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.SET_TARGETPOINT); } + /** * 机器人请求id * * @param request * @return */ - @ApiOperation(value = "启动或关闭循迹功能" , notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") + @ApiOperation(value = "启动或关闭循迹功能", notes = "返回 1成功 0失败 wait 启动时是否等待,0代表循迹启动即运动,不等待;1代表循迹启动原地等待。若无此字段,默认循迹启动不等待直接运动") @PostMapping(value = "/startTrack") public ResponseDataDTO startTrack(@RequestBody StartTrackRequest request) { return baseRobotService.execCmdHandler(request, InstructCodeEnums.START_TRACK); @@ -132,7 +145,7 @@ * @param request * @return */ - @ApiOperation(value = "导航开启/关闭接口" , notes = "返回 1成功 0失败") + @ApiOperation(value = "导航开启/关闭接口", notes = "返回 1成功 0失败") @PostMapping(value = "/ctrlNav") public ResponseDataDTO ctrlNav(@RequestBody CrlNavRequest request) { if (StrUtil.isEmpty(request.getSn())) { @@ -145,7 +158,7 @@ return list; } - @ApiOperation(value = "启动/取消暂停" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消暂停", notes = "返回 1成功 0失败") @PostMapping(value = "/navPause") public ResponseDataDTO navPause(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -155,14 +168,14 @@ return list; } - @ApiOperation(value = "速度控制与反馈" , notes = "超过0.5s停发会主动停止 返回 1成功 0失败") + @ApiOperation(value = "速度控制与反馈", notes = "超过0.5s停发会主动停止 返回 1成功 0失败") @PostMapping(value = "/appCmdVel") public ResponseDataDTO appCmdVel(@RequestBody AppCmdVelRequest request) { ResponseDataDTO dto = baseRobotService.appCmdVel(request); return dto; } - @ApiOperation(value = "启动/取消停障" , notes = "返回 1成功 0失败") + @ApiOperation(value = "启动/取消停障", notes = "返回 1成功 0失败") @PostMapping(value = "/stopNavStop") public ResponseDataDTO stopNavStop(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -172,7 +185,7 @@ return list; } - @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)" , notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") + @ApiOperation(value = "查询机器人最大运动速度功能(导航和停障)", notes = "机器人返回当前设置最大速度参数给客户端,如果机器人不运动则无返回,如果未设置最大运动速度则返回当前运动速度") @PostMapping(value = "/getCurrentSpeed") public ResponseDataDTO getCurrentSpeed(@RequestBody CrlNavRequest request) { MessageRequestDTO messageDTO = new MessageRequestDTO(); @@ -188,11 +201,11 @@ * @param request 消息体 * @return */ - @ApiOperation(value = "实时状态读取接口" , notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") + @ApiOperation(value = "实时状态读取接口", notes = "get_navigation:获取当前导航状态 get_data_record:获取录包状态 get_track_record:获取轨迹录制状态,get_track:获取循迹状态 get_ins:获取ins状态 返回 0未开启 1开启 2 错误") @PostMapping(value = "/{cmdType}") public ResponseDataDTO commCmd(@PathVariable String cmdType, @RequestBody CrlNavRequest request) { if (!InstructCodeEnums.commCmdMap.containsKey(cmdType)) { - return new ResponseDataDTO<>(false, 500, "指令不存在" , 0); + return new ResponseDataDTO<>(false, 500, "指令不存在", 0); } InstructCodeEnums enums = InstructCodeEnums.commCmdMap.get(cmdType); IBaseCmdHandler baseCmdHandler = SpringContextHolder.getBean("COMMON_CMD"); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java index 10f1069..fb7c119 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/dto/GridPointDTO.java @@ -2,10 +2,11 @@ import lombok.Data; +import java.io.Serializable; import java.math.BigDecimal; @Data -public class GridPointDTO { +public class GridPointDTO implements Serializable { private BigDecimal x; private BigDecimal y; } 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 684ba69..8d77492 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 @@ -21,7 +21,7 @@ }), DATA_RECORD("/data_record" , "/data_record_response" , "启动或关闭录包功能" , true, new TypeReference>() { }), - APP_CMD_VEL("/1app_cmd_vel1" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { + APP_CMD_VEL("/app_cmd_vel" , "/app_cmd_vel_response" , "速度控制与反馈" , false, new TypeReference>() { }), CHANGE_PCD("/change_pcd" , "/change_pcd_response" , "转换栅格地图" , true, new TypeReference>() { }), diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java index b5f46d3..e195e20 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/ChangPcdCmdHandler.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.model.RobotInfo; 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; @@ -16,6 +17,7 @@ @Component("CHANGE_PCD") public class ChangPcdCmdHandler extends AbstractCmdHandler { + protected ChangPcdCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { super(optService, service); } @@ -47,6 +49,11 @@ */ @Override public ResponseDataDTO afterInvoke(DataRecordRequest request, ResponseDataDTO response) { + + if (request.getAction() == 0) { + RobotInfo robotInfo = service.getById(request.getRobotId()); + service.loadPcd(robotInfo); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java deleted file mode 100644 index d6139dc..0000000 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargentPointCmdHandler.java +++ /dev/null @@ -1,56 +0,0 @@ -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.TargetPointRequest; -import com.casic.missiles.modular.robot.service.IRobotInfoService; -import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -@Component("SET_TARGETPOINT") -public class TargentPointCmdHandler extends AbstractCmdHandler { - private final ITaskInfoService taskInfoService; - private final IRouteKeyPointInfoService keyPointInfoService; - - protected TargentPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { - super(optService, service); - this.taskInfoService = taskInfoService; - this.keyPointInfoService = keyPointInfoService; - } - - /** - * 发送命令 - * - * @param request 消息请求体 - * @param enums 指令集 - * @return - */ - @Transactional - @Override - public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { - MessageRequestDTO messageDTO = new MessageRequestDTO(); - //读取默认关键点信息 - messageDTO.setMsg(request); - ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); - return list; - } - - /** - * 结果集调用 - * - * @param request 消息请求体 - * @param response 响应体 - * @return - */ - @Override - public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { - //增加循迹任务记录 -// taskInfoService.reloadTask(request, getRobotInfo()); - return response; - } -} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java new file mode 100644 index 0000000..c1c09fa --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TargetPointCmdHandler.java @@ -0,0 +1,54 @@ +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.TargetPointRequest; +import com.casic.missiles.modular.robot.service.IRobotInfoService; +import com.casic.missiles.modular.robot.service.IRouteKeyPointInfoService; +import com.casic.missiles.modular.robot.service.ITaskInfoService; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component("SET_TARGETPOINT") +public class TargetPointCmdHandler extends AbstractCmdHandler { + private final ITaskInfoService taskInfoService; + private final IRouteKeyPointInfoService keyPointInfoService; + + protected TargetPointCmdHandler(IRobotRouteOptService optService, IRobotInfoService service, ITaskInfoService taskInfoService, IRouteKeyPointInfoService keyPointInfoService) { + super(optService, service); + this.taskInfoService = taskInfoService; + this.keyPointInfoService = keyPointInfoService; + } + + /** + * 发送命令 + * + * @param request 消息请求体 + * @param enums 指令集 + * @return + */ + @Transactional + @Override + public ResponseDataDTO senderCmd(TargetPointRequest request, InstructCodeEnums enums) { + MessageRequestDTO messageDTO = new MessageRequestDTO(); + //读取默认关键点信息 + messageDTO.setMsg(request); + ResponseDataDTO list = optService.robotCmd(getRobotInfo(), enums, messageDTO); + return list; + } + + /** + * 结果集调用 + * + * @param request 消息请求体 + * @param response 响应体 + * @return + */ + @Override + public ResponseDataDTO afterInvoke(TargetPointRequest request, ResponseDataDTO response) { + return response; + } +} diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java index 27a3499..2926635 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackPointListCmdHandler.java @@ -38,7 +38,7 @@ } MessageRequestDTO messageDTO = new MessageRequestDTO(); messageDTO.setMsg(request); - ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), InstructCodeEnums.TASKPOINT_LIST, messageDTO); + ResponseDataDTO> list = optService.robotCmd(getRobotInfo(), enums, messageDTO); return list; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java index 6fa567e..035f79e 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/cmd/TrackRecordCmdHandler.java @@ -2,19 +2,22 @@ import cn.hutool.core.util.StrUtil; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.robot.IBaseRobotService; 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.TrackRecordRequest; import com.casic.missiles.modular.robot.service.IRobotInfoService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @Component("TRACK_RECORD") public class TrackRecordCmdHandler extends AbstractCmdHandler { - - protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service) { + private final IBaseRobotService baseRobotService; + protected TrackRecordCmdHandler(IRobotRouteOptService optService, IRobotInfoService service,@Lazy IBaseRobotService baseRobotService) { super(optService, service); + this.baseRobotService = baseRobotService; } /** @@ -44,6 +47,9 @@ */ @Override public ResponseDataDTO afterInvoke(TrackRecordRequest request, ResponseDataDTO response) { + if(request.getAction()==0){ + baseRobotService.reloadTrack(request); + } return response; } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java index 1bc34e1..1cf0e55 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/handler/msg/PoseMessageMsgHandler.java @@ -3,7 +3,6 @@ import com.casic.missiles.modular.robot.opt.enums.InstructStatusMsgEnums; import com.casic.missiles.modular.robot.opt.handler.AbstractSocketHandler; import com.casic.missiles.modular.robot.service.IRobotTrajectoryInfoService; -import com.casic.missiles.modular.robot.service.ITaskInfoService; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.springframework.stereotype.Component; @@ -17,7 +16,6 @@ private final IRobotTrajectoryInfoService robotTrajectoryInfoService; - public PoseMessageMsgHandler(IRobotTrajectoryInfoService robotTrajectoryInfoService) { this.robotTrajectoryInfoService = robotTrajectoryInfoService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java index 51192fd..511df3d 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/impl/RobotOptServiceImpl.java @@ -39,60 +39,6 @@ this.taskInfoService = taskInfoService; } - @Override - public void getRobotStatus(Long id) { - - } - - @Override - public void travel(float priority, float vSpeed, float wSpeed) { - - } - - @Override - public void monitorStatus() { - //机器人状态监测 - } - - @Transactional - @SneakyThrows - @Override - public void initMonitor(RobotInfo info) { - try { - // 默认主题订阅(用于机器消息推送) - MqttClientConnection mqttClient = MqttClientConnection.mqttClients.get(info.getId() + ""); - MqttClient client = mqttClient.getMqttClient(); - - //线路读取 - TrackListRequest trackListRequest = new TrackListRequest(); - trackListRequest.setRobotId(info.getId()); - trackListRequest.setSn(info.getId() + ""); - ResponseDataDTO> requestDTO = execCmdHandler(trackListRequest, InstructCodeEnums.TRACK_LIST); - - //线路关键点读取 - if (requestDTO.getData() != null) { - for (RouteInfo routeInfo : requestDTO.getData()) { - TrackPointListRequest request = new TrackPointListRequest(); - request.setRobotId(routeInfo.getRobotId()); - request.setSn(routeInfo.getRobotId() + ""); - request.setTrack_name(routeInfo.getTargetId()); - execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST); - } - } - - if (StrUtil.isNotEmpty(info.getDefaultTopic())) { - String[] topics = info.getDefaultTopic().split(","); - // 订阅默认消息,消息处理器统一处理 - client.subscribe(topics); - } - //机器人pcd读取 - robotInfoService.loadPcd(info); - } catch (Exception e) { - log.error("机器人信息初始化读取失败" , e); - } - } - - /** * 机器人实时控制接口 * @@ -119,11 +65,64 @@ @Override public ResponseDataDTO execCmdHandler(R request, InstructCodeEnums enums, IBaseCmdHandler cmdHandler) { cmdHandler.initHandler((BaseRobotCmdDTO) request); - ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request,enums); + ResponseDataDTO result = (ResponseDataDTO) cmdHandler.senderCmd((BaseRobotCmdDTO) request, enums); result = (ResponseDataDTO) cmdHandler.afterInvoke((BaseRobotCmdDTO) request, result); return result; } + @Transactional + @Override + public void reloadRobot(BaseRobotCmdDTO request) { + RobotInfo info = robotInfoService.getById(request.getRobotId()); + initMonitor(info); + } + @Transactional + @SneakyThrows + @Override + public void initMonitor(RobotInfo info) { + try { + MqttClientConnection mqttClient = MqttClientConnection.mqttClients.get(info.getId() + ""); + MqttClient client = mqttClient.getMqttClient(); + + if (StrUtil.isNotEmpty(info.getDefaultTopic())) { + String[] topics = info.getDefaultTopic().split(","); + // 订阅默认消息,消息处理器统一处理 + client.subscribe(topics); + } + BaseRobotCmdDTO cmdDTO = new BaseRobotCmdDTO(); + cmdDTO.setRobotId(info.getId()); + reloadTrack(cmdDTO); + reloadPcd(info); + } catch (Exception e) { + log.error("机器人信息初始化读取失败", e); + } + } + + @Override + public void reloadTrack(BaseRobotCmdDTO dto) { + //线路读取 + TrackListRequest trackListRequest = new TrackListRequest(); + trackListRequest.setRobotId(dto.getRobotId()); + trackListRequest.setSn(dto.getRobotId() + ""); + ResponseDataDTO> requestDTO = execCmdHandler(trackListRequest, InstructCodeEnums.TRACK_LIST); + //线路关键点读取 + if (requestDTO.getData() != null) { + for (RouteInfo routeInfo : requestDTO.getData()) { + TrackPointListRequest request = new TrackPointListRequest(); + request.setRobotId(routeInfo.getRobotId()); + request.setSn(routeInfo.getRobotId() + ""); + request.setTrack_name(routeInfo.getTargetId()); + execCmdHandler(request, InstructCodeEnums.TASKPOINT_LIST); + } + } + } + + @Override + public void reloadPcd(RobotInfo info) { + //机器人pcd读取 + robotInfoService.loadPcd(info); + } + public IRobotRouteOptService getRobotRouteOptService() { return robotRouteOptService; } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/task/RobotStatusTask.java b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/task/RobotStatusTask.java index 0d8689a..c1513e7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/task/RobotStatusTask.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/robot/opt/task/RobotStatusTask.java @@ -25,8 +25,8 @@ /** * 每5分钟采集一次机器人状态 */ - @Scheduled(cron = "0 */5 * * * *") +// @Scheduled(cron = "0 */5 * * * *") public void execute() { - baseRobotService.monitorStatus(); + } } \ No newline at end of file diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 9a89795..029c779 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -20,9 +20,9 @@ topic: /sensor_status,get_speed,/get_speed,/get_track_list_response,/get_track_response,/get_navigation_response completionTimeout: 2000 redis: - host: 111.198.10.15 - port: 11412 - password: ew5T4K3#203lwh + host: 192.168.1.20 + port: 6379 + # password: ew5T4K3#203lwh database: 3 serializer: org.springframework.data.redis.serializer.StringRedisSerializer redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer