Part II · 第 9 章 机器人形态 · 9.3

抓取与灵巧手

机械臂把手送到物体旁边,真正决定物体拿不拿得住的,是手指放在哪里。每个接触点只能给出一个落在摩擦锥里的力,几个接触点的力合起来,能不能抵抗来自任何方向的力和力矩?这就是力封闭。本节从一个接触点的摩擦锥出发,用 wrench 空间里的凸包判断力封闭,用 Ferrari–Canny 指标 ε 给抓取打分,推出两指对跖(antipodal)条件,再看抓取矩阵与手部雅可比如何把关节力矩变成物体上的合力与"挤压"内力,最后看 Dex-Net 一类学习方法怎样大规模给抓取打分。

约 35 分钟 前置:1.6 秩与零空间 · 6.2 凸性 · 7.6 静力学与 wrench · 8.4 接触与摩擦 5 个交互

    1为什么机器人需要它

    "拿起来再放下"是几乎所有操作任务的第一步,而它比看上去难:手指落点稍有不同,物体就可能在手里打转、滑落,或者被一个小扰动(碰到料箱壁、手臂加速)甩出去。抓取要回答的是一个静力学问题:手指放在哪里、用多大的力捏,物体才无论受到什么样的外力和外力矩都不会脱手?

    • 抓取合成:给定物体形状,找出一组接触点,使抓取是"力封闭"的,并且尽可能稳。
    • 抓取评分:几千个候选抓取里挑哪一个?需要一个数来衡量"这个抓取有多抗扰"(Ferrari–Canny 的 ε)。Dex-Net 一类的学习方法,本质上是在学习这个分数。
    • 手的设计与控制:夹爪只要一个自由度,灵巧手要十六到二十四个。自由度多了能做手内操作(in-hand manipulation),代价是传感器、驱动和控制的复杂度。关节力矩怎样变成指尖力,指尖力怎样合成物体上的 wrench,靠的是 3.4 节的 \(\boldsymbol\tau=J^\top\mathbf F\) 再加一个新矩阵:抓取矩阵 \(G\)。

    本节只处理准静态、刚体、点接触的情形:物体不加速,接触不变形。这个模型很简单,却解释了夹爪为什么要有橡胶指垫、为什么对跖的两指夹得住而斜着夹不住、为什么三指能抓圆盘。(8.4 节讲接触与摩擦本身,这里只用它的结论:摩擦锥。)

    2直觉:一个接触点 = 一个力的锥

    手指按在物体上,手指给物体的接触力有三条规矩:只能推不能拉(法向分量 \(f_n\ge0\));切向力不能大于 \(\mu f_n\)(库仑摩擦);方向由接触点的法向决定。把"所有允许的力"画出来,就是一个以内法向为轴、半角 \(\varphi=\arctan\mu\) 的摩擦锥。锥里的任何力都是它两条边的非负组合:\(\mathbf f=\alpha_+\mathbf e_++\alpha_-\mathbf e_-\),\(\alpha_\pm\ge0\)。

    力还会产生力矩。物体上相对于参考点 \(\mathbf c\)(取质心)的受力点 \(\mathbf p\),力 \(\mathbf f\) 产生力矩 \(m=(\mathbf p-\mathbf c)\times\mathbf f\)(1.8 节的叉积)。把力矩放前面,得到平面里的 wrench \(\mathbf w=(m/\rho,\ f_x,\ f_y)\),三维空间中的一个点(和 7.6 节一致:wrench 力矩在前,力矩除以一个特征长度 \(\rho\) 是为了让三个分量量纲一致)。这样,一个摩擦锥就变成 wrench 空间里由两个"边 wrench" \(\mathbf w_\pm\) 张成的一个二维扇形。左图是物体上的接触,右图是它在 wrench 空间里的样子,两个图用同一个滑块联动。

    FIG 1一个接触点的摩擦锥与它的 wrench 扇形
    物体与接触点
    wrench 空间 (m/ρ, fx, fy),拖动旋转
    拖动物体边界上的圆圈移动接触点,拖动琥珀色手柄设定手指施加在物体上的力 \(\mathbf F\)。绿色扇形是摩擦锥,两条紫、蓝边是 \(\mathbf e_\pm=\mathbf n\pm\mu\mathbf t\)(法向分量归一为 1)。右图中同样的两条边是 wrench \(\mathbf w_\pm\),绿色扇形是锥在线性映射 \(\mathbf F\mapsto\mathbf w\) 下的像;\(\mathbf F\) 在锥内,当且仅当它的 wrench(琥珀色箭头 \(\mathbf w(\mathbf F)\),出锥时变红)落在扇形内。
    试一试
    • 把力 \(\mathbf F\) 拖到锥外面:箭头变红,读数显示"打滑"。再把它拖成背向物体(拉)的方向,看会发生什么。
    • 保持一个打滑的 \(\mathbf F\) 不动,增大 \(\mu\)(粗糙的指垫),直到它重新落进锥里。需要的 \(\mu\) 等于什么?
    • 把 \(\mu\) 调到 0:锥缩成一条线,右图的扇形缩成一条射线。没有摩擦的接触只能提供什么?
    核心洞见

    一个摩擦接触提供的 wrench 集合是一个凸锥:所有"边 wrench"的非负组合。几个接触叠加,就是把这些锥相加(Minkowski 和),也是所有边 wrench 的非负组合。抓得牢不牢,归结为一个几何问题:这堆边 wrench 的非负组合能不能铺满整个 wrench 空间?

    3动手玩:平面力封闭实验室

    现在放 2 到 4 个接触点。每个接触点贡献两条边 wrench,一共 \(2k\) 个点散在右图的 wrench 空间里。力封闭的意思是:这些边 wrench 的非负组合覆盖整个 wrench 空间,也就是它们的凸包把原点严格包在里面(1.6 节与 6.2 节:非负组合的集合是凸锥,覆盖整个空间等价于凸包包住原点)。直觉:原点在凸包内部,说明总能挑出一组接触力,抵消任意方向的外力和外力矩。

    右图里的透明多面体就是凸包。如果原点在里面,它周围能放下一个最大的球,球半径就是 Ferrari–Canny 质量 \(\varepsilon\):这个抓取在每一个方向上,都至少能抵抗大小为 \(\varepsilon\) 的外 wrench(接触法向力的总和限制为 1)。红色箭头画在物体上,是抓取最抵抗不了的那个外 wrench:它是一个沿某条作用线的力(或者一个纯力矩)。

    FIG 2力封闭实验室
    物体:拖动接触点
    wrench 空间中的凸包
    预设
    圆圈是接触点,彩色扇形是各自的摩擦锥。右图的点是边 wrench(颜色对应接触点),透明多面体是它们的凸包,中心的实心小圆点是原点,绿色线框球半径等于 \(\varepsilon\)。抓取不封闭时凸包不包住原点,读数给出原点到凸包的距离。读数里的"采样"是对 20000 个方向取 \(\min_{\mathbf d}\max_i\mathbf d\cdot\mathbf w_i\) 的独立数值核对,它总是略大于精确值,方向越多越接近。力矩用 \(\rho\)(物体边界到质心的最大距离)归一化,参考点取质心。
    试一试
    • 点"两指对跖"预设,再把一个接触点沿边拖开:只用两个点接触就能力封闭吗?什么时候开始不封闭?
    • 在圆盘上放三个接触点对称分布(用"圆盘三指"预设):读数 \(\varepsilon\) 正好等于 \(\mu\)。拖动一个点远离对称位置,\(\varepsilon\) 如何变化?
    • 令 \(\mu=0\)、4 个接触点,在矩形上找到一个封闭抓取("形封闭"预设)。摩擦为 0 时,3 个接触点能封闭吗?为什么?(提示:3 个向量能正张成整个 3 维空间吗?)
    三种说法,一个条件

    力学:抓取能抵抗任意外 wrench。代数:边 wrench 正张成 \(\mathbb R^3\)(平面)或 \(\mathbb R^6\)(空间)。几何:边 wrench 的凸包以原点为内点。FIG 2 里同时看得到三者:红箭头所指的外 wrench 能否被抵消(封闭时能,不封闭时不能)、多面体是否包住原点、读数是否显示"封闭",三者永远一致。

    4第二、第三视角:对跖条件与手

    两指对跖:一条线落在两个锥里

    最常见的夹爪只有两个接触点。FIG 2 的 2 指实验已经暗示了答案,Nguyen(1988)给出了干净的定理:两个带摩擦的点接触构成平面力封闭,当且仅当两接触点的连线落在两个摩擦锥内,即连线与各自内法向的夹角都小于 \(\varphi=\arctan\mu\)。这样的一对点称为对跖(antipodal)。物理上很自然:沿连线两头相向捏,每个指尖的力都在锥里,两个力大小相等方向相反,合力为零,且作用线重合,合力矩也为零。

    下面用椭圆(任何光滑曲线都一样)看这个条件。左图拖动两个接触点;右图是点对空间:横轴是接触点 1 的位置参数 \(\theta_1\),纵轴是接触点 2 的 \(\theta_2\),绿色区域是所有封闭的点对。拖动右图的圆点同样会移动左图的接触点。增大 \(\mu\),绿色区域从椭圆长短轴端点处的几个小点长大成越来越宽的带。令 \(\mu=0\),区域缩到测度为零。

    FIG 3对跖抓取与点对空间
    椭圆上的两个接触点
    点对空间 (θ₁, θ₂):绿 = 封闭
    左图:虚线是两接触点的连线,\(\alpha_1,\alpha_2\) 是连线与各自内法向(青色短线)的夹角,绿色表示 \(\alpha_i<\varphi\),红色表示不满足。右图的绿色区域用定理逐点判定(120×120 个格子),读数里的"封闭比例"是绿格占全部格子的比例。右图的虚线是 \(\theta_2=\theta_1+\pi\)(椭圆参数意义下的"对面")。点对关于对角线对称,因为交换两个手指不改变抓取。
    试一试
    • 令 \(\mu\le0.25\),把两个接触点拖成一个封闭对。注意绿色区域有多小:低摩擦下,两指必须几乎正对着夹。
    • 把 \(\mu\) 增到 0.9 以上,让封闭比例超过 30%。橡胶指垫的 \(\mu\) 能到 1 左右,光滑金属指尖只有 0.2 到 0.3。
    • 点"μ = 0":无摩擦时,只有两个接触点恰好沿共同法线正对(椭圆的长、短轴端点)才有机会,但这时抓取仍不封闭。为什么?

    形封闭与力封闭

    摩擦并不总是可靠的(油、水、不同材质)。如果去掉摩擦,单靠几何把物体"卡死",叫形封闭(form closure)。无摩擦接触只提供一条法向射线,每个接触只给一个 wrench,要在 \(n\) 维 wrench 空间里正张成,至少要 \(n+1\) 个:平面(\(n=3\))至少 4 个接触点,空间(\(n=6\))至少 7 个。这正是 FIG 2 里 \(\mu=0\) 时 3 个点无论怎样放都封闭不了的原因。摩擦换来更少的接触:平面 2 个,空间 3 个就够了。形封闭的优点是抓取不依赖摩擦系数,缺点是需要更多手指、形状要配合,而且圆盘、球这类旋转对称的物体,无摩擦接触永远无法约束它绕自己转动(FIG 2 里的 \(\mu=0\) 圆盘)。

    从关节力矩到物体:抓取矩阵与手部雅可比

    前面的 \(\mathbf F\) 是凭空出现的。真实的手靠关节电机出力,两个矩阵把这条链连起来:手部雅可比 \(J_h\)(3.4 节:\(\boldsymbol\tau=J_h^\top\mathbf f\),每根手指一个 \(J\))和抓取矩阵 \(G\)(指尖力 → 物体 wrench,\(\mathbf w=G\mathbf f\))。\(G\) 是 \(3\times 2k\)(\(k\) 个接触点),比方程数多得多的未知数让它有零空间(1.6 节):零空间里的接触力合成的 wrench 为零,物体动不了,它们就是手指之间互相"挤压"的内力。内力正是抓取能握紧而不平移物体的原因,也是摩擦抓取的救星:把内力开大,每个接触点的法向力增大,摩擦锥里能放的切向力也跟着增大。

    FIG 4 是平面二指手,每指两个关节。选好物体的重量和重心位置后,手需要对物体施加的 wrench 是固定的(抵消重力);这在 \(f\) 空间里只确定了 \(G^{+}\mathbf w\) 这一部分,剩下的自由度就是沿零空间的挤压大小 \(N\)。试着调 \(N\):太小摩擦锥放不下所需的切向力,物体滑落;足够大就稳住了;再大只是白白消耗关节力矩。

    FIG 4平面二指手:关节力矩、内力与摩擦锥
    τL1
    τL2
    τR1
    τR2
    琥珀色圆点是物体重心(拖动或用滑块改变偏移 \(x_c\)),向下的琥珀箭头是重力 \(mg\)。每个指尖画出摩擦锥(绿色),以及指尖施加在物体上的力 \(\mathbf f_i=\)(浅色:\(G^{+}\mathbf w\),承担重力的摩擦力)+(青色:挤压 \(N\) 沿零空间)。合力在锥内为琥珀色,出锥为红并且物体下滑。右侧四根条是由 \(\boldsymbol\tau=J_h^\top\mathbf f\) 算出的关节力矩,红色竖线是力矩上限,超限变红。读数里的核对项分别是 \(G\mathbf f-\mathbf w_d\) 与由 \(\boldsymbol\tau\) 反解 \(\mathbf f=J_h^{-\top}\boldsymbol\tau\) 的往返误差。
    试一试
    • 调整挤压 \(N\),使物体不滑,并且 \(N\) 只比最小值 \(N_{\min}\) 大不超过 15%。读数里的 \(N_{\min}\) 公式是什么形状?
    • 把重心偏移 \(|x_c|\) 拉到 2 cm 以上,并重新找到一个刚好不滑的 \(N\)(不超过 \(N_{\min}\) 的 1.15 倍):偏心让一侧手指承担更多摩擦力,所需的挤压为什么变大?
    同一个对偶出现两次

    3.4 节:\(\boldsymbol\tau=J^\top\mathbf F\),"关节速度映到指尖速度,指尖力映到关节力矩"。抓取矩阵里是同一个故事:物体的 twist \(\mathbf V\) 映到各接触点的速度 \(\mathbf v_c=G^\top\mathbf V\),各接触力映到物体的 wrench \(\mathbf w=G\mathbf f\)(虚功原理 \(\mathbf w^\top\mathbf V=\mathbf f^\top\mathbf v_c\),即功率 \(\boldsymbol\omega^\top\mathbf m+\mathbf v^\top\mathbf f\))。手和物体间的关系,就是 \(J_h\dot{\mathbf q}=G^\top\mathbf V\)(接触点不脱离、不滑动时手指与物体的速度一致)。

    5再看数学

    提示:把鼠标悬停在公式中带底色的符号上,FIG 2、FIG 3 或 FIG 4 中对应的元素会被高亮。

    接触模型

    手指与物体的接触被建模成一个点,选哪种模型决定了每个接触能传多少"独立的力"(\(B_i\) 的列数):

    接触模型 允许的接触力 平面 / 空间的独立分量
    无摩擦点接触 \(\mathbf f=f_n\mathbf n,\ f_n\ge0\) 1 / 1
    带摩擦点接触(库仑) \(\mathbf f=f_n\mathbf n+\mathbf f_t,\ \|\mathbf f_t\|\le\mu f_n,\ f_n\ge0\) 2 / 3 (空间里是圆锥,常用 \(m\) 棱锥近似)
    软指(soft finger) 再加绕法线的力矩 \(|m_n|\le\gamma f_n\) — / 4

    抓取矩阵

    取物体上的参考点 \(\mathbf c\)。第 \(i\) 个接触点在 \(\mathbf p_i\),接触力 \(\mathbf f_i\in\mathbb R^3\)(空间)对物体产生的 wrench(力矩在前,7.6 节;7.6 节把 wrench 记作 \(\mathbf F\),本节改记为 \(\mathbf w\),把 \(\mathbf F\) 留给 FIG 1 里手指的力)是

    $$ \mathbf w_i=\begin{bmatrix}\mathbf m_i\\ \mathbf f_i\end{bmatrix}=\underbrace{\begin{bmatrix}[\mathbf p_i-\mathbf c]_\times\\ I_3\end{bmatrix}}_{G_i\ (6\times3)}\mathbf f_i,\qquad \mathbf w=\sum_{i=1}^{k}G_i\mathbf f_i=\hl{G}{G}\,\mathbf f,\qquad \text{plane:}\ G_i=\begin{bmatrix}-(p_{i,y}-c_y) & p_{i,x}-c_x\\ 1&0\\ 0&1\end{bmatrix}. $$

    (\([\cdot]_\times\) 是 1.8 节的叉积矩阵;平面里 \(\mathbf m=(\mathbf p-\mathbf c)\times\mathbf f\) 是标量,也就是上式第一行。)接触力写成锥的基 \(\hl{cone}{\mathbf f_i=B_i\boldsymbol\lambda_i}\),\(\boldsymbol\lambda_i\ge0\),\(B_i\) 的列就是 FIG 1 的 \(\mathbf e_\pm=\mathbf n\pm\mu\mathbf t\)。物体平衡要求 \(\mathbf w+\mathbf w_{\text{ext}}=\mathbf 0\),所以抓取抵抗得了 \(\mathbf w_{\text{ext}}\),当且仅当 \(-\mathbf w_{\text{ext}}\) 属于 \(\{GB\boldsymbol\lambda:\boldsymbol\lambda\ge0\}\),这个集合正是 FIG 2 凸包张成的锥。

    力封闭、形封闭与内力

    令 \(p=3\)(平面)或 \(6\)(空间)。把全部边 wrench 记作 \(\mathbf w_1,\dots,\mathbf w_m\)(FIG 2 里 \(m=2k\))。

    $$ \text{force closure}\ \iff\ \Big\{\sum_j\lambda_j\mathbf w_j:\lambda_j\ge0\Big\}=\mathbb R^{p}\ \iff\ \mathbf 0\in\operatorname{int}\,\hl{hull}{\operatorname{conv}\{\mathbf w_j\}}\ \iff\ \operatorname{rank}G=p\ \text{ and }\ \exists\,\mathbf f\in\mathcal N(G)\cap\operatorname{int}\prod_i\mathrm{FC}_i. $$

    最后一个等价式(Murray–Li–Sastry 第 5 章;Nguyen)把 1.6 节的零空间带了回来:矩阵 \(G\) 要满行秩(能产生任何方向的 wrench),而且零空间里存在一个严格在所有摩擦锥内部的内力(手指可以一边互相挤压,一边每个接触点都稳稳在锥里)。形封闭是 \(\mu=0\) 的特例,此时每个接触只有一个 \(\mathbf w_i\),要正张成 \(\mathbb R^p\) 至少要 \(m\ge p+1\) 个:4 个(平面),7 个(空间);Markenscoff–Ni–Papadimitriou(1990)证明平面里不含圆弧的物体 4 个就够,没有旋转对称的一般 3D 物体 7 个就够。

    对跖定理

    两个点接触时 \(G\) 是 \(3\times4\),零空间一维(秩 3)。零空间里的力满足 \(\mathbf f_1+\mathbf f_2=\mathbf 0\) 且合力矩为 0,所以它必须沿着两个接触点的连线,成对地"相向挤压"。它要严格落在两个锥内,等价于:

    $$ \hl{angle}{\angle\big(\mathbf p_2-\mathbf p_1,\ \mathbf n_1\big)}<\arctan\mu,\qquad \angle\big(\mathbf p_1-\mathbf p_2,\ \mathbf n_2\big)<\arctan\mu. $$

    FIG 3 的绿色区域就是用这两个不等式逐格画出的;在阈值处 \(\varepsilon\) 线性降为 0(数值检查过:把 \(\theta_2\) 扫过阈值,\(\varepsilon\) 在边界一侧恰为 0,另一侧随与边界的距离线性增长)。

    质量指标 \(\varepsilon\)

    Ferrari 与 Canny(1992)把"这个抓取多抗扰"定义成凸包里以原点为心的最大球的半径:

    $$ \hl{eps}{\varepsilon}\;=\;\max\{r:\ \mathcal B_r(\mathbf 0)\subseteq\operatorname{conv}\{\mathbf w_j\}\}\;=\;\min_{\|\mathbf d\|=1}\ \max_{j}\ \mathbf d^\top\mathbf w_j\;=\;\min_{\text{facets }F}\ \frac{b_F}{\|\mathbf a_F\|}. $$

    中间的 \(\max_j\mathbf d^\top\mathbf w_j\) 是凸包沿 \(\mathbf d\) 方向的"支撑函数";让它最小的方向 \(\mathbf d^\star\) 最薄,\(-\varepsilon\mathbf d^\star\)(FIG 2 的红色箭头)就是最难抵抗的外 wrench。凸包写成 \(\{\mathbf w:\mathbf a_F^\top\mathbf w\le b_F\}\) 的面片形式时,\(\varepsilon\) 是原点到最近面片的距离。FIG 2 里点很少,用暴力枚举所有三点面即可得到精确值;点多时(三维摩擦金字塔)用 qhull 一类的凸包算法或线性规划(6.8 节)。几个检验过的值:三指对称夹圆盘(\(\rho=R\)),\(\varepsilon=\mu\),直到 \(\mu\approx0.91\) 才被另一个面片截断;两个对跖点夹圆盘,\(\varepsilon\) 等于四面体凸包的内切球半径,和数值精确值一致。

    注意 \(\varepsilon\) 不是坐标无关的:换参考点 \(\mathbf c\)、换特征长度 \(\rho\)(单位)就会改变它的数值,因为这相当于对 wrench 空间做了线性变换。只有"是否封闭"(原点在不在凸包内)不受影响。不同抓取之间比较 \(\varepsilon\),必须是同一物体、同一参考点、同一 \(\rho\)、同一种范数(FIG 2 用的是总法向力 \(\le1\) 的 \(L_1\) 范数;另一种常用的是每个接触法向力 \(\le1\) 的 \(L_\infty\) 范数)。

    手:\(J_h\)、内力与抓取力优化

    把所有手指的雅可比叠成分块对角矩阵 \(J_h=\operatorname{diag}(J_1,\dots,J_k)\)(每个 \(J_i\) 是 3.4 节的指尖雅可比)。静力学给出

    $$ \boldsymbol\tau=J_h^\top\mathbf f,\qquad \mathbf w=G\mathbf f,\qquad \mathbf f=\underbrace{G^{+}\mathbf w_d}_{\text{net wrench}}+\underbrace{\mathcal N(G)\,\boldsymbol\lambda}_{\text{internal force}},\qquad J_h\dot{\mathbf q}=G^\top\mathbf V. $$

    对每根手指是 \(2\times2\) 的可逆 \(J_i\)(FIG 4),则 \(\mathbf f_i=J_i^{-\top}\boldsymbol\tau_i\):给定关节力矩就确定指尖力。实际控制里反过来:先选 \(\mathbf f\),再算 \(\boldsymbol\tau\)。选 \(\mathbf f\) 的过程叫抓取力优化:在 \(G\mathbf f=\mathbf w_d\)、\(\mathbf f_i\in\) 缩进的摩擦锥(留安全余量)、\(\|\boldsymbol\tau\|_\infty\le\tau_{\max}\) 这些约束下,最小化(比如)\(\|\mathbf f\|^2\) 或最大关节力矩。目标是凸二次或线性函数,约束是锥和线性不等式,所以是 QP/SOCP(6.7 到 6.8 节);手控制器每个周期解一次。

    欠驱动、协同与手内操作(指路)

    欠驱动手指:一个电机通过肌腱带动 2 到 3 个关节,肌腱力 \(F_t\) 在第 \(i\) 个关节产生力矩 \(r_iF_t\),被关节弹簧 \(k_iq_i\) 和接触力平衡:\(r_iF_t=k_iq_i+(J^\top\mathbf f)_i\)。指节碰到物体后那个关节被接触力"卡住",电机继续拉,后面的指节继续合拢直到全部贴合:手指自适应地"包住"物体,不需要感知形状。代价是你不能独立控制各关节力矩,内力分布由机构几何和弹簧决定。协同:人手的抓取姿态高度相关,少数几个主成分(Santello 等,1998)就能解释大部分姿态的方差,把关节角写成 \(\mathbf q=\bar{\mathbf q}+S\mathbf z\),\(\mathbf z\) 只有两三维,就是一个"软件版"的欠驱动。手内操作:在保持封闭的同时让物体的 twist \(\mathbf V\) 变化,就要让接触点在物体表面滚动或滑动(接触点的位置 \(\mathbf p_i\) 变成状态量),需要接触运动学和"手指步态";这是 Murray–Li–Sastry 第 5、6 章和近年强化学习(见下一节)的领域。

    6机器人中的它:给一堆候选抓取打分

    料箱拣选(bin picking)的经典流程:相机拍到物体,规划器采样几百到几千个候选抓取,用分数排序,把最好的交给机械臂。Dex-Net 2.0(Mahler 等,RSS 2017)的做法是:先在仿真里对上百万个合成点云上的抓取,用上面讲的 Ferrari–Canny 类指标并加入摩擦系数、物体位姿、夹爪位姿的随机扰动,算出鲁棒质量作为标签,再训练一个神经网络(GQ-CNN)直接从深度图预测成功概率,这样现实里不用解几何,一次前向就给出分数。

    下图用同样的逻辑做一个玩具版本:一个 160 边形的"土豆",平行夹爪从相对两侧闭合。候选是所有边界点对(线的亮度表示分数),夹爪张开宽度有上限。"名义"模式按精确几何下的 \(\varepsilon\) 排序;"鲁棒"模式则让物体的位姿有高斯误差(平移与旋转),夹爪沿原来的闭合线重新接触,对 40 次随机误差取平均 \(\varepsilon\),并统计仍然封闭的比例。

    FIG 5平行夹爪抓取规划
    细线是满足开口限制且名义上封闭的候选对,线越不透明分数越高(当前排序方式)。粗线加两侧指垫是当前排名第一的抓取;虚线圈是"另一种排序方式"的第一名,两者不同时读数会提示。位姿误差 \(\sigma\) 以物体半径为单位(旋转用 \(\sigma\) 弧度);随机数固定,所以拖动滑块时排名变化是真实的,不是抖动。
    试一试
    • 把 \(\sigma\) 调到 0.08 以上并切到"鲁棒":名义最优的抓取和鲁棒最优的抓取不是同一个。名义分数最高的那个,在位姿误差下为什么容易失败?
    真实系统里

    学习式抓取检测:Dex-Net 2.0/3.0(平行夹爪/吸盘,用解析质量作标签)、GraspNet-1Billion(Fang 等,CVPR 2020)、6-DoF GraspNet(Mousavian 等,ICCV 2019)、Contact-GraspNet(Sundermeyer 等,ICRA 2021)、AnyGrasp(Fang 等,T-RO 2023),输入点云,输出 6 自由度夹爪位姿与分数;Part V 与 Part VI 会从监督学习与扩散策略的角度回来讲这些方法。吸盘:不需要摩擦,需要一块可密封的平面,仓储拣选里最常用。手内重定向:OpenAI 的魔方手(2019)用 Shadow Hand、自动域随机化和 PPO 在仿真里训练再迁移到真机;后来 Allegro 与 LEAP Hand 上的手内旋转策略(Qi 等,2022 年起)用相同路线。触觉:GelSight、DIGIT 这类视触觉传感器直接看到接触面,估计法向力与滑移(9.4 节的传感器分类表把它们与其他传感器放在一起比较)。夹爪选择:平行夹爪便宜可靠,适合形状规则的零件;吸盘适合有平面的箱体;软手和自适应手适合形状不确定;灵巧手适合手内操作和使用工具,但贵、脆、难控。

    末端执行器 自由度 / 驱动 特点
    平行夹爪(Franka Hand)1 个驱动,行程约 80 mm对跖捏取;便宜,鲁棒,最常用
    自适应夹爪(Robotiq 2F-85)1 个驱动,连杆式欠驱动指,行程 85 mm指节自动贴合,适应形状
    三指自适应(Robotiq 3-Finger)3 指各 1 个驱动,外加 1 个开合电机(共 4 个)包络抓取(power grasp)
    吸盘 / 软抓手0 个手指自由度(真空或气压)吸盘要可密封平面;软手靠被动柔顺
    Ability Hand(PSYONIC)5 指,6 个驱动自由度假肢出身,轻巧
    Allegro Hand16 自由度,4 指 × 4 关节,全驱动研究常用,仿真模型成熟
    LEAP Hand16 自由度,4 指 × 4 关节,全驱动低成本,面向机器人学习(Shaw 等,RSS 2023)
    Shadow Dexterous Hand24 个关节,20 个驱动(指端两个关节耦合)接近人手尺寸;OpenAI 魔方手

    作为参照,人手的关节自由度常被引用为 20 多个(连手腕约 27)。机器人手的难点不在自由度的个数,而在驱动器体积、肌腱摩擦、触觉传感和它们的可靠性。

    7常见误区

    误区 1:只看力平衡,忽略力矩

    力封闭是关于wrench的,力和力矩一起。在 FIG 2 里把圆盘上的三个接触点对称放置并令 \(\mu=0\):三个法向力互成 120°,合力为零,看上去"平衡"了,但它们的作用线都过圆心,对绕圆心的转动毫无抵抗,\(\varepsilon=0\)。有了摩擦,切向力才有了力臂,\(\varepsilon=\mu\)。直觉"力平衡"会漏掉一整个自由度。

    误区 2:把 \(\mu\) 当成已知常数

    \(\mu\) 不是物体的属性,而是指垫与物体这一对表面在当前条件(干湿、油污、速度、压力)下的性质,估计往往差一倍。FIG 3 显示封闭区域对 \(\mu\) 很敏感。实践里用一个保守的 \(\mu\)(比标称值小)画锥,或者像 Dex-Net 那样把 \(\mu\) 当作随机变量去采样,再取期望或最差情形。

    误区 3:理想接触点不等于手指够得着的点

    本节把接触点当作可以任意摆放的点。真实的手指有厚度和指垫,是一块曲面而不是一个点;接近方向会撞到料箱壁和邻近物体;手指的关节要能给出需要的力矩(FIG 4 的力矩条)。"力封闭"只是必要条件之一。抓取规划还要加上运动学可达性、碰撞检测、抓取力是否在关节力矩限制内。

    误区 4:平面封闭 ≠ 三维封闭

    FIG 3 里的对跖抓取在平面里封闭,但把物体放到三维里,两个点接触夹一个物体,绕两点连线的转动没有任何抵抗:点接触(哪怕有摩擦)不能产生绕法线的力矩。所以一个夹爪夹住瓶子,瓶子仍可能绕夹爪的轴摆下去。解决办法是增加第三个接触、用有面积的指垫(软指模型提供绕法线的摩擦力矩),或者抓在重心附近,让重力绕夹爪轴的力矩尽量小。

    误区 5:\(\varepsilon\) 越大越好,也不依赖单位

    FIG 5 展示了第一个问题:名义 \(\varepsilon\) 最高的抓取可能对位姿误差很敏感,鲁棒排序才是实际成功率的更好代理,这也是 Dex-Net 用鲁棒质量当标签的原因。第二个问题在上一节:\(\varepsilon\) 依赖参考点和 \(\rho\),换单位就换数值。把它当作同一物体上的排序依据,而不是跨物体的绝对"好坏"。还有第三个:\(\varepsilon\) 不管动力学。手臂在加速时,惯性力会附加在 \(\mathbf w_{\text{ext}}\) 上。

    8小练习

    1. 指垫与物体的摩擦系数 \(\mu=0.5\)。摩擦锥的半角是多少?
    \(\varphi=\arctan\mu=\arctan0.5\approx26.6^\circ\)。切向力与法向力之比不超过 \(\mu\) 正好是锥的边界:边上 \(\tan\varphi=f_t/f_n=\mu\)。
    2. 橡胶指垫 \(\mu=0.8\),两指在平面里夹一个物体,两接触点的连线与两侧的内法向都成 35° 角。这是力封闭吗?
    对跖定理:连线在两个锥里就封闭,不需要法线重合(而没有摩擦时,即使法线重合,两点也封闭不了:平面里无摩擦至少要 4 个接触点)。有摩擦时 2 个点接触就够,且封闭与质量无关,质量只决定需要多大的挤压力(FIG 4)。
    3. 至少需要多少个无摩擦点接触才能对一个一般的物体形封闭?(平面 / 空间)
    \(n\) 维 wrench 空间里,无摩擦接触每个只给一个 wrench,要正张成 \(\mathbb R^n\) 至少要 \(n+1\) 个:平面 \(n=3\) 得 4,空间 \(n=6\) 得 7。FIG 2 里 \(\mu=0\) 时 3 个点永远不封闭、4 个点可以。
    4. 用两个对称的平行指垫(\(\mu=0.4\))夹住 0.5 kg 的物块,重心在两指中间,\(g=9.8\ \text{m/s}^2\)。抓住它所需的最小挤压力 \(N\)(每个指尖的法向力)约为?
    \(mg=0.5\times9.8=4.9\) N,两个指尖各分担 \(mg/2=2.45\) N 的摩擦力。要求 \(2.45\le\mu N\),得 \(N\ge2.45/0.4\approx6.1\) N(对应 FIG 4 的 \(N_{\min}=mg/(2\mu)\))。若偏心,\(N_{\min}\) 变为 \(mg\,(1/2+|x_c|/w)/\mu\)。
    5. 在三维中,用两个带摩擦的点接触夹住一个物体。哪一种外 wrench 是它抵抗不了的?
    点接触的力只有 3 个分量,两个接触共 6 个未知数,但 \(G\) 的秩只有 5:缺的就是绕连线的力矩(接触点都在连线上,接触力对这条线没有力矩)。软指(绕法线有摩擦力矩)或第三个接触才能补上。

    9延伸阅读

    • R. M. Murray, Z. Li & S. S. Sastry, A Mathematical Introduction to Robotic Manipulation (CRC Press, 1994), Ch. 5 — 多指手运动学:接触模型、抓取矩阵、力封闭与形封闭的严格定义
    • K. Lynch & F. Park, Modern Robotics, Ch. 12 — 抓取与操作:接触运动学、摩擦、形封闭与力封闭
    • V.-D. Nguyen, Constructing Force-Closure Grasps, Int. J. Robotics Research 7(3), 1988 — 两指对跖定理与力封闭抓取的构造
    • C. Ferrari & J. Canny, Planning Optimal Grasps, IEEE ICRA 1992 — 质量指标 \(\varepsilon\)(最大内切球)的出处
    • A. Bicchi & V. Kumar, Robotic Grasping and Contact: A Review, IEEE ICRA 2000 — 抓取与接触研究的综述
    • M. T. Mason & J. K. Salisbury, Robot Hands and the Mechanics of Manipulation (MIT Press, 1985) — 手与操作力学的早期经典
    • E. Markenscoff, L. Ni & C. H. Papadimitriou, The Geometry of Grasping, Int. J. Robotics Research 9(1), 1990 — 形封闭需要几个接触点
    • J. Mahler et al., Dex-Net 2.0: Deep Learning to Plan Robust Grasps with Synthetic Point Clouds and Analytic Grasp Metrics, RSS 2017 — 用解析质量作标签训练抓取质量网络
    • OpenAI et al., Solving Rubik's Cube with a Robot Hand, arXiv:1910.07113, 2019 — 灵巧手的手内操作:仿真训练、自动域随机化、迁移到真机
    • M. Santello, M. Flanders & J. F. Soechting, Postural Hand Synergies for Tool Use, J. Neuroscience 18(23), 1998 — 人手抓取姿态的低维协同