控制基础,从线性微分方程到无人机

最近看了不少钱老的控制论,也在coursera看了一个偏应用向的控制课程,是时候写点项目了。

首先先省略理论化的东西的证明(暑假排期比较紧,还要看量子力学,写有限元,以后同样会发量子力学,有限元等高端点的玩意的笔记,少写点三年一换代的API,论喜欢一个GPA上4的同学对学习积极性的调动),请参照Coursera和《工程控制论》。博主在这里就用Mathematica来进行一些控制基础的推演。本文目标:使用MMA进行一个四轴飞行器的控制系统设计,并用Arduino搭载,升空,测试。

===本文的预设基础是线性代数数理方程和理论力学与一定的计算机基础,如果缺少这部分建议去Coursera上看《移动机器人的控制》或者钱老的《工程控制论》,那里面补了点这方面的基础,但是博主觉得过于冗杂,在这里的笔记直接省去。

概论 LTI Model

首先先明确我们要控制的对象,是一个由向量

\vec x=(x_1,x_2,x_3..)

描述的状态空间的一点。我们取一些物理量,组成\vec x使得\vec x足以完全描述这个系统。

比如对于一个质点的一维运动,设其坐标为q,速度为\dot q,那么我们可以用

\vec x=(x1,x2)=(q,\dot q)

来描述这个系统。

OK,对于一个有线性常微分方程控制的运动,我们可以总结出来如下式子(淑芬学的多的喜欢看证明的请参照工程控制论第22页以后的十页)

\dot{\vec x}=A \vec x

这个微分方程控制了系统的运动,比如回到一维质点,一个自由的一维质点有

\dot{\vec x} = \begin{bmatrix} 0 & 1\\0 & 0\end{bmatrix} \vec x


其中

\vec x=\begin{bmatrix} q \\ \dot q \end{bmatrix}

(MathJax打矩阵真麻烦)

那么我们就得到了一个状态空间的运行,给定一个初始条件\vec x_0就可以轻松得到整个系统的轨迹。

稳定性与能控性

根据一大堆的证明,对于这种线性系统,我们可以得到一个简单的结论,如果这个矩阵A的每个特征根 \lambdaRe (\lambda)<0,则是渐进稳定;如果Re (\lambda)<=0;则临界稳定,如果Re (\lambda)>0则发散。

且发散的方向和此特征值对应的特征向量有一定关系(可以认为是朝向)

具体关于稳定性的定义请参见wiki百科 李雅普诺夫稳定性

这时候我们如果想控制这个系统,就需要给系统加入一些干扰。我们设这个干扰为一个向量 \vec u,这时候我们可以将系统的运动方程重新写作

\dot{\vec x}=A \vec x+B \vec u

比如在上面的那个质点的问题,u可以是模拟一个系数为k的弹簧的输出,那么并且有w的阻尼

B=\begin{bmatrix}0 & 0\\-k& -w\end{bmatrix}

这时候我们可以重新看下,\vec x的系数成为了A+B

我们无妨看下,对于单独质点的运动,A的特征值为(0,0)这也就是意味着A只有在0初始条件下稳定

A=\begin{bmatrix}0 & 1\\-k& -w\end{bmatrix}

而加入弹簧后其特征值成为

\lambda = \frac{1}{2} ( -w \pm \sqrt{ 4-k^2 + w^2} )

只有在w>0时,Re(\lambda)<0 是渐进稳定,即收敛到原点,若w=0,Re(\lambda)=0 ,在非0起始点会陷入无尽的运动,w>0则Re(\lambda)>0 发散。

另一个需要讨论的问题是系统的能控性

如果我们有

rank[ B,AB, A^2B,..., A^{n-1} B] = n = dim(A)

则系统能控,否则是不行滴。对于不足的系统,这意味着我们无法达到现在确定的状态空间内的所有点,这样我们需要对于状态空间进行简化

 负反馈

那么对于一个系统,我们引入传感器,观测到的坐标为\vec y,其中\vec y=C \vec x,这个时候我们引入负反馈(呃。。这个玩意能有兴趣读这个blog的人都看的很多了吧)。使得

\vec u= -k \vec y

那么有

\dot {\vec x}=(A-BKC)x

也就是说,我们如果想要系统稳定在某一个状态(极点),那么设计k使得

Re(\lambda) < 0 , \forall \lambda \in eig(A-BKC)即可。

“控制基础,从线性微分方程到无人机”的2个回复

发表评论

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