4. 控制架构:三环结构与力控的几种玩法

聊到力反馈控制,绕不开的就是控制架构。我这些年调试过的系统,从工业机器人到手术机器人,核心架构其实就那几套。今天我把它们掰开揉碎了讲给你听。

4.1 位置环/速度环/力环:三环结构的底层逻辑

先说说最经典的三环结构。说白了,就是三个PID环套在一起。从内到外分别是:电流环、速度环、位置环。但在力控场景下,最外层往往换成力环。

我习惯这么理解:

  • 内环(电流环):响应最快,负责让电机输出你想要的力矩。一般用PI控制就够了。
  • 中环(速度环):控制运动速度,抑制扰动。带宽比电流环低一个数量级。
  • 外环(力环或位置环):最慢,但决定了最终的控制精度。

为什么要分层?你想想看,如果只有一个大环,所有延迟和非线性都混在一起,调参能把你调哭。分层之后,每一层只关心自己的事,调试起来清晰多了。

核心原则:内环带宽要远大于外环。一般建议内环比外环快5-10倍。否则系统容易震荡。

我在项目中遇到过一个问题:力环带宽设得太高,结果系统高频抖动。后来把力环带宽降到20Hz,速度环设到100Hz,电流环跑到500Hz,问题就解决了。嗯,这里要注意,带宽不是越高越好。

4.2 前馈与反馈结合:让系统跑得更快

纯反馈控制有个毛病——它总是等误差出现了才去纠正。说白了就是「事后诸葛亮」。前馈就不一样了,它提前把补偿量加进去。

我举个例子。你用手推一个箱子,如果知道箱子有多重,你会提前用多大的力?这就是前馈。如果不知道重量,只能推一下感觉阻力再调整,这就是反馈。

实际代码里长这样:

// 前馈+反馈的力控伪代码
float force_command = 0;

// 反馈项:根据力误差调整
float force_error = force_desired - force_measured;
force_command += Kp_force * force_error;

// 前馈项:根据期望力直接计算
force_command += feedforward_gain * force_desired;

// 别忘了速度前馈
force_command += velocity_feedforward * velocity_desired;

我建议前馈系数先设成0.8倍的理论值,剩下的靠反馈去补。这样既快又稳。

小技巧:前馈可以大幅降低稳态误差,但前提是你的模型要准。模型不准,前馈反而添乱。

4.3 阻抗控制 vs 导纳控制:一对孪生兄弟

这两个概念经常被搞混。我简单说清楚:

特性 阻抗控制 导纳控制
输入 位置偏差 力/力矩
输出 力/力矩 位置修正
适用场景 刚性环境(如金属加工) 柔性环境(如人机交互)
实现难度 较难(需要力传感器) 较易(位置控制成熟)

说白了,阻抗控制是「你给我位置偏差,我还你力」。导纳控制是「你给我力,我还你位置修正」。

我曾经在一个协作机器人项目里,两种都试过。最后发现:如果机器人末端刚度大,用阻抗控制更直接;如果末端有柔性关节,导纳控制更稳。

避坑指南:阻抗控制中,阻尼系数设太小会导致震荡,设太大又太「肉」。我一般从临界阻尼开始调,再根据实际手感微调。

4.4 力位混合控制:同时管两件事

有些场景下,你既需要控制力,又需要控制位置。比如打磨一个曲面:沿着曲面法线方向要控力,沿着切线方向要控位置。

力位混合控制的核心思想是:把任务空间分解成两个正交的子空间。一个子空间用力控,另一个用位控。

实现上有个关键点:

  • 选择矩阵 S:决定哪些自由度用力控,哪些用位控
  • 互补矩阵 I-S:剩下的自由度用另一种控制

我见过不少工程师在这里翻车。他们忘了:力控和位控的带宽要匹配。力控环慢,位控环快,结果两个环互相打架。

我的经验:力位混合控制中,力控方向的增益要设得比位控方向低30%-50%。这样系统才不会「左右互搏」。

4.5 一张图看懂控制架构

下面这张SVG图,把三环结构和几种控制模式的关系画清楚了。我花了不少心思,你仔细看看:

力反馈控制架构总览 三环控制结构(从内到外) 电流环 带宽:500Hz-2kHz 速度环 带宽:50-200Hz 位置/力环 带宽:5-30Hz 四种控制模式 阻抗控制 输入:位置偏差 → 输出:力 适用:刚性环境、精密装配 导纳控制 输入:力 → 输出:位置修正 适用:柔性环境、人机交互 前馈 + 反馈 前馈提速度,反馈保精度 模型越准,效果越好 力位混合控制 正交子空间分解 选择矩阵 S 决定控力还是控位 核心:内环快、外环慢;前馈提响应、反馈保精度;选对模式、调好参数

这张图把今天讲的内容串起来了。你从内环往外看,再从左到右看控制模式,整个架构就清晰了。

最后说一句:没有最好的架构,只有最合适的。我见过用纯位置环加前馈就搞定力控的,也见过三环加力位混合还调不好的。关键是你对系统的理解有多深。

专注资料整理