想象一下尝试学习一个新的舞步。你不会去读一本关于扭矩和角速度的物理课本;你只会观察别人怎么跳,然后试着模仿。你会观察他们的脚步、步伐的节奏,并调整自己的身体,直到与你所看到的动作相匹配。

很长一段时间以来,教机器人运动的方式恰恰相反。工程师们不得不煞费苦心地使用复杂的数学函数定义“奖励”。如果你想让一只机器狗小跑 (trot) ,你必须用数学公式描述小跑的样子——定义脚的高度、关节速度和接触时间——然后使用强化学习 (RL) 来“训练”机器人以最大化该分数。这是一个脆弱、耗时的过程,而且通常需要昂贵的动作捕捉 (MoCap) 实验室。

但如果机器人能像我们一样学习呢?如果它能仅仅看一段狗奔跑的视频,说声“好的,我懂了”,然后教会自己做同样的动作呢?

这就是 SDS (“See it, Do it, Sorted”,意为“看见它,做到它,搞定它”) 的前提,这是伦敦大学学院机器人感知实验室提出的一个新框架。该论文介绍了一种流程,允许四足机器人 (如 Unitree Go1) 从单个演示视频中学习各种运动技能——无需人工标签、MoCap 数据或手动奖励工程。

图 1: SDS 模仿演示技能的能力 (上) ,仿真环境 (中) 和真实世界 (下) 。蓝色胶带对应后腿,红色胶带对应左侧腿。

在这篇深度文章中,我们将探讨 SDS 如何利用 GPT-4o 的力量来弥合视觉观察与运动控制之间的鸿沟,有效地赋予机器人“观察、执行和自我修正”其技能的能力。

机器人学习的瓶颈

要理解 SDS 的重要性,我们首先需要看看腿足式运动通常是如何教学的。

在深度强化学习 (DRL) 中,代理 (机器人) 探索环境并接收“奖励”信号,告诉它做得有多好。“奖励函数”是定义任务的关键代码片段。

  • 太简单? 机器人会找到一个漏洞 (例如,向前扑倒而不是奔跑) 。
  • 太复杂? 机器人永远不知道如何获得正分。

传统上,这些函数是由专家手工编写代码完成的。如果你想将步态从“小跑”变为“腾空跑 (bound) ”,你必须重写数学公式。最近尝试使用大语言模型 (LLMs,如 Eureka) 自动化这一过程显示出了希望,但它们通常依赖于文本描述 (“编写一个后空翻的奖励”) 。它们并没有真正看到动作。

SDS 通过创建一个视觉-语言反馈循环改变了这一点。它不仅使用 GPT-4o 编写代码,还让其充当视觉评论家,将机器人的尝试与原始视频进行比较,并迭代地改进代码。

SDS 流程: 概览

SDS 方法是一个闭环系统。它不仅看一次视频;它会不断观察机器人的进度并更新其指令。

图 2: SDS 方法概览。流程从视频输入循环到奖励生成、训练和评估。

如上图所示,该过程可以分解为七个不同的步骤:

  1. 输入与分析: 系统获取原始视频并将其处理成 AI 可以理解的格式 (\(G_v\))。
  2. 奖励生成: GPT-4o 用 Python 编写一个候选奖励函数 (\(\mathcal{RF}\))。
  3. 训练: 机器人使用该函数在物理模拟器 (Isaac Gym) 中进行训练。
  4. 反馈记录: 系统记录机器人的尝试,捕获视频帧 (\(G_s\)) 和接触模式。
  5. 评估: GPT-4o 观看仿真画面并将其与原始视频进行比较。
  6. 选择: 保留表现最好的奖励函数。
  7. 进化: 系统根据视觉反馈改进代码并重复该循环。

让我们分解一下使其成为可能的技术创新。

创新点 1: 时空网格 (\(G_v\))

使用像 GPT-4o 这样的视觉-语言模型 (VLMs) 处理视频的最大挑战之一是,它们实际上并不像人类那样“观看”视频。它们处理 token。将完整的高帧率视频输入模型计算成本高昂,且往往导致模型产生细节幻觉或迷失时间感。

SDS 通过一个巧妙的预处理步骤解决了这个问题,称为网格帧提示 (Grid-Frame Prompting)

系统不使用视频文件,而是将演示转换为包含帧网格的单张静态图像。这个网格 (表示为 \(\mathcal{G}_v\)) 以空间布局捕获了运动的时间演变。

图 7: 排列成网格形式 (\\(G_v\\)) 的演示视频,作为 GPT-4o 进行 SDS 处理的输入。

研究人员并不仅仅是随机选取帧。他们使用基于运动速度的自适应采样策略。如果动物移动缓慢,系统会更密集地采样帧以捕捉细微的变化。如果运动很快,采样就会分散开来。

帧数 (\(n\)) 和时间间隔 (\(\tau\)) 计算如下:

基于速度和持续时间的帧采样公式。

这里,\(T\) 是视频持续时间,\(v\) 是速度。帧被排列成正方形网格 (例如,\(4 \times 4\) 或 \(6 \times 6\)) 。这使得 GPT-4o 可以在单次“扫视”中分析整个步态周期,而无需视频显存缓冲区。

为了进一步帮助 AI 理解它所看到的内容,SDS 使用 ViTPose++ 增强了这些网格。这是一种计算机视觉算法,将骨架火柴人叠加在动物身上。

图 4: 演示帧及相应模拟帧上的 ViTPose++ 估计。

通过提供“骨架”视图,SDS 减少了歧义。AI 不需要猜测膝盖在哪里;它被明确地绘制在图像上。

创新点 2: SUS 提示 (See it, Understand it, Sorted)

给 AI 一张狗的照片并说“让机器人照这样做”通常太模糊了。为了生成精确的数学奖励函数,AI 需要推理物理、时序和稳定性。

作者引入了 SUS , 这是一种“思维链 (Chain-of-Thought)”提示策略,将认知过程分解为四个不同的“智能体”或角色。

图 3: 针对 GPT-4o 的 SDS 提示技术: a) 排列在网格 (\\(G_v\\)) 中的演示视频帧 b) 分解为 4 个特定任务智能体的 SUS 技能分解。

  1. 任务描述智能体 (Task-Descriptor Agent): 观察网格并识别主体和一般动作 (例如,“一只狗从左向右跑”) 。
  2. 步态分析智能体 (Gait-Analyzer Agent): 专门观察脚部。它识别接触序列——哪条腿接触地面以及何时接触。这对于区分小跑 (对角线对) 和溜蹄 (同侧对) 至关重要。
  3. 任务需求智能体 (Task-Requirement Agent): 分析物理约束。躯干稳定吗?运动是快还是慢?相对于地面的方向是什么?
  4. SUS 提示生成智能体 (SUS-Prompt-Generator Agent): 将所有这些观察结果综合成一个结构化的提示,最终用于生成 Python 代码。

这种结构化的分解防止了 AI 跳过步骤,并确保生成的代码基于具体的视觉证据。

进化循环: 从错误中学习

一旦生成了 Python 奖励函数,系统就会在 Isaac Gym 中启动仿真。这是一个高性能的物理引擎,可以并行模拟数千个机器人。

机器人使用一种称为 PPO (近端策略优化) 的算法,试图最大化给予它的奖励。经过短暂的训练爆发后,系统记录结果。

但是我们怎么知道机器人是否成功了呢?

在标准流程中,人类会进行检查。在 SDS 中,由 GPT-4o 进行检查。系统生成一个仿真网格 (\(\mathcal{G}_s\))——一个看起来与输入网格完全一样的图像网格,但主角是机器人。

图 8: 排列成网格形式 (\\(G_s\\)) 的仿真画面,作为 GPT-4o 的输入。

AI 将输入网格 (真实的狗) 与仿真网格 (机器人) 进行比较。它寻找:

  • 视觉相似性: 姿势匹配吗?
  • 接触模式 (CP): 脚步的节奏匹配吗?
  • 稳定性: 机器人摔倒了吗?

这种评估创建了一个反馈循环。如果机器人拖着脚走,GPT-4o 会注意到网格中的视觉差异,并在下一次迭代中修改奖励函数以惩罚拖脚行为。

图 10: 在 5 次 SDS 奖励迭代中,处于匹配步态相位 (T=5s) 的所有技能的任务行为进化过程。

如图 10 所示,第一次迭代通常会导致混乱或不正确的动作。到了第 5 次迭代,机器人的动作已经“进化”到与参考动物非常接近,这完全是通过这种自动视觉批判实现的。

实验结果

研究人员在四种不同的步态上测试了 SDS: 溜蹄 (Pace)、小跑 (Trot)、跳跃 (Hop) 和 奔跑 (Bound) 。 这些代表了一系列的难度和协调性。

准确性与模仿

使用的主要指标是 动态时间规整 (DTW) 距离。DTW 衡量两个时间序列 (真实动物与机器人的轨迹) 之间的相似性,即使它们的播放速度略有不同。

结果令人印象深刻。SDS 实现了 \(10^{-6}\) 量级的 DTW 距离,表明其保真度极高。更重要的是,对于大多数技能,它在接触序列方面实现了 100% 的步态匹配

图 5: 步态评估结果。接触序列和基座高度稳定性。

在上图中,面板 (a) 显示了接触模式。黑色/橙色块代表脚接触地面。你可以看到每种步态的独特节奏 (例如,小跑的对角同步与奔跑的前后同步) 。机器人的模式 (Sim) 几乎完美地与预期的生物学模式对齐。

稳定性

从视频中学习的危险之一是,动物看起来很稳定,但模仿它的机器人可能会因为重量分布不同而摔倒。SDS 策略被证明非常稳健。图 5 中的面板 (b) 显示了基座高度的稳定性。波动极小 (毫米级) ,这意味着机器人没有不受控制地弹跳或抖动。

稳定性-速度 (StS) 指标

研究人员引入了一个综合稳定性评分,惩罚偏离安全质心和过度摆动 (角速度) 的行为。

稳定性-速度 (StS) 比率公式。

即使在受到外力推动 (高达 110N 的横向扰动) 时,经过 SDS 训练的策略仍保持了很高的稳定性得分。

表 10: 0N 和 110N 横向扰动 (持续 2 秒) 下的策略稳定性评分 (StS)。

泛化能力: 不同的身体,相同的技能

对于任何机器人学习算法来说,一个主要的考验是形态泛化 。 如果你在一段狗的视频上训练系统,它能控制一个长得不一样的机器人吗?

团队在 ANYmal-D 机器人上测试了 SDS。与 Unitree Go1 (看起来有点像视频中的狗) 不同,ANYmal 更大、更重,并且具有倒置的后膝关节 。 这种运动学差异通常会破坏标准控制器。

图 11: SDS 在 ANYmal 四足机器人上的泛化能力演示。

值得注意的是,SDS 成功教会了 ANYmal 小跑和奔跑。因为该系统依赖于视觉目标 (脚应该在哪里) ,而不是直接复制关节角度,它允许优化器找出如何将脚移动到那里,无论膝盖是朝哪个方向弯曲的。

为什么它有效? (消融研究)

作者进行了“消融研究”——系统地移除系统的各个部分,看看哪里会出问题。

  1. 无网格 (\(G_v\)): 如果移除网格提示,AI 就会失去时间感和序列感。模仿完全失败。
  2. 无 SUS: 如果没有分解智能体,生成的奖励函数是通用的,无法捕捉特定的步态细节。
  3. 无接触模式: 如果反馈循环只关注机器人的身体姿势而忽略脚部接触的具体时间,机器人就会学会“滑动”或“摆姿势”,而不是真正地行走。

图 6: (a) 四种技能在 Unitree Go1 上训练时的平均 SDS 奖励信号及消融变体。(b) 小跑行为的进化过程。

图 6(a) 显示了学习曲线。黑线 (完整 SDS) 始终比缺少组件的版本 (彩色线) 获得更高的奖励。

结论与未来展望

SDS 代表了向“零样本 (Zero-Shot)”机器人学习迈出的重要一步。通过大语言模型的镜头将视觉数据有效地转化为可执行代码,该框架消除了对以下内容的需求:

  • 手动奖励调整。
  • 复杂的动作捕捉设置。
  • 人在环路的修正。

其影响不仅仅局限于机器狗。这种方法表明,在未来,我们或许只需向家务机器人展示一段 YouTube 视频,就能教会它们做饭、打扫卫生或使用工具。

虽然仍存在局限性——目前它最擅长处理周期性步态,并依赖于侧视视角——但 SDS 证明了“看见”一个动作和“做到”它之间的差距正在迅速缩小。机器人通过观察进行学习的时代才刚刚开始。

有关具体提示架构和开源代码的更多详细信息,请参阅摘要中链接的完整论文资源。