Lessons from Learning to Spin Pens
核心思想
让机器人灵巧手(Allegro Hand)学会连续旋转笔状物体——这是一个对人类来说自然但对机器人极具挑战性的任务,因为它需要动态平衡和精密的多指协调。
核心方法:三阶段流程
- 仿真中训练 Oracle 策略(有特权信息的 RL)
- 本体感受策略预训练(从 Oracle 轨迹学习运动先验)
- 真实世界微调(不到 50 条轨迹桥接 sim-to-real gap)
背景知识
为什么笔旋转特别难
| 挑战 | 说明 |
|---|---|
| 动态平衡 | 笔在手指间旋转时需要持续调整力的平衡 |
| 手指换位 | 连续旋转需要手指”接力”——一组手指放开时另一组接住 |
| 遥操作不可行 | 延迟和复杂度使人类无法通过遥操作演示此任务 |
| Sim-to-real gap 巨大 | 高动态任务中,仿真的接触力模型误差被放大 |
之前方法的局限
- 已有方法只能处理球形或方形物体的旋转
- 笔状(细长)物体的旋转此前从未被解决
方法详解
Stage 1:仿真中训练 Oracle 策略
1.1 Oracle 的观察空间(特权信息)
Oracle 能看到真实机器人无法获取的完整信息:
| 观察 | 维度 | 说明 |
|---|---|---|
| 关节位置 $q_t$ | $\mathbb{R}^{3 \times 16}$ | 3 步历史 × 16 个关节 |
| 上一步动作 $a_{t-1}$ | $\mathbb{R}^{3 \times 16}$ | 3 步历史 |
| 触觉信号 $c_t$ | $\mathbb{R}^{32}$ | 5 个传感器/指尖 × 4 指 + 额外 |
| 指尖位置 $p_t$ | $\mathbb{R}^{4 \times 3}$ | 4 个指尖的 3D 坐标 |
| 笔的位姿和角速度 $w_t$ | $\mathbb{R}^7$ | 位置 + 四元数 + 角速度 |
| 点云编码 | $\mathbb{R}^{100 \times 3}$ | 通过 PointNet 编码物体形状 |
| 物理属性 | — | 质量、质心、摩擦系数、尺寸 |
1.2 动作空间
\[a_t = \eta \cdot f_\theta(o_t) + a_{t-1}\]- $f_\theta$:策略网络输出相对位置增量
- $\eta$:动作缩放因子
- 增量式动作 + PD 控制器转换为关节力矩
为什么用增量式:相比绝对位置命令,增量式更平滑、更稳定。
1.3 奖励函数
\[r = r_\text{rot} + \lambda_z \cdot r_z + \lambda_\text{energy} \cdot r_\text{energy}\]旋转奖励 $r_\text{rot}$($\lambda_\text{rot} = 1.0$):鼓励绕 z 轴的旋转速度。
高度惩罚 $r_z$($\lambda_z = -1.0$):
\[r_z = |z_\text{pen} - z_\text{target}|\]保持笔水平——这个看似简单的项至关重要:
- 没有 $r_z$:笔会倾斜甚至竖直,导致不稳定
- 有 $r_z$:笔保持水平 → 开环轨迹回放时也能成功(Stage 3 依赖此特性)
能量惩罚 $r_\text{energy}$(5 个子项):
| 子项 | 含义 | 权重 |
|---|---|---|
| $r_\text{vel}$ | 惩罚笔的线速度(防止甩飞) | $-0.3$ |
| $r_\text{diff}$ | 惩罚手偏离默认姿态(防止怪异姿势) | $-0.1$ |
| $r_\text{ang}$ | 惩罚过大的角速度(保持可控) | $-0.3$ |
| $r_\text{torq}$ | 惩罚大力矩(保护电机) | $-0.1$ |
| $r_\text{work}$ | 惩罚控制器做功(节能) | $-1.0$ |
1.4 初始状态设计
6 种手动设计的标准抓取姿态(灵感来自人类转笔技巧),加噪声生成多样初始状态。
为什么不随机初始化:
- 随机姿态 99.9% 没有意义(笔在手里的姿态空间极小)
- 从有意义的抓取姿态出发 → RL 才能探索到手指换位的动作
1.5 训练配置
| 参数 | 值 |
|---|---|
| 算法 | PPO |
| 并行环境 | 8192 |
| 总步数 | 5 亿步 |
| 仿真器 | Isaac Gym |
| 控制频率 | 20 Hz |
| 仿真频率 | 200 Hz |
| 域随机化 | 感知噪声 + 物理参数 + 物体属性 |
Stage 2:本体感受策略预训练
2.1 为什么不直接蒸馏
| 方法 | 结果 |
|---|---|
| DAgger 蒸馏 | 失败(本体感受信息不足以替代特权信息) |
| 视觉蒸馏 | 失败(笔的高频振荡 → 图像极度模糊 → sim-to-real gap 巨大) |
| 行为克隆预训练 | 成功(提供运动先验,后续微调桥接 gap) |
2.2 数据收集
从 Oracle 策略的 rollout 中收集 $(s_t, a_t)$ 对。
2.3 输入
仅使用本体感受信息(真实机器人可获取的信息):
- 30 步历史的关节位置 $q_{t-29:t}$
- 30 步历史的关节目标 $a_{t-30:t-1}$
不使用视觉、触觉、笔的位姿(这些在真实世界难以获取或精度不足)。
2.4 架构
- Temporal Transformer:处理 30 步的时间序列特征
- MLP 策略网络:输出动作
2.5 目标
行为克隆(Behavioral Cloning):让策略接触到多样的运动原语(如手指换位、平衡调整),为后续微调提供良好初始化。
Stage 3:真实世界微调
3.1 开环轨迹回放收集真实数据
核心洞察:Oracle 在仿真中生成的动作序列可以直接在真实机器人上开环回放!
为什么可行:
- $r_z$ 奖励确保笔保持水平 → 轨迹相对稳定
- 开环回放虽然不完美,但能收集到”接近成功”的轨迹
过程:
- 在仿真中用 15 种初始姿态运行 Oracle
- 筛选持续 > 800 步的轨迹(质量好的)
- 在真实机器人上回放这些轨迹
- 保留旋转超过 $2\pi$(一整圈)的轨迹
- 3 个训练物体 × 15 条轨迹/物体 = 45 条总计
3.2 微调
用收集到的约 50 条真实轨迹对预训练的本体感受策略进行行为克隆微调。
| 参数 | 值 |
|---|---|
| 总轨迹 | ~50 条(3 个物体 × ~15 条) |
| Epochs | 2000 |
| 学习率 | $10^{-3}$ |
实验结果
真实世界部署
| 方法 | 训练物体 (RR) | 训练物体 (成功率) | 未见物体 (RR) | 未见物体 (成功率) |
|---|---|---|---|---|
| 开环回放 | 2.80-3.37 | 30-55% | 2.47-3.53 | 30-67% |
| 视觉蒸馏 | ~1.57 | 0% | 失败 | 失败 |
| 本文方法 | 3.38-3.43 | 54-70% | 2.71-4.63 | 46-80% |
RR = 旋转弧度(越大越好),成功 = 旋转 ≥ 180°。
关键发现:视觉蒸馏完全失败——本体感受才是笔旋转的正确感知模态。
预训练 + 微调的必要性
| 配置 | 物体 A (RR) | 未见物体 D (RR) |
|---|---|---|
| 仅预训练 | 1.89 | 1.74 |
| 仅微调(45 条) | 2.62 | 1.92 |
| 两者都有 | 3.43 | 4.10 |
两者缺一不可:
- 预训练提供运动先验 → 防止过拟合少量真实数据
- 微调桥接 sim-to-real gap → 适应真实物理
数据效率
| 真实轨迹数 | 无预训练 (物体 A) | 有预训练 |
|---|---|---|
| 15 条 | 1.80 RR, 14% | — |
| 45 条 | 2.62 RR, 54% | 3.43 RR, 55% |
| 75 条 | 2.93 RR, 77% | — |
预训练使得 45 条数据就能达到无预训练 75 条数据的性能。
消融:奖励设计
| 因素 | 发现 |
|---|---|
| 去掉 $r_z$ | 笔倾斜/竖直 → 不稳定,开环回放失败 |
| 单一初始姿态 | 无法学会手指换位 |
| 去掉触觉/点云 | Oracle 性能显著下降 |
$r_z$(保持水平)是整个系统的基石——没有它,Stage 3 的开环回放策略不可行。
个人思考
- 三阶段设计的逻辑链极其清晰:仿真探索技能(Stage 1)→ 提炼运动先验(Stage 2)→ 适应真实世界(Stage 3),每阶段解决一个明确问题。
- “仿真用于技能探索而非直接部署”是核心理念:不指望 sim-to-real 完美迁移,而是用仿真发现可行的运动模式。
- $r_z$ 奖励的连锁效应出人意料:一个简单的”保持水平”约束使得开环回放成为可能 → 从而解决了真实数据收集的难题。
- 视觉失败 + 本体感受成功挑战了常见假设:对于高动态接触任务,关节角度比图像更可靠。
- <50 条真实轨迹就能泛化到 7 种未见物体——说明仿真预训练的运动先验具有强泛化性。