创建机器人指令
POST /v1alpha1/robots/{serialNumber}/commands
向指定序列号的机器人发送一条新指令。支持三种命令类型:任务命令、导航命令和控制命令,三者选其一,并通过 commandParameter 传递具体参数。
请求参数(Body)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| serialNumber | string | 是 | 机器人序列号(路径参数) |
| remoteTaskCommandType | string | 否 | 任务命令类型 |
| remoteNavigationCommandType | string | 否 | 导航命令类型 |
| remoteControlCommandType | string | 否 | 控制命令类型 |
| commandParameter | object | 是 | 命令参数,具体结构取决于命令类型 |
口诀三种命令类型选其一,commandParameter 必传
响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| name | string | 命令资源名称 |
| state | string | 命令状态,创建后初始为 WAITING |
| rawCommandType | string | 原始命令类型 |
口诀创建成功后返回资源名称和初始状态 WAITING
SDK 调用示例
from gausium_sdk.models import CreateCommandRequest
request = CreateCommandRequest(
remote_task_command_type="START_TASK",
command_parameter={"taskId": "task-001"}
)
result = await sdk.command.create("GS101-00A0-A7L-0000", request)
print(result.name, result.state) # 资源名称, WAITING
获取机器人指令
GET /v1alpha1/robots/{robotId}/commands/{commandId}
根据机器人 ID 和指令 ID 获取单条指令的详细信息,包括命令参数、执行状态和创建时间。
路径参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| robotId | string | 是 | 机器人序列号 |
| commandId | string | 是 | 指令 ID |
口诀路径中同时指定机器人和指令 ID
响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| name | string | 命令资源名称 |
| parent | string | 父资源(所属机器人) |
| commandParameter | object | 命令参数详情 |
| state | string | 命令状态 |
| serialNumber | string | 机器人序列号 |
| createTime | string | 创建时间(ISO 8601 格式) |
口诀返回完整指令信息,含父资源和创建时间
SDK 调用示例
command = await sdk.command.get("GS101-00A0-A7L-0000", "cmd-12345")
print(command.state) # 命令状态
print(command.create_time) # 创建时间
列出机器人指令
GET /v1alpha1/robots/{robotId}/commands
分页列出指定机器人的所有历史指令,支持按创建时间排序。
请求参数(Query)
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| robotId | string | 是 | 机器人序列号(路径参数) |
| page | int | 否 | 页码,默认 1 |
| pageSize | int | 否 | 每页数量,默认 20 |
| order_by | string | 否 | 排序字段,如 create_time desc |
口诀支持分页和排序,page 从 1 开始
响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| commands | array | 指令对象列表 |
| page | int | 当前页码 |
| pageSize | int | 每页数量 |
| total | string | 指令总数 |
口诀返回分页列表和总数
SDK 调用示例
result = await sdk.command.list(
"GS101-00A0-A7L-0000",
page=1,
page_size=10,
order_by="create_time desc"
)
print(f"共 {result.total} 条指令")
for cmd in result.commands:
print(cmd.name, cmd.state)
指令状态说明
指令创建后会经历不同的状态流转,state 字段反映当前执行阶段。
| 状态值 | 说明 |
|---|---|
| WAITING | 指令已创建,等待机器人接收 |
| RUNNING | 机器人正在执行指令 |
| SUCCEEDED | 指令执行成功 |
| FAILED | 指令执行失败 |
口诀WAITING -> RUNNING -> SUCCEEDED/FAILED
最佳实践
✓推荐做法
- 创建指令后立即记录返回的
name,用于后续查询 - 使用
order_by=create_time desc获取最新指令 - 通过
async with上下文管理器使用 SDK,确保连接正确释放 - 合理设置分页参数,避免单次请求数据量过大
✗不推荐
- 不要同时指定多种命令类型(task/navigation/control 选其一)
- 不要在未获取 Token 的情况下调用接口
- 不要以过高频率轮询指令状态(建议间隔 >= 2 秒)
⚠常见误区
- serialNumber 和 robotId 在不同接口中含义相同但参数名不同,注意区分
- total 字段返回类型为 string 而非 int,使用时需类型转换
- commandParameter 结构随命令类型变化,需参考具体命令文档
指令能够可靠创建、状态可追踪、分页查询高效