力传感器选型与标定:六维力传感器原理、选型参数、坐标系标定与重力补偿
各位同学,欢迎来到力控进阶的第二课。上一章我们聊了位置控制与力控的本质区别,今天咱们来点硬核的——六维力传感器。这东西,说白了就是机器人的「触觉神经」。没有它,你的机器人就是个盲人,只能靠视觉瞎猜接触力。
我最早接触六维力传感器是在一个打磨项目上。当时选型没经验,买了个便宜货,结果零点漂移比信号还大,调试了整整两周。嗯,从那以后,我再也不敢在传感器上省钱。
一、六维力传感器的工作原理
六维力传感器,顾名思义,能同时测量三个方向的力(Fx, Fy, Fz)和三个方向的力矩(Mx, My, Mz)。它内部通常有4到8组应变片,贴在弹性体上。
你想想看,当外力作用在传感器上时,弹性体会发生微小形变。应变片的电阻值随之变化。通过惠斯通电桥,我们把电阻变化转换成电压信号。最后经过ADC采样和解耦算法,就能得到六个维度的力/力矩值。
市面上主流的技术路线有两种:
- 应变片式:成熟、便宜、精度够用。我90%的项目都用这种。
- 电容式:抗过载能力强,但非线性严重,标定麻烦。
- 压电式:动态响应快,但无法测静态力。适合冲击力测量。
我个人习惯用应变片式。为什么?因为它的温漂特性我摸得透。电容式虽然精度上限高,但温度一变,数据就飘,你得花大量时间做温度补偿。
核心知识点:六维力传感器的本质是一个「弹性体+应变片+解耦算法」的组合。选型时别只看量程,解耦矩阵的精度才是关键。
二、选型参数——别踩这些坑
选型这件事,我见过太多人只看量程和精度。其实还有几个参数,比量程更重要。
| 参数 | 说明 | 我的建议 |
|---|---|---|
| 量程 | Fx/Fy/Fz最大可测力,Mx/My/Mz最大可测力矩 | 选实际使用值的1.5~2倍。别选太大,否则小信号分辨率不够 |
| 精度 | 通常用%FS表示,也有用绝对误差的 | 0.5%FS够用,精密装配需要0.1%FS |
| 串扰 | 一个方向受力时,其他方向的输出干扰 | 这个参数最容易被忽略!我吃过亏。串扰要小于2% |
| 采样率 | 传感器输出数据的频率 | 力控至少需要1kHz,阻抗控制可以降到500Hz |
| 过载能力 | 超过量程多少不会损坏 | 至少300%。机器人撞机时冲击力很大 |
| 防护等级 | 防尘防水能力 | 打磨抛光场景至少IP54 |
我的经验:选型时,先确定你的最大负载和动态特性。比如装配场景,力不大但需要高精度,那就选小量程高精度。如果是打磨,冲击力大,优先考虑过载能力和防护等级。
三、坐标系标定——让传感器「认识」机器人
传感器买回来,装到机器人上,你以为直接就能用?太天真了。传感器有自己的坐标系,机器人末端也有自己的坐标系。这两个坐标系之间有个旋转偏移,你得把它标定出来。
坐标系标定的本质,就是求一个旋转矩阵R和平移向量T。我常用的方法是「三点法」:
- 在传感器坐标系下,找一个已知方向施力,记录传感器读数。
- 在机器人坐标系下,同样方向施力,记录机器人读数。
- 通过两组数据,解算出旋转矩阵。
具体操作时,我习惯用最小二乘法拟合。给你看段伪代码:
// 坐标系标定 - 最小二乘法
// 输入:传感器读数矩阵 A (n x 6),机器人读数矩阵 B (n x 6)
// 输出:旋转矩阵 R (3 x 3)
1. 取力的分量:A_force = A[:, 0:3], B_force = B[:, 0:3]
2. 中心化:A_centered = A_force - mean(A_force)
B_centered = B_force - mean(B_force)
3. 计算协方差矩阵:H = A_centered^T * B_centered
4. SVD分解:U, S, V = svd(H)
5. 旋转矩阵:R = V * U^T
6. 平移向量:T = mean(B_force) - R * mean(A_force)
这里要注意,标定时的施力方向要尽量分散,别全在一个平面上。我见过有人只在一个方向施力,结果解出来的矩阵是奇异的,数据全废了。
警告:标定过程中,传感器和机器人之间不能有相对运动。如果你用的是柔性安装,标定前先把机械接口锁死。否则标定结果会引入额外的误差。
四、重力补偿——让传感器「忘记」自重
传感器装在机器人末端,它本身有重量,末端工具也有重量。这些重量在传感器上会产生一个恒定的偏置。如果不补偿,你测到的力就是「工具重力 + 接触力」的混合信号。
重力补偿的原理很简单:在无接触状态下,采集一组数据,拟合出工具的重力向量和质心位置。然后在运行时,根据机器人当前的姿态,实时减去这个重力分量。
具体步骤:
- 让机器人运动到N个不同姿态(至少3个,我一般用8个)。
- 在每个姿态下,记录传感器读数(此时无外力接触)。
- 建立方程组:F_sensor = R(姿态) * G_tool + bias
- 用最小二乘法解出G_tool(工具重力向量)和bias(零点偏置)。
这里有个坑——传感器的零点偏置会随温度漂移。我建议每次开机后先做一次「零点校准」:让机器人回到一个固定姿态,记录当前读数作为新的bias。
// 重力补偿 - 实时计算
// 输入:当前姿态的旋转矩阵 R,工具重力向量 G_tool,零点偏置 bias
// 输出:补偿后的力 F_compensated
F_compensated = F_raw - R * G_tool - bias
你看,代码就这么几行。但实际调试时,你会发现G_tool的精度直接影响补偿效果。我有个技巧:标定G_tool时,让机器人末端朝下和朝上各采集一组数据,取平均。这样能抵消一部分安装误差。
避坑指南:我曾经在一个协作机器人项目上,重力补偿怎么都做不好。后来发现是传感器安装法兰的平面度不够,导致传感器坐标系和机器人坐标系之间有微小的角度偏差。解决办法是在安装面上加了一层0.1mm的垫片。嗯,机械精度这东西,差之毫厘谬以千里。
五、知识体系总览
说了这么多,咱们用一张图来总结本章的核心逻辑。从传感器原理到选型,再到标定和补偿,每一步都环环相扣。
这张图把本章的知识点串起来了。你从传感器原理出发,理解它怎么工作的。然后根据应用场景选型,选完装到机器人上做坐标系标定。最后做重力补偿,让传感器只输出「真正的接触力」。
每一步都有坑,但只要你按流程走,力控的底层就稳了。下一章我们会聊力控的几种控制策略,到时候这些标定好的数据就能派上用场了。
公众号:蓝海资料掘金营,微信deep3321