力传感器选型与标定:六维力传感器原理、选型参数、坐标系标定与重力补偿

各位同学,咱们今天聊点实在的。做柔顺控制,力传感器就是你的「触觉神经」。没有它,机器人就是个瞎子,只能靠位置瞎蒙。我刚开始做打磨项目那会儿,就吃过这个亏——选了个量程不对的传感器,结果一开机就爆了。嗯,今天咱们就把这块彻底讲透。

一、六维力传感器的工作原理

说白了,六维力传感器就是能同时测出三个方向的力(Fx, Fy, Fz)和三个方向的力矩(Mx, My, Mz)。你想想看,机器人末端在打磨时,不光要感知往下压了多少力,还得知道侧向的摩擦力、扭转的力矩。缺一个维度,控制就瘸腿。

目前主流的技术路线有两种:

  • 应变片式:在弹性体上贴应变片,受力后电阻变化。优点是技术成熟、成本低。我在汽车零部件打磨项目中用的就是这种,稳定性不错。
  • 压电式:利用石英晶体的压电效应。优点是刚度高、响应快,适合高频动态力测量。但价格贵,而且不能测静态力——这点要特别注意。

我个人习惯,打磨抛光这种准静态或低频动态场景,首选应变片式。压电式更适合高速铣削那种冲击力大的场合。

核心知识点:六维力传感器的本质是一个「力-电」转换器。内部有多个测量桥路,通过解耦算法把六个通道的信号分离出来。你买到的传感器,厂家一般会给你一个解耦矩阵,千万别弄丢了。

二、选型参数:量程、精度、采样率

选型这事儿,我踩过的坑比你们走过的路还多。咱们一个一个说。

2.1 量程

量程选大了,信号分辨率不够;选小了,一碰就超载。我的经验公式是:

Fx/Fy/Fz 量程 = 预估最大打磨力 × 1.5 ~ 2.0 安全系数
Mx/My/Mz 量程 = 预估最大力矩 × 2.0 ~ 3.0 安全系数

为什么力矩安全系数要更大?因为打磨时,工具重心偏移产生的力矩很容易被忽略。我曾经有个项目,算好了力是50N,结果力矩超了——因为砂轮直径比预想的大,力臂长了。嗯,从那以后我力矩都留三倍余量。

应用场景 推荐力程 (Fz) 推荐力矩 (Mz) 备注
精密去毛刺 50~100 N 5~10 Nm 小负载,高精度
金属打磨 200~500 N 20~50 Nm 中等负载,注意冲击
重型抛光 500~1000 N 50~100 Nm 大负载,需考虑过载保护

2.2 精度

精度指标通常看两个:非线性误差串扰误差。非线性误差一般0.1%~0.5% FS,串扰误差最好小于2%。

你想想看,如果串扰大,你明明只压了Z方向,结果X方向也读出力来——那控制算法就乱套了。我建议选串扰小于1%的传感器,贵一点但省心。

我的小技巧:看精度别只看「精度等级」,要看实际数据手册里的「典型串扰值」。有些厂家标0.5%精度,但串扰能做到3%,这种货色我劝你直接pass。

2.3 采样率

打磨抛光的力控频率一般在100~500 Hz。传感器采样率至少要达到控制频率的2倍以上,也就是200~1000 Hz。我个人习惯留5倍余量,选1000 Hz以上的传感器。

为什么?因为打磨时的高频振动(比如砂轮跳动)会混入力信号,采样率低了,你根本看不到这些高频分量,控制就会抖。我曾经用500 Hz的传感器做打磨,结果力控一直震荡,换了2000 Hz的,问题立马解决。

三、坐标系标定与重力补偿

这部分是实操中的硬骨头。很多同学买了传感器,装上去发现读数乱七八糟——其实不是传感器坏了,是坐标系没对齐,重力没补偿。

3.1 坐标系标定

传感器有自己的坐标系,机器人末端也有自己的坐标系。你得把它们对齐。步骤很简单:

  1. 机械对齐:安装时尽量让传感器坐标系与机器人末端坐标系平行。用千分表打一下,偏差控制在0.1°以内。
  2. 软件标定:让机器人末端走几个已知姿态,记录传感器读数,通过最小二乘法算出旋转矩阵。

这里有个坑——传感器安装法兰的平面度。我曾经遇到一个案例,法兰面加工有0.05mm的翘曲,结果标定出来的旋转矩阵误差很大。后来我要求所有安装面必须磨平,平面度0.02mm以内。

警告:坐标系标定不是一次性的。每次拆装传感器、更换工具,都必须重新标定。别偷懒,否则力控精度直接打五折。

3.2 重力补偿

重力补偿的原理很简单:传感器测到的力 = 接触力 + 工具重力分量。我们只需要把重力分量减掉就行。

具体做法:

// 伪代码示例
// 1. 在无接触状态下,采集多组姿态下的力数据
// 2. 拟合出工具重心位置和重量
// 3. 实时计算重力分量并补偿

void gravityCompensation(float fx, float fy, float fz, 
                         float roll, float pitch, float yaw) {
    // 旋转矩阵 R 由姿态角计算
    // 工具重力向量在传感器坐标系下的投影
    float gx = R[0][2] * tool_mass * 9.81;
    float gy = R[1][2] * tool_mass * 9.81;
    float gz = R[2][2] * tool_mass * 9.81;
    
    // 补偿后的力
    float fx_comp = fx - gx;
    float fy_comp = fy - gy;
    float fz_comp = fz - gz;
}

注意,这里有个关键点:工具重心位置。如果工具重心不在传感器中心,还会产生额外的力矩。我一般用四点法标定重心:让机器人走四个不同姿态,联立方程求解。

实战经验:重力补偿的精度,直接决定了力控的静态误差。我做过对比,补偿前静态力误差有5N,补偿后能降到0.2N以内。所以这一步千万别省。

四、知识体系总览

下面这张图,是我自己总结的力传感器选型与标定的核心逻辑。你照着这个思路走,基本不会出大错。

力传感器选型与标定知识体系 六维力传感器原理 选型参数 标定与补偿 应变片式 / 压电式 弹性体 + 解耦算法 量程 / 精度 / 采样率 安全系数1.5~3倍 坐标系对齐 / 重力补偿 旋转矩阵 + 重心拟合 关键决策点:根据打磨力大小选量程 → 根据控制频率选采样率 → 安装后必须标定 常见错误 量程选太大导致分辨率不足 | 采样率低于控制频率2倍 | 拆装后未重新标定

这张图把整个流程串起来了。你从原理出发,确定选型参数,最后做标定补偿。每一步都有坑,但每一步也都有解法。

最后说一句:力传感器这东西,贵有贵的道理。但也不是越贵越好,关键看你的应用场景。打磨抛光这种活儿,中端应变片式完全够用。把钱省下来买个好点的滤波器,效果可能更好。


公众号:蓝海资料掘金营,微信deep3321