高文宁,岳富占,徐振兴,刘 鹏,李东俊
(北京卫星信息工程研究所,北京 100086)
目前,北斗卫星导航系统已经在导弹等精确制导武器中得到了广泛应用,与惯性导航结合共同为导弹提供高精度的定位服务。由于卫星信号为无线信号,极易受到外部干扰而引起定位偏差,因此卫星导航系统除了提供定位功能外,还必须具有在系统不能使用时及时向用户发出告警的能力,这种能力叫作接收机自主完好性监测(Receiver Autonomous Integrity Monitoring,RAIM)[1-2]技术。传统的卫星信号完好性监测算法都要求可见星数在5颗以上才可以检测出故障星,6颗以上才可以剔除存在故障的卫星。但是武器型号的卫星导航接收机通常在丛林等复杂环境中使用,北斗卫星由于信号遮掩、易受干扰等因素的影响,量测时常常不能提供足够的卫星余度信息,不能满足一般RAIM算法要求,并且单独的RAIM方法不能对渐变误差信号进行有效剔除[3]。因此,为了满足高精度、高可靠性定位的要求,需要利用其他辅助系统增加余度信息,以满足冗余条件。惯性导航系统是一种独立的导航系统,具有较高的短期稳定性和抗干扰能力,可与北斗卫星组合实现卫星故障剔除,基于惯性辅助卫星导航实现完好性监测功能[4-5]。
目前,应用于卫星导航接收机完好性监测的方法主要为基于伪距残差的χ2检验法[6],此类方法不需要确定造成故障的原因,缺点是对慢变故障的检测时间较长,并且不能完成5星以下的故障识别与隔离。多解分离(Multi-Solution Separation,MSS)是将惯性与卫星信息进行数据融合以实现RAIM监测的一种有效方法[7],它以高斯分布的多个Kalman滤波估计的多解分离为基础进行完好性监测[8]。本文在卫星导航系统的框架下,融合惯性信息设计了一种基于多解分离的组合滤波器结构,每层滤波器不弃用、弃用一组或两组伪距和伪距率观测值,利用各层滤波器估计解之间的差异构建检测统计量,实现对北斗卫星故障的检测和隔离。
基于惯性辅助的RAIM算法采用Kalman滤波器进行设计[9],系统结构如图1所示,其中共包含1个主滤波器和N个子滤波器,次滤波器的实际数量为N(N-1)/2。主滤波器记为F0,0,子滤波器记为F0,n,次滤波器记为Fm,n,其中m和n都是从1~N的整数,表示被弃用的可见星标号。通过主滤波器F0,0与各个子滤波器F0,n状态估计的差值,得到多解分离估计,并根据主/子滤波器多解分离程度与检测门限的对比结果进行故障检测,故障隔离则由子滤波器和次滤波器的多解分离进行处理。
图1 基于Kalman滤波的北斗接收机结构图Fig.1 Structural chart of BDS receiver based on Kalman filter
卫星导航系统的Kalman滤波器状态方程建立为
X(k)=Φ(k,k-1)X(k-1)+Γ(k-1)W(k-1)
(1)
式中
X=[δvE,δvN,δvU,δL,δλ,δh,δtu,δtru]T
其中,状态量X包括速度误差δvE、δvN、δvU,位置误差δL、δλ、δh,接收机钟差δtu和时钟漂移误差δtru;Φ为状态转移矩阵;Γ为系统噪声矩阵;W为系统噪声;k为时间变量。
系统观测方程建立为
Z(k)=H(k)X(k)+V(k)
(2)
观测矩阵H表示为
(3)
主滤波器F0,0使用所有可见卫星的观测量,因而其观测矢量Z0,0为
(4)
与之相对应的观测矩阵H0,0即为H
(5)
子滤波器F0,n使用N-1个观测量,第n个子滤波器F0,n的观测矢量Z0,n为
(6)
相应的观测矩阵H0,n为
(7)
同理,次滤波器Fm,n使用N-2个观测量,第m个子滤波器组内的第n(m≠n)个次滤波器Fm,n的观测矢量Zm,n及相应的观测矩阵Hm,n分别为
Zm,n=[zρ,1,…,zρ,m-1,zρ,m+1,…,zρ,n-1,
Hm,n=[hρ,1,…,hρ,m-1,hρ,m+1,…,hρ,n-1,
(8)
经过Kalman滤波得到的主滤波器F0,0、子滤波器F0,n和次滤波器Fm,n的状态估计量分别为X0,0、X0,n和Xm,n,对应的估计协方差阵分别为P0,0、P0,n和Pm,n,对应的滤波器增益分别为K0,0、K0,n和Km,n。
故障检测与隔离算法的设计主要是完成检测统计量和相应检测门限的构建。在北斗故障检测过程中,计算每个历元主滤波器与各子滤波器状态估计值的多解分离矢量
dX0,n(k)=X0,0(k)-X0,n(k)
(9)
故障隔离过程中,则需要计算每个历元各子滤波器与其下属次滤波器状态估计值的多解分离矢量
dXm,n(k)=X0,m(k)-Xm,n(k)
(10)
故障检测的统计量可以采用dX0,n的协方差矩阵来描述,即
(11)
(12)
(13)
当给定故障检测虚警概率PFA后,可根据检测统计量的分布情况计算每个子滤波器的检测门限
(14)
在故障隔离完成后,利用未包括故障卫星观测量的子滤波器对所有滤波器进行重组,即未使用故障卫星观测量的子滤波器作为新的主滤波器,提供导航解输出、惯导误差估计校正以及对北斗接收机捕获、跟踪的速率辅助;而原来该子滤波器下属的次滤波器作为新的子滤波器,然后构造新的次滤波器,继续对卫星完好性进行监测。
(15)
(16)
进而得到多解分离RAIM的HPL为
(17)
当HPL小于告警门限值时,说明当前时刻多解分离RAIM算法可用[14-16]。
图2 多解分离RAIM算法仿真验证流程图Fig.2 Flow chart of MSS RAIM algorithm simulation
在基于惯导辅助的多解分离故障检测方案中,首先需要尽量避免在无卫星故障时系统发生误警,图3所示为无卫星故障时,子滤波器F0,1~F0,4的检测统计量值。由图3可见,各子滤波器的检测统计量值均小于门限值1。因而,根据无故障假设H0,能够保证无卫星故障时系统不产生误警。
图3 无卫星故障时各子滤波器检测统计量值Fig.3 Detection statistic of sub-filters in the case of no satellite faults
为了验证多解分离故障检测与隔离算法的有效性,在伪距和伪距率观测值中加入故障数据。假设故障星为第2颗可见星,标号为SAT2。当组合导航滤波器稳定运行270s后,向SAT2的伪距和伪距率观测数据中分别施加750m、75m/s的阶跃故障,5m/s、0.5m/s2的慢速漂移故障和5m/s、0.5m/s2的慢速随机故障,并在420s处将故障撤除。
图4所示为SAT2分别存在三种不同类型故障时,子滤波器F0,1~F0,4的检测统计量值。由图4可见,在SAT2发生故障期间,子滤波器F0,1~F0,4的检测统计量值均明显增大,三种类型故障条件下,最快分别约在271.9s、277.8s和276.1s超过门限值1。因而,根据存在故障假设H1,多解分离故障检测算法对所设置的阶跃、慢速漂移和慢速随机故障的检测时间分别为1.9s、7.8s和6.1s。
图4 SAT2故障时各子滤波器检测统计量值Fig.4 Detection statistic of sub-filters in the case of SAT2 faults
若要识别并隔离具体的故障卫星,则需要使用次滤波器的检测结果。图5所示为SAT2阶跃故障条件下,子滤波器F0,1和F0,2下属次滤波器的检测统计量值。由图5可见,除了子滤波器F0,2下属的次滤波器F2,1、F2,3和F2,4未检测到故障外,其他3个子滤波器下属的次滤波器都检测出故障(图中仅给出F0,1的情况,F0,3、F0,4与F0,1类似)。因此,根据故障隔离原理,子滤波器F0,2未使用的观测数据对应的可见星即为故障星,即SAT2。
图5 SAT2阶跃故障时次滤波器检测统计量值Fig.5 Detection statistic of sub-filters in the case of SAT2 step faults
对于所施加的阶跃故障,仿真过程中得出次滤波器F1,2~F1,4的检测统计量超过门限值的时间分别约为271.7s、273.1s和272.6s,次滤波器F3,1~F3,4分别约为272.7s、271.5s和273.4s,次滤波器F4,1~F4,3分别约为273.2s、271.5s和273.0s,表明子滤波器F0,1的故障检测时间为1.7s,F0,3为1.5s,F0,4为1.5s。由图4分析可知,主滤波器F0,0的故障检测时间为1.9s,而上述过程中只有子滤波器F0,2下属的次滤波器F2,1~F2,4均未检测出故障。因此,根据故障隔离原理确定SAT2为故障星所需的时间为1.9s,即对于750m、75m/s的阶跃故障,多解分离算法可在检测的同时完成隔离。
图6所示为SAT2慢速漂移故障时,子滤波器F0,2和F0,3下属次滤波器的检测统计量值(子滤波器F0,1、F0,4与F0,3的情况类似,未给出)。图7所示为SAT2慢速随机故障时,子滤波器F0,2和F0,4下属次滤波器的检测统计量值(子滤波器F0,1、F0,3与F0,4的情况类似,未给出)。采用与阶跃故障相同的分析方法,可以确定多解分离算法对5m/s、0.5m/s2的慢速漂移及随机故障的隔离时间分别为8.7s和6.4s,与故障检测时间相比分别延迟了0.9s和0.3s。
图7 SAT2慢变随机故障时次滤波器检测统计量值Fig.7 Detection statistic of sub-filters in the case of SAT2 slow random faults
图8所示为三种故障条件下主滤波器F0,0与子滤波器F0,2的水平定位结果。由图8可见,隔离SAT2伪距和伪距率观测值后,子滤波器F0,2对水平位置误差(Horizontal Position Error,HPE)校正后的定位结果与真实轨迹基本重合,能够有效消除故障观测值对卫星接收机定位精度的影响。
图8 主滤波器F0,0与次滤波器F0,2的水平定位结果Fig.8 Horizontal positioning results of F0,0 and F0,2 filters
采用多解分离算法对SAT2伪距和伪距率故障的检测、隔离结果如表1所示。分析可知,对慢速漂移故障的检测与隔离所需时间最长,且在故障隔离前主滤波器F0,0的HPE最大值已达到67m,因而实际应用过程中慢速漂移故障对深耦合系统性能的影响最为严重。故障隔离后,采用子滤波器F0,2作为新的主滤波器,HPE小于4.6m,可用于最终的导航输出。此外,基于F0,2构建新的MSS滤波器结构,进而继续实施完好性监测。
表1 SAT2故障检测与隔离结果
为验证算法的有效性,本文利用卫星/惯性组合导航模拟器搭建半物理仿真验证系统,图9所示为系统组成框图。
图9 测试系统组成示意图Fig.9 Composition diagram of test system
设置组合导航模拟器发出北斗卫星1、2、3、4号共4颗卫星的信号,其中,在仿真进行到300s时,将北斗系统2号星伪距拉偏320m,从而使2号星成为伪距异常的故障星,图10所示为卫星信号模拟器设置界面。
图10 卫星模拟信号设置界面Fig.10 Satellite signal setting interface
同时,设置模拟器仿真导弹用的导航级捷联惯性导航系统,加速度计零偏为50μg,陀螺零偏稳定性为0.01(°)/h。模拟器通过RS422接口与卫星导航接收机进行数据交互。
北斗卫星导航接收机输出的数据通过台式计算机中的上位机界面进行观测。当2号星伪距异常时,卫星导航接收机收星情况如图11所示, 1、2、3、4号卫星均成功接收到,但北斗系统2号星剔除原因显示为9(剔除原因为9表示RAIM剔除),说明2号伪距异常卫星已被软件检测出并完成剔除。
图11 测试结果显示界面Fig.11 Display window of test results
本文针对北斗可见星星数较少及几何分布较差的情况,设计了一种基于惯性辅助的多解分离北斗接收机完好性监测方案,以消除可见卫星数与几何分布条件对RAIM可用性的限制。在北斗导航接收机Kalman滤波器结构的基础上,设计了多级Kalman滤波器及相应的故障检测与隔离方法。仿真及实验验证表明,单星故障时,该方案能够有效检测并隔离北斗伪距和伪距率观测值中的阶跃、慢速故障数据,进而可保证北斗接收机不受故障星的影响,实现连续、精确的导航解算。