第三节:关节力矩控制——直流电机力矩模型、电流环与力矩环的关系、力矩传感器与力矩估计
聊到关节力矩控制,很多刚入行的朋友第一反应就是:“给电机发个力矩指令不就行了?”
嗯,没那么简单。力矩控制是机器人实现柔顺交互、力位混合控制的基础。我做了这么多年机器人控制,坦白讲,力矩控制做不好,后面所有的高级功能都是空中楼阁。
3.1 直流电机的力矩模型
我们先从最基础的直流电机说起。你想想看,电机输出的力矩到底是怎么来的?
直流电机的电磁力矩模型,核心就一个公式:
τ_m = K_t · i
其中:
- τ_m —— 电机输出的电磁力矩(N·m)
- K_t —— 力矩常数(N·m/A),由电机本身决定
- i —— 电枢电流(A)
说白了,力矩和电流是线性关系。这也是为什么我们常说“控制电流就是控制力矩”。
但实际项目中,这个模型有几个坑:
- K_t 不是恒定的 —— 温度升高、磁钢老化,K_t 会漂移。我曾经在高温环境下测试,力矩偏差直接到了 8%,后来不得不加温度补偿。
- 摩擦和齿槽效应 —— 低速时尤其明显。电机空转时你给个小电流,它可能纹丝不动,因为静摩擦力还没克服。
- 反电动势的影响 —— 电机转速高了,反电动势会限制电流上升速度,影响动态响应。
核心结论: 直流电机的力矩控制,本质上就是电流控制。但要想控制得准,必须考虑非线性因素。
3.2 电流环与力矩环的关系
很多教科书把电流环和力矩环分开讲,但实际工程中,它们是一对“父子关系”。
我习惯这样理解:
- 电流环(内环) —— 负责快速跟踪电流指令。带宽高,响应快,一般用 PI 控制器。
- 力矩环(外环) —— 负责根据期望力矩,计算出电流环需要的电流指令。
结构图如下:
为什么要这样分层?
原因很简单:电流环的带宽远高于力矩环。电流环的响应时间通常在微秒到毫秒级,而力矩环因为涉及机械动力学,响应时间在毫秒到十毫秒级。
我的经验: 电流环的 PI 参数可以先整定好,然后固定不变。力矩环的增益则要根据负载惯量、刚度等动态调整。我习惯在力矩环里加一个前馈项,把期望力矩直接映射到电流指令上,这样响应能快 30% 左右。
3.3 力矩传感器与力矩估计
力矩控制离不开力矩反馈。反馈从哪里来?两种方式:
- 直接测量 —— 用力矩传感器
- 间接估计 —— 通过电流、位置等信息推算
3.4.1 力矩传感器
常见的力矩传感器有:
| 类型 | 原理 | 精度 | 带宽 | 成本 |
|---|---|---|---|---|
| 应变片式 | 金属应变片电桥 | 高(0.1% FS) | 中(~1kHz) | 中等 |
| 压电式 | 压电效应 | 高(0.5% FS) | 高(~10kHz) | 高 |
| 磁弹性式 | 磁导率变化 | 中(1% FS) | 中(~500Hz) | 低 |
| 电容式 | 极板间距变化 | 高(0.2% FS) | 高(~5kHz) | 高 |
我个人最常用的是应变片式力矩传感器。为什么?性价比高,精度够用,而且标定相对简单。但要注意:
避坑指南: 我曾经在协作机器人项目里,直接用了某品牌的力矩传感器,结果发现温度漂移严重。后来才意识到,应变片式传感器必须做温度补偿,否则 10°C 的温度变化就能带来 2% 的误差。从那以后,我每次选型都会问清楚温度系数。
3.4.2 力矩估计(无传感器方法)
有些场合装不了力矩传感器(比如空间受限、成本敏感),那就得靠估计。
最常用的方法是基于电流的力矩估计:
τ_est = K_t · i - τ_friction - τ_inertia
其中:
- τ_friction —— 摩擦力矩,需要建模补偿
- τ_inertia —— 惯性力矩,需要知道加速度
摩擦力矩的建模,我推荐用 Stribeck 模型:
τ_friction = τ_c + (τ_s - τ_c) · exp(-|ω/ω_s|^δ) + B · ω
参数说明:
- τ_c —— 库仑摩擦力
- τ_s —— 静摩擦力
- ω_s —— Stribeck 速度
- δ —— 经验系数(通常取 0.5~2)
- B —— 粘滞摩擦系数
嗯,这里要注意:摩擦力模型参数需要实验标定。我习惯的做法是让电机匀速转动,记录不同速度下的电流值,然后拟合出摩擦曲线。
力矩估计的精度瓶颈: 不是电流测量精度,而是摩擦模型的准确性。低速时尤其明显,因为摩擦力占主导。如果你需要高精度的力矩控制,还是老老实实上传感器吧。
3.4 实际项目中的力矩控制策略
说了这么多理论,最后分享一点实战经验。
我做过一个六轴协作机器人的力矩控制项目,总结了几条原则:
- 电流环一定要快 —— 电流环的采样率至少 10kHz,PWM 频率 20kHz 以上。否则力矩环的带宽上不去。
- 力矩环的带宽要匹配机械谐振频率 —— 如果机械结构有 50Hz 的谐振,力矩环带宽不要超过 20Hz,否则会激振。
- 力矩传感器要定期标定 —— 我见过太多项目,传感器装上去就不管了,结果半年后数据完全不准。建议每 3 个月做一次零点标定。
- 力矩估计要加低通滤波 —— 电流噪声、加速度噪声都会传递到估计值上。我一般用截止频率 50~100Hz 的二阶巴特沃斯滤波器。
最后说一句:力矩控制没有银弹。传感器方案精度高但成本高、可靠性差;估计方案成本低但精度有限。选哪种,取决于你的项目需求。我个人习惯是:能装传感器就装传感器,实在不行再考虑估计。
一个小技巧: 如果你用估计方案,可以在关节低速运行时,用电流值减去摩擦补偿后的结果作为力矩反馈。虽然精度不如传感器,但对于力位混合控制中的“软”交互场景,完全够用。