拓冰建站拓冰建站
首页 / 资讯中心 / 正文

GPS L1与北斗B1伪距偏差实测:从原理到紧组合工程消除

把GPS L1和北斗B1的伪距同时送进一个紧组合解算器之前我建议你先花点时间回答一个不少人忽略的问题这两个频段的伪距差异真的只是“星座不同、坐标框架不同、时间基准不同”的功劳吗我自己的实测结果是同一个接收机、同一个天线、同一片开阔天空下L1 C/A与B1I的伪距之间可以存在半米到一米的系统性偏差而且这个偏差随接收机型号、固件版本、天线类型甚至温度都会变。如果不处理轻则让双系统定位精度倒退重则让模糊度固定变得极度不稳定。这篇内容不是教科书式的概念罗列而是把我从信号体制拆解、实测方案设计、数据处理到结果分析的全过程写出来。适合正在调GNSS接收机、写定位算法、做组合导航或者只是想搞明白“为什么GPS和北斗一起用反而更飘”的工程师参考。1. 先给结论L1/B1伪距偏差不是一个可以忽略的常数先说一个最容易被误解的点很多人以为GPS L1和北斗B1频率接近信号结构也类似伪距测量值应该可以直接混用。实际不是。频率接近只代表电波传播特性接近不代表接收机在两个频点上测出来的码相位延迟一致。接收机每一路射频链路、滤波器、放大器、相关器都有自己的群时延不同频率下的群时延不同这个差异反映到伪距上就是“频点间偏差”。我的实测里某款双系统接收机静态采集24小时扣除卫星星历、钟差、大气层修正后GPS L1 C/A伪距与北斗B1I伪距之间的系统间偏差均值大约在0.8米左右标准差约0.4米。如果只看低高度角卫星或强多径环境这个偏差的瞬时波动能超过2米。这个量级在城市峡谷或树荫环境下会被进一步放大最终反映到定位结果上就是双系统融合后位置出现分米级的跳变。还有一个隐藏问题时间基准。GPS系统时间是GPST北斗系统时间是BDT两者相差整整14秒而且秒以下存在微小的闰秒相关跳变。很多人在数据预处理时只做了粗同步结果伪距残差里带了一个巨大的常数偏移完全把真实偏差淹没。所以这篇文章里所有讨论都默认已经正确完成了GPST和BDT的互操作转换。2. 从频点参数看起L1 C/A与B1I为什么天然不同2.1 中心频率、码率与调制方式的差异GPS L1 C/A是1575.42 MHz码率1.023 Mcps北斗B1I是1561.098 MHz码率2.046 Mcps。两者中心频率差了约14.3 MHz码率差了一倍。频率差异直接影响电离层延迟因为电离层延迟与频率平方成反比码率差异则直接影响伪距测量噪声和多径抵抗能力。码片速率越高码片宽度越窄单位时间内的码相位分辨率越高。B1I的码率是C/A的两倍所以理论上B1I的码跟踪噪声要低于L1 C/A。但这也带来了一个问题两路观测量的噪声特性不一样如果直接在解算里用相同的先验方差会对定位结果产生不公平的加权。信号调制上L1 C/A是BPSK-R(1)B1I是BPSK-R(2)。相关峰形状相似但B1I的相关峰更窄对相关器间距更敏感。接收机内部如果使用相同的跟踪环路参数可能出现一边跟踪噪声大、另一边跟踪偏置的情况。2.2 伪距测量值到底是怎么出来的伪距测量本质上是对码相位延迟的估计。接收机把本地码与接收到的卫星码做相关找到峰值最大的码相位再乘以码片宽度和光速得到信号传播时间。这个过程中射频前端的一切非理想特性都会叠加进结果滤波器通带内的群时延波动导致不同频率分量到达相关器的相对延迟不同低噪放的非线性导致信号幅度变化时码环鉴相器的偏置改变采样时钟的抖动与量化误差形成与硬件电路相关的固定延迟。这些硬件延迟统称为接收机硬件偏差。对同一颗卫星不同频点的硬件偏差不同对同一频点不同接收机型号的硬件偏差也不同。所以L1和B1伪距之间没有天然恒定的换算关系必须在实测中标定。3. 拆解偏差来源卫星端、接收机端、天线端分别贡献了多少3.1 卫星端的TGD与DCB卫星在发射信号时星上设备也会产生频率相关的延迟这个延迟由导航电文里的TGD参数或IGS发布的DCB产品给出。GPS L1信号要扣除P1-C1 DCB北斗B1I信号要扣除B1I/B3I等频间DCB。如果做高精度处理还用广播星历的TGD通常只能校准码间偏差的一阶近似。问题在于很多接收机的原始伪距输出里已经内置了某种卫星端校准或者没有校准。这会导致你看到的偏差并不是真实硬件偏差而是被卫星端参数“部分吸收”后的混合值。所以在做实测标定时必须先明确算法采用的卫星钟差模型再决定要不要自行添加DCB修正。3.2 接收机端的硬件延迟与系统间偏差接收机端主要包含两个东西频间偏差IFB同一接收机不同频点之间的硬件延迟差系统间偏差ISB同一接收机不同星座之间由于时间基准和硬件链路不同造成的等效距离差。在GPS与北斗联合解算时ISB通常用一个常数或随机游走参数吸收。但如果你的解算器是简单的松组合直接给两个星座各估一个钟差参数ISB会被钟差参数吃掉问题不大。但在紧组合、非差PPP或所有观测量共用一个接收机钟差的模型里ISB就必须显式估计或标定。我测下来接收机端硬件延迟的短期稳定性其实还不错几小时内能保持在分米级。但长期会漂移尤其是环境温度变化时漂移可能达到几十厘米。这意味着每隔一段时间重标定一次是很有必要的。3.3 天线相位中心不能忽略测量型天线都会给出相位中心改正参数但很多低成本模块用的陶瓷天线根本没有这个参数。关键是天线相位中心在L1和B1上并不是同一个几何点两个频点的相位中心偏移差异可能达到厘米级。对于伪距偏差测量来说厘米级的误差虽然不致命但如果你试图做毫米级标定就必须用已知相位中心校正的天线或者做零基线差分把天线端误差消掉。4. 实测方案怎样搭一个“能说话”的采集环境4.1 硬件选型与连接方式我这次用了一台支持GPS L1 C/A和北斗B1I原始观测值的双系统接收机固件版本固定不做任何输出过滤。天线用了一根测量型扼流圈天线架在已知坐标的观测墩上。为了验证接收机自身稳定性我还额外搭了一组零基线两台接收机通过功分器接同一个天线对比同一天线下的输出差异。如果你手头只有低成本的单频模块比如某U开头品牌的F9P级别板卡也可以测但要注意这类模块输出的伪距观测值经常已经做过载波相位平滑而载波平滑会引入载波相位方面的偏差不适合直接用来分析原始伪距噪声。建议在配置里关掉所有平滑选项输出最原始的码观测值。4.2 选址与时段选择站址一定要开阔仰角10度以下不能有建筑物、树木或金属护栏。我选的观测墩周围半径50米内基本无遮挡连续采集了24小时采样率1 Hz。之所以要24小时是为了覆盖不同高度角、不同方位角、不同卫星几何才能评估偏差是否随着卫星位置变化。环境温度也是变量。白天和夜间温差超过15度接收机外壳温度变化会直接影响硬件延迟。所以我把数据分成中午高温段和凌晨低温段分别统计能明显看到偏差均值有厘米到分米级的移动。4.3 必须记录的数据RINEX 3.04以上格式的观测文件保证同时包含GPS和北斗广播星历文件观测墩的精确坐标至少达到厘米级天线型号和相位中心参数接收机固件版本和配置参数环境温度记录。如果事后用精密星历处理还需要从数据服务下载精密钟差和精密轨道。注意GPS和北斗的精密产品来源不同时间系统也要分别处理。5. 数据处理从RINEX观测值到频点间偏差的完整链路5.1 统一时间基准与坐标框架这是最容易出错的一步。RINEX文件里GPS观测值的时间基准是GPST北斗观测值的时间基准是BDT两者相差14秒。处理时先把所有北斗观测历元加14秒转到GPST或者反过来。坐标框架上WGS84和CGCS2000在当前精度下差异极小但如果你使用IGS精密轨道最好统一到IGS14/ITRF2014框架下计算卫星位置。5.2 计算几何距离与各项改正对每个历元、每颗卫星按下式构造伪距残差[ P \rho c(dt_r - dt^s) T I_f B_r - B^s \epsilon ]其中(\rho)站星几何距离用精密星历插值卫星位置后计算(dt_r)接收机钟差(dt^s)卫星钟差用精密产品扣除(T)对流层延迟用Saastamoinen或UNB3m模型(I_f)频点相关的电离层延迟需要单独针对L1和B1I按频率修正(B_r)接收机硬件偏差(B^s)卫星端硬件偏差(\epsilon)多径和噪声。因为同一历元所有卫星共用接收机钟差所以可以对每个历元做一次最小二乘估计接收机钟差和可能的系统间偏差常数。更直观的做法是选择一颗GPS卫星作为参考卫星计算北斗B1I伪距与GPS L1伪距的星间单差[ P_{B1} - P_{L1} \text{轨道/钟差项} (I_{B1} - I_{L1}) \Delta B \epsilon ]其中 (\Delta B) 就是我们关心的频点间偏差。星间单差可以消除接收机钟差和几何距离的大部分误差但残留的轨道误差、对流层残差和电离层射频差异仍然存在所以要通过精密产品和模型压到最小。5.3 载波相位平滑伪距原始伪距噪声极大尤其B1I码率虽高多径抑制能力也不差但单历元噪声仍然有几十厘米。我采用Hatch滤波用载波相位观测值平滑伪距把噪声压到厘米级。这里要小心如果载波相位本身有未修复的周跳平滑结果会污染整段数据。所以先做载波相位周跳检测检测量可以用无几何组合或多普勒法。平滑后的伪距残差再按卫星、按高度角分箱统计就能得到偏差的变化规律。6. 关键结果量级、稳定性、随高度角和时间的变化6.1 总体偏差量级我这次测得的结果见表项目GPS L1 C/A北斗 B1I差值 (B1I - L1)伪距残差均值-0.23 m0.57 m0.80 m伪距残差标准差0.31 m0.38 m0.42 m最大偏差落点低高度角卫星低高度角卫星2.1 m注意这个0.8米包含了接收机系统间偏差、残余电离层改正误差和卫星端未完全扣除的硬件偏差。如果先扣掉IGS发布的DCB再重新统计偏差会降到0.4米左右。剩下的0.4米就是接收机硬件固有差异。6.2 随高度角的变化规律把数据按高度角5度为间隔分箱后可以看到一个明显趋势高度角大于30度时L1与B1的偏差非常平稳波动不超过0.3米高度角低于20度时偏差波动急剧增大而且出现明显的多径包络。原因是低高度角信号经过地面反射和绕射多径信号叠加在直达信号上码环相关峰发生形变不同频点的多径响应又不一样。所以如果要在算法里把偏差当常数估计最好只用高度角25度以上的卫星参与初值计算再逐步放开高度角。6.3 随时间与温度的漂移我比较了凌晨低温段和下午高温段的数据发现B1I-L1的偏差均值在低温段为0.67米高温段为0.94米差约27厘米。这说明接收机硬件延迟对温度是敏感的。因此高精度应用不能指望一次标定管一辈子尤其是户外设备经受日晒雨淋时定期重标定是必须的动作。6.4 不同接收机之间的差异顺手用另一台型号相近但固件版本不同的接收机做了同一场景的对比偏差均值差了约0.3米。这说明同一品牌同一型号不同固件硬件延迟都可能改变。如果用异构接收机组网做RTK基准站和流动站的伪距偏差不一致差分后残留的系统间偏差会直接进入定位结果导致厘米级的系统误差甚至模糊度固定失败。7. 工程落地从标定到解算如何把偏差“吃”掉7.1 静态标定获得IFB基准值对固定安装的接收机最稳妥的办法是先在已知坐标点上静态采集8~24小时数据用上面第5章的处理流程提取B1I-L1偏差均值写入接收机配置文件或算法配置文件。之后动态作业时把这个值作为常数扣除。标定值的有效期取决于环境温度变化幅度和接收机硬件老化程度。我建议在温度变化超过10度、固件升级、硬件维修后分别重新标定。7.2 动态估计IFB参数如果你用的是PPP或紧组合解算器更合理的方案是不做固定标定而是在状态向量里增加一个系统间偏差参数。该参数可以建模为常数适合短时段静态或低动态场景随机游走适合长时间动态场景过程噪声取 (10^{-4} \sim 10^{-3} m/\sqrt{s})一阶高斯马尔可夫适合温度连续变化的场景相关时间取1800秒。这样解算器能够在定位过程中持续吸收硬件偏差的漂移比固定标定更稳。7.3 双系统差分时的特殊处理RTK/RTD场景下如果基准站和流动站是同型号接收机大部分IFB可以抵消不需要额外处理。但如果是异构接收机必须在差分前对伪距观测值做差分化时显式加入“基准站参考频点与流动站参考频点不一致”的偏差改正。一个工程上的取巧办法在NTRIP挂载点或差分数据流里把基准站的北斗观测值完全屏蔽只播发GPS L1这样流动站就不会受到跨频点ISB污染。代价是损失北斗卫星数量在遮挡环境下效果不好但至少不会因偏差导致误判。7.4 算法层面的其他建议伪距观测值方差设置时给B1I和L1分别设置不同的先验噪声不要统一使用同一种权重。低高度角卫星不要直接剔除而是采用高度角相关权重衰减保留几何结构的同时抑制多径影响。解算后输出IFB估计值时把它记录到日志里。如果IFB在短时间内大幅跳变先检查硬件连接和天线状态而不是急着怀疑算法。8. 这次实测踩过的几个坑第一个坑是RINEX文件里的信号标识。很多接收机输出的B1I信号标识是“C2I”不是“B1I”。如果你用老工具解析可能把B1I数据当成未知信号丢掉。拿到RINEX后先用GFZRNX或rtklib的convbin完整打印一遍系统观测类型确认所有信号都对应正确。第二个坑是卫星钟差参考时间。北斗精密钟差产品里卫星钟差可能参考B3I或B1I不同数据源参考不同。如果直接混用伪距残差里会埋入分米级偏差。处理前务必查DCB文件或产品说明。第三个坑是电离层改正。L1和B1I频率差虽然只有0.9%但电离层延迟本身就是频率相关的在太阳活动活跃期斜路径电离层延迟可能超过10米L1与B1I的差异能到0.2米以上。如果只用广播电离层模型改正误差可能比偏差本身还大。最好用双频观测量估计电离层或者采用夜间数据做标定。第四个坑是天线相位中心。我在用普通陶瓷天线时发现B1I-L1偏差的方位角相关分量特别明显。后来换成测量型天线并加载相位中心改正后方位角相关分量消失了。这说明天线相位中心差异完全可能被误判为系统间偏差。所以做标定时天线必须是测量型且有经过校准的相位中心模型否则结果不具备通用性。最后说一个个人体会伪距偏差测量这件事看起来很简单就是把两个伪距减一减但真正做起来每一米偏差里混着星历残差、大气残差、天线相位中心、接收机温度漂移好几层东西。想得到干净的单机偏差最好把能消的误差都消掉再去看剩下的那部分而不是拿两个数值直接相减就下结论。把这条链路打通之后你手里的接收机性能上限大概在什么水平心里真正有数了。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门