调度接口
调度接口说明
接口的BaseUrl为: http://192.168.30.200:8008
所有使用POST方法的接口,上报参数时,HTTP请求头中的Content-Type必须为application/json;charset=UTF-8,使用Body上报参数
一些简单参数的接口,可以使用POST或GET方法,参数使用Query上报
接口的返回都使用json方数据回传,每个接口返回的json中都包含code和msg字段,code用于表示成功还是失败,msg表示失败原因
接口返回的json中可能会有多于文档接口描述的字段,可以忽略
接口返回数据定义
// T是一种数据类型,根据不同接口,类型不一样
public class ResponseData<T> {
public int code;
public String msg;
public T data;
}
code定义:
enum CodeValue {
SUCCESS = 0;
FAILED = 1;
EMPTY = 2; // 查询数据时查不到,没有数据
PARAMS_ERROR = 3; // 传的参数不正确
}
接口列表
1. 获取地图信息列表
接口地址:/dispatch/get_map_info_list
请求方法:GET
请求参数使用Query,例如: /dispatch/get_map_info_list?count=2
请求参数定义:
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 获取数量 | count | int | 必填,数量,<=0则获取所有的,否则指定数量,不够则返回实际数量 |
返回参数定义:
返回的参数中包含data字段,以下定义为data字段的定义,其他字段如code、msg为每个接口都有的通用字段
AllMapInfo定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 地图信息列表 | infoList | List<MapInfo> |
MapInfo定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 地图名称 | name | String | ||
| 地图id | id | int | 1234 | |
| 地图原点x | originX | float | 1234 | 单位米 |
| 地图原点y | originY | float | 1234 | 单位米 |
返回示例:
{
"code": 0,
"msg": "",
"data": {
"infoList": [
{
"name": "map-2024-11-29-15-45-58",
"id": 286,
"originX": -8.03544,
"originY": -12.149,
"width": 440,
"height": 640,
"thumbImgUrl": "http://127.0.0.1:8008/map/get_map_file?name=map-2024-11-29-15-45-58",
"resolution": 0.05
},
{
"name": "map-2024-11-29-15-45-58",
"id": 285,
"originX": -8.03544,
"originY": -12.149,
"width": 440,
"height": 640,
"thumbImgUrl": "http://127.0.0.1:8008/map/get_map_file?name=map-2024-11-29-15-45-58",
"resolution": 0.05
}
]
}
}
2. 获取作业点/站点列表
接口地址:/dispatch/get_task_node_list
请求方法:GET
请求参数使用Query,例如: /dispatch/get_task_node_list?mapId=1&count=2
请求参数定义:
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 获取数量 | count | int | 必填,数量,<=0则获取所有的,否则指定数量,不够则返回实际数量 | |
| 站点绑定的地图的id | mapId | int | 必填,为0时获取所有的,否则为指定的,获取所有的地图id见接口1 |
返回参数定义:
返回的参数中包含data字段,以下定义为data字段的定义,其他字段如code、msg为每个接口都有的通用字段
AllTaskNode定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 业务点名称列表 | taskNodeInfoList | List<TaskNodeInfo> |
TaskNodeInfo定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 业务点ID | id | Int | ||
| 业务点名称 | name | String | ||
| 业务点所在地图ID | mapId | Int | ||
| 站点绑定的动作组列表 | taskActionGroupInfo | List<TaskActionGroupInfo> |
TaskActionGroupInfo定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 动作组ID | id | Int | ||
| 动作组名称 | name | String |
返回示例:
{
"code": 0,
"msg": "",
"data": {
"taskNodeInfoList": [
{
"id": 1330,
"name": "作业点3",
"mapId": 238,
"taskActionGroupInfo": [
{
"id": 137,
"name": "上料"
},
{
"id": 139,
"name": "换料"
}
]
},
{
"id": 1328,
"name": "作业点2",
"mapId": 238,
"taskActionGroupInfo": [
{
"id": 136,
"name": "下料"
}
]
}
]
}
}
3. 增加任务组到队列
接口地址:/dispatch/add_task_group
请求方法:POST
上报参数定义:
TaskGroup定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 任务组ID | taskGroupId | String | 不填,由服务端生成,获取时用 | |
| 任务组名称 | name | String | 必填(用户自定义) | |
| 所有的任务 | taskList | List<Task> | 必填 | |
| 地图ID | mapId | int | 必填,地图ID,接口1#中获取地图列表中机器人正在使用的地图的ID | |
| 机器人id | robotId | int | 必填(要让哪个机器人执行任务) | |
| 客户端id | clientId | String | 选填,客户端ID(是谁发的任务) | |
| 是否忽略计算路径 | isIgnorePath | Boolean | 选填,若为true则不计算途径路径,直接去目标点 |
Task定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 任务ID | id | String | 不填,由服务端生成,回传时用 | |
| 任务名称 | name | String | 必填(用户自定义) | |
| 作业点ID | taskNodeId | Int | 必填(最终要到达的目标点,接口8#中获取作业点ID) | |
| 动作组ID | taskActionGroupId | Int | 选填,服务端已部署好的动作组的ID(接口2#中获取目标作业点的动作组ID),不填时默认选择第1个任务组执行(若填了actionParameters参数则这个参数就失效了) | |
| 是否不要移动,直接执行动作 | isDoNotMove | Boolean | 选填,是否不要移动去目标点,设置为true时机器人就直接在当前位置执行动作了 | |
| 到点后执行的动作参数 | actionParameters | List\<ActionParameter> | 选填 |
ActionParameter定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 动作类型 | type | Int | 1: 视觉对位; 2: 机械臂作业; 3: 充电; 4:充电(后相机);5:取料架;6:放料架;7:后向对位;8:平移;9:停车等待;18:说话;25:透传参数 | |
| 参数列表 | paramList | List<String> | 所有的参数 |
请求示例:
{
"name":"任务组1",
"mapId":238,
"robotId":34,
"taskList":[
{
"name":"任务1",
"taskNodeId":1330,
"taskActionGroupId":0,
"actionParameters":[
{
"type":18, // 说话
"paramList":["text:你好"] // 说:“你好”
},
{
"type":9, // 停车等待
"paramList":["timeout:0"] // 永久等待,直到发送继续接口
}
]
}
]
}
返回参数定义:
返回的参数中包含data字段,以下定义为data字段的定义,其他字段如code、msg为每个接口都有的通用字段
StringId定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 任务组ID | id | String | 添加到队列后的任务组的ID |
返回示例:
{
"code":0,
"msg":"",
"data":{
"id":"234803972249092096"
}
}
4. 获取已添加的任务组列表
接口地址:/dispatch/get_task_group_list
请求方法:GET
请求参数使用Query,例如: /dispatch/get_task_group_list?count=10
请求参数定义:
获取数量定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 获取数量 | count | int | 必填,数量,<=0则获取所有的,否则指定数量,不够则返回实际数量 |
返回参数定义:
返回的参数中包含data字段,以下定义为data字段的定义,其他字段如code、msg为每个接口都有的通用字段
TaskGroups定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 任务组列表 | taskGroupList | List<TaskGroup> |
TaskGroup定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 任务组ID | taskGroupId | String | ||
| 任务组名称 | name | String | ||
| 当前执行到哪个任务了 | index | Int | ||
| 任务列表 | taskList | List<Task> | ||
| 谁发的任务 | clientId | String | ||
| 剩余重复次数 | repeatCount | Int | ||
| 机器人ID | robotId | Int | ||
| 任务组当前状态 | taskGroupStatus | Int | 0:已加入调度队列,等待调度;1:已经调度(已生成路线);2:正在执行 | |
| 任务组状态名称 | taskGroupStatusName | String |
Task定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 任务ID | id | String | ||
| 任务名称 | name | String | ||
| 目标站点ID | taskNodeId | |||
| 任务当前状态 | taskStatus | Int | 0:已添加;1:正在执行;2:已取消;3:已完成 | |
| 任务状态名称 | taskStatusName | String |
返回示例:
{
"clientId": "dispatch",
"cmd": 14,
"actionId": 3002,
"code": 0,
"msg": "",
"callId": "437332785116610560",
"data": {
"taskGroupList": [
{
"taskGroupId": "437332770650456064",
"name": "a3ff4761-0426-4855-87ac-1e7bd410e7e8",
"taskList": [
{
"id": "437332770692399104",
"name": "4f71f162-13c6-4aeb-8444-ccf2af91bdfe",
"taskNodeId": 1121,
"actionParameters": [
],
"taskActionGroupId": 0,
"isDoNotMove": false,
"isUsePathNodeIdList": false,
"pathNodeIdList": [
],
"taskStatus": 1,
"taskStatusName": "运行中",
"actionRepeatList": [
],
"hasNg": false,
"taskType": 0
}
],
"index": 0,
"mapId": 155,
"robotId": 1,
"isSaveToDb": false,
"isForBind": false,
"repeatCount": 1,
"isIgnorePath": false,
"isDispatched": true,
"msg": "",
"clientId": "httpdispatch",
"taskGroupStatus": 2,
"taskGroupStatusName": "运行中"
}
]
}
}
5. 删除任务组
接口地址:/dispatch/delete_task_group
请求方法:GET
请求参数使用Query,例如: /dispatch/delete_task_group?taskGroupId=12345
请求参数定义:
任务组id定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 任务组id | taskGroupId | String | 必填,从获取任务组列表中获得 |
返回参数定义:
返回的参数中不包含data字段,其他字段如code、msg为每个接口都有的通用字段,根据code判断是否成功。
返回示例:
{
"code":0,
"msg":""
}
6. 停止指定机器人的任务
接口地址:/dispatch/stop_robot_task
请求方法:GET
请求参数使用Query,例如: /dispatch/stop_robot_task?robotId=10
请求参数定义:
机器人id定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 机器人id | robotId | Int | 必填,从获取所有机器人状态(10#)接口中可以获得 |
返回参数定义:
返回的参数中不包含data字段,其他字段如code、msg为每个接口都有的通用字段,根据code判断是否成功。
返回示例:
{
"code":3,
"msg":"没有找到指定robotId(10)的机器人)"
}
7. 暂停指定机器人的任务
接口地址:/dispatch/pause_robot_task
请求方法:GET
请求参数使用Query,例如: /dispatch/pause_robot_task?robotId=10
请求参数定义:
机器人id定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 机器人id | robotId | Int | 必填,从获取所有机器人状态(10#)接口中可以获得 |
返回参数定义:
返回的参数中不包含data字段,其他字段如code、msg为每个接口都有的通用字段,根据code判断是否成功。
返回示例:
{
"code":3,
"msg":"没有找到指定robotId(10)的机器人)"
}
8. 继续指定机器人的任务
接口地址:/dispatch/resume_robot_task
请求方法:GET
请求参数使用Query,例如: /dispatch/resume_robot_task?robotId=10
请求参数定义:
机器人id定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 机器人id | robotId | Int | 必填,从获取所有机器人状态(10#)接口中可以获得 |
返回参数定义:
返回的参数中不包含data字段,其他字段如code、msg为每个接口都有的通用字段,根据code判断是否成功。
返回示例:
{
"code":3,
"msg":"没有找到指定robotId(10)的机器人)"
}
9. 重新规划指定机器人的路线
接口地址:/dispatch/refresh_robot_route
请求方法:GET
请求参数使用Query,例如: /dispatch/refresh_robot_route?robotId=1
请求参数定义:
机器人id定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 机器人id | robotId | Int | 必填,从获取所有机器人状态(10#)接口中可以获得 |
返回参数定义:
返回的参数中不包含data字段,其他字段如code、msg为每个接口都有的通用字段,根据code判断是否成功。
返回示例:
{
"code":0,
"msg":""
}
10. 获取所有机器人的机器状态
接口地址:/dispatch/get_all_robot_status
请求方法:GET
没有请求参数
返回参数定义:
返回的参数中包含data字段,以下定义为data字段的定义,其他字段如code、msg为每个接口都有的通用字段
AllRobotStatus定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 机器人状态列表 | robotStatusList | List<RobotStatus> |
RobotStatus定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 机器人ID | robotId | int | ||
| 当前x | x | float | 单位米 | |
| 当前y | y | float | 单位米 | |
| 当前角度 | angle | float | 单位度 | |
| 当前速度 | speed | float | m/s | |
| 电量 | battery | int | % | |
| 是否正在充电 | isCharging | Boolean | ||
| 是否急停 | isForceStop | Boolean | ||
| 地图名称 | mapName | String | ||
| 导航置信度 | navScore | float | ||
| 开机时间 | bootTime | int | 秒 | |
| 是否已经抬升了 | isUp | bool | 是否抬升到位 | |
| 已到达的点位名称 | arrivedNodeName | String | ||
| 当前暂停类型 | robotPauseType | Int | 对应部署模块"等待信号n"的值+10(n+10),当这个值>0时,任务状态是19(停车等待) | |
| 执行任务状态 | taskStatus | int | 10 | 对应的值见下面执行状态值 |
执行状态值:
0: 空闲
1: 到达途径点,
2: 到达充电点,
3: 停在充电桩中,
5: 去往充电点中,
6: 到达作业点,
7: 去往作业点中,
8: 去往途径点中,
9: 停车完毕,
10: 充电中,
11: 停车到充电桩中,
12: 视觉重定位或反光板重定位,
13: 机械臂作业,
18: 后向对位充电,
19: 停车等待,
20: 平移,
21: 停在充电桩旁边,
22:抬升下降控制;
24:旋转;
40:停车待命;
41:从充电桩离开后停车;
返回示例:
{
"code":0,
"msg":"",
"data":{
"robotStatusList":[
{
"robotId":50,
"x":-1.4446404,
"y":0.25759292,
"angle":-179.65909,
"taskStatus":0,
"battery":95,
"voltage":50.58,
"current":-4.87,
"speed":0,
"isCharging":false,
"isForceStop":false,
"mapName":"map-2023-03-13-10-35-53-555",
"navScore":0.7152826,
"bootTime":2086
}
]
}
}
11. 获取指定机器人的机械臂状态
接口地址:/dispatch/get_target_robot_arm_status
请求方法:GET
请求参数使用Query,例如: /dispatch/get_target_robot_arm_status?robotId=43
请求参数定义:
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 机器人id | robotId | int | 必填 |
返回参数定义:
返回的参数中包含data字段,以下定义为data字段的定义,其他字段如code、msg为每个接口都有的通用字段
RobotArmStatus定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 机械臂任务是否已启动 | isStarted | Boolean | ||
| 机械臂任务是否已完成 | isFinished | Boolean | ||
| 机械臂任务是否异常 | isError | Boolean | ||
| 机械臂任务异常原因 | errorReason | String | 出异常时非空 | |
| 机械臂当前电流 | armPowerCurrent | float | ||
| 机械臂当前电压 | armPowerVoltage | float | ||
| 机械臂急停 | isArmEmergencyStop | Boolean | ||
| 机械臂碰撞检测 | isArmCollision | Boolean | ||
| 电源是否开启 | isArmPowerOn | Boolean | ||
| 机器人id | robotId | int |
返回示例:
{
"clientId":"dispatch",
"cmd":14,
"actionId":3017,
"code":0,
"msg":"",
"callId":"238320905208594432",
"data":{
"isStarted":false,
"isFinished":false,
"isError":false,
"errorReason":"",
"armPowerCurrent":0,
"armPowerVoltage":0,
"isArmEmergencyStop":false,
"isArmCollision":false,
"isArmPowerOn":true,
"armEventCode":0,
"robotId":0
}
}
12. 获取指定站点的所有动作
接口地址:/dispatch/get_task_node_action_list
请求方法:GET
请求参数使用Query,例如: /dispatch/get_task_node_action_list?nodeId=652
请求参数定义:
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 站点Id | nodeId | int | 必填,站点的id |
返回参数定义:
返回的参数中包含data字段,以下定义为data字段的定义,其他字段如code、msg为每个接口都有的通用字段
AllTaskActionInfo定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 动作info列表 | infos | List<TaskActionInfo> |
TaskActionInfo定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 动作id | id | int | 1234 | |
| 动作类型 | type | int | 1234 | |
| 所属站点id | nodeId | int | 1234 | |
| 动作名称 | name | String | xxx | |
| 所属动作组中的序号 | index | int | 0 | |
| 动作组序号 | groupIndex | int | 0 | |
| 动作组id | groupId | int | 0 |
动作类型定义:
1:视觉重定位/反光板重定位
2:机械臂作业
4:后向对位充电
8:平移
9:停车等待
13:自旋转
返回示例:
{
"code": 0,
"msg": "",
"data": {
"infos": [
{
"id": 2775,
"type": 9,
"nodeId": 1227,
"name": "停车等待",
"index": 0,
"isNeedConfirm": false,
"groupIndex": 0,
"groupId": 580
},
{
"id": 2777,
"type": 18,
"nodeId": 1227,
"name": "说话",
"index": 0,
"isNeedConfirm": false,
"groupIndex": 1,
"groupId": 611
},
{
"id": 2778,
"type": 2,
"nodeId": 1227,
"name": "taskName:aabbcc",
"index": 1,
"isNeedConfirm": false,
"groupIndex": 1,
"groupId": 611
}
]
}
}
13. 下载地图图片文件
接口地址: http://192.168.1.56:8008/map/get_map_file?name=地图名称
14. 指定机器人执行指定动作
接口地址:/dispatch/start_action
请求方法:POST
上报参数定义:
StartAction定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 机器人id | robotId | Int | 必填,要执行动作的机器人 | |
| 动作id | actionId | Int | 选填,要执行的动作的ID(接口12中的动作ID),填了动作ID,下面的动作类型、动作参数就不用填了,直接使用数据库里面的参数了 | |
| 动作类型 | type | Int | 选填,若没有填动作ID,就要填动作类型 | |
| 动作参数 | paramList | List<String> | 选填,若没有填动作ID有效 |
上报示例:
{
"robotId":1,
"actionId":2778
}
底盘旋转30度上报示例:
{
"robotId":50,
"type":13,
"paramList":["speed:0.1","angle:30"]
}
底盘30度(前方右侧度数为+)斜移1米上报示例:
{
"robotId":50,
"type":8,
"paramList":["speed:0.1","angle:30","distance:1000"]
}
执行指定的机械臂任务
{
"robotId":50,
"type":2,
"paramList":["taskName:aabbcc"]
}
成功或失败根据返回的code来确定
返回示例:
{
"code":0,
"msg":""
}
15. 取消任务组中的单个任务
接口地址:/dispatch/cancel_task
请求方法:GET
请求参数使用Query,例如: /dispatch/cancel_task?taskGroupId=kjgs&taskId=gasjk
请求参数定义:
机器人id定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 任务组id | taskGroupId | String | 必填,要取消任务所属任务组 | |
| 任务id | taskId | String | 必填,要取消的任务 |
返回参数定义:
返回的参数中不包含data字段,其他字段如code、msg为每个接口都有的通用字段,根据code判断是否成功。
返回示例:
{
"clientId": "dispatch",
"cmd": 14,
"actionId": 3027,
"code": 0,
"msg": "",
"callId": "262266201164611584"
}
16. 调度系统任务执行状态变化后的回调
!! 这个接口需要客户自己实现接口,当任务执行状态变化了,调度系统调用这个接口,通知客户。
需要在用户主界面: http://192.168.1.56:8008/main.html 的右上角设置里面设置回调URL

当任务启动了、完成了或被取消了,就会调用这个URL的接口
请求方法:POST
请求参数定义:
传过去的数据定义
| 参数 | 名称 | 类型 | 参考值 | 备注 |
|---|---|---|---|---|
| 机器人id | robotId | Int | 机器人的ID | |
| 任务组编号 | taskGroupCode | String | 当前执行的任务组编号 | |
| 任务编号 | taskCode | String | 当前执行的任务编号 | |
| 是否已启动 | isStarted | Boolean | 是否是启动时的回调 | |
| 是否已取消 | isCanceled | Boolean | 是否是取消时的回调 | |
| 是否已完成 | isFinished | Boolean | 是否是完成时的回调 |
最后编辑:黄子少 更新时间:2025-11-26 16:46