非线性控制理论
函数的正定与负定:
V为李雅普诺夫函数,对于非线性系统[dotX]=f([X])而言,dotV的求解公式如下:
以一个单摆系统为例,其状态方程如下:
那么怎么确定V呢?技巧是从能量角度入手:
如果给系统加上摩擦,那么状态空间方程将变为:
可以看到从物理上看,无摩擦的系统是非渐进稳定的,而有摩擦的系统是渐进稳定的
但是从数学角度上看,我们只证明了两个系统均是稳定的,但对是否渐进稳定无法判定
于是我们引入不变性原理来判断系统的渐进稳定性:
一个系统是渐进稳定的,意味着其存在一个V,满足:
V为正定,范围内dotV为半负定,dotV仅在[X]=0时值为0
确切地说,第三个条件是指dotV沿任意不过零点的轨迹移动值都不为0
于是我们分析有摩擦的系统,可以发现其前两条条件满足,对于第三个条件:
当dotV=0时仅有x2=0,因而能使dotV=0仅在x2=0这条轨迹上可能成立,故对于所有的时间t来说,dotx2都等于0,故可以求得此时仅可能x1=x2=0,因而条件三也成立,系统渐进稳定
同理对于无摩擦系统而言,条件三并不满足,故系统不是渐进稳定的。
非线性系统稳定性设计:
目的是设计输入u=f(x)使新的闭环系统相比原开环系统而言具有更好的稳定性
常见的方法有两种,一种是设计输入直接消除状态方程的非线性部分并使其线性稳定
例如下面这个例子,可以看到u=f(x)提供了两方面的支持,前半部分消除了状态方程的非线性部分,后半部分为系统提供了稳定的特征值(极点),这种方法非常简单粗暴,但有时候并不那么容易实现,结果也并非最优
另一种方法是使用李雅普诺夫直接法,根据系统状态方程和李雅普诺夫函数,设计输入u=f(x)使dotV负定即可,如下面这个例子所示:
可以看到设计非线性系统稳定性有很多种方法,但设计出的函数效果却有差别。
反馈线性化控制:(反步设计法)
目的是利用u使x趋近x1d,以下面这个状态空间方程为例:
由于这个系统中x2直接控制x1,而u直接控制x2,故控制链应为u->x2->x1,这被称之为链式控制,为了控制u使x1趋近x1d,我们应该分两步:首先找到一个x2d控制x1使x1趋近x1d,再设计一个u控制x2使x2趋近x2d。
那么首先来看第一步,找到一个x2d控制x1使x1趋近x1d:
为了表现x1趋近x1d的过程,引入新状态e=x1d-x1->0,亦即李雅普诺夫函数V1(e)满足稳定性判据即可,故我们设计V(e)=0.5e^2,为了使dotV(e)=edote负定,可以设计dote=-k1e来实现,由我们找到了设计x2d的函数。
接下来看第一步,设计一个u控制x2使x2趋近x2d:
为了表现x2趋近x2d的过程,引入新状态δ=x2d-x2->0,现在我们的目标就是使δ,e->0,所以我们要设计新的李雅普诺夫函数V2(e,δ)满足稳定性判据,故我们设计V2(e,δ)=0.5e^2+0.5δ^2,
为了使dotV(e,δ)=edote+δdotδ负定,可以设计e+dotδ=-k2*δ来实现,由此我们找到了设计u的函数:
式中e=x1d-x1,δ=x2d-x2,其中x1d为给定的,而x1和x2是可观的,x2d是由和x1d求得的,故u就是确定的。也就是说我们只需要得到x1d,x1和x2就可以得到一个输入u使x趋近x1d,这也就是反馈线性化控制的目标。
非线性自适应控制器:
之前的反步设计法中有一个前提,那就是系统的参数矩阵a我们是知道的,但很多情况下这个值可能多变或不可知,这时候就要找到一个自适应的控制器去实现。
以下面这个轨迹追踪系统使x->xd为例:
如果a已知,那么用之前的理论可以容易设计出输入u=dotxd-ax^2+ke
但如果现在a不可知怎么办呢?虽然a不可知,但我们可以认为a为一常数,即dot{a}=0
我们设计一个估计值hat{a},估计值与真实值的估计误差为tilde{a}=a-hat{a}
则dot{tilde{a}}=dot{a}-dot{hat{a}}=-dot{hat{a}}
于是我们定义李雅普诺夫函数V(e,tilde{a})=0.5e^2+0.5tilde{a}^2
而此时的输入u应设计为与估计值hat{a}相关,即u=dot{xd}-hat{a}x^2+ke
为了使dotV(e)负定,应设计dot{tilde{a}}=-ex^2,故输入u即为:
非线性鲁棒控制器:
鲁棒控制器的目标相比自适应控制器来说更加苛刻,此时a不仅是不可知的,而且是在有界下变动的。这个时候的u应该怎么设计呢?我们介绍三种非线性鲁棒控制器,分别是滑膜控制,High Gain和High Frequency。
假设此时的系统为dot{x}=f(x)=u,目标是设置u使x->xd,有界判定是|f(x)|<ρ(x)(ρ自设)
非线性鲁棒控制器指出可以把输入设成如下形式,其中Uaux的设置取决于不同的控制方法:
①滑膜控制:设置输入u如下:
证明将u设置成这种形式可以使偏差e稳定:
可以看到随着t->∞,不等式右边逐渐趋向于0,故e也一定在t->∞时趋向于0,这是一种指数的渐进稳定。这么设置的缺点在于sgn(e)会在1和-1间突变,导致输入u也会突变,这可能是对执行器的一种挑战。
②High Gain:设置输入u如下:
证明将u设置成这种形式可以使偏差e稳定:
可以看到当ρ|e|>epsilon时dotV(e)负定,e会趋于0
可以看到当ρ|e|<=epsilon时随着t->∞,e虽然不会趋于0,但也会趋于一个有限的小值。这个小值受epsilon影响,可以看到设置的输入u越大(即epsilon越小),系统最终的偏差也会越小,可以明白High Gain即是用足够大的输入去抵消系统的不确定性。
③High Frequency:设置输入u如下:
可以看到当epsilon=0时其即为滑膜控制,而当epsilon!=0时其值小于1,因而整体更加平和。
证明将u设置成这种形式可以使偏差e稳定:
可以看到与High Gain一样,High Frequency也会使系统最终趋向于一个同样的有限小值。同样的,设置的输入u越大(即epsilon越小),系统最终的偏差也会越小。
④对比讨论:
总结一下,三种非线性鲁棒控制器各有优劣,epsilon的选值也体现了系统是更重视输入还是收敛,定性的排名如下所示,其中5表示最强1表示最弱。