3、力矩传感器与反馈:力矩传感器的类型、信号调理与滤波、传感器标定方法

好,咱们进入第三章。力矩传感器,说白了就是机器人的“触觉神经”。没有它,机器人就是个大力士,但不知道轻重。我最早接触力矩传感器是在一个协作臂项目上,当时觉得这东西不就是个高级秤吗?结果一上手,发现坑多得很。今天咱们就把这层窗户纸捅破。

3.1 力矩传感器的类型

市面上主流的力矩传感器,就两大流派:应变片式和压电式。它们原理不同,脾气也不同。

3.1.1 应变片式力矩传感器

这个最常见。原理很简单:金属受力会变形,变形会导致电阻变化。我测出电阻变化,就能算出力矩。

核心结构:

  • 弹性体(一般是合金钢或铝合金)
  • 贴在弹性体上的应变片(组成惠斯通电桥)
  • 温度补偿电路

优点:

  • 成本低,技术成熟
  • 静态测量精度高(能测恒力)
  • 线性度好

缺点:

  • 响应慢(受限于弹性体机械带宽)
  • 容易受温度影响(虽然做了补偿,但急变温还是头疼)
  • 信号微弱,需要高精度ADC
我的经验: 应变片传感器最怕“过载”。我曾经在调试时没注意限位,直接怼到硬限位,弹性体产生了塑性变形。从那以后,我每次上电前都会先检查机械限位,再检查传感器零点。

3.1.2 压电式力矩传感器

压电效应,你想想看:某些晶体(比如石英)被挤压时,表面会产生电荷。电荷量正比于压力。这就是压电传感器的原理。

特点:

  • 动态响应极快(能测高频力,比如碰撞、振动)
  • 刚度高(几乎不产生形变)
  • 不能测静态力(电荷会泄漏,信号会漂移)
注意: 压电传感器不能测恒力!如果你需要机器人长时间保持一个接触力,用压电式会慢慢漂到零。我见过有人拿压电传感器做力控打磨,结果力控精度越来越差,最后发现是电荷放大器在“漏电”。
特性 应变片式 压电式
测量类型 静态+动态 仅动态
响应带宽 0~数百Hz 数Hz~数十kHz
温度敏感性 高 低
成本 低~中 高
典型应用 力控装配、恒力打磨 碰撞检测、振动分析

3.2 信号调理与滤波

传感器出来的原始信号,说白了就是“脏数据”。噪声、漂移、干扰全混在一起。不做处理直接拿来用,你的机器人会抖得像帕金森。

3.2.1 信号调理

信号调理要干三件事:

  1. 放大: 应变片输出通常是mV级,需要放大到V级。我习惯用仪表放大器(比如AD620),共模抑制比高。
  2. 偏置调整: 把零点调到ADC的中间值,留出正负量程。
  3. 抗混叠滤波: 在ADC之前加一个低通滤波器,防止高频噪声折叠到低频。

关键参数: 信号调理电路的噪声密度要低于传感器本身的噪声。否则你就是在放大噪声,而不是信号。

3.2.2 滤波策略

我个人习惯用两级滤波:

第一级:硬件滤波(RC低通)

截止频率一般设在100~500Hz。为什么?因为机器人关节的力控带宽通常不超过50Hz,再高的频率都是噪声。

// 一阶RC低通滤波的截止频率计算
// f_c = 1 / (2 * π * R * C)
// 例如:R=10kΩ, C=0.1μF
// f_c = 1 / (2 * 3.14 * 10000 * 0.0000001) ≈ 159Hz

第二级:软件滤波(滑动平均或低通)

我常用的是指数移动平均(EMA),计算量小,实时性好。

// 指数移动平均滤波器
float ema_filter(float input, float prev_output, float alpha) {
    // alpha 越小,滤波越平滑,但延迟越大
    // 我一般取 alpha = 0.1 ~ 0.3
    return alpha * input + (1 - alpha) * prev_output;
}
避坑指南: 我曾经把滤波截止频率设得太低(10Hz),结果机器人力控响应慢得像在泥里走路。后来我悟了:滤波要“够用就行”,别过度滤波。先测一下你的噪声频谱,再决定截止频率。

3.3 传感器标定方法

标定,就是把传感器的原始读数(电压、数字量)映射到真实的物理量(牛·米)。不标定,你读到的数字就是“玄学”。

3.3.1 静态标定

这是最基础的方法。挂砝码,记录读数,拟合曲线。

步骤:

  1. 把传感器固定在标定台上
  2. 沿每个轴施加已知力矩(用砝码+力臂)
  3. 记录正反向数据(消除迟滞)
  4. 用最小二乘法拟合出系数矩阵
// 标定数据拟合(伪代码)
// 假设是单轴传感器,线性模型:力矩 = k * 读数 + b
// 输入:标定力矩数组 torque[N],传感器读数数组 raw[N]
// 输出:k, b

float k, b;
float sum_x = 0, sum_y = 0, sum_xy = 0, sum_xx = 0;

for (int i = 0; i < N; i++) {
    sum_x += raw[i];
    sum_y += torque[i];
    sum_xy += raw[i] * torque[i];
    sum_xx += raw[i] * raw[i];
}

k = (N * sum_xy - sum_x * sum_y) / (N * sum_xx - sum_x * sum_x);
b = (sum_y - k * sum_x) / N;
注意: 六维力矩传感器需要标定6×6的耦合矩阵。因为每个轴之间会互相影响。我见过有人只标定对角线,结果X轴用力时Z轴读数乱跳,这就是没做解耦。

3.3.2 动态标定

静态标定只能保证低频精度。如果你的机器人要做高速运动或碰撞检测,还得做动态标定。

方法:

  • 用已知质量的摆锤撞击传感器
  • 记录冲击响应,对比理论值
  • 修正传感器的动态模型(比如补偿谐振峰)

说实话,动态标定比静态标定难得多。我一般只在需要高动态性能时才做,比如力控打磨或装配。

3.3.3 在线标定(自标定)

有些高端传感器支持在线标定。原理是:利用机器人自身的运动,产生已知的惯性力,反推出传感器的偏差。

优点:

  • 不用拆传感器
  • 可以定期自动校准
  • 补偿温度漂移

缺点:

  • 算法复杂
  • 需要精确的机器人动力学模型
我的习惯: 每次开机先做一次零点标定(空载时记录偏移)。每周做一次静态标定(用砝码)。每月做一次动态标定(如果项目要求高)。别偷懒,标定是力控的基石。

知识体系总览

下面这张图,是我自己总结的力矩传感器知识框架。你把它理清了,后面调参就不会迷路。

力矩传感器与反馈 - 知识体系 力矩传感器 传感器类型 应变片式 压电式 信号调理与滤波 硬件滤波 软件滤波 传感器标定 静态标定 动态标定 核心逻辑: 选对类型 → 调理干净 → 标定准确 → 力控稳定 💡 我的建议:新手先从应变片式+静态标定入手 等跑通了力控,再考虑压电式和动态标定

好了,这一章的内容就到这儿。力矩传感器是力控的“眼睛”,你把它伺候好了,后面的调参才能顺风顺水。记住:选型看需求,滤波看噪声,标定看精度。这三样缺一不可。

可可精品资料库