多机器人协同控制 Skill。让 AI Agent 具备感知反馈、动态适配、并行调度多种机器人的能力。支持机械臂、四足机器人等任意 HTTP API 机器人。"
你是一个多机器人协同控制 Agent。用户会给你机器人的 API 文档,你需要:
你不需要预先知道机器人的型号,只需要能读懂 HTTP API 文档。
python
from multirobotskill import MultiRobotSkill
skill = MultiRobotSkill()
python
python
python
skill.list_robots() # 已注册机器人列表
skill.getrobotcapabilities(robot_name) # 某机器人的能力列表
skill.get_status() # 系统整体状态
python
for result in results:
result.success # bool
result.task_name # str
result.message # str
result.data # dict | None(动作返回的数据)
result.execution_time # float(秒)
result.error # Exception | None
当用户给你一个新机器人的 API 文档时,按以下模板生成适配器代码:
python
import requests
from multirobotskill.adapters.base import (
RobotAdapter, RobotCapability, RobotState, ActionResult,
ActionStatus, RobotType
)
class MyRobotAdapter(RobotAdapter):
[机器人名称] 适配器
端点: http://ip:port
def init(self, name: str, endpoint: str, config):
super().init(name, endpoint, config)
self.robot_type = RobotType.WHEELED # 根据实际类型修改
self.timeout = config.get(timeout, 30)
# 声明该机器人支持的所有动作
self._capabilities = [
RobotCapability(action_name, 动作描述, {param1: 类型说明}),
# ... 更多动作
]
def connect(self) -> bool:
try:
# 调用机器人的健康检查或连接接口
resp = requests.get(f{self.endpoint}/health, timeout=5)
self.state.connected = resp.statuscode == 200
return self._state.connected
except Exception:
self._state.connected = False
return False
def disconnect(self) -> bool:
self._state.connected = False
return True
def get_state(self) -> RobotState:
try:
resp = requests.get(f{self.endpoint}/state, timeout=self.timeout)
data = resp.json()
self._state.battery = data.get(battery)
self._state.position = data.get(position)
except Exception:
pass
return self._state
def get_capabilities(self):
return self._capabilities
def execute_action(self, action: str, params: dict = None) -> ActionResult:
params = params or {}
try:
if action == action_name:
resp = requests.post(
f{self.endpoint}/api/action,
json=params,
timeout=self.timeout
)
data = resp.json()
if data.get(success):
return ActionResult(ActionStatus.SUCCESS, 完成, data=data)
else:
return ActionResult(ActionStatus.FAILED, data.get(message, 失败))
# ... 其他动作
return ActionResult(ActionStatus.FAILED, f未知动作: {action})
except requests.Timeout:
return ActionResult(ActionStatus.TIMEOUT, f动作 {action} 超时)
except Exception as e:
return ActionResult(ActionStatus.FAILED, str(e), error=e)
关键规则:
| 动作 | 参数 | 说明 |
|---|---|---|
| detectobjects | movetocapture=True, includeimage=False | 检测桌面物体,返回物体列表 |
| movetoobject |
| 动作 | 参数 | 说明 |
|---|---|---|
| movetozone | targetzone: str | 移动到区域(loading/unloading/charging/parking) |
| adjustposture |
python
t1 = skill.createtask(arm, detectobjects, name=检测)
t2 = skill.createtask(arm, grab, name=抓取, dependson=[t1.id])
t3 = skill.createtask(arm, release, name=释放, dependson=[t2.id])
plan = skill.create_plan(顺序任务)
for t in [t1, t2, t3]:
plan.add_task(t)
results = skill.execute_plan(plan)
python
t1 = skill.createtask(dog1, movetozone, {targetzone: loading})
t2 = skill.createtask(dog2, movetozone, {targetzone: charging})
plan = skill.create_plan(并行移动)
plan.addtask(skill.createparallel_tasks([t1, t2]))
results = skill.execute_plan(plan)
python
dogmove = skill.createtask(dog1, movetozone, {target_zone: loading})
dogready = skill.createtask(dog1, load, dependson=[dogmove.id])
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 multi-robot-skill-1776023588 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 multi-robot-skill-1776023588 技能
skillhub install multi-robot-skill-1776023588
文件大小: 54.71 KB | 发布时间: 2026-4-13 11:08