4、力矩控制模式:力矩传感器与电流环、阻抗控制基础、力位混合控制、柔顺控制应用场景
聊到力矩控制,很多工程师第一反应就是「难」。说实话,我刚入行时也觉得这东西玄乎。直到有一次在协作机器人项目里,硬生生被力矩控制坑了一把——机器人抓鸡蛋,力度没控好,直接捏碎了。从那以后,我才真正沉下心来把这块啃透。
力矩控制,说白了就是让机器人学会「感知力气大小」。它跟位置控制完全是两套思维。位置控制是「我要去那里」,力矩控制是「我用多大力气去」。今天咱们就把这四种模式掰开揉碎了讲。
4.1 力矩传感器与电流环
力矩控制的第一步,是知道当前关节用了多大力。怎么知道?两个途径:力矩传感器和电流环。
4.1.1 力矩传感器
力矩传感器装在关节输出端,直接测量实际力矩。精度高,但贵,而且娇气。我见过一个项目,传感器线缆被机器人自己甩断了,排查了两天才找到原因。
| 传感器类型 | 精度 | 带宽 | 成本 | 典型应用 |
|---|---|---|---|---|
| 应变片式 | ±0.1% FS | ~1 kHz | 高 | 精密装配、医疗 |
| 电容式 | ±0.5% FS | ~2 kHz | 中 | 协作机器人 |
| 压电式 | ±1% FS | ~5 kHz | 中高 | 动态力测量 |
4.1.2 电流环估算力矩
不用传感器行不行?也行。通过电机电流估算力矩,成本低,但精度差。原理很简单:τ = Kt × I,力矩等于转矩常数乘以电流。
但这里有个坑——摩擦力。电机输出力矩,经过减速器、轴承,到关节输出端,摩擦力吃掉一大块。我曾经在六轴机器人上做过对比,电流环估算的力矩和传感器实测值,差了将近 20%。
我个人习惯是:高精度场景用力矩传感器,一般场景用电流环+摩擦力补偿。成本敏感的项目,电流环方案完全够用。
4.2 阻抗控制基础
阻抗控制,名字听着唬人,其实核心就一句话:让机器人表现得像弹簧阻尼系统。
你推它,它让开;你拉它,它跟着走。力越大,位移越大。这就是阻抗控制的基本思想。
4.2.1 阻抗模型
标准阻抗模型是二阶系统:
M * (ẍ_d - ẍ) + B * (ẋ_d - ẋ) + K * (x_d - x) = F_ext
其中:
- M:惯性系数,决定响应快慢
- B:阻尼系数,决定震荡抑制
- K:刚度系数,决定位置偏差与力的关系
- F_ext:外部施加的力
你想想看,调这三个参数,就像调一个弹簧。K 大了,机器人硬邦邦;K 小了,软绵绵。B 大了,动作慢吞吞;B 小了,容易抖。
4.2.2 阻抗控制实现
实际代码里,阻抗控制通常放在力矩控制环外面:
// 阻抗控制伪代码
void impedanceControl() {
// 1. 读取当前关节位置和速度
float q = getJointPosition();
float qd = getJointVelocity();
// 2. 计算位置偏差
float delta_q = q_desired - q;
float delta_qd = qd_desired - qd;
// 3. 计算期望力矩(阻抗模型)
float tau_desired = K * delta_q + B * delta_qd;
// 4. 发送力矩指令到电流环
setTorqueCommand(tau_desired);
}
这段代码看着简单,但实际跑起来,采样率至少要 1 kHz。低于这个频率,机器人会抖得像筛糠。我踩过这个坑,后来把控制周期从 2 ms 压到 0.5 ms,效果天差地别。
4.3 力位混合控制
有些场景,既需要控制位置,又需要控制力。比如打磨——沿着表面走是位置控制,垂直压着表面是力控制。这就是力位混合控制。
核心思路:把任务空间分解成两个正交的子空间。一个子空间做位置控制,另一个做力控制。
4.3.1 选择矩阵
用选择矩阵 S 来区分:
- S = 1:该方向用力控制
- S = 0:该方向用位置控制
举个例子,机器人沿着 X 轴移动,同时保持 Y 方向恒定接触力:
S = [0, 1, 0] // X方向位置控制,Y方向力控制,Z方向位置控制
4.3.2 控制律
力位混合控制的控制律可以写成:
τ = S * τ_force + (I - S) * τ_position
说白了,就是两个控制器并行跑,各自管各自的方向。我见过有人把选择矩阵搞反了,结果机器人在自由空间里拼命用力,在接触面上却拼命跑位置——那画面,啧啧。
4.4 柔顺控制应用场景
柔顺控制,是上面几种技术的综合应用。说白了,就是让机器人「懂事」——该硬的时候硬,该软的时候软。
4.4.1 典型场景
| 场景 | 控制方式 | 关键参数 | 避坑点 |
|---|---|---|---|
| 精密装配(轴孔配合) | 阻抗控制 | K 小,B 适中 | 摩擦力补偿要准 |
| 表面打磨 | 力位混合 | 法向力恒定 | 接触检测要快 |
| 人机协作(拖拽示教) | 零力控制(阻抗特例) | K=0,B 小 | 重力补偿必须做 |
| 医疗手术 | 阻抗+力位混合 | 力精度 0.1N | 传感器噪声滤波 |
4.4.2 我的实战经验
做柔顺控制,最容易忽略的是重力补偿。机器人本身有自重,如果不补偿,你拖不动它,它还会自己往下掉。
我曾经在协作机器人上做拖拽示教,没做重力补偿,结果机器人一上电就往下坠,差点砸到人。后来老老实实做了完整的多体动力学重力补偿,才搞定。
另一个坑是接触检测。机器人从自由空间进入接触空间,力会突变。如果检测不及时,要么撞坏工件,要么弹开。我建议用「力阈值+位置偏差」双重判断,比单靠力阈值可靠得多。
4.5 本章知识体系
下面这张图,把力矩控制的四种模式串起来了。你可以把它当作一个决策树——根据应用场景,选择对应的控制策略。
这张图把力矩控制的「感知-策略-应用」三层结构讲清楚了。你从底层往上走,先搞定力矩感知,再选控制策略,最后落到具体场景。每一步都有坑,但每一步也都有解法。
嗯,力矩控制这块内容不少,但核心就这些。下次你调机器人时,遇到力控问题,回来翻翻这章,应该能帮你省不少时间。