HTTP 服务
注意
本功能即将弃用
HTTP 服务的请求和响应均为 application/json
格式,编码为 utf-8
。
响应参数 | 类型 | 说明 |
---|---|---|
code | int | 错误码。为0 表示成功,此时data 的格式根据不同的请求有所不同,详见下述文档。为其他值表示失败,参见错误码。 |
params | string[] | 错误参数,根据错误码不同会返回不同的结果。一般无需处理。 |
data | any | 成功响应时返回接口定义的对象。处理时应先检查code 再解析data 。 |
响应示例:
{
"code": 0,
"params": [],
"data": null
}
运行场景或任务
- 请求方式:
POST
- 请求地址:
/public/task
请求参数 | 类型 | 说明 |
---|---|---|
scene_id | int | 场景ID。可以在「专家模式」中场景列表卡片上,和进入场景编辑器后的浏览器地址栏找到。 |
execute_count | int | 循环次数。为0 表示无限循环直到显式停止。 |
clear | int | 是否停止正在运行的其他任务,并直接运行新的任务。0 表示如果当前有其他任务则忽略,1 表示强制停止其他任务并运行。如果此时无其他任务运行,则无论值为多少都会运行。 |
task_id | int | 默认为0 ,表示正常执行场景。如果为任务ID,则表示重新执行该任务ID对应历史任务记录,此时scene_id 无效。任务ID可以在任务列表中获取。 |
响应参数 | 类型 | 说明 |
---|---|---|
id | int | 任务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查询执行状态。
请求参数 | 类型 | 说明 |
---|---|---|
name | string | 任务名。需要 URLEncode() 编码。 |
execute_count | int | 任务执行次数,0 :表示循环执行 如果不等于0 ,如 3 表示执行3次 |
clear | int | 是否停止正在运行的任务,并直接运行新的任务。0 :不是 1 :是 |
响应参数 | 类型 | 说明 |
---|---|---|
id | int | 任务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
请求参数 | 类型 | 说明 |
---|---|---|
id | int | 任务ID |
响应参数 | 类型 | 说明 |
---|---|---|
id | int | 任务ID |
scene_id | int | 场景ID |
execute_count | int | 执行次数 |
executed_count | int | 已执行次数 |
name | int | 任务名 |
status | int | 任务状态。0 :空闲 1 :运行中 2 :暂停3 :运行成功 4 :用户主动停止 5 :异常停止 6 :机器人关机或者DS停止 |
comment | string | 备注 |
start_time | string | 任务开始时间 |
end_time | string | 任务结束时间 |
consume_time | int | 任务耗时,不包括任务暂停的时间,单位秒 |
create_time | string | 创建时间 |
update_time | string | 更新时间 |
请求示例:获取任务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
请求参数 | 类型 | 说明 |
---|---|---|
pi | int | 页码。 |
ps | int | 每页条目数。 |
请求示例:获取最新执行的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
当调用运动命令时,该接口不会等待命令执行完成后返回,开发者需要自行处理完成逻辑。当调用获取命令是,会返回一定格式的结果。具体参见命令说明文档。
请求参数 | 类型 | 说明 |
---|---|---|
cmd | string | 机器人命令 |
data | object | 机器人命令参数 |
请求示例:
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_id | int | 任务id |
data.task_status | int | 任务状态 0:空闲 1:运行中 2:暂停 3:运行成功 4:运行失败 |
{"cmd":"get_task_status"}
{"data":{"task_status":0,"task_id":null},"code":0}