基于反步法backstepping的自适应控制简介

  • 反步法基础
    • 系统描述
    • 反步法运算
  • 基于反步法的自适应
    • 不可测量参数的规避
    • 不可测量参数的估计值的计算方法

反步法基础

反步法(Backstepping)是一种基于李雅普诺夫稳定性理论的现代控制方法,通过对控制量的数学处理达到稳定性控制的效果,其数学处理过程十分巧妙。
更加详细的反步法基础可以阅读笔者的Backstepping反步法控制四旋翼无人机(2)文章进行了解,本文在这里简单引入反步法的一些基本思想,为基于Backstepping的自适应控制打下基础。

系统描述

一般地,任意系统,不论是线性的还是非线性的,都可以写为以下形式:
x˙=f(x,t)+g(t)u\dot x = f(x, t) + g(t)u x˙=f(x,t)+g(t)u即系统的状态变量xxx的导数(变化速率)可以用x,t,ux,t,ux,t,u的函数来描述。
比如,对于最简单的匀加速直线运动系统,设状态变量为位移x=x1x=x_1x=x1​,速度v=x2v=x_2v=x2​,则根据F=maF = maF=ma有
x˙1=x2x˙2=Fm\begin{aligned} \dot x_1 = x_2 \\ \dot x_2 = \frac{F}{m} \end{aligned} x˙1​=x2​x˙2​=mF​​若把力FFF设为控制量uuu,那么可以将上式写成矩阵形式
[x˙1x˙2]=[0100][x1x2]+[01m]F\left[ \begin{matrix} \dot x_1 \\ \dot x_2 \end{matrix} \right] = \left[ \begin{matrix} 0&1 \\ 0&0 \end{matrix} \right] \left[ \begin{matrix} x_1 \\ x_2 \end{matrix} \right] + \left[ \begin{matrix} 0 \\ \frac{1}{m} \end{matrix} \right] F [x˙1​x˙2​​]=[00​10​][x1​x2​​]+[0m1​​]F
该例子为线性的例子,但非线性例子同样可以写为x˙=f(x,t,u)\dot x = f(x, t, u)x˙=f(x,t,u)的形式。

反步法运算

要使用反步法有一个小小的限制:最好将变量“分组”设为状态变量,如x2=x˙1x_2=\dot x_1x2​=x˙1​。以下举例进行说明反步法的简单运算,以二阶系统为例。

设有二阶系统
x˙1=x2x˙2=f(x,t,u)\begin{aligned} \dot x_1 &= x_2 \\ \dot x_2 &= f(x,t,u) \end{aligned} x˙1​x˙2​​=x2​=f(x,t,u)​其中函数fff为不显含x˙1,x˙2\dot x_1, \dot x_2x˙1​,x˙2​的函数。

设x1x_1x1​的期望值为xd1x_{d1}xd1​,则可以得到期望值与实际值的差,即误差
e1=xd1−x1(1)e_1 = x_{d1} - x_1 \tag{1} e1​=xd1​−x1​(1)设李雅普诺夫函数
V1(e1)=12e12V_1 (e_1) = \frac{1}{2} e_1^2 V1​(e1​)=21​e12​对其求导有
V˙1=e1e˙1=e1(x˙d1−x˙1)=e1(x˙d1−x2)\begin{aligned} \dot V_1 &= e_1 \dot e_1 \\ &= e_1 \left( \dot x_{d1} - \dot x_1 \right) \\ &= e_1 \left( \dot x_{d1} - x_2 \right) \end{aligned} V˙1​​=e1​e˙1​=e1​(x˙d1​−x˙1​)=e1​(x˙d1​−x2​)​为了满足李雅普诺夫稳定性理论,最好有V˙1=−α1e12≤0(α1>0)\dot V_1 = - \alpha_1 e_1^2 \leq 0 \quad (\alpha_1 >0)V˙1​=−α1​e12​≤0(α1​>0),也就是x˙d1−x2=−α1e1\dot x_{d1} - x_2 = - \alpha_1 e_1x˙d1​−x2​=−α1​e1​。在这个基础上可以得到x2=x˙d1+α1e1x_2 = \dot x_{d1} + \alpha_1 e_1x2​=x˙d1​+α1​e1​。但是,实际的x2x_2x2​不可能等于这个值,因此这个x2x_2x2​我们称之为“虚拟控制量”,用x2vx_2^vx2v​表示:
x2v=x˙d1+α1e1x_2^v = \dot x_{d1} + \alpha_1 e_1 x2v​=x˙d1​+α1​e1​那么,该虚拟控制量和实际x2x_2x2​之间又会存在一个误差:
e2=x2−x2v=x2−x˙d1−α1e1\begin{aligned} e_2 &= x_2 - x_2^v \\ &= x_2 - \dot x_{d1} - \alpha_1 e_1 \end{aligned} e2​​=x2​−x2v​=x2​−x˙d1​−α1​e1​​亦即
x2−x˙d1=e2+α1e1(2)x_2 - \dot x_{d1} = e_2 + \alpha_1 e_1 \tag{2} x2​−x˙d1​=e2​+α1​e1​(2)同时还能得到
e˙2=x˙2−x¨d1−α1e˙1(3)\dot e_2 = \dot x_2 - \ddot x_{d1} - \alpha_1 \dot e_1 \tag{3} e˙2​=x˙2​−x¨d1​−α1​e˙1​(3)
现在,设新的李雅普诺夫函数
V2(e1,e2)=12e12+12e22V_2 (e_1, e_2) = \frac{1}{2} e_1^2 + \frac{1}{2} e_2^2 V2​(e1​,e2​)=21​e12​+21​e22​并对其求导(其中考虑到(2)(3)式)
V˙2=e1e˙1+e2e˙2=e1(x˙d1−x2)+e2(x˙2−x¨d1−α1e˙1)=e1(−e2−α1e1)+e2[x˙2−x¨d1−α1(−e2−α1e1)]=−e1e2−α1e12+e2[f(x,t)+g(t)u−x¨d1+α1(e2+α1e1)](4)\begin{aligned} \dot V_2 &= e_1 \dot e_1 + e_2 \dot e_2 \\ &= e_1 \left( \dot x_{d1} - x_2 \right) + e_2 \left( \dot x_2 - \ddot x_{d1} - \alpha_1 \dot e_1 \right) \\ &= e_1 \left( -e_2 - \alpha_1 e_1 \right) + e_2 \left[ \dot x_2 - \ddot x_{d1} - \alpha_1 \left( -e_2 - \alpha_1 e_1 \right) \right] \\ &= -e_1 e_2 - \alpha_1 e_1^2 + e_2 \left[ f(x,t) +g(t) u - \ddot x_{d1} + \alpha_1 \left( e_2 + \alpha_1 e_1 \right) \right] \tag{4} \end{aligned} V˙2​​=e1​e˙1​+e2​e˙2​=e1​(x˙d1​−x2​)+e2​(x˙2​−x¨d1​−α1​e˙1​)=e1​(−e2​−α1​e1​)+e2​[x˙2​−x¨d1​−α1​(−e2​−α1​e1​)]=−e1​e2​−α1​e12​+e2​[f(x,t)+g(t)u−x¨d1​+α1​(e2​+α1​e1​)]​(4)稍加考虑即可发现,若令
u=1g(t)[x¨d1−f(x,t)−α1(e2+α1e1)+e1−α2e2](5)u = \frac{1}{g(t)} \left[ \ddot x_{d1} -f(x,t) - \alpha_1 \left( e_2 + \alpha_1 e_1 \right) + e_1 - \alpha_2 e_2 \right] \tag{5} u=g(t)1​[x¨d1​−f(x,t)−α1​(e2​+α1​e1​)+e1​−α2​e2​](5)那么将(5)代入(4)即有
V˙2=−α1e12−α2e22≤0\dot V_2 = -\alpha_1 e_1^2 - \alpha_2 e_2^2 \leq 0 V˙2​=−α1​e12​−α2​e22​≤0即满足李雅普诺夫稳定性,系统稳定。

可以看出,在整个过程中,通过在uuu表达式中增减相应的项,可以达到消除V˙2\dot V_2V˙2​中某些项的目的,从而使得V˙2\dot V_2V˙2​负定或半负定。这个过程完全通过数学运算来规避掉不确定因素,强行使得李雅普诺夫函数负定或半负定,而整个过程中需要确定的参量仅仅是α1,α2\alpha_1, \alpha_2α1​,α2​两个而已;而控制量uuu的运算也可以通过(5)式得到。

基于反步法的自适应

反步法是如此的优美,它仅仅通过数学运算,就规定了控制量uuu的取值方法,实际调参中仅调节α1,α2\alpha_1, \alpha_2α1​,α2​两个参数,就能达到不错的效果。很容易能想到,当系统中出现了无法预测、无法测量的扰动时,依然可以用相似的思想,用数学方法进行运算规避掉。下面进行简单介绍。

依然是该系统,但存在难以测量的扰动TTT:
x˙=f(x,t)+g(t)u+T\dot x = f(x, t) + g(t)u + T x˙=f(x,t)+g(t)u+T相应地应当有
V˙2=e1e˙1+e2e˙2=e1(x˙d1−x2)+e2(x˙2−x¨d1−α1e˙1)=e1(−e2−α1e1)+e2[x˙2−x¨d1−α1(−e2−α1e1)]=−e1e2−α1e12+e2[f(x,t)+g(t)u+T−x¨d1+α1(e2+α1e1)](6)\begin{aligned} \dot V_2 &= e_1 \dot e_1 + e_2 \dot e_2 \\ &= e_1 \left( \dot x_{d1} - x_2 \right) + e_2 \left( \dot x_2 - \ddot x_{d1} - \alpha_1 \dot e_1 \right) \\ &= e_1 \left( -e_2 - \alpha_1 e_1 \right) + e_2 \left[ \dot x_2 - \ddot x_{d1} - \alpha_1 \left( -e_2 - \alpha_1 e_1 \right) \right] \\ &= -e_1 e_2 - \alpha_1 e_1^2 + e_2 \left[ f(x,t) +g(t) u + T - \ddot x_{d1} + \alpha_1 \left( e_2 + \alpha_1 e_1 \right) \right] \tag{6} \end{aligned} V˙2​​=e1​e˙1​+e2​e˙2​=e1​(x˙d1​−x2​)+e2​(x˙2​−x¨d1​−α1​e˙1​)=e1​(−e2​−α1​e1​)+e2​[x˙2​−x¨d1​−α1​(−e2​−α1​e1​)]=−e1​e2​−α1​e12​+e2​[f(x,t)+g(t)u+T−x¨d1​+α1​(e2​+α1​e1​)]​(6)应当注意,在(6)式中将x˙2\dot x_2x˙2​表达式代入时,出现了TTT。
根据之前所述,TTT无法测量,因此无法得知其真实值。那么如果再按照(5)的方法设计uuu,那么uuu中势必会显含TTT:
u=1g(t)[x¨d1−f(x,t)−α1(e2+α1e1)+e1−α2e2−T](7)u = \frac{1}{g(t)} \left[ \ddot x_{d1} -f(x,t) - \alpha_1 \left( e_2 + \alpha_1 e_1 \right) + e_1 - \alpha_2 e_2 - T\right] \tag{7} u=g(t)1​[x¨d1​−f(x,t)−α1​(e2​+α1​e1​)+e1​−α2​e2​−T](7)而TTT未知,从而uuu也无法计算。
那么,该如何把这个不可测量的TTT规避掉呢?

不可测量参数的规避

既然TTT的真实值无法测量,不如引入一个估计值T^\hat TT^。很明显,该估计值是怎么“估计”得到的依然是个亟待解决的问题,但这不影响我们后续的推导,且在我们后续的推导中可以看出,该估计值的具体估计表达式实际上和TTT的真实值并无关系

设对于扰动TTT,其实际值与估计值之间的误差为
ε=T−T^(8)\varepsilon = T - \hat T \tag{8} ε=T−T^(8)且有
ε˙=T˙−T^˙\dot \varepsilon = \dot T - \dot {\hat T} ε˙=T˙−T^˙一般地,若将扰动视为瞬时的、脉冲性的,则在极短时间Δt\Delta tΔt内可以有T˙≈0\dot T \approx 0T˙≈0,因而
ε˙=−T^˙(9)\dot \varepsilon = - \dot {\hat T} \tag{9} ε˙=−T^˙(9)现在暂且把ε\varepsilonε放在一边,回来考虑控制量uuu的设计。既然在(7)中含有实际值TTT,无法计算uuu的准确值,那不如把(7)中的TTT替换成T^\hat TT^,这样一来,用估计值代入uuu表达式来计算uuu:
u=1g(t)[x¨d1−f(x,t)−α1(e2+α1e1)+e1−α2e2−T^](10)u = \frac{1}{g(t)} \left[ \ddot x_{d1} -f(x,t) - \alpha_1 \left( e_2 + \alpha_1 e_1 \right) + e_1 - \alpha_2 e_2 - \hat T\right] \tag{10} u=g(t)1​[x¨d1​−f(x,t)−α1​(e2​+α1​e1​)+e1​−α2​e2​−T^](10)换句话说就是,(7)中只有TTT这一项无法得知,那不如换成其估计值(因为估计值是一个已知的值),这样uuu就可以计算了。

现在看来,uuu可以利用T^\hat TT^计算了,满足(10)的uuu就可以使V2V_2V2​满足李雅普诺夫稳定性。可是,真正实施起来就会如此顺利吗?

不可测量参数的估计值的计算方法

细心的读者可能发现了,我们用T^\hat TT^替换掉TTT的大前提是,我们假设T^\hat TT^是已知量,是能算出来的。可是,TTT作为一个瞬发性扰动,无法预测、无法测量、极难建模,那又该用什么样的数学公式、什么样的方法去估计TTT得到T^\hat TT^呢?连TTT的数学模型都不知道,该如何估计它?

这里,我们回头检视我们的整个运算过程,会发现中间除了e1,e2e_1, e_2e1​,e2​,还出现了第三个误差量ε\varepsilonε。因此,不妨再次设计新的李雅普诺夫函数,把所有误差量都考虑进去:
V3(e1,e2,ε)=12e12+12e22+12λε2(11)V_3(e_1, e_2, \varepsilon) = \frac{1}{2} e_1^2 + \frac{1}{2} e_2^2 + \frac{1}{2 \lambda} \varepsilon^2 \tag{11} V3​(e1​,e2​,ε)=21​e12​+21​e22​+2λ1​ε2(11)对其求导(代入(9))
V˙3=e1e˙1+e2e˙2+εε˙=e1(x˙d1−x2)+e2(x˙2−x¨d1−α1e˙1)+1λε(−T^˙)=e1(−e2−α1e1)+e2[x˙2−x¨d1−α1(−e2−α1e1)]−1λεT^˙=−e1e2−α1e12+e2[f(x,t)+g(t)u+T−x¨d1+α1(e2+α1e1)]−1λεT^˙(12)\begin{aligned} \dot V_3 &= e_1 \dot e_1 + e_2 \dot e_2 + \varepsilon \dot \varepsilon \\ &= e_1 \left( \dot x_{d1} - x_2 \right) + e_2 \left( \dot x_2 - \ddot x_{d1} - \alpha_1 \dot e_1 \right) + \frac{1}{\lambda} \varepsilon \left( - \dot {\hat T} \right) \\ &= e_1 \left( -e_2 - \alpha_1 e_1 \right) + e_2 \left[ \dot x_2 - \ddot x_{d1} - \alpha_1 \left( -e_2 - \alpha_1 e_1 \right) \right] - \frac{1}{\lambda} \varepsilon \dot {\hat T} \\ &= -e_1 e_2 - \alpha_1 e_1^2 + e_2 \left[ f(x,t) +g(t) u + T - \ddot x_{d1} + \alpha_1 \left( e_2 + \alpha_1 e_1 \right) \right] - \frac{1}{\lambda} \varepsilon \dot {\hat T} \tag{12} \end{aligned} V˙3​​=e1​e˙1​+e2​e˙2​+εε˙=e1​(x˙d1​−x2​)+e2​(x˙2​−x¨d1​−α1​e˙1​)+λ1​ε(−T^˙)=e1​(−e2​−α1​e1​)+e2​[x˙2​−x¨d1​−α1​(−e2​−α1​e1​)]−λ1​εT^˙=−e1​e2​−α1​e12​+e2​[f(x,t)+g(t)u+T−x¨d1​+α1​(e2​+α1​e1​)]−λ1​εT^˙​(12)把显含T^\hat TT^的uuu的表达式(10)代入(12)有
V˙3=−α1e12−α2e22+e2(T−T^)−1λεT^˙=−α1e12−α2e22+e2ε−1λεT^˙(13)\begin{aligned} \dot V_3 &= - \alpha_1 e_1^2 - \alpha_2 e_2^2 + e_2 \left( T - \hat T \right) - \frac{1}{\lambda} \varepsilon \dot {\hat T} \\ &= - \alpha_1 e_1^2 - \alpha_2 e_2^2 + e_2 \varepsilon - \frac{1}{\lambda} \varepsilon \dot {\hat T} \tag{13} \end{aligned} V˙3​​=−α1​e12​−α2​e22​+e2​(T−T^)−λ1​εT^˙=−α1​e12​−α2​e22​+e2​ε−λ1​εT^˙​(13)显然,为了使V˙3≤0\dot V_3 \leq 0V˙3​≤0,最好有
e2ε−1λεT^˙=0(14)e_2 \varepsilon - \frac{1}{\lambda} \varepsilon \dot {\hat T} = 0 \tag{14} e2​ε−λ1​εT^˙=0(14)即
T^˙=λe2(15)\dot {\hat T} = \lambda e_2 \tag{15} T^˙=λe2​(15)换句话说,只要估计值T^\hat TT^满足了式(15),那么所得到的李雅普诺夫函数就是负定或者半负定的,系统就是稳定的
而可喜的是,即使我们并不知道TTT的实际数学模型,我们也不知道根据式(15)得到的“估计值”是否接近真实值,但是该估计值确实有效,它确实可以使系统稳定。只需要改变α1,α2,λ\alpha_1, \alpha_2, \lambdaα1​,α2​,λ三个参数,就可以使系统稳定。

更加值得注意的是,每次迭代运算中,e2=x2−x2ve_2 = x_2 - x_2^ve2​=x2​−x2v​的值都是改变的,因此T^˙\dot {\hat T}T^˙的值也是改变的,即每次迭代时T^˙\dot {\hat T}T^˙都可以“自适应”地去改变自身参数,以达到整体系统的稳定。我们不知道每次迭代时估计值T^\hat TT^有多接近真实值TTT,但是利用式(15)的确可以达到稳定。

因此,可以做出以下结论:

  1. 本质上,基于backstepping的自适应控制算法依然是利用数学技巧去进行某些项的消去操作强行使得最后的李雅普诺夫函数负定或者半负定;
  2. 与backstepping不同的是,控制量uuu的表达式中需要多出一项估计值T^\hat TT^;
  3. 该估计值是否能够准确估计TTT不得而知,估计规律T^˙=λe2\dot {\hat T} = \lambda e_2T^˙=λe2​是否正确也不得而知,但是该估计规律却可以帮助我们消项,并进一步达到李雅普诺夫函数的负定或半负定;
  4. 可以通过调节λ\lambdaλ参数来改变T^\hat TT^对TTT的“接近程度”,进而达到系统稳定。
  5. 笔者认为,该控制算法“自适应”之处在于,即使对扰动TTT无法建模,依然可以通过一些规律T^˙=λe2\dot {\hat T} = \lambda e_2T^˙=λe2​来维持系统稳定,而式(15)的有效性恰恰证明了该估计规律对TTT的实际值“适应”得很好。

在后续的笔记中,我会在基于反步法的四旋翼控制基础上,引入扰动项,并利用本文所讲述的自适应方法进行控制。请拭目以待!

基于反步法backstepping的自适应控制简介相关推荐

  1. 自适应反步法matlab,基于反步法的交流电机控制研究

    基于反步法的交流电机控制研究 交流电机是一种典型的非线性系统,对它的控制研究是当前控制领域中的热点问题,具有深刻的理论和应用意义.反步法是非线性控制发展的最新成果之一,它在设计不确定系统的鲁棒或自适应 ...

  2. 如何理解反步法设计控制器?

    反步设计是非线性控制器设计中的一种重要方法. 1. 基本思想 将复杂的非线性系统分解成不超过系统阶数的子系统,然后为每个子系统设计满足Lyapunov定律的标量函数和中间虚拟控制量,一直后退到整个系统 ...

  3. 反步法控制高超声速飞行器(源代码)

    仿真论文:<基于反步法的高超音速飞机纵向逆飞行控制>,控制与决策,2007,22(3) 一.高超声速数学模型 二.反步法控制器设计 (略) 三.仿真结果 QQ:2274579702

  4. 反步法+模糊函数逼近器控制高超声速飞行器(源代码)

    一.高超声速飞行器数学模型 二.反步法控制器设计(略) 反步法可以参考:<基于反步法的高超音速飞机纵向逆飞行控制> 三.模糊函数逼近器设计(略) 模糊函数逼近器可以参考:<Fuzzy ...

  5. Backstepping(反步法)控制初学讲解

    作者本科专业非控制方向,毕设期间做了控制相关的内容.当时学习反步法时在理解上遇到了一些困难,经过相关的学习也对其有了一定的认识.考虑到一些人可能会遇到跟我同样的困局,就将当时做的backsteppin ...

  6. 固定翼飞机姿态角Backstepping反步法控制

    固定翼飞机姿态角Backstepping反步法控制 1. 数学建模 2. 系统解耦 3. 反步法控制律设计 4. 仿真结果 5. 仿真结果分析 6. 参考文献 在文章固定翼飞机数学建模入门(姿态角篇) ...

  7. 基于自适应反步法的三自由度直升机(3 DOF Helicopter)轨迹跟踪

    文章目录 前言 一.3 DOF Helicopter实验装置 二.3 DOF Helicopter模型建立及简化 2.1模型建立 2.1.1 俯仰轴建模 2.1.2 横侧轴建模 2.1.3 旋转轴建模 ...

  8. Backstepping反步法控制四旋翼无人机(一)

    目录 四旋翼基本参数 基本假设 转换矩阵 基本方程 线性化 综合 四旋翼基本参数 四旋翼作为一种可以在空间中自由飞行的无人飞行器,具有6个自由度和4个螺旋桨.其中,4个螺旋桨提供动力,作为四旋翼的动力 ...

  9. Backstepping反步法控制四旋翼无人机(2)

    目录 跟踪误差 坐标变换 考虑以下非线性系统 {x˙1=x2+f1(x1)x˙2=u+f2(x1,x2)y=x1\begin{cases} \begin{aligned} \dot{x}_1& ...

最新文章

  1. Asp.NET MVC3添加域(Areas)区分Admin域和用户域
  2. 三丶傻妞机器人安装教程+命令+青龙面板对接傻妞
  3. NumPy - ndarray
  4. python与正则表达式(part2)--正则表达式的转义
  5. ds18b20c语言显示小数位,DS18B20多点测温(读序列,匹配序列,51单片机C程序,1602显示)...
  6. hihoCoder - 1075 开锁魔法III
  7. zoj[3868]gcd期望
  8. 《Java从入门到放弃》JavaSE入门篇:JDBC(入门版)
  9. python c语言实现 书_用C语言实现python的扩展模块
  10. AD 20中文软件安装教程
  11. PLC编程的要求有哪些?
  12. CAD导出pdf的正确方法(包括导出黑白pdf)
  13. 稳定的服务器主板,高稳定英特尔S2400SC2双路服务器主板
  14. 优秀网页设计的七条基本准则
  15. 【基于TCP的在线词典】
  16. 物联网开源平台KAA
  17. CAD高清全彩输出pdf文件
  18. Unity(Animation和Animator)
  19. 用户体验研究小结—以微信读书APP为例
  20. 图像处理职位面试题汇总(2)

热门文章

  1. 【调研】DRL优化网络通信领域顶会及期刊
  2. 记公司同事的一次集体活动
  3. 计算机组老师颁奖词,优秀教研团队颁奖词
  4. 读书笔记 摘自:《你坏》
  5. 什么是MTTF、MTTR、MTBF和MTRF?
  6. tree traversal (树的遍历) - preorder traversal (前序遍历)
  7. 中文转拼音 中文转罗马声调
  8. git 的详细使用 操作暂存区
  9. 从svn拉下的代码无状态图标(绿色对勾)的解决方法
  10. 以太坊_Mist客户端下载及安装