双臂工业机器人:阻抗与共抬
Contents
起因
这一篇欠了好几篇的债,挨个点名:抓手那篇说力控简版够用、全版阻抗留给这篇;薄执行器那篇说双臂协调不在 1kHz 层、留到这篇;翻面那节说翻面站要靠双臂流水藏时间、排法是这篇的正题;改判的时候还定过一条,五公斤以上的中件走两臂共抬,二十公斤封顶。这篇把两条臂怎么配合一次写完——它是立柱双臂这个形态的核心本领,单立柱臂干不了的活,全在这。
先把阻抗说成人话
臂默认是位置控制:让它去哪它去哪,半路碰到东西,它当没看见,照去——电流飙上去硬顶。硬工件硬碰硬还行,软包这么干,贴上去那一下就是一巴掌。
力控是另一个极端:直接控制臂输出多大的力,位置反而不那么较真。听起来对路,但全臂做纯粹的力控,要贵重传感器,而且位置没法精确,分拣的活受不了。
阻抗控制是中间的路:把臂调得像一根弹簧,弹簧的软硬可调。调硬,接近位置控制,指哪去哪;调软,碰到东西就让,输出多大的力取决于压进去多少。翻面那篇说夹住件转起来不甩,靠的是夹持力闭环;臂层面这根可调软硬的弹簧,就是同一个思路放大到六七个关节。
实现不用加任何传感器。关节模组篇写过,电机电流乘力矩常数就是输出力矩,减掉惯量和重力该出的那份,剩下的就是外力——每一毫秒都在被 1kHz 的循环看着,等于臂天生带着力觉,只是平时没人去读它。阻抗运算就放在主站的 1kHz 循环里做,几十微秒的事,预算表塞得下:根据读到的力微调发下去的目标位置,宏观上看,臂就是那根弹簧。带宽不用高,整机模态十赫兹上下,力控带宽取它的三分之一就够,两三赫兹——因为对象是软包、动作是慢活,这不是打乒乓球。
两条臂抬一个件,为什么会打架
两条臂各自位置控制,抬同一个二十公斤的件,听着各抬各的十公斤就行,实际第一天就会出事。件是硬连接搭在两个末端上的,系统变成超定的:两条臂的轨迹只要有零点二毫米的不一致——这已经是关节精度能给的最好水平——件就同时在拽这一条、顶那一条。两边都在拼命执行各自的轨迹,谁也不让,内力就这么顶出来了。轻则件被夹出印,重则电流对着飙,谐波减速器受的全是无用的内耗。这就是两条臂较劲,前面好几篇都点过名、一直没展开的那个问题。
解法就是上一节那根弹簧。两条臂都调软,轨迹那零点几毫米的微差不再硬顶,而是被两侧弹簧的压缩量吸收——内力从顶变成拖一点点,量级掉下去。件像被两根软弹簧托着的一个浮动体,微差在弹簧里消化,不在结构件里消化。
抓点跟着配合:共抬几何是躯干设计时就定了的,两臂跨距四百五十毫米,件长三百到一千二,抓点取件两端上方,力线竖直向下,不给自己添额外的力矩。二十公斤分到两条臂各十公斤,正好是单臂的额定内。
再加一道保险,用的还是两票的老办法。两臂各自用电流反推出末端的托力,两个数加起来,应该正好等于件的重量——件就那么重,多出来的力没处去,只能是在两臂之间顶着的内力。加出来的合力对、内力不超线,共抬才算正常;内力爬到警戒线,报警减速。位置规划说对齐了,电流说没较劲,两票都点头才算数。
真到一条臂出故障那一刻,不能撒手。故障臂抱闸锁住保持托力,好臂缓慢降载,把件受控地放到最近的台面上——二十公斤从半空掉下来,什么损坏责任都兜不住。失效安全那篇的原则,在共抬上的落点就是这一条。
流水才是双臂的真红利
共抬是五公斤以上那百分之几的件才用的招,日常九成以上的时间,两条臂干的不是同一个活,是流水。
立项篇说过双臂的红利不是两倍快,是流水重叠——一条臂取件的路,正好是另一条臂放件的时间。落到分拣一秒半到两秒一件的节拍上,就是单臂一个循环三四秒(取、走、放、回),两条臂错开半拍,你取我放,合下来一秒半一件。臂还是那个速度,节拍翻倍靠的是不闲着。
翻面站插进流水里才值钱。左臂把面单朝下的件放上翻面站,转身去取下一件;翻面站在那儿自己翻,不占谁的钟;右臂从站上取走翻好的件去码托。翻转那一两秒被两条臂各自的搬运路完全盖住,节拍上就是零——翻面那节说的这一下,在这里兑现。
但两条臂加上皮带口、托盘位、翻面站,就成了一堆共享资源。协调的真面目不是让两条臂动得整齐,是时间对齐加资源互斥:皮带口同一时刻一条臂用,托盘的同一格只有一条臂放。这个调度在 100Hz 规划层做——每十毫秒刷新一次两张臂的短计划,谁在什么时候用哪个资源,占用表上排队。1kHz 执行层不管这些,只管各自跟稳轨迹,外加薄执行器篇写过的那张关节空间碰撞查表——共抬的时候两末端必然贴近,查表认得这个模式,放行末端附近的区域,其余照查。
这层分工薄执行器篇定过调:100Hz 管协调,1kHz 管跟踪,两臂同拍靠分布式时钟微秒级对齐。这篇给它填上的就是占用表这一块。
手递手
第三种配合是交接:件要换方向、换抓点,比如吸着面单那面朝下放之前,得换个面吸。做法一条臂递、一条臂接,时序是真空互锁——接的臂先吸,吸住了确认,递的臂才破真空松手;接的没吸住,递的死也不松。两个真空度信号互锁,跟抓手篇的判据连成一条线,交接这个动作的验收线就一条:零掉件。
第一版其实不急着上臂对臂的直接交接,翻面站就是交接的工装版——件放上去,等于交给了工装,另一条臂再来取。静态、慢、稳。臂对臂动态交接更快,留给以后节拍真不够的时候再开,机构的接口现在就留好。
三种配合排在一起看:
| 配合 | 什么时候用 | 控制上怎么做 | 验收看什么 |
|---|---|---|---|
| 流水重叠 | 日常分拣,九成时间 | 各干各的,100Hz 层排时间片和资源占用表 | 节拍分布,看最差的百分位 |
| 共抬 | 五公斤以上中件 | 两臂对称阻抗调软,电流反推内力 | 合力等于件重,内力不超线 |
| 交接 | 翻面、换抓点 | 真空互锁,接的吸住递的才松 | 零掉件 |
别人踩过的坑
双臂协调这个题,学界和业界攒了几十年的经验,难处翻来覆去就那几条。逐条对着看,我们一条也躲不掉,但每条都已经有解,多数解法前面各篇都立过了。
头一条就是内力。双臂操作的经典综述里写得直白:两台机器人抬同一个刚性件,位置控制差个毫米级,内力就大到损坏件或者损坏机器。跟我们说的较劲是同一件事,我们零点二毫米的精度都嫌顶,毫米级更不用提。解法也同路:阻抗调软吸收微差,电流反推盯着内力,这条上面已经写透。
第二条,力和位置得混着控。纯位置硬顶,纯力控位置不准,学界的词叫力位混合控制——我们的可调弹簧就是这条的工程版答案,软硬一个参数。
第三条,臂间动力学耦合。一条臂急停的冲击,会顺着件、顺着躯干传到另一条身上,两条臂不是两个独立系统。这个坑立柱那篇就算过了:两臂反相运动的扭矩同级,躯干用闭口箱形抗,就是给它留的路。
第四条,闭链。共抬搭上手的那一瞬间,两条臂加一个件构成一个闭式运动链,有些位形附近一点小偏差就被放大成大动作,这是双臂规划里出名难缠的一段。老老实实说,这条我们不打算巧解,第一版用保守的共抬位形——抓点在件两端上方、臂身避开伸直区,规划层把奇异位形划成禁区,宁可动作笨一点。
第五条最有意思:双臂的示范数据稀缺。学界愁双臂任务的教学数据难采,比单臂难一个量级。到我们这儿这条反过来了——客户的存量视频是几万件现场录像,流水怎么错拍、件怎么歪,数据是富余。别人双臂的命门,恰好不是我们的。
还有触觉。双臂加触觉的研究到现在都不多,我们干脆不赌这个,电流就是力觉,读数慢一点但天天在读、处处在读。
顺带把上面的表格跟学界的分类对上:文献把双臂任务分成协调的和不协调的——我们的流水重叠就是不协调任务,两条臂各干各的只排队;共抬是紧协调;交接是松协调。三种模式把那张分类表填满了。
台架上怎么验
共抬的验收不靠感觉,看曲线。二十公斤的假件——配重块套个软包壳——两臂抬起来走全行程,看两条电流曲线:正常是两条平行的波,较劲一眼就看出来,两条电流对着拉、周期性荡。虚拟刚度从软往硬扫一遍,找那个位置不漂、内力最小的窗口,参数就落在那儿,写进配置表跟件重联动。
然后做失效注入:抬着走的时候手动触发一条臂故障,看好臂有没有按流程缓放,件是不是稳稳落在台面上而不是掉下来。这一下不做,前面所有安全设计都只是纸上的。
最后是流水拷机:两臂加翻面站连转二十四小时,统计每件的循环时间。看的不是平均值,是最差的百分位——黑灯车间里节拍漂一次,下游就堆一次,p99 稳住了才算稳。
接下来
到这篇,机器的身子、眼睛、手、两条臂的配合,全齐了。剩最后一篇收口:机器放到客户仓里,怎么验收、怎么维护、坏了怎么兜底——那张失效模式的表正经建起来,最坏情况的验收怎么出题,还有一对一的场景训练怎么当成售后服务长期做下去。系列从立项那句"第二万次和第一次一样"开始,最后一篇回到这句话,讲怎么证明它。
参考链接
- 本站:双臂工业机器人:立项、立柱和躯干(跨距与共抬几何、力控带宽的来历)、关节模组(电流即力觉的底子)、薄执行器(100Hz 与 1kHz 的分层)、多传感器兜底、软包抓手(力控简版与翻面站)
- Wikipedia: Impedance control——那根可调软硬弹簧的正规说法
- Dual Arm Manipulation — A Survey——双臂操作的经典综述,内力和协调分类的出处
Author 软件开发大郭
LastMod 2026-09-13