如果你想让人形机器人真的进入家庭场景,这篇文章要解决的不是“家里有没有数据”,而是“你能不能把家庭任务做成可长期复现、可回放、可判断进步与退步的评测闭环”。它适合已经开始做家庭收纳、取放、开关门抽屉、台面整理等任务的团队。最关键的工程判断是:家庭场景最缺的不是更多视频素材,而是一套能稳定定义任务、记录上下文、保留失败证据、控制隐私边界的长期驻场验证基础设施。
这篇适合谁
- 已经在做家庭人形机器人、移动操作机器人,或单臂/双臂家庭操作平台的人。
- 手里已有一些 demo,但一进真实家庭就出现“今天能成,明天又不行”的团队。
- 准备做家庭数据采集,但不想把项目做成低质量素材堆积的人。
- 想把“演示视频”升级为“长期驻场验证证据”的工程团队。
先纠正几个很常见的误区
- 误区 1,家里装上摄像头,多录一点就是数据闭环。
不是。没有任务边界、开始条件、结束条件、人工介入记录和失败桶,录再多也只是素材,不是训练或验证资产。 - 误区 2,家庭场景太复杂,先大规模采再说。
家庭确实复杂,但工程上不能一开始就追“覆盖所有家庭”。先把 3 到 5 个可复现任务工位做扎实,比收一堆无法重演的随机片段更有价值。 - 误区 3,只要仿真够大,家里就可以少测。
像 HomeRobot、RoboCasa 这类系统很有价值,但它们更适合帮你把任务定义、原子技能和场景变量说清楚,不能替代真实家庭里的遮挡、照明、摩擦、摆放习惯和人类打断。 - 误区 4,家庭验证主要看成功率。
成功率只是最后一个结果指标。长期驻场真正决定你能不能继续迭代的,是失败是否可归因、是否能回放、是否知道本轮退化发生在哪一层。
关键实现判断
把家庭场景变成“长期驻场评测场”,我建议先接受四个判断。
- 任务单元必须短。 先把任务收缩成 30 秒到 3 分钟内能结束的单元,比如“从茶几拿起遥控器放回收纳盒”“打开微波炉门并关闭”“把桌面两件餐具移到指定区域”。先别上来就做“整理厨房”这种组合任务。
- 房间不是数据源,任务工位才是数据源。 一个真正可用的家庭验证系统,往往先从几个高频可复位工位开始,比如餐桌、沙发边桌、厨房台面、洗衣篮,而不是整屋无边界巡航。
- 回放资产必须和任务结果绑在一起。 DROID 这类数据系统之所以有价值,不只是录了视频,而是把 observation、action、instruction、episode metadata 拆清楚了。家庭驻场也一样,日志、状态、操作者接管、结果标签必须组成一条完整证据链。
- 隐私治理要在采集前设计,不要等到出问题再补。 家庭场景天然带有人、宠物、生活物品和敏感区域。没有采前分级、脱敏边界和保留期限,这类系统迟早会卡住。
分步实践指南
第一步,先定义 3 类家庭验证任务,不要一锅炖
我更建议把家庭验证拆成三层,而不是混在一起统计。
- 原子操作层: 抓取、放置、开门、关门、抽屉拉合、按钮按压、旋钮旋转。
- 短链任务层: 找到目标物体,靠近,抓起,移动,放到目标容器。
- 长链驻场层: 在有人活动、光照变化、摆放不固定的情况下连续做多轮任务,并正确处理暂停、失败和人工接管。
RoboCasa 的一个可借鉴点,是先把家庭活动拆回一组原子技能,再组合成长链任务。你自己做家庭验证时,也应该先给每条长任务标注它依赖的原子能力,而不是只看最终是否完成。
第二步,把“家庭”收缩成几个可复位工位
真正能跑起来的家庭评测,不是整套房子都在线,而是几个能高频复位、可重复对比的工位在线。
- 每个工位只保留 1 个主任务目标和 2 到 4 个干扰变量。
- 给每个工位建立固定的起始位姿、目标区域和允许扰动范围。
- 明确哪些变量允许随机化,比如物体朝向、光照、目标位置偏差,哪些变量先冻结,比如家具位置、相机高度、网络条件。
HomeRobot 的 OVMM 任务形式很值得借鉴,核心不是“让机器人理解整个家”,而是把任务定义为“把某个物体从起始 receptacle 移到目标 receptacle”。家庭驻场评测也应该尽量把每次 episode 写成这种能复述清楚的任务句。
第三步,日志设计不要只录视频,要录成可追责 episode
这一步最容易被低估。只存 mp4,后面很难用。至少应把一次家庭任务记录成下面几类同步信息:
- 任务元数据: 工位编号、任务类型、环境版本、家具布局版本、对象清单、操作者编号。
- 感知输入: 头部/胸部/腕部相机,必要时加环境相机。
- 机器人状态: 底盘位姿、关节状态、末端位姿、电池状态、故障码、控制模式。
- 动作与决策: 当前技能、规划输出、抓取候选、导航目标、人工接管事件。
- 结果标签: 成功、失败、超时、中断、人工完成;以及失败桶编号。
DROID 文档把 episode metadata、steps、observation、action_dict 分得很清楚,这就是很好的参照。你不一定照搬它的字段,但至少要做到:后续训练、诊断、回放、审核时,能知道“当时看到了什么、做了什么、为什么停”。
如果系统基于 ROS 2,建议从第一天起就把 rosbag2 的 MCAP 录制接进来,而不是后面再想办法补。MCAP 的价值不是“格式新”,而是多通道时序数据更容易统一存、切片、校验和重放,对家庭驻场这种经常要回看多模态上下文的场景很重要。
第四步,把人工接管记录成一等公民
家庭场景里,真正决定系统成熟度的,常常不是完全自动完成的次数,而是机器人快要失败时,人怎么接、接了以后系统有没有学到东西。
- 每次接管都记录触发原因,而不是只打一个“teleop”标签。
- 区分是感知错误、抓取失败、路径不可达、环境变化、对话理解错误,还是安全原因强制接管。
- 保留接管前 10 到 20 秒上下文,保留接管期间关键指令,保留恢复成功与否。
这样做的结果是,你后面不只是有一堆失败片段,而是有一套“哪些失败值得做成示教、哪些失败要改状态机、哪些失败应该直接缩任务范围”的决策依据。
第五步,先建立失败桶,再谈规模化采集
我建议家庭驻场至少先建立 6 个常用失败桶:
- 目标没看见,但其实在场。
- 目标看见了,但抓取姿态选错。
- 抓起来了,但搬运过程中掉落或碰撞。
- 找对了物体,但目标区域判断错。
- 环境临时变化,状态机没有及时降级或暂停。
- 人工接管后任务完成,但系统没有保留足够上下文用于复盘。
失败桶不是为了做漂亮报表,而是为了把下一轮动作排出来。比如连续三天都卡在“目标区域判断错”,那优先级就该给目标区域表示和末端对位,而不是再扩数据量。
第六步,把家庭驻场分成三种运行模式
- 影子模式: 系统看、系统记、系统出建议,但不直接执行高风险动作。
- 半自动模式: 导航、搜索、预对位自动,人确认后抓取或放置。
- 全流程模式: 在限定工位、限定对象、限定时间窗内完整执行。
不要一上来就追全自动家庭助手。长期驻场系统真正可靠,往往来自影子模式和半自动模式先把失败分布跑清楚,再逐步扩大自动化边界。
最容易翻车的地方
- 把“家庭复杂”当成不做任务冻结的理由。 结果是什么都想收,最后没有任何一条链条足够稳定。
- 录像很多,但 episode 不成型。 没有统一编号、没有任务版本、没有物体版本、没有接管标签,后面很难复用。
- 默认把人工接管当噪声。 实际上接管事件常常是最值钱的训练和调试信号。
- 只用仿真挑任务,不用真实家庭筛失败桶。 仿真适合做任务覆盖和接口检查,真实家庭才会暴露你最贵的集成问题。
- 隐私边界说不清。 不知道哪些房间能录、哪些成员出现时必须停、哪些素材多久删除,这会让系统无法长期运行。
怎么验证你真的搭对了
我更看重下面这组验证标准,而不是单篇 demo 视频。
- 同一工位、同一任务,能连续一周稳定回收 episode。
- 任意一次失败,都能在 10 分钟内定位对应日志、视频、机器人状态和人工接管记录。
- 任务成功率之外,失败桶占比能稳定下降。
- 换一个相近家庭布局后,系统知道哪里需要重新标定,哪里可以直接继承。
- 隐私策略能执行,而不是只写在文档里。 比如敏感区域不录、家庭成员进入时自动停采、素材自动过期删除。
如果这五条做不到,你现在更像是在做家庭演示,而不是家庭长期驻场验证。
下一步怎么做
如果你准备从零开始,我建议顺序是:
- 先选 2 个家庭工位和 3 条短链任务。
- 给每条任务补齐 episode 字段、失败桶和接管标签。
- 接入统一日志与回放格式。
- 先跑 100 次有编号的真实 episode,再决定是补仿真、补数据,还是改状态机。
一旦你把家庭场景看成“长期驻场评测场”,后面的训练、模仿学习、回放诊断和灰度上线都会轻很多。相反,如果一开始就把家当成无边界的数据矿,项目通常会在几轮之后失去可解释性。