OmindOS 开发者

开发者文档

OmindOS API

通过本机接口读取机器人模型、管理参数,并调用规划与导航功能。

本机服务http://127.0.0.1:8085

HTTP · JSON · Ubuntu

01 / 接入

快速开始

获取与安装客户端

首次使用请先联系团队,说明所需功能与运行环境,确认对应客户端及安装说明。已获取软件的用户,请按交付说明完成安装,并核对下方适用版本后再启动服务。

以下首次调用示例适用于机械臂与移动双臂程序。先确认已安装的交付版本。工作台程序必须保持运行,图形界面可以关闭;默认服务地址为 http://127.0.0.1:8085。

本机接口

当前文档对应客户端软件提供的 HTTP JSON 接口,默认不要求账号或 API Key。跨机器访问、跨域网页调用和公网认证不在此接口范围内。

启动方式
程序适用版本在已安装程序目录运行
OmindOS Navigation0.2.0-preview.8./omindos workbench
OmindOS Manipulation0.3.1./OmindOS-Workbench --no-browser

POST 请求使用 Content-Type: application/json。两套程序默认都使用 8085 端口;应分别启动,或为机械臂程序指定 --port 8086 并相应修改客户端地址。

cURL
curl --fail-with-body http://127.0.0.1:8085/v1/workbench-state
Python
import json
from urllib.request import urlopen

with urlopen("http://127.0.0.1:8085/v1/workbench-state",
             timeout=10) as response:
    state = json.load(response)
print(state)

查找接口

接口速查

共 17 个接口 · 点开接口查看说明

02 / 导航参数

导航与四足参数

用于注册机器人参数、保存版本和按编号读取。相同参数重复提交返回同一编号;修改参数生成新版本。配置注册不会使能真实电机。

POST/v1/robot-profiles注册机器人参数

请求体为完整参数配置;成功返回 HTTP 201 和 profile_id

GET/v1/robot-profiles/{profile_id}读取参数版本

使用完整编号读取已保存的版本

参数请求体
字段含义
robot_id机器人标识
kinematics.urdf_xmlURDF XML 文本
dynamics.joints以关节名为键的电机与传动参数;使用工作台导出的完整配置

先在工作台导出完整配置 robot-parameters.json;不要为未知的电机标定参数填入估计值。以下 PROFILE_ID 应替换为 POST 返回的完整 profile_id。

cURL
curl --fail-with-body \
  -X POST http://127.0.0.1:8085/v1/robot-profiles \
  -H 'Content-Type: application/json' \
  --data-binary @robot-parameters.json

curl --fail-with-body \
  http://127.0.0.1:8085/v1/robot-profiles/PROFILE_ID

成功响应包含 profile_id、robot_id、joint_names 等字段。runtime_applied 和 hardware_validated 为 false,表示配置存储成功,不代表已加载到真实控制器。

03 / 机械臂操作

机械臂与移动双臂

适用 OmindOS Manipulation 0.3.1,提供模型读取、双臂与腰部规划、差速或全向底盘几何导航。随包 RM75 模型的实际 TCP 为 left_tool0 与 right_tool0,请使用该模型返回的 mapping。

GET/v1/workbench-state读取工作台状态

读取活动配置和软件停止状态

GET/v1/workbench-models列出机器人模型

列出随交付版本提供的模型

GET/v1/workbench-model/{id}读取模型与姿态

读取 profile、mapping、poses;id 为 b / 6fb / 6f

GET/v1/workbench-active-profile读取当前配置

读取已写入程序的配置

POST/v1/workbench-active-profile更新当前配置

请求体为完整 profile;校验、写入并使旧运动结果失效

GET/v1/planning-config读取规划配置

读取参考映射;使用模型响应中的 mapping

POST/v1/planning-start创建规划任务

提交关节或双 TCP 协同规划;返回任务状态

GET/v1/planning-task/{task_id}查询规划结果

读取规划状态、error 与成功结果

POST/v1/planning-cancel取消规划任务

请求体:{"task_id":"实际任务编号"}

GET/v1/navigation-config读取导航配置

读取支持的底盘类型与默认导航配置

POST/v1/navigation-start创建导航任务

提交导航,可指定停车后的协同规划

GET/v1/navigation-task/{task_id}查询导航进度

读取任务与 navigation;同时维持客户端连接

POST/v1/navigation-cancel取消导航任务

请求体:{"task_id":"实际任务编号"}

POST/v1/robot-model计算模型与正运动学

urdf_xml(必填)、positions、base_pose;计算模型与正运动学

POST/v1/workbench-stop软件停止与复位

{"engaged":true} 停止;复位须携带 expected_epoch

规划请求:字段与单位
规划请求字段
字段含义
profile完整模型配置;可由模型接口读取
modejoint:关节路径;object:双 TCP 共同位移与旋转
start / target关节名到弧度值的映射;joint 模式提供 target
mapping模型对应的左右臂、腰部与 TCP 映射
translation_mobject 模式的 [x, y, z] 位移,米
rotation_degobject 模式的 XYZ 欧拉角,度;这是角度单位的例外
base_pose / obstacles固定底盘位姿与世界坐标系盒体障碍物

joint 规划期间底盘、夹爪及非主体关节保持固定。object 单次位移各轴不超过 ±0.25 m,rotation_deg 各轴不超过 ±45°。

导航请求:地图与停车后操作
导航请求字段
字段含义
profile, start, goal必填:完整配置、初始关节姿态、底盘目标
goal / base_posex_m、y_m、yaw_rad;距离为米,朝向为弧度
config从 navigation-config 获取完整默认配置后修改;drive_type 为 differential 或 omnidirectional
config.mapsize_m、origin_m、resolution_m;data 为按行排列的占用栅格,仅整数 0 表示自由空间。不传 data 时为空地图仿真
mapping / obstacles模型映射和共享环境障碍物
manipulation.translation_m可选 [x, y, z];确认停车后启动双 TCP 共同位移规划

导航定位来自几何仿真。传入真实地图仍需另行完成现场标定;规划结果不是可直接发送到电机的控制时序。

04 / 示例

调用示例

读取机械臂工作台状态

以下 Python 示例仅使用标准库,读取状态、模型目录与导航配置,不修改工作台参数。

Python
import json
from urllib.request import urlopen

base_url = "http://127.0.0.1:8085"
for endpoint in ("/v1/workbench-state", "/v1/workbench-models",
                 "/v1/navigation-config"):
    with urlopen(base_url + endpoint, timeout=10) as response:
        print(endpoint, json.load(response))

提交导航与四足参数

先准备从工作台导出的 robot-parameters.json,再运行以下代码。配置保存在当前程序的数据目录。

Python
import json
from pathlib import Path
from urllib.request import Request, urlopen

payload = Path("robot-parameters.json").read_bytes()
request = Request(
    "http://127.0.0.1:8085/v1/robot-profiles",
    data=payload,
    headers={"Content-Type": "application/json"},
    method="POST",
)
with urlopen(request, timeout=10) as response:
    result = json.load(response)
print(result["profile_id"])

提交准备好的规划请求

按上面的规划字段准备 planning-request.json,使用当前模型的 profile 和 mapping。收到 task_id 后继续轮询;HTTP 成功不等于规划完成。

cURL
curl --fail-with-body \
  -X POST http://127.0.0.1:8085/v1/planning-start \
  -H 'Content-Type: application/json' \
  --data-binary @planning-request.json

curl --fail-with-body \
  http://127.0.0.1:8085/v1/planning-task/TASK_ID

05 / 任务状态

状态与错误处理

规划任务:running → succeeded / failed / canceled。提交成功只表示任务已创建,必须继续读取任务状态。

导航任务:planning、navigating、aligning、parking;仅导航的成功终态为 parked。带后续操作的任务继续进入 manipulation_planning,成功终态为 succeeded。

导航任务必须持续轮询

每 0.1–0.5 秒读取一次任务状态;超过 3 秒未读取会停止任务。仅导航成功时 result 为 null,请读取 navigation。失败或取消后,不使用部分路径继续操作。

常见 HTTP 状态
HTTP处理方式
400请求校验失败;检查响应 error。异步任务中的校验失败也可能通过 status=failed 返回
403本机同源校验失败;使用本机客户端访问 127.0.0.1
404GET 查询的配置、模型或任务不存在;确认完整编号
413请求大小或传输编码不符合要求;参数请求体上限 2 MiB
415POST 内容类型错误;设置 Content-Type: application/json
423软件停止、任务互斥或版本状态联锁;读取当前状态,不自动重试运动

停止与复位

发送 {"engaged":true} 到 /v1/workbench-stop 可触发软件停止。复位前重新读取当前 motion_epoch,将该整数放入 expected_epoch,并发送 {"engaged":false,"expected_epoch":当前值}。复位不会自动续跑;软件停止不代替硬件急停。

06 / 兼容性

版本与适用范围

版本对应关系
文档版本公开接口范围运行条件
Navigation 0.2.0-preview.8机器人参数注册与版本读取;预览版本,真实硬件未验收Ubuntu 22.04 / 24.04 x86_64;已部署工作台,需 Docker Engine
Manipulation 0.3.1本机运动学、路径规划、保守离散碰撞与几何导航仿真Ubuntu 22.04 / 24.04 x86_64;已部署工作台,无需另装 ROS 或 Docker

机械臂文档的正式版本范围为本机软件功能。真机驱动、动力学、力控、连续碰撞和载荷碰撞不在本版验收范围内。导航参数 API 不代表四足整机已经完成标定。

接入前请确认程序版本、机器人型号、参数与任务场景。

咨询技术接入

文档更新:2026-10-11

OriginMind Chat了解我们