2. 力传感器基础:力/力矩传感器原理、六维力传感器选型、传感器标定方法
各位同学,咱们今天聊聊力传感器。说实话,力控机器人能不能做好,传感器是第一步。我见过太多项目,算法写得天花乱坠,结果传感器选型就翻车了——那真是白忙活一场。
这一节,我会从原理讲到选型,再讲到标定。都是我在产线上踩过坑之后总结出来的经验。你跟着走一遍,心里就有底了。
2.1 力/力矩传感器的工作原理
力传感器,说白了就是把「力」这个物理量变成电信号。怎么变?核心就是应变片。
你想想看,一个金属块受力会变形。虽然肉眼看不出来,但贴在它表面的应变片电阻会变。我测量这个电阻变化,就能反推出力的大小。
核心公式:
ΔR/R = K × ε
其中 ΔR 是电阻变化量,R 是初始电阻,K 是应变片灵敏系数,ε 是应变。
力矩传感器呢?其实原理一样。只不过它测量的是「力 × 力臂」。我在项目中遇到过一种情况:机器人拧螺丝,力控一直报错。查了半天,发现是力矩传感器安装位置偏了,力臂算错了。嗯,这里要注意——力矩传感器的安装位置直接影响精度。
2.2 六维力传感器选型指南
六维力传感器,就是能同时测三个方向的力(Fx, Fy, Fz)和三个方向的力矩(Mx, My, Mz)。听起来很厉害,但选型时容易掉坑。
我个人习惯,选型时看四个参数:
- 量程:别选太大,也别选太小。我见过有人给3kg的机器人配了200N的传感器,结果小力信号全被噪声淹没了。一般建议:最大负载的1.5~2倍。
- 精度:看非线性度和迟滞。0.5% FS 是入门级,0.1% FS 算不错了。
- 串扰:这是个大坑。六维传感器各通道之间会互相干扰。比如你只施加了Z方向的力,结果X方向也输出了信号。好的传感器串扰 < 1%。
- 采样率:协作机器人一般需要100Hz以上。做力控打磨的话,建议500Hz起步。
| 参数 | 推荐值 | 我的经验 |
|---|---|---|
| 量程 | 负载的1.5~2倍 | 选大了信号太弱,选小了容易过载 |
| 精度 | 0.1% ~ 0.5% FS | 打磨场景建议0.1% |
| 串扰 | < 1% | 这个参数容易被忽略 |
| 采样率 | ≥ 500 Hz | 力控焊接可以低一些 |
避坑指南:我曾经选了一款便宜传感器,标称精度0.5%。结果装上去之后,温度一变化,零点漂移了2%。后来才知道,它没有温度补偿。所以——一定要问清楚有没有温度补偿。
2.3 传感器标定方法
传感器买回来,不能直接用。你得先标定。标定是什么?就是告诉传感器:「你输出的这个电压,对应多大的力」。
标定分两步:零点标定和加载标定。
2.3.1 零点标定
把传感器放在无负载的状态下,记录输出值。这个值就是零点偏移。每次开机都要做一次。我习惯在程序里写一个自动归零函数:
def zero_calibration(sensor):
# 采集100次取平均
samples = []
for i in range(100):
samples.append(sensor.read())
time.sleep(0.01)
zero_offset = np.mean(samples, axis=0)
return zero_offset
2.3.2 加载标定
用已知重量的砝码,施加已知的力。记录传感器输出,拟合出一条曲线。说白了就是找「电压 → 力」的映射关系。
我常用的方法是最小二乘法线性拟合:
import numpy as np
# 已知力值 (N)
force_known = np.array([0, 10, 20, 30, 40, 50])
# 传感器输出电压 (mV/V)
voltage_out = np.array([0.0, 0.98, 2.01, 3.02, 3.99, 5.01])
# 线性拟合
coeff = np.polyfit(voltage_out, force_known, 1)
print(f"标定系数: {coeff[0]:.4f} N/(mV/V), 偏移: {coeff[1]:.4f} N")
小技巧:标定时,砝码要轻拿轻放。我见过有人「咣」一下砸上去,传感器内部应变片都变形了。标定结果能准吗?
2.4 六维力传感器的耦合与解耦
六维传感器有个麻烦事——耦合。什么意思?就是你施加一个方向的力,其他方向也会输出信号。这不是传感器坏了,是物理结构决定的。
解耦的方法,就是做一个6×6的耦合矩阵。标定时,每个方向单独加载,记录所有通道的输出。然后求逆矩阵,用来修正实时数据。
我画了一张图,帮你理解这个流程:
你看这个流程,其实不复杂。但实际做的时候,我建议你每个方向至少加载3个不同大小的力,这样拟合出来的矩阵更准。
2.5 实际项目中的标定经验
最后分享一个我自己的案例。有一次做力控装配,传感器标定完,数据看起来没问题。但一上机器人,力控就震荡。折腾了两天,最后发现——安装面的平面度不够。
传感器安装面如果不平,拧紧螺丝的时候,传感器内部已经产生了预紧力。这个预紧力会被当成「零位」,导致整个力控系统偏移。
重要提醒:安装传感器之前,一定要用千分表打一下安装面的平面度。要求 < 0.02mm。别嫌麻烦,这一步省了,后面全是坑。
好了,力传感器的基础就讲到这里。下一节咱们聊怎么把这些传感器信号变成机器人能理解的力控指令。