发明内容
针对现有技术存在的不足,本发明提供了一种多导航系统互操作定位方法及系统,适用于可视卫星数量较少情况下的多系统组合定位。
为解决上述技术问题,本发明采用如下的技术方案:
一、多导航系统互操作定位方法,包括:
(1)基于卡尔曼滤波的定位模型的构建,包括:
以一系统接收机钟差为基准钟差dt'r,采用基准钟差表示其他系统接收机钟差dtr=dt'r+δ,δ表示系统间钟差偏差;
基于基准钟差构建各系统的观测方程;
由位置参数、基准钟差和系统间钟差偏差构成状态参数向量;
构建基于卡尔曼滤波法的状态方程xk=Φk,k-1·xk-1+K·wk-1,其中,xk、xk-1分别为第k、(k-1)个历元的状态参数向量;Φk,k-1为第(k-1)个历元到第k个历元的状态转移矩阵;K为噪声输入矩阵,当各系统广播星历均不更新时,K为零向量,当有系统广播星历更新时,K=[0 0 0 0 ΔD]T,向量ΔD中元素表示各系统间钟差偏差的跳变,分别根据广播星历更新时各系统时间基准的跳变获得,系统时间基准跳变为各系统所有卫星从当前历元广播文件读取的卫星钟差和根据上一历元卫星钟差推算的卫星钟差之差的平均值, 分别表示从上一历元广播文件读取的上一历元时刻t0卫星的时钟偏差和时钟漂移,(t-t0)表示当前历元时刻与上一历元时刻间的时间差;wk-1为过程噪声;
(2)每次接收机定位结束时,存储本次定位结束时估算的系统间钟差偏差;
(3)每次接收机定位时,若本次定位与上次定位时间间隔小于预设间隔,引入上次定位结束时估算的各系统间钟差偏差作为当前历元时刻的各系统间钟差偏差,采用定位模型进行定位;
(4)每次接收机定位时,若本次定位与上次定位时间间隔不小于预设间隔,采用定位模型实时解算各历元时刻下各系统间钟差偏差的变化值,进而获得当前历元时刻的各系统间钟差偏差,采用定位模型进行定位;
上述系统即导航系统的简称。
步骤(3)中所述的入上次定位结束时估算的各系统间钟差偏差作为当前历元时刻的各系统间钟差偏差,采用定位模型进行定位,具体为:
引入上次定位结束时估算的各系统间钟差偏差构建虚拟观测方程;
以虚拟观测方程作为基于卡尔曼滤波法的状态方程的约束信息,结合各系统的观测方程,解算状态参数向量,从而实现定位解算。
步骤(4)中所述的采用定位模型进行定位,具体为:
引入当前历元时刻的各系统间钟差偏差构建虚拟观测方程;
以虚拟观测方程作为基于卡尔曼滤波法的状态方程的约束信息,结合各系统的观测方程,解算状态参数向量,从而实现定位解算。
二、多导航系统互操作定位系统,包括:
模型构建模块,用来基于卡尔曼滤波的定位模型的构建,包括:
以一系统接收机钟差为基准钟差dt'r,采用基准钟差表示其他系统接收机钟差dtr=dt'r+δ,δ表示系统间钟差偏差;
基于基准钟差构建各系统的观测方程;
由位置参数、基准钟差和系统间钟差偏差构成状态参数向量;
构建基于卡尔曼滤波法的状态方程xk=Φk,k-1·xk-1+K·wk-1,其中,xk、xk-1分别为第k、(k-1)个历元的状态参数向量;Φk,k-1为第(k-1)个历元到第k个历元的状态转移矩阵;K为噪声输入矩阵,当各系统广播星历均不更新时,K为零向量,当有系统广播星历更新时,K=[0 0 0 0 ΔD]T,向量ΔD中元素表示各系统间钟差偏差的跳变,分别根据广播星历更新时各系统时间基准的跳变获得,系统时间基准跳变为各系统所有卫星从当前历元广播文件读取的卫星钟差和根据上一历元卫星钟差推算的卫星钟差之差的平均值, 分别表示从上一历元广播文件读取的上一历元时刻t0卫星的时钟偏差和时钟漂移,(t-t0)表示当前历元时刻与上一历元时刻间的时间差;wk-1为过程噪声;
系统间钟差偏差存储模块,用来每次接收机定位结束时,存储本次定位估算的系统间钟差偏差;
第一定位模块,用来每次接收机定位时,若本次定位与上次定位时间间隔小于预设间隔,引入上次定位结束时估算的各系统间钟差偏差作为当前历元时刻的各系统间钟差偏差,采用定位模型进行定位;
第二定位模块,用来每次接收机定位时,若本次定位与上次定位时间间隔不小于预设间隔,采用定位模型实时解算各历元时刻下各系统间钟差偏差的变化值,进而获得当前历元时刻的各系统间钟差偏差,采用定位模型进行定位;
上述系统即导航系统的简称。
上述第一定位模块进一步包括子模块:
虚拟观测方程构建子模块,用来引入上次定位结束时估算的各系统间钟差偏差构建虚拟观测方程;
定位解算子模块,用来以虚拟观测方程作为基于卡尔曼滤波法的状态方程的约束信息,结合各系统的观测方程,解算状态参数向量,从而实现定位解算。
上述第二定位模块进一步包括子模块:
虚拟观测方程构建子模块,用来引入当前历元时刻的各系统间钟差偏差构建虚拟观测方程;
定位解算子模块,用来以虚拟观测方程作为基于卡尔曼滤波法的状态方程的约束信息,结合各系统的观测方程,解算状态参数向量,从而实现定位解算。
和现有技术相比,本发明具有如下特点和有益效果:
在卫星遮挡严重的地区(例如高楼林立的城市),一般可视卫星数量较少,这种情况下多系统组合定位时,若估计各系统的接收机钟差,会导致观测方程秩亏,从而无法定位。对于多导航系统组合定位,本发明只需估计一个接收机钟差即可进行定位解算,在可视卫星数量较少情况下也可实现多模解算,从而解决了可视卫星数量较少情况下无法定位的问题。
具体实施方式
为了使本发明目的、技术方案及有益效果更加清楚明白,下面将结合附图及具体实施方式,进一步说明本发明。应当理解,以下描述的具体实施方式仅用以解释本发明,并不用于限定本发明。
下文公式中,G代表GPS,C代表BDS,R代表GLONASS,E代表GALILEO。
各GNSS系统的观测方程如下:
式(1)中,omcG、omcC、omcR、omcE分别表示GPS、BDS、GLONASS、GALILEO系统的观测值;Δx、Δy、Δz表示位置参数;lG、mG、nG为GPS系统观测方程的系数,lC、mC、nC为BDS系统观测方程的系数,lR、mR、nR为GLONASS系统观测方程的系数,lE、mE、nE为GALILEO系统观测方程的系数;c为真空光速; 分别为GPS、BDS、GLONASS、GALILEO系统的接收机钟差参数。
式(1)可简化表示为:
zk=Hkxk+vk (2)
式(2)中,zk、Hk、xk、vk分别表示第k个历元的观测值、观测设计矩阵、状态参数向量和观测值残差。
观测设计矩阵Hk可以表示如下:
状态参数向量xk可表示为:
多模接收机中,各导航系统共用一个接收机时钟,但由于各导航系统时间基准以及接收机对不同导航系统卫星信号跟踪和捕获时延不同,导致各导航系统接收机钟差存在数天内为常数的偏差,以GPS系统接收机钟差作为参考,其他导航系统接收机钟差可以表示为:
式(5)中,l、m、n表示导航系统间钟差偏差,在数天内具有较高的短期稳定性。将式(5)带入式(1),可以得到:
新状态参数向量xk可表示为:
其中,是GPS系统的接收机钟差,即基准钟差;l、m、n分别是BDS、GLONASS和Galileo系统与GPS系统的接收机钟差间偏差。需要指出的是,公式(5)中选取的基准钟差,可以是GPS接收机钟差,也可以是BDS、Galileo或GLONASS接收机钟差。
因此,在GNSS多系统定位中,可以将某个导航系统的接收机钟差设置为基准钟差,其它导航系统的接收机钟差可表达为该基准钟差加上偏差,定位解算只需估计一个接收机钟差即可。
Kalman滤波进行参数估计的状态方程可以表示为:
xk=Φk,k-1·xk-1+K·wk-1 (8)
式(8)中,xk、xk-1分别为第k、(k-1)个历元的状态参数向量;Φk,k-1为第(k-1)个历元到第k个历元的状态转移矩阵,K为7×1噪声输入矩阵,wk-1为过程噪声。
状态转移矩阵Φk,k-1可表示为:
式(9)中,Ip和IΔt均为3×3单位矩阵,状态转移矩阵不会随时间(或历元)的变化而变化。
过程噪声协方差矩阵Qk,k-1可以表示为:
式(10)中,E[wwT]是过程噪声wk-1的协方差矩阵,I是3×3单位矩阵,Sp是位置参数的噪声因子,St是基准钟差的噪声因子,SΔt是导航系统间钟差偏差的噪声因子。位置参数和基准钟差的过程噪声较大,一般噪声因子取值为104量级;导航系统间钟差偏差为常数,噪声因子取值为零。
在导航系统广播星历不更新时,K为零向量;当某导航系统或多个系统广播星历更新时,K为一个非零向量:
K=[0 0 0 0 Δl Δm Δn]T (11)
式(11)中,Δl、Δm、Δn为广播星历的更新导致的各导航系统间偏差的跳变,Δl=ΔdTC-ΔdTG,Δm=ΔdTR-ΔdTG,Δn=ΔdTE-ΔdTG;ΔdTG、ΔdTC、ΔdTR、ΔdTE为广播星历更新导致的GPS、BDS、GLONASS、GALELIO系统时间基准的跳变,多卫星平均可以得到准确的跳变值。
假设t时刻发生广播星历更新,导航系统时间基准跳变的计算方法如下:
式(12)中,u、v、w、q分别为GPS、BDS、GLONASS、GALELIO卫星导航系统各广播星历中卫星数。分别为各导航系统第i颗卫星在t时刻根据新历元广播星历文件中读取的卫星钟差和根据旧历元推算得到的卫星钟差,它们的差值即为导航系统时间基准跳变。可以从新历元广播星历中直接读取,可以通过如下公式计算:
分别表示旧历元文件中上一历元时刻t0第i颗卫星的时钟偏差和时钟漂移;(t-t0)表示当前历元时刻与上一历元时刻间的时间差。
若本次开机的环境就在城市等卫星遮挡较严重区域,可见卫星数太少,则公式(1)中模型存在秩亏,无法解算。但利用之前解算的l、m、n先验信息可以有效解决秩亏问题,该l、m、n先验信息可通过以下两种方法获取:
(1)接收机定位结束时,存储本次定位结束时得到的l、m、n估值(l、m、n估值具体可采用公式(6)式及Kalman滤波公式(8)),用于下次定位。
下次定位中,若本次定位时间与上次定位时间相隔小于一天,则直接读取存储的l、m、n参数的先验信息l'、m'、n',加入到当前历元滤波器,可通过虚拟观测值形式实现,如下式所示:
l=l',m=m',n=n'P=∞ (14)
式(14)中,l'、m'、n'为上一定位结束后存储于文件中导航系统间钟差偏差,P为虚拟观测方程权,值为无穷大。
(2)若两次定位时间间隔大于一天,就需要在服务端部署接收机基于公式(6)以及上述Kalman滤波公式实时解算l、m、n的时间序列。用户端可以向服务端请求从上次定位结束到当前时刻的l、m、n的变化值,在上次定位结束时存储的l、m、n上加入变化值,进而得到当前时刻的l、m、n;基于式(14)将这个约束信息加到式(8)中的滤波模型中。
以下根据实施例和附图说明本发明技术方案:
参考附图1,实施例的基本流程为:
(1)读取文件中的l、m、n先验观测信息,若本次定位时间与上一定位时间间隔过长,则从服务器读取l、m、n先验观测信息的变化值,将变化值加到l、m、n中;否则,直接将l、m、n应用到本次定位过程中。(2)读取历元,在Kalman滤波中引入各导航系统间钟差偏差l、m、n,建立虚拟观测方程和递推模型,最后根据观测方程、虚拟观测方程和递推模型进行kalman递推估计,实现kalman滤波估计方式。(3)若历元读取完毕则退出,否则继续下一历元。
一、读取历元先验信息
若本次定位环境在城市等卫星遮挡较严重区域,可见卫星数太少,则公式(6)中模型会存在秩亏,无法解算。但利用之前解算的l、m、n先验信息可以有效解决秩亏问题,该l、m、n先验信息可通过以下两种方法获取:
(1)某次接收机定位结束,存储本次定位估计得到的l、m、n,用于下次定位。
下次定位中,若当次定位时间与上次定位时间相隔不长,可直接读取l、m、n参数的先验信息l'、m'、n',加入到当前历元滤波器,可通过虚拟观测值形式实现,如下式所示:
l=l',m=m',n=n'P=∞
其中,l'、m'、n'为上次定位结束后存储于文件中导航系统间钟差偏差,P为虚拟观测方程权,值为无穷大。
(2)若两次定位时间间隔较长,就需要在服务端部署接收机基于公式(6)以及上述Kalman滤波公式实时解算l、m、n的时间序列。用户端可以向服务端请求从上次定位结束到当前时刻的l、m、n的变化值,进而得到当前时刻的l、m、n,再基于式(14)将这个约束信息加到式(6)中的滤波模型中。
二、Kalman滤波
以GPS系统接收机钟差作为基准钟差,其他导航系统接收机钟差可表示为:
其中,l、m、n为导航系统间钟差偏差,在数天内具有较高的短期稳定性。
将上式代入各导航系统的观测方程,得到:
新状态向量xk可表示为:
Kalman滤波进行参数估计的状态方程为:
xk=Φk,k-1·xk-1+K·wk-1
利用状态方程,结合导航系统观测方程进行定位解算。
三、判断历元是否读取完毕
若读取完毕,则结束;否则读取下一历元,重复执行步骤一~二。