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的耦合矩阵。标定时,每个方向单独加载,记录所有通道的输出。然后求逆矩阵,用来修正实时数据。

我画了一张图,帮你理解这个流程:

六维力传感器标定与解耦流程 1. 零点标定 记录无负载输出 2. 单方向加载 Fx, Fy, Fz, Mx, My, Mz 3. 构建耦合矩阵 6×6 矩阵 4. 求逆矩阵 解耦矩阵 5. 实时解耦 原始数据 × 解耦矩阵 6. 输出真实力/力矩 Fx, Fy, Fz, Mx, My, Mz 标定完成后,每次上电只需做步骤 1(零点标定)和步骤 5(实时解耦) 注意:耦合矩阵会随温度变化,建议每 4 小时重新标定一次

你看这个流程,其实不复杂。但实际做的时候,我建议你每个方向至少加载3个不同大小的力,这样拟合出来的矩阵更准。

2.5 实际项目中的标定经验

最后分享一个我自己的案例。有一次做力控装配,传感器标定完,数据看起来没问题。但一上机器人,力控就震荡。折腾了两天,最后发现——安装面的平面度不够

传感器安装面如果不平,拧紧螺丝的时候,传感器内部已经产生了预紧力。这个预紧力会被当成「零位」,导致整个力控系统偏移。

重要提醒:安装传感器之前,一定要用千分表打一下安装面的平面度。要求 < 0.02mm。别嫌麻烦,这一步省了,后面全是坑。

好了,力传感器的基础就讲到这里。下一节咱们聊怎么把这些传感器信号变成机器人能理解的力控指令。


专注资料整理