反步设计是非线性控制器设计中的一种重要方法。

1、 基本思想

将复杂的非线性系统分解成不超过系统阶数的子系统,然后为每个子,系统设计部分Lyapunov 函数(简称V函数)和中间虚拟控制量,一直“后退到整个系统将它们集成起来完成整M个控制律的设计。

2、 优点

通过反向设计使控制V 函数和控制器的设计过程系统化、结构化;可以控制相对阶为n 的非线性系统。

3、 设计

考虑下列 SISO 系统

x˙1x˙2x˙ix˙n=x2+f1(x1)=x3+f2(x1,x2)=xi+1+fi(x1,,xi)=fn(x1,,xn)+u
<script type="math/tex; mode=display" id="MathJax-Element-738"> \begin{cases} \dot x_1 &= x_2 + f_1(x_1) \\ \dot x_2 &= x_3 + f_2 (x_1, x_2) \\ \vdots \\ \dot x_i &= x_{i+1} + f_i (x_1, \dots, x_i) \\ \dot x_n &= f_n (x_1, \dots, x_n ) + u \end{cases} </script>
反步控制的思想是把每一子系统 x˙i=xi+1+fi(x1,,xi)<script type="math/tex" id="MathJax-Element-739">\dot x_i = x_{i+1} + f_i (x_1, \dots, x_i) </script> 中的 xi+1<script type="math/tex" id="MathJax-Element-740">x_{i+1} </script> 看做虚拟输入,

定义 n 个误差变量,

z1=x1z2=x2α1(x1)zn=xnαn1(x1,,xn1)
<script type="math/tex; mode=display" id="MathJax-Element-741"> \begin{cases} z_1 = x_1 \\ z_2 = x_2 - \alpha _1 (x_1) \\ \cdots \\ z_n = x_n - \alpha _{n-1} (x_1, \cdots, x_{n-1} ) \end{cases}</script>,

α1=x1f1(x1)=α^1(z1)
<script type="math/tex; mode=display" id="MathJax-Element-742"> \alpha _1 = -x_1 - f_1(x_1) = \hat \alpha _1 (z_1) </script> 得
{z˙1=z1+z2z˙2=x3+f2(x1,x2)α^1z1z˙1=x3+f^2(z1,z2)
<script type="math/tex; mode=display" id="MathJax-Element-743"> \begin{cases} \dot z_1 = -z_1 + z_2 \\ \dot z_2 = x_3 + f_2(x_1,x_2) - \frac {\partial {\hat \alpha _1} } { \partial {z_1} } \dot z_1 = x_3 + \hat f_2 (z_1,z_2) \end{cases}</script>

可以设计 V1=12z21<script type="math/tex" id="MathJax-Element-744"> V_1 = \frac {1}{2} z_1^2 </script> , V˙1=z21+z1z2<script type="math/tex" id="MathJax-Element-745"> \dot V_1 = -z_1^2 + z_1 z_2 </script>,若 z2=0<script type="math/tex" id="MathJax-Element-746">z_2 = 0 </script>,z1<script type="math/tex" id="MathJax-Element-747">z_1 </script> 渐进稳定。因此要设计 α2<script type="math/tex" id="MathJax-Element-748">\alpha _2 </script> ,使得其误差 z2=x2α^1(z1)<script type="math/tex" id="MathJax-Element-749">z_2 = x_2 - \hat \alpha _1 (z_1) </script> 具有期望的渐进状态。

设计每一个虚拟输入,使每一个子系统都稳定,就可以得到系统的稳定输入了。

最后可得:

z˙n=xn+fn(x1,,xn)+un1i=1αn1zi=f^n(z1,,zn)+uV˙n=(z21++z2n1)+zn1zn+zn[f^n(z1,,zn)+u]
<script type="math/tex; mode=display" id="MathJax-Element-750"> \begin{cases} \dot z_n = x_n + f_n(x_1,\cdots,x_n) + u - \sum_{i=1}^{n-1} \frac{\partial \alpha _{n-1}}{\partial z_i} = \hat f_n(z_1,\cdots,z_n) +u \\ \dot V_n = -(z_1^2+ \cdots + z_{n-1}^2) + z_{n-1}z_n + z_n[\hat f_n(z_1,\cdots,z_n) +u ] \end{cases} </script>

u=α^n(z1,,zn)=zn1znfn(z1,,zn)
<script type="math/tex; mode=display" id="MathJax-Element-751"> u = \hat \alpha _n (z_1,\cdots,z_n) = -z_{n-1} - z_n - f_n(z_1,\cdots,z_n) </script>

可以得到:

{z˙n=znzn1V˙n=(z21++z2n)
<script type="math/tex; mode=display" id="MathJax-Element-752"> \begin{cases} \dot z_n = -z_n - z_{n-1} \\ \dot V_n = -(z_1^2+ \cdots + z_{n}^2) \end{cases} </script>

因为误差是指数渐进稳定的,从而上述设计的控制率,可以保证原非线性系统是指数渐进稳定的。

反步法实际上是一种由前往后递推的设计方法,然而比较适合在线控制,达到减少在线计算时间的目的。此外,反步法中引进的虚拟控制本质上是一种静态补偿思想,前面子系统必须通过后边子系统的虚拟控制才能达到镇定目的,因此该方法要求系统结构必须与原SISO系统类似的所谓严参数反馈系统或可经过变换化为该种类型的非线性系统。

4、机器人应用

对n连杆机械臂来说,其系统方程可以写成:

{x˙1=x2x˙2=f(x1,x2)+g(x1,x2)u
<script type="math/tex; mode=display" id="MathJax-Element-706"> \begin{cases} \dot x_1 = x_2 \\ \dot x_2 = f(x_1,x_2) + g(x_1,x_2)u \end{cases} </script>

的形式,其中 x1=[q1;qn]<script type="math/tex" id="MathJax-Element-707"> x_1 = [q_1;\cdots;q_n] </script> ,可以直接用反步法设计控制率。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐