ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

第199篇 非线性控制基础——Lyapunov稳定性分析

第199篇 非线性控制基础——Lyapunov稳定性分析 前面聊了PID、LQR、LQG、MPC、自适应控制、鲁棒控制。这些方法有一个共同点大部分基于线性系统理论。PID是线性的LQR/LQG是线性的MPC的标称版本也是线性的。但实际机器人系统本质上是非线性的。机械臂的科氏力和离心力项是状态的二次函数。四旋翼的旋转运动用四元数描述本身就是非线性的。双足机器人的接触碰撞模型是分段非线性的。线性控制方法在非线性系统上能用吗能用但只在平衡点附近的小范围内有效。一旦偏离平衡点太远线性近似就不准了控制性能急剧下降甚至失稳。怎么办需要非线性控制的工具。最核心的工具就是Lyapunov稳定性分析。一、什么是Lyapunov稳定性Lyapunov稳定性的直觉理解很简单一个球放在碗里你轻轻推一下球晃一晃又回到碗底——这就是稳定。球放在山顶上你轻轻推一下球滚下去了——这就是不稳定。数学上Lyapunov稳定性有三种级别稳定Stable从平衡点附近出发的轨迹永远停留在平衡点附近。不要求回到平衡点但至少不会跑远。渐近稳定Asymptotically Stable不仅稳定而且轨迹最终会收敛到平衡点。碗底的球最终会停下来。指数稳定Exponentially Stable渐近稳定的加强版——收敛速度有指数衰减的下界保证。收敛得足够快。控制工程中最关心的是渐近稳定。你设计了一个控制器不仅希望系统不跑飞稳定还希望系统最终能到达目标渐近稳定而且收敛速度要够快指数稳定。二、Lyapunov直接法不用解方程就能判断稳定性Lyapunov最大的贡献是直接法也叫第二方法你不需要求解微分方程就能判断系统的稳定性。怎么做找一个Lyapunov函数V(x)。V(x)需要满足三个条件V(x) 0对所有x不等于0正定性V(0) 0V_dot(x) 0沿系统轨迹的导数非正能量在减少或不增如果找到这样的V(x)系统就是稳定的。如果V_dot(x) 0严格负系统就是渐近稳定的。V(x)的物理意义是什么你可以把它理解为系统的广义能量。碗底的球势能最小。球偏离碗底势能增大。如果系统运动过程中能量一直在减少V_dot 0那球最终一定会停在碗底。这就是Lyapunov直接法的精髓你不需要知道球具体怎么运动不用解微分方程只需要证明能量一直在减少就能断言球最终会停在碗底。三、怎么找Lyapunov函数找Lyapunov函数是这门手艺中最难的部分。没有通用方法需要经验和技巧。几个常见套路二次型V(x) x^T * P * xP是正定矩阵。这是最常用的选择对线性系统x_dot AxV_dot x^T(A^TP PA)x要求A^TP PA 0负定。这就是Lyapunov方程和LQR的Riccati方程有直接关系。能量函数对机械系统动能势能天然就是一个Lyapunov函数候选。比如单摆V 0.5ml^2theta_dot^2 mgl(1-cos(theta))动能加势能正定且沿轨迹递减有阻尼时。** backstepping构造**对特殊结构的非线性系统严格反馈形式可以递推地构造Lyapunov函数。从最简单的子系统开始一步步后退构造完整的Lyapunov函数。这个方法在非线性控制教材里是重点。讲真找Lyapunov函数在研究中经常靠试。先猜一个形式通常是二次型或能量函数算V_dot看是不是负定。如果不是调整V的形式再试。做多了就有直觉了。补充一个实用技巧对线性系统你可以直接用LQR的P矩阵当Lyapunov函数。因为LQR的Riccati方程A^TP PA - PBR^{-1}B^TP Q 0本身就保证了A^TP PA 0在闭环系统下。所以如果你已经设计了LQR控制器Lyapunov函数是免费附赠的。对非线性系统一个常用策略是先在平衡点线性化用线性系统的Lyapunov函数作为候选然后在非线性系统上验证。如果V_dot在某个邻域内负定那这个邻域就是吸引域domain of attraction。四、用Lyapunov设计控制器Lyapunov方法不仅能分析稳定性还能直接用来设计控制器。思路是先选一个Lyapunov函数候选V(x)然后设计控制律u(x)使得V_dot 0。举个例子。系统x_dot f(x) g(x)u。选V(x) 0.5x^T*x。V_dot x^T * (f(x) g(x)*u)要让V_dot 0可以选u -g(x)^{-1} * (f(x) K*x)其中K是正定矩阵。代入后V_dot -x^TKx 0系统渐近稳定。这个方法叫Lyapunov-based control design。在机器人领域用得非常多——机械臂的 computed torque control本质上就是Lyapunov设计。import numpy as np # 例用Lyapunov方法设计非线性控制器 # 系统: x_dot -x^3 u (一维非线性系统) # 目标: 让x收敛到0 # 选Lyapunov函数 V 0.5 * x^2 # V_dot x * x_dot x * (-x^3 u) # 要让V_dot 0, 选 u -k*x x^3 (k 0) # 代入: V_dot x * (-x^3 - k*x x^3) -k * x^2 0 k 2.0 # 控制增益 def controller(x): 基于Lyapunov的控制律 return -k * x x**3 # 仿真验证 dt 0.01 x 2.0 # 初始偏离 traj [x] for i in range(500): u controller(x) x (-x**3 u) * dt traj.append(x) print(f初始: x{traj[0]:.2f}, 最终: x{traj[-1]:.4f}) # 输出: 初始: x2.00, 最终: x≈0.0000 # 验证: 系统确实收敛到0这个例子虽然简单但展示了Lyapunov设计的完整流程选V(x)、算V_dot、设计u使得V_dot 0、验证收敛。五、面试实战QLyapunov稳定性分析和线性系统的极点分析有什么关系A对线性系统x_dot AxLyapunov方程A^TP PA -Q等价于要求A的所有特征值在左半平面。Lyapunov方法是极点分析的推广——它能处理非线性系统。Q找不到Lyapunov函数怎么办A找不到不代表系统不稳定只代表你选的方法不对。可以试不同形式的V(x)二次型、能量函数、积分型。也可以反过来——用sum-of-squaresSOS优化方法自动搜索Lyapunov函数但计算量大。QLyapunov方法在机器人领域怎么应用A太多了。机械臂的computed torque control、移动机器人的轨迹跟踪、四旋翼的姿态控制、双足机器人的步态稳定都用Lyapunov方法证明稳定性。面试时你能举出一个具体应用的Lyapunov函数构造过程基本就过关了。小结Lyapunov稳定性分析是非线性控制的基石。核心思想找一个广义能量函数V(x)证明它沿系统轨迹递减就能断言系统稳定。Lyapunov方法不仅能分析稳定性还能直接设计控制器——选V(x)然后反推让V_dot 0的控制律。找Lyapunov函数没有通用方法需要经验和技巧。二次型和能量函数是最常见的候选。做多了就有直觉了。下篇聊滑模控制——一种基于Lyapunov方法的强鲁棒非线性控制方案。对扰动和参数变化免疫代价是控制信号会高频切换。如果这篇文章对你有帮助欢迎点赞、在看、转发三连。 你的支持是我持续更新的最大动力。「机器人软件开发面试·从入门到精通」连载系列上一篇第198篇 鲁棒控制——在不确定性中保持稳定下一篇预告第200篇 滑模控制——对扰动免疫的强鲁棒方案有任何问题欢迎评论区留言我会尽量回复。
返回列表