线性模型具有叠加性和齐次性,相对于非线性系统特征更加简单,易于控制。在系统非线性不强,或者工作区间较小的情况下,可以将非线性系统在平衡位置处线性化后再设计控制器。本文将介绍 非线性系统线性化 的基础原理,降低系统运算负担,提高控制精度 。
1 泰勒展开方法
1.1 单入单出系统
考虑系统\dot{x}=f(x,u),其中f(0,0)=0。将f(x,u)在(0,0)处使用泰勒级数展开,得到
\begin{aligned}f(x,u)&=\frac{\partial f }{\partial x}(x,u)\mid _{x=0,u=0} +\frac{\partial f}{\partial u}(x,u) \mid _{x=0,u=0} u\\&=Ax+Bu\end{aligned}\tag{1}
f(0,0)=0的约束并不会使本节的讨论失去一般性。若原点函数值不为0,则设g(x,u)=f(x,u)-f(0,0),用g(x)替代f(x)。
1.2 多入多出系统
当系统拥有多个输入和输出时,通常也会有多个状态。这时x和u都从标量变为列矩阵,f(x,u)也可以展开为\begin{bmatrix}f_1(x,u)\\\vdots\\f_m(x,u)\end{bmatrix}。式(1)中A、B也扩展为矩阵。
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}
其中m、n分别为分别为x、u的维数。
1.3 仿真实验
本节使用两轮车模型作为对象,首先对模型进行线性化,再根据线性模型设计控制器,最后将模型带回到非线性的两轮车模型中,说明线性化的可用性。
两轮车的非线性模型为
\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{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}
得到简化后的非线性模型
\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}
将\theta_b、\dot{\theta}_b作为系统的状态x_1、x_2,\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。如果既不是凹函数也不是凸函数,那么加入第三个点可能会提高准确性。
3 参考
- 非线性系统(第三版)Hassan K.Khalil著 朱义胜等译
- 泰勒级数
- Nonlinear Programming – MIT