NVIDIA 联合多所大学提出 ASPIRE:自我改进机器人框架,零样本成功率最高提升 77 分
阅读原文· marktechpost.comASPIRE让机器人编程从单次尝试变成持续学习,把失败调试沉淀成可复用技能库,长任务零样本直接从4%拉到31%,这条思路比具体数字更有启发性。
NVIDIA 联合密歇根大学、UIUC、UC Berkeley 等提出 ASPIRE,一个持续学习机器人框架。它通过协调器-执行器架构、闭环执行引擎、技能库和进化搜索,编写并优化机器人控制程序。编程智能体使用 Claude Code(Claude Opus 4.6,1M token 上下文窗口)。在 LIBERO-Pro 上最高比最强基线提升 77 分;Robosuite 双手交接成功率从 20% 提升至 92%;BEHAVIOR-1K 收音机拾取任务从 56% 提升至 88%。利用 LIBERO-90 积累的技能,ASPIRE 在零样本条件下对 LIBERO-Pro Long 任务达到约 31% 成功率,此前方法饱和在 4% 附近。
传统机器人编程难以规模化。它需要手动编排多模态感知、物理接触动力学、多样化的构型以及执行中的各种失败。以代码为策略(Code-as-policy)的系统让语言模型能将上述要素组合成可执行的机器人程序。这使得机器人行为变得可检查、可编辑、可调试。
但现有的机器人编程智能体运行在简陋的执行环境中。它们只能接收到粗略的、任务级别的反馈。一次失败的回放只是表明任务失败了,却不说明失败的原因。根本原因可能出在感知、运动规划、抓取、接触动力学或长程协调上。这些系统还会在任务结束后丢弃所做的修正。因此,智能体在解决第一百个任务时,经验并不比解决第一个任务时更丰富。
来自英伟达(NVIDIA)、密歇根大学、伊利诺伊大学厄巴纳-香槟分校(UIUC)、加州大学伯克利分校和卡内基梅隆大学(CMU)的研究团队提出了ASPIRE(通过迭代机器人探索进行智能体技能编程)。这是一个持续学习系统,能够编写并精炼机器人控制程序,同时将经过验证的修复方案蒸馏到可复用、可迁移的技能库中。
ASPIRE 的工作原理
ASPIRE 运行一个开放式的学习循环,包含三个组成部分。它采用协调器–执行器架构。中央协调器管理共享技能库,并将编码执行器(actor coding agents)分派到各个任务中。执行器之间不交换完整的对话历史或原始轨迹,只有经过蒸馏的技能在其中传递。
闭环机器人执行引擎:该引擎用每个原语的多模态轨迹替换了粗糙的回放反馈。对于每次感知、规划和控制调用,它都会存储输入、输出和返回状态。此外,还会存储RGB关键帧、叠加信息、抓取候选、物体姿态以及运动规划结果。智能体仅检查与故障相关的调用,从而定位问题根源,并通过重新执行来验证修复方案。
技能库:可复用的知识很少是整个任务程序。因此,该库存储的是异质修复方案。这些方案包括定位启发式规则、感知提示词、抓取约束、运动基元以及调试工作流。每个技能都是精简的上下文内指导。它包含一个失败特征、一个适用条件、一个修复策略,并且通常附带一段代码草图。协调器只接收通过调试验证和 API 策略检查的模式。
进化搜索:仅靠跟踪引导的调试可能会陷入局部修复循环。智能体会不断修补同一失败的策略。为了拓展探索范围,ASPIRE 每轮提出 K 个候选程序。候选程序以表现最好的先前程序及其剩余的失败跟踪信息为条件。下一轮探索的是不同的策略,而非精化单一解决方案。
在仿真环境中,编码智能体是 Claude Code,搭配 Claude Opus 4.6 和 100 万 token 的上下文窗口。程序用 CaP-X 编写,这是一个基于 MuJoCo Playground 的开源“代码即策略”框架。智能体无法读取仿真器的真实数据。禁止读取物理引擎状态或如 .bddl、.xml、.urdf 等资产文件。规则很简单:如果一台装有摄像头的真实机器人能做到,那就允许。
交互式解释器
一个实例:多角度方法技能
考虑 BEHAVIOR - 1K 中的一个任务:机器人必须拾起桌子附近的一台收音机。感知模块返回了收音机的位姿,但反复调用 navigate_to_pose 均告失败。生成的目标位置距离桌子边缘约 20 厘米。该位置位于桌子的碰撞避免缓冲区之内,cuRobo 返回 PLANNING_ERROR。
智能体读取跟踪信息并定位原因。失败原因是目标不可行,而非感知或抓取问题。然后它编写一个修复方案,在收音机周围采样对峙位姿。
# radio_pos, safe_navigate() and dist_to() are provided by ASPIRE's robot API
for angle_deg in [180, -90, 90, -45, 45]:
angle = np.radians(angle_deg)
tx = radio_pos[0] + 0.7 * np.cos(angle) # standoff 0.7 m from the radio
ty = radio_pos[1] + 0.7 * np.sin(angle)
face_yaw = np.arctan2(radio_pos[1] - ty, radio_pos[0] - tx)
moved = safe_navigate([tx, ty, face_yaw], f"ang_{angle_deg}")
if moved and dist_to(radio_pos[:2]) < 0.8: # reached a pose within 0.8 m
break每个角度都将目标置于物体的不同侧。当一侧被阻挡时,另一侧往往能够通行。此处 180 度位姿清除了缓冲区。验证通过的修复方案被接纳为可复用的导航恢复技能。
基准测试与结果
ASPIRE 在三个基准系列上进行评估。LIBERO-Pro 测试了在物体、目标和空间扰动下的短时域鲁棒性。Robosuite 涵盖了接触丰富的单臂和双臂操作。BEHAVIOR-1K 涵盖了长时域的家庭移动操作。主要的编码智能体基线是 CaP-Agent0。它使用视觉差分、预定义的技能库以及每轮次测试时的重试机制。对比方法还包括端到端的视觉-语言-动作策略:OpenVLA、π0 和 π0.5。
在 LIBERO-Pro 上,ASPIRE 在 Object 套件上最高提升了 77 个百分点。该数值在两个扰动维度上平均了最强基线。它在 Goal 套件上提升了 41.5 个百分点,在 Spatial 套件上提升了 42.5 个百分点。在 Robosuite 上,双臂交接任务的成功率从 20% 提升至 92%。在 BEHAVIOR-1K 上,收音机拾取任务的成功率从 56% 提升至 88%。
零样本结果值得关注。通过重用从 LIBERO-90 积累的技能,ASPIRE 在未见的 LIBERO-Pro Long 任务上达到了约 31% 的成功率。此前的方法饱和在约 4%。
| 维度 | 端到端 VLA(OpenVLA、π0、π0.5) | CaP-Agent0 | ASPIRE |
|---|---|---|---|
| 范式 | 学习权重的策略 | 代码即策略智能体 | 代码即策略智能体 |
| 跨任务经验 | 无(冻结权重) | 每个任务后丢弃 | 蒸馏到技能库中 |
| 失败反馈 | 测试时无反馈 | 粗略的场景级总结 | 每个原语的多模态轨迹 |
| 测试时策略 | 直接推理 | 每个种子的推理 + 重试 | 每个任务一个程序 |
| LIBERO-Pro 总体 | 0–13% | 18% | 72% |
| LIBERO-Pro Long 零样本 | 0–5% | ~4% | ~31% |
真实机器人技能迁移
研究团队在真实的双臂 YAM 平台上测试了三种从仿真中发现的技能。真实机器人编码智能体是 OpenAI Codex GPT-5.5。其实体形态和 API 与仿真不同。迁移后的技能降低了调试成本。易拉罐拾取任务从 13/20 提升至 19/20,同时使用的模型 token 数量减少了约 10 倍。抽屉打开任务从 0/20 提升至 11/20,而无技能基线从未成功过。
关键要点
- ASPIRE 编写并调试机器人程序,然后将验证通过的修复保存为可复用的上下文内技能。
- 每个原语的多模态轨迹让智能体能够定位失败位置,而无需从 rollout 结果中猜测。
- 它在 LIBERO-Pro 上最高提升 77 个百分点,并将 Robosuite 交接任务从 20% 提升至 92%。
- 零样本迁移在 LIBERO-Pro Long 上的表现达到约 31%,而此前方法仅为约 4%。
- 通过仿真发现的技能降低了在不同本体和 API 上的真实机器人调试成本。