Hello,欢迎来到我的博客
干扰观测器是机器人控制中很重要的一种手段,今天要分享的是一种简单的非线性干扰观测器NDOB的推导,请享用吧
1 朴素NDOB观测器推导
假设非线性系统方程为:
x˙=f(x)+g1(x)u+g2(x)dy=h(x)(1)
\begin{aligned}
\dot{x}&=f(x)+g_1(x)u+g_2(x)d\tag{1}\\
y&=h(x)
\end{aligned}
x˙y=f(x)+g1(x)u+g2(x)d=h(x)(1)
其中,ddd为扰动,uuu为控制量。
我们期望对扰动ddd进行估计,不妨设扰动估计量为d^\hat{d}d^,那么扰动的估计误差则为:
d~=d−d^
\tilde{d}=d-\hat{d}
d~=d−d^
对d~\tilde{d}d~求导,可得:
d~˙=d˙−d^˙=−d^˙
\dot{\tilde{d}}=\dot{d}-\dot{\hat{d}}=-\dot{\hat{d}}
d~˙=d˙−d^˙=−d^˙
注意,由于我们对于真实扰动ddd没有任何先验知识,这里最不失一般性的假设就是:它的导数等于0。
接下来,为了让d~\tilde{d}d~尽快收敛,我们可以令其等于如下形式:
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{d}d~的趋近律,也就是我们希望d~\tilde{d}d~以何种方式趋近于0。我们可以任意选择l(x)l(x)l(x),只要保证以上关于d~\tilde{d}d~的这个动力学系统收敛即可。
基于以上趋近律,并且代入系统方程(1),我们可以得到:
d^˙=l(x)g2(x)d~=l(x)g2(x)(d−d^)=l(x)(x˙−f(x)−g1(x)u−g2(x)d^)=−l(x)g2(x)d^+l(x)(x˙−f(x)−g1(x)u)(2)
\begin{aligned}
\dot{\hat{d}}&=l(x)g_2(x)\tilde{d}\\
&=l(x)g_2(x)(d-\hat{d})\\
&=l(x)(\dot{x}-f(x)-g_1(x)u-g_2(x)\hat{d})\\
&=-l(x)g_2(x)\hat{d}+l(x)(\dot{x}-f(x)-g_1(x)u)\tag{2}
\end{aligned}
d^˙=l(x)g2(x)d~=l(x)g2(x)(d−d^)=l(x)(x˙−f(x)−g1(x)u−g2(x)d^)=−l(x)g2(x)d^+l(x)(x˙−f(x)−g1(x)u)(2)
以上就是一个最为朴素的非线性扰动观测器了。
当然,事情到这里还没有结束。仔细观察可以发现,这个扰动观测器需要用到x˙\dot{x}x˙这一项,很显然,大多数系统都不可能得到这项的观测,所以这个最朴素的扰动观测器需要一些小的改进。
2 改进NDOB观测器推导
最朴素的把x˙\dot{x}x˙消去的思路就是,在观测器(2)的左右两边同时减去l(x)x˙l(x)\dot{x}l(x)x˙,如下:
d^˙−l(x)x˙=−l(x)g2(x)d^+l(x)(−f(x)−g1(x)u)(3)
\dot{\hat{d}}-l(x)\dot{x}=-l(x)g_2(x)\hat{d}+l(x)(-f(x)-g_1(x)u)\tag{3}
d^˙−l(x)x˙=−l(x)g2(x)d^+l(x)(−f(x)−g1(x)u)(3)
这样公式右边就没有x˙\dot{x}x˙这一项了。进一步地,我们对等式(3)左右两边积分:
d^−p(x)=∫−l(x)g2(x)d^+l(x)(−f(x)−g1(x)u) dt(4)
\hat{d}-p(x)=\int -l(x)g_2(x)\hat{d}+l(x)(-f(x)-g_1(x)u) \ \text{dt}\tag{4}
d^−p(x)=∫−l(x)g2(x)d^+l(x)(−f(x)−g1(x)u) dt(4)
其中,假设p(x)=∫l(x)x˙dtp(x)=\int l(x)\dot{x} \text{dt}p(x)=∫l(x)x˙dt。同时,进一步设置一个中间变量z=d^−p(x)z=\hat{d}-p(x)z=d^−p(x)。那么,再对公式(4)求导,就可以变形为:
z˙=−l(x)g2(x)(z+p(x))+l(x)(−f(x)−g1(x)u)=−l(x)g2(x)z−l(x)[f(x)+g1(x)u+g2(x)p(x)](5)
\begin{aligned}
\dot{z}&=-l(x)g_2(x)(z+p(x))+l(x)(-f(x)-g_1(x)u) \tag{5}\\
&=-l(x)g_2(x)z-l(x)\left[f(x)+g_1(x)u+g_2(x)p(x)\right]
\end{aligned}
z˙=−l(x)g2(x)(z+p(x))+l(x)(−f(x)−g1(x)u)=−l(x)g2(x)z−l(x)[f(x)+g1(x)u+g2(x)p(x)](5)
以上就是一个针对中间变量zzz的观测器,有了zzz以后,扰动估计量d^\hat{d}d^也可以很容易得到:
d^=z+p(x)(6)
\hat{d}=z+p(x) \tag{6}
d^=z+p(x)(6)
推到这里,公式(5)(6)就可以实现扰动观测了。然而,还遗留了一个最重要的问题,p(x)p(x)p(x)是什么?
刚才我们假设了p(x)=∫l(x)x˙ dtp(x)=\int l(x)\dot x \ \text{dt}p(x)=∫l(x)x˙ dt,所以,也存在如下关系:
l(x)=∂p(x)∂x → dp(x)dt=l(x)x˙(7)
l(x)=\frac{\partial p(x)}{\partial x} \ \ \rightarrow \ \ \frac{\text{d} p(x)}{\text{d}t}=l(x)\dot{x} \tag{7}
l(x)=∂x∂p(x) → dtdp(x)=l(x)x˙(7)
所以,如何确定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)则必须满足上述关系式(7)。
3 实际例子
下面以一个实际系统为例,演示NDOB的使用方法:
存在一个二阶非线性系统,如下:
x˙1=x2x˙2=−k∣x2∣x2+bu+d
\begin{aligned}
\dot{x}_1&=x_2\\
\dot{x}_2&=-k|x_2|x_2+bu+d
\end{aligned}
x˙1x˙2=x2=−k∣x2∣x2+bu+d
其中,x1x_1x1代表位置,x2x_2x2代表速度,uuu代表控制,ddd代表扰动。
针对第二个式子:
x˙2=−k∣x2∣x2+bu+d
\dot{x}_2=-k|x_2|x_2+bu+d
x˙2=−k∣x2∣x2+bu+d
其中:
f(x)=−k∣x2∣x2,g1(x)=b,g2(x)=1
f(x)=-k|x_2|x_2,g_1(x)=b,g_2(x)=1
f(x)=−k∣x2∣x2,g1(x)=b,g2(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{aligned}
\dot{z}&=-l(x)g_2(x)z-l(x)\left[f(x)+g_1(x)u+g_2(x)p(x)\right]\\
&=-cz-c(-k|x_2|x_2+bu+cx_2)\\
\hat{d}&=z+p(x)=z+cx_2
\end{aligned}
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
4 参考文献
[1] Wen-Hua Chen et. al. A Nonlinear Disturbance Observer for Robotic Manipulators, 2000
[2] Wen-Hua Chen et. al. Disturbance-Observer-Based Control and Related Methods—An Overview, 2016