前言
前一篇中对自抗扰控制算法的原理及扩张状态观测器的参数整定问题进行了详解。同时,提出了一种基于自抗扰控制算法的多旋翼飞行器控制系统设计方案。
在系统辨识专题中,我们提到了控制效率方程的作用及重要性。
控制分配矩阵的必要性分析
我们往往针对单一控制回路进行控制器设计及性能分析。对于被控对象而言,最终驱动执行机构的控制指令,由多个控制回路的控制器输出的某种组合关系决定。该组合关系称之为控制分配矩阵。许多开源飞控对于各控制器输出的组合,通常采用线性函数的组合方式,如:
{ Ω 1 = k F ∗ F − k M x ∗ M x − k M y ∗ M y + k M z ∗ M z Ω 2 = k F ∗ F + k M x ∗ M x + k M y ∗ M y + k M z ∗ M z Ω 3 = k F ∗ F + k M x ∗ M x − k M y ∗ M y − k M z ∗ M z Ω 4 = k F ∗ F − k M x ∗ M x + k M y ∗ M y − k M z ∗ M z \begin{cases} \Omega_{1}=k_{F}*F-k_{M_{x}}*M_{x}-k_{M_{y}}*M_{y}+k_{M_{z}}*M_{z}\\[2ex] \Omega_{2}=k_{F}*F+k_{M_{x}}*M_{x}+k_{M_{y}}*M_{y}+k_{M_{z}}*M_{z}\\[2ex] \Omega_{3}=k_{F}*F+k_{M_{x}}*M_{x}-k_{M_{y}}*M_{y}-k_{M_{z}}*M_{z}\\[2ex] \Omega_{4}=k_{F}*F-k_{M_{x}}*M_{x}+k_{M_{y}}*M_{y}-k_{M_{z}}*M_{z} \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧Ω1=kF∗F−kMx∗Mx−kMy∗My+kMz∗MzΩ2=kF∗F+kMx∗Mx+kMy∗My+kMz∗MzΩ3=kF∗F+kMx∗Mx−kMy∗My−kMz∗MzΩ4=kF∗F−kMx∗Mx+kMy∗My−kMz∗Mz
控制分配最先在飞行控制系统设计中提出,其基本思想是,将控制指令根据某些优化目标分配给执行机构,并满足执行机构的约束条件。本质上,求解控制分配矩阵的同时,也是求解动力系统对于控制器的约束方程问题。
由于多旋翼飞行器拥有多个动力执行机构,根据不同的几何分布结构,能够产生多种动力组合方式。因此,针对不同的结构布局,我们需要求解不同的控制分配矩阵,以给出最合理的控制输出组合方式。求解控制分配矩阵,有以下作用:
- 当动力系统出现故障时,能够切换控制分配矩阵,以当前动力系统的实际情况,选择最合理的动力分配方式,避免出现各动力系统饱和的现象,提高飞行器的鲁棒性。
- 当动力系统正常时,合理的控制分配矩阵,能够最大化动力系统的执行效率。
控制分配矩阵的求解
对于四旋翼飞行器而言,其控制效率矩阵为方阵。因此,其逆矩阵存在,我们可以对其控制效率矩阵求逆,从而得到唯一的控制分配矩阵。
然而,对于旋翼数量大于4的多旋翼飞行器而言,其控制效率矩阵不存在逆矩阵,我们需要求其伪逆来得到控制分配矩阵。
首先将一个标准多旋翼的控制效率矩阵定义为如下矩阵:
M n r ( c T , c M , d ) = [ c T c T ⋯ c T − d 1 c T s i n φ 1 − d 2 c T s i n φ 2 ⋯ − d n c T s i n φ n r d 1 c T c o s φ 1 d 2 c T c o s φ 2 ⋯