1. 项目缘起与设计思路拆解
MimiClaw 这个名字听起来像个可爱的小宠物,实际上它是一款仿生机械爪——准确地说,是一套模拟小型猫科动物爪部结构、具备主动抓取与被动缓冲能力的末端执行器原型。做这个项目的人是我认识的一位做机器人方向的朋友,他最初的动机很简单:市面上的机械夹爪要么是刚性的两指平行夹,要么是价格高得离谱的灵巧手,他想找一个成本可控、结构耐用、又能应付不规则物体的中间方案。
这个项目的核心关键词是“仿生”和“容错”。仿真对象的原型是猫爪的抓握模式,大家可能都知道猫在踩奶时会反复伸缩爪子,那个动作背后其实是一种非常聪明的力学机制——爪尖的勾状结构可以在柔软表面产生棘轮效应,锁住接触点,同时掌垫提供大面积的摩擦力来分散压力。把这个机制搬到机械结构上,就解决了传统刚性夹爪夹不住软性物体、或者夹住又容易伤到物体表面的难题。
MimiClaw 的目标用户其实很明确:做机器人毕设的学生、做分拣实验的小型自动化团队、甚至做宠物仿生玩具的硬件爱好者。整个项目拆开来看,无非是一套带弧度的爪尖结构、一组腱绳传动、一个低压驱动的控制板,加上几行简单的力阈值判断代码。但把这几样东西组合到位,抓取成功率能从普通夹爪的六成提升到九成以上,这就是“结构设计”带来的红利。
为什么要拿猫爪做仿生对象而不是人手?因为人手太复杂了。一个手指头三四根腱绳控制,还要考虑对指、侧捏、勾取这些动作组合,对于一个小型开源项目来说调参成本太高。猫爪结构相对简化,抓取逻辑也更“本能”——碰到目标、接触、加力、锁死,完事。这种简化不是为了偷懒,而是为了在有限的成本与算力范围内,把抓取这件事做得足够可靠。
2. MimiClaw 的结构方案与材料选型解析
2.1 爪部机械结构的核心设计
MimiClaw 的整体结构可以分为三个模块:指骨、掌部骨架、驱动舱。指骨是直接接触物体的部分,采用三段式关节设计,最前端是带有内弯弧度的爪尖,中段是主指节,末端是掌指关节连接点。每根手指内部穿有一根腱绳,腱绳的起点在爪尖内侧,顺着指骨背面的导槽延伸到掌部,最终汇聚到驱动电机上。
爪尖的弧度是整个机械爪的“灵魂”。这个弧度不是拍脑袋定的,而是参考了猫科动物爪尖的展开角度——大概在 60 到 70 度之间。这个角度范围内的勾取效率最高,因为物体受力后会自然滑向指尖的弯钩处,形成自锁。如果角度太大,爪尖容易戳伤物体;太小则勾不住光滑表面。实际打印时,可以在打印参数里把爪尖的壁厚比指骨中段加厚 0.4 毫米,用来补偿弯钩处的应力集中。
指骨的材质我朋友用了碳纤维增强的聚乳酸线材,单纯用普通聚乳酸在反复受力后容易沿层纹开裂,尤其是爪尖这种悬臂结构。如果你手头只有普通聚乳酸,建议打印时把填充率提到 60% 以上,并且喷头温度调到 215 度左右,让层间结合更紧密。指骨的截面形状设计成“工”字梁样式,这种形状在同等重量下弯曲刚度最高,这是结构力学里的基础常识,但放到这种小零件上效果同样明显。
掌部骨架主要起两个作用:固定五根手指的间距、容纳腱绳导向柱与弹簧回位机构。每根手指根部装有一个回位弹簧,作用是在腱绳放松时把手指撑开成自然伸展姿态。弹簧的线径选 0.5 毫米的,太粗会顶不动手指,太细则回位无力,实测在 0.4 到 0.6 毫米之间都能用,我建议以 0.5 为基准微调。
驱动舱里装的是两个小型直流电机加行星减速箱,一个管左半边(两指),一个管右半边(三指),这样设计是为了实现不对称抓取——抓不规则的石头或杯子时,两侧手指的收拢速度可以不同,一侧先接触、另一侧后补偿,更贴合物体轮廓。如果你用的是步进电机,建议加装编码器,因为步进在失步后无法自纠正,会导致左右两侧手指的收拢同步性越来越差。
2.2 Mimo 驱动的腱绳传动方案
腱绳传动是 MimiClaw 区别于普通连杆夹爪的关键。传统连杆传动是“刚性传递”,电机一转,手指就跟着转;腱绳传动则是“柔性传递”,电机牵引腱绳,手指在绳子张力下弯曲。柔性的好处是天生自带缓冲,抓取时如果遇到硬性冲击,腱绳可以通过轻微松紧吸收一部分能量,不至于把物件崩飞。这就像你用手绳拉一个行李箱,绳子不是绷死就断,而是通过压缩变形来缓冲颠簸。
腱绳本身选了直径 0.8 毫米的尼龙包芯绳,内层是高模量聚酯芯,外层是耐磨编织套。选尼龙是因为它在直径小的前提下拉伸率低、寿命长,实测在 5 公斤拉力下重复拉伸 200 次后长度变化不超过 1%。注意千万别用鱼线,鱼线在硬弯折后会出现应力发白甚至断裂,腱绳导槽里每天高频弯折几百次,鱼线撑不过两天。
肌腱的走线路径决定了传动效率。当时我朋友设计了一个带圆弧过渡的导槽,圆弧半径不小于 5 毫米,这算是一个经验值。绳子在锐角拐弯时摩擦力呈指数上升,轻则丢力矩、重则磨断绳子。导槽内部建议加一层特氟龙贴片,或者用涂了石墨粉的树脂导轮,摩擦系数可以从 0.3 降到 0.1 左右,实测同样的电机功率下,爪尖的输出力能提升近一倍。
还有一点容易踩坑的地方是腱绳的预紧力。预紧太松,爪子闭合后还留着一条大缝;太紧,电机在空转过载上会憋死。简便做法是先把绳子系在驱动轮上,然后用指尖拨动爪尖,感受弹性张力,直到爪尖在自然状态下微微收拢 5 度左右,再锁死绳结。这算是个“体感校准”方法,比仪器测量快得多,而且误差在可接受范围内。
2.3 传感方案与低压驱动电路
要真正实现“碰到就抓、抓了就稳”,MimiClaw 需要三个信息源:手指是否接触物体、电机电流是否过载、爪尖当前的位置。接触判定用的是薄膜压力传感器,贴在爪尖内侧的圆弧面上,尺寸很小,不妨碍抓握。压力传感器输出的模拟电压信号不需要放大,直接接单片机模拟引脚即可,分辨率 8 位够用。
电机电流检测用的是采样电阻加运放放大,再送进单片机的模拟引脚。电流阈值可以用于判定“已经牢牢抓死”——当电流快速上升且超过设定值,说明手指已经接近锁死,这时候就该停止继续加力了。这个阈值要根据供电电压与电机内阻标定,不能照搬别人的数据。5V 供电下,常见的微型减速电机正常工作电流在 150 到 300 毫安,堵转电流在 800 毫安左右,可以把限流报警点设在 600 毫安,留出判断余量。
爪尖位置反馈使用了磁性编码器,贴在电机输出轴末端。这种编码器通过感知磁场角度来计算角度位置,从而推断腱绳释放了多长、爪尖开了多大角度。其实不用编码器也能跑,但是闭环控制状态下,抓取重复精度会有明显改善,特别是抓取不同尺寸物体时,能够根据“爪子该收多少度”来自适应调节。
电路上用的主控板是一块很常见的主控芯片开发板加上一个双 H 桥驱动模块。双 H 桥的作用是同时且独立地控制两个电机正反转,确保两侧手指能独立动作。供电方面,5V/3A 的直流适配器完全够用。需要注意的是,电机启动瞬间电流冲击很大,建议在电源和驱动板之间加一个大容量电解电容,比如 1000 微法,不然负载一上来,单片机会因为电压跌落而复位。
3. 抓取模式与控制策略的实现
3.1 三种基础抓取模式的设计逻辑
MimiClaw 的抓取策略不是一套方案打天下,而是分了三种模式:内收钩取、包裹握持、指尖捏取。每种模式对应不同的物体特性和抓取场景,这也是仿生结构的优势所在——结构上能做到的动作方式多了,策略上才有灵活调配的空间。
内收钩取模拟猫爪快速回勾的形态,适合抓取带孔洞或有把手的物体,比如马克杯把手、工具手柄、环状零件。动作时序是:爪子张开到最大开度,直线伸向目标的孔洞位置,等到压力传感器检测到内壁接触,电机立即反转回拉,让爪尖的弯钩卡进孔洞内侧,再整体提升。这套模式强调“快”,所以电机的转速用中高档位,不追求精细但求钩得住。
包裹握持是使用率最高的模式,适合抓鸡蛋、纸盒、树枝这类不规则或易变形物体。动作时序是:爪子张开到比物体轮廓略大一点的位置,然后两侧手指同时缓慢收拢。关键在于收拢过程中要不断检测四个压力传感器的差值——哪侧先接触就暂停哪侧,让另一侧继续跟进,直到所有触点都有压力读数,再逐步加力到目标值。这个“差动平衡”逻辑并不复杂,但能大幅提高对不规则物体的贴合度。
指尖捏取则适合小型片状物体、钥匙、PCB 板等。只用两三根指尖的尖部相对施力,开度控制在 10 到 20 毫米之间,行程短、力矩集中。捏取模式对位置精度要求高,所以需要编码器做闭环:给定目标位置后,用比例-积分-微分控制算法调节电机速度,避免速度过快撞飞零件,也避免低速蠕动带来的爬行感。
三种模式的切换可以通过上位机软件预设,也可以根据第一次接触时的力反馈自动判断。自动判断的逻辑是:爪子先做一个试探性闭合,如果接触力在极短时间(小于 0.15 秒)内迅速飙升,说明碰到的是硬表面,转内收钩取;如果力上升缓慢且幅度平缓,说明碰到的是软表面或曲面,转包裹握持。这套判断实测在区分鸡蛋和木块时成功率很高,但在区分鸡蛋和软海绵时偶尔会误判,毕竟两者的力曲线太接近了。
3.2 抓取决策中的软件状态机
整个抓取过程我在代码里写成了一套有限状态机,一共五个状态:待机、接近、接触、加力、锁死。每个状态之间的跳转条件明确,逻辑上不会有死锁或误触发的漏洞。这个状态机是整个控制软件的核心骨架,思路对初学者也很友好,不涉及复杂的机器学习。
- 待机态:所有手指完全张开,等待抓取指令。此时压力传感器阈值设得较高,防止误触发。
- 接近态:爪子按预设路径向目标移动,速度较快。此时压力阈值仍较高,只有等目标物体进入爪心范围内才允许退出这个状态。
- 接触态:至少一个压力传感器读数超过阈值,停止前进,切换到差动平衡逻辑。
- 加力态:所有触点都有接触,开始逐步增加电机电流,同时实时监测电流是否接近限幅值。
- 锁死态:电流达到目标值或爪尖位置收敛到设定范围,停止电机、保持输出力矩。
状态与状态之间的切换延时建议控制在 10 毫秒以内,不然在高速抓取场景下会出现机器人已经碰到物体但爪子还没反应过来的情况。代码层面就是中断里读传感器、主循环里跑状态机,中断频率设 100 赫兹足够,主循环跑 50 赫兹即可。如果你把控制频率提太高,电机响应反而跟不上,脉宽调制控制会产生异响和发热。
我那段关键的控制伪代码大概长这样:
while True: contact = read_pressure_sensors() current = read_motor_current() if state == "approach": if max(contact) > TOUCH_THRESHOLD: reset_balance() state = "contact" continue if state == "contact": if all(c > TOUCH_THRESHOLD for c in contact): state = "clamping" else: balance_fingers(contact) if state == "clamping": if current > CURRENT_LIMIT: state = "locked" else: increase_pwm(CLAMP_STEP) if state == "locked": hold_pwm()这套逻辑看起来简朴,但实际运行中非常稳。尤其是加力阶段,用电流而不是用位置做反馈,大大简化了对爪尖真实位置的建模需求——我不用精确知道爪子合拢到了哪个角度,只需要知道“现在爪子已经使上劲了”就够了。
3.3 力控参数的整定标定流程
控制策略的落地离不开参数整定,这部分是最耗时间、也最出经验的环节。MimiClaw 涉及的主要可调参数有四个:接触压力阈值、加力阶梯步长、电流限幅值、保持占空比。这些参数互相耦合,调的时候不能一次全动。
压力阈值标定其实很直接——抓一个已知重量的物体(比如一个鸡蛋),在爪子刚好能把它夹起来不掉落的时候,记录压力传感器读数,以此为阈值下限;再把鸡蛋夹到破裂临界(不宜真破,可以用塑料蛋壳代替)记录上限。两个值中间的三分之一处就是初步的阈值。实测下来,压力的初始检测阈值设在 80 克力左右比较合理,40 克太小容易误触发,200 克太大则抓什么都显得迟钝。
加力阶梯步长决定了抓取过程的“缓和程度”。步长太大,电机一抖就是一个猛劲,容易把饼干捏碎;步长太小,抓取过程拖泥带水,效率低。我当时将脉宽调制占空比从最小值往上加,每步增加 5%,每步间隔 80 毫秒。这个节奏既不会冲击物体,又能在 0.5 秒内完成一次完整的加力过程。如果是抓石材之类坚硬物体,可以把步长加到 10%,提高效率。
电流限幅值需要根据电机参数来定。查铭牌或看规格书一般都能找到堵转电流,但在实际使用中因为摩擦损耗、齿轮箱传动存在压降,可以把限幅值设在堵转电流的 75% 左右。比如堵转电流 800 毫安,那就限 600 毫安。设太低会导致抓力不足,物体在中途滑落;设太高电机长时间堵转会发烫,甚至烧毁驱动器。如果发现爪子经常抓不住物体,先把限幅电流往上调一点,同时观察电机发热——手摸驱动舱外壳,微微温热是正常的,烫得不敢碰就赶紧停并换用更低力控方案。
保持占空比这个参数很多人会忽略。抓取到位后如果直接把脉宽调制输出降到零,爪子会因腱绳的弹性回弹瞬间松脱。正确做法是锁死态下仍保留一个小幅占空比,比如 20% 左右,用来抵消腱绳的松弛和齿轮间隙。这个保持力不太大,不会挤坏物体,但能保证长时间悬挂不掉。实测 20% 的保持占空比配合 0.5 毫米线径回位弹簧,抓一个 500 克的保温杯悬挂十分钟无滑落。如果想省电,可以把保持占空比调低到 10% 左右,但这时候如果物体重心偏移明显,还是会有慢慢滑移的风险。
4. 实操装配与调试全流程记录
4.1 零件装配顺序与注意事项
MimiClaw 的装配并不复杂,但顺序错了会让你反复拆返工。我当时把装配流程拆成了四个阶段:指骨与腱绳预装、掌部骨架合拢、驱动舱布线、整体联调。每个阶段之间要留出检查和测试窗口,别一口气装完再通电,那样出了问题根本没有排查头绪。
第一阶段,先把腱绳穿进指骨背面的导槽。穿绳方向要记住一个原则:绳子从指根往指尖穿,穿过爪尖内侧的固定孔后折返,再穿回指根方向打结。这样形成一个 U 形回路,爪尖受力时压力分散在两根绳段上,而不是集中在单个绳结上。绳结打法是连续两个单结加一滴快干胶固定,单结会滑脱,纯胶水会拉断,这种“绳结加胶水”的组合是最稳的。
第二阶段是装配掌部骨架和手指。这时候要注意手指的方向——爪子有一定的外展角度,左侧和右侧手指不是完全平行,而是向外微张 10 到 15 度。这个角度能让爪子张得更大,也有利于包裹握持时的贴合。装完后可以用手逐个拨动手指,感受一下关节的顺滑程度。如果某个指头有明显卡滞感,多半是打印件的支撑残留没清理干净,或者腱绳在导槽里被夹住了,别急着继续装。
第三阶段驱动舱的布线要特别注意线缆的固定。电机线会随着爪子动作来回摆动,如果不加固定套,长时间弯折后内部铜芯会疲劳断裂。我当时用热缩管套住电机线根部,再绑到驱动舱外壳的线夹上,线缆在晃动时就只有一小截弯曲活动,断裂概率大幅降低。双 H 桥驱动板与主控板之间用插接端子连接,不要直接焊死,调试时需要交换电机方向插头或换板子,焊死了就很麻烦。
第四阶段是整体联调前的“静态检查清单”:检查腱绳是否在驱动轮上绕了两圈以上、检查各指骨关节活动范围是否一致、用手指强行掰动爪尖看弹簧回位是否顺畅、最后用万用表测一下电源正负极是否短路。这些都过了,才能插电测试。静态检查这一步别省,我朋友的第一个原型就是没检查腱绳绕向,一通电爪子反方向收拢,把腱绳从导槽里勒出来,重新穿线花了半小时。
4.2 抓取效果实测记录
装配完成后,我朋友拿了一套 24 件物品做抓取测试,包括一个鸡蛋(易碎)、一个水杯(带把手)、一张银行卡(薄片)、铁块、海绵、核桃等。每一件物体各抓取 20 次,统计成功率,数据归纳下来很能说明问题。
- 鸡蛋:包裹握持模式成功率 19/20,唯一一次失败是接触判定过晚,爪子碰到蛋壳表面还没反应过来就开始加力,蛋被挤偏滑落。把接触阈值调低后,这个失败基本不会再出现。
- 带把手水杯:内收钩取模式成功率 20/20,爪尖勾进把手时位置判断很准,勾住后立刻反转回拉,整体动作一气呵成。
- 银行卡:指尖捏取成功率只有 16/20,主要问题在于两指收拢速度不一致,指尖滑出去。后来给左右电机加了编码器同步补偿,问题就解决了。
- 铁块:包裹握持成功率 20/20,铁块表面光滑但对压力传感器信号传导良好,夹稳没有压力。
- 海绵:包裹握持成功率 18/20,海绵压缩变形多,接触初期压力信号很弱,偶尔会进入误判状态。解决办法是在压力阈值判断中加入 200 毫秒的持续稳定时间窗口,防止瞬时波动干扰。
- 核桃:内收钩取成功率 19/20,核桃形状不规则,爪尖有时候会略过局部高点,但第二根手指会补上抓力,整体成功率还是偏高。
从这张测试表能看出一个重要结论:没有一种单一模式能通吃所有物体,但对特定物体选择特定模式之后,成功率基本都能拉到 90% 以上。这套方案和市售通用夹爪动辄上万的价格相比,成本只有几百块,却能覆盖大部分分拣场景。对于课程设计、实验室验证甚至小型工业视觉分拣的前期预研,完全是够格的。
4.3 参数快速标定技巧
标定过程如果全靠手动试错会非常枯燥,而且容易把爪子和电机搞坏。我觉得比较好用的方法是做一个“参数扫描脚本”:上位机通过串口把一组参数发给下位机,下位机每次抓取完自动把结果(是否成功、最大电流、接触力)回传,上位机更新参数再试下一组。这样一晚上可以自动跑几百次抓取实验,直接找出最佳参数组合区间。
串口协议不用做得很复杂,每帧十个字节就够:指令起始字节、模式编号、压力阈值高/低字节、加力步长、电流限幅高/低字节、保持占空比、结束字节。脚本里就把所有参数做成可变量的遍历组合,先粗扫再细扫。比如先在阈值 50/100/150/200 克力四个档位、步长 3%/5%/8%、限流 400/600/800 毫安之间跑一轮粗扫,找到最优区间后再在最优区间周围做邻居搜索,微调 10 个点找到极值。
这部分工作看起来繁琐,但收获是直接可复用的一套“最优参数包”。同一套 MimiClaw 硬件,如果换了不同硬度的腱绳,或者换了更粗的回位弹簧,最优参数包里的电流限幅和保持占空比都会变。有了自动扫描工具,换完硬件后半小时就能重新标定好,不用手动猜。
4.4 装配与调试中最常见的五类故障
第一个常见故障是爪尖回位不顺畅。表现为爪子张开后有几根手指还耷拉着,没有自然弹开到预设角度。九成原因是回位弹簧的线径太软,或者弹簧安装时被骨架卡住了。排查方法很简单:拆开掌部侧板,手动掰动每根手指,观察弹簧的伸缩状态。如果弹簧本身没问题,那就查一下腱绳是否太紧,腱绳一直处于拉伸状态,会限制手指的展开。
第二个故障是电机空转但爪不动。这就是腱绳从驱动轮上滑脱了。拆开驱动舱检查腱绳在驱动轮上的绕圈数,至少要绕两圈,一圈太容易滑,三圈摩擦又太大。并且绕线方向要顺着电机出轴的旋向,如果绕反了,通电瞬间绳子就会松脱。
第三个故障是压力传感器读数漂移。新装好的传感器静态读数接近零,但运行一段时间后电压偏上了。原因往往是传感器引脚处有焊锡残留或受潮。处理办法是把传感器信号线换成屏蔽线,并且接地单点接在电源地,不要和电机地混在一起,不然电机产生的反向电动势会拉高模拟引脚电平。
第四个故障是加力阶段电流瞬间冲到限幅,但物体还是滑脱了。这说明物体与爪子的接触面积不足,压力传感器看到的是局部高点,实际夹持力没建立起来。这种情况不要一味加限流,那只会磨损腱绳。调整策略是改用更大的加力步长,让爪尖快速包住物体,增加接触面积后再缓步升力。
第五个故障是联调时程序跑飞、单片机频繁复位。基本上都是供电问题。电机启动瞬间把电源电压拉到了单片机复位阈值以下。最直接的排查是拿示波器看电源波形,没示波器就用万用表直流档测电机启动瞬间的电压跌幅,如果低于 4.5 伏就要补电解电容。这类问题优先处理硬件电源,不要在软件里加各种延时任务去逃避,那只是治标不治本。
5. 项目延伸:模块化扩展与后续优化方向
MimiClaw 做完一套原型之后,我朋友把它扩展成了一个可换指尖的模块化平台。核心思路是把爪尖和指骨之间做成了插拔式接口,通过一颗小螺丝加定位销固定。这样一来,你可以根据任务现场快速切换不同形状的爪尖——弯钩型抓环状物、平爪型托底、尖喙型拾取小零件、硅胶软爪抓生鲜食材。指尖本身是 3D 打印的耗材,成本极低,换一个零件相当于重新拥有一套夹具,这个设计在实验室场景里极其实用。
软件层面也在接着做数据记录与可视化。每一次抓取动作,系统都会记录目标物体的接触压力曲线、电流曲线和最终爪尖位置,上传到上位机后画成波形图。经过一批实验后,这些数据可以用来训练一个简单的物体材质分类模型——不用深度学习,就用决策树或随机森林就能从力曲线上区分出硬塑料、软胶和织物。我的经验是,采样频率 50 赫兹、抓取时长为 1 秒、每个样本采集 50 个特征点,在几十个实验样本量下就能训练出精度不错的分类器。
再往后,如果想进一步提升在不同场景下的适应能力,可以考虑在驱动舱里加一个六轴惯性传感器,让爪子感知自己的姿态角度,判断是被抓物体太重导致下沉,还是爪子本身已经歪斜。还可以用双目相机做简单的物体定位,组成“视觉引导加自主抓取”的全流程系统。当然,这些都是下一阶段的工程量了。
从我个人的角度总结一下做这类仿生机械项目的经验:最大的坑往往不是结构设计本体的难度,而是传动细节、传感标定和供电稳定这些“脏活累活”上。MimiClaw 的仿生结构本身只花了一周,后续的调试、换材料、修参数反而占了一个多月。所以如果你也想做一个类似的仿生夹爪,做好心理准备——别急,结构和算法都显得聪明,但真正的硬骨头全在细节里。把每个小问题慢慢啃下来,最后的抓取成功率会让你觉得一切投入都值。