3、阻抗控制原理(二):位置基阻抗控制 vs 力基阻抗控制、内环与外环设计、稳定性分析基础

好,咱们接着聊阻抗控制。上一章我们把阻抗控制的物理直觉和基本方程讲清楚了。这一章,我打算深入聊聊两种主流的实现方式——位置基和力基阻抗控制,以及它们背后的内环外环设计思路。最后,我会结合自己踩过的坑,讲讲稳定性分析的那些基础要点。

3.1 位置基阻抗控制 vs 力基阻抗控制

先问一个问题:你手里有一个机器人,你想让它表现出“弹簧-阻尼”的特性。你是通过控制位置来实现,还是通过控制力来实现?

这两种思路,对应了两种不同的阻抗控制流派。

3.1.1 位置基阻抗控制

位置基阻抗控制,说白了就是:我让机器人去跟踪一个“虚拟的”期望位置,但这个期望位置会根据外力做调整。

它的核心逻辑是这样的:

  1. 设定一个期望的阻抗参数(刚度K、阻尼B、惯量M)。
  2. 实时测量机器人末端与环境的接触力F_ext。
  3. 根据阻抗方程,计算出由于外力导致的“位置修正量”Δx。
  4. 把修正后的位置x_d + Δx作为新的目标,发给底层的运动控制器去执行。

公式上,它通常写成这样:

M * (ẍ_d - ẍ) + B * (ẋ_d - ẋ) + K * (x_d - x) = F_ext

嗯,这里要注意:位置基阻抗控制,底层必须有一个高性能的位置控制器。这个位置控制器可以是PID,也可以是更高级的模型预测控制。我在项目里见过有人直接用位置模式下的伺服驱动器,效果也还行,但带宽上不去。

核心特点:

  • 实现简单,工业机器人上最常见
  • 对位置控制器的带宽要求高
  • 在自由空间(没接触时)表现很好
  • 在约束空间(接触硬表面时)容易不稳定

3.1.2 力基阻抗控制

力基阻抗控制,思路正好反过来。它不直接控制位置,而是通过控制力来实现期望的阻抗特性

它的逻辑是:

  1. 同样设定期望的阻抗参数。
  2. 测量当前实际位置x和期望位置x_d之间的偏差。
  3. 根据阻抗方程,计算出为了消除这个偏差,机器人应该输出多大的力
  4. 把这个力作为指令,发给底层的力控制器去执行。

公式上,它写成:

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. 时间尺度分离:阻抗特性通常关心的是低频行为(1-10Hz),而底层控制需要处理高频扰动(50-200Hz)。混在一起,参数很难调。
  2. 模块化设计:外环负责“策略”,内环负责“执行”。换一个机器人,我只需要调整内环参数,外环的阻抗参数可以保持不变。

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图,看相位裕度和增益裕度。

我建议你至少掌握以下几步:

  1. 建立机器人单自由度的简化模型(质量M,阻尼B,刚度K)
  2. 加入环境模型(刚度K_e,有时还要加阻尼B_e)
  3. 写出闭环传递函数
  4. 用Matlab或Python的control库画根轨迹或Bode图
  5. 观察参数变化对极点位置的影响

嗯,这里要注意:简化模型只能给你一个“直觉”。实际的多轴机器人,有耦合、有非线性、有摩擦,稳定性分析要复杂得多。我一般先用简化模型确定参数范围,然后在实际机器人上做“扫频实验”,用实验Bode图来验证。

3.3.3 避坑指南

我曾经遇到过:在调试一个六轴协作机器人的力控打磨时,怎么调参数都震荡。后来发现,问题出在力传感器的安装刚度上。传感器本身有一个柔性,这个柔性与环境刚度串联,形成了一个额外的谐振峰。解决办法是在传感器和机器人法兰之间加了一个刚性过渡板,把安装刚度提高了3倍,震荡立刻消失了。

所以,当你遇到稳定性问题时,别只盯着阻抗参数。检查一下:

  • 力传感器的安装是否刚性足够?
  • 底层的电流环/速度环带宽是否足够?
  • 控制周期是否稳定?有没有丢包或抖动?

这些“硬件”层面的问题,往往比算法本身更致命。

阻抗控制内外环架构与稳定性分析框架 外环:阻抗控制器 输入:位置偏差 + 力反馈 输出:期望力/期望位置 频率:1-10 Hz 内环:底层控制器 输入:外环指令 输出:力矩/电流 频率:50-200 Hz 机器人 + 环境 质量M, 阻尼B, 刚度K 环境刚度K_e 采样延迟T_s 指令 力矩 反馈:位置/力信号 稳定性分析关键点 ① 环境刚度K_e vs 阻抗刚度K ② 阻尼B的选取(B > 2√(M·K_e)) ③ 采样延迟与相位裕度 ④ 传感器安装刚度 ⑤ 底层控制带宽

这张图把内外环架构和稳定性分析的要点串在了一起。你可以看到,外环负责“策略”,内环负责“执行”,而稳定性分析则贯穿了整个系统——从环境刚度到底层控制带宽,每一个环节都可能成为瓶颈。

好了,这一章的内容就到这里。位置基和力基的选择,内外环的设计,稳定性的基础分析,这些都是你实际调试中绕不开的硬骨头。下一章,我会带你看看具体的参数整定方法和调试技巧,到时候咱们拿真实数据说话。

专注资料整理