Xiaomi-Robotics-1 开源:从十万小时数据到具身模型落地

2026-08-06 42 预计阅读时间: 1 分钟
来源: oschina.net AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:10 分钟

小米正式开源自研具身基座模型 Xiaomi-Robotics-1,把一套经过大规模机器人数据训练的视觉、语言与动作模型推向开发者。来源摘要给出的规模包括 1000 个机器人训练场景、1700 种物体和 10 万小时数据;在 4 个主流机器人操作 benchmark 上,它超过了 Pi0、Gemma3 和 Qwen2.5-VL,其中 RoboDojo 指标高出 58.3%,VLABench 则领先第二名 11.1 个百分点。

这些数字值得关注,但对准备把模型接入真实机械臂的团队来说,更重要的问题是:模型能否读懂场景、生成可执行动作,并在面对遮挡、物体位姿变化和执行误差时稳定闭环。

具身基座模型解决的不是单轮识图

传统视觉语言模型可以回答“桌上有什么”,机器人却需要继续处理一串相互依赖的任务:识别目标、理解空间关系、选择抓取位置、规划动作、执行控制,再根据新的相机画面判断是否成功。

因此,具身模型的价值不能只用图像问答准确率衡量。一个完整的机器人操作回路通常包含以下信息:

  • 观察:RGB、深度图、关节角、末端执行器状态和力传感器数据。
  • 任务:例如“把红色杯子放进左侧托盘”,其中包含对象、方向和目标状态。
  • 动作:末端位姿、关节增量、夹爪开合,或者由下游控制器消费的高层技能。
  • 反馈:动作是否完成、目标是否移动、是否发生碰撞,以及是否需要重新规划。

Xiaomi-Robotics-1 的开源意义,在于开发者可以围绕模型权重、推理链路和数据格式开展适配,而不必把具身能力限制在封闭服务中。不过,来源摘要没有给出具体模型接口、许可证条款和硬件兼容列表,实际采用时仍应以仓库中的模型卡和许可证为准。

数据规模为何影响泛化能力

1000 个训练场景和 1700 种物体意味着模型有机会看到大量环境与对象组合。这里真正有价值的不是简单增加物体类别,而是覆盖同一任务中的变化:光照不同、背景不同、目标被遮挡、抓取角度变化,以及机械臂执行后产生的位置偏差。

10 万小时数据则可能扩大长尾动作和失败样本的覆盖范围。不过,仅凭数据时长无法判断训练质量。部署团队还需要确认几个问题:

  • 数据来自真实机器人、仿真环境,还是二者混合?
  • 10 万小时指原始采集时长、过滤后数据量,还是多视角数据的累计值?
  • 训练硬件与目标机械臂之间是否存在相机、夹爪和自由度差异?
  • benchmark 使用的是统一协议,还是针对不同模型做过额外适配?

RoboDojo 和 VLABench 的领先结果证明模型在标准测试中的竞争力,但 benchmark 不是生产环境。实验台上的积木抓取成功率,不能直接等价为家庭环境中的玻璃杯操作安全性。

可以这样实践:先建立受约束的推理适配层

下面是一个可直接运行、也便于改造的 Python 示例。它假设你已经把模型包装成一个 HTTP 推理服务,接口接收任务和机器人状态,并返回高层动作计划。请求路径和字段是集成示例,不代表 Xiaomi-Robotics-1 的官方 API;接入时需要按实际仓库提供的推理代码修改 MODEL_ENDPOINT 和请求体。

先安装依赖并设置服务地址:

python -m pip install requests
export MODEL_ENDPOINT=http://127.0.0.1:8000/v1/robot/plan

创建 robot_client.py

import json
import os
from typing import Any

import requests

ENDPOINT = os.environ.get(
    "MODEL_ENDPOINT",
    "http://127.0.0.1:8000/v1/robot/plan",
)

ALLOWED_SKILLS = {"move_above", "grasp", "place", "open_gripper", "stop"}


def validate_plan(plan: list[dict[str, Any]]) -> None:
    if not plan or len(plan) > 12:
        raise ValueError("Plan must contain between 1 and 12 actions")

    for index, action in enumerate(plan):
        skill = action.get("skill")
        if skill not in ALLOWED_SKILLS:
            raise ValueError(f"Action {index} uses unsupported skill: {skill!r}")

        confidence = float(action.get("confidence", 0.0))
        if confidence < 0.75:
            raise ValueError(
                f"Action {index} confidence {confidence:.2f} is below threshold"
            )


def request_plan() -> list[dict[str, Any]]:
    payload = {
        "instruction": "把红色杯子放入左侧托盘",
        "observation": {
            "rgb_image": "/data/latest/rgb.png",
            "depth_image": "/data/latest/depth.png",
            "joint_positions": [0.0, -0.42, 0.18, 1.21, 0.0, 0.63],
            "gripper_open": True,
        },
        "constraints": {
            "allowed_skills": sorted(ALLOWED_SKILLS),
            "workspace_m": {
                "x": [0.20, 0.75],
                "y": [-0.45, 0.45],
                "z": [0.02, 0.60],
            },
        },
    }

    response = requests.post(ENDPOINT, json=payload, timeout=30)
    response.raise_for_status()
    plan = response.json()["actions"]
    validate_plan(plan)
    return plan


if __name__ == "__main__":
    try:
        actions = request_plan()
        print(json.dumps(actions, ensure_ascii=False, indent=2))
    except (requests.RequestException, KeyError, TypeError, ValueError) as exc:
        print(json.dumps({"safe_stop": True, "reason": str(exc)}, ensure_ascii=False))
        raise SystemExit(1)

运行客户端:

python robot_client.py

这个适配层刻意不让模型直接输出电机电流或任意关节指令,而是把输出限制为 graspplace 等经过验证的技能。低置信度、未知技能、超时和异常响应都会触发安全停止。实际系统还应增加工作空间检查、碰撞检测、速度限制和急停控制器,而且这些约束必须运行在独立于模型的控制层中。

benchmark 之外,还要测什么

内部评估应复现团队自己的任务分布。一个家庭机器人项目可以按物体、环境和干扰因素建立测试矩阵,并同时记录成功率与失败类型:

suite: kitchen-pick-and-place
trials_per_case: 50
scenes:
  - daylight_clean_table
  - low_light_cluttered_table
objects:
  - ceramic_cup
  - transparent_glass
  - deformable_bag
perturbations:
  - none
  - partial_occlusion
  - target_shift_after_planning
metrics:
  - task_success_rate
  - collision_rate
  - replan_count
  - p95_completion_time_ms
safety_limits:
  max_tcp_speed_mps: 0.15
  max_contact_force_n: 8.0
  stop_on_unknown_action: true

不要只汇总平均成功率。透明物体、反光表面、柔性包装和拥挤桌面往往会暴露截然不同的问题。部署前还应保留失败视频、模型输入、动作计划和控制器反馈,确保每次异常都可以重放。

采用前的工程检查

Xiaomi-Robotics-1 展示了国产具身基座模型在公开 benchmark 上的竞争力,大规模场景与机器人数据也为跨任务泛化提供了基础。但开源权重只是起点,模型距离可靠产品之间仍隔着硬件标定、实时控制、安全约束和现场评估。

开始试验时,可以依次确认以下事项:

  1. 阅读许可证和模型卡,确认商业使用、再分发及数据合规要求。
  2. 核对显存、推理延迟、输入模态和支持的机器人本体。
  3. 先在仿真与隔离工作台运行,不直接接入高速机械臂。
  4. 使用受约束的技能接口,让确定性控制器掌握最终执行权。
  5. 用自有场景建立回归集,分别统计碰撞、误抓、掉落和超时。
  6. 对模型升级、量化和微调版本执行同一套安全回归测试。

对研发团队而言,最合理的切入点不是立刻追求通用家庭机器人,而是选定一个边界清晰、可重复测量的操作任务。只有当模型在真实任务矩阵中持续通过测试,公开 benchmark 的领先优势才真正转化为工程价值。


相关推荐