第3章:试凑法调参:手动调整Q和R的实战步骤

说实话,很多新手一上来就问我:「有没有一套万能参数,直接套用就能让系统稳定?」

我的回答很直接——没有。每个系统都有自己的脾气。

但别灰心。我今天要讲的试凑法,就是一套从零开始、步步为营的手动调参流程。我做了十几年嵌入式控制,最复杂的四旋翼飞控、最基础的直流电机,都是用这套方法调出来的。

3.1 试凑法的核心思想

试凑法说白了就是:先让系统动起来,再一点点优化

你想想看,一个完全没调过的LQR控制器,Q和R都是零,系统根本没法跑。但如果你一上来就给Q赋个1000,R赋个0.001,系统大概率直接炸掉。

所以我的习惯是:从保守开始,逐步激进

核心原则:

  • 先保证稳定,再追求性能
  • 一次只调一个参数
  • 每次调整后观察系统响应

3.2 实战五步法

我总结了一套五步调参流程,这些年带团队一直用这个框架。你照着做,基本不会跑偏。

第一步:初始化参数

先把所有参数归零。Q矩阵设为单位阵,R矩阵设为单位阵。

Q = diag([1, 1, 1, 1]);  % 状态权重
R = diag([1, 1]);         % 控制权重

嗯,这里要注意:如果你的系统状态量有不同量纲(比如角度和角速度),最好先做归一化处理。我在做倒立摆项目时吃过这个亏——角度0.1弧度看起来很小,但角速度100度/秒已经很大了,权重完全不在一个量级上。

第二步:增大Q,让系统响应变快

保持R不变,逐步增大Q的对角元素。我一般先调第一个状态(通常是位置或角度)的权重。

% 第一次尝试
Q = diag([10, 1, 1, 1]);
R = diag([1, 1]);

% 观察响应,如果不够快
Q = diag([100, 1, 1, 1]);

为什么会这样?因为Q越大,系统越「在意」这个状态的误差,控制力自然更强。

我的经验:每次增大Q的倍数控制在3-10倍之间。太小的步长浪费时间,太大的步长容易跳过最优值。

第三步:减小R,让控制更「大胆」

如果增大Q后响应还是不够快,那就该减小R了。R越小,控制器越敢用大力气。

% 保持Q不变,减小R
Q = diag([100, 1, 1, 1]);
R = diag([0.1, 1]);  % 第一个控制量权重减小

我曾经在一个伺服电机项目上,R从1降到0.01,响应速度直接提升了3倍。但代价是控制信号开始出现高频抖动——这就是典型的「过调」。

第四步:平衡各状态权重

当系统基本稳定后,开始微调各状态之间的权重比例。比如你想让位置误差收敛更快,就增大位置对应的Q值;想让速度更平滑,就减小速度对应的Q值。

状态 Q值偏大 Q值偏小
位置/角度 响应快,可能有超调 响应慢,稳态误差大
速度/角速度 运动平滑,但响应慢 响应快,但容易抖动
控制量 控制力强,能耗高 控制力弱,能耗低

第五步:验证鲁棒性

参数调好了?别急着收工。我习惯在系统上施加一些扰动,看看控制器能不能扛得住。

% 模拟扰动
disturbance = 0.1 * sin(2*pi*5*t);  % 5Hz的正弦扰动
system_output = system_output + disturbance;

如果系统在扰动下还能保持稳定,那这组参数基本就合格了。

避坑指南:我曾经在一个无人机项目上,实验室里调得好好的参数,一到户外就炸机。后来发现是风扰动的频率刚好激发了系统的谐振点。所以一定要在真实工况下验证。

3.3 一个完整的调参案例

拿一个简单的二阶系统举例:

% 系统模型:质量-弹簧-阻尼系统
m = 1;  % 质量
k = 10; % 弹簧刚度
b = 2;  % 阻尼系数

% 状态空间
A = [0, 1; -k/m, -b/m];
B = [0; 1/m];
C = [1, 0];
D = 0;

% 初始参数
Q = eye(2);
R = 1;

% 计算LQR增益
K = lqr(A, B, Q, R);

% 仿真
sys_cl = ss(A - B*K, B, C, D);
step(sys_cl);

第一次仿真,系统响应慢得像蜗牛。我逐步把Q(1,1)从1调到100,响应快了,但出现了10%的超调。接着我把R从1降到0.1,超调消失了,但控制信号开始有轻微振荡。

最后我折中了一下:Q(1,1)=50,R=0.5。系统在0.8秒内稳定,超调小于3%,控制信号平滑——这就是我要的效果。

3.4 试凑法的局限性

说实话,试凑法不是万能的。当系统状态超过4个时,手动调参就像大海捞针。我见过有人调一个8状态的LQR,调了整整两周还没搞定。

这时候就该上优化算法了——比如遗传算法、粒子群优化。但那是后面章节的内容了。

对于初学者来说,试凑法是最好的入门方式。它能让你直观感受每个参数对系统的影响,建立起「参数-响应」的直觉。这种直觉,是任何自动化工具都给不了你的。

本章小结:

  • 试凑法的核心:先稳定,再优化
  • 五步流程:初始化 → 增大Q → 减小R → 平衡权重 → 验证鲁棒性
  • 每次调整倍数控制在3-10倍
  • 一定要在真实工况下验证参数
试凑法调参流程图 初始化参数 Q=I, R=I 增大Q 提升响应速度 减小R 增强控制力 平衡权重 微调各状态 系统稳定? 且性能达标? 验证鲁棒性

这张图就是我每次调参时脑子里过的流程。你照着走,至少不会把系统调崩。

专注资料整理