苹果把人形感知写进仿真,HALO 或零样本入户
作者:江思奇
机器人会复现预先编排的动作,不等于能在陌生家庭里自主完成任务。要完成家庭任务,机器人既要听懂指令、找到目标物体,也要根据环境规划动作,靠近目标并完成交互。
那么,怎样只用仿真数据训练,让机器人在没见过、没扫描过的真实家庭里做到这些?
11 月 4 日,苹果机器人研究团队发布论文《Perceptive Humanoid Motion from Simulation》(《从仿真中学习带感知的人形运动》),研究提出 HALO。这是一套在仿真中训练、部署在机器人本体上运行的人形机器人自主控制系统,它根据语言指令和机器人视角画面安排任务、生成全身动作,并控制机器人执行。
HALO 用程序化场景和动作扩散模型自动合成训练数据,再通过几何校验筛选动作轨迹。整套控制栈无需使用真实家庭数据训练,部署前也不用扫描房间。执行时,跟踪模块结合头戴深度相机,在 50 Hz 控制回路中根据真实环境修正轨迹。
团队将 HALO 部署到宇树 G1 上,在 6 个陌生环境完成 360 次真机测试,单任务平均成功率为 91%,多任务链式执行平均成功率为 70%。结果说明,机器人可以把仿真中学到的动作带到陌生环境里执行,但连续完成多个任务仍然更难。
要理解 HALO 如何从仿真走到真机,先要看训练数据是怎样生成的,再看系统如何把一句指令转化为全身动作,以及团队怎样训练和验证这套控制系统。
01 仿真房间如何变成训练数据
整套数据管线分为四大环节:先将任务拆解为动作片段并合成运动轨迹,再对轨迹做过滤筛选,随后把动作放置进程序化生成的房间,最后渲染输出头戴视角图像。
第一步为动作合成。研究团队将每项任务切分为多个动作段,为每一段配置文字提示、可选路径点以及末端关键帧。以坐到扶手椅这一任务为例,可拆分为向前行进、转身、落座三段,依靠关键帧固定最终坐姿与目标家具的相对关系。这套任务拆分方案只需编写一次,便可复用到每一个程序化房间中。
动作由动作扩散模型 Kimodo 生成。该模型根据文本、路径点与关键帧输出稠密的全身运动序列。Kimodo 仅做运动学求解,生成轨迹容易出现脚底打滑、穿模、身体浮空等问题。团队会为每一段采样多条候选轨迹,借助前向运动学开展几何校验,排查脚滑、穿透地面、腾空以及超出关节限位等异常,保留评分最优的一条,再将各段拼接为连贯轨迹。

第二步是场景生成。团队基于 Infinigen 室内生成器产出 1,200 个房间,其中 1,178 个完成全流程运行,选取 1,000 个用于训练,剩余 178 个留作仿真评测,评测子集包含 100 个房间。场景覆盖客厅、办公室、卧室,空间边长介于 3.5 至 9.5 米,单房家具数量在 20 至 80 件之间,地板、地毯、门窗与墙面材质随机组合。为满足穿行开门的需求,额外使用 966 个两室及多室场景。
第三步是动作布放。团队提取房间布局的二维占据栅格,在栅格空间内搜索刚体的平移与旋转参数,最多尝试 800 个位置与 24 个朝向,选取首个满足条件的方案:骨盆与全部障碍物保持 0.35 米安全距离,同时目标家具可正常安放。单条数据由随机种子和摆放参数唯一确定,实现动作生成与渲染解耦;更换相机、分辨率、渲染器时,无需重新生成动作轨迹。
第四步是图像渲染。团队在 Isaac Sim 5.1 中回放运动学轨迹,采用和机器人头戴相机一致的鱼眼镜头,输出 1280 × 800 分辨率画面,视场角为 128° × 81°,镜头向下俯 25°。训练样本通过随机调整曝光、对比度、色温、运动模糊与传感器噪声扩充外观多样性;针对 Go‑To、Crawl、Crouch 任务,渲染阶段还会单独调整穹顶光的亮度与色彩。
管线最巧妙的设计在于光照方案。逐帧路径追踪渲染开销过高,团队预先把每个房间的直接光、间接光一次性烘焙至物体自发光贴图。烘焙单个房间耗时中位数为 38.5 分钟;对于未见过的视角,烘焙渲染结果和路径追踪的平均差异为 3.8 个灰阶,约等于 1.5%。光照烘焙完成后,任意光栅化渲染器都可以实时出图,这套数据集也支持跨模拟器重渲染。MuJoCo、Isaac Sim 使用同一套烘焙资源渲染,和 Blender 的误差分别控制在 1.5、2.0 个灰阶以内。
最终数据集覆盖六类技能,合计 162,698 条动作样本,总时长 296.3 小时,单条平均时长 6.6 秒。Sit 任务包含行走、转身、落座三段,平均 7.1 秒;Crawl、Crouch 分别约为 9.4 秒、9.1 秒;Go‑To 最短,平均仅 3.4 秒。

由扩散模型产出动作、几何校验把控质量、程序化生成器构建房间,整条管线摆脱人工采集。动作规模与总时长可随算力扩容,房间数量单独决定视觉与几何多样性,两者解耦,方便通过消融实验独立验证各自带来的影响。
02 从一句指令到全身动作
整套技术栈分为三层:上层将自然语言指令拆解为子任务,中层结合子任务与实时画面输出 5 秒全身运动轨迹,底层再把轨迹转化为机器人关节控制指令。
第一层为任务调度。研究团队依托视觉语言模型,把自由文本指令拆分为至多 8 个子任务,每个子任务绑定一项技能与目标交互对象。用户指令常常省略目标,例如仅说「『坐下』」,系统需要从实时画面识别对应的椅子;指令也会隐含前置动作,若前方有桌子遮挡,机器人就要先下蹲绕行、再靠近目标。调度器持续读取头戴相机画面,完成当前步骤即推进下一任务,失败则重试;遇到通行受阻的情况,可自动插入新的子任务。
调度器部署在机器人配套的 Mac mini 上,采用 Qwen3.6‑35B‑A3B,4 位量化,基于 MLX 推理,调用频率约 0.5 Hz。它与动作生成器共享同一推理引擎,支持离线运行;若需要更强规划能力,也可切换至云端模型。提示词内明确标注各项子任务的触发条件与完成标准,输出遵循固定 JSON 格式,步骤名称仅限系统已实现的技能。
第二层是轨迹生成。生成器接收单张头戴 RGB 图像与当前子任务,输出一段 5 秒的全身运动方案,一共 150 帧、30 Hz。每帧包含 29 个关节角度,搭配骨盆三维平移量与四元数,合计 36 个控制量。编码器采用冻结的 Qwen3.5‑2B 视觉语言模型,解码器为从零训练的扩散 Transformer:8 个 block、宽度 512、8 个注意力头,采用流匹配方式训练,推理使用 15 步欧拉积分,可训练参数量为 49.3 M。

该模块最核心的创新是异步生成机制。单次生成耗时超过一百多毫秒,如果等待当前轨迹执行完毕再计算下一段,机器人会在推理间隙停滞,无法流畅完成动态动作。团队选择让生成器在跟踪器执行现有计划的同时,预计算下一段轨迹,但两段衔接处天然存在接缝。如果放到推理阶段修复连续性,不仅很难保证轨迹平滑,还需要在每一轮去噪步计算梯度,进一步拉高延迟。
团队转而将连续性约束融入训练流程。新轨迹的前 15 帧,也就是机器人即将执行的 0.5 秒固定动作,直接作为确定前缀送入生成器;模型仅对剩余 135 帧做去噪,损失函数也只针对这一部分计算。模型在训练中学习承接任意动作前缀续写轨迹,平滑切换计划成为网络原生能力,不再依赖推理时的额外修补。部署时,新计划前 15 帧直接复制自正在执行的轨迹,每一轮去噪后同步覆写,两段轨迹便可无缝衔接。
第三层是轨迹跟踪。跟踪器以 50 Hz 频率运行,接收生成器输出的运动计划、实时深度图、本体传感数据与 IMU 信号,输出 29 个目标关节位置。深度信息来自头戴相机下方的 RealSense D435i;团队关闭红外点阵投射,将原始双目红外图像送入轻量化立体匹配网络,在 Jetson 平台上通过 TensorRT FP16 输出 48 × 84 的高质量深度图,规避相机原生深度图自带的噪点与空洞。
搭载深度感知的跟踪器,正是这套方案区别于过往工作的关键。传统方案中,无感知跟踪器只会严格复刻预设落脚位置;而接入深度之后,台阶、地毯、家具边缘这类计划之外的障碍物,都能在 50 Hz 的控制回路里实时调整。这也是机器人能够在未经扫描的陌生房间稳定行走的重要原因。
三层模块依靠极简接口串联:上层仅向下传递子任务文本,中层只输出运动轨迹,底层回传执行状态。窄接口便于分模块迭代替换,但同时也意味着跟踪器不理解任务意图,只负责忠实跟随轨迹。
03 从专家策略到真机控制
跟踪器采用三段式训练流程:首先训练可获取特权信息的专家策略,再通过知识蒸馏得到仅依托机载传感器运行的学生模型,最后借助多评论家强化学习完成微调;生成器则采用独立的模仿学习路线。
训练素材取自 1,000 个程序化房间,总时长 300 小时,整套合成任务在 250 张 H100 上耗时 48 小时,全程无需人工参与。生成器在 64 张 B200 上完成 50 个 epoch 的训练,样本总量 31.0 M,批大小设置为 5,120;跟踪器的三个训练阶段分别占用 1 张、1 张、4 张 H100,并行仿真环境数量依次为 8,192、4,096、16,384。
第一阶段为专家策略训练。团队针对每一类技能单独训练一个 PPO 专家。专家能够读取仿真环境中的特权信息,包含本体传感数据、未来 10 帧参考轨迹、地面与家具局部高度图,输出 50 Hz 的关节位置目标,交由 PD 控制器执行。仅依靠姿态模仿不足以完成推箱子这类交互任务:机械手停在箱体旁、箱子没有发生位移时,姿态误差依旧很小。因此面向物体交互的专家,额外增加手物距离、物体位移两项奖励。
第二阶段将专家蒸馏为学生模型。学生仅接收机载信号:运动计划、头戴深度图、本体传感数据与 IMU,无法读取物体坐标、地形高度等特权信息。每个仿真样本会根据当前技能路由至对应的专家,学生不会对多个专家的动作做平均融合。训练结合行为克隆与 DAgger,20% 的 rollout 由专家驱动,剩余 80% 由学生自主执行,让模型从自身产生的偏差中学习修正方式。
第三阶段利用强化学习对学生模型直接微调,深度渲染被纳入训练回路。不同技能的奖励量级差距明显,物体交互任务附带额外的物体奖励,如果共用单个评论家,高回报任务会挤压其余技能的学习空间。团队为每一类技能单独配置评论家,演员权重共享;各个评论家仅使用对应技能样本更新,优势函数也按技能独立标准化。
研究团队通过两项手段缩小仿真与真机之间的域差:一方面依据电机转子惯量解析推导各关节 PD 增益,让全部关节保持一致的固有频率与阻尼比,并按照关节力矩上限对动作幅值做缩放;另一方面,利用开环轨迹在真机上拟合刚度、阻尼、转子惯量、力矩上限以及传输延迟。将训练分布对齐至辨识得到的真机参数后,域随机化的范围可以收敛至贴近真实工况,避免策略因随机区间过大而过度保守。经过拟合,关节跟踪误差由 26.9% 下降至 10.1%。

域随机化分为两档。前两个训练阶段采用较窄的随机区间,保留专家策略的精度;第三阶段放开约束,随机化 PD 增益、转子惯量、力矩上限、连杆质量,以及 15 至 40 毫秒的指令延迟,同时扰动地面摩擦、地面刚度阻尼、物体质量与摩擦系数。深度流额外引入相机安装偏差、随机遮挡、随距离递增的立体噪声、3% 的像素丢失以及 1 至 3 帧延迟。
真机平台选用 Unitree G1,整机重 37.56 公斤;背部加装护罩用于承载 Mac mini M4 Pro,头部搭载一台 OAK‑1W 广角相机。上层调度器与生成器运行在 Mac mini,下层跟踪器部署在机器人自带的 Jetson Orin NX,两层之间依靠 ZeroMQ 异步通信。跟踪器以 C++ 实时进程实现,运行于 PREEMPT_RT 内核,保证控制回路不被阻塞。
生成器单独推理一次约 152 毫秒,与调度器共享算力时约 155 毫秒;调度器单次转移决策单独运行约 0.72 秒,共享算力条件下约 1.46 秒。运动计划存在 333 毫秒的时效窗口,调度器至少预留 60% 的 GPU 资源保障轨迹生成优先级,调度调用可在层间临时暂停。
04 六个陌生家庭里的真机测试
整套验证分为四个环节:首先在六项独立单任务上开展测试,随后验证三条多任务链路,再针对各模块做消融实验,最后检验机器人在全新房间、陌生家具与不同人物目标上的泛化能力。
实验依托 MuJoCo 运行完整部署链路,生成器输入的头戴画面依照 OAK‑1W 鱼眼相机模型渲染,仿真保持实时节奏,规划延迟计入全部流程。六项任务分别为走向指定物体、坐到椅子上、侧身穿过半开房门、俯身从桌下匍匐通过、贴地爬行穿过桌底、推动箱子。单任务在 100 个仿真环境与 6 个真实环境中各重复 10 次,合计 6,000 轮仿真测试、360 次真机测试。
各项任务设有独立判定标准:一旦摔倒即记为失败;骨盆倾角超过 60°,或是骨盆高度低于 0.3 米并持续 1 秒,均判定为摔倒。Crouch 与 Crawl 需要从桌下通行、不触碰桌面,穿出后站直停稳;Door 要求顺利穿过门洞、不磕碰门扇,进入房间后稳定站立;Sit 需要抵达距离椅子 0.9 米以内范围,骨盆高度落在 0.35 至 0.68 米,躯干偏离竖直方向不超过 40°;Push 需要让箱子至少移动 0.3 米;Go‑To 则要求机器人停在目标点 1 米以内。
单任务平均成功率在仿真与真机场景均达到 91%。其中 Go‑To 真机成功率为 92%,Crouch 在真机上达到 100%,六项任务里有四项的真机表现不弱于仿真。仿真与真机平均分持平,说明这套方案没有出现「仿真有效、真机失效」的域迁移落差。真机测试环境覆盖木地板、瓷砖、水泥地面、门槛以及不同厚度的地毯。

多任务选取三条任务链,在 50 个仿真环境、1 个真实环境各跑 10 次,平均成功率仿真为 69%、真机为 70%。其中 Door→Go‑To 在真机上成功率达到 100%,Crouch→Go‑To→Push 真机成功率为 50%。链式任务成功率低于各单任务成功率的乘积:Door→Go‑To 的理论乘积为 89%,实际仅 71%,证明子任务之间并不相互独立。
团队复盘失败回放,故障大多源于上一段任务结束时的姿态。真机上 Crouch→Go‑To→Push 一共 5 次失败,其中 3 次是匍匐结束后头部朝向偏离箱体,箱子始终脱离视野,机器人被其他物体误导;Crouch→Sit 则出现两次误将右侧沙发识别为目标座椅的情况。仿真中的 Door→Go‑To 也存在同类问题:穿门本身成功率 85%,但出门后的朝向随门洞位置改变,目标物体可能直接移出视野,使得后续 Go‑To 的条件成功率降至 83%。
消融实验选用 Sit 任务,在 100 个预留仿真环境中各测试 10 次。当训练房间数量从 1 提升至 100,成功率由 43% 跃升至 81%;从 100 扩充至 1,000,成功率仅再多提升 3 个百分点。这说明数据多样性在早期增益显著,当房间规模达到一千之后,边际收益已经非常有限。
轨迹连续性设计对性能影响更大。不做任何连续性处理时,每次切换计划都会出现跳变,成功率跌至 24%;改为在推理阶段修补接缝,成功率为 66%,比训练时采用前缀约束的方案低 18 个百分点。
研究人员还分别移除解码器优化与深度感知模块做对照:将流匹配替换成回归解码器,成功率直接跌到 19%;去掉深度输入、仅保留本体传感,成功率下降至 74%。

本次评测最重要的设计是预留独立环境。所有对照实验都在完全没有见过的房间内运行,更换的是整套空间,而不是在同一个房间里更换一条轨迹。每一组指标都来自全新场景,「零样本」才具备实际意义。真机用到的六个测试环境同样没有提前扫描、建图,也从未出现在训练集中。
真机泛化测试进一步更换人物、桌子与座椅:Go‑To 在不同房间走向不同的人,Crawl 分别在室内、室外两张桌子下方爬行,Crouch 在三张高度不一的桌下蹲行,Sit 的目标包含黑色扶手椅、白色扶手椅、两张普通沙发以及一张转角沙发。六类技能都可以在陌生空间稳定执行,证明训练时丰富的房间多样性,确实转化为机器人在真实世界的适应能力。
论文讨论部分补充了两条落地经验:同步随机化地面摩擦与接触柔度,机器人既能在厚地毯上站稳,也可以在光滑地板上避免打滑;动作平滑惩罚相比仿真回报,更适合预判真机稳定性,如果动作速率正则不足,脚踝、手腕会伴随传输延迟产生抖动。
HALO 把仿真变成自动的数据工厂:先在一千个虚拟房间里教会机器人落座、穿门、蹲爬、推箱子,再整套部署到实体机器人,在从没扫描过的真实家庭里直接上手。
它真正的变化,是换了一套做数据的思路:不再靠人一点点操控录制样本。只要算力足够,就能源源不断产出训练素材。目前这套方案已经在六个陌生家庭顺利验证,接下来要挑战更复杂的居家动作,让机器人看懂更多环境信号。