[笔记]非线性自适应控制器设计,对应对应DR_CAN老师的【Advanced控制理论】16

简单的自适应控制器设计,使用李雅普诺夫函数证明系统稳定性后解出对应的控制输入u,对应DR_CAN老师【Advanced控制理论】16

x˙=ax2+u

其中x是系统状态,a为参数,u为系统输入。

设置期望状态xd,状态误差为e=xdx (2),控制目标为e0

一、假设参数a为已知量

对(2)式求导后为:

e˙=x˙dx˙=x˙dax2u (3)

设计Lyapunov函数为(易知式(4)为PD(正定)):

V(e)=12e2 (4)

对(4)求导并把(3)带入得:

V˙(e)=ee˙=e(x˙dax2u) (5)

为了满足V˙(e)为ND(负定),设x˙dax2u=ke

此时,V˙(e)=ke2,显然此时L导数为负定,即满足系统稳定性的条件。

由此可以得出控制输入为:

u=x˙dax2+ke (6)

仿真参考[Advance控制理论]简单的反步控制器设计

二、假设参数a为未知量

如一中假设参数a为已知量,但一般参数a都是未知量即一个缓慢变化的常数(例如一个机械臂需要抓取不同质量的物体,那么这个质量就是一个短时间不会变化的常数,此时a˙=0)。

此时同样设状态误差e=xdx (2)

e˙=x˙dx˙=x˙dax2u (3)

因为参数a为未知量,此时需要系统估计该值,设估计值为a^

估计误差为:a~  =a˙a^   ,其中a˙=0

a~  =a^   (7)

此时设计Lyapunov函数(PD)为:

V(e,a)=12e2+12a~2 (8)

对(8)求导并带入(3)与(7)得:

V˙(e,a)=e(x˙dax2u)a~a^   (9)

为了满足(9)为负定,设u=x˙da^x2+ke (10)

将(10)带入(9)得:

V˙(e,a)=ke2a~(ex2+a^  ) (11)

易知,ke2为ND,若令a^  =ex2,此时V˙(e,a)=ke2为NSD(半负定)。

引入引理1:假设

V0

V˙<g(t) (g(t)0)g˙(t)L

那么g(t)有界,即limtg(t)=0

由引理1知,式(11)在设a^  =ex2情况下满足李雅普诺夫稳定条件。

a^=0tex2dt

最终得控制输入u为:

u=x˙d+x20tex2dt+ke (12)

Matlab/Simulink仿真为:

 

在不知道参数a的情况下,a^可以很好的估计参数值。

 

在目标状态xd不变得情况下,未知参数a的改变会使控制输入经历一段时间的调整后e0