Tech Station

理论基础 › 🎛️ 经典控制与最优控制 / MPC

🎛️

经典控制与最优控制 / MPC Classical & Optimal Control, MPC

有了模型就可以设计控制器。这条路线从反馈基础与线性系统理论出发,经过基于模型的关节 / 任务空间控制、非线性与安全控制,到 LQR、动态规划、轨迹优化,最后到达今天足式与操作机器人上广泛部署的 MPC 和全身控制。Russ Tedrake 的 Underactuated Robotics 与 CMU 16-745 是这一模块的两条主线。

7 个主题 约 185 小时 先修:🦾 运动学与动力学建模
已掌握 0/7

学完你将能够

1反馈控制基础与线性系统理论 Feedback Fundamentals & Linear Systems

⏱ 约 30 小时

反馈的本质是「用误差修正动作」。先理解 PID 与稳定性(极点 / 特征值),然后是状态空间语言:可控性、可观性、极点配置、观测器与分离原理,以及频域里的带宽、相位裕度这些工程师天天用的概念。

核心要点

  • PID 的物理直觉与整定;积分饱和、微分噪声、抗饱和
  • 状态空间 ẋ = Ax + Bu:可控性 / 可观性矩阵,极点配置,Luenberger 观测器,分离原理
  • 频域基础:传递函数、Bode 图、带宽、增益 / 相位裕度、延迟对稳定性的杀伤力
  • 离散控制器实现:采样率、零阶保持、抗混叠滤波、数值微分的噪声
  • 鲁棒性直觉:模型不准时会发生什么;高增益的代价

关键公式

u=Kpe+Ki ⁣∫e dt+Kd e˙u = K_p e + K_i\!\int e\,dt + K_d\,\dot e
PID
C=[B  AB  ⋯  An−1B],rank C=n  ⟺  可控\mathcal{C} = [B\; AB\; \cdots\; A^{n-1}B],\qquad \text{rank}\,\mathcal{C} = n \iff \text{可控}
可控性判据
自测:学完应该能回答
  1. 为什么 100 ms 的延迟会让一个原本稳定的高增益 PD 控制器振荡?
  2. 分离原理说了什么?它为什么在非线性系统上不再严格成立?

推荐资料(全部免费)

2基于模型的关节 / 任务空间控制与力控 Computed Torque, Operational-Space & Impedance Control

⏱ 约 25 小时

利用动力学模型做重力补偿、计算力矩(反馈线性化),再把控制目标从关节空间搬到任务空间(末端位姿),最后学会让机器人表现得像弹簧-阻尼系统(阻抗 / 导纳控制)以安全地与环境接触。这是机械臂控制的主干。

核心要点

  • 重力补偿 PD → 计算力矩法:闭环变成线性误差动力学
  • 操作空间控制(Khatib):任务空间惯量 Λ = (J M⁻¹ Jᵀ)⁻¹,动态一致的零空间
  • 阻抗控制 vs 导纳控制:力矩控制硬件 vs 位置控制硬件;刚度 / 阻尼的选择与稳定性
  • 力控与混合位置 / 力控制;接触过渡的稳定性问题
  • 被动性与能量整形;关节柔性(SEA)与摩擦补偿

关键公式

τ=M(q)(q¨d+Kde˙+Kpe)+C(q,q˙)q˙+g(q),e=qd−q\tau = M(q)\big(\ddot{q}_d + K_d\dot{e} + K_p e\big) + C(q,\dot q)\dot q + g(q),\quad e = q_d - q
计算力矩法:闭环变成 ë + K_d ė + K_p e = 0
F=Λ(q) x¨∗+μ(q,q˙)+p(q),τ=J⊤F+(I−J⊤Jˉ⊤) τ0F = \Lambda(q)\,\ddot x^{*} + \mu(q,\dot q) + p(q),\qquad \tau = J^{\top}F + (I - J^{\top}\bar J^{\top})\,\tau_0
操作空间控制与动态一致零空间
自测:学完应该能回答
  1. 计算力矩法要求模型精确,模型误差 10% 时闭环会怎样?
  2. 阻抗控制与导纳控制的区别是什么?各适合什么硬件?

推荐资料(全部免费)

3非线性控制与安全关键控制 Nonlinear, Adaptive & Safety-Critical Control

⏱ 约 25 小时

线性化只在工作点附近有效。李雅普诺夫理论给出非线性系统稳定性的通用语言;反馈线性化、滑模、反步法是经典设计工具;控制屏障函数(CBF)把安全约束写成可在线求解的 QP;自适应控制与 L1 自适应则处理未知参数。双足的混合零动力学(HZD)是把这些组合起来的漂亮案例。

核心要点

  • 李雅普诺夫稳定性、LaSalle 不变集、区域吸引域(RoA)估计
  • 反馈线性化与零动力学;滑模与鲁棒性;反步法
  • 控制李雅普诺夫函数(CLF)与控制屏障函数(CBF):把稳定与安全写成 QP 约束——安全滤波器
  • 自适应控制、L1 自适应、基于学习的残差补偿(Neural-Fly)
  • 混合零动力学(HZD):虚拟约束驱动的双足步态设计

关键公式

V(x)>0,    V˙(x)=∇V⊤f(x,u)<0⇒渐近稳定V(x) > 0,\;\; \dot V(x) = \nabla V^{\top} f(x,u) < 0\quad\Rightarrow\quad \text{渐近稳定}
李雅普诺夫直接法
u∗=arg⁡min⁡u∥u−unom∥2   s.t. ∇h(x)⊤(f(x)+g(x)u)≥−α h(x)u^{*} = \arg\min_u \|u - u_{\text{nom}}\|^2\;\text{ s.t. } \nabla h(x)^{\top}\big(f(x)+g(x)u\big) \ge -\alpha\, h(x)
CBF 安全滤波器 QP
自测:学完应该能回答
  1. CBF 的参数 α 变大 / 变小分别意味着什么?
  2. 反馈线性化后的零动力学不稳定会有什么后果?

推荐资料(全部免费)

4LQR、动态规划与 HJB LQR, Dynamic Programming & HJB

⏱ 约 25 小时

最优控制把「控制器设计」变成「写代价函数」。LQR 是唯一有闭式解的最优控制问题,也是理解一切的锚点;动态规划(贝尔曼方程)给出最优性的原理,同时是强化学习的数学起点。

核心要点

  • 代价函数、贝尔曼最优性原理、值函数 / 代价到达函数 J*(x)
  • 离散 LQR:向后递推 Riccati 方程,得到线性反馈 u = −Kx;无限时域 LQR 与代数 Riccati 方程
  • 时变 LQR(TVLQR)沿轨迹稳定非线性系统;LQR 与可控性、鲁棒性的联系
  • HJB 方程(连续时间)与 Pontryagin 极小值原理;值迭代在网格上求解低维问题
  • 随机 LQR / LQG:加噪声后为什么最优控制律不变(分离原理)

关键公式

J=∑k=0N−1(xk⊤Qxk+uk⊤Ruk)+xN⊤QNxN,uk=−KkxkJ = \sum_{k=0}^{N-1} \big(x_k^{\top}Qx_k + u_k^{\top}Ru_k\big) + x_N^{\top}Q_N x_N,\qquad u_k = -K_k x_k
离散时间 LQR
Pk=Q+A⊤Pk+1A−A⊤Pk+1B (R+B⊤Pk+1B)−1B⊤Pk+1AP_k = Q + A^{\top}P_{k+1}A - A^{\top}P_{k+1}B\,(R + B^{\top}P_{k+1}B)^{-1}B^{\top}P_{k+1}A
Riccati 向后递推
J∗(x)=min⁡u[ ℓ(x,u)+J∗(f(x,u)) ]J^{*}(x) = \min_u \big[\,\ell(x,u) + J^{*}(f(x,u))\,\big]
贝尔曼方程(动态规划)
自测:学完应该能回答
  1. 为什么 LQR 的最优控制律是线性的、且与初始状态无关?
  2. 动态规划的「维数灾难」具体指什么?MPC 和 RL 分别如何绕开它?

推荐资料(全部免费)

5轨迹优化:直接法、DDP / iLQR Trajectory Optimization

⏱ 约 30 小时

当系统非线性、有约束、维数高时,闭式解不存在,就把「找一条最优轨迹」写成非线性规划来求解。直接法(打靶 / 配点)把整条轨迹当决策变量交给 NLP 求解器;DDP / iLQR 则利用动态规划的结构做高效的二阶迭代。这是现代足式与操作机器人运动生成的核心工具。

核心要点

  • 直接法:直接打靶(single shooting)、多重打靶、直接配点(direct collocation);转录成 NLP 用 IPOPT / SNOPT 求解
  • 间接法与 Pontryagin:伴随变量、为什么工程上更常用直接法
  • DDP / iLQR:沿名义轨迹向后传递值函数二次近似,向前滚动更新;线搜索与正则化
  • 处理约束:惩罚、增广拉格朗日(ALTRO)、带约束的 iLQR;接触隐式轨迹优化
  • 轨迹优化 + TVLQR = 开环规划 + 闭环稳定的经典组合

关键公式

min⁡x0:N, u0:N−1∑k=0N−1ℓ(xk,uk)+ℓN(xN)s.t. xk+1=f(xk,uk),  x0=xˉ0,  c(xk,uk)≤0\min_{x_{0:N},\,u_{0:N-1}} \sum_{k=0}^{N-1}\ell(x_k,u_k) + \ell_N(x_N)\quad\text{s.t. } x_{k+1} = f(x_k,u_k),\; x_0 = \bar x_0,\; c(x_k,u_k) \le 0
离散时间轨迹优化(直接转录)
δuk∗=−Quu−1(Qu+Qux δxk)=kk+Kk δxk\delta u_k^{*} = -Q_{uu}^{-1}\big(Q_u + Q_{ux}\,\delta x_k\big) = k_k + K_k\,\delta x_k
DDP / iLQR 的向后传递给出前馈 k 与反馈 K
自测:学完应该能回答
  1. 直接配点为什么比单打靶数值上更稳定?代价是什么?
  2. iLQR 与 DDP 的区别在哪一项?为什么 iLQR 通常够用?

推荐资料(全部免费)

6模型预测控制(MPC) Model Predictive Control

⏱ 约 30 小时

MPC 的思想极简:每个控制周期在线求解一个有限时域轨迹优化,只执行第一步,下一周期重来。它天然处理约束、能利用最新状态估计,是当今四足 / 人形机器人(MIT Cheetah、ANYmal、Atlas)运动控制的骨干。

核心要点

  • 滚动时域原理、稳定性与可行性(终端代价 / 终端约束)、鲁棒 MPC 与管道 MPC 概览
  • 线性 / 凸 MPC:写成 QP,用 OSQP / qpOASES 在 kHz 级实时求解;显式 MPC
  • 非线性 MPC:实时迭代(RTI)、SQP 只做一步、acados / OCS2 等框架;warm start 的重要性
  • 足式机器人 MPC:SRBD 凸 MPC(Cheetah 3)、质心 + 全身运动学 NMPC(ANYmal / OCS2)、感知地形 MPC
  • MPC 与学习的结合:学习代价函数、学习动力学残差、把策略当作 warm start 或终端值函数

关键公式

min⁡u0:N−1∑k=0N−1∥xk−xkref∥Q2+∥uk∥R2   s.t. xk+1=Axk+Buk,  u∈U,  x∈X;执行 u0∗\min_{u_{0:N-1}} \sum_{k=0}^{N-1} \|x_k - x_k^{\text{ref}}\|_Q^2 + \|u_k\|_R^2\;\text{ s.t. } x_{k+1} = Ax_k + Bu_k,\; u\in\mathcal U,\; x\in\mathcal X;\quad\text{执行 } u_0^{*}
线性 MPC:每步求解一个 QP,只执行第一步
自测:学完应该能回答
  1. 为什么 MPC 只执行第一步就重解?它相比一次性轨迹优化 + TVLQR 的优势和代价各是什么?
  2. 四足机器人为什么可以用单刚体模型做 MPC 而忽略腿的动力学?

推荐资料(全部免费)

7全身控制(WBC)与分层 QP Whole-Body Control & Hierarchical QP

⏱ 约 20 小时

全身控制在 500 Hz–1 kHz 下把 MPC 输出的质心 / 末端期望转换成每个关节的力矩:以全身动力学为等式约束,接触摩擦锥与力矩限制为不等式约束,把多个任务按优先级(严格分层或加权)写成 QP 求解。它是「简化模型规划 → 真机关节」之间的关键一层。

核心要点

  • 任务的定义:加速度级 / 力级任务,Jẍ 形式;接触约束 J_c q̈ + J̇_c q̇ = 0
  • 加权 QP vs 严格分层 QP(零空间投影 / 级联 QP);优先级设计的经验
  • 接触力分配:摩擦锥、单边约束、内力最小化;力矩 / 关节限位
  • 与 MPC 的分工:MPC 给参考轨迹与接触力,WBC 负责一致性与瞬时约束
  • 实现细节:求解器选择(qpOASES / OSQP / ProxQP)、热启动、kHz 级时序

关键公式

min⁡q¨, λ, τ  ∑iwi∥Jiq¨+J˙iq˙−x¨id∥2   s.t. Mq¨+h=S⊤τ+Jc⊤λ,  λ∈Kμ,  ∣τ∣≤τmax⁡\min_{\ddot q,\,\lambda,\,\tau}\; \sum_i w_i\|J_i\ddot q + \dot J_i\dot q - \ddot x_i^{d}\|^2\;\text{ s.t. } M\ddot q + h = S^{\top}\tau + J_c^{\top}\lambda,\; \lambda\in\mathcal{K}_\mu,\; |\tau|\le\tau_{\max}
加权全身控制 QP
自测:学完应该能回答
  1. 为什么 WBC 要把全身动力学作为等式约束而不是直接用计算力矩法?
  2. 严格分层与加权 QP 各自的优缺点?

推荐资料(全部免费)