当前位置:首页|资讯

反步法的基本原理及其应用设计

作者:学海行舟发布时间:2024-10-17

        反步法(Backsteping method)又称为后推法,是一种由前往后递推的设计方法,该方法所对应的系统是通过串联形成的非线性系统,最初由科克托维奇(Kokotovic)于1991年提出,该方法的提出最初是用于线性系统,随着研究的深入发现它针对非线性系统也有很好的控制。

        它的设计思想是将复杂的系统分解成若干个不超过原系统阶数的子系统,然后根据Lyapunov稳定性定理,针对每个子系统设计出中间的虚拟控制量,一直“反推”至整个系统,从而设计出系统的总控制律。

        这里我们以单输入单输出系统为例,对反步法的设计步骤进行阐述,我们考虑如下严格反馈形式的系统

%5Cbegin%7Bequation%7D%5Clabel%7Beq2%7D%0A%09%5Cleft%5C%7B%0A%09%5Cbegin%7Baligned%7D%0A%09%09%5Cdot%7Bx%7D_1%26%3Df_1(x_1)%2Bx_2%5C%5C%0A%09%09%5Cdot%7Bx%7D_i%26%3Df_2(x_1%2Cx_2%2C...%2Cx_i)%2Bx_%7Bi%2B1%7D%5C%5C%0A%20%20%20%20%20%20%20.%26..%5C%5C%0A%20%20%20%20%20%20%20%5Cdot%7Bx%7D_n%26%3Df_n(x_1%2Cx_2%2C...%2Cx_n)%2Bu%0A%0A%09%5Cend%7Baligned%7D%0A%09%5Cright.%0A%5Cend%7Bequation%7D

x%5Cin%20R%5En%2C%20u%5Cin%20R为系统的状态变量和控制输入变量。系统的非线性部分f_i(x_1%2Cx_2%2C...%2Cx_i)只与前i个状态变量相关

        反步法的基本设计方法是从第一个系统开始,逐级往下设计控制,最终实现控制目标。在第i步中,将子系统

%5Cdot%7Bx%7D_i%3Df_i(x_1%2Cx_2%2C...%2Cx_i)%2Bx_%7Bi%2B1%7D

x_%7Bi%2B1%7D作为虚拟控制,通过适当的虚拟控制

x_%7Bi%2B1%7D%3Da_%7Bi%2B1%7D(i%3D1%2C2%2C...%2Cn-1)

x_%7Bi%2B1%7D%3Da_%7Bi%2B1%7D,因此需要引入误差变量,我们依据Lyapunov稳定性设计,使得x_%7Bi%2B1%7D与虚拟控制a_%7Bi%2B1%7D之间的误差收敛。通过虚拟控制,我们定义了n个误差变量

%5Cbegin%7Bequation%7D%5Clabel%7Beq2%7D%0A%09%5Cleft%5C%7B%0A%09%5Cbegin%7Baligned%7D%0A%09%09e_1%26%3Dx_1-y_d%5C%5C%0A%09%09e_2%26%3Dx_2-a_2(x_1)%5C%5C%0A%20%20%20%20%20%20%20.%26..%5C%5C%0A%20%20%20%20%20%20%20e_n%26%3Dx_n-a_n(x_1%2Cx_2%2C...%2Cx_%7Bn-1%7D)%0A%0A%09%5Cend%7Baligned%7D%0A%09%5Cright.%0A%5Cend%7Bequation%7D

其中,在每一步构造Lyapunov函数使得系统每一个状态变量误差满足渐进稳定。

        Step 1:对e_1求导可得

%5Cdot%7Be%7D_1%3Df_1(x_1)%2Bx_2-%5Cdot%7By%7D_d%3Df_1(x_1)%2Be_2%2Ba_2-%5Cdot%7By%7D_d

           我们定义虚拟控制量

a_2%3D%5Cdot%7By%7D_d-f_1(x_1)-k_1e_1

k_1是反馈增益,则上式中的误差倒数可以表示为 

%5Cdot%7Be%7D_1%3De_2-k_1e_1

         我们会构造如下Lyapunov函数

V_1%3D%5Cfrac%7B1%7D%7B2%7De_1%5E2

          则

%5Cdot%7BV%7D_1%3De_1%5Cdot%7Be%7D_1%3D-k_1e_1%5E2%2Be_1e_2

e_2%3D0,则上式满足渐进稳定。但是一般情况下 e_2%20%5Cne%200,因此,我们需要在引入虚拟控制量a_3使其误差e_2%3Da_2-x_2使其满足渐进稳定。

        Step 2:对e_2求导可得

%5Cdot%7Be%7D_2%3Df_2(x_1%2Cx_2)%2Bx_3-%5Cdot%7Ba%7D_2%3Df_2(x_1%2Cx_2)%2Be_3%2Ba_3-%5Cdot%7Ba%7D_2

  我们定义虚拟控制量

a_3%3D%5Cdot%7Ba%7D_2-f_2(x_1%2Cx_2)-k_2e_2-e_1

k_2是反馈增益,则上式中的误差倒数可以表示为 

%5Cdot%7Be%7D_2%3De_3-k_2e_2-e_1

         我们会构造如下Lyapunov函数

V_2%3DV_1%2B%5Cfrac%7B1%7D%7B2%7De_2%5E2

          则

%5Cdot%7BV%7D_2%3D%5Cdot%7BV%7D_1%2Be_2%5Cdot%7Be%7D_2%3D-k_1e_1%5E2-k_2e_2%5E2%2Be_2e_3

e_3%3D0,则上式满足渐进稳定。但是一般情况下 e_3%20%5Cne%200,因此,我们需要在引入虚拟控制量a_4使其误差e_3%3Da_3-x_3使其满足渐进稳定。后面的设计以此类推。

        Step n:对e_n求导可得

%5Cdot%7Be%7D_n%3Df_n(x_1%2Cx_2%2C...%2Cx_n)%2Bu-%5Cdot%7Ba%7D_n

  我们设计控制输入

u%3D%5Cdot%7Ba%7D_n-f_n(x_1%2Cx_2%2C...%2Cx_n)-k_ne_n-e_%7Bn-1%7D

k_n是反馈增益,则上式中的误差倒数可以表示为 

%5Cdot%7Be%7D_n%3D-k_ne_n-e_%7Bn-1%7D

         我们会构造如下Lyapunov函数

V_n%3DV_%7Bn-1%7D%2B%5Cfrac%7B1%7D%7B2%7De_n%5E2

          则

%5Cdot%7BV%7D_n%3D%5Cdot%7BV%7D_%7Bn-1%7D%2Be_2%5Cdot%7Be%7D_2%3D-k_1e_1%5E2-k_2e_2%5E2...-k_ne_n%5E2

        由上式可以发现当反馈增益都大于零时,误差状态量是指数渐进稳定的。另外通过上面设计方法可知,反步法实际上是一种由前往后递推的设计方法,它比较适合在线控制。此外,反步法中引进的虚拟控制本质上是一种静态补偿思想。

        为了阐述上面的设计思路,我们以一个二阶非线性系统为例子进行设计说明,并在Matlab/Simulink环境下进行验证。

%5Cbegin%7Bequation%7D%5Clabel%7Beq2%7D%0A%09%5Cleft%5C%7B%0A%09%5Cbegin%7Baligned%7D%0A%09%09%26m%5Cddot%7Bx%7D%2Bc%5Cdot%7Bx%7D%2Bd%3Du%5C%5C%0A%09%09%26y%3Dx%0A%20%20%0A%20%20%20%20%20%0A%0A%09%5Cend%7Baligned%7D%0A%09%5Cright.%0A%5Cend%7Bequation%7D

m%2Cc%2Cd均为已知量,u表示控制输入,y表示系统的输出。

x_1%3Dx%2Cx_2%3D%5Cdot%7Bx%7D,则上面系统可以转化为

%5Cbegin%7Bequation%7D%5Clabel%7Beq2%7D%0A%09%5Cleft%5C%7B%0A%09%5Cbegin%7Baligned%7D%0A%09%09%26%5Cdot%7Bx%7D_1%3Dx_2%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%5Cdot%7Bx%7D_2%3D%5Cfrac%7B1%7D%7Bm%7D(u-cx_2-d)%5C%5C%0A%09%09%26y%3Dx_1%0A%20%20%0A%20%20%20%20%20%0A%0A%09%5Cend%7Baligned%7D%0A%09%5Cright.%0A%5Cend%7Bequation%7D

y_d为期望的输出。于是系统跟踪误差定义为

e_1%3Dy-y_d

         Step 1:对e_1求导可得

%5Cdot%7Be%7D_1%3Dx_2-%5Cdot%7By%7D_d%3De_2%2Ba_2-%5Cdot%7By%7D_d

          我们定义虚拟控制量

a_2%3D%5Cdot%7By%7D_d-k_1e_1

k_1是反馈增益,则上式中的误差倒数可以表示为 

%5Cdot%7Be%7D_1%3De_2-k_1e_1

         我们会构造如下Lyapunov函数

V_1%3D%5Cfrac%7B1%7D%7B2%7De_1%5E2

          则

%5Cdot%7BV%7D_1%3De_1%5Cdot%7Be%7D_1%3D-k_1e_1%5E2%2Be_1e_2

e_2%3D0,则上式满足渐进稳定。但是一般情况下 e_2%20%5Cne%200,因此,我们需要在引入虚拟控制量a_3使其误差e_2%3Da_2-x_2使其满足渐进稳定。

          Step 2:对e_2求导可得

%5Cdot%7Be%7D_2%3D%5Cfrac%7B1%7D%7Bm%7D(u-cx_2-d)-%5Cdot%7Ba%7D_2

   我们设计控制输入

u%3Dm(%5Cdot%7Ba%7D_2-e_1-k_2e_2)%2Bcx_2%2Bd

k_2是反馈增益,则上式中的误差倒数可以表示为 

%5Cdot%7Be%7D_2%3D-k_2e_2-e_1

         我们会构造如下Lyapunov函数

V_2%3DV_1%2B%5Cfrac%7B1%7D%7B2%7De_2%5E2

          则

%5Cdot%7BV%7D_2%3D%5Cdot%7BV%7D_1%2Be_2%5Cdot%7Be%7D_2%3D-k_1e_1%5E2-k_2e_2%5E2

y_d%3Dsin(10t),则选择适当的k_1k_2后可以得到如下的仿真结果

仿真结果1

        接着我们在t=5s的时候进行参考值的突变,仿真结果如下:

仿真结果2

       结果可以发现反步法具有很好的动态跟踪特性。

      虽然反步法具有很好的动态控制特性,但是它由于涉及到微分的运行,当系统的阶数很高时候会引起复杂性爆炸的问题。在后续博文中会介绍动态面控制去解决这个问题。


PS:最后公式码字不易,请大家多多点赞和转发。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1