P-OpenAIHand-2018:Learning Dexterous In-Hand Manipulation(OpenAI Dactyl)与 ADR 的诞生
作者 / 机构:OpenAI;Marcin Andrychowicz, Bowen Baker, Maciek Chociej, Rafał Józefowicz, Bob McGrew, Jakub Pachocki, Arthur Petron, Matthias Plappert, Glenn Powell, Alex Ray, Jonas Schneider, Szymon Sidor, Josh Tobin, Peter Welinder, Lilian Weng, Wojciech Zaremba / OpenAI
发表:IJRR 2020, 39(1): 3–20(arXiv v1 2018-08, v5 2019-01)
arxiv:1808.00177 · 代码:无官方完整开源(仅 gym / Gymnasium-Robotics 中的 Shadow Hand 环境公开,非 Dactyl 训练栈)· 视频:https://youtu.be/jwSbzNHGflM
在线索中的位置:属于 T11(灵巧操作)转折 1,是「大规模 DR + RL 让高自由度灵巧手 sim-to-real」的开山之作。
一句话定位:第一次用纯仿真训练(PPO + 大规模 domain randomization)让 24-DoF Shadow Hand 学会方块/八棱柱 in-hand 重定向并零样本迁移真机;后续 Rubik's 论文把固定 DR 升级为 ADR(Automatic Domain Randomization),奠定「灵巧 RL sim-to-real」整套范式。
动机
2018 年前,灵巧手操作研究分成两支互不相通的路线:(1) 仿真派做出 promising 的 in-hand 结果,但从不部署到真机,因为接触动力学太复杂、sim-real gap 巨大;(2) 真机派直接在物理机器人上训练,但深度 RL 需要百万级样本,真机采样既慢又贵,学到的行为极有限。Shadow Dexterous Hand 自 2005 年商品化以来从未被大规模采用,根本原因是「24 DoF + 接触」这种高维、不光滑、毫秒级变化的系统,传统 motion planning 因接触模式组合爆炸而无解。
OpenAI 团队的核心赌注是:只要仿真器随机化得足够狠、训练规模足够大,纯仿真学到的策略就能零样本迁移真机——这本质上是把 sim-to-real 问题转化为「让仿真分布覆盖真机」的分布覆盖问题。这条赌注赢了,由此打开了灵巧手 RL 的整条线。
方法核心:大规模 Domain Randomization + LSTM 策略 + 分布式 PPO
1. 任务与硬件
任务定义为 in-hand object reorientation:把物体(block 或 octagonal prism)放在 Shadow Hand 掌心,让其重定向到目标朝向,达成后立即给新目标,直到物体掉落。Shadow Dexterous Hand 是 24 DoF、由 20 对 agonist–antagonist 腱驱动的拟人手;论文不使用其内置触觉传感(指尖液囊气压传感受大气压/温度/接触几何多重混淆,仿真里无法建模),只用关节编码器做 1 kHz 的低层相对位置控制,策略以 ~12 Hz 给出相对关节增量。物体位姿有两种获取方式:(a) PhaseSpace mocap(开发/评估用),(b) 三台 Basler RGB 相机 + CNN 估计(最终目标)。
2. 关键:物理 + 视觉的「全方位」domain randomization
仿真用 MuJoCo(物理)+ Unity(渲染),论文明确承认仿真只是「coarse approximation」:直接对关节施加力矩而非建模腱驱动、用刚体接触近似真实柔体接触。为弥合 reality gap,他们对几乎所有方面做随机化(论文 Table 1):
- 物理参数(每 episode 开头采样一次并固定):物体尺寸 $\sim U(0.95,1.05)$、物体/连杆质量 $\sim U(0.5,1.5)$、表面摩擦系数 $\sim U(0.7,1.3)$、关节阻尼 $\sim \text{log}U(0.3,3.0)$、执行器 P 增益 $\sim \text{log}U(0.75,1.5)$、关节限位加性扰动 $\sim \mathcal{N}(0,0.15)\,\text{rad}$、重力各分量 $\sim \mathcal{N}(0,0.4)\,\text{m/s}^2$。
- 未建模效应:电机 backlash 模型、动作延迟、动作噪声、mocap 标记「短暂失锁」概率事件、标记间互相遮挡、对物体施加小随机扰动力。
- 观测噪声:每 episode 采样一次的相关噪声 + 每步采样的不相关噪声。
- 视觉外观:相机内外参、光照、手与物体姿态、所有物体材质/纹理全随机化。
随机化的分布中心点来自对真机的标定,使分布尽量覆盖真机。
3. 策略与训练
策略用 LSTM + 一个 ReLU 隐藏层,因为许多随机化在 episode 内固定,记忆型策略可在线隐式辨识当前环境(系统辨识)。优化用 PPO,并采用 Asymmetric Actor-Critic:value 网络在训练时可看到真机/部署阶段拿不到的特权信息(无噪声观测、关节角与角速度、物体速度/角速度),从而简化 value 学习。动作空间被离散化为每维 11 bin(论文发现离散动作显著优于连续高斯,可能因为离散分布更具表达力、且让 advantage 学习更简单)。奖励 $r_t = d_t - d_{t+1}$(朝向误差角的减小量),达成目标 +5,掉落 -20。
分布式训练用 OpenAI Five 同款 Rapid 系统:384 台 worker(每台 16 CPU 核)跑 rollout,1 台 8 GPU 优化器,Redis 做经验缓冲,MPI 跨 GPU 平均梯度。论文测到的吞吐是 每小时约 2 年仿真经验,规模测试覆盖 1 GPU/768 CPU 到 32 GPU/24576 CPU,到 16 GPU/12288 CPU 接近线性加速。
ADR(Automatic Domain Randomization):从固定 DR 到自适应课程
固定 DR(1808.00177 这篇)有一个工程顽疾:随机化范围靠手调,每加一个参数就要反复「仿真调参 → 真机验证」,迭代代价巨大。2019 年的后续工作 Solving Rubik's Cube with a Robot Hand [Akkaya 2019, arxiv:1910.07113] 把固定 DR 升级为 ADR,把这件事自动化了。ADR 的精确机制如下:
环境 $e_\lambda$ 由参数向量 $\lambda \in \mathbb{R}^d$ 描述。固定 DR 从一个固定分布 $P_\phi$(参数 $\phi$ 固定)采样;ADR 则让 $\phi$ 随训练进度动态变化。ADR 用一个因式分解分布,把每个参数 $\lambda_i$ 的采样区间记为一对边界 $(\phi_i^L, \phi_i^H)$,采样 $\lambda_i \sim U(\phi_i^L, \phi_i^H)$:
$$P_\phi(\lambda) = \prod_{i=1}^{d} U(\phi_i^L, \phi_i^H)$$
为量化「分布有多宽」,定义 ADR 熵(nats/dimension,论文里的归一化使不同参数化可比较):
$$H(P_\phi) = \frac{1}{d}\sum_{i=1}^{d} \log(\phi_i^H - \phi_i^L)$$
ADR 的核心算法是 boundary sampling + 阈值扩张:每次迭代随机选一个维度 $i$,把 $\lambda_i$ 钉在某个边界($\phi_i^L$ 或 $\phi_i^H$),其余维度按 $P_\phi$ 采样,跑模型评估;把性能塞进该边界的 buffer,攒够后取均值与上/下阈值 $t_H, t_L$ 比较:
- 平均性能 高于 $t_H$ → 该边界向外扩(增加随机化难度);
- 平均性能 低于 $t_L$ → 该边界向内收(防止策略崩盘)。
整体流程(论文 Figure 10)是闭环:Update Distribution → Sample Environment → Evaluate Performance → 回到 Update。训练数据生成与边界评估按概率 $p_b$ 混合:以 $p_b$ 跑 boundary sampling(评估用),以 $1-p_b$ 从当前 $P_\phi$ 全分布采样生成训练数据。初始分布集中在标定值单点,随训练逐步扩张——这是一种自动课程,且理论上随机化范围可「无界」增长(只要模型还能扛得住)。论文进一步发现:在 ADR 分布上训练的 LSTM 在测试时表现出 emergent meta-learning——它内部实现了一个在线学习算法来适应测试环境,这解释了为何 ADR 策略对手指被绑、被戳、被加塑料乌龟等扰动极度鲁棒。
为什么大规模 DR 在灵巧手上 work
这篇(及其 Rubik's 续作)是 DR 范式在「高自由度 + 密集接触」上的第一份决定性证据,论文给出了几个关键支撑:
- 消融(Table 4):固定随机化的全部组合在真机上的连续成功次数中位数——全随机化 13,无随机化 0,无物理随机化 2,无未建模效应 2。没有 DR,几乎完全无法迁移。
- 训练成本对比:无随机化要 ~3 年仿真经验(~1.5 小时墙钟),全随机化要 ~100 年仿真经验(~50 小时墙钟)。DR 用 ~33× 的样本量换来真机可用——这是 sim-to-real 的「税」。
- 记忆的关键性(Table 5):LSTM 策略真机中位 13,前馈策略仅 3-3.5。且 LSTM 的隐状态在 5 秒交互后能以 80% 准确率预测物体是否比平均大——直接证据是策略在用记忆做隐式系统辨识。
- 规模近乎线性收益:到 16 GPU/12288 CPU 仍有近线性加速,说明问题还没饱和、加算力还能换性能——这正是后来整条「狂堆 DR + 算力」路线的方法论依据。
灵巧手之所以特别适合 DR,是因为接触不确定性的来源极多(摩擦、形变、滚动、关节阻尼…),单一「标定到真机」的仿真必然失配;DR 把「逼近真机」替换成「覆盖真机所在的分布」,再让记忆型策略在线识别当前实例。
为什么重要
这是灵巧手 sim-to-real 的开山之作。在它之前,「5 指手 RL 操作物体到真机」被认为近乎不可行;它把这件事从科幻变成 demo 视频,并确立了三件套范式:(1) 大规模物理 + 视觉 DR,(2) LSTM / 记忆型策略做隐式系统辨识,(3) PPO + Asymmetric Actor-Critic + 分布式大规模训练。Rubik's 续作把固定 DR 升级为 ADR,是这条范式的「工业化顶点」。它直接催生了后续 in-hand 重定向线(General Re-Orientation、Visual Dexterity、RotateIt,见 T11 转折 4)。
局限与被超越
- 成本与成功率:真机方块中位仅 13 次连续旋转(仿真 50),Rubik's 真机成功率 ~20%(仿真 60%+)。6400+ CPU 跑数月,单只 Shadow Hand ~10 万美元且极易坏(论文坦承 robot breakage 是主要挑战之一),不可复现。
- DR 的代价:~33× 样本税;且固定 DR 需大量手调(被 ADR 部分解决)。
- 未做跨物体泛化:方块、八棱柱、球各训一个策略;球甚至没训出来(没随机化滚动相关参数)。跨物体/跨形状泛化要等 Visual Dexterity [Chen 2023]。
- 触觉缺席:刻意不使用 Shadow Hand 内置触觉,导致后续 RotateIt 等工作把触觉补回。
- OpenAI 解散 robotics team(2020-2021):这条工业线沉寂数年,直到 2022 年学术界接续。
复现要点
Dactyl 完整代码未官方开源。复现路径建议:(1) 先在 IsaacGym/Lab 或 MuJoCo 上用 Shadow Hand URDF 跑 PPO + DR(unitree/legged_gym 同款 RSL-RL 框架即可),先打通「方块 reorientation」;(2) DR 范围从论文 Table 1 起步;(3) 关键是 LSTM + Asymmetric Actor-Critic,前馈策略在 DR 下根本学不动;(4) 真机门槛高,可先用 Allegro/Inspire Hand 在仿真里验证 retargeting + DR 思路。ADR 可参考论文 Algorithm 1/2,核心是「boundary sampling + 性能阈值驱动的边界扩张」,工程上类似 population-based training 的「单维度扰动 + 自适应」。
相关
- 建立在:Tobin et al. 2017(domain randomization for sim-to-real)、OpenAI Five(同款 Rapid 分布式 PPO)、Mordatch et al.(仿真内灵巧操作)。
- 引出:Solving Rubik's Cube with a Robot Hand [Akkaya 2019, arxiv:1910.07113](ADR + 单手解魔方,本笔记的续作);Visual Dexterity [Chen 2023](跨物体泛化,见 P-VisualDexterity-2023.md);General In-Hand Re-Orientation [Chen 2022];RotateIt [Qi 2023](补触觉)。
- 本仓库笔记交叉引用:T11-dexterous-manipulation.md(转折 1)、T01-sim2real-locomotion.md(DR/ADR 是 T01 与 T11 的共同核心方法)、C-sim2real-methods.md。