控制系统设计专题(四)——控制分配矩阵的求解及相关问题

前言

  前一篇中对自抗扰控制算法的原理及扩张状态观测器的参数整定问题进行了详解。同时,提出了一种基于自抗扰控制算法的多旋翼飞行器控制系统设计方案。
  在系统辨识专题中,我们提到了控制效率方程的作用及重要性。

控制分配矩阵的必要性分析

  我们往往针对单一控制回路进行控制器设计及性能分析。对于被控对象而言,最终驱动执行机构的控制指令,由多个控制回路的控制器输出的某种组合关系决定。该组合关系称之为控制分配矩阵。许多开源飞控对于各控制器输出的组合,通常采用线性函数的组合方式,如:
{Ω1=kFFkMxMxkMyMy+kMzMzΩ2=kFF+kMxMx+kMyMy+kMzMzΩ3=kFF+kMxMxkMyMykMzMzΩ4=kFFkMxMx+kMyMykMzMz\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}
  控制分配最先在飞行控制系统设计中提出,其基本思想是,将控制指令根据某些优化目标分配给执行机构,并满足执行机构的约束条件。本质上,求解控制分配矩阵的同时,也是求解动力系统对于控制器的约束方程问题。
  由于多旋翼飞行器拥有多个动力执行机构,根据不同的几何分布结构,能够产生多种动力组合方式。因此,针对不同的结构布局,我们需要求解不同的控制分配矩阵,以给出最合理的控制输出组合方式。求解控制分配矩阵,有以下作用:

  • 当动力系统出现故障时,能够切换控制分配矩阵,以当前动力系统的实际情况,选择最合理的动力分配方式,避免出现各动力系统饱和的现象,提高飞行器的鲁棒性。
  • 当动力系统正常时,合理的控制分配矩阵,能够最大化动力系统的执行效率。

控制分配矩阵的求解

  对于四旋翼飞行器而言,其控制效率矩阵为方阵。因此,其逆矩阵存在,我们可以对其控制效率矩阵求逆,从而得到唯一的控制分配矩阵。
  然而,对于旋翼数量大于4的多旋翼飞行器而言,其控制效率矩阵不存在逆矩阵,我们需要求其伪逆来得到控制分配矩阵。
首先将一个标准多旋翼的控制效率矩阵定义为如下矩阵:
Mnr(cT,cM,d)=[cTcTcTd1cTsinφ1d2cTsinφ2dncTsinφnrd1cTcosφ1d2cTcosφ2dncTcosφnrcMδ1cMδ2cMδnr]M_{nr}(c_{T},c_{M},d)= \begin{bmatrix} c_{T} &c_{T}&\cdots&c_{T}\\ -d_{1}c_{T}sin\varphi_{1}&-d_{2}c_{T}sin\varphi_{2}&\cdots&-d_{n}c_{T}sin\varphi_{nr}\\ d_{1}c_{T}cos\varphi_{1}&d_{2}c_{T}cos\varphi_{2}&\cdots&d_{n}c_{T}cos\varphi_{nr}\\ c_{M}\delta_{1}&c_{M}\delta_{2}&\cdots&c_{M}\delta_{nr} \end{bmatrix}
它满足
Mnr(cT,cM,d)=PaMnr(1,1,1)M_{nr}(c_{T},c_{M},d)=P_{a}M_{nr}(1,1,1)
其中 Pa=diag(cT,dcT,dcT,cM)cT,cM,dP_{a}=diag(c_{T},dc_{T},dc_{T},c_{M}) , c_{T},c_{M},d 分别为升力系数,扭矩系数以及等效力臂长度。由此,有如下关系:
Mnr1(cT,cM,d)=Mnr1(1,1,1)Pa1M_{nr}^{-1}(c_{T},c_{M},d)=M_{nr}^{-1}(1,1,1)P_{a}^{-1}
以下图为例的六旋翼飞行器为例,M6(cT,cM,d)M_{6}(c_{T},c_{M},d) 可以表示为

控制系统设计专题(四)——控制分配矩阵的求解及相关问题
M6(cT,cM,d)=[cTcTcTcTcTcT03dcT23dcT203dcT23dcT2dcTdcT2dcT2dcTdcT2dcT2cMcMcMcMcMcM]M_{6}(c_{T},c_{M},d)= \begin{bmatrix} c_{T}&c_{T}&c_{T}&c_{T}&c_{T}&c_{T}\\ 0&-\frac{\sqrt{3}dc_{T}}{2}&-\frac{\sqrt{3}dc_{T}}{2}&0&\frac{\sqrt{3}dc_{T}}{2}&\frac{\sqrt{3}dc_{T}}{2}\\ dc_{T}&\frac{dc_{T}}{2}&-\frac{dc_{T}}{2}&-dc_{T}&-\frac{dc_{T}}{2}&\frac{dc_{T}}{2}\\ c_{M}&-c_{M}&c_{M}&-c_{M}&c_{M}&-c_{M} \end{bmatrix}

由此可得,
M6(1,1,1)=[11111103232032321121211212111111]M_{6}(1,1,1)= \begin{bmatrix} 1&1&1&1&1&1\\ 0&-\frac{\sqrt{3}}{2}&-\frac{\sqrt{3}}{2}&0&\frac{\sqrt{3}}{2}&\frac{\sqrt{3}}{2}\\ 1&\frac{1}{2}&-\frac{1}{2}&-1&-\frac{1}{2}&\frac{1}{2}\\ 1&-1&1&-1&1&-1 \end{bmatrix}
易知其伪逆矩阵为:
M61(1,1,1)=16[102113111311102113111311]M^{-1}_{6}(1,1,1)=\frac{1}{6} \begin{bmatrix} 1&0&2&1\\ 1&-\sqrt{3}&1&-1\\ 1&-\sqrt{3}&-1&1\\ 1&0&-2&-1\\ 1&\sqrt{3}&-1&1\\ 1&\sqrt{3}&1&-1 \end{bmatrix}
因此, [Ωd,12Ωd,22...Ωd,62]=M61(1,1,1)Pa1[Fdτd]=M61(1,1,1)[Fd/cTτdx/(dcT)τdy/(dcT)τdz/(dcT)]\begin{bmatrix} \Omega_{d,1}^{2}\\ \Omega_{d,2}^{2}\\ ...\\ \Omega_{d,6}^{2}\\ \end{bmatrix} = M^{-1}_{6}(1,1,1)P^{-1}_{a}\begin{bmatrix} F_{d}\\ \tau_{d} \end{bmatrix} =M^{-1}_{6}(1,1,1) \begin{bmatrix} F_{d}/c_{T}\\ \tau_{dx}/(dc_{T})\\ \tau_{dy}/(dc_{T})\\ \tau_{dz}/(dc_{T})\\ \end{bmatrix}
令控制输出指令为U1,U2,...U6U_{1},U_{2},...U_{6} ,则
[U1U2...U6]=k[Ωd,1Ωd,2...Ωd,6]\begin{bmatrix} U_{1}\\ U_{2}\\ ...\\ U_{6}\\ \end{bmatrix} = k* \begin{bmatrix} \Omega_{d,1}\\ \Omega_{d,2}\\ ...\\ \Omega_{d,6}\\ \end{bmatrix}
[U1U2...U6]=kM61(1,1,1)[Fd/cTτdx/(dcT)τdy/(dcT)τdz/(dcT)]\begin{bmatrix} U_{1}\\ U_{2}\\ ...\\ U_{6}\\ \end{bmatrix} = k* \sqrt{M^{-1}_{6}(1,1,1) \begin{bmatrix} F_{d}/c_{T}\\ \tau_{dx}/(dc_{T})\\ \tau_{dy}/(dc_{T})\\ \tau_{dz}/(dc_{T})\\ \end{bmatrix}}

总结

  本篇围绕控制分配矩阵展开,阐述了控制分配矩阵的作用及必要性,以多旋翼飞行器为例,推导其控制分配矩阵的求解过程。
  在实际工程中,控制分配矩阵的重要性不亚于控制器设计本身,一个合理的控制分配矩阵能够大大减轻控制器的压力,提高系统的鲁棒性。