第 6 章 状态反馈与现代控制¶
PID 只看一个输出,状态反馈看全部状态。当被控对象不止单回路、或输出不足以描述动态时,把 \(x\) 反馈回去(\(u=-Kx\))比在输出上做文章更直接。本章从可控性出发,讲极点配置为何"可控即可任意配",把 LQR 的代价权重与极点形态对上,走通离散 Riccati 的实现,最后给出"什么时候值得从 PID 升级到状态反馈"与"状态测不全时怎么办"的判据。运行环境 python 3.11 + control 0.10.2。
从可控性到增益的两条路,以及状态测不全时的补口:
flowchart LR
ctl["可控性判据"] --> pp["极点配置<br/>可控即可任意放"]
ctl --> lqr["LQR<br/>代价权重 ↔ 极点形态"]
pp --> u["u = −Kx"]
lqr --> u
u --> loop["闭环:对象 + 状态反馈"]
obs["状态测不全 → 观测器"] -.->|"补全 x̂"| u
1. 可控性:能不能配极点的前提¶
状态空间 \(\dot x=Ax+Bu\)。可控性矩阵 \(\mathcal{C}=[B,\ AB,\ A^2B,\dots,A^{n-1}B]\),满秩(秩=\(n\))⇔ 任意极点可配。双积分 \(A=\begin{bmatrix}0&1\\0&0\end{bmatrix},B=\begin{bmatrix}0\\1\end{bmatrix}\):
可控性矩阵 C=[B AB]=[[0,1],[1,0]] 秩=2 (=n, 完全可控)
A=diag(1,2), B=[1;0]: 可控性秩=1 (<2) —— λ=2 的模态不可控
第二个例子是可控性的要义:\(B\) 只激励 \(e_1\) 方向,\(A\) 的两个特征向量恰是坐标轴,\(\lambda=2\) 那条模态 \(B\) 够不着,无论怎么反馈都改不动它。判据的两种等价说法:秩检验(数值直接),或 PBH 检验(\(\lambda I-A\) 不可逆时 \(\mathrm{rank}[\lambda I-A\ \ B]=n\),即没有与 \(B\) 正交的左特征向量)。工程后果直白:不可控模态若本身不稳定,任何状态反馈都救不了,只能在物理层改执行器布置。(对偶地,可观测性决定观测器能否估计全部状态,展开归第 9 章「里程计与观测器」。)
2. 极点配置:可控即可任意放¶
对单输入可控对 \((A,B)\),\(u=-Kx\) 使闭环极点 = \(\det(sI-(A-BK))\) 的根,且 \(K\) 与期望极点一一对应。双积分上这个对应能手算:闭环 \(A-BK=\begin{bmatrix}0&1\\-k_1&-k_2\end{bmatrix}\),特征多项式 \(s^2+k_2 s+k_1\)——\(k_1\) 定"弹性"、\(k_2\) 定"阻尼",与期望多项式系数逐项相等即可。
解析 K=[k1,k2]=[1,2] -> 闭环特征值=[-1, -1] ((s+1)²=s²+2s+1)
place 期望极点[-2,-3] -> K=[6, 5] 特征值=[-2,-3] ((s+2)(s+3)=s²+5s+6)
control 的 place(对偶用 Ackermann/acker)走的是多输入稳健算法,单输入重根情形会报"重复极点超过 rank(B)",此时直接用系数匹配更稳(本例 place(A,B,[-1,-1]) 失败、手算 \(K=[1,2]\) 成功)。极点配置把第 1 章「线性系统与时域分析」的 \(\zeta,\omega_n\) 与第 4 章「频率域与鲁棒性」的裕度统一成"选闭环极点"一个动作——但"任意选"不"最优选",代价藏在控制量里,这正是 LQR 补的课。
3. LQR:代价权重与极点形态¶
LQR(linear-quadratic regulator)不指定极点,而是最小化二次代价 \(J=\int(x^\top Qx+u^\top Ru)\,dt\),解 \(A^\top S+SA-SBR^{-1}B^\top S+Q=0\)(连续代数 Riccati 方程,CARE)得 \(K=R^{-1}B^\top S\)。权重的物理意义在双积分(\(x=[p,v]\))上一眼看穿,取标量 \(R=1\):
Q=I, R=1: K=[1.000, 1.732] 极点=-0.87±0.50j (欠阻尼,有振荡分量)
Q=diag(1,10), R=1: K=[1.000, 3.464] 极点=[-0.32, -3.15](过阻尼,速度状态更罚)
Q=diag(1,100),R=1: K=[1.000,10.100] 极点=[-0.10, -10.0] (强过阻尼,出现慢尾)
Q=I, R=10: K=[0.316, 0.856] 极点=-0.43±0.36j (省控制量,增益整体降)
三条规律:\(Q\) 对角权重量纲是"该状态偏差多大不能忍"——加大速度权 \(q_2\),阻尼增益 \(k_2\) 上升、极点从复平面共轭对分到实轴(欠阻尼→过阻尼),但 \(q_2\) 过大反而甩出一个慢极点(−0.1)造成拖尾。
\(R\) 是"控制量代价"——加大 \(R\) 整体增益缩、闭环变慢,但省执行器、抗饱和。
\(Q,R\) 缩放等价:\((Q,R)\to(\alpha Q,\alpha R)\) 不改 \(K\),所以只有比值有物理意义,标定时应固定一个、扫另一个。LQR 的解析解同样可算:双积分 \(Q=I,R=1\) 有 \(k_1=1\)、\(k_2=\sqrt3\approx1.732\),与数值全对上。
4. 离散 Riccati 实现最小样¶
计算机里的 LQR 用离散代数 Riccati(DARE)。以 \(\Delta t=0.01\) s 把双积分 ZOH 离散得 \((A_d,B_d)\),解 DARE 取 \(K_d\):
sys = ct.ss(A, B, np.eye(2), 0)
Ad, Bd = ct.c2d(sys, 0.01).A, ct.c2d(sys, 0.01).B
S = ct.dare(Ad, Bd, np.eye(2), np.eye(1)) # 0.10 dare 返回 (P, ...) 元组
P = S[0]
K_d = np.linalg.solve(Bd.T @ P @ Bd + np.eye(1), Bd.T @ P @ Ad)
离散最优 K_d=[0.9914, 1.7221] 连续 K=[1.000, 1.732] (dt 小则接近)
DARE 残差 ||A_dᵀPA_d - P - A_dᵀPB_d(B_dᵀPB_d+R)⁻¹B_dᵀPA_d + Q|| = 2.6e-14
两个 API 坑要点名:control 0.10 的 dare 返回三元组而非裸矩阵(须取 [0]);lqr 返回 \((K,S,E)\) 三元组(增益、解、闭环极点)。DARE 残差在 1e−13 量级是对 \(P\) 的直接自检——写进正文的每个 Riccati 解都该这样验一遍残差,而非盲信库返回值。离散 \(K_d\) 与连续 \(K\) 在 \(dt=0.01\) 下差约 1%,符合"采样足够快时离散≈连续";dt 再大就会显著偏离,此时必须用离散 \(K_d\),不能拿连续增益硬套(呼应第 1 章「线性系统与时域分析」的"两边的离散化各做各的")。
5. 从 PID 升级到状态反馈的判据¶
不是所有回路都该上状态反馈。升级值得与否,看三条:
| 触发条件 | 为何 PID 吃不住 | 状态反馈/LQR 的优势 |
|---|---|---|
| 对象阶数 ≥2 且各状态都测得到 | PID 只在单输出上动作,高阶对象两极点难同时安置 | 直接对每个状态配增益,极点任意 |
| 多输入多输出(MIMO,如多关节) | 每关节独立 PID 丢耦合(第 2 章「执行器与刚体模型」的 20% 摄动) | 单一 \(K\) 矩阵吃全状态,天然处理耦合 |
| 有明确的代价取舍(快 vs 省力矩) | 手动权衡增益,无最优性 | \(Q/R\) 把取舍写成优化,\(K\) 最优 |
反过来,单输入单输出、对象近似一阶或二阶、只有位置可测时,PID(外加第 3 章「PID 工程」的前馈与抗饱和)就够,硬上状态反馈只是自找观测器负担。
经验落点:桌面三轴、单关节位置环——PID;多轴协同、需最优分配控制量——LQR。带约束、要在线预测未来——那是 MPC,归第 10 章「交互控制与模型预测」。纯状态反馈 \(u=-Kx+kb\,r\) 对阶跃参考仍有静差,需一个标量前馈缩放 \(kb\) 补足直流增益(本例 \(kb=1\),恰等于 \(k_1\)),或加积分器(升维,把 I 并进状态)——后者是 LQR 与 PID 的合流点,称积分 LQR(iLQR 的名字与本章连续 LQR 易混,此处指带积分状态的 LQR)。
6. 状态测不全:观测器一句名目¶
状态反馈要全 \(x\),但常只有部分可测(如只测位置不测速度)。此时用观测器 \(\hat{\dot x}=A\hat x+Bu+L(y-C\hat x)\) 估计 \(x\),把 \(u=-K\hat x\) 顶替 \(-Kx\)。仅测位置(\(C=[1,0]\))时,对偶地配观测误差极点:
观测器增益 L=[8, 15]ᵀ,观测误差动力学 (A-LC) 特征值=[-5, -3](快于控制器极点 → 估计快速收敛)
分离原理(控制器 \(K\) 与观测器 \(L\) 可各配各的、闭环极点为两者并集)在标称线性定常下成立,但模型失配或未建模延迟会让它失效——一个仿真反例与降阶观测器、卡尔曼滤波的关系都在第 9 章「里程计与观测器」展开,本章只把"测不全就用观测器补"这条路点名。
7. 要点¶
- 可控性(\(\mathcal{C}\) 满秩)是配极点的前提;不可控且不稳的模态任何反馈都救不了(本例 \(\lambda=2\) 模态够不着)。
- 单输入可控即任意配极点:双积分 \(s^2+k_2s+k_1\) 系数匹配最直观,重根用系数匹配而非
place(后者报重复极点错)。 - LQR 用 \(Q/R\) 比值定极点形态:速度权 \(q_2\) 升→过阻尼但可能甩慢尾,\(R\) 升→增益降更保守;\((Q,R)\) 同乘不改变 \(K\)。
- 离散 LQR 走 DARE,
dare/lqr在 0.10 都返回元组须取元、解算残差自检(1e−13 量级);dt 大时须用离散 \(K_d\),勿套连续增益。 - 升级判据:MIMO/高阶/有代价取舍才上状态反馈,SISO 低阶可测全时 PID+前馈更省;纯反馈有静差须 \(kb\) 前馈或加积分状态。
- 状态测不全用观测器补(分离原理),其失效边界与卡尔曼滤波归第 9 章「里程计与观测器」。
参考文献与延伸阅读¶
- Anderson, B. D. O., & Moore, J. B. Optimal Control: Linear Quadratic Methods. Prentice Hall, 1990.
- Doyle, J. C., Glover, K., Khargonekar, P. P., & Francis, B. A. State-Space Solutions to Standard H2 and H-infinity Control Problems. IEEE Transactions on Automatic Control, 1989. DOI
- Åström, K. J., & Murray, R. M. Feedback Systems: An Introduction for Scientists and Engineers (2nd ed.). Princeton University Press, 2021. 书籍主页