教程 · 中级 · 30 分钟

舵机夹爪的夹持力、堵转,以及为什么柔顺更胜一筹

舵机控制的是位置,而你要抓的物体在乎的是力。两者之间的汇率就是刚度;如果手指是刚性的,可用的窗口比一个舵机步距还要窄。

这是一个单位问题,不是一个调参问题

业余舵机夹爪的全部难点,两行就说完了:

  • 物体在乎力。低于一个下限它掉出来,高于一个上限它就毁了。
  • 舵机吃的是位置。writeMicroseconds(1300) 是一个角度,舵机会顶住任何代价把那个角度保持住。

这是两套不同的单位,而在它们之间做转换的东西,是从舵盘到物体之间所有部件的串联刚度——连杆、手指、垫、物体本身,全都在串联里。如果那条链的刚度是 k,那么在首次接触之后把钳口继续推进 Δc 就会产生

N = k · Δc

而你必须命中的那个力窗口,用你真正能指令的毫米来表示,就是

Δc_window = ( F_ceiling − F_floor ) / k

本文的一切都由这一个方程推出来,包括“为什么打印得更硬更好的手指反而让你的夹爪更糟”这个原因。

舵机真正能分辨什么

一旦把死区、减速箱背隙、以及产生脉冲的那个东西的量化都算进去,业余舵机可用的分辨率大约是一度。这一度通过力臂 L 变成钳口行程:

step = L · (π/180)
力臂 每步钳口行程 SG90 堵转力 连续力(约 70%)
12 mm 0.209 mm 14.67 N 10.27 N
20 mm 0.349 mm 8.80 N 6.16 N
30 mm 0.524 mm 5.87 N 4.11 N
45 mm 0.785 mm 3.91 N 2.74 N
60 mm 1.047 mm 2.93 N 2.05 N

有两件事值得注意。短力臂同时买到更大的力和更细的分辨率——在夹爪在意的两个维度上它都更好。它付出的代价是行程:舵盘转过 θ 时钳口行程就是 L·θ,所以一条 12 mm 的力臂转过 120° 只张开 25 mm,够不着绕一圈 65 mm 的瓶子。

手指力臂 10 到 60 毫米的上下两幅堆叠图。上图有两条纵轴:一条青色的连续钳口力曲线随力臂变长从 12.5 牛顿掉到 2.1 牛顿,标出 12 毫米时 10.3 牛顿、30 毫米时 4.1 牛顿、60 毫米时 2.1 牛顿;一条琥珀色的每舵机步钳口行程线从约 0.18 升到 1.05 毫米。标题写着短买到力与分辨率。下图显示 120 度舵盘扫过时的钳口张开量从约 21 线性升到 126 毫米,虚线参考线标在方块的 30 毫米、鸡蛋的 44 和瓶子的 65。

力臂是唯一自由的选择,而它由你需要绕过的最宽那个物体决定。力和分辨率都是从它掉出来的——力臂越短两者都越好,所以这个取舍是行程,不是强度。 下载 SVG

力臂由你需要抓起的最大的东西选,力和分辨率都是从中掉出来的。如果你既要行程又要力,那就是连杆或者齿条该干的活。

第二件事:12 位的 PCA9685 给出大约 0.09° 的指令分辨率,听起来这就把问题解决了。它没有。那堵墙是舵机自己的死区和减速箱,不是脉冲源。更细的指令买到更平滑的运动,而不是更细的力——和微步买到的是跟踪而不是精度是同一个形状。

窗口,量出来

现在把两半合起来。拿一颗草莓:15 g,μ 0.6,压坏大约 3 N,而一条 30 mm 力臂上的 SG90 给出 4.11 N 连续力。在 0.9 s 内完成 250 mm 的提升中,打滑下限是 0.29 N,上限是 min(3, 4.11) = 3 N,所以力窗口是 2.71 N。除以刚度:

手指 k 窗口 对比 0.524 mm 步 能用的舵机位置数
刚性打印 PLA 手指 25 N/mm 0.108 mm 细了 5 倍 0
刚性手指加泡沫垫 4 N/mm 0.677 mm 刚好更宽 1
串联拉簧 0.8 N/mm 3.386 mm 宽了 6 倍 7
打印柔性铰链 0.35 N/mm 7.739 mm 宽了 15 倍 15
上下两幅堆叠面板。上半幅是夹持力(牛顿)对接触后钳口闭合量(毫米)的曲线,对应 0.35 牛顿每毫米的打印柔性铰链。一条笔直的斜线显示力随闭合量上升;0.29 牛顿以下一条红色带是打滑下限,3 牛顿处一条红色虚线是压坏极限,两者之间的绿色带就是可用窗口。底轴上一排短竖刻度每一个标记一个舵机步,其中十五个落在绿色带内。下半幅是一张对数轴上的水平条形图,画的是四种手指类型的可用窗口(毫米):刚性打印件 25 牛顿每毫米给 0.108 毫米,泡沫垫 4 给 0.677,串联弹簧 0.8 给 3.386,打印柔性件 0.35 给 7.739。一条竖线标出一个舵机步 0.524 毫米,只有刚性打印件那条短于它。
每一次都是同样那两堵力墙,变的只有刚度。在舵机步那条线以下,没有任何指令值落在窗口里——刚性打印手指就坐在那儿,差了五倍。 下载 SVG

窗口严格按 1/k 缩放。二十五除以零点三五是七十一,而 7.739 除以 0.108 也是七十一。这里没有任何近似,你可以在夹爪模拟器里拖动刚度滑块,看着这两个数互相反向移动。

**在一个舵机步以下,没有任何设置是能用的。**不是“难调”——是不存在落在窗口里的指令值,而任何固件改动都够不到一个。这就是你在打印手指之前最该知道的一件事。

那为什么别人的刚性夹爪能用?

因为它压根就没落在窗口里。它冲过头,然后顶在舵机自己的力上限上钉住,而那只在那个上限恰好低于物体压坏力的时候才成立。

在模拟器里用刚性手指轮换那些物体,“能用的设置”那一列每一个都是零——可六件里有四件却被握得完好:

物体 压坏极限 刚性手指下会发生什么
木块 500 N 握住——舵机钉在 4.11 N
M6 螺栓 2000 N 握住——舵机钉住
鸡蛋 30 N 握住——舵机钉住
PET 瓶 8 N 握住——舵机钉住
纸杯 4 N 压坏
草莓 3 N 压坏

舵机在扮演一个你既没设计也无法调整的离合器。它就设在 τ·0.7/L 碰巧算出来的那个值上,而比它弱的东西全被毁掉。

这带来一个真正反直觉的后果:**装一台更大的舵机会让夹爪更糟。**把堵转扭矩滑块从 SG90 往 MG996R 的方向推,那个意外存在的离合器就往上越过鸡蛋的压坏极限,于是现在你连鸡蛋也弄碎了。对“东西掉”这个问题,增大扭矩几乎和它是正确答案一样经常是错误的答案。

靠堵转保持的代价

一个顶着物体的舵机就是一个堵转的舵机。它不转,所以不产生任何机械功率,绕组吸取的每一分能量都变成了热。

  • SG90 在 4.8 V 下堵转大约吃 650–750 mA。在堵转扭矩的 70% 上,你仍然是在往一台既无风冷又是塑料壳的电机里推大约 0.49 A。
  • 它们几十秒就烫,几分钟就死。常见症状是舵机先能工作,然后变弱、发抖,再嗡嗡响着什么都不干。
  • 一颗便宜的 5 V 稳压器供着这么两三个就会欠压,害得你的单片机在抓取过程中复位。

能修它的东西,大致按花费从低到高排列:

  1. **别抓着不需要抓着的东西。**零件一放到位就立刻把夹爪张开。最常见的 bug 是状态机在整个回程里让钳口闭着一只空夹爪。
  2. **抓住之后回退一点。**果断合上,然后把指令减一两步。有柔顺在串联时你保住了大部分力;没有它你就一点力都不剩,这又是给柔顺添的一条理由。
  3. 让舵机用自己的电源供电,而不是板上的稳压器,并在附近放几百 µF。
  4. **长时间保持时加一个机械锁扣或者过中心连杆。**生产夹爪就是这么做的,而且它耗电为零。
  5. **保持一分钟后用手量一下壳温。**温热没问题。烫到你手指都放不住,说明你还剩大概一周的占空比。

把柔顺做进设计

柔顺一次解决两个问题——它打开窗口,同时把舵机从堵转钉住的状态上卸下来。拿到柔顺有四种方法,从最便宜的开始:

泡沫或 TPU 垫(k ≈ 4 N/mm)

贴一片 EVA 泡沫,或者打印一块 3–4 mm 厚的 TPU 垫。花不了钱,花五分钟,把你从零个可用设置挪到大约一个。它是最小可行的修法,但对精细活单靠它不够。

串联拉簧(k ≈ 0.8 N/mm)

把弹簧放在舵盘和手指之间,带一个槽和一根销,好让连杆吃掉行程。现在舵机指令的是弹簧的变形量,那是一个带真实容差的力指令。这就是一个用 40 便士零件造出来的串联弹性驱动器,也是整个夹爪里性价比最高的改动。

设计规则:选一个工作变形量能覆盖你窗口的弹簧(几毫米),稍微预紧一点让首次接触没有死区,再加一个硬限位,这样失控的指令不会把弹簧压并、把全部堵转扭矩照样穿过连杆。

打印柔性铰链手指(k ≈ 0.35 N/mm)

一根手指带着一段故意做薄的会弯的部分。打印时几乎免费,不用额外零件,而且给你四种里最宽的窗口。用 PETG 或尼龙打印而不要用 PLA——PLA 在持续负载下会蠕变,你的柔性件在夹着东西几周之内就会产生永久变形。

厚度是主导因素:悬臂梁的刚度按厚度的三次方走,所以 2 mm 对 1.5 mm 就是 2.4 倍。打印一条测试片,挂上已知重量,量出变形,十分钟你就有了 k。应该放进模拟器的是这个量出来的数,不是预设值。

指形桁架手指(业内称作 Fin-ray)

整根手指是一座桁架,在受力时包住物体。它同时给你柔顺和部分形封闭,这也是它在业余夹爪这一行里接管了不规则物体的原因。建模更难——有效刚度会随包覆程度变化——所以要量,不要算。

柔顺的代价

它不是免费的,值得诚实地把这个取舍摆出来:

  • **物体上的位置精度。**零件最后停在柔顺放它的地方,而不是你指令的地方。如果你的任务要求零件放到 0.2 mm 的精度,柔顺就是在跟你作对,你要的是一根配真实力感测的刚性夹爪。
  • **稳定时间。**软手指在快速移动后会振铃。合上之后加一小段停留再抬起,否则你量到的是振铃而不是夹持。
  • **蠕变。**任何塑料在持续负载下都会缓慢变形。弹簧和 PETG 柔性件在这方面比 PLA 好得多。
  • **你感觉不到物体。**柔顺让舵机自己的位置成为指尖状况的一个更差的代用指标,所以如果你想检测有没有抓到,就需要开关或传感器——见抓取搬运状态机。

打印前要有的四个数

  1. L,力臂——由最宽的物体决定。其他一切都跟着它走。
  2. k,串联刚度——量出来,在打印出的测试手指上挂重量。
  3. F_crush——量出来,用一台厨房秤和几个可以牺牲的零件。
  4. step = L·(π/180)——纯算术。

然后检查 (min(F_crush, τ·0.7/L) − F_floor)/k > step。如果不通过,你写什么固件都不会让这个夹爪工作,而修法永远是降低 k——永远不是提高扭矩。

下一步

探索关联图谱

本教程所属的搭建

包含本教程的项目和学习路线。

延伸阅读

参考资料