李利亮,牛 睿,邵志杰,沈 毅
(1. 哈尔滨工业大学航天学院,哈尔滨 150001;2. 上海航天控制技术研究所,上海 201109;3.上海市空间智能控制技术重点实验室,上海 201109)
为了提高卫星的可靠性与安全性,星上的部件通常是冗余配置的。虽然星上的元器件都有较高的设计可靠性,但是由于其长期运行在恶劣的空间环境中,难免会发生故障[1]。文献[2]中分析了从1980年到2005年间的156次航天器故障,发现航天器姿态控制与确定分系统的故障占故障总数的32%。姿态确定系统作为姿态控制系统的核心,其故障可能会引起卫星姿态控制性能下降,甚至可能影响卫星的正常运行。因此,对于航天器姿态确定系统进行故障诊断以便及时采取有效的处理措施对于航天器的安全稳定运行具有重要意义。
故障诊断技术可大致分为基于模型的方法、数据驱动的方法和基于知识的方法[3],其中基于模型的故障诊断技术方面的研究最为广泛和深入[4-6]。近年来,基于模型的故障诊断技术研究在航空航天领域逐渐引起了国内外学者们的重视[7-9]。文献[10]针对卫星姿态控制系统的线性模型研究了基于观测器的故障诊断方法。文献[11]利用状态增广观测器研究了卫星姿态控制系统的执行器故障估计与容错控制方法。文献[12-13]研究了卫星姿态控制系统的故障估计与容错控制的联合设计方法。文献[14]研究了基于比例微分型学习观测器的姿态控制系统执行器故障估计,并将其扩展用于卫星姿态敏感器的故障估计。文献[15]中提出了一种基于偏差分离原理和二阶卡尔曼滤波的卫星执行机构故障诊断方法,并利用半实物仿真平台进行了验证。需要说明的是,目前文献中的大部分航天器故障诊断方法是针对执行器故障的,在敏感器故障诊断方面的研究相对较少。对于敏感器故障诊断,目前比较常用的方法是基于硬件冗余的传感器校验法。这种方法简单有效,但是要想实现故障分离,需要的硬件冗余较多。例如,若想实现单一陀螺故障的分离,则需要至少5个不同方向上的陀螺敏感器。因此,如何有效结合硬件冗余和解析冗余关系,提高对姿态敏感器故障的诊断能力,是值得研究的重要问题。针对卫星姿态敏感器的故障诊断问题,文献[16]提出了一种基于卡尔曼滤波器的方法。但是该方法需要假设卫星的轨迹是已知的,在一定程度上限制了其实用性。在文献[17]和文献[18]中,先构造广义系统再设计观测器的方法被用于卫星姿态敏感器的故障诊断,但是文献[17]和文献[18]中都是基于线性模型的方法,需要对卫星姿控系统的非线性动态进行线性化之后才能使用。另外,文献[17]和文献[18]中的方法只是针对某种特定的敏感器故障的诊断方法,没有实现对整个姿态确定系统故障的全面覆盖,例如文献[17]中只考虑了姿态角敏感器的故障诊断,其使用前提是陀螺不发生故障。这一前提在工程应用中是很难满足的。文献[19]中提出了一种利用四元数估计角速率的陀螺故障定位方法,但是需要利用姿态动力学方程进行滤波。在实际运行过程中,由于燃料消耗、附件展开等影响,姿态动力学方程中的惯量参数往往是不准确的[20]。如果不能实时、准确地确定卫星的惯量参数,利用姿态动力学方程的故障诊断方法的实际故障诊断性能难以保证。针对已有文献中的上述问题,文献[21]将著名的专用观测器思想(Dedicated observer scheme,DOS)与卡尔曼滤波器相结合,提出了基于卡尔曼滤波器组的卫星姿态敏感器故障检测与分离方法。该方法简单有效,只利用姿态运动学方程即可进行故障诊断,不受卫星惯量参数的影响,在实际应用中的可靠性高。但是,该方法需要一组卡尔曼滤波器同时在轨运行,相对目前的星上计算机的运算能力,该算法的计算量偏大,这一点在一定程度上降低了算法的工程实用价值。针对文献[21]中方法计算量相对较大的问题,本文提出了一种基于简化滤波器思想的卫星姿态敏感器故障诊断方法,只利用一个卡尔曼滤波器即可实现对陀螺和星敏故障的检测与分离,进一步提高了文献[21]中方法的实用价值。
本文考虑由三正交一斜装陀螺组件和一个星敏感器构成的卫星姿态姿态确定系统。将卫星的姿态角速度记为
(1)
采用三正交一斜装构型的陀螺组件的测量方程为
ωg=Hω+b+vg+fg
(2)
其中,ωg∈R4,b∈R4,vg∈R4和fg∈R4分别是陀螺组件的测量值、常漂、测量噪声和故障,H是与陀螺安装矩阵相关的测量矩阵,具有如下形式:
(3)
本文采用四元数表示卫星的姿态。四元数q是满足归一化条件qTq=1的一个4×1维向量,其形式如下
(4)
在本文中,令q4为四元数的标量部分,q1,q2和q3构成了四元数的矢量部分。
四元数形式的卫星姿态运动学方程具有如下形式:
(5)
(6)
根据姿态运动学方程的双线性性质,式(5)还可以写成如下形式:
(7)
其中Ω(ω)为
(8)
式(7)中的姿态运动学方程可被离散化为如下形式:
(9)
其中,Δt为离散时间间隔。
注1. 接下来,为了简洁,在有些不影响理解的地方我们会将时间索引k省略。
(10)
式中:n, cω和sω具有如下形式:
(11)
将式(10)代入姿态运动学方程(9)可得
q(k+1)=[cωI4+sωΩ(n)]q(k)
(12)
为了表述方便,将k时刻的陀螺测量值分成两部分:
(13)
(14)
(15)
在本文的研究中,假设b(k)为未知的常值偏差,测量噪声vg(k)是互不相关但协方差为Q∈R4×4的高斯白噪声。按照式(14)中的划分方式,可以将Q写成如下形式:
(16)
此外,本文中采用的星敏感器的测量模型为
qs(k)=q(k)⊗qf⊗qv(k)+fq(k)
(17)
其中,qs(k)表示四元数测量值,qv(k)表示测量噪声的四元数,qf和fq(k)用于表征星敏感器故障造成的影响。
本文的目的是针对陀螺和星敏感器都有可能发生故障的卫星姿态确定系统,利用解析冗余设计故障诊断算法,对单点故障进行检测与分离。需要说明的是,由于卫星上的部件具有很高的可靠性,所以出现并发故障的概率较小,所以单一故障的假设是合理的。
本文通过设计一个卡尔曼滤波生成残差进行故障诊断。为此提出一种新的卡尔曼滤波器设计方法。
为了便于卡尔曼滤波器设计,需要先将姿态运动学模型进行一定的变换。在无故障时,由式(14)可得
(18)
将式(18)代入(9)可得
(19)
Ω(x)q=Ξ(q)x
(20)
其中
(21)
利用式(20)可以将式(19)转化为如下形式:
(22)
(23)
另一方面,希望将星敏的测量方程转化为加性噪声的形式,即
qs(k)=q(k)+vq(k)
(24)
将式(24)代入式(17)可得
(25)
其中
(26)
设Δq(k)的协方差矩阵为R0,根据式(25)可以得到vq(k)的协方差矩阵为R=(qs(k)⊗)R0(qs(k)⊗)T。由于大部分情况下姿态四元数的标部都比矢部大很多,所以在使用中,不妨设R=R0。
为了设计卡尔曼滤波器,需要将姿态运动系统写成状态空间方程的形式。令
(27)
可以得到如下的动态方程
(28)
其中,
(29)
基于式(28)中的状态空间系统,提出如下的扩展卡尔曼滤波器设计算法。
预测:
(30)
(31)
校正:
K(k)=P(k|k-1)CT(CP(k|k-1)CT+R)-1
(32)
(33)
P(k)=(I7-K(k)C)P(k|k-1)
(34)
利用上述卡尔曼滤波器即可得到姿态四元数和三正交轴陀螺常漂的估计值,作为故障诊断的基础。
在文献[21]中,陀螺敏感器被分为4组,然后利用著名的专用观测器思想进行故障检测与分离,其基本原理如图1所示。该方法通过4个卡尔曼滤波器生成一组结构化残差进行故障检测与分离。但是,该方法要求4个卡曼滤波器同时运行,由于目前的星上计算机性能有限,该算法给星上计算机带来了较大的运算负担。
为了进一步提高文献[21]中方法的工程实用性,本文借鉴简化观测器思想(Simplified observer scheme,SOS),提出一种采用简化滤波器思想的敏感器故障检测与分离方法,只利用一个卡尔曼滤波器即可实现对卫星姿态确定系统中敏感器故障的检测与分离,以克服文献[21]中方法计算量较大的问题。
本文提出的故障诊断方法的基本思想如图2所示。其中,利用卡尔曼滤波器生成的三个正交陀螺的漂移估计的绝对值,可作为表征三正交陀螺故障和星敏故障的残差信号,即
(35)
(36)
来构造另一个残差信号:
(37)
表1 故障-残差影响关系Table 1 Fault-residual effect relations
表2 故障诊断律Table 2 Fault diagnosis strategy
注3. 虽然文献[21]中采用了4个滤波器进行故障诊断,但是其故障诊断方法也是建立在单点故障假设的基础上的。换言之,文献[21]中方法的可诊断集和本文所提方法的可诊断集是一样的,都是只能诊断出单个陀螺的故障,但是本文中的方法只需要用到1个滤波器,而在生成残差信号r4(k)时只需要进行3次标量乘法、4次标量加法和1次求绝对值的运算,增加的计算量基本可以忽略。因此,式[21]中方法的计算量是本文中方法计算量的4倍。如果采用相同的处理器和运算资源,则本文所提出的方法的处理时间将会是文献[21]中方法的1/4左右。
本节采用数值仿真校验所提出方法的有效性。仿真中设定的陀螺的常漂为b1=50 (°)/h,b2=40 (°)/h,b3=-50 (°)/h,b4=45 (°)/h,陀螺噪声和星敏噪声的标准差大小分别为0.05 (°)/h和0.00333°。接下来,采用两类比较常见的故障形式对所提出的方法进行仿真验证。
首先,考虑x轴陀螺发生如下形式的突变故障:
(38)
这种故障情况下,利用所提出的故障诊断方法可以得到如图3所示的故障诊断结果。从图3可以看出,残差r1和r4很快超出了阈值,其他残差则没有超过阈值。根据故障诊断律,可以判断出是x轴上的陀螺发生了故障。注意到在仿真的起始阶段部分残差超过阈值。这是由于陀螺的常值漂移是未知的,卡尔曼滤波器的估计值可能会出现一定的超调,但是很快就会收敛到真实值附近,所以只是非常短的一段起始阶段内会出现无故障时残差超过阈值的现象。
接下来,考虑斜装轴陀螺发生如下形式的缓变故障:
(39)
这种故障情况下,所提出的故障诊断方法可以得到如图4所示的故障诊断结果。可以看出,残差r4在故障发生2.5 s后超过阈值,而其他故障未超过阈值。根据故障诊断律可以判断出是斜装陀螺发生了故障。由于缓变故障一开始的影响很小,所以需要一段时间后才能被检测并分离出来。
最后,考虑星敏感器发生如下形式的故障:
(40)
上述仿真结果说明,本文所提出的方法能够检测并分离出正交陀螺组件、斜装陀螺组件和星敏感器的故障,可以实现对卫星姿态确定系统敏感器(单点)故障的全覆盖。这一特点是已有文献中的方法所不具有的。
为了说明故障诊断算法对于故障全覆盖的重要性,将文献[22]中的方法应用于星敏感器发生(40)中故障的情况。文献[22]中的故障诊断思想主要是对星敏感器的测量值进行数值求导,然后利用四元数导数和姿态角速度的关系估计姿态角速度,得到姿态角速度的估计值之后,即可与陀螺测量值做差从而得到故障估计值。由于篇幅有限,本文只给出利用四元数微分法对三正交陀螺的故障估计,如图6所示。由于文献[22]中的方法没有覆盖星敏感器故障,所以在星敏感器发生故障时,其仍然认为是陀螺组件发生了故障,导致得到了错误的故障诊断结果。故障诊断可以被粗略地分为故障建模、故障检测、故障分离和故障估计(亦称故障辨识)4个步骤,但是大部分研究忽略了故障建模这一步骤,假设故障的作用模型是固定并且已知的,然后以此为基础研究故障诊断方法。这样的处理降低了故障诊断的研究难度,但很有可能无法全面覆盖实际系统中的故障类型,在实际应用时可能会导致错误的故障定位。
对于陀螺和星敏都有可能发生故障的卫星姿态确定系统,本文利用卡尔曼滤波器结合简化观测器思想给出了一种姿态敏感器故障检测与分离方法。所提出的方法不仅可以诊断陀螺故障,而且对星敏感器的故障也有诊断能力。文中给出的仿真实例说明了该方法的有效性。