← 返回列表

Dexterous Manipulation Based on Prior Dexterous Grasp Pose Knowledge

作者 Hengxu Yan, Haoshu Fang, Cewu Lu
年份 2024
会议/期刊 arXiv 2024
评分
标签 灵巧手 机器人操控 强化学习
摘要 两阶段灵巧操控:功能部位抓取姿态先验 + RL 精细操控,学习效率提升 80-150×,成功率比 DexArt 高 15-29pp,真实世界 74-79%

核心思想

灵巧手做操控任务(如打开笔记本电脑、拧水龙头)时,RL 从随机位置开始探索极其低效——大部分时间浪费在寻找”从哪里开始抓”。

本文的核心洞察:先用抓取先验知识确定好的初始抓取姿态,再用 RL 精细操控

两阶段方法:

  1. Phase 1:自动生成针对物体功能部位的灵巧抓取姿态
  2. Phase 2:从该姿态出发用 RL 学习操控

结果:学习效率提升 80-150 倍,成功率提升 15-29 个百分点

背景知识

为什么灵巧操控特别难

挑战 说明
高维动作空间 手臂 6 DoF + 灵巧手 16 DoF = 22 维
初始位置敏感 必须从正确角度接触物体的正确部位
功能部位 打开笔记本要抓盖子,不能抓底座
接触力学复杂 多指与物体的接触组合爆炸

为什么初始姿态如此重要

想象让一个人蒙眼打开水龙头——如果起始时手已经放在水龙头把手上,任务很简单;如果起始时手在桌子另一端,大部分时间都在”找水龙头”。

RL 也是一样:从随机位置出发,需要数百万步才能偶然发现一个好的接触方式。

方法详解

Phase 1:初始抓取姿态生成

1.1 功能部位分割

PointNet 分割网络从点云中提取物体的功能部位:

\[P_f = \text{Se}(P_1)\]

其中 $P_1$ 是从相机获取的部分视角点云。

训练数据:每类物体 6,000 个点云(功能部位/非功能部位/手臂/手),共 4 类 × 6,000 = 24,000 个样本。

1.2 双指抓取 → 灵巧手抓取映射

  1. AnyGrasp 在功能部位 $P_f$ 上生成 $n$ 个双指抓取姿态 $\hat{G} = [R, t, w]$(旋转、平移、抓取宽度)
  2. 将抓取宽度 $w$ 离散化为 $n$ 个等级
  3. 每个宽度对应 4 种灵巧手抓取类型(预定义的手指张开方式)
  4. 碰撞检测过滤无效姿态
  5. 选择离相机最近的有效姿态作为初始 $G = [R, t, B]$($B \in \mathbb{R}^{16}$ 为 Allegro Hand 的 16 个关节角)

Phase 2:强化学习精细操控

2.1 MDP 定义

$\langle S, A, O, R’, T, U \rangle$,使用 PPO 算法。

2.2 观察空间 $O$(3 种模态)

模态 内容 处理
点云 $P_2$ RL 相机捕获 PointNet 特征提取
本体感受 $S_r$ 关节角度和速度 直接输入
目标状态 物体目标位置/旋转 直接输入

PointNet 特征提取器用 Phase 1 的分割网络预训练初始化

2.3 动作空间 $A$(22 维)

维度 控制
6 维 末端执行器线速度 + 角速度 → IKFast 求关节角
16 维 Allegro Hand 关节角目标 → PD 控制

2.4 奖励函数(三部分分解)

\[R' = \alpha \cdot r_\text{in} + \beta \cdot r_\text{co} + \eta \cdot r_\text{re}\]

交互奖励 $r_\text{in}$(鼓励手接近并操控物体):

\[r_\text{in} = r_\text{finger} + r_\text{palm}\] \[r_\text{finger} = \sum_{X_i \in X} \min(-\|X_i - X_\text{object}\|, \lambda)\] \[r_\text{palm} = \min(\|Y_\text{palm} - Y_\text{object}\|, \gamma)\]
  • $r_\text{finger}$:手指接近物体功能部位中心
  • $r_\text{palm}$:手掌朝向与物体对齐

完成奖励 $r_\text{co}$(鼓励任务完成):

\[r_\text{co} = \text{Progress}(\text{task}) + \delta \cdot \text{IsCompletion} \cdot (H_s - H_c)\]
  • $\text{Progress}$:任务进度(如笔记本打开角度)
  • $\text{IsCompletion}$:是否完成(0/1)
  • $H_s - H_c$:鼓励更快完成(最大步数 - 当前步数)

约束奖励 $r_\text{re}$(惩罚不安全行为):

\[r_\text{re} = r_\text{robot} + r_\text{en}\] \[r_\text{robot} = -(\|G_{t+1,\text{palm}} - G_{t,\text{palm}}\| + q_\text{vel}})\] \[r_\text{en} = -\sum_{j_i \in J} \text{IsCollision}(j_i, \text{object})\]
  • $r_\text{robot}$:惩罚大幅运动和高速
  • $r_\text{en}$:惩罚手臂关节与物体碰撞

实验结果

仿真结果(SAPIEN 仿真器)

任务 本文方法 DexArt 提升
提桶 94.17% 79.17% +15.00pp
开笔记本 90.00% 66.67% +23.33pp
拧水龙头 73.33% 60.00% +13.33pp
开马桶盖 87.88% 58.57% +29.31pp

扩大测试空间(16× 大区域)

任务 本文方法 DexArt
提桶 85.21% 54.58%
开笔记本 76.30% 34.00%
拧水龙头 47.73% 17.56%
开马桶盖 42.38% 34.29%

测试空间扩大后,抓取先验的优势更加明显。

学习效率

任务 本文方法达到 75% 的步数 DexArt 在相同步数的成功率
提桶 0.4M 步 ~0%(需要 1.5M+ 步)
开笔记本 0.1M 步

学习效率提升 80-150 倍

消融:抓取先验的各组件

组件 提桶 @ 20M 步 开笔记本 @ 12M 步
仅位置 $t$ 87% 79%
位置 + 旋转 $R$ 89% 87%
完整抓取 $[R, t, B]$ 94% @ 5M 90% @ 6M

完整抓取先验(包括手指姿态 $B$)大幅减少训练步数

真实世界实验(UR5 + Allegro Hand)

任务 简单 困难 平均
提桶 84.62% 73.58% 79.08%
开笔记本 77.19% 71.15% 74.31%

成功从仿真迁移到真实世界。

个人思考

  1. “先站对位置再行动” 的思路极其自然——人类做精细操控也是先找好抓握位置,再进行后续动作。
  2. 80-150× 学习效率提升说明初始姿态是 RL 探索的最大瓶颈——解决了”从哪里开始”的问题后,”怎么操控”变得相对容易。
  3. 三部分奖励分解(交互 + 完成 + 约束)是清晰实用的设计:每部分解决一个明确问题,避免了单一奖励的歧义。
  4. 功能部位分割的必要性:打开笔记本要抓盖子不是底座——这种”在哪里抓”的语义理解是灵巧操控的前提。
  5. 真实世界 74-79% 的成功率说明方法具有实际可用性,但拧水龙头(73%)等需要更精细力控的任务仍有提升空间。
← 返回列表