第二章:力传感器选型与标定
2.1 六维力传感器的工作原理
六维力传感器,说白了就是能同时感知三个方向的力(Fx、Fy、Fz)和三个方向的力矩(Mx、My、Mz)。你想想看,在精密装配里,光知道一个方向的力是不够的——比如你插一个销钉,稍微歪一点就会产生侧向力,这时候就需要六维信息来判断。
我最早接触六维力传感器是在做机器人柔顺装配的时候。当时我还在想,这东西跟普通的单维力传感器有啥区别?后来拆开一个样品才明白,核心在于内部的弹性体结构。
常见的结构有两种:
- 十字梁式:四个梁上贴应变片,结构简单,但耦合较大
- 筒式结构:像个空心圆柱,刚度高,抗过载能力强
工作原理其实不复杂。当外力作用时,弹性体发生微小形变,贴在特定位置的应变片电阻值就会变化。通过惠斯通电桥把电阻变化转成电压信号,再经过解耦算法,就能算出六个分量。
核心要点:六维力传感器的精度,70%取决于弹性体设计,30%取决于解耦算法。我见过不少便宜的传感器,标称精度很高,但实际用起来一塌糊涂,问题就出在解耦矩阵没做好。
这里我画了一张原理框图,帮你理清信号流向:
2.2 选型参数——别被数据表忽悠了
选型这件事,我踩过不少坑。有一次项目赶进度,我直接照着数据表上的参数选了一款传感器,结果装上去发现噪声大得离谱。后来才搞清楚,数据表上的分辨率是在理想环境下测的,实际工况根本达不到。
选型时重点看这几个参数:
| 参数 | 说明 | 我的建议 |
|---|---|---|
| 量程 | 各方向最大可测力/力矩 | 留30%~50%余量,别卡着上限用 |
| 分辨率 | 能分辨的最小力变化 | 精密装配建议优于0.1N |
| 采样率 | 每秒输出数据次数 | 力控装配建议≥500Hz |
| 串扰 | 不同方向之间的干扰 | ≤2% FS 算合格 |
| 过载能力 | 超过量程多少不会损坏 | 至少300%,碰撞时有用 |
我的经验:选型时别只看Fx/Fz的量程,Mx/My/Mz的力矩量程往往更容易被忽略。我曾经遇到一个案例,力没超但力矩超了,传感器直接报错。嗯,这个坑我替你们踩过了。
关于采样率,我多说两句。很多人觉得采样率越高越好,其实不一定。力控系统是个闭环,采样率太高反而可能引入高频噪声。我个人习惯是:
- 力控装配:500Hz~1kHz 足够
- 碰撞检测:需要2kHz以上
- 精密力位混合控制:1kHz 是黄金点
2.3 坐标系标定——装上去之前先对齐
传感器买回来,第一件事不是接上线就用,而是标定坐标系。你想想看,传感器有自己的坐标系,机器人末端也有自己的坐标系,这两个坐标系如果不一致,你测出来的力就是歪的。
标定的核心就是求一个旋转矩阵,把传感器坐标系下的力转换到工具坐标系下。具体步骤:
- 机械对齐:用千分表打表,确保传感器安装面与机器人法兰面平行
- 零点采集:在无负载状态下采集零点偏移
- 加载标定:在已知方向施加标准力,记录传感器读数
- 计算矩阵:通过最小二乘法拟合出转换矩阵
注意:坐标系标定不是一劳永逸的。每次拆装传感器、更换工具、甚至机器人长时间运行后热变形,都需要重新标定。我见过有人一年不标定,最后数据漂了10%还在用,那装配质量可想而知。
这里给出一段标定计算的伪代码,实际项目中我常用Python配合numpy来做:
# 六维力传感器坐标系标定 - 最小二乘法
import numpy as np
# 已知施加的力(工具坐标系下)
F_known = np.array([
[10, 0, 0, 0, 0, 0], # X方向10N
[0, 10, 0, 0, 0, 0], # Y方向10N
[0, 0, 10, 0, 0, 0], # Z方向10N
# ... 更多标定点
])
# 传感器实际读数
F_sensor = np.array([
[9.8, 0.1, 0.05, 0, 0, 0],
[0.08, 9.9, -0.03, 0, 0, 0],
[0.02, -0.04, 10.1, 0, 0, 0],
])
# 求解转换矩阵 T (6x6)
# F_known = T * F_sensor
T, residuals, rank, s = np.linalg.lstsq(F_sensor, F_known, rcond=None)
print("标定矩阵 T:")
print(T)
2.4 重力补偿——别让重力干扰你的判断
重力补偿,说白了就是把传感器自身重量和末端工具重量产生的力去掉。你想想,一个2kg的夹爪挂在传感器下面,光重力就有20N。如果你不补偿,这20N会一直叠加在Z方向读数上,你根本分不清是装配力还是重力。
重力补偿分两步:
- 静态补偿:在固定姿态下,减去工具重力在传感器各轴的分量
- 动态补偿:机器人运动过程中,实时根据姿态角更新补偿值
我习惯的做法是:先让机器人走几个典型姿态,记录传感器读数,然后拟合出工具的重心位置和质量。这样不管机器人怎么动,都能实时算出重力分量并扣除。
关键公式:补偿后的力 = 传感器读数 - 重力分量 - 零点偏移
其中重力分量 = R(姿态) × G(工具重力在传感器坐标系下的投影)
这里有个容易翻车的地方——温度漂移。传感器通电后会发热,零点会慢慢漂移。我建议:
- 上电后预热15~30分钟再开始工作
- 每隔1小时自动回零一次
- 如果环境温度变化超过5℃,重新做一次重力补偿
一个小技巧:做重力补偿时,别只记录一个姿态的数据。我一般会让机器人走5~8个不同的姿态,用最小二乘法拟合,这样得到的结果更鲁棒。单点补偿看着省事,实际用起来误差很大。
好了,关于六维力传感器的选型与标定,核心就是这些。记住三个关键词:量程留余量、坐标系要对齐、重力要补偿。这三件事做好了,后面做力控装配就顺了。
公众号:蓝海资料掘金营,微信deep3321