六维力传感器第一次出现在我工位上的时候,我以为这就是个稍微高级点的称重传感器,直到我把一个200克的工件放在它的Z轴上,看到Fx、Fy甚至Mz也跟着一起跳,我才意识到这东西没我想的那么简单。后来做机器人恒力打磨项目,为了把传感器数据从“能读出来”变成“能用得上”,我花了不少时间在校准、安装和排障上面。这篇文章就把这条路重新走一遍,从物理原理讲清楚六个分量到底在测什么,到校准矩阵怎么标定,再到日常使用中的滤波、温漂和典型故障排查,按照我从踩坑到理顺的真实顺序来写。无论你准备把六维力传感器接到机器人末端做力控,还是买来放在试验台上做测量,这篇内容应该能帮你少走几段弯路。
1. 六维力传感器到底在测什么:六个分量的物理含义与信号来源
1.1 六个通道分别是什么,工程上什么时候会用到
六维力传感器,顾名思义,一次能测量三维空间的完整力信息:三个正交方向的力分量Fx、Fy、Fz,以及绕这三个轴的力矩分量Mx、My、Mz。用中国机器人行业的习惯说法,就是“三力三矩”。
这些分量在工程里都是实实在在的需求:
- Fz最常见,打磨、压装、装配时主要靠它判断接触力大小。
- Fx和Fy用于判断侧向摩擦力、拖动示教时的推力方向。
- Mx和My是最有用的力矩分量。机器人末端带着长工具时,工具自重会在Mx、My上产生明显读数,通过这个值可以推算工具重心位置和姿态变化,力控算法也靠它来判断接触姿态是否偏斜。
- Mz则是拧螺丝、旋转插拔场景中的核心反馈量。
我见过不少第一次用六维力传感器的人,只盯着Fz看,其他通道的数值变化完全不在意。实际上,六个通道是耦合的整体,只看单轴数据会在力控调试时错过非常重要的故障线索。
1.2 传感器内部是怎么把力变成数字的
目前工业现场最主流的六维力传感器仍然是应变式方案,其内部结构可以理解为三个层次。
第一层是弹性体。一整块金属(通常是高强度铝合金或不锈钢)被加工成特定的结构形式,常见的有十字梁结构、柱式结构和并联双梁结构。当外力作用在传感器上时,弹性体会发生微米级的形变。
第二层是应变片。弹性体上按特定位置粘贴着多组电阻应变片。当弹性体形变时,应变片也跟着拉长或压缩,它的电阻值就会发生变化。每组应变片按惠斯通电桥方式连接,将微小的电阻变化转换为电压变化。
第三层是信号调理电路。这部分的模拟电压信号非常微小,一般需要经过放大、滤波后,再由ADC转换为数字信号。传感器内部如果有处理器,会直接输出经过标定矩阵换算后的物理量,也就是我们最终读到的力和力矩数值。
这里有一个很重要的认知:你读到的Fx、Fy这些数值,并不是哪个应变片直接测量出来的,而是传感器厂家事先通过标定实验得到的矩阵,把原始电压信号换算出来的结果。理解这一点,就能明白为什么传感器使用一段时间后数值会变,也就能理解为什么校准不只是开机调零那么简单。
1.3 六个分量之间天然存在耦合,校准就是为了处理它
所谓“耦合”,就是当你只往某个方向施加力时,其他方向的通道也会产生读数。例如,竖直向下压传感器顶面时,理论上应该只有Fz有读数,但实际上Fx、Mx这些通道都会出现或多或少的输出。
耦合的根本原因有两个。第一,弹性体的应变片粘贴位置不可能绝对理想,机械结构加工和贴片都存在误差,某方向的形变很难只被该方向的应变片唯一检测。第二,实际加载时力作用点也不可能完全落在坐标原点,力臂的存在必然产生附加力矩。
耦合问题不可能靠传感器硬件完全消除,只能靠校准数据在软件层面补偿。所以校准的实质,就是建立“六个输出分量”和“六维实际载荷”之间的映射关系。这个映射关系在理想情况下是一个对角矩阵,但在现实中是一个满矩阵,对角线附近的数值最大,其他位置就是耦合系数。
2. 选型与安装阶段就会埋下的坑:校准前必须确认的硬条件
很多人拿到传感器第一件事就是下载驱动、读数据,等到数据不对了才开始回头看安装,这是本末倒置。我踩过几次坑之后总结了一条经验:传感器校准好不好,不取决于校准手法,取决于传感器怎么装的。
2.1 量程选择的实际计算方法
六维力传感器每个通道都有额定容量,比如常见的“Fz 500N,Fx/Fy 500N,Mx/My/Mz 20Nm”,这意味着每个通道不能超载。选型时不仅要看静态力,还要考虑动态冲击和惯性力。
以一个简单的打磨场景为例:末端工具加工件总重2kg,法兰到工件接触点的力臂是0.3m,那么工具重力在Mx或My上产生的力矩为:
- 重力 = 2×9.8 = 19.6N
- 力矩 = 19.6×0.3 = 5.88Nm
如果标称力矩是10Nm,看起来有近40%的余量,但打磨过程中接触点的反作用力会产生额外的力矩,加上机器人加减速的冲击,5.88Nm的静态值很可能会瞬时冲到8Nm以上。所以我一般建议按最恶劣工况计算,留出不低于1.5倍的安全系数。比如静态计算值是5.88Nm,就选一个额定力矩至少10Nm的型号,有余力的情况选20Nm更稳。
2.2 安装刚性:比想象中更容易出问题的环节
六维力传感器对安装刚性的敏感程度远超普通传感器,原因是它测的是微应变,任何连接面的松动、变形都会直接叠加到读数上。
安装时必须注意三个细节:
第一,法兰接触面必须平整干净。法兰面如果有毛刺、油漆或异物,螺栓拧紧后传感器壳体就会处于一种“内应力扭曲”的状态,这种应力会表现在零偏上,而且每次都不同,校准调零后也无法彻底消除。
第二,螺栓等级和预紧力不能随意。传感器法兰上的安装孔位,一般推荐使用12.9级高强度螺栓,用扭矩扳手按厂家给出的预紧力矩分多次对角拧紧。不要图省事用普通8.8级螺栓,更不要用电动扳手一下打到头。
第三,传感器与工具之间要尽量避免增加柔性过渡结构。有些人为了方便接线,在传感器和夹具之间加了一块亚克力板或3D打印件,这在静态测量里也许能凑合,在动态力控里就是一场灾难。3D打印件的蠕变和弹性变形会让传感器读数漂移得面目全非。
我这里给你一个我常用的检查方法:传感器安装完成后,不施加外力,观察各通道读数是否稳定。如果某个通道数值缓慢漂移,先怀疑安装刚性,不要急着做软件滤波。
2.3 电源、接地和通讯准备
电气层面的准备同样会影响校准效果。六维力传感器的模拟输出级对供电质量比较敏感,一个纹波明显的开关电源会让原始信号叠加周期性干扰,校准完的矩阵再准也救不回来。
我实际项目里的经验是:
- 使用独立的线性电源或高品质低纹波开关电源给传感器供电。
- 传感器信号线要远离伺服电机动力线和变频器输出线,至少保持20cm以上的间距。
- 线缆屏蔽层要在控制器端单点接地,不要两端都接,避免形成地环路。
- 如果传感器走以太网或RS485通信,要注意控制器端的通信参数和传感器出厂默认参数必须一一对应。
这些基础问题看起来和“校准”没关系,但它们恰恰是导致传感器永远调不好的最常见原因。
3. 校准的核心原理:零漂、灵敏度与轴间耦合的数学模型
这一节是全文的“原理核心”,我尽量用工程语言把校准这东西讲透,你看完就会明白厂家出厂校准报告上那些数字到底是什么意思,自己动手校准时又该怎么下手。
3.1 先建立统一坐标系
校准的第一步是约定坐标系。六维力传感器一般以安装法兰面的中心为原点,X、Y、Z方向按传感器壳体上的标记为准。同一颗传感器装在不同的设备上,坐标系相对于机器人基坐标的方向完全可能不同,所以在校准之前,先用手册确认传感器的坐标轴方向,再决定砝码加载的方向。
这一步看起来不起眼,但实际项目建设两个实例:方接上去直接沿用厂家给的矩阵,但安装角度转了90度,导致力控方向反了。之后即使单独找传感器本身数据不受损。
3.2 传感器的输入输出模型:标定矩阵是怎么回事
先写一个简单的数学模型。设传感器六个硬件通道的原始输出为向量U(六维),实际作用在传感器上的六维力/力矩为向量F(六维)。理想情况下,两者是线性关系:
U = C × F
这里C是一个6×6的标定矩阵,C的每个元素表示某个通道对某个载荷分量的灵敏度。严格来说,这就是传感器的“传递函数”。
校准的任务,就是通过一系列已知载荷F(校准实验中的砝码重力、力臂长度等都是已知量),同时记录传感器的原始输出U,然后反解出矩阵C。用矩阵的话说,把多次实验的U和F并列成矩阵,然后做伪逆运算:
C = U × pinv(F)
得到C的过程,就是校准。厂家出厂时做过的就是这个事,只不过他们用的是更严谨的多点加载和更高精度的加载设备。
需要特别说明的是,矩阵C的非对角线元素,就是通道之间的耦合系数。如果某一个耦合系数很大,比如Fz方向的力在Mx通道上产生了显著输出,说明传感器的结构设计存在较明显的交叉敏感,必须在后续计算中通过矩阵求逆来补偿。
3.3 零漂校准:为什么不能只依靠软件清零
零漂的概念很直白,即无载荷时传感器读数不为零。零漂来源主要有三个:
- 应变片桥路的不完全对称,导致初始电压非零;
- 传感器安装时法兰连接应力引起的偏置;
- 温度变化导致桥路各臂电阻变化率不一致。
工程上有人图省事,直接在控制器里把当前读数当成“零点”减去,这样做在实验台上可能管用,但在实际工况里非常危险。因为硬件零漂会随温度、随负载历史而缓慢变化,如果你在某个带载荷状态下做了软件清零,之后传感器的所有数据都会带一个错误偏置。
正确的做法是:在传感器自由状态、无外力、无安装应力的情况下,采集一段时间的原始输出,取平均值作为零点,然后将这个零点存入传感器或控制器。每次正式测量前,也建议先做一次“空载检查”,确认零点没有发生明显偏移。
3.4 灵敏度校准:单点加载和多点线性拟合
所谓灵敏度,就是每个通道输出值对对应载荷的变化率。校准灵敏度通常采用分级加载法,比如Fz方向依次加载传感器满量程的20%、40%、60%、80%、100%,记录每个载荷点下的输出值。
理想情况下得到一条过原点的直线,斜率就是灵敏度。现实中由于弹性体的非线性、应变片的非线性等因素,曲线略微弯曲。这时候如果采用单点校准,误差会比较大;采用多点校准并做最小二乘线性拟合,可以把非线性误差分散到整个量程里。我在实际操作中至少取5个载荷点,再多如7点或9点更好。
3.5 轴间耦合:最容易忽略却直接影响精度的项
轴间耦合标定听起来高深,操作上其实并不复杂。你在加载Fz方向的力时,同时记录所有六个通道的输出。理论上只有Fz通道有反应,但实际上其他通道也会有值。把这些值记录下来,除以Fz的加载值,就得到了矩阵C中对应列的耦合系数。
耦合标定的质量,直接决定了传感器测量多方向合力的精度。比如你拿传感器做斜向力测量,期望的测量误差会因耦合补偿的好坏产生天壤之别。
4. 手把手校准操作流程:从初始化到逐轴加载验证
这一节走完整流程,每一步我会写清楚为什么这么做,而不只是告诉你“怎么做”。
4.1 校准前的现场准备
开始校准之前,先把以下条件全部确认好:
- 传感器已正确安装,法兰面清洁、螺栓达到规定扭矩;
- 传感器已通电预热至少10分钟,让内部桥路温度稳定;
- 确认控制器能正常读取传感器的原始输出值(不是经过标定处理后的力值);
- 准备一组经过校验的砝码,尽量使用标准砝码,不要用来源不明的铁块;
- 准备一根刚性好的加载杆,用于施加力矩,杆件长度需要精确测量;
- 记录当前环境温度,温度变化大的环境下需要额外注意。
我个人的习惯是先把所有准备工作列成一张检查表,逐项打勾确认。因为校准过程很繁琐,中间一旦中断,前面所有数据可能全部作废。
4.2 静态零点标定
零点标定是所有标定的基础,顺序不能倒。
操作步骤:
- 传感器完全自由状态,不要连接任何工装;
- 确认法兰面水平,不要让传感器受重力以外的载荷;
- 连续采集各通道输出至少1000个样本,计算平均值;
- 将平均值作为零点存储在控制器中。
这里有个细节:采集样本时不要只看平均值,还要看标准差。如果标准差明显偏大,说明环境振动或电磁干扰严重,这时候硬做取消零校准,后续也不会有好结果。先排查干扰源,再回来做零点。
4.3 逐轴加载标定:力和力矩的施加方法
力和力矩的标定方法不同,这里分开说。
力的标定方法:
将一个定滑轮安装在校准台架上,让砝码通过拉绳对传感器施加水平方向的力,这样可以只产生Fx或Fy方向的分力,不会因为重力自然方向而引入Fz的叠加。当然更简单的做法是用砝码直接压顶面和垂直加载Fz,但刻我在做Fx/Fy校准的时候,通常用定滑轮导向法,确保力方向与传感器坐标轴一致。
以Fz方向为例的加载步骤:
- 记录零载荷状态下的六个通道输出;
- 在传感器顶面中心放上第一个砝码,例如1kg,稳定后记录六个通道的输出;
- 逐步增加到2kg、3kg、4kg、5kg,每个点保持载荷稳定至少3秒再记录;
- 到达最大载荷后,逐级卸载,每个卸载点也记录一次;
- 重复上述过程两次,观察重复性。
力矩的标定方法:
力矩的施加需要借助力臂杆。将一根刚性杆固定在传感器法兰上,已知力臂长度L,在杆端悬挂砝码,砝码重力G产生的力矩为M=G×L。
例如:力臂杆长度0.4m,挂上2kg砝码,则力矩M = 2×9.8×0.4 = 7.84Nm。如果要标定Mx,就沿Y轴方向加载;要标定My,就沿X轴方向加载。
加力矩时还要注意俯仰角问题,力臂杆必须保持水平,否则实际施加的力矩值有误差,我在实际操作中都是用水平尺确认的。
4.4 标定数据的处理:得到标定矩阵
把加载记录表拿到上位机上做处理。以我常用的Python处理为例,数据处理的核心就是伪逆求解:
import numpy as np # U是原始输出矩阵,行数为加载点数量,列数为6个通道 # F是实际加载力/力矩矩阵,行数与U相同,列数为6个分量 # 求解标定矩阵C,使得U = F @ C C, residuals, rank, sv = np.linalg.lstsq(F, U, rcond=None) print("标定矩阵C:") print(C)求解完成后,还要做残差分析,看看每个加载点拟合得好不好。残差过大,说明加载过程中可能出现了砝码没放稳、力臂杆变形等问题,需要重新校准。
4.5 校准验证:用斜向载荷检验整体精度
矩阵求出来了,不代表校准完毕。验证这一步特别重要,我建议用一个独立的验证实验来测试整体精度。
具体做法:在传感器顶面上固定一个刚性圆盘,在圆盘上放一个已知重量的砝码,但砝码位置偏离中心一段已知距离。这样Fz和Mx(或My)同时都有激励。比较传感器实测值(读取经过标定矩阵换算后的数据)和理论计算值之间的偏差。
验证合格的判定标准,一般要求相对误差在1%以内,测量精度要求高的场景则要求0.5%以内。如果验证误差偏大,先检查加载过程有没有问题,再检查标定数据处理是否有误,不要轻易断定传感器坏了。
5. 日常数据使用中的隐含细节:滤波、限幅和温漂补偿
校准完成并验证通过后,传感器就可以投入使用了。但“校准好”和“用好”之间还隔着一层窗户纸,这层纸主要是数据处理策略。
5.1 滤波策略:时域滤波和滑动平均的选择
六维力传感器的原始数据,即便校准完美,也会带有一定的高频噪声。机器人末端力控场景中,这些噪声可能来自电机振动、传动机构共振和结构振动。
滤波方法选择上,我个人的经验是先用滑动平均滤波做预处理,窗口大小根据控制周期来定。比如控制周期是2ms,滑动平均窗口取5个点,相当于10ms的滞后,这是力控可以接受的。不要直接用一阶低通滤波器把频带压得很低,相位滞后会让力控环路变得迟钝。
更进阶的做法是结合机器人运动状态做前馈补偿。比如机器人快速运动时,传感器会检测到工具自身的惯性力,这个惯量是传感器坐标系下的质量属性矩阵。通过机器人加速度信息做前馈计算,可以从传感器读数中扣掉惯性力分量。这个功能我在高速打磨项目里实测过,能显著降低误触发率。
5.2 限幅和超载保护
六维力传感器是精密器件,机械过载的损伤往往是不可逆的。很多传感器的许用过载只有额定量的1.5到2倍,一旦冲击力超过这个值,弹性体可能发生永久变形。
软件层面的保护非常重要:在上位机里设置每个通道的报警阈值和硬限幅阈值。当读数接近报警阈值时,输出警告;超过硬限幅时,机器人控制程序立刻停止运动。千万不要指望机械限位块能保护传感器,很多意外都是在限位块还没来得及起作用时就已经冲击到传感器了。
5.3 温漂补偿:精度要求高时绕不开的话题
应变式六维力传感器的温漂是客观存在的,一般规格书中会标明零漂指标,比如0.03% FS/°C。这意味着温度变化10°C,零点可能漂移满量程的0.3%。对于满量程1000N的传感器,那就是3N的零漂——在精密力控场景下,这个误差足以影响判断。
温漂补偿的实用方法有三种:
- 结构上保证传感器在恒温环境中使用,这显然只能用在实验室。
- 利用传感器内部的温度传感器信号,做一个温度-零点补偿曲线。
- 在使用前自动检测零点偏移。部分传感器支持在线归零,在机器人回到固定位置时自动记录当前零点并更新。
我目前项目里采用的做法是第三种:每次机器人回到Home位且工具处于自由状态时,自动采集100个样本,更新零点偏移。这个方法不需要额外硬件,代码也很简单,但效果立竿见影。
6. 常见故障排查完整链路:从异常读数反推根因
这段是很多人关心的“附常见问题排查”。放在全篇最后,因为它需要前面所有内容作为背景知识。理解了校准原理和误差来源,排障就是在做减法。
6.1 排查逻辑的正确打开方式
遇到传感器数据异常,不要直接怀疑传感器坏了。我总结的排查顺序是:
- 先看环境:机械结构有没有松动?线缆有没有被压到或拉拽?供电电压稳不稳定?
- 再看原始数据:通过厂家软件读取原始AD值,看是否饱和、是否跳变。
- 然后看标定信息:当前使用的标定矩阵是否和传感器型号匹配?安装方向有没有变化?
- 最后才怀疑传感器硬件本身。
记住这个顺序,因为大多数“传感器故障”实际上是“环境故障”或“配置故障”。我处理过几个现场问题,最后都发现是线缆破损或地线松动造成的。
6.2 故障现象:零点漂移特别大
可能原因:安装应力变化、温度变化、传感器内部应变片老化或脱落。
排查链路:
- 拆除工装,让传感器恢复自由状态,对比零点是否恢复正常。如果恢复,问题出在安装应力上,检查法兰面是否清洁、螺栓扭矩是否均匀。
- 如果不恢复,看温度变化记录。如果环境温度比上次校准时变化超过10°C,先做温度补偿或重新标定零点。
- 如果温度正常但漂移依然存在,用万用表测量传感器的桥路输出电阻,和出厂值对比。如果阻值偏差大,基本可以判断应变片出现了问题,需要返厂维修。
6.3 故障现象:读数周期性波动或跳变
可能原因:电磁干扰、连接器接触不良、接地回路。
排查链路:
- 观察波动频率。如果和某个电机的转速频率一致,优先怀疑电机动力线对信号的串扰,把传感器线缆移到更远位置。
- 晃动传感器线缆,看读数是否明显变化。如果变化,检查连接器是否锁紧,插针是否氧化。
- 断开控制器到传感器的通讯线,用厂家独立软件读取数据,如果此时数据稳定,问题出在控制器侧的地环路或接地设置。
6.4 故障现象:校准之后误差依然很大
可能原因:标定加载方式不正确、力臂测量不精确、传感器坐标轴方向搞混、标定矩阵计算有误。
排查链路:
- 回看校准数据,检查各加载点的残差。如果某一点残差特别大,那一点的数据大概率是废的。
- 重新确认力臂长度:是0.400m还是0.405m,5mm误差在短力臂下会造成1%以上的力矩误差。
- 检查验证实验的计算过程。我之前发现过验证失败是因为忘记了砝码自身重力,而错用了质量克数直接当牛顿数来用。
6.5 故障现象:输出值整体偏小或偏大,但线性度正常
可能原因:供电电压偏差导致灵敏度变化。
排查链路:
应变式传感器的电桥输出和供桥电压成正比,如果供电电压比额定电压低了5%,输出也会相应低约5%。这一步先确认电源电压,再考虑重新校准。多数传感器要求供电稳定在±1%以内,电源选型千万别省。
6.6 故障排查对照表
| 故障现象 | 优先检查项 | 常见根因 | 处理建议 |
|---|---|---|---|
| 零漂偏大 | 装配应力、温度 | 法兰面不洁、温差大 | 清洁法兰、重新装配、更新零点 |
| 读数跳变 | 线缆、干扰源 | 连接器接触不良、动力线串扰 | 重新插拔、更换线缆、重新走线 |
| 校准后误差大 | 加载方式、力臂长度 | 加载方向不对、力臂测量误差 | 重新标定、仔细复核加载记录 |
| 整体比例偏差 | 供电电压 | 电源电压偏低 | 稳定供电,必要时重新标定 |
| 单通道异常 | 硬件通道 | 应变片故障或电路损坏 | 返厂维修 |
7. 几个我踩过之后想提醒你的实操细节
最后这部分不按章节逻辑走,只讲几个我在项目里踩过、别人文档里很少写清楚的细节。
第一个是关于“重新校准”的时机。很多人认为传感器出厂校准终身有效,实际上传感器一旦经历过冲击载荷、温度剧变、拆装更换,原来的标定矩阵很可能已经不再准确。我的习惯是:传感器每经历一次拆卸重装,至少做一次零点校准和验证实验;每半年做一次完整校准;如果出现碰撞或过载事件,立即做一次完整校准。
第二个是关于砝码的保管。校准用的砝码必须定期送计量部门校验,因为砝码表面磨损、吸附灰尘都会造成质量偏差。一个5kg标准砝码只要锈掉一点点,误差就可能超过0.1%,对高精度校准来说已经不可忽略。砝码最好放在干燥密封的环境中,拿取时戴手套,不要用手直接抓。
第三个是关于标定数据的备份。传感器厂家的标定矩阵、你自己做的零点和校准数据,一定要保存在多个地方。我遇到过控制器更换导致标定文件丢失的情况,由于当时没有备份,不得不把停机时间用来重新校准整个传感器。从那以后,每颗传感器的标定数据我都会同时在控制器、上位机和生产系统的数据库里各存一份,并标注好传感器序列号和对应的安装方向。
校准和使用六维力传感器,说到底是态度问题。传感器数值是精准还是漂移,大多数时候不是传感器本身决定的,而是使用它的环境和流程决定的。把这些基本功打扎实,后续的力控算法才能站在可靠的数据地基上。