1. API文档
1.1. 调度系统整体工作流程
用户向调度系统发起任务请求。任务包含移动机器人到某位置并完成某操作。 调度系统根据当前机器人资源分配任务至机器人 机器人根据任务计算出所需占用的道路,并将道路占用更新至调度系统
1.2. 数据结构
1.2.1. 地图数据结构
{
    points : [
        {
            type: REST_POINT, // 可选类型 NORMAL_POINT, CHARGE_POINT, REST_POINT, TRAFFIC_POINT, TARGET_POINT
            location: {
                x: 0.0, // 机器人坐标X, 单位为米
                y: 0.0, // 机器人坐标Y, 单位为米
                theta: 0.0, // 机器人坐标角度,单位为度
            },
            name: "", // 点名称,可以为空
            id: "xxx-xxx-xxx", // 随机生成的字符串,点的唯一标识
            status: FREE, // 当前点状态,可选值为 FREE, BLOCK
            radius: 0.5, // 点半径大小
            tolerance: {
                xy: 0.1, // 坐标容差
                theta: 0.1 // 角度容差
            }
        }
    ],
    ways: [
        {
            id: "xxx-xxx-xxx", // 随机生成的字符串,线段的唯一标识
            points: ["xxxx-xxx-xxx", "xxx-xxx-xxx"], // 线段起点和终点id
            status: "FORWARD", // 当前路线状态,可选值为 FORWARD, BACKWARD, FREE, BLOCK
        }
    ],
}
1.2.2. 调度任务状态
ERROR 任务出错
DISPATCHING 任务分配中,尚未分配到机器人
EXECUTING 任务执行中
PAUSED 任务暂停
CANCELLED 任务取消
COMPLETE 任务完成
1.3. API 说明
1.3.1. 调度中心控制接口
启动调度系统
URL: /start
请求方式: GET
说明:启动调度系统,并使用对应的地图和路线数据。如果机器人没有采用当前设置的数据则自动同步和切换机器人地图数据,并启动机器人至目标地图的导航状态。
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| map_id | string | 调度系统所采用的地图id | 
| path_id | string | 调度系统所采用的path_id | 
返回参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| layout | Object | 启动成功后返回layout数据 | 
示例layout数据
{
    "status": "ok",
    "layout": {
        "name": "path5",
        "points": [
            {
                "type": "TRAFFIC_POINT",
                "location": {
                    "x": -7.0625,
                    "y": -15.5625,
                    "theta": 0
                },
                "name": "",
                "id": "fb9b5da4-d3f8-46af-9f06-6740d18b1350",
                "status": "FREE",
                "radius": 0.5,
                "tolerance": {
                    "xy": 0.1,
                    "theta": 0.1
                }
            },
            ...
        ],
        "ways": [
            {
                "id": "b4a0cdaa-5f52-4191-9340-36d19a1cb0a6",
                "points": [
                    "29d8aea0-ea06-4b61-9b73-cea4ee6833a5",
                    "d8db564c-dede-4bfc-8456-a7dfee9e66bb"
                ],
                "status": "FREE",
                "robots": []
            }
            ...
        ]
    },
    "map": {
        "_id": {
            "$oid": "5dd34397869f0667d15799e1"
        },
        "id": "04f777b8-ff9d-4303-87ac-334dab2e0ffe",
        "name": "largemap",
        "create_time": 1574126487670,
        "origin": {
            "x": -29.764,
            "y": -33.38139
        },
        "image_width": 1366,
        "image_height": 778,
        "resolution": 0.05,
        "image_png": "/media/map/map_ET4FjhJ.png",
        "image_pgm": "/media/map/map_ET4FjhJ.pgm",
        "keyframedb_bson": "/media/map/keyframedb_hHK57gx.bson",
        "keyframes_bson": "/media/map/keyframes_FnNLIte.bson",
        "map_bson": "/media/map/map_T2J2lrF.bson",
        "mappoints_bson": "/media/map/mappoints_zFg5qGm.bson",
        "robot_trajectory": "/media/map/RobotTrajectory_4XjHdHI.txt",
        "map_yaml": "/media/map/largemap.yaml",
        "md5sum": "dd0c7a1c2da0194e66bbe8aee3b5d891",
        "paths": [
            {
                "_id": {
                    "$oid": "5dd3442c869f0667d15799e2"
                },
                "map_id": "04f777b8-ff9d-4303-87ac-334dab2e0ffe",
                "create_time": 1574126636820,
                "layout": {
                    "name": "path4",
                    "points": [
                        {
                            "type": "TRAFFIC_POINT",
                            "location": {
                                "x": -7.0625,
                                "y": -15.5625,
                                "theta": 0
                            },
                            "name": "",
                            "id": "fb9b5da4-d3f8-46af-9f06-6740d18b1350",
                            "status": "FREE",
                            "radius": 0.5,
                            "tolerance": {
                                "xy": 0.1,
                                "theta": 0.1
                            }
                        },
                        ...
                    ],
                    "ways": [
                        {
                            "id": "10d1d0b3-23d3-4b1d-a16e-0e2f86be6a4d",
                            "points": [
                                "fb9b5da4-d3f8-46af-9f06-6740d18b1350",
                                "e84adf2b-4c56-419a-beb0-945b60102772"
                            ],
                            "status": "FREE"
                        },
                        ...
                    ]
                },
                "id": "598c5ed2-cb2f-40de-b806-5c94b8200ccf",
                "name": "path4"
            },
            {
                "_id": {
                    "$oid": "5ddc8b3d65c125fbd33166d9"
                },
                "map_id": "04f777b8-ff9d-4303-87ac-334dab2e0ffe",
                "create_time": 1574734653138,
                "layout": {
                    "name": "path5",
                    "points": [
                        {
                            "type": "TRAFFIC_POINT",
                            "location": {
                                "x": -7.0625,
                                "y": -15.5625,
                                "theta": 0
                            },
                            "name": "",
                            "id": "fb9b5da4-d3f8-46af-9f06-6740d18b1350",
                            "status": "FREE",
                            "radius": 0.5,
                            "tolerance": {
                                "xy": 0.1,
                                "theta": 0.1
                            }
                        },
                        ...
                    ],
                    "ways": [
                        {
                            "id": "10d1d0b3-23d3-4b1d-a16e-0e2f86be6a4d",
                            "points": [
                                "fb9b5da4-d3f8-46af-9f06-6740d18b1350",
                                "e84adf2b-4c56-419a-beb0-945b60102772"
                            ],
                            "status": "FREE"
                        },
                        ...
                    ]
                },
                "id": "503ab888-ae67-4981-8840-25f48feeeb9f",
                "name": "path5"
            }
        ]
    },
    "path": {
        "_id": {
            "$oid": "5ddc8b3d65c125fbd33166d9"
        },
        "map_id": "04f777b8-ff9d-4303-87ac-334dab2e0ffe",
        "create_time": 1574734653138,
        "layout": {
            "name": "path5",
            "points": [
                {
                    "type": "TRAFFIC_POINT",
                    "location": {
                        "x": -7.0625,
                        "y": -15.5625,
                        "theta": 0
                    },
                    "name": "",
                    "id": "fb9b5da4-d3f8-46af-9f06-6740d18b1350",
                    "status": "FREE",
                    "radius": 0.5,
                    "tolerance": {
                        "xy": 0.1,
                        "theta": 0.1
                    }
                },
                ...
            ],
            "ways": [
                {
                    "id": "10d1d0b3-23d3-4b1d-a16e-0e2f86be6a4d",
                    "points": [
                        "fb9b5da4-d3f8-46af-9f06-6740d18b1350",
                        "e84adf2b-4c56-419a-beb0-945b60102772"
                    ],
                    "status": "FREE",
                    "robots": []
                },
                ...
            ]
        },
        "id": "503ab888-ae67-4981-8840-25f48feeeb9f",
        "name": "path5"
    },
    "lock_id": "",
    "robot_id": ""
}
停止调度系统
URL: /stop
请求方式: GET
说明:停止调度系统,并停止当前所有任务,关闭机器人导航状态
请求参数:无
返回参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| status | string | 关闭是否成功 | 
1.3.2. 调度任务相关
发起任务
URL: /schedule
请求方式: POST
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| location_id | string | 机器人移动目标点ID,location_id和location参数只用设置其中一个。充电和待机任务不用设置。 | 
| location | Object包含x,y,theta | 机器人移动目标点坐标,location_id和location参数只用设置其中一个。充电和待机任务不用设置。 | 
| task_id | string | 机器人到达目标点后需要执行的任务id | 
| priority | int | 任务优先级。默认优先级如下 回归待机点任务 优先级 0 充电任务且当前机器人电量较高 优先级1 一般移动任务 优先级2 用户交互任务 优先级3 低电量充电任务 优先级4  | 
| robot_id | string | 可选参数,当指定此参数时,只有指定的机器人能够接此任务 | 
| callback_url | string | 任务状态回调,当任务状态发生变化时服务会对对应url发送post请求,内容为schedule状态数据 | 
返回参数: schedule json 数据对象
示例返回数据:
{
    "create_time": 1576127957717,
    "start_time": 0,
    "end_time": 0,
    "id": "6f32ceeb-1a85-4ef6-9608-246098a4ac70",
    "destination": {
        "x": -5.29884054000141,
        "y": -2.7553970808007335,
        "theta": 0
    },
    "destination_id": "",
    "priority": 2,
    "callback_url": "",
    "robot": {
        "id": "16000CD479EEEFF2B29B8AC54E96F29802E50E724E95834F5935FE999BE8DB2816E01A482211",
        "mac": "00:e0:4c:ce:83:87",
        "ip": "192.168.0.196",
        "port": 3546,
        "version": "4.0.0",
        "galileo_status": {
            "mapStatus": 0,
            "controlSpeedX": 0.0,
            "currentSpeedX": 0.0,
            "targetNumID": -1,
            "power": 38.76279067993164,
            "navStatus": 1,
            "loopStatus": 0,
            "gbaStatus": 0,
            "targetDistance": -1.0,
            "controlSpeedTheta": 0.0,
            "currentSpeedTheta": 0.0006672566523775458,
            "header": {
                "stamp": {
                    "secs": 1576128007,
                    "nsecs": 241101980
                },
                "frame_id": "map",
                "seq": 943
            },
            "busyStatus": 0,
            "chargeStatus": 0,
            "currentAngle": 2.859792709350586,
            "currentPosX": -4.2341084480285645,
            "currentPosY": 0.9780586957931519,
            "gcStatus": 0,
            "angleGoalStatus": 1,
            "visualStatus": 1,
            "targetStatus": 0
        },
        "is_enabled": true,
        "is_online": true,
        "server_url": "http://192.168.0.196:3546/api/v1/",
        "current_schedule": null,
        "last_update_time": 1576127957812,
        "name": ""
    },
    "state": "EXECUTING",
    "task": null,
    "result": ""
}
取消任务
URL: /schedule/cancel
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 调度任务id | 
返回: schedule json 数据对象
暂停任务
URL: /schedule/pause
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 调度任务id | 
返回: schedule json 数据对象
继续任务
URL: /schedule/resume
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 调度任务id | 
返回: schedule json 数据对象
返回待机
URL: /schedule/go_rest
请求方式: GET
说明: 机器人从空闲的待机点中选择直线距离最近的点待机
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 返回待机的机器人ID | 
返回参数: 返回待机的调度任务信息
返回充电
URL: /schedule/go_charge
请求方式:GET
说明:机器人从空闲的充电点钟选择直线距离最近的点充电
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 返回充电机器人ID | 
返回参数:返回充电的调度任务信息
1.3.3. 地图状态更新相关
锁定地图
URL: /layout/lock
请求方式: GET
请求参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| robot_id | string | 机器人id | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| lock_id | string | 获取的锁的id | 
| layout | object | 当前地图状态数据 | 
返回示例数据:
{
    "status": "ok",
    "lock_id": "3d1e6049-750d-483e-aa32-dd7b937373ec",
    "layout": {
        "name": "path5",
        "points": [
            {
                "type": "TRAFFIC_POINT",
                "location": {
                    "x": -7.0625,
                    "y": -15.5625,
                    "theta": 0
                },
                "name": "",
                "id": "fb9b5da4-d3f8-46af-9f06-6740d18b1350",
                "status": "FREE",
                "radius": 0.5,
                "tolerance": {
                    "xy": 0.1,
                    "theta": 0.1
                }
            },
            ...
        ],
        "ways": [
            {
                "id": "10d1d0b3-23d3-4b1d-a16e-0e2f86be6a4d",
                "points": [
                    "fb9b5da4-d3f8-46af-9f06-6740d18b1350",
                    "e84adf2b-4c56-419a-beb0-945b60102772"
                ],
                "status": "FREE",
                "robots": []
            },
            ...
        ]
    }
}
解锁地图
URL: /layout/unlock
请求参数: GET
| 参数 | 类型 | 说明 | 
|---|---|---|
| lock_id | string | 地图锁id,如果id不能对应当前地图锁id,将无法解锁 | 
| robot_id | string | 机器人id,如果id无法对应当前获得锁的机器人id,将无法解锁。 | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| layout | object | 当前地图状态数据 | 
| status | string | 是否解锁成功 | 
更新地图
URL: /layout
请求方式: PUT
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| robot_id | string | 当前机器人id | 
| lock_id | string | 当前机器人获取到的锁id | 
| layout | object | 更改的地图状态信息。如果有未包含的地图状态,则认为没有改动。 | 
| unlock | bool | 是否自动解锁地图 | 
返回参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| layout | object | 当前地图状态数据 | 
获取地图
URL: /layout
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| lock | bool | 是否自动锁定地图 | 
| robot_id | string | 当开启自动锁定地图时需要此参数,否则不需要 | 
返回参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| layout | object | 地图状态信息 | 
获取地图数据
URL: /layout/map
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 地图id,可以为空。为空则返回当前所有地图数据 | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 地图id,唯一的字符串 | 
| name | string | 地图名称 | 
| origin | object, 有x,y属性 | 地图左上角的坐标 | 
| resolution | float | 1像素对应的实际距离 | 
| image | string | 地图图片url,图片格式为png | 
| keyframedb.bson | string | 地图数据url格式为bson | 
| keyframes.bson | string | 地图数据url格式为bson | 
| map.bson | string | 地图数据url格式为bson | 
| mappoints.bson | string | 地图数据url格式为bson | 
| image_pgm | string | 地图图片url,格式为pgm | 
| image_yaml | string | 地图说明文件,格式为yaml | 
| image_png | string | 地图图片url,格式为png | 
上传地图数据
URL: /layout/map
请求方式: POST
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| name | string | 地图名称 | 
| origin_x | float | 地图左上角X坐标 | 
| origin_y | float | 地图左上角Y坐标 | 
| resolution | float | 1像素对应实际的距离 | 
| image_pgm | file | 地图文件数据,图片格式为pgm | 
| keyframedb_bson | file | 地图数据文件,格式为bson | 
| keyframes_bson | file | 地图数据文件,格式为bson | 
| map_bson | file | 地图数据文件,格式为bson | 
| mappoints_bson | file | 地图数据文件,格式为bson | 
| force | bool | 遇到重名地图时是否覆盖以前地图。如果为true则覆盖,false则返回错误 | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 地图id,唯一的字符串 | 
| name | string | 地图名称 | 
| origin | object, 有x,y属性 | 地图左上角的坐标 | 
| resolution | float | 1像素对应的实际距离 | 
| image | string | 地图图片url,图片格式为png | 
| keyframedb.bson | string | 地图数据url格式为bson | 
| keyframes.bson | string | 地图数据url格式为bson | 
| map.bson | string | 地图数据url格式为bson | 
| mappoints.bson | string | 地图数据url格式为bson | 
| image_pgm | string | 地图图片url,格式为pgm | 
| image_yaml | string | 地图说明文件,格式为yaml | 
| image_png | string | 地图图片url,格式为png | 
删除地图数据
URL: /layout/map
请求方式: DELETE
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 地图id | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| status | string | 表明是否删除成功 | 
获取保存的路径数据
URL: /layout/path
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | Path id,可选参数。若没有此参数则返回所有path信息 | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| map_id | string | 所属地图id | 
| create_time | string | 创建时间 | 
| layout | object | layout数据结构 | 
| name | string | 路径名称 | 
| id | string | 路径id | 
上传路径数据
URL: /layout/path
请求方式: POST
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| name | string | 路径名称 | 
| map_id | string | 地图id | 
| layout | object | layout数据结构 | 
返回数据:
| 参数 | 类型 | 说明 | 
|---|---|---|
| map_id | string | 所属地图id | 
| create_time | string | 创建时间 | 
| layout | object | layout数据结构 | 
| name | string | 路径名称 | 
| id | string | 路径id | 
修改路径数据
URL: /layout/path
请求方式: PUT
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | path id,唯一的字符串 | 
| map_id | string | 所属地图的id | 
| layout | object | layout数据结构 | 
| name | string | 路径名称 | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| map_id | string | 所属地图id | 
| create_time | string | 创建时间 | 
| layout | object | layout数据结构 | 
| name | string | 路径名称 | 
| id | string | 路径id | 
删除路径数据
URL: /layout/path
请求方法: DELETE
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | path id, 唯一字符串 | 
1.3.4. 机器人状态相关
获取机器人状态1
URL: /robot
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| robot_id | string | 机器人id,当此参数未指定时返回所有机器人状态。当指定时返回指定的机器人状态 | 
返回参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| status | string | 是否成功获取状态 | 
| robot | object | 机器人状态信息 | 
返回示例信息
{
    "status": "ok",
    "robots": [
        {
            "id": "16000CD479EEEFF2B29B8AC54E96F29802E50E724E95834F5935FE999BE8DB2816E01A482211",
            "mac": "00:e0:4c:ce:83:87",
            "ip": "192.168.0.196",
            "port": 3546,
            "version": "4.0.0",
            "galileo_status": {
                "mapStatus": 0,
                "controlSpeedX": 0.0,
                "currentSpeedX": -1.4528632164001465e-07,
                "targetNumID": -1,
                "power": 38.7115478515625,
                "navStatus": 1,
                "loopStatus": 0,
                "gbaStatus": 0,
                "targetDistance": -1.0,
                "controlSpeedTheta": 0.0,
                "currentSpeedTheta": -0.00039996925625018775,
                "header": {
                    "stamp": {
                        "secs": 1576128308,
                        "nsecs": 894376993
                    },
                    "frame_id": "map",
                    "seq": 9989
                },
                "busyStatus": 0,
                "chargeStatus": 0,
                "currentAngle": -0.04512203484773636,
                "currentPosX": -5.170620441436768,
                "currentPosY": -2.721562385559082,
                "gcStatus": 0,
                "angleGoalStatus": 1,
                "visualStatus": 2,
                "targetStatus": 0
            },
            "is_enabled": true,
            "is_online": true,
            "server_url": "http://192.168.0.196:3546/api/v1/",
            "current_schedule": null,
            "last_update_time": 1576128259367,
            "name": ""
        },
        {
            "id": "66D23E4AC785F675EB3615D0B1C1CA63AF80B6F6B285751CCC4A075B10FF7E2C2BD26B89D75A",
            "mac": "00:e0:4c:13:4f:21",
            "ip": "192.168.0.121",
            "port": 3546,
            "version": "4.0.0",
            "galileo_status": null,
            "is_enabled": false,
            "is_online": false,
            "server_url": "http://192.168.0.121:3546/api/v1/",
            "current_schedule": null,
            "last_update_time": 1576122896046,
            "name": ""
        }
    ]
}
修改机器人名称
URL: /robot
请求方式: PUT
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| name | string | 机器人名称 | 
| id | string | 机器人ID | 
返回参数: 机器人状态信息
获取机器人状态2
URL: /robot/status
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| robot_id | string | 机器人id,当此参数未指定时返回所有机器人状态。当指定时返回指定的机器人状态 | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| robots | list | 机器人状态列表 | 
上传机器人状态
URL: /robot/status
请求方式: POST
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| robot_id | string | 机器人id | 
| robot_status | object | 机器人状态信息 | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| robot_id | string | 机器人id | 
| robot_status | object | 机器人状态信息 | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| robot_id | string | 机器人id | 
| robot_status | object | 更新后的机器人状态信息 | 
使能机器人
URL: /robot/enable
请求方式: PUT
说明: 使能机器人或禁用机器人。只有使能后的机器人系统才会为其分配任务
| 参数 | 类型 | 说明 | 
|---|---|---|
| is_enabled | bool | 是否使能机器人 | 
| robot_id | string | 机器人ID | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| robot | object | 机器人状态信息 | 
调用某机器人API
URL: /robot/< ID >/< API_URL >
说明:
ID为机器人id,API_URL为对应的调用机器人URL。如获取机器人状态信息可以使用
http://xxx.xxx.xxx.xxx/AABBCCDD/api/v1/syste/status
进行访问。其中xxx.xxx.xxx.xxx为调度中心ip。AABBCCDD为机器人id。
请求方式:GET,POST,PUT,DELETE
请求参数:和对应机器人API一致
返回参数:和机器人API返回参数一致
1.3.5. Action 和 Task 相关 API
Action代表机器人执行的一个动作,比如等待5秒,或播放一段语音,或左转30°。当一系列action编排成一组动作的时候就是一个Task。通过action和task相关的API我们可以方便的控制机器人实现我们想要的动作。
支持的Action类型和对应属性
| 类型 | 说明 | 属性 | 
|---|---|---|
| callback_action | 回调action,执行此action时会向指定的url发送http请求 | url:http请求的地址 method:http 请求的方式 data:http请求的数据  | 
| sleep_action | 等待动作,机器人等待对应时间后执行之后的action | wait_time: 机器人等待时间 | 
| charge_action | 自动充电动作, 只有在机器人在充电桩附近时才可以执行此动作 | x: 充电桩x坐标 y: 充电桩y坐标 theta: 充电桩角度, 单位为弧度 robot_id: 需要执行此动作的机器人id  | 
| local_move_action | 局部移动动作。控制机器人小范围移动,适用于精准对接场景 | robot_id: 需要执行此动作的机器人id distance: 机器人向前移动距离,当为负值时则机器人后退对应距离 angle:机器人转动对应角度,单位为弧度 method:定位方式。0使用纯惯性导航定位。1采用激光雷达辅助定位  | 
获取Action
URL: /action
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | action id, 唯一字符串。id为可选参数,如果有id则返回目标action信息,如果没有id则返回所有action信息 | 
返回参数:目标action信息
示例返回数据
{
    "type": "charge_action",
    "id": "45affe13-37de-4041-b592-70db27ec4e38",
    "x": -3.799302718853892,
    "y": 0.9755894865773105,
    "theta": 1.48352986419518,
    "robot": {
        "id": "16000CD479EEEFF2B29B8AC54E96F29802E50E724E95834F5935FE999BE8DB2816E01A482211",
        "mac": "00:e0:4c:ce:83:87",
        "ip": "192.168.0.196",
        "port": 3546,
        "version": "4.0.0",
        "galileo_status": {
            "mapStatus": 0,
            "controlSpeedX": 0,
            "currentSpeedX": -2.3283064365386963e-7,
            "targetNumID": -1,
            "power": 38.631343841552734,
            "navStatus": 1,
            "loopStatus": 0,
            "gbaStatus": 0,
            "targetDistance": 1.2436540126800537,
            "controlSpeedTheta": 0,
            "currentSpeedTheta": 3.206077963113785e-7,
            "header": {
            "stamp": {
                "secs": 1576128895,
                "nsecs": 762253046
            },
            "frame_id": "map",
            "seq": 27595
            },
            "busyStatus": 0,
            "chargeStatus": 0,
            "currentAngle": 2.205643653869629,
            "currentPosX": -5.04252815246582,
            "currentPosY": 1.0082411766052246,
            "gcStatus": 0,
            "angleGoalStatus": 1,
            "visualStatus": 1,
            "targetStatus": 2
        },
        "is_enabled": true,
        "is_online": true,
        "server_url": "http://192.168.0.196:3546/api/v1/",
        "current_schedule": null,
        "last_update_time": 1576128846285,
        "name": ""
    },
    "state": "WAITTING",
    "result": "",
    "progress": 0
}
创建Action
URL: /action
请求方式: POST
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| type | string | action类型, 目前可选的action类型为 callback_action, sleep_action, charge_action, local_move_action | 
| task_id | string | action 所属task的id,如果没有task_id则会自动创建一个包含目标action的task | 
| 其余参数 | 其余参数根据不同的action类型要求添加 | 
返回参数:新创建的action信息。如果task_id不存在则返回自动创建的task的信息
注意对于自动创建的task,系统将至作为临时task不会长期保存在数据库中。当调度系统重启之后对应的task和action都会消失
修改Action
URL: /action
请求方式: PUT
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | action id | 
| 其他需要修改的action属性 | 
返回参数: 修改后的action对象信息
删除Action
URL: /action
请求方式: DELETE
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | action的id,唯一字符串 | 
查找Task
URL: /task
请求方式:GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | task id, task唯一字符串。可选参数,如果没有id则返回最后创建的20个task。如果有id则返回目标task信息 | 
返回参数: task 信息
示例返回信息:
{
  "id": "50d79436-50c6-43da-9117-d569684f6205",
  "name": "navigation task",
  "loop_flag": false,
  "current_task": null,
  "state": "WAITTING",
  "sub_tasks": [
    {
      "type": "charge_action",
      "x": -3.799302718853892,
      "y": 0.9755894865773105,
      "theta": 1.48352986419518,
      "robot": {
        "id": "16000CD479EEEFF2B29B8AC54E96F29802E50E724E95834F5935FE999BE8DB2816E01A482211",
        "mac": "00:e0:4c:ce:83:87",
        "ip": "192.168.0.196",
        "port": 3546,
        "version": "4.0.0",
        "galileo_status": {
          "mapStatus": 0,
          "controlSpeedX": 0,
          "currentSpeedX": -2.0489096641540527e-7,
          "targetNumID": -1,
          "power": 38.68146896362305,
          "navStatus": 1,
          "loopStatus": 0,
          "gbaStatus": 0,
          "targetDistance": 1.0949629545211792,
          "controlSpeedTheta": 0,
          "currentSpeedTheta": -0.0005335922469384968,
          "header": {
            "stamp": {
              "secs": 1576128494,
              "nsecs": 861792087
            },
            "frame_id": "map",
            "seq": 15568
          },
          "busyStatus": 0,
          "chargeStatus": 0,
          "currentAngle": 1.8335497379302979,
          "currentPosX": -4.688186168670654,
          "currentPosY": 0.3361913859844208,
          "gcStatus": 0,
          "angleGoalStatus": 1,
          "visualStatus": 1,
          "targetStatus": 2
        },
        "is_enabled": true,
        "is_online": true,
        "server_url": "http://192.168.0.196:3546/api/v1/",
        "current_schedule": null,
        "last_update_time": 1576128445446,
        "name": ""
      },
      "state": "WAITTING",
      "result": "",
      "progress": 0
    },
    {
      "id": "90575557-f993-4146-96d6-3450d84457ba",
      "type": "simple_action",
      "state": "WAITTING",
      "progress": 0
    }
  ],
  "progress": 0
}
创建Task
URL: /task
请求方式: POST
请求参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| name | string | task的名称,可选参数 | 
| loop_flag | bool | 是否自动循环执行,可选参数 | 
| sub_tasks | list | 子任务的id列表,子任务可以是action也可以是task,可选参数 | 
返回参数:创建后的task信息
修改Task
URL: /task
请求方式: PUT
请求参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 目标task id,task唯一字符串 | 
| name | string | task的名称,可选参数 | 
| loop_flag | bool | 是否自动循环执行,可选参数 | 
| sub_tasks | list | 子任务的id列表,子任务可以是action也可以是task,可选参数 | 
返回参数: 修改后的task信息
删除Task
URL: /task
请求方式: DELETE
请求参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | 目标task id,task唯一字符串 | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| status | string | task是否被成功删除 | 
启动Task
URL: /task/start
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | task id, task唯一字符串标识 | 
返回参数: 启动后的task信息
暂停Task
URL: /task/pause
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | task id, task唯一字符串标识 | 
返回参数: 暂停后的task信息
继续Task
URL: /task/resume
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | task id, task唯一字符串标识 | 
返回参数: 继续后的task信息
停止Task
URL: /task/stop
请求方式: GET
请求参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| id | string | task id, task唯一字符串标识 | 
返回参数: 停止后的task信息
1.3.6. 证书相关
注册证书
URL: /cert/register
请求方式: GET
请求参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| cert_id | string | 证书注册序列号 | 
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| result | bool | 证书注册结果 | 
获取注册后的证书
URL: /cert
请求方式: GET
请求参数: 无
返回参数
| 参数 | 类型 | 说明 | 
|---|---|---|
| cert_data | string | 注册证书内容 | 
验证证书
URL: /cert/check
请求方式: GET
请求参数: 无
返回参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| check_res | bool | 证书验证结果 |