3、阻抗控制原理(二):位置基阻抗控制 vs 力基阻抗控制、内环与外环设计、稳定性分析基础
好,咱们接着聊阻抗控制。上一章我们把阻抗控制的物理直觉和基本方程讲清楚了。这一章,我打算深入聊聊两种主流的实现方式——位置基和力基阻抗控制,以及它们背后的内环外环设计思路。最后,我会结合自己踩过的坑,讲讲稳定性分析的那些基础要点。
3.1 位置基阻抗控制 vs 力基阻抗控制
先问一个问题:你手里有一个机器人,你想让它表现出“弹簧-阻尼”的特性。你是通过控制位置来实现,还是通过控制力来实现?
这两种思路,对应了两种不同的阻抗控制流派。
3.1.1 位置基阻抗控制
位置基阻抗控制,说白了就是:我让机器人去跟踪一个“虚拟的”期望位置,但这个期望位置会根据外力做调整。
它的核心逻辑是这样的:
- 设定一个期望的阻抗参数(刚度K、阻尼B、惯量M)。
- 实时测量机器人末端与环境的接触力F_ext。
- 根据阻抗方程,计算出由于外力导致的“位置修正量”Δx。
- 把修正后的位置x_d + Δx作为新的目标,发给底层的运动控制器去执行。
公式上,它通常写成这样:
M * (ẍ_d - ẍ) + B * (ẋ_d - ẋ) + K * (x_d - x) = F_ext
嗯,这里要注意:位置基阻抗控制,底层必须有一个高性能的位置控制器。这个位置控制器可以是PID,也可以是更高级的模型预测控制。我在项目里见过有人直接用位置模式下的伺服驱动器,效果也还行,但带宽上不去。
核心特点:
- 实现简单,工业机器人上最常见
- 对位置控制器的带宽要求高
- 在自由空间(没接触时)表现很好
- 在约束空间(接触硬表面时)容易不稳定
3.1.2 力基阻抗控制
力基阻抗控制,思路正好反过来。它不直接控制位置,而是通过控制力来实现期望的阻抗特性。
它的逻辑是:
- 同样设定期望的阻抗参数。
- 测量当前实际位置x和期望位置x_d之间的偏差。
- 根据阻抗方程,计算出为了消除这个偏差,机器人应该输出多大的力。
- 把这个力作为指令,发给底层的力控制器去执行。
公式上,它写成:
F_cmd = M * (ẍ_d - ẍ) + B * (ẋ_d - ẋ) + K * (x_d - x)
这里的F_cmd就是我们要施加给环境的力指令。
我个人习惯:在需要精密力控的场景,比如打磨、装配,我倾向于用力基阻抗控制。因为它的力响应更直接,不会像位置基那样,经过位置环的延迟才产生力。
3.1.3 两者的对比
| 对比项 | 位置基阻抗控制 | 力基阻抗控制 |
|---|---|---|
| 控制变量 | 位置(修正后的期望位置) | 力(期望输出力) |
| 底层需求 | 高性能位置控制器 | 高性能力控制器 |
| 自由空间表现 | 优秀 | 一般(需要额外处理) |
| 约束空间表现 | 容易震荡 | 更稳定 |
| 力传感器需求 | 需要(测量外力) | 需要(力反馈闭环) |
| 典型应用 | 人机协作、拖动示教 | 精密装配、恒力打磨 |
3.2 内环与外环设计
你想想看,不管是位置基还是力基,它们都不是直接控制电机电流的。它们上面都有一层“外环”,下面有一层“内环”。
这个结构,我称之为“内外环级联架构”。
3.2.1 标准架构
外环:阻抗控制器。它根据位置偏差和力反馈,计算出期望的力或位置指令。
内环:底层控制器。它负责快速、准确地跟踪外环发来的指令。
对于位置基阻抗控制:
- 外环:阻抗计算 → 输出修正后的期望位置x_d'
- 内环:位置控制器(如PID) → 输出力矩/电流 → 电机
对于力基阻抗控制:
- 外环:阻抗计算 → 输出期望力F_d
- 内环:力控制器(如PI) → 输出力矩/电流 → 电机
我曾经踩过一个坑:在力基阻抗控制中,内环力控制器的带宽如果不够高(比如低于50Hz),整个系统就会表现出明显的“粘滞感”。你推它,它要延迟一会儿才反应。后来我把内环的力控频率从500Hz提到了2000Hz,效果立竿见影。
3.2.2 为什么需要内外环?
直接用一个控制器同时处理阻抗特性和底层执行,行不行?理论上可以,但实际中很难。
原因有两点:
- 时间尺度分离:阻抗特性通常关心的是低频行为(1-10Hz),而底层控制需要处理高频扰动(50-200Hz)。混在一起,参数很难调。
- 模块化设计:外环负责“策略”,内环负责“执行”。换一个机器人,我只需要调整内环参数,外环的阻抗参数可以保持不变。
3.3 稳定性分析基础
说到稳定性,这是阻抗控制里最让人头疼的部分。我见过太多人,参数调了半天,一接触硬表面就“抖”起来了。
3.3.1 为什么容易不稳定?
核心原因在于:机器人与环境构成了一个闭环系统。
你想想看,机器人推环境,环境给机器人反作用力。这个反作用力又通过阻抗控制器改变机器人的运动。如果这个“力-运动”回环的相位裕度不够,就会震荡。
具体来说,影响稳定性的关键因素有:
- 环境刚度:环境越硬(比如钢铁表面),系统越容易不稳定。因为硬环境会引入一个很大的“等效刚度”,与机器人的阻抗刚度形成串联谐振。
- 阻尼比:阻抗控制中的阻尼B,是抑制震荡的关键。B太小,系统欠阻尼,容易超调;B太大,系统响应太慢。
- 采样延迟:从传感器采集到控制指令输出,每一步都有延迟。延迟会降低相位裕度,是稳定性的“杀手”。
一个实用的经验公式:
对于位置基阻抗控制,当环境刚度K_e远大于机器人阻抗刚度K时,系统稳定的条件是:
B > 2 * sqrt( M * K_e )
也就是说,面对硬环境,你必须把阻尼B设得足够大。我在调试打磨机器人时,面对铝合金工件,B值通常要设到理论值的1.5倍以上才能稳定。
3.3.2 如何分析稳定性?
最基础的方法是传递函数分析。把机器人简化为一个质量-弹簧-阻尼系统,把环境简化为一个刚度K_e,然后画出开环Bode图,看相位裕度和增益裕度。
我建议你至少掌握以下几步:
- 建立机器人单自由度的简化模型(质量M,阻尼B,刚度K)
- 加入环境模型(刚度K_e,有时还要加阻尼B_e)
- 写出闭环传递函数
- 用Matlab或Python的control库画根轨迹或Bode图
- 观察参数变化对极点位置的影响
嗯,这里要注意:简化模型只能给你一个“直觉”。实际的多轴机器人,有耦合、有非线性、有摩擦,稳定性分析要复杂得多。我一般先用简化模型确定参数范围,然后在实际机器人上做“扫频实验”,用实验Bode图来验证。
3.3.3 避坑指南
我曾经遇到过:在调试一个六轴协作机器人的力控打磨时,怎么调参数都震荡。后来发现,问题出在力传感器的安装刚度上。传感器本身有一个柔性,这个柔性与环境刚度串联,形成了一个额外的谐振峰。解决办法是在传感器和机器人法兰之间加了一个刚性过渡板,把安装刚度提高了3倍,震荡立刻消失了。
所以,当你遇到稳定性问题时,别只盯着阻抗参数。检查一下:
- 力传感器的安装是否刚性足够?
- 底层的电流环/速度环带宽是否足够?
- 控制周期是否稳定?有没有丢包或抖动?
这些“硬件”层面的问题,往往比算法本身更致命。
这张图把内外环架构和稳定性分析的要点串在了一起。你可以看到,外环负责“策略”,内环负责“执行”,而稳定性分析则贯穿了整个系统——从环境刚度到底层控制带宽,每一个环节都可能成为瓶颈。
好了,这一章的内容就到这里。位置基和力基的选择,内外环的设计,稳定性的基础分析,这些都是你实际调试中绕不开的硬骨头。下一章,我会带你看看具体的参数整定方法和调试技巧,到时候咱们拿真实数据说话。