具身智能自学教程 · 第 6 章

视觉与抓取 II:ICP 配准与抓取稳定性

本章学习两条几何路线:用 ICP 精修已有位姿估计,用 NOCS 估计类别内新物体的位姿与尺寸。随后把位姿接到接触力学上,分析抓取怎样抵抗外部扰动。

改编自北京大学《具身智能导论》(Introduction to Embodied AI) 2025 春季课程 · 授课:王鹤 老师

公式、图片与课件中文翻译可离线阅读
英文原课件与逐页中文翻译 →本章相关技术进展 →英文缩写与符号速查 →

🎯 本章学习目标

📖 关于本教程

内容来源

本教程的课程知识主线来自 北京大学 2025 年春季学期《具身智能导论》(Introduction to Embodied AI)课程,由 王鹤 老师主讲。

📝 课堂笔记 × 9 章 🎞 授课课件 × 13 讲 💻 课程作业 × 4 次

以上资料由课程同学整理并开源在 GitHub 仓库 zhuozhiyongde/Embodied-Artificial-Intelligence-2025Spring-PKU(GPL-3.0 许可证),课程官网为 pku-epic.github.io/Intro2EAI_2025。

阅读方式

教程目的

让没有北大课堂环境的自学者,也能按课程原有的知识体系,系统地学完具身智能入门:从机器人学基础,到视觉与抓取,再到策略学习——最终具备读懂前沿论文、跑通基础实验的能力。

📜 版权与使用声明
原课程资料(笔记、课件、作业)均为开源免费资源,版权归原作者(王鹤老师及课程组、笔记整理者)所有;本教程的改编内容(扩写讲解、中文翻译、编排结构)同样免费公开。
本教程仅用于个人自学,请勿用于任何商业用途(包括付费课程、付费资料包、机构培训等)。教程中所有引用均已标注来源;如内容使用有任何不当之处,请联系相关权利人,我们会及时处理。

开始前:对应关系、尺度与接触模型

本章沿用第5章的刚体拟合。先确认源点、目标点和变换方向,再读ICP;对NOCS先问“规范坐标有没有米这样的长度单位”,对抓取先问“接触是否有摩擦、能否传递力矩”。

贯穿全章的例子:相机看到一个新杯子,网络为像素预测规范坐标,深度提供米制坐标,几何拟合求尺度和位姿;候选抓取还要通过运动规划与接触力学检查。检验这个流程时,依次记录感知误差、规划可行性和抓取结果,观察误差怎样影响后续步骤。

阅读全部66页原课件与中文翻译 · 原始PDF

本章目录关于本教程(来源 · 声明)1. ICP:给位姿「精修」2. ICP 算法详解3. 类别级位姿估计:NOCS4. 合成数据:打破标注瓶颈5. 机器人技术的五代演进6. 抓取稳定性:Force 与 Form Closure7. 本章小结8. 动手实践附录 A:术语表附录 B:课件 66 页完整索引附录 C:参考资源

1ICP:给位姿「精修」

第 5 章的位姿估计仍可能存在误差,抓取对这些误差的敏感性取决于物体尺寸、接触位置和夹爪策略。可以先理解为:对细长物体或较窄的可抓取区域,较小的平移误差也可能使抓取偏离目标。

场景位姿误差的影响
可抓取区域较窄、平移偏离目标可能错过接触区域;阈值取决于具体实验
细长物体(粉笔、剪刀)需结合物体与夹爪尺寸判断允许误差
旋转误差(如绕 z 轴 30°)是否宽容取决于形状、对称性与抓取方向

敏感性的三个来源:① 机械臂运动误差——特定方向的平移误差可能推翻物体;② 夹爪闭合策略——开合宽度必须与物体尺寸精确匹配;③ 旋转容错性取决于物体与抓取方向。

笔记配图:PoseCNN 加不加 ICP 的结果对比
ICP 的价值:左图对比精修前后的平移误差准确率曲线,右图显示旋转误差分布。(来源:笔记 06)
中文翻译

全部21个物体

纵轴:准确率,刻度0、0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9、1。

横轴:平移阈值(米),刻度0、0.02、0.04、0.06、0.08、0.1。

90%;32%;2厘米。

绿色:PoseCNN;红色:PoseCNN+ICP。

三维平移误差分析

PoseCNN

纵轴:数量,刻度0、1000、2000、3000、4000、5000、6000、7000、8000。

横轴:旋转角误差,刻度0、50、100、150。

三维旋转误差分析

图中英文与中文释义

All 21 objects=全部21个物体;accuracy=准确率;Translation threshold in meter=平移误差阈值(米);左图比较PoseCNN与PoseCNN+ICP;3D Translation Error Analysis=三维平移误差分析;右图count=计数,Rotation angle error=旋转角误差。2cm处的32%和90%属于该实验设置。

结论:初始估计 + 精修(refinement)是位姿估计的一种常见设计,ICP 就是最经典的「精修」工具。

2ICP 算法详解

迭代最近点(Iterative Closest Point, ICP):输入两个点云,通过交替匹配与刚体拟合,估计使源点云对齐目标点云的 $(R,t)$;通常只能保证局部结果(课件 p10):

$$ E(R,t)=\sum_i\min_j\|q_j-(Rp_i+t)\|^2 $$

这里 $p_i$ 为源点、$q_j$ 为目标点,$R,t$把源变到目标,单向目标中每个源点只与一个当前最近目标点配对;点数可不同。对于固定对应,才可写成矩阵平方误差。

ICP 在第 5 章的 Procrustes 拟合外加入最近邻匹配,并交替执行这两个步骤。标准点到点实现可以写成以下四步循环:

步骤 1:在当前位姿下查找对应

把源点云用当前估计变换到目标坐标系,对每个源点 $p_i$ 查找最近目标点 $q_{j_i}$。初值来自已有估计;教学例子的初值可取单位变换。匹配时使用当前变换后的坐标;获得对应点后,再计算配对点集的质心。这样可保留部分重叠点云在当前坐标系中的位置关系。

步骤 2:中心化已经配对的两组点

令 $Q_{corr}$ 的第 $i$ 列为对应目标点 $q_{j_i}$。计算 $\tilde P=P-\bar P$ 与 $\tilde Q_{corr}=Q_{corr}-\bar Q_{corr}$,均值来自当前匹配点对。最近邻查询的暴力复杂度是 $O(|P|\,|Q|)$,KD-tree(KD树)可加速。这里用的是单向最近邻目标;Chamfer距离另有双向定义。

步骤 3:Procrustes 求位姿

第 5 章的内容直接复用:协方差矩阵 $K = \tilde Q_{corr}\tilde P^\top$ → SVD → $\hat{R} = U\,\mathrm{diag}(1,1,\det(UV^\top))\,V^\top$ → $\hat t = \bar Q_{corr} - \hat R\bar P$。

课程课件:ICP 中的 Procrustes 求解步骤
ICP 的位姿求解:正是第 5 章的带约束正交 Procrustes。(来源:Lecture 6 课件 p13)
迭代最近点(ICP)
  • 问题变为 \(\hat R=\operatorname*{argmin}_{R\in\mathrm{SO}(3)}\|\tilde P_{\mathrm{corr}}-R\tilde P\|_F^2\)。
  • 利用带约束的正交 Procrustes 求得 \(\hat R\)。
  • 再由残差得到 T。
  • 更新 P。

\[U,D,V^{\mathsf T}=\operatorname{SVD}(\tilde P_{\mathrm{corr}}\tilde P^{\mathsf T})\]

\[\hat R=U\operatorname{diag}(1,1,\det(UV^{\mathsf T}))V^{\mathsf T}\]

\[\hat T=\bar Q-\hat R\bar P\]

\[P_{\mathrm{new}}=\hat RP+\hat T\]

对照原课件第13页与完整中文翻译 →
图中英文与中文释义

把已配对点的拟合转成带约束正交Procrustes问题

用SVD求R,并用残差求T

更新P_new=R P+T

页面给出R=U diag(1,1,det(UVᵀ)) Vᵀ。

读图提示:目标对应矩阵与源矩阵交叉乘积决定SVD方向。求平移时使用当前匹配目标点的均值;课件写全Q均值的示例只适合对应及均值假设成立的情况。

对照本页完整译解

步骤 4:更新与迭代

$P_{new} = \hat{R}P + \hat{t}\mathbf{1}^\top$,作为下一轮输入。终止条件三选一(课件 p15):相对旋转角与平移增量足够小 / 损失变化小于阈值 / 达到最大迭代次数;迭代停止后,用残差、重叠区域和位姿误差评价配准结果。

课程课件:ICP 精修后的 PoseCNN 结果可视化
ICP 精修后的 PoseCNN 结果:叠加的 CAD 模型与实际物体几乎重合。(来源:Lecture 6 课件 p18)
PoseCNN:结果可视化
@05:62
对照原课件第18页与完整中文翻译 →
图中英文与中文释义

RGB=彩色图像

Depth=深度

Groundtruth Labels=真实标签

PoseCNN (RGB only)=仅RGB输入的PoseCNN

PoseCNN+ICP=加ICP精修

Predicted Labels=预测标签

图源Yu Xiang。

读图提示:对照叠加模型和物体轮廓;先检验目标分割与深度,再判断精修是否真正改善。

对照本页完整译解

2.1 ICP 不保证全局正确配准

⚠️ 一个本质缺陷

对应点匹配可能产生非一一映射——好几个源点离同一个目标点最近。此时不存在完美变换(刚体变换不可能把两个不同源点精确合并成同一个目标点),ICP 可能卡在局部最优。标准点到点 ICP 在最近邻匹配与刚体子问题精确求解时使目标单调不增,但不保证全局最优或正确配准;初始位姿接近真实值时,可用它做局部精修。

2.2 优缺点与变体

优点缺点
核心算法简单,不强制使用特征;物体场景常仍需目标区域选择或离群点剔除最近邻计算贵(可下采样/小样本加速)
初始估计较好时精度与收敛性都不错迭代次数多、耗时(后来有加速算法)
—只考虑点对点距离,未利用点云结构
—高度依赖初始估计

变体(课件 p17):Point-to-Plane ICP 用源点到目标点局部平面的距离,考虑了局部结构;Plane-to-Plane ICP 同时考虑源点云的局部结构,可改善特定几何与噪声条件下的收敛表现,但仍需检查初值与法向估计。

3类别级位姿估计:NOCS

实例级方法(PoseCNN 等)要求知道每个物体的完整 CAD 模型——经典实例特定设定难以直接用于未见物体。类别级方法(王鹤老师 CVPR 2019 Oral,NOCS)换了个思路:为整个类别建立一个统一的参考系,通过三步归一化定义标准化物体空间(Normalized Object Coordinate Space):

  1. 旋转对齐(Rotation Alignment):用先验把物体朝向对齐(如茶杯手柄统一朝某轴正方向);
  2. 平移归一化(Translation Normalization):包围盒中心移到原点;
  3. 尺寸归一化(Scale Normalization):用同一个比例缩放各轴,使包围盒对角线长度为1并装入标准立方体,保留长宽高比例。
尺度和坐标约定

NOCS点 $p_N$ 没有米这样的度量单位,深度点 $p_C$ 通常有长度单位;拟合 $p_C=sRp_N+t$ 时,$s$恢复尺度,$R$恢复朝向,$t$恢复位置。原课件图示中心化的 $[-0.5,0.5]^3$空间,工程也可采用 $[0,1]^3$编码;若两者混用,会把原点偏移错误地计入平移。三条物体尺寸由规范点包围盒的轴向范围乘尺度得到。归一化时,各轴使用同一缩放比例,保留物体的长宽高比例。

拿茶杯举例:① 手柄方向统一 → 对齐 $R$;② 物体轴对齐包围盒中心放到 $(0,0,0)$ → 对齐 $t$;③ 归一化包围盒大小 → 对齐 size。

3.1 完整推理流程

课程课件:从图像到 NOCS map 到位姿的完整流程
NOCS 推理流程:RGB 逐像素预测 NOCS 坐标 → 深度反投影 → 配准拟合位姿。(来源:Lecture 6 课件 p31)
从图像到 NOCS 图再到位姿

RGB 图像 → 逐像素预测 → NOCS 图 → NOCS 到点的转换 → NOCS 点。

深度 → 反投影 → 深度点。

使用 RANSAC 拟合位姿。

对照原课件第31页与完整中文翻译 →
图中英文与中文释义

Per-pixel predict=逐像素预测

RGB Image=彩色图

NOCS map=规范坐标图

NOCS to point=将规范坐标图取成点集

Depth=深度

Backproject=反投影

Depth pts=深度点

Pose fitting w/ RANSAC=结合RANSAC拟合位姿。

读图提示:同一物体像素给出一对坐标:预测的规范三维坐标与由深度反投影得到的相机三维坐标。反投影的是像素深度,不是NOCS坐标。

对照本页完整译解

  1. 输入 RGBD,Mask R-CNN 检测分割物体(ROI);
  2. 对物体每个像素预测其 NOCS 坐标 $(x,y,z)$,得到 NOCS Map;
  3. 用每个像素的深度与相机内参反投影出相机坐标中的三维点,与该像素预测的NOCS三维坐标配成点对;
  4. 用 Umeyama 算法 + RANSAC 拟合 7 DoF 相似变换(缩放 $s$ + 旋转 $R$ + 平移 $t$):$sR\mathbf{p}_i + t = \mathbf{q}_i$。
笔记配图:NOCS 网络架构
NOCS 的网络架构:Mask R-CNN 检测 + 分支预测 NOCS 坐标。(来源:笔记 06)
中文翻译

RGB图像 → 感兴趣区域对齐(ROI Align)。

  • 类别标签。
  • 卷积(conv)→ 卷积 → 实例掩码。
  • 卷积 → NOCS图。

深度、实例掩码、NOCS图 → 位姿拟合。

  • 网络:基于Mask R-CNN的检测器。
  • 输出:9自由度的完整物体边界框(包含遮挡部分;amodal bounding boxes)。
图中英文与中文释义

Network: a Mask-RCNN-based detector=基于Mask R-CNN的检测器;Class Label=类别标签;ROI Align=区域对齐;Instance Mask=实例掩码;NOCS Map=规范坐标图;Depth=深度;Pose Fitting=位姿拟合;Outputs: 9 DoF amodal bounding boxes=输出9自由度完整包围盒,包括位姿和三条尺寸。

笔记配图:NOCS 网络架构细节
NOCS 架构细节:NOCS Map 与深度图反投影点云的配准。(来源:笔记 06)
中文翻译

RGB图像 —逐像素预测→ NOCS图 —NOCS转为点→ NOCS点。

深度 —反投影→ 深度点。

NOCS点、深度点 → 使用RANSAC进行位姿拟合。

图中英文与中文释义

Per-pixel predict=逐像素预测;RGB Image=彩色图像;NOCS map/pts=规范坐标图/点集;NOCS to point=从规范坐标图取出点集;Depth=深度;Backproject=反投影;Depth pts=深度点;Pose fitting w/ RANSAC=结合RANSAC拟合位姿。同一像素把两种坐标配成一对。

3.2 NOCS 与 ICP 的本质区别

ICPNOCS
先验需要待配准的两组点云;用于物体精修时常使用CAD采样云弱:类别级粗几何先验(NOCS 空间)
对应关系迭代最近邻匹配(不保证全局正确配准、需迭代)同一像素建立预测规范坐标与深度三维点的配对;预测本身仍可能有误
输出6 DoF $(R,t)$7 DoF $(s,R,t)$ + 尺寸
求解迭代 Procrustes给定内点对应后Umeyama闭式求解;RANSAC还需多次假设检验

3.3 为什么不直接回归 6D 位姿?

笔记给出三条理由:① 课件的特定消融实验中,NOCS优于该直接回归基线;② 直观上,回归是 3D→6D 的直接映射,而 NOCS 先建 2D→3D 对应、再把位姿变成几何优化问题,更符合直觉;③ NOCS 充分利用形状/几何先验——规范空间强制同类物体共享几何分布,网络学习类别级形状规律时有协同效应(Synergy),可以利用类别内共享规律,泛化能力需按测试实例验证。

课程课件:NOCS 与直接位姿回归的消融实验对比
消融实验:NOCS(拟合)vs 直接位姿回归,5°/10° 精度下 NOCS 全面占优。(来源:Lecture 6 课件 p46)
消融实验:NOCS 与位姿回归

5 度准确率

类别回归NOCS
相机234.2
笔记本电脑2.328.5
马克杯3.34.8
瓶子24.980.4
碗2559
罐子28.957.4

10 度准确率

类别回归NOCS
相机21.954.9
笔记本电脑3074.2
马克杯20.826.3
瓶子78.395
碗83.892.2
罐子81.795.9

越高越好。

对照原课件第46页与完整中文翻译 →
图中英文与中文释义

Ablation Study=消融实验

5 degree acc.=5度阈值下准确率,10 degree acc.=10度阈值下准确率

Regression=直接回归,NOCS=规范坐标拟合

The higher, the better=越高越好

横轴包含camera、laptop、mug、bottle、bowl、can。

读图提示:柱状图显示此设置下的比较。评估还需按原论文处理对称物体,不能把5度阈值推广为所有操作任务要求。

对照本页完整译解

4合成数据:打破标注瓶颈

NOCS 模型的训练需要「逐像素 NOCS 标注」——真实数据标注成本极高、类别泛化不足。解法回到第 1 章的预言:合成数据。但合成与真实之间的分布差异(Sim2Real Gap)会让模型在真实数据上性能暴跌。

王鹤老师的解法是 Mixed Reality Data(CAMERA 混合现实):背景是真实的,前景是合成的——合成前景自带精确 NOCS 监督信号,轻易获得几十万量级数据:

笔记配图:混合现实数据——真实背景加合成前景
混合现实数据:真实背景 + 合成前景,渲染流程可自动生成几何监督,仍需检查资产与渲染质量。(来源:笔记 06)
混合现实数据生成流程
真实桌面场景检测到的平面合成RGB图像真值NOCS图
ShapeNetCore
室内照明
合成物体真值深度真值掩码
图中英文与中文释义

Real Tabletop Scenes=真实桌面场景;Detected Planes=检测平面;Indoor Lighting=室内光照;Synthetic Objects=合成物体;Composited RGB=合成彩色图;Ground Truth NOCS Map、Depth、Mask=真实规范坐标图、深度、掩码;Mixed-reality data generation pipeline=混合现实数据生成流水线。图中真实背景加渲染物体,自动产生监督标注。

课程课件:混合现实数据示例
CAMERA 数据集示例:300K 图像、31 个 IKEA 场景、1085 个 ShapeNet 模型。(来源:Lecture 6 课件 p38)
混合现实数据
对照原课件第38页与完整中文翻译 →
图中英文与中文释义

Mixed Reality Data=混合现实数据

多幅图像展示真实桌面背景上的合成物体及不同布局。

读图提示:关注背景、物体位置、光照与遮挡变化;外观自然程度仍影响合成到真实的迁移。

对照本页完整译解

实践中发现简单混合仍有 Gap——合成前景与真实背景的分界太明显,分割网络学到的经验难迁移。解法:Co-Training——用真实分割数据集(COCO)+ 合成数据混合训练 Mask R-CNN(真实数据只监督分割,不参与 NOCS 映射训练)。

课程强调合成数据的重要性:真实数据获取昂贵,合成数据能提供可扩展的几何监督。理解这一思路时,也应比较真实、合成与混合数据在具体任务上的表现。

课程课件:FoundationPose 位姿估计基础模型
FoundationPose(Wen et al., CVPR 2024):位姿估计的基础模型——笔记记录王老师的评价「目前 Pose Estimation 领域最 work 的模型,纯合成数据训练,但合成过程更精细」。(来源:Lecture 6 课件 p56)
6D 位姿估计的基础模型

语言辅助的大规模合成数据生成(§3.1)

Objaverse;标签〈保温瓶〉;原模型;噪声纹理;形状;扩散模型;大型语言模型(LLM);重复;增强后的模型;物理引擎;路径追踪。

“这里有一个〈保温瓶〉。请描述它可能的外观,包括颜色和样式。”

“这个保温瓶是现代的哑光灰色,带有橙色和白色的几何图案。”

神经物体建模(§3.2,无模型设置)

参考图像 → 神经物体场:几何网络 \(f^g\)、外观网络 \(f^c\) → 神经 RGB-D 渲染。

位姿假设生成(§3.3)

全局位姿采样;粗位姿下的渲染;以位姿为条件的输入裁剪;编码器(共享权重);\(H\times W\times C\);卷积残差块;图像块;位置嵌入;Transformer 编码器;线性层;旋转更新;平移更新;精化位姿。

位姿选择(§3.4)

K 个假设;假设 0;以位姿为条件的渲染;以位姿为条件的输入裁剪;位姿排序编码器;编码器(共享权重);\(H\times W\times128\);卷积残差块;图像块;位置嵌入;多头自注意力;\(P\times512\);平均池化;\(F\in\mathbb R^{512}\);多头自注意力;\(K\times512\);线性层;排序;排名 0、排名 1、排名 \(K-1\)。

FoundationPose 是统一的 6D 物体位姿估计与跟踪基础模型,同时支持基于模型和无模型设置。

Bowen Wen 等,《FoundationPose:新物体的统一 6D 位姿估计与跟踪》,IEEE 计算机视觉与模式识别会议论文集,2024。

对照原课件第56页与完整中文翻译 →
图中英文与中文释义

FoundationPose是统一的六维物体位姿估计与跟踪基础模型,支持model-based(有模型)与model-free(无CAD模型)设定

图含Language-aided Synthetic Data Generation at Scale(语言辅助的大规模合成数据生成)、Neural Object Modeling(神经物体建模)、Pose Hypothesis Generation(位姿假设生成)、Pose Selection(位姿选择)

引用Wen等CVPR 2024。

读图提示:无CAD模型并非完全无先验,仍需相应参考观测来建立对象表示;不要混同于只输入任意一张图即可。

对照本页完整译解

笔记配图:FoundationPose 的语言辅助合成数据流程
FoundationPose 的合成数据流程:语言与扩散模型辅助生成多样化训练场景。(来源:笔记 06)
语言辅助的大规模合成数据生成(§3.1)

Objaverse

标签:<保温瓶>。

原始模型 → 形状。

带噪声的纹理。

“这里有一个保温瓶。请描述它可能的外观,包括颜色和风格。” → 大语言模型(LLM)→ 重复。

“这个保温瓶呈现代哑光灰色,带有橙色和白色的几何图案。”

形状、带噪声的纹理、外观描述 → 扩散模型 → 增强后的模型 → 物理引擎 → 路径追踪。

图中英文与中文释义

Language-aided Synthetic Data Generation at Scale=语言辅助的大规模合成数据生成;Objaverse=三维资产库;LLM=大语言模型;Diffusion model=扩散模型;Physics engine=物理引擎;Path tracing=路径追踪;Shape/Appearance=形状/外观。图展示FoundationPose的合成数据流水线,未展示位姿误差评估结果。

进一步理解:感知精修与合成数据

评价位姿方法时,可以沿着任务流程检查:ICP精修受遮挡、对称性与初值影响;合成数据的收益需在真实任务上验证。类别级与部件级方法使用不同层次的几何先验,选择时结合目标物体、接触区域和任务要求。

5机器人技术的五代演进

课程笔记将机器人操作技术概括为五个阶段,帮助比较各类系统如何组织感知与动作。这是一种教学分类(核心链条:$\text{pose} \to \text{grasp} \to \text{motion planning} \to \text{control}$):

代际技术特点
一代工业机器人经典示教/轨迹重放,可配合具体工程中的传感与反馈(第 1 章的「复读机」)
二代位姿预测物体预先定义,轨迹由预测位姿规划得出(第 5 章)
三代抓取预测直接预测抓取位姿(第 7 章)
四代动作规划预测端到端输出动作轨迹,可闭环纠错
五代完全闭环 + 语义推理视觉、语言与动作模型结合语义信息与执行反馈;闭环能力仍需具体系统实现

判断闭环时,可以检查一点:如果执行过程中根据新估计不断调整动作,整个任务层系统就形成反馈闭环。估计速度描述计算效率,闭环则要求观测参与后续动作修正。

6抓取稳定性:Force 与 Form Closure

位姿知道了,抓取位姿也有了,最后一个问题:这个抓取稳不稳?两个判据(课件 p63-64):

课程课件:抓取合成与力闭合的定义
抓取合成回顾与 Force Closure 定义。(来源:Lecture 6 课件 p63)
抓取
  • 抓取位姿:抓手的位置与朝向。
    • 4 自由度抓取:3 个位置自由度和 1 个朝向自由度。
    • 6 自由度抓取:3 个位置自由度和 3 个朝向自由度。
  • 力封闭:能够抵消作用于物体的任意外部力旋量。

从上向下抓取;6 自由度抓取;灵巧手;平行夹爪。

对照原课件第63页与完整中文翻译 →
图中英文与中文释义

Grasp Pose=手的位置与朝向

4-DoF抓取=三维位置加沿重力方向对齐后的一个旋转自由度

6-DoF=三维位置加三维朝向

Force Closure=接触允许施加的力足以补偿物体受到的任意external wrench(外部力螺旋)。

读图提示:wrench包含力与力矩,不能只译成外力。定义一般不限制力大小,实际电机和材料限制要另行检验。

对照本页完整译解

🔑 两种闭合条件

力闭合(Force Closure):在给定接触位置、法向与摩擦模型下,允许的接触力可合成用于抵抗任意方向外部力螺旋的力螺旋。力螺旋(wrench)同时包含力与力矩;理论定义通常不限制接触力大小。王老师原话:「以某一组力在某一组接触点抓起来后,物体需要任意方向的加速度都可以提供。」
形闭合(Form Closure):仅靠几何约束完全锁死刚体(不依赖摩擦力)。

物理定义更精确(课件 p64):力闭合 = 接触力螺旋锥(wrench cones)的正张成(positive span)是整个力螺旋空间;形闭合 = 一组刚性固定装置完全固定刚体。在一阶刚性接触模型下,无摩擦力闭合与一阶形闭合等价;有摩擦时可用较少接触抵抗扰动。力闭合是稳健抓取的常用设计条件。对于有限载荷任务,也可能存在稳定但未达到完整力闭合的抓取;评价时应结合实际外载、关节输出力、摩擦系数和物体承载能力。

课程课件:2D 简化的力闭合问题
2D 简化问题:三个无摩擦接触(左)vs 一个有摩擦+一个无摩擦(右)——判断力向量能否正张成整个力空间。(来源:Lecture 6 课件 p65)
力封闭
  • 一个简化的二维问题。

具有无摩擦接触的二维抓取

\(f_1\)、\(f_2\)、\(f_3\);\(f_x\)、\(f_y\)。

  • √ 3 个可能的力向量,其中 2 个线性无关。
  • × 在每个接触点均施加非零力时,可以产生合力为零的结果。
  • × 原点位于可能施加的力所构成的空间内部。

由一个有摩擦接触与一个无摩擦接触组成的二维抓取

\(f_1\)、\(f_{2,1}\)、\(f_{2,2}\);\(f_x\)、\(f_y\)。

  • √ 3 个可能的力向量,其中 2 个线性无关。
  • √ 在每个接触点均施加非零力时,可以产生合力为零的结果。
  • √ 原点位于可能施加的力所构成的空间内部。

观看:https://www.youtube.com/watch?v=6RWFFMtD5k8

对照原课件第65页与完整中文翻译 →
图中英文与中文释义

A simplified 2D problem=二维简化问题

上例为无摩擦接触:有3个力方向且两方向线性无关,但无法用各接触非零正力合成零力,原点不在可行力空间内部

下例为一个有摩擦、一个无摩擦接触:满足这些条件

原页给出Modern Robotics视频链接。

读图提示:图只把力向量画在二维平面。完整平面刚体还需转矩,w=(f_x,f_y,τ),应在三维力螺旋空间判断;光看二维力的凸包不足以证明完整力闭合。

对照本页完整译解

2D 简化版的理解:若干接触点的可行力向量(受摩擦锥约束)如果正张成整个平面(即原点在力向量的凸包内部),任意外力都能被平衡。这个二维例子只检查平移力;完整平面刚体的判据还需包含转矩。

力与力矩要一起检查

接触点 $r$ 处的力 $f$ 产生力矩 $r\times f$,空间力螺旋可写为 $w=(f,r\times f)$。完整平面刚体为 $w=(f_x,f_y,\tau_z)$,是3维;完整空间刚体是6维。摩擦锥限制力方向,映射到物体坐标后才得到接触力螺旋锥。判定完整力闭合时,既要检查各方向的平移力,也要检查绕轴转矩。参见Modern Robotics:力闭合。

回归 vs 生成:抓取建模的选择

一种简单的抓取学习设定是单输出回归:预测一个抓取位姿。但遮挡和对称性使一个物体通常有多个可行抓取(多峰分布)——在平方误差监督下,单输出回归可能趋向条件均值,落在两个峰之间。因此,把抓取建模为生成问题(预测一个分布,采样多个候选)更合适。这是第 7 章(GraspNet、条件生成模型)的主线。

7本章小结

核心概念一句话解释
ICP最近邻对应 + Procrustes 的迭代精修;标准点到点目标单调不增,但不保证全局正确配准
位姿精度 vs 抓取容错阈值依赖物体、接触区域和夹爪策略
NOCS类别级统一参考系(旋转对齐+平移/尺寸归一化),同像素构成规范坐标与深度坐标点对;给定内点对应后Umeyama闭式求解;RANSAC还需多次假设检验
Sim2Real Gap合成与真实分布差异;混合现实 + Co-Training 是经典解法
五代技术重放 → 位姿 → 抓取 → 端到端动作 → LLM 语义闭环
Force / Form Closure摩擦力平衡任意外力 / 纯几何锁死;给定模型下抵抗任意方向外部力螺旋的设计条件,仍需检验有限力与任务载荷
回归 vs 生成抓取多峰分布 → 生成式建模(下一章主角)
💡 下一章预告

第 7 章直击三代技术:抓取检测——GraspNet 系列如何用神经网络从点云直接生成抓取,摩擦锥、条件生成模型与大规模合成数据全线登场。

8动手实践

作业 2 已在第 5 章介绍。本章另设 ICP 与 Umeyama 练习:亲手实现最近邻匹配、刚体拟合和尺度求解,巩固位姿估计中的几何计算。

练习 1:numpy 实现 ICP(30 分钟)

import numpy as np

def icp(P, Q, max_iter=50, tol=1e-6):
    """点云配准:P (3,n) 源点云 → 对齐 Q (3,m) 目标点云,返回 (R, t, P_aligned)"""
    P = P.copy()
    R_total, t_total = np.eye(3), np.zeros(3)
    for it in range(max_iter):
        # 1. 找最近邻对应(暴力版即可,点少)
        corr = []
        for p in P.T:
            j = np.argmin(np.linalg.norm(Q.T - p, axis=1))
            corr.append(Q[:, j])
        Q_corr = np.array(corr).T

        # 2. 中心化
        cP, cQ = P - P.mean(1, keepdims=True), Q_corr - Q_corr.mean(1, keepdims=True)

        # 3. 带约束 Procrustes(第 5 章公式)
        U, _, Vt = np.linalg.svd(cQ @ cP.T)
        D = np.diag([1, 1, np.linalg.det(U @ Vt)])
        R = U @ D @ Vt
        t = Q_corr.mean(1) - R @ P.mean(1)

        # 4. 更新并检查收敛
        P_new = R @ P + t[:, None]
        movement = np.linalg.norm(P_new - P)
        R_total, t_total = R @ R_total, R @ t_total + t
        P = P_new
        if movement < tol: break
    return R_total, t_total, P

# 生成测试:非对称点云与较小位姿扰动,验证局部精修
np.random.seed(0)
Q = np.random.randn(3, 300) * np.array([[1.0], [0.7], [0.3]])
angle = 0.03
R_true = np.array([[np.cos(angle), -np.sin(angle), 0], [np.sin(angle), np.cos(angle), 0], [0, 0, 1]])
t_true = np.array([0.01, -0.02, 0.01])
P = R_true @ Q + t_true[:, None]
R, t, P_align = icp(P, Q)
print("旋转误差:", np.round(np.linalg.norm(R - R_true.T), 6))
print("平移误差:", np.round(np.linalg.norm(t + R_true.T @ t_true), 6))   # 应接近 0

自测:上面的变换方向是P→Q,因此构造P=R_true Q+t_true后,正确输出应为 $R_{true}^\top$ 与 $-R_{true}^\top t_{true}$。把初始角度改大、删去一半目标点或加入离群点,记录是否失配;把这些结果与完全重合点云的测试对照,可以观察ICP对初值、重叠范围和离群点的敏感性。

练习 2:Umeyama 相似变换(20 分钟)

在练习 1 基础上加一个缩放系数 $s$(NOCS 的 7 DoF 拟合):

def umeyama(P, Q):
    """7DoF 相似变换:s*R*p + t = q(P、Q 已一一对应)"""
    cP, cQ = P - P.mean(1, keepdims=True), Q - Q.mean(1, keepdims=True)
    # 对应点最小二乘尺度;无噪声时也等于 RMS 比
    U, singular_values, Vt = np.linalg.svd(cQ @ cP.T)
    D = np.diag([1, 1, np.linalg.det(U @ Vt)])
    R = U @ D @ Vt
    s = np.sum(singular_values * np.diag(D)) / np.sum(cP**2)
    t = Q.mean(1) - s * R @ P.mean(1)
    return s, R, t

# 测试:随机 3D 点云 + 随机相似变换
P0 = np.random.rand(3, 100)
s_t, R_t, t_t = 1.5, np.eye(3), np.array([1., -2., 3.])
s, R, t = umeyama(P0, s_t * R_t @ P0 + t_t[:, None])
assert np.allclose(s, s_t, atol=1e-9) and np.allclose(R, R_t, atol=1e-9) and np.allclose(t, t_t, atol=1e-9)
print("✓ Umeyama 恢复的 (s, R, t) 与真值一致")

练习 3:仅二维平移力平衡判断(15 分钟,选做)

给定 3 个接触点的法向力方向(2D),忽略力矩,只判断这些力方向能否正张成整个平面,即原点是否严格位于满维凸包内部:

def force_closure_2d(normals):
    """normals: (C,2) 法向力;仅平移,原点严格在满维凸包内部"""
    from scipy.spatial import ConvexHull
    if len(normals) < 3 or np.linalg.matrix_rank(normals - normals.mean(0)) < 2:
        return False
    hull = ConvexHull(normals)
    # 半空间 n·x+b ≤ 0:x=0 严格在内部要求所有 b < 0
    return bool(np.all(hull.equations[:, -1] < -1e-10))

print(force_closure_2d(np.array([[1,0],[-0.5,0.866],[-0.5,-0.866]])))  # 120°分布 → True
print(force_closure_2d(np.array([[1,0],[1,0.1],[-0.5,0.2]])))    # 集中在同一侧 → False
💡 自学路线建议

三个练习共约 65 分钟,只需 numpy(练习 3 加 scipy)。做完练习 1 建议把 ICP 接到第 5 章作业 2 的位姿估计输出上试试,比较精修前后的位姿误差与抓取结果。

附A术语表

术语解释
ICP迭代最近点:最近邻对应 + Procrustes 的迭代点云配准算法
Chamfer 距离点云间最近邻距离之和,ICP 的对应搜索目标
KD-tree空间划分数据结构,加速最近邻搜索
Point-to-Plane ICP考虑目标点局部平面结构的 ICP 变体,收敛更快
NOCS归一化物体坐标空间:类别级统一参考系(王鹤 CVPR 2019 Oral)
Umeyama 算法求解 7 DoF 相似变换(缩放+旋转+平移)的解析方法
9 DoF amodal bounding box含位姿(6D)+ 尺寸(3D)的完整包围盒(含被遮挡部分)
Sim2Real Gap合成数据与真实数据的分布差异导致的性能落差
Mixed Reality Data真实背景 + 合成前景的数据合成方式(CAMERA 数据集)
Co-Training真实数据(只监督分割)+ 合成数据混合训练
min-of-N loss对称物体位姿估计的损失:N 个等价位姿中取最小误差
力闭合(Force Closure)允许接触力产生的力螺旋正张成整个力螺旋空间;须包含力矩且另检验执行器限制
形闭合(Form Closure)纯几何约束完全固定刚体,不依赖摩擦
摩擦锥(Friction Cone)接触点可行力的集合,由摩擦系数决定

附B课件 66 页完整索引

原版 Lecture 6 课件共 66 页(GitHub 原文件)。下表逐页列出内容及在本教程中的位置:

逐页原图与中文翻译 · 本地原始课件PDF

页码页面内容在教程中的位置
p1封面:Lecture 6 - Vision and Grasping II封面区
p2主题页:实例级 6D 位姿估计§1(回顾)
p3实例级定义回顾(PoseCNN)§1(回顾第 5 章)
p4-8PoseCNN 结构与结果回顾(图源 Yu Xiang)§1(回顾第 5 章 §8.1)
p9主题页:ICP§2 开头
p10ICP 定义:点云配准,最小化 $\|Q-(RP+T)\|_F$§2
p11步骤一:中心化§2(步骤 1)
p12步骤二:Chamfer 距离对应($O(|P||Q|)$,KD-tree 加速)§2(步骤 2)
p13步骤三:约束 Procrustes 求 $\hat{R}$、残差求 $\hat{T}$、更新 P§2(步骤 3-4)
p14迭代流程总结(五步)§2
p15终止条件(三种)§2(步骤 4)
p16ICP 优缺点§2.2
p17ICP 变体:Point-to-Plane、Plane-to-Plane§2.2
p18PoseCNN + ICP 结果可视化§2
p19LINEMOD 数据集(回顾)§1(回顾)
p20实例级局限(回顾)§3(动机)
p21主题页:类别级 6D 位姿估计§3 开头
p22(无文字配图页)§3
p23NOCS(王鹤 et al., CVPR 2019 Oral)§3
p24类别级目标:无需 CAD 模型估位姿与尺寸§3
p25挑战:类别内形状差异§3
p26表示:NOCS§3
p27步骤 1:旋转归一化§3(三步归一化)
p28步骤 2:平移归一化(中心化)§3(三步归一化)
p29步骤 3:尺寸归一化§3(三步归一化)
p30类别级位姿定义:NOCS → 相机空间的变换§3
p31流程:图像 → NOCS map → 反投影 → RANSAC 拟合§3.1
p32网络:Mask R-CNN 检测器,输出 9 DoF amodal bbox§3.1
p33-35挑战:形状差异、数据与标注§4(动机)
p36CAMERA:混合现实数据生成流水线§4
p37数据统计:300K 图像、31 场景、1085 模型§4
p38混合现实数据示例§4
p39真实世界数据集§4
p40真实数据统计:8K RGB-D、18 场景、42 实例、6 类别§4
p41位姿拟合:Umeyama 7D + RANSAC§3.1(步骤 4)
p42-43Umeyama 细节与尺寸估计(Read by Yourself)§3.1
p44对称处理:min-of-N loss附录 A(术语)
p45结果可视化§3.3
p46消融:NOCS vs 直接回归(5°/10° 精度)§3.3
p47应用:TransNet 透明物体(ECCV 2022 Workshop)§4 更新框
p48应用:6-PACK 类别级跟踪(ICRA 2020)§4 更新框
p49应用:CAPTRA 关节物体跟踪(ICCV 2021 Oral)§4 更新框
p50GAPartNet:可泛化可操作部件(CVPR 2023 Highlight)§4 更新框
p51GAPartNet 数据统计(PartNet-Mobility 对比)§4 更新框
p52-54GAPartNet 输入输出与真机实验§4 更新框
p55主题页:位姿估计基础模型§4(FoundationPose)
p56FoundationPose(Wen et al., CVPR 2024)§4
p57合成数据瓶颈与 LLM/扩散模型增强的合成 pipeline§4
p58位姿初始化(检测 → 平移初始化 → 旋转采样)§4
p59位姿条件裁剪(crop 精修)§4
p60机器人应用与 YCB-Video 结果§4
p61主题页:物体抓取§6 开头
p62抓取与抓取合成定义(Newbury 综述)§6(回顾第 5 章)
p63抓取位姿回顾 + Force Closure 定义§6
p64物理定义:摩擦锥正张成 vs 刚性固定§6
p652D 简化力闭合例子(附视频链接)§6
p66结尾页:下集预告 Vision and Grasping III页脚(下一章预告)

附C参考资源

ICP实现和评价参见Open3D官方ICP教程;接触条件参见Modern Robotics:形闭合。

延伸阅读

  • Wang et al., NOCS, CVPR 2019 Oral(arXiv):类别级位姿估计原始论文
  • Wen et al., FoundationPose, CVPR 2024:位姿估计基础模型
  • Umeyama 算法参考:zpl.fi 的 Kabsch-Umeyama 教程
  • 力闭合 2D 示例视频:YouTube 搜索「6RWFFMtD5k8」(课件 p65 推荐)
  • Newbury et al., Deep Learning Approaches to Grasp Synthesis(综述)

自测:逐步验证完整流程

  1. ICP停止更新,能否说明得到真实位姿?
  2. NOCS图与深度图中相同像素分别表示什么坐标?
  3. 一个尺度系数如何恢复长、宽、高三个尺寸?
  4. 为何二维力方向包围原点还不足以证明平面刚体力闭合?
参考思路

停止可能是错误局部解;前者是规范物体坐标,后者经反投影为度量相机坐标;尺度要乘规范包围盒三轴范围;平面刚体还具有旋转自由度,必须同时检查转矩。