首页 » 学习 » 非线性系统线性化

非线性系统线性化

线性模型具有叠加性和齐次性,相对于非线性系统特征更加简单,易于控制。在系统非线性不强,或者工作区间较小的情况下,可以将非线性系统在平衡位置处线性化后再设计控制器。

1 泰勒展开方法

单入单出系统

考虑系统$\dot{x}=f(x,u)$,其中$f(0,0)=0$。将$f(x,u)$在$(0,0)$处使用泰勒级数展开,得到
\begin{equation}\begin{aligned}
f(x,u)&=\frac{\partial f }{\partial x}(x,u)\mid _{x=0,u=0} x+\frac{\partial f}{\partial u}(x,u)
\mid _{x=0,u=0} u\\&=Ax+Bu
\end{aligned}
\label{eq:1} \end{equation}

$f(0,0)=0$的约束并不会使本节的讨论失去一般性。若原点函数值不为0,则设$g(x,u)=f(x,u)-f(0,0)$,用$g(x)$替代$f(x)$。

多入多出系统

当系统拥有多个输入和输出时,通常也会有多个状态。这时x和u都从标量变为列矩阵,$f(x,u)$也可以展开为\begin{bmatrix}
f_1(x,u)\\
\vdots\\
f_m(x,u)
\end{bmatrix}
式\eqref{eq:1}中A、B也扩展为矩阵。
\begin{equation*}
A=\begin{bmatrix}
\frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_m} \\
\vdots & \ddots & \vdots \\
\frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_m}
\end{bmatrix}
B=\begin{bmatrix}
\frac{\partial f_1}{\partial u_1} & \cdots & \frac{\partial f_1}{\partial u_n} \\
\vdots & \ddots & \vdots \\
\frac{\partial f_m}{\partial u_1} & \cdots & \frac{\partial f_m}{\partial u_n}
\end{bmatrix}
\end{equation*}
其中m、n分别为分别为x、u的维数。

仿真实验

本节使用两轮车模型作为对象,首先对模型进行线性化,再根据线性模型设计控制器,最后将模型带回到非线性的两轮车模型中,说明线性化的可用性。

两轮车的非线性模型为
$\ddot{\theta}_b=\frac{-(i_w +r^2 (m_b +m_w) +m_b r lcos\theta_b ) \tau+l r^2 m_b^2 g sin\theta_b – m_b^2 l^2 r^2 sin\theta_b cos\theta_b \dot{\theta}_b+m_b m_w g l r^2 sin\theta_w +i_w m_b g l sin\theta_b}{i_b(i_w+r^2(m_b+m_w))+l^2m_b(i_w+r^2(sin^2\theta_bm_b+m_w))}$

给里面的常量带入实际参数
\begin{equation*}\begin{cases}
i_w=\frac{1}{2}m_wr^2\\
i_b=frac{1}{3}m_bl^2\\
m_b=2\\
m_w=0.086*2\\
l=0.06\\
r=0.031\\
g=9.8
\end{cases}\end{equation*}

得到简化后的非线性模型
\begin{equation*}\begin{aligned}
\ddot{\theta}_b&=\frac{1429.48sin\theta_b-(1215.55-2083.85cos\theta_b)\tau-3.87sin(2\theta_b)\dot{\theta}_b^2}{2.917+cos^2\theta_b+8.75sin^2\theta}\\
&=f(\theta_b,\dot{\theta}_b,\tau)
\end{aligned}\end{equation*}

\theta_b、dot{\theta}_b作为系统的状态,\tau为系统输入。
\begin{cases} \frac{\partial f}{x_1}(x_1,x_2,u)=364.91\\ \frac{\partial f}{x_2}(x_1,x2,u)=0\\ \frac{\partial f}{u}(x_1,x_2,u)=-842.26 \end{cases}

现在就可以写出两轮车在平衡点的线性模型
\begin{bmatrix} \dot{x_1}\\ \dot{x_2} \end{bmatrix}= \begin{bmatrix} 0&1 \\364.91&0 \end{bmatrix} \begin{bmatrix} x_1\\ x_2 \end{bmatrix} +\begin{bmatrix} 0\\-842.26\end{bmatrix}u

根据线性模型设计LQR控制器得到反馈矩阵\begin{bmatrix} -1.4844 & -0.4658 \end{bmatrix}。使用该控制规律可以使初始状态x_0= \begin{bmatrix} \frac{\pi}{3}\\ 0 \end{bmatrix} 的系统回到平衡状态,同时也可以使相同初始条件下非线性模型系统回到平衡状态。这说明线性化的模型可用。

2 内线性化(inner linearization)

g(x),x\in [\lambda_0,\lambda_3]为一非线性函数,g_l(x)g(x)[\lambda_0,\lambda_1),[\lambda_1,\lambda_2),[\lambda_2,\lambda_3]三段线性化的结果。

g_l(x)=g(\lambda_0)\mu_0 +g(\lambda_1)\mu_1 +g(\lambda_2)\mu_2 +g(\lambda_3)\mu_3\\其中 x=\lambda_0\mu_0 +\lambda_1\mu_1 +\lambda_2\mu_2 +\lambda_3\mu_3\\ \mu_0 +\mu_1 +\mu_2 +\mu_3=1\\ \mu_i\geqslant 0,\quad i= 0,1, 2, 3

有一点需要注意的是如果函数g(x)是一个凹函数或者凸函数,那么使用相邻的两个点来估计是最准确的。例如估计得点x\in[\lambda_1,\lambda_2),那么\lambda_0=0, \lambda_1\geqslant 0, \lambda_2\geqslant 0, \lambda_3 =0。如果既不是凹函数也不是凸函数,那么加入第三个点可能会提高准确性。

参考

发表评论

电子邮件地址不会被公开。 必填项已用*标注