本页目录
进阶 I · 非线性控制
层次:研究生核心 | 🔗 前置:动力系统与相图(数学站)。 第二页说过:经典控制的整座大厦建立在线性化之上。但真实系统总是非线性的,而且有些非线性本质上无法线性化——饱和、摩擦、间隙,以及那些只在非线性系统中才存在的现象。本页讲非线性系统特有的行为,以及处理它们的主要工具。
学习层:用一个阻尼单摆分开“能量证书”和“实际翻转”
1. 具体工程谜题:能量低于倒立势垒,是否足以保证摆不翻?
把摆的长度、重力和质量归一化为 1,角度 \(\theta\) 按 \(2\pi\) 周期解释,角速度为 \(\omega\)。无外力时
工程师要审计的不是一条好看的轨迹,而是三件不同的事:Lyapunov 能量能否给出不越过 \(V=2\) 的证书;有阻尼时初始能量高于 2 是否真的翻转;以及数值积分是否确实让未包裹角度穿过奇数个 \(\pi\)。
预测门,必须先作答:
- \(\dot V=-c\omega^2\) 对 \(c>0\) 说明能量怎样变化?
- 初始 \(V<2\) 的能量子水平集能否在无外力阻尼下越过 \(V=2\)?
- 初始 \(V>2\) 是否单凭能量就能断言一定翻转?
2. 正式模型:V=2 阈值、保守 separatrix 与实际翻转不是同一栏
取
对 \(c>0\),初始 \(V<2\) 是一个不越过 \(V=2\) 的充分能量子水平集证书;这只说明不会从该集合穿出,不等于每个 \(V>2\) 初值都一定翻转,因为途中会耗散能量。\(V=2\) 在 \(c=0\) 的保守系统中才是相平面 separatrix 的能级;\(c>0\) 时实验把它命名为“V=2 能量阈值”,不把阈值穿越冒充 separatrix 穿越。
实际翻转另用未包裹的 \(\theta\) 记账:轨迹穿过奇数个 \(\pi\) 的事件才计为一次翻转,净转数用 \((\theta_f-\theta_0)/(2\pi)\) 报告。相平面应理解为圆柱 \(\theta\bmod 2\pi\);下垂平衡在该圆柱上对除倒立平衡及其稳定流形外的初值几乎全局吸引,不能说成 \(\mathbb R^2\) 上唯一的全局平衡。
3. 动手实验:用 RK4、能量表和未包裹角度交叉核对
先提交三项预测,再调初始角度、初始角速度、阻尼、仿真时长和 RK4 步长。相轨使用周期化角度,能量图单独标出 \(V=2\) 阈值;ledger 同时列 \(V\)、解析 \(\dot V\)、能量证书和未包裹角度。结果区把“V=2 阈值穿越”和“实际翻转(奇数 \(\pi\) 穿越)”分开,避免把 \(V>2\) 的初始条件误读成翻转保证。
JavaScript 失效时的静态 fallback:默认取
初始能量为 \(V_0=0.652763\),末端能量为 \(V_f=0.065700\),最大逐步能量上升为 \(0\)(显示精度内);初始/末端能量证书都是 inside-safe-sublevel,没有 V=2 阈值穿越,也没有实际翻转。
| step | \(t\) (s) | \(\theta\bmod 2\pi\) (rad) | \(\omega\) (rad/s) | \(V\) | \(\dot V\) | energy certificate |
|---|---|---|---|---|---|---|
| 0 | 0.00 | 1.150 | 0.350 | 0.6528 | -0.0245 | inside-safe-sublevel |
| 1 | 0.04 | 1.163 | 0.311 | 0.6519 | -0.0193 | inside-safe-sublevel |
| 2 | 0.08 | 1.175 | 0.272 | 0.6512 | -0.0148 | inside-safe-sublevel |
| 300 | 12.00 | 0.018 | 0.362 | 0.0657 | -0.0262 | inside-safe-sublevel |
这些读数是单位重力/长度/质量、无外力、确定性 RK4 的一条轨迹,不是对受控或受扰摆的普适翻转概率。
4. 误区与模型边界
- \(V<2\) 是充分证书,不是“数值看起来没翻”的事后判断:对无外力阻尼模型,能量不增使该子水平集保持;数值步长过大时仍需检查积分误差。
- \(V>2\) 不是翻转定理:它只表示初始能量高于保守势垒;有阻尼时可能在到达奇数 \(\pi\) 前耗散掉,实际翻转必须看未包裹角度事件。
- separatrix 的用词有条件:\(c=0\) 时 \(V=2\) 是保守相平面的 separatrix;\(c>0\) 时实验只显示同一能量阈值和 c=0 参考曲线。
- LaSalle 不能把 \(\omega=0\) 整条线当平衡集:\(\dot V=0\) 的最大不变子集还要满足 \(\dot\omega=0\),因此留下下垂与倒立等平衡结构。
- 模型边界:外力矩、控制输入、库仑/粘性摩擦、参数失配和离散控制器会改变能量账;这里的 \(V\) 证书不能自动覆盖受控/受扰系统。
迁移问题:你要给一个带制动器的倒立摆做安全包络。请分别写出:用 \(V<2\) 能证明的集合性质、需要由实际轨迹/可达性分析补的翻转证据,以及加入控制力矩和外部扰动后应如何重写 \(\dot V\) 与边界条件。
一、非线性系统特有的现象
线性系统的性质极其"温和":叠加成立、稳定性与初值无关、唯一平衡点、响应形状不随幅度变化。非线性系统全都不满足:
① 多个平衡点:单摆有稳定(下垂)与不稳定(倒立)两个平衡点。"系统是否稳定"这个问题本身必须改成"在哪个平衡点附近、多大范围内稳定"——引出吸引域(region of attraction)概念。
② 极限环:孤立的周期轨道,不依赖初始条件(线性系统的振荡幅度由初值决定,非线性极限环则收敛到固定幅度)。范德波尔振荡器是标准例子;实际中,带间隙或摩擦的伺服系统常出现极限环——表现为"稳不下来的小幅抖动",这是伺服调试中的常见故障。
③ 有限逃逸时间:\(\dot{x}=x^2\) 在有限时间内发散到无穷(线性系统只能指数发散,永远需要无限时间)。
④ 幅值依赖:小信号稳定不代表大信号稳定(这正是线性化只在工作点附近有效的原因)。
⑤ 混沌:确定性系统产生对初值极度敏感的不可预测行为。
二、工程中最常见的非线性
理论上的奇异现象固然有趣,但工程师日常遇到的主要是这几种:
| 非线性 | 表现 | 后果 |
|---|---|---|
| 饱和 | 执行器到限 | 积分饱和(第六页)、性能受限 |
| 死区 | 小输入无响应 | 静差、极限环 |
| 库仑摩擦 | 静摩擦大于动摩擦 | 爬行(stick-slip)、定位不准 |
| 间隙/回差 | 齿轮、丝杠的空程 | 极限环、换向误差 |
| 迟滞 | 输出取决于历史(磁滞、压电) | 定位重复性差 |
摩擦补偿是精密运动控制的经典难题:静摩擦使系统在低速时"走走停停"(爬行)。常用手段包括摩擦模型前馈补偿(LuGre 模型等)、加抖动信号(dither)、或用高刚度反馈"硬压"。没有通用完美解,通常需要针对具体机械结构调试。
三、Lyapunov 方法:不解方程判断稳定性
核心思想(极其优雅):找一个"广义能量函数" \(V(x)\),若它沿系统轨迹持续下降,则系统必然趋向能量最低点——即稳定。
Lyapunov 直接法:若存在 \(V(x)\) 满足
- \(V(0)=0\),且 \(V(x)>0\)(正定);
- \(\dot{V}(x) = \nabla V \cdot f(x) \le 0\)(沿轨迹不增),
则平衡点稳定;若 \(\dot{V}<0\)(严格负定)则渐近稳定。
它的威力在于不需要解微分方程——只需检验一个不等式。对非线性系统这至关重要,因为解析解通常不存在。
它的困难在于找 \(V\):没有通用构造法。常用套路——物理能量(机械系统的动能+势能是天然候选)、二次型 \(V=x^TPx\)(对线性系统,\(P\) 由 Lyapunov 方程给出)、以及平方和(SOS)规划等数值方法(近年可用凸优化自动搜索多项式 Lyapunov 函数,🔗 grad-math 优化线)。
LaSalle 不变集原理:当 \(\dot{V}\le0\) 但不严格负定时,可通过分析 \(\dot V = 0\) 的集合来判断收敛性——这在实际中极常用,因为严格负定往往难以达到。
Lyapunov 不只是分析工具,更是设计工具:反步法(backstepping)通过递归地构造 Lyapunov 函数来设计控制律,是非线性控制设计的主流方法之一。
四、几种主要的设计方法
① 反馈线性化:通过坐标变换与非线性反馈,精确抵消系统的非线性,使闭环成为线性系统。
- 优点:设计后可用全部线性工具;
- 致命弱点:依赖精确的模型抵消——模型有误差时抵消不完全,残余非线性可能造成严重问题。这与第四页"零极点对消"的陷阱是同一类风险;
- 还需注意内动态(零动态):被抵消后系统内部可能残留不可观的动态,若它不稳定(非最小相位),方法失效——第二页的右半平面零点在非线性版本中再次出现。
② 滑模控制(SMC):设计一个滑模面 \(s(x)=0\),用高增益切换控制把状态强行"压"到面上并沿其滑动。
- 优点:对匹配不确定性与扰动有极强的鲁棒性(这是它最大的卖点),且设计相对简单;
- 代价:切换造成抖振(chattering)——高频振荡会激发未建模动态、磨损执行器、产生噪声。缓解手段有边界层(用饱和函数代替符号函数,牺牲部分精度)、高阶滑模(super-twisting);
- 工业现实:抖振问题使纯滑模在很多场合难以直接应用,但滑模观测器(用于状态估计,无执行器磨损问题)应用相当广泛——例如第十二页的电机无位置传感器控制。这是一个"理论的某一半比另一半更实用"的典型例子。
③ 增益调度:在多个工作点线性化并各设计一个控制器,按工作点插值切换。
- 工业上最实用的"非线性"方法,广泛用于航空(随高度马赫数调度)、发动机、过程控制;
- 注意事项:切换过程本身可能不稳定(即使每个局部控制器都稳定!),需保证慢变化或使用有稳定性保证的构造(如 LPV 方法)。
④ 无源性与能量成形:利用系统的物理结构(能量守恒、无源性)设计控制器,如机器人的 PD + 重力补偿。这类方法有很好的鲁棒性与物理直观,在机器人学中广泛使用(第十九页)。
五、实用判断:什么时候真的需要非线性控制
诚实的工程判断(承导论的理论—实践落差):
大多数情况下不需要——线性控制 + 足够裕度 + 抗饱和 + 增益调度,已能覆盖绝大部分工业需求。
确实需要的场合:
- 工作范围极大,单个线性化模型无法覆盖(机器人大范围运动、飞行器全包线);
- 本质非线性主导(如强摩擦、间隙显著的精密定位);
- 对性能要求逼近物理极限(航天、高端伺服);
- 系统本身不稳定且非线性强(倒立摆类、某些飞行器)。
滑模与反馈线性化在论文中的出现频率,远高于它们在工业现场的部署频率——这不是说它们没用,而是说引入它们需要有明确的理由:额外的复杂度、调试难度与维护成本,必须被换来的性能所证明。
六、要点
- 非线性系统有线性系统不存在的现象:多平衡点、极限环、有限逃逸、幅值依赖、混沌;
- 工程中最常见的是饱和、死区、摩擦、间隙、迟滞——它们才是日常敌人;
- Lyapunov 方法不解方程判稳定,且经反步法成为设计工具;难点在于构造 \(V\);
- 反馈线性化依赖精确抵消(与零极点对消同类风险);滑模鲁棒但抖振,其观测器版本更实用;
- 增益调度是工业上最实用的非线性手段;
- 引入非线性方法需要明确理由——复杂度必须被性能收益证明。
下一页:既然模型总是错的,能不能把"模型有多错"直接写进设计?鲁棒控制——从 Doyle 反例出发的一整套理论。