2. 精密工程与工业测量国家测绘地理信息局重点实验室,武汉市珞喻路129号,430079
在目前卫星星座状态下,杨元喜等[1]初步评估了BDS的基本导航定位性能,得出其伪距和载波相位测量精度和GPS处在同一水平。BDS作为一个完全独立的全球卫星导航定位系统,同GPS的设计原理及定位方式很相似:BDS与GPS均采用码分多址技术;虽然BDS有多颗同步轨道卫星,但BDS所有卫星播发的广播星历内容与数据格式和GPS基本相同;BDS与GPS采用的时间系统、坐标系统稍有差别,但很容易通过转换统一到同一系统中。
本文采用传统GPS/BDS静态相对定位的数学模型,编写具有同时解算BDS和GPS基线功能的COM组件和DLL动态链接库。将基线解算库嵌入到不同的平台系统进行测试,对实测数据进行处理,表明该基线解算库具有良好的封装性、嵌入性及普适性,且可以大幅度减少开发时间。
1 基线解算数学模型基线解算库采用双差观测方程,伪距和载波相位的双差观测方程为[2]:
$ \begin{array}{c} \lambda \varphi _{ij}^{pq} = - \left( {l_j^p - l_j^q} \right){\rm{d}}{X_j} - \left( {m_j^p - m_j^q} \right){\rm{d}}{Y_j} - \\ (n_j^p - n_j^q){\rm{d}}{Z_j} - \lambda \Delta N_{ij}^{pq} - ({V_{{\rm{ion}}}})_{ij}^{pq} - ({V_{{\rm{trop}}}})_{ij}^{pq} + L_{ij}^{pq} \end{array} $ | (1) |
$ \begin{array}{c} P_{ij}^{pq} = - (l_j^p - l_j^q){\rm{d}}{X_j} - (m_j^p - m_j^q){\rm{d}}{Y_j} - \\ (n_j^p - n_j^q){\rm{d}}{Z_j} - ({V_{{\rm{ion}}}})_{ij}^{pq} - ({V_{{\rm{trop}}}})_{ij}^{pq} + L_{ij}^{pq} \end{array} $ | (2) |
$ L_{ij}^{pq} = L_{ij}^q - L_{ij}^p = {(\rho _j^q)_0} - \rho _i^q - {(\rho _j^p)_0} + \rho _i^p $ | (3) |
式中,i、j为测站,i为基线的已知端,p、q为观测卫星。
为了获得从测站近似位置到卫星j的方向余弦ljp、mjp、njp以及测站j与卫星q之间的卫地距ρjq,需要确定卫星位置和测站近似位置。本文利用广播星历确定卫星位置,并且对北斗的GEO卫星坐标进行旋转[2]。参考文献[3]的伪距单点定位原理,确定测站的初始位置。
为了获得(Vion)ijpq和(Vtrop)ijpq,本文利用Hopfield模型获得对流层延迟改正,利用双频改正模型获得电离层延迟改正。
2 数据预处理 2.1 数据格式本文使用标准Rinex 3.02格式的观测O文件和广播星历N文件。Rinex 3.02的混合观测文件同时包含GPS和BDS卫星观测数据。编程中,用字母C代表BDS,G代表GPS。
2.2 数据检测周跳探测采用目前普遍使用的WM-GF组合检测[4]。
1) WM探测周跳
宽巷模糊度bδ为:
$ {b_\delta } = \frac{{{L_\delta } - {P_\delta }}}{{{\lambda _\delta }}} $ | (4) |
$ {\lambda _\delta } = \frac{c}{{{f_1} - {f_2}}} $ | (5) |
式中,Lδ为载波相位的宽巷组合,Pδ为伪距的宽巷组合,λδ为宽巷波长。利用宽巷模糊度探测周跳的条件是:
$ \left| {{b_{\delta i}} - <{b_\delta }{ > _{i - 1}}} \right| \le 4{\sigma _i} $ | (6) |
式中,〈bδi〉为前i个历元bδ的平均值,σi为前i个历元bδ的均方根误差。如果满足式(6),则第i个历元没有发生周跳。
2) GF探测周跳
载波相位电离层残差组合LI为:
$ {L_I} = {L_1} - {L_2} $ | (7) |
相邻历元间作差得两历元间的电离层残差变化值ΔLIi为:
$ \Delta {L_{Ii}} = {L_{I(i)}} - {L_{I(i - 1)}} $ | (8) |
电离层残差组合探测条件为:
$ \left| {\Delta {L_{Ii}}} \right| \le 3\sigma $ | (9) |
如果满足式(8),则第i个历元没有发生周跳。
本文对周跳采取探测不修复原则,对探测出发生周跳的卫星,增加其单差模糊度。
3 算法实现与实例分析 3.1 BDS/GPS基线解算流程基线解算的主要流程如图 1所示。
在VS2010中,使用C++编写动态链接库,设置好可以生成动态链接库框架后,调用基线解算函数,该函数可以事先在控制台程序中编写。程序编译通过后,在工程目录下的Debug文件夹中生成“.dll”和“.lib”文件,将这些文件和“.h”头文件一起打包,其他程序即可调用,进行基线解算。
3.3 COM组件功能实现基于ATL(active template library)开发COM组件[5],可极大提高COM组件的开发效率。ATL活动模板库是一种微软程序库,支持利用C++语言编写ASP代码以及其他ActiveX程序[6]。
利用ATL编写COM组件十分方便,只需添加接口类和接口函数,在接口函数里面调用基线解算函数即可。编译成功后,在工程项目文件夹Debug文件夹下会生成相应的“.dll”文件,该文件即为具有基线解算功能的COM组件,本机注册之后,就可以在MFC或ASP.NET等不同平台系统中进行调用。
3.4 程序测试和实例分析1) 程序测试
DLL测试:使用java对DLL进行测试,只验证java语言可以使用该组件。通过Jni的方式嵌入编程,java的运行界面如图 2所示。图 2中,“*****i”,表示第i条基线解算完成,“***postpos over***”表示所有基线解算完成。
COM组件:使用本机单线程调用的方法,在计算机上通过“regsvr32+组件地址”进行注册,即可调用该组件,生成的网页界面如图 3所示。参数配置完成后,即可通过网页进行基线解算。
2) 实例分析
实验1:随机选取某楼顶4个观测点,观测网型如图 4所示。使用天宝R9接收机接收卫星数据,观测时长为3h,采样间隔为10s,接收北斗三频和GPS双频信号。原始数据转换后生成Rinex 3.02格式的观测文件和广播星历文件。
打开网址,输入4个观测O文件和4个广播星历N文件,经服务器处理得到基线解算结果,如表 1所示。
将本文解算结果(向量解和基线长度)和华测HGO桌面软件解算结果进行对比,如图 5所示。可以看出,两种方法解算的基线长度之差在5 mm之内;对于3个方向的向量解,如果以HGO解算结果作为真值,最大误差为0.17 m,且X、Y、Z 3个方向的误差走向一致。可以推断,本文算法存在一定的系统误差,在解算精度上仍需完善,但基于组件的应用程序只要接口不改变就不需要重新编译,便于网页后续更新。
对于解算效率,将3 h的观测文件进行分割,得到观测时长为1 h、2 h、3 h的观测文件,采用控制变量的方法在网页上进行基线解算,统计所需解算时间,结果如表 2所示。可以看出,使用的解算模式以及观测时长均对解算时间造成影响,且解算时间与观测时长成正比关系。使用HGO解算进行对比,由于其不易计算程序运行时间,因此只对表 2中最后一组(4个观测点、6条基线、观测时间为2 h)数据进行解算计时,从打开软件到解算完毕用时约90 s。所以就单线程的解算效率而言,本文使用的组件可以满足要求。
实验2:由于实验1中的基线长度均不超过100 m,另外选取野外观测的3条基线数据,观测点网型如图 6所示。使用网页进行基线解算,结果如表 3所示。
综合实验1和实验2,利用公式各方向相对误差=(本文结果-HGO结果)/基线长度给出X、Y、Z 3个方向的相对误差(图 7)。可以看出,3个方向的相对误差走向一致,均不超过10×10-3,说明本文算法具有普适性。
本文使用传统基线解算方法和理论,编写基线解算程序,分别封装为COM组件和DLL动态链接库, 并利用java和网页开发进行测试,证明了基于组件的程序具有开发耗时短、复杂性低、便于程序更新等特点。实验1和实验2的结果表明,本文算法可以完成短基线解算的任务,解算结果达到使用要求,具有普适性。
[1] |
杨元喜, 李金龙, 王爱兵, 等. 北斗区域卫星导航系统基本导航定位性能初步评估[J]. 中国科学:地球科学, 2014, 44(1): 72-81 (Yang Yuanxi, Li Jinlong, Wang Aibing, et al. The Preliminary Assessment of Basic Navigation and Positioning Performance of BD Regional Satellite Navigation System[J]. Science China: Earth Science, 2014, 44(1): 72-81)
(0) |
[2] |
李征航. GPS测量与数据处理[M]. 武汉: 武汉大学出版社, 2010 (Li Zhenghang. GPS Measurement and Data Processing[M]. Wuhan University Press, 2010)
(0) |
[3] |
郝建录. 基于北斗卫星导航系统伪距单点定位方法研究及程序实现[D]. 青岛: 山东科技大学, 2014. (Hao Jianlu. Method and Program Implementation Based on Beidou Satellite Navigation System Pseudorange Single Point Positioning[D]. Qingdao: Shandong University of Science and Technology, 2014)
(0) |
[4] |
李慧茹, 黄观文, 赵敏宁, 等. TurboEdit方法中周跳检测算法的改进[J]. 时间频率学报, 2012, 35(1): 43-49 (Li Huiru, Hang Guanwen, Zhao Minning, et al. The Improvement of TurboEdit Method of Cycle Slip Detection Algorithm[J]. Journal of Time and Frequency, 2012, 35(1): 43-49)
(0) |
[5] |
罗杰森. COM技术内幕:微软组件对象模型[M]. 北京: 清华大学出版社, 1998 (Rogerson D. Inside COM:Microsoft Component Object Model[M]. Beijing: Tsinghua University Press, 1998)
(0) |
[6] |
塔瓦雷斯. 深入解析ATL[M]. 北京: 电子工业出版社, 2007 (Tavares. In-Depth Analytical ATL[M]. Beijing: Electronic Industry Press, 2007)
(0) |
2. Key Laboratory of Precise Engineering and Industry Surveying, NASMG, 129 Luoyu Road, Wuhan 430079, China