回顾上节

动力学方程

H(q)q¨+C(q,q˙)q˙+D(q,q˙)q˙+g(q)=τ\boldsymbol{H}(\boldsymbol{q})\boldsymbol{\ddot{q}}+\boldsymbol{C}(\boldsymbol{q},\boldsymbol{\dot{q}})\boldsymbol{\dot{q}}+\boldsymbol{D}(\boldsymbol{q},\boldsymbol{\dot{q}})\boldsymbol{\dot{q}}+\boldsymbol{g}(\boldsymbol{q})=\boldsymbol{\tau }

q˙T(τDq˙g)=12ddt[q˙THq˙]\dot{\boldsymbol{q}}^T(\boldsymbol{\tau}-\boldsymbol{D}\boldsymbol{\dot{q}}-\boldsymbol{g}) =\frac{1}{2}\frac{\mathrm{d} }{\mathrm{d} t}[\dot{\boldsymbol{q}}^T\boldsymbol{H}\dot{\boldsymbol{q}}] Conservation of energy

In a matrix form H˙2C\dot{\boldsymbol{H}}-2\boldsymbol{C}是反对称矩阵

9.2 自适应机器人轨线控制

在这一节中,我们将证明:与使用比例一微分控制进行调节一样,通过将前面讨论的鲁棒控制器改进为自适应形式在没有系统的质量性质的任何先验知识的情况下实际上也可以处理轨线控制问题

9.2.1 具体算法

假设期望轨线qd\boldsymbol{q}_d已知(假设期望位置、速度和加速度都是有界的)而一些或全部机械手参数未知,自适应控制设计问题就是获得执行器力矩的控制规律和未知参数的估计规律使得机械手的输出q(t)\boldsymbol{q}(t)紧紧地跟踪期望轨线
为了到达这个目的,定义参数估计误差a~=a^a\tilde{\boldsymbol{a}}=\hat{\boldsymbol{a}}-\boldsymbol{a},这里a\boldsymbol{a}是描述机械手的质量性质的未知参数常向量,a^\hat{\boldsymbol{a}}是未知参数的估计。现在我们不考虑(9.8),而是考查候选的李雅普诺夫函数

V=12sTHs+12a~TP1a~(9.13)V=\frac{1}{2}\boldsymbol{s}^T\boldsymbol{H}\boldsymbol{s}+\frac{1}{2}\boldsymbol{\tilde{a}}^T\boldsymbol{P}^{-1}\boldsymbol{\tilde{a}} \tag{9.13}

其中,P\boldsymbol{P}是对称正定矩阵。利用式(9.12),对上式求导

V˙=sT(τHq¨rCq˙rDq˙gY(q,q˙,q˙r,q¨r)a)+a^˙TP1a~\dot{V}=\boldsymbol{s}^T\underbrace{(\boldsymbol{\tau}-\boldsymbol{H}\boldsymbol{\ddot{q}}_r-\boldsymbol{C}\boldsymbol{\dot{q}}_r-\boldsymbol{D}\boldsymbol{\dot{q}}-\boldsymbol{g}}_{\boldsymbol{Y}(\boldsymbol{q},\boldsymbol{\dot{q},\boldsymbol{\dot{q}}_r},\boldsymbol{\ddot{q}}_r)\boldsymbol{a}})+\boldsymbol{\dot{\hat{a}}}^T\boldsymbol{P}^{-1}\boldsymbol{\tilde{a}}

这里,我们利用系统的另外一个物理性质,即给定适当定义机械手质量的未知参数a\boldsymbol{a},H(q)\boldsymbol{H}(\boldsymbol{q}),C(q,q˙)\boldsymbol{C}(\boldsymbol{q},\boldsymbol{\dot{q}})g(q)\boldsymbol{g}(\boldsymbol{q})都线性依赖于未知参数向量。于是,定义已知矩阵Y=Y(q,q˙,q˙r,q¨r)\boldsymbol{Y}=\boldsymbol{Y}(\boldsymbol{q},\boldsymbol{\dot{q},\boldsymbol{\dot{q}}_r},\boldsymbol{\ddot{q}}_r)使得

H(q)q¨r+C(q,q˙)q˙r+D(q,q˙)q˙+g(q)=Y(q,q˙,q˙r,q¨r)a\boldsymbol{H}(\boldsymbol{q})\boldsymbol{\ddot{q}}_r+\boldsymbol{C}(\boldsymbol{q},\boldsymbol{\dot{q}})\boldsymbol{\dot{q}}_r+\boldsymbol{D}(\boldsymbol{q},\boldsymbol{\dot{q}})\boldsymbol{\dot{q}}+\boldsymbol{g}(\boldsymbol{q})=\boldsymbol{Y}(\boldsymbol{q},\boldsymbol{\dot{q},\boldsymbol{\dot{q}}_r},\boldsymbol{\ddot{q}}_r)\boldsymbol{a}

取控制规律

τ=Ya^KDs(9.14)\boldsymbol{\tau } = \boldsymbol{Y} \boldsymbol{\hat{a}}- \boldsymbol{K}_D \boldsymbol{s} \tag{9.14}

其中KD\boldsymbol{K}_D是正定矩阵
于是

V˙=sTKDs+sTYa~+a^˙TP1a~=0\dot{V}= -\boldsymbol{s}^T \boldsymbol{K}_D \boldsymbol{s}+\underbrace{\boldsymbol{s}^T\boldsymbol{Y} \boldsymbol{\tilde{a}}+\boldsymbol{\dot{\hat{a}}}^T\boldsymbol{P}^{-1}\boldsymbol{\tilde{a}}}_{=0}

取得合适估计参数a^\boldsymbol{\hat{a}},使得后两项相加为0

a^˙=PYTs(9.15)\boldsymbol{\dot{\hat{a}}}=-\boldsymbol{P}\boldsymbol{Y}^T\boldsymbol{s} \tag{9.15}

于是有

V˙=sTKDs0(9.16)\dot{V}= -\boldsymbol{s}^T \boldsymbol{K}_D \boldsymbol{s} \leqslant 0 \tag{9.16}

根据 Barbalat引理

V˙0s0q~0,q~˙0\dot{V} \rightarrow 0 \Rightarrow s \rightarrow 0 \Rightarrow \tilde{q} \rightarrow0,\dot{ \tilde{q}} \rightarrow 0

总结

  • 中间变量:s=q~˙+Λq~=q˙q˙r\boldsymbol{s}= \boldsymbol{\dot{\tilde{q}}}+\Lambda \boldsymbol{\tilde{q}} =\boldsymbol{\dot{q}}-\boldsymbol{\dot{q}}_r
  • 控制律:τ=Ya^KDs\boldsymbol{\tau } = \boldsymbol{Y} \boldsymbol{\hat{a}}- \boldsymbol{K}_D \boldsymbol{s}
  • 适应律:a^˙=PYTs\boldsymbol{\dot{\hat{a}}}=-\boldsymbol{P}\boldsymbol{Y}^T\boldsymbol{s}

拓展

若改变定义矩阵Y\boldsymbol{Y}为(即改变摩擦矩阵项D\boldsymbol{D})

H(q)q¨r+C(q,q˙)q˙r+D(q,q˙)q˙r+g(q)=Ynew(q,q˙,q˙r,q¨r)a\boldsymbol{H}(\boldsymbol{q})\boldsymbol{\ddot{q}}_r+\boldsymbol{C}(\boldsymbol{q},\boldsymbol{\dot{q}})\boldsymbol{\dot{q}}_r+\boldsymbol{D}(\boldsymbol{q},\boldsymbol{\dot{q}})\boldsymbol{\dot{q}}_r+\boldsymbol{g}(\boldsymbol{q})=\boldsymbol{Y}_{new}(\boldsymbol{q},\boldsymbol{\dot{q},\boldsymbol{\dot{q}}_r},\boldsymbol{\ddot{q}}_r)\boldsymbol{a}

  • 中间变量:s=q~˙+Λq~=q˙q˙r\boldsymbol{s}= \boldsymbol{\dot{\tilde{q}}}+\Lambda \boldsymbol{\tilde{q}} =\boldsymbol{\dot{q}}-\boldsymbol{\dot{q}}_r
  • 控制律:τ=Ynewa^KDs\boldsymbol{\tau } = \boldsymbol{Y}_{new}\boldsymbol{\hat{a}}- \boldsymbol{K}_D \boldsymbol{s}
  • 适应律:a^˙=PYnewTs\boldsymbol{\dot{\hat{a}}}=-\boldsymbol{P}\boldsymbol{Y}^T_{new}\boldsymbol{s}

选取相同V函数,可以发现此时

V˙=sT(KD+D)s\dot{V}= -\boldsymbol{s}^T (\boldsymbol{K}_D+\boldsymbol{D}) \boldsymbol{s}

“effective” KD\boldsymbol{K}_D exploits the nature D\boldsymbol{D}

6. Feedback Linearization

反馈线性化是一种非线性控制设计的方法,这种方法的核心思想就是把一个非线性系统代数地转化为一个(全部或者部分)线性系统以便可以应用线性系统的技巧。反馈线性化和普通的线性化(即3.3节中提到的雅可比线性化)的根本区别在于,反馈线性化并不是通过系统的线性逼近而是通过状态变换和反馈得到的

6.1.1 反馈线性化及其标准型

  1. 对于LTI系统 x˙=Ax+Bu\boldsymbol{\dot{x}}=\boldsymbol{A}\boldsymbol{x}+\boldsymbol{B}\boldsymbol{u},采用z=z(x)\boldsymbol{z}=\boldsymbol{z}(\boldsymbol{x})变换,使得

    z˙=[010000100001a0a1a2an1]z+[001]u(6.1)\boldsymbol{\dot{z}}= \begin{bmatrix} 0 & 1 & 0 & \cdots &0\\ 0 & 0 & 1 & \cdots &0\\ \vdots & \vdots& \vdots &\vdots &\vdots\\ 0 & 0 &0 & \cdots &1 \\ -a_0 &-a_1 &-a_2 &\cdots &-a_{n-1} \end{bmatrix} \boldsymbol{z} + \begin{bmatrix} 0\\ \vdots\\ 0\\ 1 \end{bmatrix} \boldsymbol{u} \tag{6.1}

    由矩阵前n1n-1行可知

    z=(z1z2zn)=(z1z1˙z1(n1))\boldsymbol{z} = \begin{pmatrix} z_1\\ z_2\\ \vdots\\ z_n\\ \end{pmatrix} = \begin{pmatrix} z_1\\ \dot{z_1}\\ \vdots\\ z_1^{(n-1)}\\ \end{pmatrix}

    最后一行可知z1n+an1zn1++a0z=uz_1^n+a_{n-1}z^{n-1}+ \cdots+a_0z=\boldsymbol{u}

  2. 对于非线性系统x˙=f(x)+g(x)u\boldsymbol{\dot{x}}=f(\boldsymbol{x})+g(\boldsymbol{x})\boldsymbol{u},采用z=z(x)\boldsymbol{z}=\boldsymbol{z}(\boldsymbol{x})变换,线性化为伴随形式(companion form)

    z(n)=f(z,z˙,,z(n1),t)+b(z,z˙,,z(n1),t)uV(6.2)z^{(n)}=\underbrace{f(z,\dot{z},\cdots,z^{(n-1)},t)+b(z,\dot{z},\cdots,z^{(n-1)},t)\boldsymbol{u}}_V \tag{6.2}

    z(n)=Vz^{(n)}=V

6.1.2 输入-状态线性化(Input-state Feedback Linearization)

下面考察形如

x˙=f(x,u)\dot{\boldsymbol{x}}=\boldsymbol{f}({\boldsymbol{x}},{\boldsymbol{u}})

的单输入非线性系统的控制输入uu的设计问题。

用输入一状态线性化解决这个问题需要两个步骤:

  1. 找到一个状态变换z=z(x)\boldsymbol{z}=\boldsymbol{z}(\boldsymbol{x})和一个输入变换u=u(x,v)u=u(\boldsymbol{x},v),以使得非线性系统转换为一个等价的线性定常系统,即熟知的形式z˙=Az+bv\dot{\boldsymbol{z}}=\boldsymbol{A}\boldsymbol{z}+\boldsymbol{b}v
  2. 利用标准线性化技巧(如极点配置)去设计vv

e.g. 考察非线性系统

x˙1=2x1+ax2+sinx1x˙2=x2cosx1+ucos(2x1)\begin{align*} &\dot{x}_1= -2x_1+ax_2+sinx_1 \tag{6.3a}\\ &\dot{x}_2=-x_2cosx_1+ucos(2x_1) \tag{6.3b} \end{align*}

考虑一组新的状态变量

z1=x1z2=ax2+sinx1\begin{align*} &z_1=x_1 \tag{6.4a}\\ &z_2=ax_2+sinx_1 \tag{6.4b} \end{align*}

则新的状态方程为

z1˙=2z1+z2z2˙=2z1cosz1+cosz1sinz1+au cos(2z1)v\begin{align*} &\dot{z_1}=-2z_1+z_2 \tag{6.5a}\\ &\dot{z_2}=\underbrace{-2z_1cosz_1+cosz_1sinz_1+au~cos(2z_1)}_v \tag{6.5b}\\ \end{align*}

注意,(0,0)仍然是新状态方程的平衡点。

其中,vv是需要设计的等价输入(等价的意义是确定了vv相当于确定了uu反之亦然),可以得到线性输入状态关系

z1˙=2z1+z2z2˙=v{designvcompute u=1acos(2z1)(vcosz1sinz1+2z1cosz1)\begin{align*} &\dot{z_1}=-2z_1+z_2\\ &\dot{z_2}=v \end{align*} \rightarrow \left\{\begin{matrix} \text{design}v\\ \text{compute}~u = \frac{1}{acos(2z_1)}(v-cosz_1sinz_1+2z_1cosz_1)\\ \end{matrix} \right.

Remark

  • u=1acos(2z1)(vcosz1sinz1+2z1cosz1)u = \frac{1}{acos(2z_1)}(v-cosz_1sinz_1+2z_1cosz_1) \rightarrow Singularity when cos(2z1)=0cos(2z_1)=0
  • meature state x\boldsymbol{x} \rightarrow compute z\boldsymbol{z}
  • based on precise aa (aa is used both in uu and in the state transformation)

6.1.3 输入-输出线性化(Input-Output Feedback Linearization)

现在我们考虑跟踪控制问题,考查系统

x˙=f(x,u)y=h(x)\begin{align*} &\dot{\boldsymbol{x}}=f(\boldsymbol{x},u) \tag{6.6a}\\ &y=h(\boldsymbol{x}) \tag{6.6b} \end{align*}

  • 假定我们的目标是要使得输出y(t)y(t)跟踪一个期望轨线yd(t)y_d(t),并且保持整个状态有界,这里的yd(t)y_d(t)及其对时间的足够高阶导数都已知且有界。
  • 此模型的一个明显困难是输出yy只是通过状态变量和非线性方程(6.6)间接地依赖于输入uu,因此,要想找出合适的输入uu来控制输出yy的眼踪性态并不容易。
  • 但是,如果能找到系统输出y与控制输入uu之间的一个简单而直接的关系则跟踪控制设计的难度就降低了。事实上,这些思想构成了非线性控制设计中的所谓输入—输出线性化方法的直观基础。下面还是通过一个例子来说明这种方法。

e.g. 考察三阶系统

x˙1=sinx2+(x2+1)x3x˙2=x15+x3x˙3=x12+uy=x1\begin{align*} &\dot{x}_1=sinx_2+(x_2+1)x_3 \tag{6.7a}\\ &\dot{x}_2=x_1^5+x_3 \tag{6.7b}\\ &\dot{x}_3=x_1^2+u \tag{6.7c}\\ &y=x_1 \tag{6.7d} \end{align*}

希望控制x1x_1

z1=x1z_1=x_1,则

z˙1=sinx2+(x2+1)x3z¨2=(x2+1)u+v\begin{align*} &\dot{z}_1=sinx_2+(x_2+1)x_3\\ &\ddot{z}_2 = \underbrace{(x_2+1)u+ \cdots}_{v} \tag{6.8} \end{align*}

Design vv based on z¨1=v\ddot{z}_1=v but there is a leftover dynamics (of order 3-2 =1)

总结:

  • 上述控制设计策略首先产生一个线性的输入一输出关系然后基于线性控制用公式表示控制器这被称为输入一输出线性化方法,它可以应用到许多系统(如单输入一单输出(SISO)系统和多输入一多输出(MIMO)系统)
  • 如果系统需要微分rr次来产生输出yy与输入uu之间的明显关系,这个系统被称为具有相对阶rr。因此,上述例子是一个具有相对阶2的系统。我们将要指出,这个术语和线性系统中的概念是一致的(极点超过零点)
  • 任何n阶能控系统对任何输出最多微分n次输入必定会出现,即rnr\leqslant n。这可以直观理解为:假如需要微分的次数超过n系统的阶数将会超过n假如控制输入不出现则系统是不能控的
  • 至此,人们也许会感到只要使用上述控制规律,开始提出的跟踪控制设计问题已经漂亮地解决了。但是,应该记得该设计仅仅依赖闭环系统的一部分,因为它是二阶的,而整个动态系统是三阶的。
  • 系统的这部分(由一个状态分量描述)是输入一输出线性化中“不能观部分”,系统的这部分被称为内动态,因为它不能从外部的输入一输出关系(6.8)观测出。
  • 如果这个内动态是稳定的(实际上是指在整个跟踪过程中状态都是有界的,即有界输入有界输出(BIBO)意义下的稳定),我们的跟踪问题实际上已经解决了。否则,上述跟踪控制器在实际中毫无意义,因为内动态的不稳定暗示了会出现不希望的现象,比如保险丝烧断和机器部件激烈振动。因此,上述控制设计的实用性依赖于降阶系统(6.8)和内动态的稳定性。

e.g. 6.4

x˙1=x2+ux˙2=uy=x1\begin{align*} &\dot{x}_1=x_2+u \tag{6.9a}\\ &\dot{x}_2=u \tag{6.9b}\\ &y=x_1 \tag{6.9c}\\ \end{align*}

希望控制x10x_1 \rightarrow 0

u=x2x1u=-x_2-x_1,则

x˙1+x1=0x˙2+x2=x1\begin{align*} &\dot{x}_1+x_1=0 \tag{6.10a}\\ &\dot{x}_2+x_2=-x_1 \tag{6.10b}\\ \end{align*}

则可知x10x20x_1 \rightarrow 0 \Rightarrow x_2 \rightarrow 0 系统稳定,设计符合要求

若上述系统变为

x˙1=x2+ux˙2=uy=x1\begin{align*} &\dot{x}_1=x_2+u \tag{6.11a}\\ &\dot{x}_2=-u \tag{6.11b}\\ &y=x_1 \tag{6.11c}\\ \end{align*}

取相同控制律uu,则

x˙1+x1=0x˙2x2=x1\begin{align*} &\dot{x}_1+x_1=0 \tag{6.12a}\\ &\dot{x}_2-x_2=x_1 \tag{6.12b}\\ \end{align*}

x10x2x_1 \rightarrow 0 \Rightarrow x_2 unbounded,设计无效

比较两个系统,考察它们的传递函数,第一个系统的传递函数(minimumphase)

x1u=s+1s2\frac{x_1}{u}=\frac{s+1}{s^2}

第二个系统的传递函数(non minimumphase)

x1u=s1s2\frac{x_1}{u}=\frac{s-1}{s^2}

可见两个系统的极点相同而零点不同。具体地说,上述设计方法适用的系统(6.9)的零点-1在左半平面,而设计方法无效的系统(6.11)的零点1在右半平面。

可以证明上述事实:假如所有的零点都在左半平面则内动态稳定 ,(即被控对象是最小相位的)对所有的线性系统都是正确的。

参考

【1】Applied Nonlinear Control,Slotine and Li,Prentice-Hall 1991:Section 6.1
【2】https://www.bilibili.com/video/BV1Tk4y167kR?p=11&vd_source=b1a52fdb6c7481b4e8c78d03e9a9acb0