ImplicitRDP: An End-to-End Visual-Force Diffusion Policy with Structural Slow-Fast Learning
核心思想
机器人的精细操控(如翻箱子、拨开关)需要同时使用视觉(看)和力觉(摸)。但这两种信号有根本差异:
| 特性 | 视觉 | 力觉 |
|---|---|---|
| 信息丰富度 | 高(空间) | 低(标量/向量) |
| 频率 | 慢(10 Hz) | 快(≥100 Hz) |
| 延迟 | 大 | 小 |
| 作用 | 全局规划 | 局部反应 |
现有方法要么分层处理(信息瓶颈),要么简单拼接(频率不匹配)。ImplicitRDP 提出:
- 结构化慢-快学习(SSL):用因果注意力让动作 token 只看”过去和当前”的力信号 → 实现 action chunk 内的闭环力调整
- 虚拟目标表征正则化(VRR):将力反馈映射为”虚拟运动目标” → 防止扩散模型忽略力信号
背景知识
什么是扩散策略(Diffusion Policy)
扩散策略将机器人控制问题建模为去噪扩散过程:
训练时——给真实动作序列加噪声,训练网络去噪:
\[\mathbf{A}^k_t = \sqrt{\bar{\alpha}_k} \mathbf{A}^0_t + \sqrt{1 - \bar{\alpha}_k} \boldsymbol{\varepsilon}^k\] \[\mathcal{L}_\varepsilon = \mathbb{E}_{k, \boldsymbol{\varepsilon}^k, (\mathbf{O}_t, \mathbf{A}^0_t)} \left[\|\boldsymbol{\varepsilon}^k - \boldsymbol{\varepsilon}_\theta(\mathbf{O}_t, \mathbf{A}^k_t, k)\|^2\right]\]其中:
- $\mathbf{A}^0_t$:真实动作序列(action chunk,如未来 16 步动作)
- $\mathbf{A}^k_t$:第 $k$ 步加噪后的动作
- $\bar{\alpha}k = \prod{i=1}^k \alpha_i$:噪声调度累积量
- $\boldsymbol{\varepsilon}_\theta$:去噪网络
推理时——从纯噪声出发,逐步去噪得到动作序列。
Action Chunk 的问题
扩散策略通常一次性预测整个 action chunk(如 16 步动作),然后开环执行前几步,再重新规划。
但对力敏感任务,开环执行是致命的:
- 推箱子时力突然增大 → 需要立即减速
- 但 action chunk 已经预测好了 → 无法中途修改
核心矛盾:action chunk 追求平滑长程规划,力控追求即时反应。
什么是柔顺控制(Compliance Control)
物理世界中,人类用手触碰物体时会自然地调整力度——这就是柔顺控制。数学上用弹簧-质量-阻尼器模型:
\[f_\text{ext} = M\ddot{x} + D\dot{x} + K(x - x_\text{ref})\]- $M$:质量(惯性)
- $D$:阻尼
- $K$:刚度(弹簧常数)
- $x_\text{ref}$:参考位置
- $f_\text{ext}$:外部接触力
直觉:刚度 $K$ 大 → 硬(力大时几乎不让步);$K$ 小 → 软(力大时大幅让步)。
方法详解
1. 结构化慢-快学习(SSL)
1.1 核心思想
将观测分为慢模态(视觉、本体感受)和快模态(力信号):
| 模态 | 更新频率 | 角色 |
|---|---|---|
| 慢(视觉 + 关节角) | 每个 action chunk 一次 | 提供全局任务理解 |
| 快(力/力矩) | 每个控制步一次 | 提供即时接触反馈 |
1.2 因果注意力掩码
力信号通过 GRU 编码(保持因果性),然后用因果注意力掩码确保:
时间步 $s$ 的动作 token 只能关注时间步 $\leq s$ 的力 token
这意味着 action chunk 中的每个动作都能根据当时的力反馈调整,而非全部基于同一时刻的力信息。
1.3 一致性推理机制(Algorithm 1)
输入:慢观测 O_slow, 力序列缓冲
1. 编码 O_slow → 缓存(整个 chunk 不变)
2. 初始化噪声 ε → 缓存
for 每个控制步 s = 1, 2, ..., chunk_size:
3. 获取最新力信号 f_s
4. GRU 编码力序列 → 快特征
5. 用缓存的慢特征 + 最新快特征 → DDIM 去噪
6. 提取第 s 步动作 a_s → 执行
关键:使用 DDIM($\eta = 0$,确定性采样),确保从同一噪声出发 + 同一慢特征 → 动作序列的一致性。唯一变化的是力输入 → 只有力相关的调整。
2. 虚拟目标表征正则化(VRR)
2.1 问题:模态坍塌
直接将力信号拼接到观测中,扩散模型往往忽略力信号——因为视觉信息更丰富、更容易学习。
2.2 虚拟目标公式
利用柔顺控制理论,将力反馈转化为”如果有外力,末端应该去哪里”的虚拟位置目标。
对准静态操控(忽略惯性和阻尼项),弹簧模型简化为:
\[x_\text{vt} = x_\text{real} + K^{-1} f_\text{ext}\]直觉:
- 如果外力为零 → 虚拟目标 = 真实位置(不需要调整)
- 如果外力指向右方 → 虚拟目标在真实位置右方(应该向右让步)
2.3 自适应刚度
刚度不是固定的,而是根据力的大小动态调整:
\[k_\text{adp} = \begin{cases} k_\text{max}, & \|f_\text{ext}\| < f_\text{min} \quad \text{(力小 → 硬,精确定位)} \\ k_\text{max} - \frac{k_\text{max} - k_\text{min}}{f_\text{max} - f_\text{min}}(\|f_\text{ext}\| - f_\text{min}), & \text{中间范围} \\ k_\text{min}, & \|f_\text{ext}\| > f_\text{max} \quad \text{(力大 → 软,安全避让)} \end{cases}\]直觉:力小时保持精准(硬弹簧),力大时柔顺让步(软弹簧)——模拟人的自然行为。
2.4 刚度方向分解
刚度在力的方向和正交方向上不同:
- 力方向:使用 $k_\text{adp}$(自适应)
- 正交方向:使用 $k_\text{max}$(保持硬)
这样只在力的方向上柔顺,其他方向保持精确。
2.5 统一训练目标
将虚拟目标和刚度作为辅助预测目标拼接到动作向量:
\[a_\text{aug,t} = \text{concat}([a_t, x_\text{vt}, k_\text{adp}])\]扩散模型同时预测动作、虚拟目标和刚度 → 力信号通过虚拟目标获得了与动作空间同构的表征 → 不再被忽略。
3. 学习稳定性增强
3.1 速度预测参数化
替代 $\varepsilon$-预测,使用速度(velocity)预测:
\[\mathbf{v}^k_t \triangleq \sqrt{\bar{\alpha}_k} \boldsymbol{\varepsilon} - \sqrt{1 - \bar{\alpha}_k} \mathbf{A}^0_t\] \[\mathcal{L}_\mathbf{v} = \mathbb{E}\left[\|\mathbf{v}^k_t - \mathbf{v}_\theta(\mathbf{O}_t, \mathbf{A}^k_t, k)\|^2\right]\]为什么更稳定:$\varepsilon$-预测在低噪声时梯度爆炸(因为 $\sqrt{1-\bar{\alpha}_k} \to 0$),速度预测在所有噪声水平都有平衡的梯度。
3.2 欧拉角旋转表示
使用欧拉角而非 6D 旋转或四元数 → 减少旋转回归中的耦合问题。
实验结果
硬件配置
- 机器人:Flexiv Rizon 4s(带关节力矩传感器 + 6 轴力/力矩传感器)
- 相机:腕部 webcam(10 Hz)
- 自制柔性指尖
任务描述
| 任务 | 描述 | 难点 | 演示数 |
|---|---|---|---|
| 翻箱子 | 推薄箱子翻转,力 <14N | 力约束 + 精确推力方向 | 40 |
| 拨开关 | 拨动断路器开关 | 需要特定力阈值才能触发 | 40 |
主要结果
| 方法 | 翻箱子 | 拨开关 |
|---|---|---|
| Diffusion Policy(无力) | 0/20 | 8/20 |
| Reactive DP(分层力控) | 16/20 | 10/20 |
| ImplicitRDP(完整) | 18/20 | 18/20 |
无力觉的 Diffusion Policy 在翻箱子上完全失败(0/20)→ 力觉是必需的。
SSL 和 VRR 的消融
| 配置 | 翻箱子 | 拨开关 |
|---|---|---|
| 无 SSL 无 VRR | 6/20 | 5/20 |
| 有 VRR 无 SSL | 4/20 | 15/20 |
| 完整 ImplicitRDP | 18/20 | 18/20 |
两者缺一不可——VRR 防止模态坍塌,SSL 实现闭环调整。
辅助任务对比
| 辅助任务 | 翻箱子 | 拨开关 |
|---|---|---|
| 无辅助任务 | 6/20 | 6/20 |
| 力预测(直接预测力) | 8/20 | 10/20 |
| 虚拟目标预测 | 18/20 | 18/20 |
直接预测力效果一般,虚拟目标远优于力预测 → 因为虚拟目标与动作空间同构,力信号本身太”异质”。
学习稳定性消融
| 参数化 | 翻箱子 | 拨开关 |
|---|---|---|
| $\varepsilon$-预测 | 9/20 | 18/20 |
| 样本预测 | 7/20 | 14/20 |
| 6D 旋转 | 16/20 | 12/20 |
| 速度预测 + 欧拉角 | 18/20 | 18/20 |
个人思考
- 慢-快分离精准地抓住了视觉和力觉的本质差异:视觉提供”做什么”(全局规划),力觉提供”怎么调”(局部修正)——用因果注意力实现这种分工非常自然。
- 虚拟目标的巧妙之处:不是让网络直接理解”力→应该怎么动”这个复杂映射,而是用物理模型先转化为”虚拟位置”→ 网络只需要学”位置→动作”这个简单映射。
- DDIM 确定性采样的关键角色:只有确定性采样才能保证”同一噪声 + 同一慢特征 → 一致的 action chunk”,然后力信号的微小变化才会带来合理的微调。
- 0/20 → 18/20 的跨越说明力觉对接触密集任务不是”锦上添花”而是必需品——纯视觉策略在这类任务上完全无能为力。
- 自适应刚度的工程价值:力小时硬(精确)、力大时软(安全)——这种设计可直接迁移到工业场景。