HTTP 服务

注意

本功能即将弃用

HTTP 服务的请求和响应均为 application/json 格式,编码为 utf-8

响应参数类型说明
codeint错误码。为0表示成功,此时data的格式根据不同的请求有所不同,详见下述文档。为其他值表示失败,参见错误码
paramsstring[]错误参数,根据错误码不同会返回不同的结果。一般无需处理。
dataany成功响应时返回接口定义的对象。处理时应先检查code再解析data

响应示例:

{
  "code": 0,
  "params": [],
  "data": null
}

运行场景或任务

  • 请求方式:POST
  • 请求地址:/public/task
请求参数类型说明
scene_idint场景ID。可以在「专家模式」中场景列表卡片上,和进入场景编辑器后的浏览器地址栏找到。
execute_countint循环次数。为0表示无限循环直到显式停止。
clearint是否停止正在运行的其他任务,并直接运行新的任务。0表示如果当前有其他任务则忽略,1表示强制停止其他任务并运行。如果此时无其他任务运行,则无论值为多少都会运行。
task_idint默认为0,表示正常执行场景。如果为任务ID,则表示重新执行该任务ID对应历史任务记录,此时scene_id无效。任务ID可以在任务列表中获取。
响应参数类型说明
idint任务ID。可以根据该任务ID查询任务执行状态。

请求示例:执行场景 10001,无限循环,如果有其他任务正在运行则强行停止掉。

curl --location --request POST 'http://10.20.17.1/public/task' \
--header 'Content-Type: application/json' \
--data-raw '{
    "scene_id": 10001,
    "execute_count": 0,
    "clear": 1
}'

响应示例:场景加入任务队列并开始运行,任务ID为 10104。

{
    "data": {
        "id": 10104
    },
    "code": 0
}

执行 Lua 脚本

  • 请求方式:POST
  • 请求地址:/public/executor/lua

该接口用于直接执行裸的 Lua 程序,请求体为 Lua 代码而非 JSON 格式,设置 HTTP 请求头为 Content-Type: text/plain

该接口调用时异步的,是否执行完成需要在 Lua 代码中进行判断返回,参见 Lua Socket 服务接口。

使用该接口无需额外在程序首尾添加program_begin/program_end,并支持通过任务ID查询执行状态。

请求参数类型说明
namestring任务名。需要 URLEncode() 编码。
execute_countint任务执行次数,0:表示循环执行 如果不等于0,如 3表示执行3次
clearint是否停止正在运行的任务,并直接运行新的任务。0:不是 1:是
响应参数类型说明
idint任务ID。

请求示例:执行 Lua 程序,任务名为 test_name,循环 1 次,如果有其他任务在运行则不执行。

curl --location --request POST 'http://10.20.17.1/public/executor/lua?name=test_name&execute_count=1&clear=0' \
--header 'Content-Type: text/plain' \
--data-raw 'local p = kinematics_inverse({12,12,1,2,1,1})
for k,v in ipairs(p) do
        print(k,v)
end
print(p["ok"])
'

响应示例:任务已开始执行,任务ID为10113。

{
    "data": {
        "id": 10113
    },
    "code": 0
}

响应示例:有其他任务正在运行,请先请先停止任务历史中的当前任务后再重试。

{
    "data": null,
    "code": 2036
}

任务状态和详情

  • 请求方式:GET
  • 请求地址:/public/task
请求参数类型说明
idint任务ID
响应参数类型说明
idint任务ID
scene_idint场景ID
execute_countint执行次数
executed_countint已执行次数
nameint任务名
statusint任务状态。0:空闲 1:运行中 2:暂停3:运行成功 4:用户主动停止 5:异常停止 6:机器人关机或者DS停止
commentstring备注
start_timestring任务开始时间
end_timestring任务结束时间
consume_timeint任务耗时,不包括任务暂停的时间,单位秒
create_timestring创建时间
update_timestring更新时间

请求示例:获取任务ID为10104的任务执行状态和详情。

curl --location --request GET 'http://10.20.17.1/public/task?id=10104'

响应示例:

{
    "data": {
        "id": 10104,
        "scene_id": 10001,
        "execute_count": 0,
        "executed_count": 3777,
        "name": "回零位",
        "status": 6,
        "comment": "",
        "start_time": "2021-03-31T16:19:04.073161049+08:00",
        "end_time": null,
        "consume_time": 0
    },
    "code": 0
}

任务列表

  • 请求方式:GET
  • 请求地址:/public/tasks
请求参数类型说明
piint页码。
psint每页条目数。

请求示例:获取最新执行的10个任务。

curl --location --request GET 'http://10.20.17.1/public/tasks?pi=1&ps=10'

响应示例:场景加入任务队列并开始运行,任务ID为 10104。

{
    "data": {
        "pi": 1,
        "ps": 10,
        "total": 112,
        "records": [
            {
                "id": 10106,
                "scene_id": 10001,
                "execute_count": 0,
                "executed_count": 1,
                "name": "回零位",
                "end_lua": null,
                "lua_data": null,
                "status": 5,
                "comment": null,
                "start_time": "2021-04-01T14:56:44.674861588+08:00",
                "end_time": "2021-04-01T14:56:44.836186966+08:00",
                "consume_time": 0,
                "first_pose_json": null,
                "mode": 0,
                "trigger_way": null,
                "is_deleted": null,
                "create_time": "2021-04-01T14:56:44.675868104+08:00",
                "update_time": "2021-04-01T14:56:44.880620629+08:00",
                "scene_type": 3,
                "first_pose": null
            },
            ...
        ],
        "task_status": 0,
        "task_id": null
    },
    "code": 0
}

调用命令

POST /public/robot/action

当调用运动命令时,该接口不会等待命令执行完成后返回,开发者需要自行处理完成逻辑。当调用获取命令是,会返回一定格式的结果。具体参见命令说明文档在新窗口打开

请求参数类型说明
cmdstring机器人命令
dataobject机器人命令参数

请求示例:

curl --location --request POST 'http://10.20.17.1/public/robot/action' \
--header 'Content-Type: application/json' \
--data-raw '{
    "cmd": "movej",
    "data": {
        "pose_to": [
            0,
            0,
            0,
            0,
            0,
            0
        ],
        "is_joint_angle": true,
        "acceleration": 1,
        "velocity": 2
    }
}'

响应示例:

{
    "data": {
        "task_id": 1
    },
    "code": 0
}

get_task_status

获取当前任务

响应结果

返回值类型说明
task_idint任务id
data.task_statusint任务状态 0:空闲 1:运行中 2:暂停 3:运行成功 4:运行失败
{"cmd":"get_task_status"}
{"data":{"task_status":0,"task_id":null},"code":0}