2. 力学基础
六维力传感器之所以被称为“六维”,是因为它同时测量三个方向的力与三个方向的力矩。要真正读懂传感器输出、正确安装标定、并在机器人控制中用好这些数据,必须先建立一套统一的力学语言:力与力矩如何用矢量表示,不同坐标系之间如何变换,静力平衡如何约束测量结果,以及力旋量如何把力与力矩统一成一个整体。本节围绕这四个核心概念展开,并说明它们在机器人腕部力觉中的实际意义。
一、力与力矩的矢量表示
力是矢量,既有大小又有方向,还依赖作用点。在三维空间中,力通常表示为 F = [Fx, Fy, Fz]ᵀ,单位是牛顿(N)。力矩描述力使物体绕某轴转动的趋势,表示为 M = [Mx, My, Mz]ᵀ,单位是牛·米(N·m)。力矩不是独立于力的量,它由力与力臂共同决定:
M = r × F
其中 r 为从参考点到力作用点的位置矢量
|M| = |r|·|F|·sinθ
这里的关键是“参考点”。同一个力,相对于不同参考点会产生不同的力矩。六维力传感器内部通常以传感器坐标系原点为参考点,因此安装位置、工具重心、负载偏心都会直接影响力矩读数。理解这一点,是后续做重力补偿和负载辨识的前提。
二、坐标系变换:从传感器到机器人基座
传感器测量的是自身坐标系下的六维量,而机器人控制往往需要基座坐标系或工具坐标系下的量。因此必须进行坐标变换。三维空间中的变换包括旋转和平移,常用齐次变换矩阵表示:
T = [ R p ]
[ 0 1 ]
R:3×3 旋转矩阵,描述姿态
p:3×1 平移矢量,描述位置
对于力与力矩,变换规则与普通点不同。若已知传感器坐标系 S 下的力 F_S 和力矩 M_S,要变换到基座坐标系 B,需要同时考虑旋转和平移:
F_B = R_BS · F_S
M_B = R_BS · M_S + p_BS × F_B
注意第二项 p_BS × F_B:平移会引入附加力矩。这正是为什么传感器安装法兰的偏移量必须精确标定。若忽略这一项,机器人做力控时会出现明显的力矩偏差,尤其在末端负载较大时更为突出。
三、静力平衡:传感器读数的物理约束
当机器人末端静止或匀速运动时,工具与负载处于静力平衡状态。此时传感器测得的力与力矩,等于负载重力、外部接触力以及惯性力(若忽略动态项)的合力与合力矩。静力平衡条件为:
ΣF = 0 → F_sensor + F_gravity + F_external = 0
ΣM = 0 → M_sensor + M_gravity + M_external = 0
在机器人腕部力觉中,最常见的应用是重力补偿:机器人空载时,传感器读数并非零,而是工具重力在传感器坐标系下的投影。通过静力平衡模型,可以估计工具重力 G 和重心位置 r_c,从而在后续测量中扣除重力影响,得到真实的外部接触力。
静力平衡的工程意义:它把“传感器读数”与“真实外力”联系起来。没有静力平衡模型,六维力传感器只能输出原始电压对应的六维量,无法直接用于力控。
四、力旋量及其在机器人中的应用
力旋量(Wrench)是把力与力矩统一成一个六维矢量的数学工具:
W = [F; M] = [Fx, Fy, Fz, Mx, My, Mz]ᵀ
力旋量的价值在于:它可以在不同坐标系之间用统一的变换矩阵进行传递,并且满足功率对偶关系。在机器人学中,力旋量常用于:
- 雅可比矩阵转置映射:关节力矩
τ = Jᵀ · W,把末端力旋量映射为关节驱动力矩; - 阻抗/导纳控制:以力旋量为输入,计算机器人末端应产生的位移或速度修正;
- 装配与打磨:同时控制接触力和力矩,实现柔顺插入或恒力跟踪;
- 碰撞检测:监测力旋量突变,判断是否发生意外接触。
| 概念 | 数学表示 | 物理含义 | 机器人中的典型用途 |
|---|---|---|---|
| 力矢量 | F = [Fx, Fy, Fz]ᵀ | 推拉作用,与参考点无关 | 接触力检测、恒力控制 |
| 力矩矢量 | M = r × F | 拧转作用,依赖参考点 | 拧螺丝、轴孔装配 |
| 齐次变换 | T = [R p; 0 1] | 描述坐标系之间的位姿关系 | 传感器数据坐标转换 |
| 静力平衡 | ΣF = 0, ΣM = 0 | 静止或匀速下的力与力矩约束 | 重力补偿、负载辨识 |
| 力旋量 | W = [F; M] | 力与力矩的统一六维表示 | 雅可比映射、阻抗控制 |
五、案例:腕部六维力传感器的重力补偿
假设机器人末端安装了一个工具,传感器读数在机器人不同姿态下不断变化。若不做补偿,控制器会误以为存在外部接触力。实际操作流程如下:
- 让机器人以多个不同姿态运动,记录每个姿态下的传感器六维读数;
- 建立静力平衡方程,把工具重力
G和重心r_c作为未知量; - 利用最小二乘法求解
G和r_c; - 在实时控制中,根据当前姿态计算重力在传感器坐标系下的投影,并从读数中扣除;
- 扣除后的力旋量即为外部接触力旋量,用于力控或碰撞检测。
# 重力补偿伪代码
for each pose:
R = get_rotation(pose) # 传感器到基座的旋转
F_gravity = R.T @ [0, 0, -m*g] # 重力在传感器坐标系的投影
M_gravity = r_c × F_gravity # 重力产生的力矩
W_external = W_measured - [F_gravity; M_gravity]
常见误区:只补偿力而不补偿力矩;忽略传感器安装法兰的平移偏移;把工具重心当作传感器原点。这些都会导致力矩通道出现随姿态变化的周期性误差,在精密装配中表现为“越拧越偏”。
六、复盘与要点归纳
本节的核心可以概括为一条主线:力与力矩是矢量,力矩依赖参考点;坐标系变换必须同时处理旋转和平移;静力平衡是连接传感器读数与真实外力的桥梁;力旋量把六维量统一起来,并通过雅可比转置映射到关节空间。掌握这条主线,才能在后续章节中正确理解六维力传感器的标定、解耦、滤波与控制应用。
- 力矢量与参考点无关,力矩矢量与参考点强相关;
- 坐标变换中,力矩变换比力变换多一项
p × F; - 静力平衡是重力补偿和负载辨识的理论基础;
- 力旋量是机器人力觉控制的标准数学接口;
- 工程中必须同时标定旋转和平移,否则力矩通道会出现系统性偏差。