Xiaomi-Robotics-1:用十万小时真实数据训练移动操作基座模型

2026-07-16 26 预计阅读时间: 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.

预计阅读时间:8 分钟

小米发布了面向真实移动操作任务的具身基座模型 Xiaomi-Robotics-1,并表示代码与模型权重将在近期全面开源。相比只在固定机械臂或单一仿真环境中工作的策略模型,它更值得关注的地方,是以 10 万小时真实世界数据进行预训练,再利用跨本体数据完成后训练,目标直接指向未见环境、复杂新任务和不同机器人本体之间的迁移。

十万小时数据真正解决什么问题

具身模型面对的输入并不只是图像和文本。机器人还要处理关节状态、末端执行器姿态、底盘位置、历史动作以及不同频率的传感器数据。真实世界数据规模扩大后,模型有机会学习物体遮挡、光照变化、执行误差和接触失败等仿真环境难以完整覆盖的长尾现象。

不过,数据时长不能直接等同于有效样本量。判断这类模型时,还需要关注几个尚待开源材料说明的问题:

  • 10 万小时数据覆盖了多少场景、任务和机器人本体;
  • 训练数据中成功轨迹、失败轨迹和人工干预轨迹如何分布;
  • 图像、状态和动作采用什么时间粒度对齐;
  • 数据是否包含导航与操作耦合的长序列任务;
  • 评测是否报告成功率、执行时间、碰撞率和人工接管次数。

小米披露的结果表明,模型在未见环境的真实机器人任务中呈现稳定的规模化收益,并在复杂新任务适配和多个仿真基准上取得较强表现。这里的关键不是某个单项分数,而是收益能否随着数据和模型规模增长持续出现。如果开源版本同时提供训练曲线、评测协议和失败案例,开发者才能进一步判断这种规模化趋势可以迁移到哪些设备与场景。

跨本体训练的难点在动作接口

跨本体数据可以扩大经验覆盖面,但不同机器人的动作空间往往并不兼容。轮式底盘可能接收线速度和角速度,机械臂可能接收关节位置、关节速度或末端位姿,夹爪的控制方式也各不相同。

工程上通常需要在基座模型和硬件驱动之间增加本体适配层,把统一动作表示转换为具体控制命令。例如,模型输出“底盘速度、末端位姿增量、夹爪开合度”,适配层再根据机器人的自由度、坐标系和安全限制执行映射。

这种设计还决定了后训练成本。如果统一表示足够稳定,新机器人可能只需要少量示范数据和一个动作适配器;如果表示依赖某种硬件结构,就可能需要重新训练较大范围的参数。Xiaomi-Robotics-1 的具体动作表示、参数规模和适配方法仍应以开源代码及技术文档为准。

可以这样实践:先定义可替换的本体适配层

在正式代码发布前,可以先整理自己的数据与控制边界。下面是一个最小伪项目,假设上层策略输出归一化的底盘速度、末端位姿增量和夹爪指令。它不是 Xiaomi-Robotics-1 的官方接口,但可以直接运行,用来验证动作裁剪与适配流程。

将以下内容保存为 robot_adapter.py,然后运行 python robot_adapter.py

from dataclasses import dataclass
from typing import Sequence


def clamp(value: float, low: float, high: float) -> float:
    return max(low, min(high, value))


@dataclass
class PolicyAction:
    base_vx: float
    base_wz: float
    ee_delta: Sequence[float]  # dx, dy, dz, droll, dpitch, dyaw
    gripper: float             # 0.0 closed, 1.0 open


class MobileManipulatorAdapter:
    def __init__(self, max_vx: float = 0.4, max_wz: float = 0.8):
        self.max_vx = max_vx
        self.max_wz = max_wz

    def convert(self, action: PolicyAction) -> dict:
        if len(action.ee_delta) != 6:
            raise ValueError("ee_delta must contain 6 values")

        return {
            "base": {
                "linear_x": clamp(action.base_vx, -1.0, 1.0) * self.max_vx,
                "angular_z": clamp(action.base_wz, -1.0, 1.0) * self.max_wz,
            },
            "arm": {
                "cartesian_delta": [
                    clamp(value, -1.0, 1.0) * scale
                    for value, scale in zip(
                        action.ee_delta,
                        (0.02, 0.02, 0.02, 0.05, 0.05, 0.05),
                    )
                ]
            },
            "gripper": {"position": clamp(action.gripper, 0.0, 1.0)},
        }


if __name__ == "__main__":
    adapter = MobileManipulatorAdapter()
    policy_output = PolicyAction(
        base_vx=0.7,
        base_wz=-0.3,
        ee_delta=(0.5, -0.2, 0.1, 0.0, 0.0, 0.3),
        gripper=1.0,
    )
    print(adapter.convert(policy_output))

接入真实机器人时,不要让模型输出直接进入电机控制器。适配层至少应增加工作空间检查、速度与加速度限制、碰撞检测、急停状态以及控制超时。模型负责提出动作,独立的安全控制器负责决定动作能否执行。

开源后应优先验证什么

评估 Xiaomi-Robotics-1 时,可以从一个范围清楚、可重复的任务开始,例如“从相邻房间移动到桌边并抓取指定物体”。至少准备训练场景、同分布测试场景和未见布局三组环境,并固定成功条件与超时时间。

建议记录任务成功率、平均完成时间、碰撞次数、动作重规划次数和人工接管次数。还应分别测试零样本执行、少量示范后适配和完整微调,避免只用一个最终成功率掩盖部署成本。

在代码、权重和许可证公布前,不宜提前假设模型可商用、可在消费级显卡运行或能够直接适配任意机器人。更稳妥的准备工作是统一数据格式、隔离硬件适配层、建立安全控制器,并把评测流程自动化。这样等开源版本落地后,团队可以快速回答最关键的问题:它在自己的机器人、场景和安全约束下,是否真的比现有策略更可靠。


相关推荐