张勇鹏, 苏凯雄, 陈伟强
(1. 福州大学物理与信息工程学院, 福建 福州 350116; 2. 福建福大北斗通信科技有限公司, 福建 福州 350116)
随着全球卫星导航产业的飞速发展, 卫星导航系统在军民领域的应用日益广泛. 我国的北斗导航定位系统(beidou satellite navigation system, BDS)在国家大力支持下, 目前已经实现了亚太区域性定位服务, 提供全球服务的北斗三号卫星已经发射. 同时, 美国的全球定位系统(global position system, GPS)已实现现代化, 促使导航定位应用前景更加广阔. 相比于单一的卫星定位系统, 多系统的联合定位可以显著改善卫星星座结构, 提高定位系统的可靠性和连续性. 因此, 基于多系统的联合定位系统是未来导航定位发展的必然趋势.
卡尔曼滤波器是一种利用线性系统方程, 通过输入和输出观测数据, 对系统状态进行最优估计的算法. 在导航接收机中, 卡尔曼滤波器充分利用时间的关联性, 在多个历元观测量的基础上进行估计[6-7], 故在时间上体现为定位结果比较平滑; 而最小二乘法所得到的定位结果则是基于单个历元的观测量, 其估计结果类似于白噪声跳跃的现象, 所以当历元的观测量出现较大偏差时也会引起较大偏差的估计结果.
卡尔曼滤波器在接收机中应用广泛. 文提出一种应用于跟踪环路的卡尔曼滤波器; 文[10]提出基于扩展卡尔曼滤波的接收机自主完整性监测算法; 文[11]分析了PDOP值对于卡尔曼滤波器性能的影响;文[12]提出基于插值和卡尔曼滤波器接收机钟差预测方式, 接收机钟差均方根误差在3 ns之内; 文[13]提出的基于卡尔曼滤波跟踪算法定位性能和精度有了很大的提高, 定位精度较传统跟踪算法提高3 m, 高程误差提高4 m. 国内外针对卡尔曼滤波器在接收机中的研究目前偏向于环路等细节处理, 本研究提出的10元素PV模型则是针对定位算法以及时钟模型.
为解决通常条件下BDS/GPS接收机中采用最小二乘法定位算法存在精度不高的问题, 本研究提出了10元素的卡尔曼滤波解算模型, 采用该模型的定位解算方法可实现在单模定位系统和双模定位系统中的无缝切换. 并通过将本算法与最小二乘法及其他卡尔曼滤波模型定位结果进行对比, 以验证所提模型的正确性和有效性.
图1 卡尔曼滤波器工作原理图Fig.1 Diagram of Kalman filter’s principle
因此, 卡尔曼滤波算法可以分为两个过程: 预测和校正[14-17], 其中预测过程为:
(1)
(2)
校正过程为:
(3)
系统的状态向量x和观测向量y存在如下的线性关系,
yk=Hxk+vk
(4)
其中:v为测量噪声向量. 因此, 基本卡尔曼滤波器是针对于一个离散时间的线性系统状态进行最优估算.
扩展卡尔曼滤波器的基本思路是, 将非线性系统在当前状态估计值处进行线性化, 再进行线性系统的卡尔曼滤波操作[18-20].
假设非线性随机系统用如下差分方程表示:
xk=f(xk-1,uk-1,wk-1)
(5)
yk=h(xk,vk)
(6)
其中:w、v分别为过程噪声和观测噪声.
(7)
(8)
其中:
(9)
(10)
其中:
(11)
式(8)、 (10)与基本卡尔曼滤波器的式(1)、 (4)结构一致, 因此可以根据线性卡尔曼滤波器的工作原理来实现非线性的卡尔曼滤波.
要将卡尔曼滤波定位算法应用于BDS/GPS接收机中, 需先选定系统的状态向量、 确定滤波状态方程及建立滤波测量方程. 为了能够尽可能真实、 完整地描述用户运动规律, 对于平稳运动的物体而言, 系统状态量可以用三个位置分量(x,y,z)、 三个速度分量(vx,vy,vz)来描述; 对于接收机而言, 时钟偏差是作为各个卫星伪距测量值的公共误差部分, 而时钟频漂是作为多普勒频移测量值的公共误差部分, 因为钟差和频漂之间存在一个简单的积分关系, 因此在一般双模接收机中, 两个时钟分量(B,D)也作为卡尔曼滤波系统状态变量, 即一般接收机采用的是9元素的位置-速度(position and velocity, PV)模型[22]. 由于GPS时与北斗时由各自系统中的原子钟维持, 因此GPS、 BDS系统与接收机的钟差以及频漂不一致, 而在9元素PV模型中, 其主要思想是采用某一系统的时间作为解算时间基准, 此方式仅考虑单个系统的频漂, 会使得另一系统的时间计算不准确, 进而导致伪距观测量误差大, 降低解算精度, 且在单、 双模系统中切换相对复杂.
本研究提出的10个状态量PV模型, 在时钟向量中采用的是对两个系统的时钟分别进行建模, 分别为北斗与接收机钟差Bb、 北斗钟漂Db、 GPS与接收机钟差Bg和GPS钟漂Dg, 由于位置与速度、 钟差与频漂在时间上存在积分关系, 因此PV模型的系统状态方程可写为:
(12)
式中: (x,y,z)为接收机的三维坐标; (vx,vy,vz)为接收机的三维速度分量;t是两个历元间的时间差. 该式作为预测系统状态的方程, 系统协方差矩阵预测方程中的过程噪声方差可以参考文[23].
图2 BDS/GPS接收机卡尔曼滤波算法流程图Fig.2 Flow chart of Kalman filter algorithm in BDS/GPS receivers
结合式(1)、 (2)、 (12)和过程噪声方差, 对系统的状态以及状态误差协方差矩阵进行预测(在一般双模接收机中,t=1 s)在对卡尔曼滤波初始化系统状态时, 选用最小二乘法得到的无偏估计值. 在本模型中, 当需要进行单、 双模切换时, 仅需要对相应系统的钟漂、 钟差初始化, 故比9元素模型更加简便, 处理结果也更加准确.
上述状态方程可以预测当前位置、 速度以及相应系统的钟差, 根据预测的状态值可以估计出伪距与多普勒频移值, 再与由卫星星历观测计算得来的伪距与多普勒频移观测值作差可得到伪距与多普勒频移的残差, 利用残差可以对其进行线性化处理, 最后利用这些观测量来校正预测得到的状态值, 进而得到最优估计, 如图2所示.
由距离计算公式, 第i颗卫星伪距观测量的观测方程为:
(13)
其中: (xsv,ysv,zsv)为卫星坐标;c是光速;vρ代表伪距观测噪声. 当此观测方程为GPS伪距观测方程时,Bn作为Bg, 或者为北斗伪距观测方程时作为Bb.
由式(13)可得伪距观测方程为非线性, 因此可以通过2.2小节的方式进行线性化:
(14)
(15)
联合式(3)、 (15)可以求得卡尔曼增益, 观测噪声方差R是由接收机的统计特性得到, 再对系统状态进行观测量校正:
(16)
多普勒频移体现的是某时刻卫星和接收机瞬时相对速度矢量在方向余弦上的投影, 因此第i颗卫星的多普勒频移观测量为:
(17)
由2.2节的推导过程可以得知, 线性化方程写作:
(18)
(19)
接下去的校正步骤参考伪距观测量校正完成对系统状态量速度分量的更新.
卡尔曼滤波器是基于多个历元的观测量, 常规的最小二乘法是基于单历元的观测量; 而基于卡尔曼滤波器的10元素PV模型将两个系统的时钟模型分别建模, 区别于9元素的单一时钟模型. PV模型适用于低动态和静态用户, 所以着重测试静态定位. 为验证改进型10元素PV模型相比于常规的最小二乘法、 9元素PV模型在定位精度上的优越性, 利用相同的中频数据、 接收机和天线, 在NMEA测试软件进行静置天线对比测试. 由于静态测试, 测速结果为0, 无对比价值, 因此本研究在定位结果和定位结果的统计特性方面对比测试.
三种解算算法下ECEF坐标系中x轴的定位结果统计特性如图3所示. 由于ECEF坐标系中的3个坐标轴定位结果的统计特性相同, 因此利用x轴定位结果的统计特性来说明三种解算算法定位结果的统计特性. 白噪声是一种最简单的随机过程, 统计结果每个历元互不相关, 每一历元的噪声点孤立, 由于结果随机分布就会显得比较粗糙又杂乱; 有色噪声是指每一历元的噪声相关, 即在某一历元处的噪声点不孤立, 和其他噪声的幅值相关, 统计结果在时间上呈现相对平滑. 如图所示, 最小二乘法在不同时刻的不同测量误差、 噪声计算后定位结果中的x轴在时间上杂乱无章, 呈现的是类似白噪声的统计特性; 而基于卡尔曼滤波器的9元素PV模型和10元素PV模型x轴的定位结果参考了前面历元观测量的影响, 利用状态方程将不同时刻的系统状态联系起来, 使所有测量值的残余最小, 因此其统计特性呈现较为平滑的曲线, 在时间上是相关联的, 呈现的是类似有色噪声的统计特性.
图3 ECEF坐标系中x轴的定位结果统计特性Fig.3 ECEF coordinate system x-axis positioning results of statistical characteristics
为对比水平方向的定位误差情况, 采用一定百分比可能性的圆误差(circular error probability, CEP), 百分比采用95%; 同时, 在该NMEA测试软件中设置中频播发数据的实际经纬度(119.196 69°E, 26.053 950 6°N)作为测试参考点(即在误差为0时定位结果为该值). 三种解算算法下的定位结果如图4所示.
图4 静态定位结果对比图Fig.4 Diagram of different methods’ results in static positioning
该测试结果是由相同的中频数据、 接收机以及天线测试得出, 可排除解算算法外其他因素对定位结果的影响. 由图4可见, 在平面误差为±10 m的情况下, 最小二乘法的95% CEP定位误差为8 m, 9元素PV模型的95% CEP定位误差为5 m, 10元素PV模型的95% CEP定位误差为3 m, 定位误差越小代表偏离实际结果越少, 定位精度越高. 结果表明, 基于卡尔曼滤波器的PV模型能够明显提高定位精度, 10元素的PV模型比9元素PV模型解算精度更高.
由于不同历元的不同测量噪声与误差在最小二乘法计算后转化为相应历元的不同定位误差与噪声, 因而最小二乘法的定位结果显得既粗糙又杂乱, 定位误差较大, 定位精度较低. 而基于卡尔曼滤波器的定位算法, 用上一个历元与当前历元的测量值来估计当前历元系统状态值, 利用状态方程预测和更新得到最优估计值, 因而卡尔曼滤波器的定位结果显得较为平滑, 定位误差较小, 定位精度较高. 基于卡尔曼滤波器的10元素PV模型解算算法在时钟建模时相对于9元素PV模型改善了北斗时钟模型, 降低了钟差对于定位结果的影响. 因此, 三种算法中, 10元素PV模型结算算法定位精度最高, 9元素PV模型次之, 最小二乘解算算法定位精度最差.