力传感器选型与标定:六维力传感器原理、选型参数、坐标系标定与重力补偿
各位同学,咱们今天聊点实在的。做柔顺控制,力传感器就是你的「触觉神经」。没有它,机器人就是个瞎子,只能靠位置瞎蒙。我刚开始做打磨项目那会儿,就吃过这个亏——选了个量程不对的传感器,结果一开机就爆了。嗯,今天咱们就把这块彻底讲透。
一、六维力传感器的工作原理
说白了,六维力传感器就是能同时测出三个方向的力(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 坐标系标定
传感器有自己的坐标系,机器人末端也有自己的坐标系。你得把它们对齐。步骤很简单:
- 机械对齐:安装时尽量让传感器坐标系与机器人末端坐标系平行。用千分表打一下,偏差控制在0.1°以内。
- 软件标定:让机器人末端走几个已知姿态,记录传感器读数,通过最小二乘法算出旋转矩阵。
这里有个坑——传感器安装法兰的平面度。我曾经遇到一个案例,法兰面加工有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以内。所以这一步千万别省。
四、知识体系总览
下面这张图,是我自己总结的力传感器选型与标定的核心逻辑。你照着这个思路走,基本不会出大错。
这张图把整个流程串起来了。你从原理出发,确定选型参数,最后做标定补偿。每一步都有坑,但每一步也都有解法。
最后说一句:力传感器这东西,贵有贵的道理。但也不是越贵越好,关键看你的应用场景。打磨抛光这种活儿,中端应变片式完全够用。把钱省下来买个好点的滤波器,效果可能更好。
公众号:蓝海资料掘金营,微信deep3321