反步法(Backsteping method)又称为后推法,是一种由前往后递推的设计方法,该方法所对应的系统是通过串联形成的非线性系统,最初由科克托维奇(Kokotovic)于1991年提出,该方法的提出最初是用于线性系统,随着研究的深入发现它针对非线性系统也有很好的控制。
它的设计思想是将复杂的系统分解成若干个不超过原系统阶数的子系统,然后根据Lyapunov稳定性定理,针对每个子系统设计出中间的虚拟控制量,一直“反推”至整个系统,从而设计出系统的总控制律。
这里我们以单输入单输出系统为例,对反步法的设计步骤进行阐述,我们考虑如下严格反馈形式的系统
为系统的状态变量和控制输入变量。系统的非线性部分只与前i个状态变量相关
反步法的基本设计方法是从第一个系统开始,逐级往下设计控制,最终实现控制目标。在第i步中,将子系统
作为虚拟控制,通过适当的虚拟控制
,因此需要引入误差变量,我们依据Lyapunov稳定性设计,使得与虚拟控制之间的误差收敛。通过虚拟控制,我们定义了n个误差变量
其中,在每一步构造Lyapunov函数使得系统每一个状态变量误差满足渐进稳定。
Step 1:对求导可得
我们定义虚拟控制量
是反馈增益,则上式中的误差倒数可以表示为
我们会构造如下Lyapunov函数
则
,则上式满足渐进稳定。但是一般情况下 ,因此,我们需要在引入虚拟控制量使其误差使其满足渐进稳定。
Step 2:对求导可得
我们定义虚拟控制量
是反馈增益,则上式中的误差倒数可以表示为
我们会构造如下Lyapunov函数
则
,则上式满足渐进稳定。但是一般情况下 ,因此,我们需要在引入虚拟控制量使其误差使其满足渐进稳定。后面的设计以此类推。
Step n:对求导可得
我们设计控制输入
是反馈增益,则上式中的误差倒数可以表示为
我们会构造如下Lyapunov函数
则
由上式可以发现当反馈增益都大于零时,误差状态量是指数渐进稳定的。另外通过上面设计方法可知,反步法实际上是一种由前往后递推的设计方法,它比较适合在线控制。此外,反步法中引进的虚拟控制本质上是一种静态补偿思想。
为了阐述上面的设计思路,我们以一个二阶非线性系统为例子进行设计说明,并在Matlab/Simulink环境下进行验证。
均为已知量,表示控制输入,表示系统的输出。
,则上面系统可以转化为
为期望的输出。于是系统跟踪误差定义为
Step 1:对求导可得
我们定义虚拟控制量
是反馈增益,则上式中的误差倒数可以表示为
我们会构造如下Lyapunov函数
则
,则上式满足渐进稳定。但是一般情况下 ,因此,我们需要在引入虚拟控制量使其误差使其满足渐进稳定。
Step 2:对求导可得
我们设计控制输入
是反馈增益,则上式中的误差倒数可以表示为
我们会构造如下Lyapunov函数
则
,则选择适当的和后可以得到如下的仿真结果
接着我们在t=5s的时候进行参考值的突变,仿真结果如下:
结果可以发现反步法具有很好的动态跟踪特性。
虽然反步法具有很好的动态控制特性,但是它由于涉及到微分的运行,当系统的阶数很高时候会引起复杂性爆炸的问题。在后续博文中会介绍动态面控制去解决这个问题。
PS:最后公式码字不易,请大家多多点赞和转发。