4. 导纳控制原理:对偶关系、内环位置控制与稳定性分析

导纳控制,说白了就是机器人怎么「听话」地对外力做出反应。你推它,它就让;你拉它,它就跟着走。这跟阻抗控制正好是「镜像关系」——一个控制力,一个控制位置。我在项目里经常把这两个概念搞混,后来才真正理解它们的对偶本质。

4.1 导纳控制与阻抗控制的对偶关系

先看一个直观对比:

特性 阻抗控制 导纳控制
输入 位置偏差 Δx 外力 Fext
输出 期望力 Fd 期望位置修正 Δxd
物理类比 弹簧-阻尼器(被动) 质量-弹簧-阻尼器(主动)
适用场景 力控末端执行器 位置控机器人本体
内环 力控制环 位置控制环

你想想看,阻抗控制是「你偏离了位置,我就产生力把你拉回来」;导纳控制则是「你施加了力,我就调整位置来顺应你」。它们互为逆系统。用数学表达就是:

阻抗控制:F = M·Δẍ + D·Δẋ + K·Δx
导纳控制:Δx = (M·s² + D·s + K)⁻¹ · F

嗯,这里要注意:导纳控制的传递函数是阻抗控制的倒数。我在实际调试时发现,如果阻抗参数设置不当,导纳控制也会出现「硬邦邦」或者「软绵绵」的问题。说白了,参数就是你的「性格」——想让机器人温柔点,就把阻尼调大;想让反应快,就把质量调小。

核心要点:导纳控制本质上是「力→位置」的映射,而阻抗控制是「位置→力」的映射。两者在数学上互为对偶,但在工程实现上完全不同。

4.2 内环位置控制:导纳控制的心脏

导纳控制能跑起来,全靠内环位置控制撑腰。我见过不少团队,外环导纳模型算得漂漂亮亮,内环位置跟踪一塌糊涂,结果整个系统抖得像筛糠。

内环位置控制的结构是这样的:

  1. 外环导纳模型:根据外力 Fext 计算期望位置修正 Δxd
  2. 内环位置控制器:跟踪修正后的期望位置 xd + Δxd
  3. 机器人底层伺服:执行位置指令

内环位置控制器的设计直接影响导纳控制的带宽和稳定性。我个人习惯用 PID 加前馈,因为纯 PID 在高速跟踪时会有滞后。举个例子:

// 内环位置控制器(简化版)
double position_control(double x_des, double x_act, double v_des, double v_act) {
    double e_pos = x_des - x_act;
    double e_vel = v_des - v_act;
    
    // PID + 前馈
    double ff = M * a_des + D * v_des;  // 前馈项
    double fb = Kp * e_pos + Kd * e_vel; // 反馈项
    
    return ff + fb;
}

我曾经在一个协作机器人项目里,内环位置控制频率只有 500Hz,结果导纳控制一受力就震荡。后来把内环频率提到 2kHz,问题立刻解决。所以我的建议是:内环位置控制频率至少是外环导纳模型的 5 倍以上。

实战技巧:内环位置控制器的带宽要远高于导纳模型的带宽。一般建议内环带宽是外环的 5-10 倍,否则会出现「外环算得快,内环跟不上」的尴尬局面。

4.3 稳定性分析:别让机器人「跳舞」

导纳控制的稳定性是个大坑。我踩过最深的坑是:在刚性环境中,导纳控制很容易失稳。为什么会这样?因为导纳控制本质上是把机器人变成了一个「虚拟弹簧-质量-阻尼系统」,当环境刚度很高时,这个虚拟系统会与环境耦合产生共振。

稳定性分析主要看三个方面:

  • 被动稳定性:导纳模型本身是否无源(passive)。如果 M、D、K 都是正定矩阵,那模型本身是稳定的。
  • 耦合稳定性:机器人与环境交互时的稳定性。环境刚度越大,越容易失稳。
  • 离散化稳定性:数字控制器的采样周期和离散化方法带来的影响。

我常用的稳定性判据是:

条件1:M > 0, D > 0, K > 0  (正定性)
条件2:D² ≥ 4·M·K          (临界阻尼或过阻尼)
条件3:采样周期 T < 2·M/D   (离散化稳定条件)

嗯,这里要特别提醒:条件 3 经常被忽略。我在一个打磨机器人项目里,采样周期是 4ms,M=0.5,D=100,算出来 T 必须小于 10ms,看起来没问题。但实际运行时因为通信延迟,等效采样周期到了 12ms,结果系统开始震荡。后来把 M 调大到 0.8,问题才解决。

避坑指南:我曾经在调试导纳控制时,只关注了 M、D、K 的数值,忽略了离散化带来的相位滞后。结果机器人在接触刚性物体时高频震荡,差点把工件打飞。记住:数字控制器的采样周期和延迟是稳定性的隐形杀手。

4.4 导纳控制核心逻辑框架

下面这张图是我自己总结的导纳控制核心逻辑,每次做新项目都会拿出来对照:

导纳控制核心逻辑框架 外力 Fext 导纳模型 M·s² + D·s + K 位置修正 Δxd 内环位置控制 PID + 前馈 机器人本体 环境交互 力反馈 说明: 外环导纳模型根据外力计算位置修正,内环位置控制跟踪修正后的期望位置。 力反馈闭环确保机器人能持续感知并响应环境力。

4.5 参数整定实战经验

参数整定是导纳控制最磨人的环节。我总结了一套「三步走」方法:

  1. 先调内环:让内环位置控制做到无超调、无静差。带宽尽可能高。
  2. 再调外环:从大阻尼、小质量开始,逐步增加响应速度。
  3. 最后联调:在真实环境中测试,重点关注接触瞬间的力冲击。

具体参数范围可以参考:

参数 典型范围 影响
虚拟质量 M 0.1 ~ 10 kg 越小响应越快,但容易震荡
虚拟阻尼 D 10 ~ 500 N·s/m 越大越稳定,但响应变慢
虚拟刚度 K 0 ~ 1000 N/m 越大位置恢复力越强

我个人习惯把 K 设成 0,因为导纳控制的核心是「顺应」,而不是「恢复」。如果非要加刚度,那也是在特定任务中(比如装配时的定位引导)。

小技巧:调试时可以先用手推机器人,感受它的「手感」。如果推起来像推一堵墙,说明阻尼太大;如果推起来像推空气,说明质量太小。调到「推起来像推一块海绵」就差不多了。

好了,导纳控制的核心内容就这些。记住对偶关系、内环位置控制的重要性、以及稳定性分析的三个条件。下次遇到机器人「跳舞」或者「僵硬」的问题,你知道该从哪里下手了。