干扰观测器是控制中非常常见的一种方法,本节推导的是一种简单的非线性干扰观测器NDOB
朴素NDOB观测器
假设非线性系统方程为
x˙=f(x)+g1(x)u+g2(x)dy=h(x)
\begin{align}
\dot x &= f(x) + g_1(x)u + g_2(x)d \nonumber\\
y &= h(x) \nonumber
\end{align}
x˙y=f(x)+g1(x)u+g2(x)d=h(x)
其中 ddd 为扰动,uuu 为控制量,我们期望对扰动进行估计,不妨假设扰动为 d^\hat dd^ ,那么扰动的估计误差为
d~=d−d^
\tilde d = d - \hat d
d~=d−d^
对扰动误差 d~\tilde dd~ 求导,可得(这里注意,我们对真实扰动没有一点先验知识,这里最不失一般性的假设就是,她的导数为0):
d~˙=d˙−d^˙=−d^˙
\dot {\tilde d} = \dot d - \dot {\hat d} = - \dot {\hat d}
d~˙=d˙−d^˙=−d^˙
为了让 d~\tilde dd~ 尽快收敛,我们可以命令其等于如下形式
d~˙=−d^˙=−l(x)g2(x)d~
\dot {\tilde d} = - \dot {\hat d} =-l(x)g_2(x){\tilde d}
d~˙=−d^˙=−l(x)g2(x)d~
上面这个等式是我们人为设计的一种 d~\tilde dd~ 的趋近律,也就是我们希望扰动的估计误差如何趋近于0,我们可以任意选择 l(x)l(x)l(x) ,只要保证上面的误差估计趋近于0即可。
基于上述的趋近律,我们带入到非线性系统方程可以得到:
d^˙=l(x)g2(x)d~=l(x)g2(x)(d−d^)=l(x)(g2(x)d−g2(x)d^)=l(x)(x˙−f(x)−g1(x)u−g2(x)d^)=l(x)(x˙−f(x)−g1(x)u)−l(x)g2(x)d^
\begin{split}
\dot {\hat d} &= l(x)g_2(x){\tilde d} \\
&= l(x) g_2(x) (d - {\hat d}) \\
&= l(x) (g_2(x)d - g_2(x){\hat d}) \\
&= l(x) (\dot x - f(x) - g_1(x)u - g_2(x){\hat d}) \\
&= l(x) (\dot x - f(x) - g_1(x)u) - l(x)g_2(x){\hat d}
\end{split}
d^˙=l(x)g2(x)d~=l(x)g2(x)(d−d^)=l(x)(g2(x)d−g2(x)d^)=l(x)(x˙−f(x)−g1(x)u−g2(x)d^)=l(x)(x˙−f(x)−g1(x)u)−l(x)g2(x)d^
上面我们就推导了最为朴素的非线性扰动观测器,但是我们发现,这个扰动观测器需要用到 x˙\dot xx˙ 这一项,很明显,大多数系统都不可能得到这项的观测,所以这个观测器需要做一些改进。
改进NDOB观测器
最朴素的把 x˙\dot xx˙ 消掉的思路就是,在观测器的左右两遍同时减去 l(x)x˙l(x)\dot xl(x)x˙:
d^˙−l(x)x˙=l(x)(−f(x)−g1(x)u)−l(x)g2(x)d^
\dot {\hat d} - l(x)\dot x = l(x) (- f(x) - g_1(x)u) - l(x)g_2(x){\hat d}
d^˙−l(x)x˙=l(x)(−f(x)−g1(x)u)−l(x)g2(x)d^
这样公式的右侧就没有 x˙\dot xx˙ 这一项了,我们对等式的左右两边进行积分:
p(x)=∫l(x)x˙ dxd^−p(x)=∫l(x)(−f(x)−g1(x)u)−l(x)g2(x)d^ dx
\begin{align}
p(x) &= \int l(x)\dot x \ \text d x\nonumber\\
\hat d - p(x) &= \int {l(x) (- f(x) - g_1(x)u) - l(x)g_2(x){\hat d}} \ \text d x\nonumber
\end{align}
p(x)d^−p(x)=∫l(x)x˙ dx=∫l(x)(−f(x)−g1(x)u)−l(x)g2(x)d^ dx
设置一个中间变量 z=d^−p(x)z=\hat d - p(x)z=d^−p(x) ,那么对 zzz 进行求导可以得到:
z˙=l(x)(−f(x)−g1(x)u)−l(x)g2(x)d^=l(x)(−f(x)−g1(x)u)−l(x)g2(x)(z+p(x))=l(x)[−f(x)−g1(x)u+g2(x)p(x)]−l(x)g2(x)z
\begin{align}
\dot z &= l(x) (- f(x) - g_1(x)u) - l(x)g_2(x){\hat d}\nonumber \\
&= l(x) (- f(x) - g_1(x)u) - l(x)g_2(x)(z + p(x))\nonumber \\
&= l(x) [- f(x) - g_1(x)u + g_2(x)p(x)] - l(x)g_2(x)z\nonumber \\
\end{align}
z˙=l(x)(−f(x)−g1(x)u)−l(x)g2(x)d^=l(x)(−f(x)−g1(x)u)−l(x)g2(x)(z+p(x))=l(x)[−f(x)−g1(x)u+g2(x)p(x)]−l(x)g2(x)z
上面是一个针对中间变量 zzz 的观测器,有了 zzz 以后,扰动估计量 d^\hat dd^ 也可以很容易得到:
d^=z+p(x)
\hat d = z + p(x)
d^=z+p(x)
这里我们实现了扰动的观测,还遗留了一个最重要的问题, p(x)p(x)p(x) 是什么,刚才我们假设了 p(x)=∫l(x)x˙ dtp(x) = \int l(x)\dot x \ \text d tp(x)=∫l(x)x˙ dt,所以也存在了如下的关系:
l(x)=∂p(x)∂x→dp(x)dt=l(x)x˙
l(x) = {\frac {\partial p(x)} {\partial x}} \to {\frac {\text d p(x)} {\text d t}} = l(x)\dot x
l(x)=∂x∂p(x)→dtdp(x)=l(x)x˙
如何确定 p(x)p(x)p(x) 呢?有两种方式,一种是先选定 l(x)l(x)l(x) ,然后对 xxx 积分,求 p(x)p(x)p(x) 。另一种方式则是,先自由选定 p(x)p(x)p(x) ,但是 l(x)l(x)l(x) 则必须满足上述关系。
李雅普诺夫证明稳定性
假设李雅普诺夫函数
V=12d~2
V=\frac {1} {2} \tilde d ^ 2
V=21d~2
对其求导,之前我们就假设了扰动的导数为0,即这个扰动是一个常数,反正波动不会很大
V˙=d~d~˙=d~(d˙−d^˙)=−d~d^˙
\dot V = \tilde d \dot {\tilde d} = \tilde d (\dot d - \dot {\hat d}) = - \tilde d \dot {\hat d}
V˙=d~d~˙=d~(d˙−d^˙)=−d~d^˙
其中
d^˙=z˙+p˙(x)=z˙+l(x)x˙=l(x)[−f(x)−g1(x)u+g2(x)p(x)]−l(x)g2(x)z+l(x)x˙=l(x)[−f(x)−g1(x)u+g2(x)p(x)]−l(x)g2(x)z+l(x)(f(x)+g1(x)u+g2(x)d)=l(x)g2(x)p(x)−l(x)g2(x)z+l(x)g2(x)d=l(x)g2(x)(p(x)−z+d)=l(x)g2(x)d~
\begin {align}
\dot {\hat d}
&= \dot z + \dot p(x) \nonumber\\
&= \dot z + l(x){\dot x} \nonumber\\
&= l(x) [- f(x) - g_1(x)u + g_2(x)p(x)] - l(x)g_2(x)z + l(x){\dot x} \nonumber\\
&= l(x) [- f(x) - g_1(x)u + g_2(x)p(x)] - l(x)g_2(x)z + l(x)(f(x) + g_1(x)u + g_2(x)d )\nonumber \\
&= l(x)g_2(x)p(x) - l(x)g_2(x)z + l(x)g_2(x)d \nonumber\\
&= l(x)g_2(x)(p(x) - z + d) \nonumber\\
&= l(x)g_2(x){\tilde d}\nonumber
\end {align}
d^˙=z˙+p˙(x)=z˙+l(x)x˙=l(x)[−f(x)−g1(x)u+g2(x)p(x)]−l(x)g2(x)z+l(x)x˙=l(x)[−f(x)−g1(x)u+g2(x)p(x)]−l(x)g2(x)z+l(x)(f(x)+g1(x)u+g2(x)d)=l(x)g2(x)p(x)−l(x)g2(x)z+l(x)g2(x)d=l(x)g2(x)(p(x)−z+d)=l(x)g2(x)d~
所以
V˙=−d~d^˙=−d~l(x)g2(x)d~=−l(x)g2(x)d~2=−2l(x)g2(x)d~2
\begin {align}
\dot V &= - \tilde d \dot {\hat d}\nonumber \\
&= -{\tilde d} l(x)g_2(x){\tilde d}\nonumber \\
&= -l(x)g_2(x){\tilde d}^2\nonumber \\
&= -2l(x)g_2(x){\tilde d}^2\nonumber \\
\end {align}
V˙=−d~d^˙=−d~l(x)g2(x)d~=−l(x)g2(x)d~2=−2l(x)g2(x)d~2
**定理1:**若李雅普诺夫满足以下等式,则系统稳定
V˙≤−KVλ ;K,λ>0
\dot V \le -KV^{\lambda} \ ;K,\lambda > 0
V˙≤−KVλ ;K,λ>0
所以系统稳定
实际的控制例子
一个二阶系统如下
x˙1=x2x˙2=−k∣x2∣x2+bu+d
\begin{align}
\dot x_1 &= x_2\nonumber \\
\dot x_2 &= -k|x_2|x_2+bu+d\nonumber \\
\end{align}
x˙1x˙2=x2=−k∣x2∣x2+bu+d
其中 x1x_1x1 代表位置,x2x_2x2 代表速度,uuu 是控制量, ddd 代表扰动。
{f(x)=−k∣x2∣x2g1(x)=bg2(x)=1
\begin{cases}
f(x) = -k|x_2|x_2 \nonumber\\
g_1(x) = b\nonumber \\
g_2(x) = 1
\end{cases}
⎩⎨⎧f(x)=−k∣x2∣x2g1(x)=bg2(x)=1
设计l(x)=cl(x) = cl(x)=c ,则有
p(x)=cx2
p(x) = cx_2
p(x)=cx2
定义中间变量为z=d^−p(x)z=\hat d-p(x)z=d^−p(x) ,于是扰动观测器的形式为
z˙=−l(x)g2(x)z−l(x)[f(x)+g1(x)u+g2(x)p(x)]=−cz−c(−k∣x2∣x2+bu+cx2)d^=z+p(x)=z+cx2
\begin{align}
\dot z &= -l(x)g_2(x)z-l(x)[f(x)+g_1(x)u+g_2(x)p(x)]\nonumber\\
&=-cz-c(-k|x_2|x_2 + bu + cx_2) \nonumber\\
\hat d &= z+p(x)=z+cx_2\nonumber
\end{align}
z˙d^=−l(x)g2(x)z−l(x)[f(x)+g1(x)u+g2(x)p(x)]=−cz−c(−k∣x2∣x2+bu+cx2)=z+p(x)=z+cx2
注意
干扰必须是有界的,否则定理1将不成立,如果只参考结论的话,可以只看最后一个结论